Vous êtes sur la page 1sur 9

Driver Modicon Modbus 1

DRIVER MODICON MODBUS


software
Nome do arquivo: ModiconModbus.dll
Fabricante: Modicon
Protocolo: Modbus ASC/RTU/TCP
ltima verso: 2005.09.14
Introduo
Este driver implementa o protocolo Modbus Master/Slave, que permite ao Elipse atuar como Mestre em uma
rede Modbus, comunicando-se com qualquer equipamento escravo que implemente o protocolo Modbus nos
modos ASCII, RTU ou Modbus TCP.
O protocolo MODBUS um protocolo baseado em mensagens de comando e resposta, posicionado no nvel
7 do modelo OSI, que possibilita comunicao cliente/servidor entre equipamentos conectados a diferentes
tipos de redes. Oferece 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 Modbus.org e publicamente documentadas em MB IETF RFC.
Cdigos de Funes Definidas pelo Usurio: Funes no-padronizadas, que no precisam de
aprovao da Modbus.org, portanto sem qualquer garantia de unicidade, podendo ser livremente
implementadas.
Cdigos de Funes reservadas: Cdigos atualmente usados por alguns fabricantes em produtos
antigos, no disponveis para uso pblico.
Este 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 www.modbus.org.
Driver Modicon Modbus 2
Configurando o equipamento
Parmetros [P] de configurao do driver
Este driver no utiliza os parmetros [P]. 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 (ver Parmetros de Configuraes Extras do Driver).
As configuraes Extras tambm podem ser acessadas em tempo de execuo se o driver for iniciado no
modo OFF-LINE, usando-se as seguintes strings:
Configuraes
Parmetro Tipo
NodiconNodbus.NodbusNode
Integer:
0 - Modbus RTU
1 - Modbus ASCII
2 - Modbus TCP
NodiconNodbus.Olderaddr
Boolean (0 ou 1)
NodiconNodbus.UseDefaultSlaveAddress
Boolean (0 ou 1)
NodiconNodbus.DefaultSlaveAddress Unsigned integer
NodiconNodbus.UseSwapAddressDelay Boolean (0 ou 1)
NodiconNodbus.SwapAddressDelay Integer
NodiconNodbus.WaitSilenceOnError
Boolean (0 ou 1)

Para maiores informaes sobre a configurao OFF-LINE em tempo de execuo (run-time), ver manual do
usurio do IOKit.

NOTA: A porta padro para comunicao com MODBUS/TCP 502.

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, o parmetro N3 ser utilizado para informar o nmero do arquivo.

Driver Modicon Modbus 3
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, o parmetro B3 ser utilizado para informar o nmero do arquivo.

Tags especiais para leitura do cdigo da ltima exceo
B1 Endereo da CPU
B2 9999 (ver Tabela 1)
B3 No utilizado.
B4 No utilizado.

