O que é o protocolo Modbus e como funciona?

O que é o protocolo Modbus e como funciona?

Modbus é um protocolo popular de comunicação serial de baixa velocidade amplamente utilizado na indústria de automação. O protocolo foi desenvolvido pela Modicon (agora adquirida pela Schneider Electric) em 1979 para seus próprios controladores lógicos programáveis. O protocolo serviu como elo entre CLPs e dispositivos de automação inteligentes. Agora um protocolo aberto mantido pela Organização Modbus, o Modbus foi muito popular entre os engenheiros de automação desde o seu início. O protocolo é amplamente utilizado para monitoramento e controle industrial, principalmente com PLCs.

O protocolo serial é baseado na configuração mestre-escravo e é capaz de configurar a comunicação de um cliente Modbus com até 247 servidores Modbus. A interface física é facilitada nos dispositivos pelas portas padrão RS-485 ou RS-232. O barramento é um cabo de par trançado blindado ou não blindado com terminação de 150 ohms em ambas as extremidades. O cabo pode ser facilmente conectado aos dispositivos usando um D-shell de 9 pinos, terminais de parafuso ou conectores RJ-45.

O Modbus é uma rede ponto a ponto ou multidrop usando uma ligação em série ou taps. Toda a comunicação numa rede Modbus é controlada e gerenciada pelo mestre (ou seja, o cliente Modbus). O Modbus é amplamente utilizado para conectar dispositivos de instrumentação e controle a um controlador ou dispositivos de coleta de dados. Normalmente, o dispositivo de coleta de dados ou o cliente Modbus é um computador supervisor dentro de uma interface homem-máquina (HMI) ou sistema de controle de supervisão e aquisição de dados (SCADA). As unidades terminais remotas (RTU), incluindo módulos de sensores, controlador lógico programável (PLC) ou controlador de automação programável (PAC), são os servidores Modbus. O Modbus é suportado por quase todos os softwares comerciais de HMI, SCADA, OPC e aquisição de dados, permitindo uma integração descomplicada de equipamentos compatíveis com Modbus com qualquer Sistema de Automação Industrial (IAS) ou Sistema de Gerenciamento Predial (BMS).

Por que o Modbus é tão popular
O Modbus é usado por fabricantes em diversos setores e se tornou bastante popular devido, em parte, à sua simplicidade. É um padrão aberto; portanto, os fabricantes podem incorporar a versão RTU do Modbus em seus equipamentos sem pagar nenhum royalty. O protocolo pode ser implementado até mesmo em placas de prototipagem como o Arduino. Na verdade, o protocolo de comunicação pode ser facilmente implementado em qualquer microcontrolador ou computador. A comunicação de dados é realizada através de solicitação-resposta e as mensagens possuem formato de quadro fixo.

Desenvolvido inicialmente como um protocolo de camada de aplicação para transferência de dados pela camada serial, existem atualmente três versões do protocolo Modbus: duas para linhas seriais – o Modbus RTU e o Modbus ASCII; e um para Ethernet (TCP/IP e UDP) — o Modbus TCP. Embora relativamente simplista, o protocolo ainda permite a verificação de mensagens com uma precisão de mais de 99%. O Modbus RTU possui somas de verificação redundantes cíclicas (CRC) e o Modbus ASCII possui verificações de redundância longitudinal (LRC) para verificação de erros.

Apesar de seu início na década de 1970, a implementação do protocolo exigia recursos mínimos de RAM e memória. Na década de 1970, quando a tecnologia informática, bem como as tecnologias incorporadas, não eram tão avançadas como hoje, um protocolo leve como o Modbus era especialmente atraente. A popularidade do Modbus nunca diminuiu.

