Modbus

O QUE É

MODBUS?

O Modbus é um protocolo de comunicação amplamente utilizado na indústria para transmitir dados entre dispositivos eletrônicos. Ele é empregado em várias aplicações, como automação industrial, controle de processo, transporte e monitoramento remoto. O Modbus é compatível com uma variedade de dispositivos, incluindo PLCs, controladores de processo, sensores, válvulas e outros dispositivos embarcados. Esse protocolo compacto e flexível é amplamente adotado e pode ser adaptado para diferentes meios de comunicação, como linhas seriais, telefone celular, rádios licenciados e satélite. Sua longevidade e versatilidade o tornaram um padrão de fato na indústria.

História do Modbus

O protocolo de comunicação serial Modbus foi desenvolvido pela Modicon (agora Schneider Electric) e publicado em 1979 para uso com seus Controladores Lógicos Programáveis ​​(PLCs). As primeiras raízes do Modicon começaram em 1968 com um grupo central de engenheiros liderados por Dick Morley que inventou o primeiro controlador lógico programável.

O Modbus é um padrão aberto, o que significa que os fabricantes podem incorporá-lo em seus equipamentos sem pagar royalties. É o protocolo de comunicação mais difundido na automação industrial e é o meio mais comumente disponível para conectar dispositivos eletrônicos industriais.

O Modbus introduziu o conceito de dados no chão de fábrica. O Modbus tornou possível conectar todo um grupo de dispositivos usando apenas dois fios no controlador. Só isso economizou um grande investimento em fios, mão de obra e tempo de instalação. Em vez de quilômetros e quilômetros de fios conectando centenas de dispositivos, um simples par de dois fios poderia ser encadeado de um dispositivo para o outro. Foi revolucionário para a época.

O Modbus encontrou seu caminho em centenas de milhares – senão milhões – de dispositivos. Você pode encontrá-lo em tudo, desde controladores de válvulas e acionamentos de motores até IHMs e sistemas de filtragem de água. Seria realmente difícil nomear uma categoria de produto em automação industrial ou automação predial que não usa Modbus.

 

Por que o Modbus floresceu

Por que o Modbus teve tanto impacto na indústria de Automação Industrial que ainda sobrevive até hoje como uma das principais redes industriais do século XXI? Aqui estão as três chaves principais para o seu sucesso:

  1. Modbus é um padrão aberto: Modicon não manteve o padrão proprietário. Eles o lançaram como um padrão não proprietário e deram as boas-vindas aos desenvolvedores, até mesmo aos concorrentes, para implementá-lo. Eles presumiram corretamente que seria melhor para todos, inclusive para eles, se o Modbus se tornasse um sucesso no mercado. Por causa desse pensamento, o Modbus se tornou o primeiro padrão Fieldbus amplamente aceito.
  2. Modbus usa transportes padrão: A camada de transporte para comandos Modbus RTU também é simples de entender. O Modbus RTU usa RS-232, RS-422 e RS-485. Modbus TCP/IP usa Ethernet.
  3. Modbus usa um protocolo simples: Modbus é muito fácil de entender. Seu objetivo principal é simplesmente mover dados entre um dispositivo cliente RTU e um dispositivo servidor RTU. Existem apenas dois tipos de dados a serem movidos: registradores e bobinas. Os registradores são inteiros sem sinal de 16 bits. As bobinas são bits únicos. A simplicidade do Modbus também levou muitas empresas a expandir a estrutura de mensagens, representação de dados e transportes.

Outra razão pela qual o Modbus foi tão bem-sucedido foi que ele poderia ser facilmente entendido por não programadores. A simplicidade levou a uma quantidade incrível de atividade e propagação do Modbus em muitos setores diferentes em todo o mundo.

 

Estrutura da Mensagem do Protocolo Modbus

A estrutura padrão de uma solicitação Modbus e uma resposta Modbus é idêntica para todas as formas de mensagens Modbus. Essa estrutura começa com um byte indicando a função que o servidor deve executar e termina com o último byte de dados da mensagem.

Os componentes gerais de uma mensagem Modbus são os seguintes:

Código de Função (FC)O código de função identifica a solicitação ao servidor Modbus. Há um grande número de solicitações de mensagens possíveis, mas cerca de oito são comumente usadas.
Endereço InicialO endereço inicial é o índice na área de dados no dispositivo Modbus. Se o código de função visa bobinas, este campo especifica o índice das bobinas (bits) do espaço de endereço da bobina. Se a função se aplica a registradores, este campo especifica o índice nos registradores para aquela parte do espaço de endereço.

Nota: Os espaços de endereço Modbus são baseados em um – o primeiro registro ou bobina é um. O protocolo Modbus é baseado em zero. O primeiro registrador ou bobina é zero. O endereço no fio é sempre um a menos que o endereço na solicitação de dados Modbus.