Tabela 1 - Parmetros B2
Elemento Descrio
Elemento[0| Cdigo da exceo
Elemento[1| Parmetro N2/B2 do tag gerador da exceo.
Elemento[2| Parmetro N3/B3 do tag gerador da exceo.
Elemento[3|
Parmetro N4/B4 do tag gerador da exceo.

Este tag l ou escreve em um registrador interno do driver, que registra o ltimo cdigo de exceo enviado
por um determinado equipamento escravo. Para cada comunicao bem sucedida com este equipamento que
no retorne exceo, o driver automaticamente atribuir zero a este registrador. Como este 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=9999.
O timestamp retornado por este 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 4
Parmetros de configuraes extras do driver
Atravs da aba Nodbus 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 a serem utilizadas nos parmetros N2/B2 dos tags. A cada cdigo
de funo devem ser especificadas funes Modbus para Leitura e Escrita, alm do tipo de dado que ser
manipulado.
As funes Modbus implementadas so as seguintes:
Leitura
Opo Descrio
01 Leitura de Bit (Read Coil Status - 0x)
02 Leitura de Bit (Read Input Status - 1x)
03 Leitura de Words (Read Holding Registers - 4x)
0+
Leitura de Words (Read Input Registers - 3x)
07
Leitura de Status (Read Exception Status)
20 Leitura da Memria Estendida (Read General Reference - 6x)

Driver Modicon Modbus 5
Leitura: Funes Especiais
Opo Descrio
65 03 Leitura da Memria de Massa (somente para o equipamento ABB MGE 144)

Escrita
Opo Descrio
05 Escrita de Bit (Force Single Coil - 0x)
06
Escrita de Word Simples (Preset Single Register - 4x)
15
Escrita de Bits (Force Multiple Coils - 0x)
16
Escrita de Words (Preset Multiple Registers - 4x)
21 Escrita na Memria Estendida (Write General Reference - 6x)

Escrita: Funes Especiais
Opo Descrio
65 01 65 01 - Zera medidor de energia (somente para o equipamento ABB MGE 144)
65 02 65 02 - Zera memria de mximo e mnimo (somente para o equipamento ABB MGE 144)

Tipos de Dados
Opo Descrio
Char Palavra de 8 bits, caracter.
Byte Palavra de 8 bits sem sinal.
!nt8
Palavra de 8 bits com sinal.
!nt16
Palavra de 16 bits com sinal.
!nt32
Palavra de 32 bits com sinal.
Word Palavra de 16 bits sem sinal.
Dword Palavra de 32 bits sem sinal.
Float Ponto flutuante de 32 bits (IEEE 754) (4 bytes na ordem: EXP F2 F1 0).
Double
Real de 64 bits.
String
Palavra de N chars (texto).
BCD
Valor numrico BCD (decimal codificado em binrio). Quando utilizando este 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 9999. J se size=4, o valor mximo ser 99999999.
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 a nota
Codificao BCD deste manual.
Bit Tipo selecionado automaticamente quando uma funo de acesso a bits selecionada. As
funes de acesso a bits so as seguintes: 01, 02, 05 e 15. O campo size no usado para
tipos bits. Quanto este tipo usado, cada elemento de bloco passa a representar um bit.

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. Este
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. No caso de strings, este
tamanho define exatamente o nmero de bytes enviados ou recebidos para cada valor string, i.e., para
cada tag PLC ou elemento de bloco. Se a string lida ou escrita tiver um tamanho menor, o restante dos
bytes ser preenchido com zeros, de forma a completar o tamanho configurado. O tipo string neste
Driver Modicon Modbus 6
driver no possui um limite mximo de tamanho definido, sendo este limite o limite mximo permitido
pelo protocolo para a rea de dados do frame de uma determinada funo.
Rev Frame: Indica que o sentido dos bytes no frame est invertido. Se estiver habilitada, esta
opo faz com que toda a rea de dados do frame de comunicao tenha sua ordem invertida.
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.
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 modbus.ini. Este driver no utiliza mais arquivos .ini para armazenar tais configuraes, que
agora so 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 deste driver. Desta
forma possvel guardar em um arquivo as configuraes de funes, que podem ser usadas em outras
aplicaes.
Os botes Add/Edit/Remove definem a lista de funes Modbus que sero utilizadas no sistema.
Boto Add: Adiciona um novo item a lista.
Boto Edit: Atualiza um item selecionado na lista.
Boto Remove: Remove um item selecionado na lista.
NOTA: As opes Rev Frame, Swap Byte, Swap Word e Swap Dword foram acrescentadas para permitir
compatibilidade com equipamentos que no seguem o padro do protocolo Modbus na codificao dos
dados. O protocolo Modbus padro transfere os dados com os bytes mais significativos primeiro. Se estas
opes permanecerem desabilitadas, o comportamento do driver corresponder ao padro do protocolo,
sendo esta a opo recomendada para a maioria dos equipamentos.
Protocol options
Opo Descrio
Use Older
Address
Habilita a informao, de modo direto, do valor da posio de memria
(o driver automaticamente subtrai 1 do valor informado, antes de
enviar o frame de comunicao). Esta opo til porque o
endereamento dos dados no protocolo Modbus inicia em zero,
enquanto que nos equipamentos os endereos freqentemente iniciam
em 1, de forma que o endereo zero no frame de comunicao
corresponderia posio 1 da rea de dados acessada no controlador.
Nodbus mode Nessa caixa de combinao possvel selecionar o modo a ser
utilizado. So trs as opes disponveis: modo RTU (default), modo
ASCII, ou ModbusTCP.

Default Slave Address
Este recurso permite configurar um endereo padro de escravos, de forma a no precisar configur-lo em
cada tag. Para usar este recurso, basta configurar o parmetro N1/B1 como 1000. Ou seja, todos os tags que
tiverem B1/N1=1000 tero este valor substitudo pelo valor configurado na caixa de edio 'Default Slave
Address'.
Driver Modicon Modbus 7
Tambm possvel forar o uso do endereo padro em todos os tags, independente do valor configurado em
N1/B1, marcando-se a opo 'Force Default Address'.
Swap address delay
Esta opo deve normalmente ser deixada desabilitada. Em raras situaes, existem controladores que
precisam de uma pausa entre a troca de escravos, i.e., um tempo de espera aps a comunicao com um
determinado equipamento, antes de o driver se comunicar com um outro equipamento com endereo de
escravo diferente. Se este for o caso, pode-se definir este atraso em ms.
Wait Silence on error
Se esta opo estiver habilitada, aps cada erro de comunicao o driver ficar em loop recebendo dados at
ocorrer timeout. Isto limpa o canal de recepo, impedindo que ocorram problemas em futuras comunicaes
devido recepo de bytes atrasados, que ainda estejam trafegando no momento do erro, e que possam ser
confundidos com a resposta a um novo comando.
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 este tipo de limitao foi desenvolvida a codificao BCD, que
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 DECIMAL BCD
0 0000b 5 0101b
1 0001b 6 0110b
2 0010b 7 0111b
3 0011b 8 1000b
4 0100b 9 1001b
Tabela1: Cdigos BCD dos algarismos decimais de 0 a 9
A fim de melhorar a eficincia desta 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
este 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.
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.
Driver Modicon Modbus 8
Os cdigos de exceo so usados pelo escravo para informar uma falha ao executar uma determinada
funo. Os equipamentos escravos no retornam excees no caso de falhas de comunicao, situao em
que estes 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 destes 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. Neste caso o script deve antes de tudo rejeitar valores nulos, pois estes 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 este exemplo, considere TAGEXC com leitura e escrita automatica habilitadas
IF TAGEXC==0
RETURN
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. 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):

// Obs: Para este exemplo, considere TAGEXC com leitura e escrita automtica habilitadas,
// e TAG com escrita automtica desabilitada.
TAGEXC=0 // ZERA REGISTRADOR DE EXCECOES
TAG = 10
TAG.WRITE()
IF TAGEXC<>0
... // TRATA EXCECAO
ENDIF
OBS: O tag especial B2=9999 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. Neste caso os
procedimentos recomendados permanecem os mesmos.
Driver Modicon Modbus 9
Cdigos de exceo
CDIGO NOME SIGNIFICADO
1 !LLEGAL FUNCT!ON 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.
2 !LLEGAL DATA
ADDRESS
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.
3 !LLEGAL DATA
vALUE
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.
+ SLAvE DEv!CE
FA!LURE
Ocorreu um erro irrecupervel durante o processamento da
funo solicitada.
5 ACKNOWLEDGE Usado com comandos de programao. O escravo aceitou a
mensagem e a est processando. Porm este processamento
lever um longo tempo. Esta exceo previne um time-out no
mestre. O fim da requisio deve ser testado por um processo de
polling.
6 SLAvE DEv!CE
BUSY
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.
8 NENORY PAR!TY
ERROR
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.
0A GATEWAY PATH
UNAvA!LABLE
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.
0B GATEWAY TARGET
DEv!CE FA!LED TO
RESPOND
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.
Referncias
MODBUS Application Protocol Specification, Modbus.org, 2002.05.02
IOKit - Users Manual - Elipse Software
Histrico das revises do driver
Verso Data Autor Comentrios
v2.00 2005.09.14 A. Quites - Verso original com IOKit (case 2050)
v1.00 - Verses anteriores sem IOKit

Vous aimerez peut-être aussi