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.