Omron

Conecte CLPs Omron, controladores CJ, CS e CP por endereço de memória sobre FINS (UDP, TCP ou Host Link numa linha serial) e controladores NJ, NX e NY por nome de variável sobre EtherNet/IP; as configurações FINS, as formas de endereço, os tipos de dado, leituras, escritas e descoberta.

Ver como Markdown

O driver Omron conversa com CLPs Omron em qualquer uma das duas línguas deles, escolhida por dispositivo. Um controlador CJ, CS ou CP, e um NJ ou NX configurado no modo de memória CJ, é lido por FINS pelo endereço de memória, escrito do jeito que o software de programação da Omron escreve: D100, W0.01, CIO100.05. Um controlador NJ, NX ou NY é lido sobre EtherNet/IP pelo nome de uma variável que ele publica na rede, como Level ou Motor.Speed. Uma estação lê os dois tipos lado a lado sob o mesmo driver. Adicione um dispositivo sob o driver Omron no Connector e escolha o Protocolo dele; o painel mostra só os campos que esse protocolo usa.

Protocolos

Protocolo Controladores As tags são endereçadas por Porta
FINS CJ1, CJ2, CS1, CP1 e os outros controladores CJ, CS e CP com porta ou unidade Ethernet; um NJ ou NX no modo de memória CJ Endereço de memória, como D100 ou W0.01 9600 por padrão
Tags NJ/NX por nome Controladores NJ, NX e NY, como NJ501, NJ301, NJ101, NX1P2, NX102, NX502, NX701 e NY5 Nome da variável, como Level ou Motor.Speed nenhuma: o EtherNet/IP responde na porta padrão dele, a 44818

FINS é o padrão, e um dispositivo novo começa nele. O protocolo é uma configuração do dispositivo, então um CJ2 e um NX1P2 ficam sob o mesmo driver, cada um lido na sua própria língua. Trocar o protocolo mantém as configurações FINS como foram deixadas, para quando o FINS voltar, e toda tag do dispositivo passa a ler o endereço no protocolo novo: o Tipo de dado dela se ajusta a um que o endereço comporta ali, e um endereço que o protocolo novo não consegue ler fica sinalizado na página da tag até ser corrigido.

Conexão

Campo Significado Padrão
Host ou IP Endereço IP ou nome de host da porta ou unidade Ethernet do CLP. vazio
Protocolo FINS ou Tags NJ/NX por nome. A linha embaixo diz o que o protocolo em vigor lê: "Áreas de memória dos controladores CJ, CS e CP, e de um NJ/NX no modo de memória CJ." ou "Variáveis que um controlador NJ, NX ou NY publica na rede, lidas por nome sobre EtherNet/IP." FINS
Porta Só FINS: a porta em que o CLP responde FINS, a mesma por UDP e por TCP, de 1 a 65535. Um campo vazio mostra 9600 em cinza e o dispositivo é chamado nela. Um dispositivo lido por nome de tag não tem campo de porta. 9600
Intervalo de leitura (ms) Período de leitura do dispositivo inteiro para as tags que não o sobrescrevem. 1.000

O cabeçalho do dispositivo mostra o endpoint montado. Um dispositivo FINS escreve nele todas as suas configurações, com um nó 0 valendo automático, por exemplo omron://192.168.250.1:9600?protocol=fins&transport=udp&network=0&node=0&unit=0&source=0&timeoutMs=2000. Um dispositivo lido por nome de tag nomeia só o host e o protocolo, omron://192.168.250.1?protocol=njnx. Cada tag pode definir o próprio Intervalo de leitura (ms); o valor 0 numa tag volta ao intervalo do dispositivo.

Preparar o controlador

Um controlador NJ, NX ou NY lido por nome de tag só serve as variáveis globais que publica na rede. Publicar é um atributo de cada variável, definido no Sysmac Studio e transferido para o controlador. Um controlador lido por FINS não precisa de nenhuma definição assim.