Comprimento do bitO número de bits a serem lidos ou gravados.
Contagem de palavrasO número de registradores a serem lidos ou gravados.
Contagem de bytesO número de bytes de dados incluídos na solicitação ou resposta da mensagem.
Código de respostaEste byte indica a conclusão bem-sucedida da solicitação de mensagem. É idêntico ao pedido de mensagem original.
Resposta de Exceção (FC)Uma resposta de exceção é indicada pela combinação do Código de Resposta da Solicitação de Função Modbus original com 80 hexadecimais. Por exemplo, uma resposta de exceção do Modbus para o Código de função 3 é 83 hexadecimais. Um único valor de byte de dados com o código de erro Modbus sempre segue o byte de resposta de exceção.

 

  • A chave pré-compartilhada é um sistema descomplicado que funciona bem em sistemas pequenos. O Compartilhamento de Chave Privada opera de maneira muito simples. Uma chave privada é conhecida e compartilhada por todos os dispositivos em uma rede. Qualquer dispositivo que conheça a chave privada é autenticado e capaz de criptografar e descriptografar mensagens.
  • Os certificados X.509 são uma forma padrão de dois dispositivos se comunicarem com segurança pela Internet. Cada dispositivo possui um certificado que identifica a entidade que emite o certificado e alguma autoridade de certificação que atesta esse emissor. Um dispositivo pode criptografar e descriptografar mensagens usando as chaves públicas e privadas associadas ao certificado.

Os fornecedores de CIP Security são obrigados a oferecer suporte a ambos os modelos de confiança. Os usuários finais podem decidir o que faz mais sentido para suas instalações e comissionar seu dispositivo adequadamente.

Três novos objetos
Todas as tecnologias Common Industrial Protocol™ (CIP) – EtherNet/IP™, CompoNet™, ControlNet™ e DeviceNet™ – são tecnologias baseadas em objetos. Isso significa que os usuários interagem com os dispositivos CIP interagindo com os objetos implementados nesses dispositivos.

Existem três novos objetos implementados para oferecer suporte à segurança CIP: o objeto CIP Security, o objeto de gerenciamento de certificados e o objeto de segurança EtherNet/IP.

  • O CIP Security Object é um objeto de controle de alto nível. É o mais simples dos objetos CIP Security. Ele fornece um sinalizador que as entidades externas podem verificar para determinar se um dispositivo está no estado de configuração de segurança CIP. Ele mantém uma lista de autoridades confiáveis ​​e identifica os perfis de segurança CIP compatíveis com o dispositivo.
  • O Certificate Management Object (CMO) é o objeto CIP Security que gerencia os certificados X.509 mantidos pelo dispositivo e cria Certificate Signing Requests (CSR). As solicitações de assinatura são aplicativos para uma Autoridade de Certificação para a criação de um certificado X.509. Em alguns aplicativos de comissionamento, uma ferramenta de configuração solicitará que o objeto de gerenciamento de certificados crie uma solicitação de assinatura. O Objeto de Gerenciamento de Certificados armazena a solicitação no objeto Arquivo onde ele pode ser lido pela ferramenta de configuração e usado para obter um certificado de uma Autoridade de Certificação local para o aplicativo.
  • O objeto de segurança EtherNet/IP é o objeto de segurança CIP que gerencia os parâmetros que controlam como a segurança CIP opera em um dispositivo EtherNet/IP. Ele gerencia os parâmetros que controlam a operação TLS e DTLS, os conjuntos de segurança de cifras, as listas de autoridades confiáveis ​​e os mecanismos para obtenção de certificados X.509. Ele identifica o certificado de dispositivo ativo atual que o dispositivo está usando para comunicações seguras.

Representação de Dados Modbus

Como tudo no Modbus, a representação de dados é simples. Existem apenas dois tipos de dados no Modbus: bobinas e registradores.

  • Bobinas: As bobinas são simplesmente bits únicos. Os bits podem ser ON (1) ou podem ser OFF (0). Algumas bobinas representam entradas, o que significa que contêm o status de alguma entrada física discreta. Ou eles representam saídas, o que significa que eles mantêm o estado de algum sinal físico de saída discreto.
  • Registradores: Os registradores são simplesmente dados de registro não assinados de 16 bits. Os registradores podem ter um valor de 0 a 65535 (0 a FFFF hexadecimal). Não há representação para valores negativos, nenhuma representação para valores maiores que 65535 e nenhuma representação para dados reais como 200.125. Qualquer aplicativo pode organizar e tratar os dados cadastrais da forma que quiser, mas não há como nenhum outro dispositivo Modbus saber automaticamente qual é essa representação. Um aplicativo Modbus que lê registros de um dispositivo servidor Modbus deve ter algum conhecimento prévio de como registros específicos são tratados para processá-los corretamente.
 

