O protocolo Modbus é o protocolo mais comum da indústria para comunicação
M2M . É um padrão de fato e é suportado por quase todos os fabricantes de equipamentos industriais.
Devido à sua versatilidade e abertura, o padrão permite a integração de equipamentos de diferentes fabricantes. O Modbus é usado para coletar leituras de sensores, controlar relés e controladores, monitorar etc.
No artigo, analisaremos a implementação do protocolo Modbus, formatos de dados, software para trabalhar com o protocolo. Vamos tentar ler dados do dispositivo na prática.
História do Modbus
O Modbus foi introduzido em 1979 pela Modicon (agora Schneider Electric). Era um padrão aberto operando na interface RS-232. Mais tarde, implementações de protocolo para interfaces RS-485 e Modbus TCP. O protocolo rapidamente ganhou popularidade e muitos fabricantes começaram a implementá-lo em seus dispositivos.
Posteriormente, os direitos do protocolo foram transferidos para a organização sem fins lucrativos
Modbus Organization , que até hoje é proprietária do padrão.
O padrão Modbus usa terminologia derivada da
lógica ladder . Assim, por exemplo, alguns registros são chamados de bobinas (bobina em inglês).
Nível físico

- RS-232/422/485 são interfaces seriais amplamente usadas na indústria. As interfaces RS-422/485 fornecem alcance de sinal de até 1200 metros. Protocolos Modbus RTU / ASCII usados
- Redes TCP / IP - qualquer interface Ethernet pode ser um canal físico de transmissão de dados. Usando o protocolo Modbus TCP
Nível lógico
Diferenças do protocolo ModbusModbus ASCII
Os dados são codificados com caracteres da tabela ASCII e transmitidos em formato hexadecimal. O início de cada pacote é indicado por dois pontos e o final por retorno de carro e avanço de linha. Isso permite que o protocolo seja usado em linhas com atrasos mais longos e equipamentos com cronômetros menos precisos.
Modbus RTU
No protocolo Modbus RTU, os dados são codificados em formato binário e um intervalo de tempo serve como separador de pacotes. Este protocolo é crítico para atrasos e não pode funcionar, por exemplo, em linhas de modem. Ao mesmo tempo, a sobrecarga para transferência de dados é menor que no Modbus ASCII, pois o tamanho da mensagem é menor.
Modbus TCP
A estrutura de pacotes é semelhante ao Modbus RTU, os dados também são codificados em formato binário e empacotados em um pacote TCP regular para transmissão em redes IP. A verificação de integridade usada no Modbus RTU não é aplicada, pois o TCP já possui seu próprio mecanismo de controle de integridade.
Formato do pacote
Formatos de pacote para várias implementações ModbusTodos os dispositivos Modbus se comunicam seguindo o modelo mestre-escravo. As solicitações podem ser iniciadas apenas pelo dispositivo mestre, os escravos só podem responder às solicitações e não podem iniciar a transferência de dados por conta própria. Dependendo da implementação do protocolo, os cabeçalhos dos pacotes são diferentes. Aqui estão os principais componentes do pacote que são importantes:
ADU (Application Data Unit) - todo o pacote Modbus, com todos os cabeçalhos, PDUs, soma de verificação, endereço e tokens. Difere dependendo da implementação do protocolo.
PDU (unidade de dados do protocolo) - a parte principal do pacote, o mesmo para todas as implementações do protocolo. Contém carga útil.
Endereço do
dispositivo - o endereço do destinatário, ou seja, o dispositivo escravo. Até 247 dispositivos podem ser localizados em um segmento de uma rede Modbus. Apenas escravos têm endereços diferentes, o mestre não tem endereço. O endereço "0" é usado para solicitações de transmissão do mestre, enquanto os escravos não podem responder a esses pacotes de transmissão.
Soma de verificação - algoritmos de integridade de pacotes. O Modbus RTU e o ASCII usam 2 bytes de soma de verificação. O Modbus RTU usa o algoritmo CRC16, enquanto o Modbus ASCII usa o LRC8 mais simples e menos confiável. No Modbus TCP, a soma de verificação não é adicionada ao ADU, pois a integridade é verificada no nível TCP.
Não analisaremos cabeçalhos adicionais específicos para cada implementação de protocolo individual, pois isso não é significativo ao trabalhar com o protocolo no nível do aplicativo.
Registradores e funções Modbus
De uma forma simplificada, a estrutura de solicitação do Modbus consiste em um código de função (leitura / gravação) e dados que precisam ser lidos ou gravados. Ao mesmo tempo, os códigos de função diferem para diferentes tipos de dados. Analisaremos o que são registros e as funções para trabalhar com eles.