Definição Onde no Sysmac Studio Sem ela
Network Publish em Publish Only (ou Input ou Output para uma variável que um enlace de dados de tags também usa), em toda variável global que a estação lê ou escreve Programming > Data > Global Variables, a coluna Network Publish da variável. Transfira o projeto para o controlador (Controller > Synchronize). O controlador responde que não serve nenhuma variável com esse nome, exatamente como para um nome que não existe. A tag lê qualidade ruim, e as outras tags do dispositivo seguem lendo.

Uma variável de um programa, uma variável local, não pode ser publicada: declare-a entre as variáveis globais, ou copie-a para uma variável global no programa.

Quando o controlador responde que não serve nenhuma variável com o nome de uma tag, a página do dispositivo nomeia a variável e as tags que a leem, com as duas causas (um nome que não existe, ou uma variável que não está publicada) e estes passos, num aviso que some sozinho assim que a variável lê; a página da própria tag traz o mesmo aviso. O diário e o agente leem os mesmos passos.

O cartão FINS

Um dispositivo lido por FINS traz um cartão FINS abaixo do cartão Conexão: em que as requisições dele viajam, a quem elas se dirigem e quanto tempo cada uma espera pela resposta. Um dispositivo lido por nome de tag não tem esse cartão.

Campo Significado Padrão
Protocolo de transporte UDP: "Um datagrama por requisição, respondido para a porta de onde saiu: o padrão das portas Ethernet da Omron." TCP: "Uma conexão, na qual o CLP atribui a esta estação o nó FINS dela." UDP
Rede "A rede FINS do CLP: 0 para a rede desta estação, de 1 a 127 pelas tabelas de roteamento dos CLPs." 0
Nó do CLP O nó FINS do CLP, de 1 a 254. Vazio, o campo mostra "Automático": por UDP o último número do endereço IP do CLP (um CLP em 192.168.250.1 é o nó 1), por TCP o nó que o CLP anuncia quando a conexão abre. Automático
Unidade "A unidade do CLP que responde: 0 para a unidade CPU." Até 255. 0
Nó da estação Só UDP: o nó FINS desta estação, de 1 a 254. Vazio, o campo mostra "Automático": o último número do endereço IP desta estação na rede pela qual ela chega ao CLP. Por TCP o campo não é desenhado, porque o CLP atribui o nó na conexão. Automático
Timeout de resposta (ms) "Quanto tempo uma requisição FINS espera pela resposta." De 100 a 60.000. 2.000

Um número fora da faixa é recusado embaixo do campo, por exemplo "Digite um número entre 0 e 127.", e o campo volta ao valor em vigor. Trocar o transporte para TCP mantém o nó da estação digitado para UDP, que o dispositivo então não usa.

Um controlador CP1E, CP1L, CP1H, CJ ou CS que só tem porta serial (RS-232C, ou RS-485 e RS-422A por uma placa opcional ou um conversor) é lido por FINS sobre Host Link, por uma linha serial do driver Omron: uma porta COM compartilhada por até 32 CLPs, cada um respondendo ao próprio número de unidade. Adicione a linha com Acrescentar linha na tabela Linhas seriais da página do driver e ajuste a Porta serial, o Velocidade em baud e o Formato serial ao que as portas seriais dos CLPs usam (o resto da página da linha está em Linhas seriais), habilite-a e depois adicione cada CLP com Acrescentar dispositivo na página da linha.

Ajuste Onde Valor
Modo da porta O PLC Setup do CLP, para a porta serial em que a linha está ligada Host Link
Baud e formato A linha Como as portas dos CLPs estão ajustadas; uma porta Host Link sai de fábrica com 9600 baud e 7E2
Unit ID O cartão Conexão do dispositivo, ao lado de Linha serial · fixa O número de unidade Host Link do CLP, de 0 a 31, como o PLC Setup dele define. Um dispositivo novo pega o primeiro número livre da linha; um número que outro CLP da linha já tem é recusado
Timeout de resposta (ms) O cartão FINS do dispositivo De 100 a 60.000; 2.000

