Beckhoff ADS
Conecte CLPs Beckhoff TwinCAT por ADS/AMS: a rota AMS, a porta do runtime, caminhos de símbolo e comprimentos de leitura.
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.