Beckhoff ADS

Conecte CLPs Beckhoff TwinCAT por ADS/AMS: a rota AMS, a porta do runtime, caminhos de símbolo e comprimentos de leitura.

Ver como Markdown

O driver Beckhoff ADS conversa com CLPs Beckhoff TwinCAT por ADS, o protocolo de automação da TwinCAT transportado por rotas AMS. Você endereça valores pelo caminho de símbolo deles no programa do CLP, então o que você digita é o que o projeto TwinCAT declara. Adicione um dispositivo sob o driver Beckhoff ADS no Connector; o painel mostra só os campos que este protocolo usa.

Conexão

Campo Significado Padrão
Host Endereço IP do CLP. O AMS Net Id dele é derivado desse endereço como {ip}.1.1. vazio
Porta A porta AMS do runtime alvo. 0 usa 851, o runtime 1 do CLP no TwinCAT 3; os demais runtimes do TwinCAT 3 contam a partir dali (852, 853, …). 0
IP local (AMS) O endereço IP da própria estação, do qual o AMS Net Id dela é derivado como {ip}.1.1. Ele precisa bater com a rota AMS configurada no CLP. Quando deixado vazio, o valor de Host é reaproveitado, o que só funciona quando as duas pontas compartilham o endereço, então preencha na prática. vazio
Intervalo de leitura (ms) Período de leitura de todo o dispositivo, para as tags que não o sobrepõem. 1.000

O cabeçalho do dispositivo mostra o endpoint montado, por exemplo ads://192.168.0.1:192.168.0.50:851 (IP local, IP do CLP, porta AMS). Cada tag pode definir o próprio Intervalo de leitura (ms); um valor 0 na tag recai no intervalo do dispositivo.

O ADS só responde a estações que o CLP conhece: acrescente uma rota AMS estática no CLP (TwinCAT Engineering, SYSTEM → Routes, ou o ícone do TwinCAT na área de notificação) cujo endereço seja o IP desta estação e cujo AMS Net Id seja esse IP seguido de .1.1, batendo com o que o driver deriva do IP local (AMS). Sem a rota, a conexão falha mesmo com o caminho de rede em ordem.

Endereçamento

Uma tag Beckhoff é endereçada por dois campos no cartão Origem da tag:

Campo Significado Valores aceitos Padrão
Símbolo O caminho de símbolo da variável no programa do CLP. Obrigatório. texto livre, por exemplo MAIN.fValue vazio
Comprimento de leitura (bytes, em branco = automático) Quantos bytes transferir por leitura. Em branco, o tamanho da leitura vem do tipo de dado. 1 ou mais, em branco em branco

O caminho de símbolo é exatamente o que o TwinCAT mostra: variáveis de programa como MAIN.fValue, listas de variáveis globais como GVL.MachineSpeed ou GVL_Settings.rSetpoint. O driver resolve o símbolo pelo nome no CLP e lê os bytes brutos dele. Os comprimentos de leitura automáticos são:

Tipo de dado Comprimento de leitura automático
Boolean 1 byte
Int32 4 bytes
Float 4 bytes
String 16 bytes

Para um String com mais de 16 caracteres, defina o Comprimento de leitura de modo a cobrir o tamanho declarado (um STRING(80) do TwinCAT precisa de 80 bytes de texto). A linha somente leitura Endereço de origem (barramento) do cartão Origem mostra o endereço montado enquanto você edita.

Tipos de dado

O seletor de Tipo de dado oferece os quatro tipos que o driver empacota:

Tipo de dado Correspondente no CLP Notas
Boolean BOOL 1 byte, diferente de zero é verdadeiro
Int32 DINT little-endian, igual ao do CLP
Float REAL little-endian, igual ao do CLP
String STRING texto até o primeiro NUL do buffer de leitura

A ordem de bytes é o little-endian do próprio CLP e é tratada automaticamente; não existe opção de ordem de bytes. Uma leitura de String decodifica o buffer devolvido até o primeiro terminador NUL, então o preenchimento atrás de um texto curto nunca vaza para o valor. Outras larguras do TwinCAT (INT, LREAL, WORD, …) não são oferecidas: exponha uma variável dessas no programa do CLP como um dos quatro tipos acima para lê-la aqui.

Escritas

Tags cujo Acesso é Leitura e escrita ou Somente escrita podem ser escritas. Uma escrita resolve o mesmo símbolo e escreve os bytes do valor: 1 byte em Boolean, 4 bytes em Int32 e Float. Uma escrita de String deposita o Comprimento de leitura inteiro da tag: os bytes UTF-8 do texto na frente e zeros atrás deles, então um texto mais curto escrito sobre um mais longo substitui o valor inteiro e nada do antigo sobrevive. Um texto que não cabe no comprimento declarado é recusado com o comprimento nomeado no diário, nunca cortado para caber. Uma tag nova nasce como Somente leitura.

Descoberta

O ADS não tem descoberta por difusão neste driver, então o Connector não mostra botão Descobrir. Adicione o dispositivo e os símbolos dele à mão.

Bom saber

  • A rota AMS é o motivo mais comum de uma primeira conexão falhar: o AMS Net Id da rota no CLP precisa ser exatamente o IP da estação mais .1.1.
  • Os símbolos são resolvidos pelo nome a cada leitura, então uma carga no CLP que renomeia ou remove um símbolo deixa a tag dele em qualidade ruim até os nomes baterem de novo.
  • Um CLP inalcançável não custa nada na inicialização: o dispositivo segue tentando em segundo plano e as tags dele leem qualidade ruim até a conexão acontecer.