Alcance e taxa de dados
A taxa de dados padrão do Modbus é 9600 b/s ou 19,2 kb/s. Normalmente, 19,2 kb/s é a taxa padrão. A taxa de dados pode ser reduzida para 4.800 b/s, 2.400 b/s, etc. A taxa de dados máxima é 115,2 kb/s. A uma taxa de dados padrão de 9.600 b/s, o Modbus pode ter um alcance máximo de 1.000 metros. Se a taxa de dados aumentar, o alcance será reduzido. O comprimento da torneira deve ser sempre inferior a 20 metros.

Níveis lógicos
Em um Modbus, um 0 binário é representado por um nível de tensão de +2 a +6V. O binário 1 é representado por um nível de tensão de -2 a -6V.

Camadas
Inicialmente, o Modbus era um protocolo único implementado na camada serial. Unidades de dados de aplicação foram introduzidas para permitir a implementação em redes seriais, bem como em redes TCP/IP e UDP quando o protocolo foi implementado para Ethernet. O protocolo agora se divide em duas camadas – a camada central e a camada de rede. A camada central define a Unidade de Dados de Protocolo (PDU), enquanto a camada de rede define a Unidade de Dados de Aplicativo (ADU). A PDU pode ser transmitida pela rede UDP mesmo sem definir nenhuma unidade de dados de aplicação.

As versões seriais do Modbus (ou seja, Modbus RTU e Modbus ASCII) requerem apenas PDU, enquanto a versão Ethernet (ou seja, Modbus TCP) requer PDU e ADU.

Rede e comunicação
Modbus é um protocolo de solicitação-resposta implementado em uma configuração mestre-escravo. Existem dois tipos de dispositivos — Cliente Modbus e Servidor Modbus. O Cliente Modbus é o mestre e geralmente é um computador supervisor dentro de um sistema SCADA ou IHM. Os servidores Modbus são escravos e geralmente são unidades terminais remotas, como módulos de sensores, PLCs e PACs.

As versões seriais do Modbus suportam a comunicação de um único cliente com até 247 servidores Modbus. Como as portas RS-485 e RS-232 são comuns para implementação Modbus, se a porta RS-232 for usada, o número máximo de servidores Modbus pode ser de até 247, mas se forem usadas portas RS-485, o número máximo de Os servidores Modbus estão limitados a 32 devido às limitações práticas do padrão RS-485. Pode haver vários clientes e servidores ilimitados, pois a versão Ethernet do Modbus possui um cabeçalho adicional de 6 bytes para roteamento de Internet

Toda a comunicação de dados é controlada pelo cliente Modbus através de solicitação-resposta. No Modbus, os dados são transferidos em bytes. Na versão RTU, cada byte é codificado em um quadro assíncrono de 11 bits que consiste em um bit inicial, um byte de dados, paridade par e um bit de parada. Na versão ASCII, cada byte é codificado em um quadro de 10 bits que consiste em um bit de início, dados de 7 bits, 1 bit de paridade par ou ímpar ou nenhum bit se não houver paridade e 1 bit de parada se a paridade for usada, caso contrário 2 pare um pouco.

Uma mensagem comunicada entre o mestre/cliente e o escravo/servidor é chamada de Protocol Data Unit (PDU). A PDU consiste no endereço do escravo, no código de função (comando), nos dados e na soma de verificação (CRC ou LRC).

O mestre envia uma solicitação a um dos escravos identificado pelo endereço do escravo. O endereço do escravo tem um byte e pode ter um valor entre 0 e 255. De acordo com o protocolo, o endereço do escravo 0 é reservado para as mensagens de difusão e os endereços dos escravos que identificam os dispositivos escravos não podem exceder 247. O código de função é novamente um byte longo e informa ao dispositivo escravo endereçado que tipo de ação deve ser tomada. São válidos os códigos de função na faixa de 1 a 255, dos quais 128 a 255 são reservados para respostas de exceção. A ação é uma operação de leitura ou gravação em que os dados em uma solicitação fornecem informações adicionais necessárias para executar a ação. Por exemplo, pode especificar onde começar a leitura e quantos dados devem ser lidos. O CRC é aplicado para verificação de erros na versão RTU, enquanto o LRC é aplicado para verificação de erros na versão ASCII.