- Entradas discretas - As entradas discretas do dispositivo são somente leitura. Intervalo de endereços de registro: de 10001 a 19999. Eles têm a função "02" - lendo um grupo de registros
- Bobinas - saídas discretas do dispositivo ou valores internos. Disponível para leitura e escrita. O intervalo de endereços de registro é de 20001 a 29999. Possui funções: "01" - lê um grupo de registros, "05" - escreve um único registro, "15" - escreve um grupo de registros
- Registradores de entrada - entradas de dispositivo de 16 bits. Somente leitura. Intervalo de endereços de registro: de 30001 a 39999. Possui uma função: "04" - leia um grupo de registros
- Holding Registers - saídas de dispositivo de 16 bits ou valores internos. Disponível para leitura e escrita. O intervalo de endereços de registro: de 40001 a 49999. Tenha
Apesar dos nomes, as entradas e saídas podem realmente ser variáveis internas, armazenar contadores, sinalizadores ou ser acionadores de controle. Também existem outros intervalos de registros, mas na grande maioria dos dispositivos eles não são usados, portanto, consideraremos quatro tipos principais de registros. Dispositivos diferentes podem usar diferentes intervalos de registros ou todos de uma vez.
Exemplos de trabalho
Para um exemplo de trabalho com o protocolo Modbus TCP, usaremos o utilitário de console mais simples
modbus-cli , escrito na linguagem Ruby. Facilita a leitura e gravação de dados nos registros Modbus.
Vamos tentar ler o status dos contadores de pacotes transmitidos em um comutador industrial Advantech EKI-5524SSI. Primeiro, você precisa determinar os endereços dos registradores que armazenam as informações necessárias; para isso, consulte a
documentação do dispositivo. As descrições de registro estão localizadas na seção Tabela de Mapeamento Modbus:
Descrição dos valores do registro na documentação do comutador EKIPode-se observar que o valor dos pacotes transmitidos para uma porta é armazenado em quatro registradores e, para a primeira porta, esses são registradores 38193 a 38197. Também é fornecida uma descrição do formato de armazenamento de dados, a partir do qual se segue que o número inteiro de pacotes transmitidos é armazenado em formato hexadecimal, e o valor de 11223344 pacotes será escrito como 0xAB4130, da direita para a esquerda.
Faça um pedido:
$ modbus read 192.168.0.17 38193 4 38193 0x0000 38194 0x0000 38195 0x0000 38196 0x3459
read é um comando de
leitura . O próprio programa entende qual comando de leitura específico usar, dependendo do endereço do registro, no nosso caso o comando "04" será usado para ler registros de 16 bits.
192.168.0.17 - Endereço IP do dispositivo.
38193 - O endereço inicial do registro.
4 - deslocamento em relação ao endereço inicial. Lemos quatro registros para a porta 1, como segue na folha de dados.
Nós obtemos uma resposta contendo os valores de quatro registros. Vemos que o número de pacotes é pequeno: 0x3459, ou seja, 13401, - o switch foi ativado recentemente.
Desvantagens do protocolo Modbus
Para ser justo, vale a pena mencionar as deficiências do protocolo. Desde que foi desenvolvido há mais de 40 anos, quando o desempenho do processador era significativamente menor e os protocolos eram desenvolvidos sem levar em conta a proteção de dados, ele possui várias desvantagens:
- O protocolo não fornece autenticação e criptografia de dados transmitidos. Portanto, ao usar o Modbus TCP, devem ser usados túneis VPN adicionais.
- O escravo não pode iniciar a transferência de dados; portanto, o mestre deve pesquisar constantemente os escravos
- O dispositivo escravo não pode detectar perda de conexão com o mestre. Esse problema segue diretamente do anterior.
No entanto, apesar de todas as deficiências, o Modbus ainda é o protocolo industrial mais comum e, graças à sua abertura, facilita a combinação de dispositivos de diferentes fabricantes. Os baixos requisitos de recursos permitem integrar o protocolo nos dispositivos com menor consumo de energia.
Hardware ativado por Modbus
A Advantech oferece uma ampla gama de equipamentos industriais com suporte ao protocolo Modbus para qualquer tarefa: automação, controle, coleta e transmissão de dados.

