Modbus é um protocolo de comunicação muito usado em sistemas de automação industrial, sistemas domésticos inteligentes, redes automatizadas de pequenos objetos (armazéns, estufas, etc.). O protocolo serve também para conectar equipamentos de vários tipos a um computador doméstico. O desenvolvimento de projetos como Arduino e Raspberry Pi tem aumentado significativamente o interesse em tarefas relacionadas à robótica e automação. Tudo isso garante o aumento da popularidade do Modbus entre aficionados e profissionais.
Neste artigo, vamos apresentar as principais características das soluções de software e hardware existentes para testar e depurar dispositivos e redes baseados no protocolo Modbus.
Se você está familiarizado com a arquitetura do protocolo, pode pular diretamente para a descrição do software Modbus. Caso contrário, abaixo você encontrará uma breve introdução ao Modbus.
Modbus é um protocolo bastante utilizado a nível médio e baixo (de campo) nos sistemas de automação. O nível médio é o nível dos controladores - dispositivos que coletam dados e controlam o processo tecnológico. O nível de campo é o nível de interação entre os sensores e os controladores ou entre os sensores e o servidor.
Mostramos a seguir a estrutura típica de um sistema de automação que utiliza o Modbus como protocolo de base.
O 'ambiente' padrão do protocolo Modbus é o RS485/422/232. Modbus RTU ou Modbus ASCII funciona sobre ele. No entanto, nas redes TCP/IP, o protocolo de nível superior é o protocolo de transporte TCP e esta variante é chamada Modbus TCP. Neste artigo, vamos falar sobre o modo de transmissão Modbus RTU.
O protocolo Modbus é implementado utilizando uma relação mestre-escravo. Isso significa que a comunicação é sempre iniciada apenas por um dispositivo, o mestre, que envia uma solicitação a um escravo (servidor) e espera uma resposta. Na rede há sempre um mestre e de 1 a 247 escravos.
O mestre interage com os dispositivos escravos na forma de solicitação-resposta. A solicitação contém uma sequência de bytes, chamada frame, na qual o tempo entre os bytes é padronizado dependendo da taxa de transferência de dados e não é mais do que o intervalo durante o qual 1,5 bytes de dados podem ser transmitidos. No modo RTU, as mensagens começam com um intervalo silencioso de pelo menos 3,5 caracteres.
A mensagem de solicitação é enviada no seguinte formato:
ID - endereço do dispositivo (1 byte),
FN - Função Modbus (1 byte),
[args] - argumentos da função (N bytes, dependendo da função),
CRC - uma soma de controle CRC-16 (2 bytes).
O formato de uma mensagem de resposta:
Como você pode ver, os frames de resposta e solicitação têm construções similares, exceto o campo Dados, que fornece conteúdo diferente dependendo da função desempenhada.
Se a função solicitada não for suportada pelo dispositivo escravo ou se os argumentos no campo [args] da solicitação estiverem incorretos para o servidor, no campo FN da resposta o bit superior será definido como 1 e o campo Dados conterá informações adicionais sobre o erro ocorrido.
Além disso, determinados dispositivos escravos podem ter registros específicos com informações adicionais.
Os tipos de registros indicados nos dispositivos Modbus incluem os seguintes:
Campo | Acesso | Tamanho | Descrição |
---|---|---|---|
entradas Discretas | somente leitura | 1 bit | utilizado como entrada |
saídas de Bobinas | leitura/escrita | 1 bit | utilizado para o controle discreto |
registros de Entrada | somente leitura | 16 bit | utilizado para entrada |
registros de Retenção | leitura/escrita | 16 bit | utilizado para muitas coisas, incluindo entradas, saídas, dados de configuração, etc. |
A descrição completa do protocolo Modbus RTU é fornecida em sua especificação funcional.
Ao configurar uma rede Modbus, é preciso ter em mente que o protocolo permite a transmissão de dados de inúmeros dispositivos que devem ser recebidos por um único servidor ou controlador com um driver Modbus instalado. Um aplicativo serial pode controlar a porta de comunicação de um servidor (por exemplo, COM1) quando recebe dados Modbus de vários sensores.
Infelizmente, há uma limitação, porque abrir a porta receptora de múltiplas aplicações simultaneamente pode ser um desafio considerável.
Há uma solução para este dilema. Virtual COM Port Driver da Electronic Team permite criar portas RS485 virtuais e dividir os dados Modbus para que múltiplas portas possam receber os dados ao mesmo tempo.
Agora você pode duplicar o fluxo de dados que chega a uma porta física para várias portas virtuais. Conectando vários aplicativos às cópias virtuais de sua porta COM1, todos os aplicativos conseguem ter acesso compartilhado à sua porta física.
Ao desenvolver e depurar dispositivos Modbus RTU, os especialistas utilizam ferramentas de software e hardware especializadas. No caso dos dispositivos de hardware, a solução mais simples é um conversor RS485/USB. De todos os dispositivos deste tipo, provavelmente a solução mais eficiente é o MOXA UPORT 1130/UPORT 1150. O dispositivo foi projetado para ser fácil de usar e requer habilidades mínimas para ser montado. Também existem soluções mais complexas como o Ethernet/RS-485 (por exemplo, NPORT da MOXA).
Na prática, para o desenvolvimento de dispositivos Modbus RTU, a função de escravo é implementada com mais frequência. Os dispositivos escravos incluem vários sensores, relés controlados, módulos de E/S, etc. Os dispositivos mestre são criados com menos frequência. Em redes de automação, a função mestre é normalmente executada por um controlador, que já tem uma pilha Modbus implementada, ou um sistema OPC Server/SCADA equipado com um driver Modbus.
Neste artigo, não vamos considerar o desenvolvimento da pilha Modbus. A única coisa que vale a pena mencionar é a biblioteca FreeMODBUS, sobre a qual é bastante fácil construir um dispositivo que suporte as funções de escravo Modbus.
Os testes podem ser realizados nos diferentes níveis de desenvolvimento do dispositivo Modbus. As soluções de software e hardware Modbus tester dependem do estágio de desenvolvimento e da finalidade dos testes.
No processo de desenvolvimento, pode ocorrer que um dispositivo recebe uma solicitação e responde a ela (pode ser indicado pelos LED de recepção/transmissão de pacotes, se tais elementos estão previstos no modelo, ou detectados utilizando um depurador e definindo um ponto de parada), mas os dados não são exibidos no terminal ou em outro programa especializado. Neste caso, será necessário um sniffer de porta serial.
Serial Port Tester é um dos melhores softwares de monitoramento Modbus disponíveis atualmente. Esta solução Modbus pode facilmente ler e gravar os dados serial que passam pelas portas COM do sistema. A funcionalidade avançada do aplicativo permite coletar os dados em tempo real, para que o desenvolvedor possa resolver todos os problemas assim que forem detectados.
COM Port Tester pode funcionar em modo terminal, emulando a transferência de dados da porta COM monitorada para o dispositivo inserido na mesma. Esta opção é ideal para testar a comunicação Modbus, porque permite observar a reação de um dispositivo em particular a um determinado comando e dados.
O software especializado é útil quando é necessário não apenas verificar se um dispositivo funciona (ou seja, atende corretamente às solicitações), mas também para medir o tempo até a falha.
A solução Modbus tester permite registrar os fluxos de dados de entrada e saída. Além disso, todos os dados coletados podem ser mostrados em diferentes vistas (tabela, linha, despejo, terminal), o que simplifica a comparação e análise dos mesmos.
São muito mais os especialistas que depuram os sistemas e dispositivos de automação compatíveis com o protocolo Modbus do que os que desenvolvem esses dispositivos. Assim, com base nas particularidades das tarefas, os requisitos do software Modbus serão ligeiramente diferentes.
Se precisar conectar um controlador a um único dispositivo escravo, você pode estabelecer uma comunicação serial usando um conversor RS-485/USB, um PC e um software ou terminal especializado. Neste caso, não há necessidade de longos testes e análise de numerosos arquivos de registro. Portanto, não há diferença na lógica da operação e no conjunto de ferramentas utilizadas na fase de teste no desenvolvimento do dispositivo escravo.
Se você já tiver uma rede de dispositivos pronta, podemos distinguir as seguintes tarefas:
Para realizar estas tarefas, você vai precisar de um terminal que possa criar uma lista de solicitações ou uma ferramenta especializada como o Modbus Poll, um simulador Modbus mestre que permite monitorar vários escravos Modbus e/ou áreas de dados ao mesmo tempo.
Alguns dispositivos Modbus podem ter configurações da interface RS-485 específicas (o número de bits de dados, paridade, o número de bits de parada). Dispositivos com configurações diferentes não podem funcionar na mesma rede com o mesmo mestre. A ferramenta modbus RS485 tester mais eficiente para testar e configurar tais dispositivos é um programa terminal com suporte para alternar rapidamente entre os parâmetros de porta pré-instalados ou funcionar com várias linhas simultaneamente.
Outro grande desafio é disponibilizar o intercâmbio de dados com um dispositivo que funciona com um protocolo diferente da especificação padrão do Modbus RTU. Por exemplo, o protocolo do escravo pode ser logicamente similar ao Modbus (estrutura do pacote, intervalos de tempo, etc.), mas utiliza algumas funções além do padrão.
Neste caso, é recomendável utilizar o Modbus Poll, que permite formular solicitações aleatórias, ou um terminal que ofereça funcionalidades similares.
O sistema SCADA padrão não é eficiente para trabalhar com tais dispositivos e a comunicação com o equipamento é estabelecida através de um servidor OPC especial.