Quando o mestre faz uma solicitação a um escravo endereçado, ele devolve uma resposta. O endereço do escravo e o código de função são repetidos na mesma resposta. Os dados contêm os valores solicitados pelo mestre. Se ocorrer um erro ao executar a ação solicitada, o código da função será modificado e os dados conterão um código que descreve o erro. Novamente, CRC ou LRC, dependendo do enquadramento RTU ou ASCII, respectivamente, são usados ​​para garantir a integridade da mensagem ou PDU.

No enquadramento RTU, cada byte representa dois caracteres hexadecimais de 4 bits em um quadro de 11 bits. A PDU consiste em um endereço escravo de 1 byte, código de função de 1 byte, dados de 0 a 252 bytes e CRC de 2 bytes.

No enquadramento ASCII, cada byte representa dois caracteres ASCII em um quadro de 10 bits. A PDU consiste em um caractere inicial longo de 1 caractere, um endereço escravo longo de 2 caracteres, um código de função longo de 2 caracteres, dados longos de 0 a 504 caracteres, um LRC longo de 2 caracteres e um caractere final longo de 2 caracteres. O caractere inicial é sempre dois pontos (:) ou hexadecimal ASCII 3A. O caractere final é sempre um retorno de carro com avanço de linha (ASCII 0D e 0A hexadecimal). Cada PDU na RTU, bem como na versão ASCII, é separada por 28 bits ou 3,5 caracteres.

Ambas as versões RTU e ASCII do Modbus são quase semelhantes, exceto algumas diferenças. No enquadramento RTU, os bytes são apresentados em formato binário, enquanto no enquadramento ASCII, os bytes são apresentados como caracteres ASCII legíveis de 4 bits. O enquadramento ASCII possui caracteres de início e fim de texto, enquanto no enquadramento RTU a separação de 28 bits entre PDUs/mensagens é interpretada para detectar o início e o fim do quadro. Como o enquadramento RTU utiliza mensagens mais curtas, é mais rápido que a versão ASCII. A versão ASCII tem a vantagem de poder decorrer intervalos de até um segundo entre os caracteres da mensagem. Se o intervalo ultrapassar um segundo, o equipamento considera um erro de transmissão.

A PDU na versão TCP do Modbus consiste em um ID de transação de 2 bytes, um campo de protocolo de 2 bytes, um campo de comprimento de 2 bytes, um endereço escravo de 1 byte e um endereço de escravo de 1 a 252 bytes. campo de mensagem.

O ID da transação identifica a transação e o protocolo é sempre definido como 0 para indicar Modbus. O comprimento indica o número dos seguintes bytes. Isto é seguido por um endereço escravo de 1 byte. O campo de mensagem é uma versão RTU semelhante ao quadro Modbus que consiste no código de função e nos dados. O tamanho máximo do campo de mensagem pode ser de 253 bytes (ou seja, 1 byte para código de função e no máximo 252 bytes para dados como no quadro RTU).

O bit menos significativo é enviado primeiro em todas as versões – RTU, ASCII e TCP. O equipamento compatível com Modbus não pode detectar automaticamente a taxa de transmissão, portanto, a mesma taxa de transmissão precisa ser explicitamente definida no cliente e nas extremidades do servidor do barramento. A PDU Modbus suporta um formato que só pode enviar dados, sem capacidade de enviar parâmetros entre dispositivos de comunicação.

Tipos de dados
Existem dois tipos de dados no Modbus – Bobinas e Registros. As bobinas são bits únicos que podem ser 0 (OFF) ou 1 (ON). As bobinas podem ser bobinas de saída discretas ou contatos de entrada discretos. Os contatos de entrada discreta são o status de uma entrada discreta física como LIGADO ou DESLIGADO. As bobinas de saída discreta têm o status do sinal de saída discreto físico como LIGADO ou DESLIGADO.