Um dispositivo numa linha é lido por FINS para sempre: não tem campo Protocolo, Host ou IP nem Porta, e o cartão FINS dele mostra só "FINS sobre Host Link nesta linha serial, para o CLP cujo número de unidade (ajustado para a porta serial dele no PLC Setup) é o Unit ID acima." e o Timeout de resposta (ms), porque a requisição vai para a unidade CPU do CLP que o barramento endereça e nenhum campo de rede se aplica. Ele nunca passa para a rede, nem um dispositivo de rede passa para uma linha. As tags dele são endereçadas como pela rede (D100, W0.01), e o endpoint dele nomeia a linha e a unidade, por exemplo omron://serial/<line id>/COM5/9600/7E2?protocol=fins&transport=hostlink&hostLinkUnit=0&timeoutMs=2000.

Numa linha serial O que acontece
Vários CLPs numa linha Uma requisição e a resposta dela por vez para a linha toda; a resposta de outra unidade, ou ruído, é ignorada
Um CLP que não responde dentro do timeout dele Esse dispositivo se reconecta; os outros CLPs da linha continuam lendo
O CLP considera o quadro danificado e responde um código de fim Host Link, como 13 (FCS error) O dispositivo se reconecta
A porta falha, por exemplo quando o adaptador é desconectado Todo dispositivo da linha se reconecta; a porta é aberta de novo depois de uma pausa de 1 segundo, que dobra até um minuto
Uma tag de texto No máximo 534 caracteres, o que um quadro Host Link carrega

A varredura não procura numa linha serial: adicione cada CLP pelo número de unidade dele.

Endereçamento

Uma tag é endereçada por um campo no cartão Origem dela, com o nome tirado do protocolo do dispositivo: Endereço de memória por FINS, Nome da variável para um dispositivo lido por nome de tag, com a dica do protocolo embaixo. Um endereço que o driver não consegue ler é recusado na página da tag onde é digitado, com o motivo. A linha somente leitura Endereço de origem (barramento) do cartão Origem mostra o endereço que o driver recebe.

Endereços de memória (FINS)

Um endereço de memória é formado pelas letras da área, o número da palavra em decimal e, para um único bit, um ponto e o bit, de 00 a 15. As letras não diferenciam maiúsculas de minúsculas, e as grafias antigas também são lidas.

Área Exemplos Palavras Também escrita como
CIO CIO100, CIO100.05, 100.05 0 a 6143 um número sozinho, que é um endereço CIO
Trabalho (W) W0, W0.01 0 a 511 WR
Retenção (H) H10, H10.00 0 a 1535 HR
Auxiliar (A) A100, A100.03 0 a 1471 AR
Memória de dados (D) D100, D100.15 0 a 32767 DM
Memória de dados estendida (E) E0_100, EA_0, E18_0 0 a 32767 o banco em hexadecimal, de 0 a 18, entre o E e o sublinhado

Cada área é limitada pela maior que algum controlador CJ, CS ou CP tenha (um CJ2 tem 1.536 palavras de retenção e bancos de memória estendida até o 18). Uma palavra ou um banco que um controlador menor não tem é resposta do próprio CLP, um erro na primeira leitura da tag (veja Leitura). O que a página da tag recusa onde é digitado:

Você digita A página da tag diz
Algo que não é uma área, uma palavra e um bit, como X100 ou D100. "Um endereço de memória FINS é a área, a palavra e, para um bit, um ponto e o bit, por exemplo D100, W0.01, CIO100.05, H10, A100 ou E0_100."
Uma palavra depois do fim da área, como D40000 ou W512 "Essa palavra fica depois da última palavra da área dela em qualquer controlador CJ, CS ou CP."
Um bit depois do 15, como W0.16 "O bit de uma palavra vai de 00 a 15."
Um banco depois do 18, como E19_0 "Os bancos da memória estendida são numerados de 0 a 18 em hexadecimal."

O endereço de barramento é o endereço na sua grafia única, com o bit em dois dígitos: 100.5 viaja como CIO100.05 e DM100 como D100. Uma tag de texto acrescenta depois de um ? os caracteres que ocupa, então um texto de 16 caracteres em D200 viaja como D200?16.

Nomes de variável (NJ/NX)

