Rockwell EtherNet/IP
Conecte controladores Allen-Bradley Logix por EtherNet/IP (CIP): nomes de tag do controlador, deslocamentos de byte, tipos atômicos CIP e descoberta na rede.
O driver Rockwell EtherNet/IP conversa com controladores Allen-Bradley / Rockwell Logix (ControlLogix, CompactLogix) por EtherNet/IP com endereçamento de tag CIP. Você endereça valores pelo nome da tag do controlador declarado no projeto Logix, sem nenhum mapa de registradores envolvido. Adicione um dispositivo sob o driver Rockwell EtherNet/IP no Connector; o painel mostra só os campos que este protocolo usa.
Conexão
| Campo | Significado | Padrão |
|---|---|---|
| Host | Endereço IP ou nome de host da porta Ethernet do controlador. | vazio |
| Slot | Em qual posição do chassi o controlador está encaixado, contada a partir de 0. | 0 |
| Intervalo de leitura (ms) | Período de leitura de todo o dispositivo, para as tags que não o sobrepõem. | 1.000 |
Não existe campo de porta: o EtherNet/IP usa a porta TCP padrão 44818 dele. A rota
CIP é o barramento traseiro mais o Slot, então um controlador encaixado em qualquer
lugar do chassi é alcançável; um controlador descoberto começa no slot 0 e o
campo é onde você corrige isso. Não existe campo de rack: uma rota CIP não carrega número
de rack. As requisições expiram depois de 10 segundos. O cabeçalho do dispositivo mostra o
endpoint montado, por exemplo eip://192.168.0.10:0, em que o número depois
do endereço é o slot.
Cada tag pode definir o próprio Intervalo de leitura (ms); um valor 0 na tag recai no intervalo do dispositivo.
Endereçamento
Uma tag Rockwell é endereçada por dois campos no cartão Origem da tag:
| Campo | Significado | Valores aceitos | Padrão |
|---|---|---|---|
| Tag do controlador | O nome da tag como declarado no controlador. Obrigatório. | texto livre | vazio |
| Deslocamento na tag (bytes, bits em BOOL) | Onde, dentro dos dados daquela tag, o valor está: um deslocamento de byte, ou um deslocamento de bit em tags booleanas. | 0–255 | 0 |
O driver abre a tag de controlador nomeada e retira o valor do buffer de dados dela no deslocamento. Numa tag atômica simples, o deslocamento fica em 0. O deslocamento é o que deixa uma tag de controlador atender vários canais: um DINT no começo de uma estrutura fica no deslocamento 0, o REAL quatro bytes depois fica no deslocamento 4, e numa tag booleana o deslocamento conta bits em vez de bytes.
| Para ler | Tag do controlador | Deslocamento | Tipo de dado |
|---|---|---|---|
Um DINT de escopo de controlador Counter |
Counter |
0 | Int32 |
Um DINT de escopo de programa em Main |
Program:Main.Counter |
0 | Int32 |
Um elemento de vetor REAL Temps[2] |
Temps[2] |
0 | Float |
O segundo DINT dentro da estrutura Recipe |
Recipe |
4 | Int32 |
O bit 3 dos dados em Flags |
Flags |
3 | Boolean |
O nome chega inteiro ao controlador, pontos incluídos, e uma leitura e uma
escrita da mesma tag caem no mesmo lugar. É isso que faz um nome de
escopo de programa como Program:Main.Counter funcionar. Um caminho de membro com ponto
(MyUdt.Member) é resolvido pelo controlador quando o controlador publica
aquele membro por nome; onde ele não publica, nomeie a tag base de escopo de controlador e
alcance o interior dela com o deslocamento de byte, o que sempre funciona. A linha somente
leitura Endereço de origem (barramento) do cartão Origem mostra o endereço montado
enquanto você edita.
Tipos de dado
Todo tipo atômico do CIP está disponível como Tipo de dado de uma tag:
| Tipo de dado | Tipo CIP | Tamanho |
|---|---|---|
| Boolean | BOOL | 1 bit no deslocamento de bit |
| SByte | SINT | 1 byte |
| Byte | USINT | 1 byte |
| Int16 | INT | 2 bytes |
| UInt16 | UINT | 2 bytes |
| Int32 | DINT | 4 bytes |
| UInt32 | UDINT | 4 bytes |
| Int64 | LINT | 8 bytes |
| UInt64 | ULINT | 8 bytes |
| Float | REAL | 4 bytes |
| Double | LREAL | 8 bytes |
Estruturas e UDTs não são suportados: só os tipos atômicos acima podem ser lidos ou escritos, e é por isso que o deslocamento de byte existe, para alcançar membros dentro deles. O String está deliberadamente ausente do seletor: um STRING do Logix não é um tipo atômico, e sim uma estrutura com um comprimento e um vetor de 82 bytes, e o driver não consegue ler nem escrever um. A ordem de bytes no barramento é o little-endian do próprio CIP e é tratada automaticamente; não existe opção de ordem de bytes.
Escritas
Tags cujo Acesso é Leitura e escrita ou Somente escrita podem ser escritas. Uma escrita lê a tag do controlador, altera os bytes endereçados (ou o bit endereçado, em booleanas) e a escreve de volta. Uma tag nova nasce como Somente leitura.
Descoberta
O botão Descobrir do Connector faz difusão de uma requisição CIP List Identity em toda rede em que este computador está e continua escutando até passarem 10 segundos sem resposta nova. A varredura nomeia essas redes enquanto roda, então um resultado de zero diz para onde a pergunta de fato foi: uma estação com adaptadores virtuais de máquinas, WSL ou VPN costuma ter mais redes do que o operador espera, e candidatos podem chegar de uma delas.
Interfaces que não conseguem levar a requisição são puladas: tudo que não está no ar, os
adaptadores de loopback e de túnel, e um endereço que a interface deu a si mesma porque nada
respondeu DHCP (169.254.x.x). Só uma resposta que seja a resposta de identidade do próprio
controlador vira um dispositivo candidato, nomeado eip:// mais o endereço dele; qualquer
outra coisa que responda na porta EtherNet/IP é ignorada, e o diário diz isso.
Para cada candidato, a varredura então lê a lista de tags de escopo de controlador e oferece
as tags atômicas dele como canais candidatos, cada uma com deslocamento 0.
A descoberta descarta o que o driver não consegue ler ciclicamente: tags de estrutura e de UDT
(STRINGs do Logix incluídos) são deixadas de fora, e entradas Program:, Task: e Map:
são puladas. Um controlador numa rede em que este computador não está não
responde à difusão; adicione-o à mão.
Bom saber
- Toda requisição ao controlador expira depois de 10 segundos, e a janela de escuta da descoberta fecha depois de 10 segundos de silêncio.
- O driver abre cada tag do controlador uma vez e a mantém aberta enquanto o equipamento estiver conectado, então um controlador com dezenas de tags é lido pelas sessões que já tem, em vez de abrir e fechar uma por leitura. Uma leitura que falha solta a sua tag, e a seguinte abre a tag de novo pelo nome.
- Renomear uma tag no projeto Logix quebra o canal em silêncio; a tag passa a ler qualidade ruim até o nome configurado bater de novo.