Os registradores são registradores não assinados de 16 bits que podem conter um valor que representa um número de ponto flutuante, texto ASCII, uma fila ou uma tabela. Um registro por si só armazena apenas valores positivos na faixa de 0 a 65535, ou seja, 0x0000 a 0xFFFF hexadecimal. Dados de 16 bits armazenados em registros podem ser interpretados como um número inteiro não assinado de 16 bits, um número inteiro assinado de 16 bits, uma string ASCII de 2 caracteres ou um valor ON/OFF discreto pelo cliente Modbus. Dados de 32 bits armazenados em registradores podem ser interpretados como um número inteiro não assinado de 32 bits, um número inteiro assinado de 32 bits, uma string ASCII de 4 caracteres ou um número de ponto flutuante de precisão dupla de 32 bits pelo cliente Modbus.

Existem dois tipos de registros – registros de entrada analógica e registros de retenção de saída analógica. Assim como os contatos de entrada discretos (bobinas), os registradores de entrada armazenam o status de uma entrada externa como um valor entre 0 e 65535 (0x0000 e 0xFFFF). No passado, os registradores de entrada eram geralmente usados ​​para armazenar representações digitais do valor das entradas analógicas que poderiam ser sinais de tensão ou corrente. Os registradores de retenção de saída são usados ​​para armazenar dados no dispositivo. Agora, como a maioria dos equipamentos compatíveis com Modbus não são dispositivos de entrada/saída, os registradores de entrada também são usados ​​para armazenar dados.

Como o servidor armazena dados
Em um servidor Modbus, como um módulo sensor, PLC ou PAC, os dados são organizados em quatro tabelas ou bancos de dados. Existem dois bancos de dados para armazenar valores ou bobinas liga/desliga discretas. Esses bancos de dados armazenam bobinas de saída discretas e contatos de entrada discretos separadamente. Então, existem dois bancos de dados para armazenar valores numéricos ou registros que armazenam registros de entrada analógica e registros de retenção de saída analógica separadamente.

Cada banco de dados pode armazenar 9.999 valores. Por exemplo, os bancos de dados para bobinas de saída discretas e contatos de entrada discretos podem armazenar 9.999 bits cada, na faixa de 0000 a 270E. Os bancos de dados para registros de entrada analógica e registros de retenção de saída analógica podem armazenar 9.999 palavras cada, na faixa de 0000 a 270E, onde cada palavra tem 16 bits de comprimento.

Os bancos de dados para bobinas de saída discreta e registros de retenção de saída analógica são do tipo leitura-gravação, enquanto os bancos de dados para contatos de entrada discreta e registros de entrada analógica são do tipo somente leitura.

Os valores nos bancos de dados são acessados ​​por nomes de localidades. O banco de dados para bobinas de saída discreta, contatos de entrada discretos, registros de entrada analógica e registros de retenção de saída analógica têm localizações na faixa de 1~9999, 10001~19999, 30001~39999 e 40001~49999, respectivamente. A estrutura e natureza de quatro bancos de dados em um servidor Modbus estão resumidas na tabela a seguir.

Conclusão
Modbus é um protocolo de comunicação industrial amplamente utilizado, frequentemente usado com PLCs. O protocolo possui três versões – RTU, ASCII e Modbus. A versão RTU, sendo de padrão aberto e mais rápida, é mais comumente usada pelos fabricantes. Com mensagens mais curtas, as mensagens Modbus enquadradas pela RTU podem ser atualizadas em um intervalo de 100 milissegundos. O Modbus é suportado por quase todos os softwares comerciais de HMI, SCADA, OPC e aquisição de dados, facilitando a integração de equipamentos compatíveis com Modbus em qualquer sistema de automação industrial ou sistema de gerenciamento predial.

(tagsParaTraduzir)Arduino

ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。