Camadas de Transporte Modbus

A forma como movemos uma mensagem de uma estação para outra é chamada de Camada de Transporte. Agora, a Camada de Transporte pode ser complicada. Você pode usar qualquer transporte que desejar. A sequência de mensagens Modbus é uma sequência de mensagens Modbus independentemente de você enviá-la em Ethernet, RS232 ou RS485. O transporte é simplesmente o mecanismo que você usa para mover a mensagem do remetente para o destinatário.

Existem vários transportes padrão usados ​​para mover mensagens do protocolo Modbus: RS-232, RS-485 e Ethernet. Você pode usar outros, mas esses são os mais comuns.

RS-232

RS232 significa Recomendar padrão número 232. Esta é a antiga porta serial que costumávamos encontrar em computadores há vários (ok, mais de vários) anos atrás. O padrão RS-232C completo especifica um conector “D” de 25 pinos. Agora, se encontrarmos um conector serial, ele usa os conectores do tipo D de 9 pinos, geralmente referenciados como DB9.

RS-485

RS485 é um sucessor do RS-232. Funciona de maneira semelhante em relação aos bits de sincronização que sincronizam a transferência de bits de uma estação transmissora para uma estação receptora. Existem, no entanto, duas características definidoras que tornam o RS-485 diferente do RS-232. A primeira é a capacidade de conduzir vários destinos. Os transmissores RS-485 podem sinalizar eletricamente até 32 dispositivos de destino. Isso torna o RS-485 a maneira preferida de transportar mensagens Modbus em série.

A outra característica definidora do RS-485 é a imunidade aprimorada a ruídos. O RS-485 não utiliza o comum elétrico como referência para seu sinal elétrico. Em vez disso, o RS-485 usa um par de fios e aciona um sinal definindo um potencial de tensão no par. Ao fazer isso, qualquer ruído elétrico ambiental afeta ambos os fios igualmente e o potencial entre os dois fios não muda.

Ethernet

As comunicações Modbus sobre Ethernet são conhecidas como Modbus TCP. O Modbus deu um grande passo à frente quando começou a usar a Ethernet como protocolo de transporte. Agora, com o aumento da velocidade da Ethernet, há muito mais largura de banda para enviar muito mais mensagens. Você pode conectar milhares de dispositivos em uma rede Modbus TCP, não apenas os 32 dispositivos como no RS-485, e também pode suportar vários Clientes, não apenas um único Cliente.

 

Certificações Modbus

A maioria das organizações comerciais especifica um teste de protocolo que deve ser executado com êxito para obter uma declaração de certificação ou logotipo que um fornecedor de dispositivo possa usar para indicar que o dispositivo está em conformidade com a especificação da tecnologia. Por muitos anos, não houve teste de conformidade para produtos Modbus. Um desenvolvedor criaria algo, testaria de alguma forma e o enviaria. Foi deixado para o usuário descobrir o que funcionou e o que não funcionou.

A Organização Modbus acabou resolvendo esse problema. Eles não apenas estabeleceram um procedimento de teste, mas também contrataram a Universidade de Michigan para implementá-lo. Existem agora duas opções para certificação do seu servidor Modbus Dispositivo do servidor Modbus TCP.

  1. Você pode se autocertificar. Isso significa que você baixa o teste e o executa sozinho. Você garante que seus produtos atendem à funcionalidade mínima de um dispositivo Modbus conforme especificado pelo teste.
  2. Você pode comprar testes da Organização Modbus. O laboratório de testes da Universidade de Michigan realizará o teste para você e validará seu dispositivo. Isso, é claro, vai custar algum dinheiro e algum tempo. Mas você recebe um segundo par de olhos e testes de terceiros.

Outra coisa a observar sobre o teste do Modbus é que apenas seu dispositivo Escravo ou Servidor pode ser testado. Não há teste para dispositivos cliente. O raciocínio por trás disso é que é muito mais difícil validar a operação do lado do cliente. Além disso, agora apenas os dispositivos do servidor Modbus TCP podem ser testados. O teste de Conformidade Modbus é projetado para dispositivos Modbus TCP Ethernet, não para dispositivos seriais Modbus.

logotipo Modbus-IDA

 

Segurança Modbus

Se você é novo em Modbus ou em segurança, já sabe tudo o que há para saber sobre segurança Modbus: nada. Não há segurança em Modbus, Modbus RTU ou Modbus TCP. Não existe.

Muitas pessoas pensam que só porque têm seu controlador Modbus atrás de um firewall, elas estão protegidas. É verdade que o controlador não está na Internet, mas isso não significa que esteja protegido. Mover-se para trás do firewall apenas move sua vulnerabilidade para um nível acima. Agora, qualquer servidor que esteja do outro lado do firewall autorizado a acessar aquele controlador está vulnerável.