Um controlador NJ, NX ou NY é lido pelo nome de uma variável global que ele publica na rede, que no Sysmac Studio é uma variável cujo atributo Network Publish é Publish Only, Input ou Output (veja Preparar o controlador). Uma variável que o controlador não publica não pode ser lida por nome. Um nome se escreve com letras ASCII, dígitos e sublinhados, nunca começando por um dígito, com um ponto antes do membro de uma estrutura e um índice entre colchetes: Level, Motor.Speed, Temps[3], Grid[1,2]. Qualquer outra forma é recusada na página da tag: "Um nome de variável se escreve com letras, dígitos e sublinhados, sem começar por um dígito, com um ponto antes de um membro e um índice entre colchetes, por exemplo Level, Motor.Speed ou Temps[3]." Um nome em outra escrita, que o Sysmac Studio permite, é recusado do mesmo jeito, porque a requisição EtherNet/IP não consegue levá-lo.

O controlador lista as variáveis dele de um jeito que este driver não lê, então toda tag de um dispositivo lido por nome de tag é digitada à mão. Se o controlador publica um nome é resposta dele, dada na primeira leitura da tag. Não existe campo de deslocamento: um membro ou um elemento é nomeado por si mesmo, e um elemento de um array BOOL é lido pelo próprio nome, como Flags[5]. O endereço de barramento é o nome seguido de ?0, por exemplo Motor.Speed?0.

Tipos de dado

Por FINS o Tipo de dado oferecido segue o endereço:

O endereço nomeia Tipo de dado O que é lido
Um bit, como W0.01 Boolean Só aquele bit.
Uma palavra, como D100 Int16 ou UInt16 A palavra.
Uma palavra e a seguinte Int32, UInt32 ou Float Duas palavras, a palavra baixa no endereço e a alta depois dela, do jeito que as próprias instruções da Omron guardam uma palavra dupla. A última palavra de uma área não começa nenhum par, então ela oferece só Int16, UInt16 e String.
Uma palavra e as seguintes, como texto String O Comprimento (caracteres, vazio = 16) que a tag declara, de 1 a 1998 caracteres, dois por palavra, com o primeiro no byte alto. O texto termina no primeiro NUL. Numa linha serial, de 1 a 534 caracteres.

Digitar um endereço que não comporta o tipo da tag troca o tipo pelo que o endereço lê de forma mais natural: um Boolean para um bit, um Int16 para uma palavra. Um tipo que o endereço não comporta é recusado com os que ele comporta, por exemplo "O endereço D100 é lido como um destes tipos de dado: Int16, UInt16, Int32, UInt32, Float, String." Não existe opção de ordem de bytes ou de palavras: o FINS guarda toda palavra com o byte alto primeiro, e o driver cuida disso.

Um dispositivo lido por nome de tag oferece todo tipo atômico do controlador:

Tipo de dado Tipo da variável no Sysmac Studio
Boolean BOOL
SByte SINT
Byte USINT
Int16 INT
UInt16 UINT
Int32 DINT
UInt32 UDINT
Int64 LINT
UInt64 ULINT
Float REAL
Double LREAL

Uma variável WORD é lida como UInt16 e uma DWORD como UInt32. Variáveis STRING não são lidas, e String não é oferecido. Um tipo fora da lista é recusado com ela: "Uma variável de um controlador NJ/NX é lida como um destes tipos de dado: Boolean, SByte, Byte, Int16, UInt16, Int32, UInt32, Int64, UInt64, Float, Double."

Leitura

Por FINS o dispositivo mantém uma conversa com o CLP e manda uma requisição por vez, cada tag uma leitura de área de memória das palavras dela, e só aceita como resposta a que traz o número da própria requisição, então uma resposta atrasada nunca é lida como a da seguinte. Antes de qualquer tag ser lida, o CLP precisa responder a uma leitura de dados do controlador, com qualquer código de fim; o modelo que ele informa é escrito no diário. O que o CLP responde decide então o destino de cada leitura:

O CLP responde A leitura
Conclusão normal O valor.
Um código de fim sobre o ponto, como um endereço que o CLP não tem Aquela tag fica sem valor, e o erro dela nomeia o código e o significado dele no manual da Omron, por exemplo end code 0x1103 (address range error). Todas as outras tags do dispositivo continuam lendo.
Um código de fim sobre o caminho até o CLP (0x01xx, 0x02xx, 0x03xx, 0x05xx), um nó intermediário que esgotou o tempo no caminho, ou nada dentro do Timeout de resposta (ms) O dispositivo se reconecta, e as tags dele falham nas leituras até o CLP responder de novo. A política de cada tag para um dispositivo que não respondeu decide o que ela mostra.

