elipsesoftware
DRIVER MODICON MODBUS PARA ELIPSE
Nome do arquivo:
Fabricante:
Protocolo:
ltima verso:
elipsesoftware
[Link]
Modicon
Modbus ASC/RTU/TCP
Introduo
Esse driver implementa o protocolo Modbus Master/Slave, permitindo ao Elipse atuar como Mestre
em uma rede Modbus, comunicando-se com qualquer equipamento escravo que implemente os
protocolos Modbus modos ASCII ou RTU, ou Modbus TCP.
O protocolo MODBUS um protocolo baseado em mensagens, posicionado no nvel 7 do modelo
OSI, que possibilita comunicao cliente/servidor entre equipamentos conectados a diferentes tipos de
redes. um protocolo baseado em mensagens de comando e resposta, oferecendo servios com
funes definidas por um cdigo de 8 bits.
Existem trs categorias de cdigos de funes:
Cdigos de Funes Pblicas: Funes bem definidas pelo protocolo, com garantia de
unicidade, validadas pela comunidade [Link] e publicamente documentadas em MB IETF
RFC.
Cdigos de Funes Definidas pelo Usurio: Funes definidos pelo usurio no so
padronizados e no precisam de aprovao pela [Link], no tendo portando qualquer
garantia de unicidade, podendo ser livremente implementadas.
Cdigos de Funes reservadas: Cdigos atualmente usados por alguns fabricantes em
produtos antigos, no estando disponveis para uso pblico.
Esse driver implementa todas as funes pblicas com exceo das funes 22, 23 e 43, bem como
algumas funes especficas de fabricantes.
O protocolo Modbus foi desenvolvido inicialmente pela Modicon (atual Schneider Electric), em 1979,
sendo hoje um padro aberto, implementado por centenas de fabricantes em milhares de
equipamentos.
Maiores informaes referentes ao protocolo Modbus podem ser obtidas no site [Link].
Configurando o equipamento
Parmetros [P] de configurao do driver
Esse driver no utiliza os parmetros Ps. Todas as configuraes de comunicao devem ser
realizadas nas janelas de configuraes extras do IOKit.
As configuraes especficas do protocolo devem ser realizadas na aba 'Modbus', dentro da janela de
configuraes extras (Parmetros de Configuraes Extras do Driver).
Observaes para Comunicao Ethernet: A porta padro para comunicao com MODBUS/TCP
502.
Driver Modicon Modbus para Elipse
elipsesoftware
Parmetros [N] de endereamento de tags PLC
N1 Endereo da CPU (0= Modo Broadcast)
N2 Nmero da funo criada em "Extras" para leitura e escrita
N3 No utilizado
N4 Endereo da varivel
Se forem utilizadas as funes 20 ou 21, N3 ser utilizado para informar o nmero do arquivo.
Parmetros [B] de endereamento de tags bloco
B1 Endereo da CPU (0= Modo Broadcast)
B2 Nmero da funo criada em "Extras" para leitura e escrita
B3 No utilizado
B4 Endereo da varivel
Se forem utilizadas as funes 20 ou 21, B3 ser utilizado para informar o nmero do arquivo.
Tags especiais para leitura do cdigo da ltima exceo
B1 Endereo da CPU
B2 99999 (ver Tabela1)
Tabela1 - Parmetros B2
Elemento
Elemento[0]
Elemento[1]
Elemento[2]
Elemento[4]
Descrio
Cdigo da exceo
Parmetro N2/B2
Parmetro N3/B3
Parmetro N4/B4
Esse tag l ou escreve em um registrador interno do driver, o qual registra o ltimo cdigo de exceo
enviado por um determinado equipamento escravo. A cada comunicao bem sucedida com esse
equipamento que no retorne exceo, o driver automaticamente atribuir zero a esse registrador.
Como esse tag aceita escrita, o usurio tem a possibilidade de zer-lo manualmente, por script.
Os elementos 1, 2 e 3 especificam os parmetros do tag do driver que gerou a exceo registrada. Caso
tais informaes no sejam necessrias, pode-se alternativamente acessar o cdigo da ltima exceo
com um tag PLC anlogo, com N1=endereo e N2=99999.
O timestamp retornado por esse tag representa o momento em que a exceo foi recebida do
equipamento.
O item Uso dos tags especiais para leitura do cdigo da ltima exceo deste manual fornece
algumas dicas de como utilizar adequadamente este recurso.
Driver Modicon Modbus para Elipse
elipsesoftware
Parmetros de Configuraes Extras do Driver
Atravs da aba Modbus da janela de configuraes extras, possvel configurar parmetros adicionais
do driver.
Figura 1: Janela das configuraes extras do driver
Modbus functions
Aqui so especificadas as funes Modbus que sero utilizadas nos parmetros N2/B2 dos tags. A
cada cdigo de funo devem ser especificados uma funo Modbus para Leitura e outra para Escrita,
alm do tipo de dado que ser manipulado.
As funes Modbus implementas so as seguintes:
Leitura
Leitura
Descrio
Opo
01
02
03
04
07
20
Leitura de Bit (Read Coil Status - 0x)
Leitura de Bit (Read Input Status - 1x)
Leitura de Words (Read Holding Registers - 4x)
Leitura de Words (Read Input Registers - 3x)
Leitura de Status (Read Exception Status)
Leitura da Memria Extendida (Read General Reference - 6x)
Funes Especiais
Descrio
Opo
6503
Leitura da Memria de Massa (somente para o equipamento ABB MGE 144)
Driver Modicon Modbus para Elipse
elipsesoftware
Escrita
Escrita
Descrio
Opo
05
06
15
16
21
Escrita de Bit (Force Single Coil - 0x)
Escrita de Word Simples (Preset Single Register - 4x)
Escrita de Bits (Force Multiple Coils - 0x)
Escrita de Words (Preset Multiple Registers - 4x)
Escrita na Memria Extendida (Write General Reference - 6x)
Funes Especiais
Descrio
Opo
65 01
65 02
65 01 - Reseta medidor de energia (somente para o equipamento ABB MGE
144)
65 02 - Reseta memria de mximo e mnimo (somente para o equipamento
ABB MGE 144)
Tipos de Dados
Descrio
Opo
Char
Byte
Int8
Int16
Int32
Word
Dword
Float
Double
String
BCD
Palavra de 8 bits, caracter.
Palavra de 8 bits sem sinal.
Palavra de 8 bits com sinal.
Palavra de 16 bits com sinal.
Palavra de 32 bits com sinal.
Palavra de 16 bits sem sinal.
Palavra de 32 bits sem sinal.
Ponto Flutuante de 32 bits (IEEE 754) (4 bytes na ordem: EXP F2 F1 0).
Real de 64 bits.
Palavra de N chars (texto). O tipo string nesse driver no possui um
limite mximo de tamanho definido, sendo esse limite o limite mximo
permitido pelo protocolo para a rea de dados do frame de uma
determinada funo.
Valor numrico BCD (decimal codificado em binrio). Quando
utilizando esse tipo, a aplicao deve fornecer um valor decimal positivo
e inteiro, a ser enviado no formato BCD, respeitando o tamanho
especificado. O campo 'size', no caso do tipo BCD, refere-se ao nmero
de bytes a serem enviados para representar o valor. Uma vez que na
codificao BCD cada algarismo ser convertido em um nibble, temos
que os valores permitidos devem possuir um nmero mximo de
algarismos igual ao dobro do valor especificado no campo 'size'. Ou seja,
se for selecionado 2 para o campo size, o mximo valor que poder ser
enviado ser 99999. J se size=4, o valor mximo ser 9999999999.
Os valores permitidos para o campo size no caso de tipos BCD so 2
(WORD) e 4 (DOUBLE WORD). Para maiores detalhes sobre a
codificao BCD, consulte o item 6.1 deste manual.
As demais opes disponveis na janela das configuraes extras do driver so as seguintes:
Size: Deve ser informado o tamanho em bytes de cada elemento do tipo de dado selecionado. Esse
campo preenchido automaticamente para tipos de dados com tamanho fixo, como os tipos BYTE,
WORD e int16, devendo ser preenchido para dados tipo string e BCD.
Rev Frame: Indica que o sentido dos bytes no frame est invertido.
Swap Byte: Indica que o driver dever inverter a ordem dos bytes um a um para obter o valor.
Swap Word: Indica que o driver dever inverter a ordem dos bytes dois a dois (em words) para obter
o valor.
Driver Modicon Modbus para Elipse
elipsesoftware
Swap Dword: Indica que o driver dever inverter a ordem dos bytes quatro a quatro (em dwords) para
obter o valor.
Import Configuration: Esta opo permite importar configuraes de funes de verses anteriores a
2.0 do driver Modbus Master/Slave, que armazenavam essas configuraes em um arquivo
[Link]. Esse driver no utiliza mais arquivos .ini para armazenar tais configuraes, as quais so
agora armazenadas no prprio arquivo da aplicao.
Export Configuration: Esta opo faz a operao inversa da anterior, gerando um arquivo .ini
contendo as configuraes de funes, no mesmo formato das verses anteriores desse driver. Dessa
forma possvel guardar-se em um arquivo as configuraes de funes, que podem vir a serem
usadas em outras aplicaes.
Os botes Add/Update/Remove definem a lista de funes Modbus que sero utilizadas no sistema.
Boto Add: Adiciona um novo item a lista.
Boto Update: Atualiza um item selecionado na lista.
Boto Remove: Remove um item selecionado na lista.
Protocol options
Protocol Options
Descrio
Opo
Older Address
Habilita informar, de modo direto, o valor da posio de memria
(automaticamente o driver far a subtrao por 1 do valor informado,
antes de enviar o frame de comunicao).
Nessa caixa de combinao possvel selecionar o modo a ser
utilizado. So trs as opes disponveis: modo RTU (default), modo
ASCII, ou ModbusTCP.
Modbus mode
Notas
Codificao BCD
A codificao BCD (Binary Coded Decimal ou Decimal Codificado em Binrio) foi originalmente
concebida para contornar limitaes quanto ao nmero mximo de dgitos passveis de serem
representados nos formatos mais tradicionais de armazenamento de valores. Formatos como a
representao de nmeros reais em ponto flutuante mostram-se normalmente aceitveis para clculos
matemticos e cientficos. Porm, erros de aproximao causados pela existncia de algarismos que
no possam ser representados por problemas de overflow ou underflow, podem no ser admissveis
em certas aplicaes, como em procedimentos financeiros. Para superar esse tipo de limitao foi
desenvolvida a codificao BCD, a qual permite a representao de nmeros at o ltimo algarismo.
Nessa representao, cada algarismo decimal representado em binrio de per si, sem limitaes no
que se refere ao nmero de algarismos.
A tabela abaixo mostra os algarismos decimais e seus valores correspondentes em BCD:
Algortmo decimais e seus valores correspondentes em BCD
DECIMAL
BCD
0
1
2
3
4
0000b
0001b
0010b
0011b
0100b
DECIMAL
5
6
7
8
9
BCD
0101b
0110b
0111b
1000b
1001b
Tabela1: Cdigos BCD dos algarismos decimais de 0 a 9
Driver Modicon Modbus para Elipse
elipsesoftware
A fim de melhorar a eficincia dessa codificao, comum representar-se dois algarismos por byte, j
que cada algarismo decimal requer apenas 4 bits para sua codificao. Tal representao chamada
de BCD comprimido (packed BCD), e a representao utilizada por este driver. Ou seja, os pacotes
enviados por esse driver com valores BCD utilizam um byte de dado para cada dois algarismos do
valor decimal representado. Por isso o campo size, no caso de tipos de dado BCD, deve ser definido
como a metade do nmero mximo de algarismos a serem representados nos valores a serem lidos
ou escritos.
Uso dos tags especiais para leitura do cdigo da ltima exceo
Conforme j mencionado neste manual, os tags especiais para leitura do cdigo da ltima exceo so
utilizados para ler o ltimo cdigo de exceo enviado por um determinado equipamento escravo.
Como j mencionado, tais cdigos so armazenados automaticamente pelo driver em registradores
internos, que podem ser acessados por meio deste tag. Alm disso, a cada comunicao bem sucedida
com determinado equipamento, em que nenhuma exceo for retornada, o driver zera
automaticamente o registrador associado ao mesmo.
Os cdigos de exceo so usados pelo escravo para informar uma falha ao executar uma determinada
funo. Os equipamentos escravos no retorna excees no caso de falhas de comunicao, situao
em que os mesmos simplesmente no respondem. Os cdigos de exceo so retornados pelos
escravos em situaes em que a solicitao do mestre foi recebida com sucesso, porm no pde ser
executada por algum motivo, como por exemplo a tentativa de ler ou escrever em um registrador
inexistente. Neste caso o cdigo de exceo retornado indica o tipo de erro ocorrido.
A especificao do protocolo Modbus define 9 cdigos de exceo, os quais so apresentados na
tabela 2 deste manual. Alm desses cdigos, alguns fabricantes definem cdigos adicionais,
especficos de seus equipamentos.
A forma mais usual de utilizar este tag, durante o scan normal dos tags de funes, atravs de um
evento OnRead do tag de exceo. Nesse caso o script deve antes de tudo rejeitar valores nulos, pois
esses indicam o no recebimento de excees. Em seguida pode-se tratar a exceo, executando os
procedimentos adequados, conforme o cdigo recebido. Constitui-se em uma boa prtica zerar o
registrador de exceo ao sair do script, de forma a indicar que a exceo j foi tratada. Veja o
exemplo abaixo, em Elipse Basic (SCADA):
// EVENTO OnRead DA TAGEXC
// Obs: Para esse exemplo, considere TAGEXC com leitura e escrita automatica
habilitadas
IF TAGEXC==0
EXIT
ENDIF
IF TAGEXC==1
...
// TRATA EXCECAO 1
ELSEIF TAGEXC==2
...
// TRATA EXCECAO 2
ELSE
...
// TRATA DEMAIS EXCECOES
ENDIF
TAGEXC=0 // ZERA REGISTRADOR DE EXCECOES
J nas operaes de escrita por script, em que se precise testar o retorno de excees logo em seguida
ao envio do comando, deve-se primeiramente zerar o registrador de excees. Isto evita que uma
eventual exceo provocada pelo comando de escrita seja confundida com uma preexistente, que
possua o mesmo cdigo. Executa-se ento a operao de escrita e testa-se o valor do tag especial, que
deve retornar zero caso nenhuma exceo tenha sido recebida. Caso o mesmo retorne um valor
diferente de zero, pode-se ento tratar apropriadamente a exceo recebida. Veja o exemplo abaixo,
em Elipse Basic (SCADA):
Driver Modicon Modbus para Elipse
elipsesoftware
// Obs: Para esse exemplo, considere TAGEXC com leitura e escrita automatica
habilitadas,
//
e TAG com escrita automatica desabilitada.
TAGEXC=0 // ZERA REGISTRADOR DE EXCECOES
TAG = 10
[Link]()
IF TAGEXC<>0
...
// TRATA EXCECAO
ENDIF
OBS: O tag especial B2=99999 retorna, alm do cdigo da exceo, retornado no elemento zero,
tambm os parmetros do tag cuja comunicao teria provocado a exceo. Caso essas informaes
no sejam necessrias, pode-se perfeitamente ler o mesmo registro atravs de um tag PLC com
N2=9999. Nesse caso os procedimentos recomendados permanecem os mesmos.
Cdigos de exceo
CDIGO
NOME
ILLEGAL FUNCTION
ILLEGAL DATA
ADDRESS
ILLEGAL DATA
VALUE
4
5
SLAVE DEVICE
FAILURE
ACKNOWLEDGE
SLAVE DEVICE BUSY
MEMORY PARITY
ERROR
0A
GATEWAY PATH
UNAVAILABLE
0B
GATEWAY TARGET
DEVICE FAILED TO
RESPOND
SIGNIFICADO
O cdigo de funo recebido no vlido. Isso pode
indicar que a funo no est implementa, ou que o
escravo encontra-se em um estado inadequado para
process-la.
Endereo de dados recebido no um endereo vlido.
Mais especificamente, a combinao do endereo de
referncia e a quantidade de dados a serem transferidos
invlida.
Valor presente na requisio do Mestre no vlido.
Isto indica uma falha na estrutura de dados
remanescente de uma requisio complexa, como
quando o tamanho informado para o bloco de dados
no est correto. Esta exceo no indica que os valores
submetidos para escrita estejam fora do escopo
esperado pela aplicao, uma vez que tal informao
no acessvel ao protocolo.
Ocorreu um erro irrecupervel durante o processamento
da funo solicitada.
Usado com comandos de programao. O escravo
aceitou a mensagem e a est processando. Porm esse
processamento lever um longo tempo. Essa exceo
previne um time-out no mestre. O fim da requisio
deve ser testado por um processo de polling.
Usado com comandos de programao. Indica que o
escravo est processando um outro comando de longa
durao, e que a solicitao deve ser retransmitida mais
tarde, quando o escravo estiver novamente disponvel.
Usado em conjunto com as funes 20 e 21, reference
type 6, para indicar que a rea extendida de arquivos
falhou em um teste de consistncia. O equipamento
escravo pode estar precisando de manuteno.
Usado em conjunto com gateways, para indicar que o
gateway no foi capaz de alocar um caminho interno
para o processamento da solicitao. Geralmente indica
que o gateway est desconfigurado ou sobrecarregado.
Usado em conjunto com gateways, para indicar que no
foi recebida nenhuma resposta do equipamento destino.
Geralmente indica que tal equipamento no est
presente na rede.
Tabela 2: Cdigos de exceo padronizados pelo protocolo Modbus.
Driver Modicon Modbus para Elipse
elipsesoftware
Referncias
MODBUS Application Protocol Specification, [Link], 2002.05.02
IOKit - Users Manual - Elipse Software
Histrico das revises do driver
Verso
Data
Driver Modicon Modbus para Elipse
Autor
Comentrios