O Modbus não foi construído para segurança. Ele não tem senhas, nem autorizações, nem facilidade para passar certificados ou qualquer outra coisa que seria necessária se você o construísse hoje. Curiosamente, o protocolo Modbus RTU está sendo usado continuamente devido a questões de segurança.

 

A diferença entre Modbus RTU e Modbus TCP

A diferença mais básica entre o Modbus RTU e o Modbus TCP (também conhecido como Modbus IP ou Modbus TCP/IP) é que o Modbus TCP é executado em uma camada física Ethernet e o Modbus RTU é um protocolo de nível serial. O Modbus TCP também usa um cabeçalho de 6 bytes para permitir o roteamento e remover o CRC.

Um cliente Modbus RTU é um barramento de cliente único. Ele envia uma mensagem para um dispositivo servidor RTU e obtém uma resposta. O Modbus RTU é limitado a um único cliente. Apenas um conjunto de sinais pode estar no link RS-485 por vez. O único cliente RTU está transmitindo ou um dos dispositivos cliente RTU está transmitindo.

Com a introdução do Modbus TCP, esse limite foi removido. Com o Modbus TCP, os controladores podem usar a largura de banda na Ethernet com muito mais eficiência para serem clientes de centenas de dispositivos Modbus TCP. Onde o RS-485 tinha uma limitação elétrica de 32 dispositivos, a Ethernet é ilimitada. RAM operacional é a única limitação prática. Com o Modbus TCP, um projetista de rede pode usar vários clientes, se assim o desejar. O Modbus TCP permite vários clientes.

Com o Modbus TCP, você precisa envolver switches de rede. Com o Modbus RTU (serial), você pode encadear todos os dispositivos juntos. Dispositivos com processadores antigos de 8 bits e um pouquinho de memória podem facilmente implementar Modbus serial, mas você precisará de uma plataforma mais cara para implementar Ethernet.

 

A diferença entre Modbus RTU e Modbus ASCII

Existem dois modos básicos de transmissão encontrados em conexões Modbus seriais, ASCII e RTU. Esses modos de transmissão determinam a forma como as mensagens Modbus são codificadas. No formato ASCII, as mensagens são legíveis, enquanto no RTU as mensagens estão em codificação binária e não podem ser lidas durante o monitoramento. A desvantagem é que as mensagens RTU são menores, permitindo mais troca de dados no mesmo intervalo de tempo. Deve-se estar ciente de que todos os nós dentro de uma rede Modbus devem ser do mesmo modo de transmissão, o que significa que o Modbus ASCII não pode se comunicar com o Modbus RTU e vice-versa.

No Modbus ASCII, as mensagens são codificadas com valor hexadecimal, representadas com caracteres ASCII abrangentes. Os caracteres usados ​​para esta codificação são 0…9 e A…F. Para cada byte de informação, dois bytes de comunicação são usados ​​porque cada byte de comunicação só pode definir 4 bits no sistema hexadecimal. O Modbus RTU, no entanto, troca dados em um formato binário onde cada byte de dados é codificado em um byte de comunicação.

As mensagens Modbus em uma conexão serial não são transmitidas em formato simples. Eles são construídos de forma a permitir aos receptores uma maneira fácil de detectar o início e o fim de uma mensagem. Os caracteres iniciam e terminam um quadro no modo ASCII. Para sinalizar o início de uma mensagem, dois pontos ‘:’ são usados ​​e cada mensagem é finalizada com uma combinação de Retorno de carro/Avanço de linha.

O Modbus RTU usa um método diferente. Na RTU, o enquadramento é construído medindo os intervalos de silêncio na linha de comunicação. Antes de cada mensagem, deve haver um espaço mínimo de 3,5 caracteres. Para se preparar para novas mensagens, o receptor limpa o buffer quando uma lacuna de 1,5 caracteres é detectada. Uma das principais diferenças entre o Modbus ASCII e o Modbus RTU é que o ASCII permite intervalos entre os bytes de uma mensagem com duração máxima de 1 segundo. Com o Modbus RTU, fluxos contínuos de mensagens devem ser enviados.

 

Modbus Ethernet ou Modbus sobre Ethernet

Embora o Modbus TCP/IP seja uma especificação técnica totalmente formada para a ampla adoção do Modbus, o padrão de certificação vago e os primeiros a adotar a Ethernet levaram a várias implementações não padronizadas que ainda estão presentes no mercado. Se você vir Modbus Ethernet ou Modbus over Ethernet listado em um produto, pode ser necessária alguma verificação adicional. Ainda existem vários produtos que apresentam pacotes Modbus RTU padrão encapsulados dentro de um pacote TCP/IP. Esses dispositivos não funcionarão em implementações típicas de Modbus TCP/IP.