Protocolo Modbus - DCA

Propaganda
Protocolo Modbus
João Maria Araújo do Nascimento
Pedro Berretta de Lucena
[email protected]
[email protected]
Descrição
• Protocolo Orientado a Caractere;
• Modicon Industrial Automation System (atual Schneider);
• Mestre / Escravo;
• Simplicidade e Facilidade de Implementação;
• Pode ser utilizado na camada de aplicação de redes
industriais.
Modelo de Camada
2
Modbus
1
Física
(RS-232)
Mestre / Escravo
MODO QUESTÃO / RESPOSTA
MODO DIFUSÃO
MESTRE
MESTRE
ESCRAVO
ESCRAVO
ESCRAVO
ESCRAVO
ESCRAVO
ESCRAVO
Modelo de Comunicação
Queries
Pedido do
Mestre
Polling
Endereço do
Dispositivo
Endereço do
Dispositivo
Código da Função
Código da Função
Dados
Dados
Checagem de
Erros
Checagem de
Erros
Select
Resposta
do Escravo
Response
Modos de Transmissão
• ASCII (American Code for Informastion Interchange):
Início
Endereço
Função
Dados
LRC
Fim
: (3Ah)
2 Chars
2 Chars
N Chars
2 Chars
CRLF
• RTU (Remote Terminal Unit):
Início
Endereço
Função
Dados
CRC
Fim
Silêncio
3..5 chars
8 bits
8 bits
N x 8 bits
16 bits
Silêncio
3..5 chars
Modo ASCII
• 1 bit de INÍCIO, 7 bits de DADO, SEM PARIDADE, 2 bits de PARADA
• 1 bit de INÍCIO, 7 bits de DADO, 1 bit de PARIDADE, 1 bit de PARADA
Modo RTU
• 1 bit de INÍCIO, 8 bits de DADO, SEM PARIDADE, 2 bits de PARADA
• 1 bit de INÍCIO, 8 bits de DADO, 1 bit de PARIDADE, 1 bit de PARADA
Especificação dos Campos
Endereço
Função
0..247
00h..F7h
1..127
01h..7Fh
Dados
Checagem
de Erro
-
0..255
00h..FFh
• Endereço 00H é utilizado para broadcast
• O bit mais significativo do campo da função é utilizado para
indicar respostas de exceção
Algumas Funções
HEX.
FUNÇÃO
01
Leitura de n bits
02
Leitura de n bits
03
Leitura de n palavras
04
Leitura de n palavras
05
Escrita de 1 bit
06
Escrita de 1 palavra
07
Leitura rápida de 1 byte
0F
Escrita de n bits
10
Escrita de n palavras
Função Read Coil Status
• Finalidade: Leitura de estados das saídas discretas do dispositivo
escravo.
• Código de Função: 0x01.
• Formato da Requisição:
Endereço do dispositivo...1 byte
Código de função.............1 byte, 0x01
Endereço inicial ...............2 bytes 1
Número de saídas.............2 bytes 1
FCS ..................................1 ou 2 bytes 1
• Formato da Resposta:
Endereço do dispositivo...1 byte
Código de função.............1 byte, 0x01
Tamanho da resposta ......1 byte, n
Resposta...........................n bytes 2
FCS ..................................1 ou 2 bytes
Algumas Exceções
HEX.
EXCEÇÃO
01
Função inválida
02
Sensor ou registrador inválido
03
Valor dado inválido
04
Falha no dispositivo
05
Estado de espera
06
Dispositivo ocupado
07
Não reconhecimento
08
Erro de paridade na memória
Longitudinal Redundancy Check (LRC)
1. Soma dos campos:
Soma = Endereço + Função + Dados;
2. Cálculo do complemento de 2 para os 8 bit
menos significativos:
LRC = FFh – Soma(8 bits) + 1;
3. Primeiramente coloca-se o byte menos significativo
na mensagem e depois o mais significativo.
Cyclical Redundancy Check (CRC)
1. Carrega-se o registrador CRC com o valor FFFFh;
2. Submete-se o caractere da mensagem a uma lógica XOR com os 8 bits
menos significativos do registrador CRC, retornando o resultado no
registrador CRC;
3. Desloca-se o conteúdo do registrador CRC 1 bit para a direita atribuindo 0 ao
bit mais significativo;
4. Examina-se o bit menos significativo do registrador CRC, e:
• se for igual a 0, repete-se o processo a partir do item 3;
• se for igual a 1, submete-se o registrador CRC a uma lógica XOR com a
constante A001h retornando o resultado no registrador CRC, em seguida
repete-se o processo a partir do item 3;
5. Repetem-se os itens 3 e 4 até que tenham ocorrido 8 deslocamentos;
6. Repetem-se os itens 2 até 5 para os outros caracteres;
7. O valor final do registrador CRC é o valor do Campo Checksum;
8. Primeiramente coloca-se o byte menos significativo na mensagem e depois
o mais significativo.
Download