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 ou IP | Endereço IP do CLP. O AMS Net Id dele é derivado desse endereço como {ip}.1.1. A não ser que o AMS Net Id do CLP o indique, o AMS Net Id do CLP é esse endereço seguido de .1.1; um nome é resolvido antes para o endereço IPv4 dele. |
vazio |
| Porta | A porta AMS do runtime alvo: 851 é o runtime 1 do CLP no TwinCAT 3, e os demais runtimes do TwinCAT 3 contam a partir dali (852, 853, …). Um campo vazio mostra 851 em cinza e esse runtime é usado, que é também como se lê um dispositivo salvo com 0. | 851 |
| 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. Um campo vazio usa o endereço desta estação na rede que alcança o CLP, que ele mostra em cinza; um valor digitado no campo é usado no lugar dele. |
vazio |
| AMS Net Id do CLP | O AMS Net Id do próprio CLP, para um CLP cujo id não é o endereço IP dele seguido de .1.1: seis números de 0 a 255 separados por pontos, como o TwinCAT XAE o mostra em SYSTEM > Routes, aba NetId Management, Target NetId. Um campo vazio usa o endereço IPv4 do host seguido de .1.1, que ele mostra em cinza. Um valor que não é um AMS Net Id deixa o dispositivo desconectado e diz o que escrever. |
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 para as quais o CLP tem uma rota AMS: Preparar o CLP diz qual rota cadastrar e onde.
Preparar o CLP
Um CLP TwinCAT só responde ADS a uma estação para a qual o roteador AMS dele tem uma rota. Sem a rota, o roteador aceita a conexão na porta TCP 48898 e depois a fecha ou nunca responde, e a conexão falha mesmo com o caminho de rede em ordem. Cadastre uma vez no CLP uma rota estática para esta estação:
| Campo da caixa Add Route do TwinCAT | Valor |
|---|---|
| Nome: Route Name (Target) | Qualquer nome; o aviso sugere o nome de computador desta estação. |
| Net id: AmsNetId | O endereço desta estação seguido de .1.1, batendo com o que o driver deriva do IP local (AMS). |
| Transporte: Transport Type | O transporte TCP_IP |
| Endereço: Address Info | O endereço desta estação, com IP Address selecionado. |
| Tipo de rota: Target Route e Remote Route | Static e None |
No TwinCAT XAE, escolha o CLP como sistema de destino e abra SYSTEM > Routes, aba Static Routes, depois Add. Na área de trabalho do próprio CLP, o ícone do TwinCAT na área de notificação abre a mesma lista por Router > Edit Routes.
O endereço é o desta estação na rede que alcança o CLP. Um computador com várias placas de rede tem um endereço em cada uma, e a rota só vale para o que ela nomeia. Enquanto o IP local (AMS) está vazio, o driver usa o endereço da placa pela qual o Windows alcança o CLP, que o campo mostra em cinza: esse é o endereço que a rota nomeia. Um valor digitado no campo é usado no lugar dele, e a rota tem que nomear esse.
Quando o roteador do CLP recusa a estação por falta da rota, a página do dispositivo diz isso num aviso que fica no lugar do erro do driver: a rota pronta para cadastrar (o nome, o AMS Net Id desta estação, o endereço dela e o transporte, cada um com um botão de copiar) e onde o TwinCAT a cadastra. O aviso some sozinho assim que o CLP responde, e o diário e o agente leem a mesma rota. Uma porta que recusa a conexão ou fica muda é dita como o que é, não como uma rota que falta.
A estação endereça o CLP pelo AMS Net Id dele, e o roteador do CLP só responde pelo próprio: um CLP cujo AMS Net Id não é o que a estação usa também nunca responde, o que parece exatamente uma rota que falta. Quando o CLP já tem a rota e mesmo assim não responde, confira o AMS Net Id dele no TwinCAT XAE em SYSTEM > Routes, aba NetId Management, Target NetId, e digite-o em AMS Net Id do CLP; o aviso diz qual a estação usa.
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, vazio = 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.
Uma leitura que o CLP recusa, como a de um símbolo que ele não tem ou não deixa ler,
deixa a tag sem valor, e o motivo da tag nomeia o código de erro ADS e o que ele
significa, por exemplo ADS error 0x710 (no symbol by that name). A conexão continua
de pé e as outras tags seguem lendo; o motivo sai com a próxima leitura que o CLP
responder.
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.
Uma escrita que o CLP recusa, como a de um símbolo que ele não deixa escrever,
volta recusada com o código de erro ADS e o que ele significa, por exemplo
ADS error 0x704 (the symbol may not be written), e a conexão continua de pé.
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, e a página do dispositivo dá a rota inteira a cadastrar. - O driver pede ao CLP um handle para cada símbolo uma vez por conexão e devolve os
handles quando a conexão fecha. Depois de uma carga no CLP, um handle que o CLP não
aceita mais é trocado na próxima leitura, então a tag segue lendo com o programa novo;
um símbolo que a carga renomeou ou removeu deixa a tag dele sem valor, com
ADS error 0x710 (no symbol by that name), 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.