Um dispositivo lido por nome de tag é provado perguntando ao controlador por uma variável que nenhum programa declara: a resposta do controlador de que esse nome não existe é uma resposta do controlador. As requisições dele passam pelo mesmo código EtherNet/IP do driver Rockwell EtherNet/IP e esgotam o tempo depois de 10 segundos.

Escritas

Tags cujo Acesso é Leitura e escrita ou Somente escrita podem ser escritas; uma tag nova nasce como Somente leitura. Uma escrita espera a vez na fila do dispositivo junto com as leituras, e manda o valor pedido e nada além dele:

A tag lê O que a escrita manda
Um bit FINS (W0.01) Só aquele bit: o CLP muda o bit no lugar e deixa os outros bits da palavra como estão.
Uma palavra ou palavra dupla FINS O valor inteiro, no endereço e, para duas palavras, na palavra seguinte.
Um texto FINS O comprimento declarado inteiro, com o texto na frente e NULs atrás, para que nada de um texto anterior mais longo seja lido depois dele. Um texto que não cabe no comprimento é recusado, nunca cortado.
Uma variável NJ/NX O valor, para aquela variável pelo nome dela; um elemento de um array BOOL como só aquele BOOL.
O CLP responde a uma escrita FINS com A escrita
Conclusão normal Entregue.
Um código de fim que a recusa Recusada, e o motivo nomeia o código e o significado dele, por exemplo end code 0x2101 (read-only).
Nada dentro do Timeout de resposta (ms), ou um nó intermediário que esgotou o tempo no caminho (0x0205) Sem resposta.

Uma escrita FINS cujo valor o tipo da tag não comporta é recusada antes de qualquer envio.

Descoberta

A página do driver Omron traz um cartão Escopo da varredura com um campo opcional, "Endereço do CLP para uma sondagem FINS, por exemplo 192.168.250.1 (vazio = só NJ/NX por broadcast)". O Descobrir então faz até duas perguntas, uma depois da outra:

Pergunta Quando O que oferece
Uma leitura de dados do controlador por FINS e UDP, com todo nó automático, mandada ao CLP do campo: um endereço IP ou um nome, com :port quando o CLP responde FINS numa porta que não é a 9600. A linha de progresso mostra "Pedindo a 192.168.250.1 que se identifique por FINS…". Só quando o campo tem um endereço. O CLP, como um dispositivo FINS com o nome do modelo com que ele responde, em omron://<host>:<port>?protocol=fins&transport=udp&network=0&node=0&unit=0&source=0&timeoutMs=2000. Um CLP que não responde nada não oferece nada.
A requisição de identidade EtherNet/IP, em broadcast em toda rede em que este computador está. A linha de progresso nomeia essas redes: "Procurando controladores Omron NJ/NX em 192.168.0.255…". Sempre. A varredura escuta até passarem 5 segundos sem resposta nova. Cada controlador NJ, NX ou NY que responde, como um dispositivo lido por nome de tag, com o nome do produto dele (um NX1P2, por exemplo). Um acoplador de E/S NX, cujo nome de produto começa com NX-, não guarda variáveis e é deixado de lado, como qualquer outro produto Omron.

Nenhuma das perguntas encontra tags: um CLP FINS não publica lista dos endereços dele, e um NJ/NX lista as variáveis de um jeito que o driver não lê, então cada candidato mostra "Nenhuma tag informada. Acrescente o dispositivo para configurar as tags no editor dele." Algo no campo que não é um host é recusado embaixo dele, e o Descobrir fica cinza: "Uma varredura Omron pede ao CLP escrito aqui que se identifique por FINS: o endereço IP ou o nome dele, com a porta se precisar (por exemplo 192.168.250.1 ou 192.168.250.1:9600). Deixe vazio para procurar só controladores NJ/NX por broadcast." Um controlador numa rede em que este computador não está não responde ao broadcast; adicione-o à mão. A varredura do Rockwell EtherNet/IP ouve o mesmo broadcast e deixa todo controlador Omron para esta. O resto do comportamento da varredura está em Descoberta.