Os módulos das séries
ADAM-6000 e
WISE-4000 permitem controlar remotamente entradas / saídas digitais e analógicas usando o protocolo Modbus TCP. Usado para controlar dispositivos periféricos e coletar dados no modo escravo. Eles podem ser emparelhados com um controlador lógico programável ou conectar-se diretamente a um servidor SCADA. ⠀⠀⠀ ⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
EKI-1200 - Gateways Modbus para conversão de interface

Para converter os protocolos Modbus RTU / ASCII em Modbus TCP, os gateways Modbus são usados. Os dispositivos da série
EKI-1200 possuem até quatro interfaces seriais RS-232/422/485 e duas portas Ethernet. Eles permitem combinar dispositivos com protocolos diferentes em uma rede. Por exemplo, conecte um dispositivo escravo que suporta apenas Modbus RTU via interface RS-485 a um segmento de rede Modbus TCP.
Os controladores suportam as funções Modbus RTU como escravo / mestre e cliente / servidor Modbus TCP.

Exemplos de aplicação
Sistema de Monitoramento de Estufas
A solução de monitoramento Advantech integra os softwares TPC-1070H, ADAM-6024, ADAM-6050, ADAM-6060 e WebAccess em um gabinete de máquina próximo a terras agrícolas. Ao conectar-se a vários dispositivos sensíveis, os módulos ADAM-6000 podem receber dados ambientais em tempo real e monitorar a troca de equipamentos para garantir que a estufa esteja no ambiente ideal para o crescimento das plantas. Graças ao recurso especial da Advantech, a lógica de condição gráfica (GCL), os usuários podem definir suas próprias regras de lógica de controle e carregá-las nos módulos de E / S Ethernet ADAM-6000 e, em seguida, os módulos executam automaticamente regras lógicas, como módulos autônomos. o controlador. Outro recurso - ponto a ponto (P2P) usa a rede Ethernet mais aberta e flexível para não apenas simplificar o processo de implementação sem um controlador, mas também economizar em custos de hardware.
Todos os dados recebidos são então transmitidos via Ethernet para um computador com um painel de toque TPC-1070H. Com um sistema de refrigeração sem ventilador e um painel frontal compatível com IP65, o TPC-1070H é um design compacto e resistente, adequado para um ambiente operacional em mudança, e seus poderosos recursos de computação podem lidar com grandes quantidades de dados. Para o gerenciamento de dispositivos, o Advantech WebAccess permite que engenheiros ou gerentes visualizem, monitorem e configurem o sistema de monitoramento através de uma intranet ou da Internet usando um navegador da Web padrão de qualquer dispositivo, incluindo tablets e smartphones.

Monitorando o sistema de aquecimento solar de água
A empresa de engenharia deveria ter sido capaz de controlar a quantidade de energia solar, temperatura e fluxo de água em um sistema de aquecimento de água movido a energia solar para uma piscina olímpica fornecida por seu painel solar recém-desenvolvido. Eles também devem poder monitorar diretamente esses valores e seus alarmes nos painéis do LCD e armazenar esses valores para referência futura.
Os módulos Adam da Advantech forneceram ao cliente uma solução que utilizava módulos de aquisição de dados conectados via RS485 e um barramento de dois fios para transmitir dados de todos os sensores. Essa arquitetura do sistema tem duas vantagens principais: em primeiro lugar, permite adicionar mais sensores aos módulos de coleta de dados a qualquer momento e, em segundo lugar, é muito fácil adicionar tags adicionais ao software para monitorar e registrar esses valores em um PC.