Ferramentas do agente

O driver_capabilities descreve este driver sob omron: os dois protocolos, cada um com os campos de dispositivo, as formas de endereço e os tipos de dado que aceita, os transportes e as faixas FINS, as escritas e a descoberta. O device_upsert driver=Omron aceita omronProtocol (Fins ou NjNx) e, por FINS, finsTransport (Udp ou Tcp), finsNetwork, finsNode (0 para automático), finsUnit, finsSourceNode (só UDP, 0 para automático) e finsResponseTimeoutMs; um dispositivo lido por nome de tag não aceita porta nem campo FINS. O tag_upsert aceita o endereço de memória ou o nome da variável como address, o tipo como opcUaType (omitido, um bit fica Boolean e uma palavra Int16) e o comprimento de um texto FINS como wireQuantity. O device_discover driver=Omron roda a varredura, com target para a sondagem FINS. Um CJ2 lido por UDP e um NX1P2 lido por nome de tag:

device_upsert driver=Omron name=Press host=192.168.250.1 omronProtocol=Fins finsTransport=Udp
tag_upsert device=Press name=Level address=D100 opcUaType=Float
device_upsert driver=Omron name=Filler host=192.168.250.2 omronProtocol=NjNx
tag_upsert device=Filler name=Speed address=Motor.Speed opcUaType=Float

Um CLP numa linha serial fica pendurado numa linha deste driver: serial_line_upsert driver=Omron cria a linha, e device_upsert driver=Omron serialLineId=<id> adiciona o CLP por Host Link (finsTransport=HostLink, que a linha implica) com unitId, o número de unidade dele de 0 a 31 (omitido, o primeiro livre), e finsResponseTimeoutMs; os campos de rede são recusados nele. Um CP1L na unidade 0 na COM5:

serial_line_upsert driver=Omron name=HostLink serialPort=COM5 baudRate=9600 serialFormat=7E2
device_upsert driver=Omron name=Mixer serialLineId=<the line's id> unitId=0
tag_upsert device=Mixer name=Level address=D100 opcUaType=Int16

As outras ferramentas estão em Ferramentas do agente.

Limites que vale conhecer

  • Um controlador que fala só os comandos Host Link mais antigos do modo C, como um CPM1, um CPM2, um CQM1 ou um C200HS, não é lido, nem numa linha serial nem por um conversor: o driver envia só comandos FINS.
  • Temporizadores e contadores não são oferecidos por FINS: o valor atual deles fica em BCD ou em binário conforme a configuração do CLP, e nada numa resposta FINS diz qual. Leia esse valor por uma palavra para a qual o programa o copia.
  • As variáveis de um controlador NJ/NX nunca são listadas, nem na página da tag nem por uma varredura: todo nome é digitado.
  • Um dispositivo lido por nome de tag lê um valor atômico por tag. Variáveis STRING, uma estrutura inteira e um array inteiro não são lidos; um membro ou um elemento é lido pelo nome.
  • O driver manda três comandos FINS e nenhum outro: leitura de área de memória, escrita de área de memória e leitura de dados do controlador. Ele nunca muda o modo de operação do CLP, o relógio nem o programa.

Bom saber

  • Por UDP a estação manda cada requisição de uma porta própria e o CLP responde para essa porta, que é como as portas Ethernet da Omron vêm configuradas por padrão. Uma unidade Ethernet configurada com a conversão de endereço estática responde para a porta 9600 da estação, onde o driver não escuta: leia esse CLP por TCP.
  • Uma rede FINS diferente de 0 é alcançada pelas tabelas de roteamento configuradas nos CLPs; a estação não roteia nada sozinha.
  • Um controlador NJ/NX é perguntado primeiro pela rota CIP 1,0 e, quando ela não tem resposta, por 18 seguido do endereço IP do próprio controlador, como 18,192.168.250.1; a rota que respondeu é tentada primeiro na vez seguinte. Não existe campo de rota.
  • Cada tag FINS é uma requisição própria, e um dispositivo manda uma por vez, então o tempo de uma rodada de leituras cresce com o número de tags dele.