PROTOCOLO DE COMUNICAÇÃO MODBUS


Wikipédia? Informa!

Modbus ou MODBUS é um protocolo de comunicação de dados cliente/servidor na camada de aplicação do modelo OSI. [1] Foi originalmente publicado pela Modicon (agora Schneider Electric ) em 1979 para uso com seus controladores lógicos programáveis ​​(CLPs). [2] O Modbus tornou-se um protocolo de comunicação padrão de fato para comunicação entre dispositivos eletrônicos industriais em uma ampla variedade de barramentos e redes. [3] [1]

O Modbus é popular em ambientes industriais porque é publicado abertamente e isento de royalties . Ele foi desenvolvido para aplicações industriais, é relativamente fácil de implantar e manter em comparação com outros padrões e impõe poucas restrições ao formato dos dados a serem transmitidos.

O protocolo Modbus usa linhas de comunicação serial , Ethernet ou o conjunto de protocolos da Internet como camada de transporte. [1] O Modbus suporta comunicação de e para vários dispositivos conectados ao mesmo cabo ou rede Ethernet. Por exemplo, pode haver um dispositivo que mede temperatura e outro dispositivo para medir umidade conectados ao mesmo cabo, ambos comunicando as medições ao mesmo computador , via Modbus.

Modbus é frequentemente usado para conectar um computador de supervisão de planta/sistema com uma unidade terminal remota (RTU) em sistemas de controle de supervisão e aquisição de dados ( SCADA ). Muitos dos tipos de dados são nomeados a partir do controle industrial de dispositivos de fábrica, como a lógica ladder , devido ao seu uso no acionamento de relés: uma saída física de bit único é chamada de bobina , e uma entrada física de bit único é chamada de entrada discreta ou um contato .

O desenvolvimento e atualização dos protocolos Modbus são gerenciados pela Organização Modbus [4] desde abril de 2004, quando a Schneider Electric transferiu os direitos para aquela organização. [5] A Organização Modbus é uma associação de usuários e fornecedores de dispositivos compatíveis com Modbus que defende o uso contínuo da tecnologia. [6] Modbus Organization, Inc. é uma associação comercial para a promoção e desenvolvimento do protocolo Modbus. [4]

Descrição do protocolo 

Pilha de comunicação MODBUS
Pilha de comunicação MODBUS

Os padrões de comunicação ou barramentos implantados para comunicação Modbus são: [1]

  • TCP/IP sobre Ethernet
  • Comunicação serial assíncrona em uma ampla gama de padrões, tecnologias: EIA/TIA-232-E, EIA-422, EIA/TIA-485-A, fibra, radiofrequência,...
  • MODBUS PLUS, uma rede de passagem de tokens de alta velocidade.
Arquitetura de uma rede para comunicação Modbus

Para suportar a comunicação Modbus em uma rede, muitos modems e gateways são projetados de forma proprietária (Referência à imagem: Arquitetura de uma rede para comunicação Modbus ). Diferentes implementações utilizam comunicação com ou sem fio, como na banda de rádio ISM , e até mesmo Serviço de Mensagens Curtas (SMS) ou Serviço Geral de Rádio de Pacotes (GPRS).

PDU e ADU 

Modbus define cliente que é uma entidade que inicia uma transação para solicitar qualquer tarefa específica de seu “receptor de solicitação”. [7] O "receptor de solicitação" do cliente, com o qual o cliente iniciou a transação, é então chamado de server . [7] Por exemplo, quando um MCU se conecta a um sensor para ler seus dados por Modbus em uma rede cabeada, por exemplo, barramento RS485, o MCU neste contexto é o cliente e o sensor é o servidor.

O Modbus define uma unidade de dados de protocolo ( PDU ) independentemente de seus protocolos de camada inferior em sua pilha de protocolos. O mapeamento do protocolo MODBUS em barramentos ou redes específicas requer alguns campos adicionais, que são definidos como unidade de dados de aplicação ( ADU ). ADU é formada por um cliente dentro de uma rede Modbus quando o cliente inicia uma transação. Os conteúdos são: [8]

  • PDU = Código de função + dados
  • ADU = Endereço adicional + PDU + verificação de erros

ADU é oficialmente chamado de quadro Modbus pela Organização Modbus, [8] embora o quadro seja usado como unidade de dados na camada de enlace de dados no modelo OSI e TCP/IP (enquanto Modbus é um protocolo da camada de aplicação).

O tamanho máximo da PDU é 253 bytes. O tamanho máximo do ADU na rede RS232/RS485 é de 256 bytes e com TCP é de 260 bytes. [9]

Para codificação de dados, o Modbus usa uma representação big-endian para endereços e campos de dados. Assim, para um valor de 16 bits, o byte mais significativo é enviado primeiro. Por exemplo, quando um registrador de 16 bits tem valor 0x1234, o byte 0x12 é enviado antes do byte 0x34. [9]

O código da função tem 1 byte que fornece o código da função a ser executada. Os códigos de função são valores inteiros, variando de 1 a 255, e o intervalo de 128 a 255 é para respostas de exceção.

campo de dados da PDU possui o endereço de 0 a 65535 (não confundir com o endereço do campo Endereço adicional da ADU). [10] O campo de dados da PDU pode estar vazio, e então ter tamanho 0. Neste caso, o servidor não solicitará nenhuma informação e o código da função define a função a ser executada. Se não houver erro durante o processo de execução, o campo de dados da resposta do ADU do servidor para o cliente incluirá os dados solicitados, ou seja, os dados que o cliente recebeu anteriormente. Se houver algum erro, o servidor responderá com um código de exceção. [7]

Transação Modbus e PDU 

Uma transação Modbus entre cliente e servidor inclui: [7] [11]

  • Etapa 1 : o cliente inicia uma solicitação com PDU = código de função + solicitação de dados
  • Etapa 2 : O servidor recebe a solicitação do cliente. O servidor irá então ler/analisar o código de função, obter o endereço do campo de dados da PDU, obter o valor desse campo de dados e finalmente executar a ação com base no código de função. Se não houver erro durante essas etapas, o servidor responderá PDU = Código de função + resposta de dados. Como não há erro durante essas etapas, o código de função respondido pelo servidor também será o código de função enviado pelo cliente. Se houver algum erro durante essas etapas, o servidor responderá PDU = Código da função de exceção + Código de exceção (referência ao PDU mb_excep_rsp_pdu definido abaixo).
  • Passo 3 : O cliente recebe a resposta e finaliza a transação.

Com base nisso, o Modbus define 3 tipos de PDU: [9]

  • PDU de solicitação MODBUS, mb_req_pdu
  • PDU de resposta MODBUS, mb_rsp_pdu
  • PDU de resposta de exceção MODBUS, mb_excep_rsp_pdu

mb_req_pdu = Código da função (1 byte) + dados da solicitação (n byte)

o tamanho do campo de dados da solicitação depende do código da função e geralmente inclui valores como valor da variável, deslocamento de dados, códigos de subfunção,...

mb_rsp_pdu = Código da função (1 byte) + dados de resposta (n byte)

Assim como em mb_req_pdu, o tamanho do campo de dados de resposta depende do código da função e geralmente inclui valores como valor da variável, deslocamento de dados, códigos de subfunções,...

mb_excep_rsp_pdu = Código da função de exceção (1 byte) + dados da solicitação (n byte)

Código de função de exceção = código de função (1 byte) + 0x80

O código de função de exceção terá então o bit MSB igual a 1 e seu bit esquerdo será igual ao código de função.

O código de exceção (1 byte) de mb_excep_rsp_pdu é definido na tabela " Códigos de exceção MODBUS ".

Modelo de dados Modbus 

Modbus define seu modelo de dados baseado em uma série de tabelas com quatro tabelas primárias: [12]

Tabelas primáriasAcessoTamanhoCaracterísticas
Bobina (saída discreta) [13]Ler escrever1 bitValor ativado/desativado de leitura/gravação
Entrada discretaSomente leitura1 bitValor ligado/desligado de leitura
Registro de entradaSomente leitura16 bits (0–65.535)Leia medições e status
Registro de retençãoLer escrever16 bits (0–65.535)Valores de configuração de leitura/gravação

Código de função 

O Modbus define três tipos de códigos de função: Público, Definido pelo Usuário e Reservado. [14]

Códigos de função pública 

Tipo de funçãoNome da funçãoCódigo de funçãoComente
Acesso de dadosAcesso a bitsEntradas físicas discretasLer entradas discretas2
Bits internos ou bobinas físicasLer bobinas1
Escreva bobina única5
Escreva várias bobinas15
Acesso de 16 bitsRegistros de entrada físicaLer registros de entrada4
Registros Internos ou Registros de Saída FísicaLeia vários registros de retenção3
Gravar registro de retenção único6
Escreva vários registros de retenção16
Ler/escrever vários registros23
Registro de gravação de máscara22
Ler fila FIFO24
Acesso ao registro de arquivoLer registro de arquivo20
Gravar registro de arquivo21
DiagnósticoLer status de exceção7apenas serial
Diagnóstico8apenas serial
Obtenha o contador de eventos Com11apenas serial
Obtenha o registro de eventos Com12apenas serial
ID do servidor de relatório17apenas serial
Leia a identificação do dispositivo43
OutroTransporte de interface encapsulada43

Nota : Algumas fontes utilizam terminologia diferente do padrão; por exemplo Force Single Coil em vez de Write Single Coil . [15]

Código de função 01 (ler bobinas) como exemplo de código de função pública editar ]

O código de função 01 (ler bobinas) permite ler o estado de 1 a 2.000 bobinas de um dispositivo remoto. mb_req_pdu (request PDU) terá então 2 bytes para indicar o endereço da primeira bobina a ler (de 0x0000 a 0xFFFF), e 2 bytes para indicar o número de bobinas a ler. mb_req_pdu define o endereço da bobina pelo índice 0, ou seja, a 1ª bobina (a primeira bobina) tem endereço 0x0. mb_rsp_pdu (PDU de resposta) - se a leitura for bem-sucedida - possui 1 byte para indicar o número de bytes que é o número de bobinas que mb_req_pdu exigiu, e os bytes esquerdos armazenam o status (valor ligado/desligado) dessas bobinas solicitadas. [16] Especificamente, mb_rsp_pdu e mb_rsp_pdu do código de função 01 é: [16]

mb_req_pdu :

  • Código de função: 0x01 (1 byte)
  • Endereço inicial (endereço da primeira bobina a ser lida): De 0x0000 a 0xFFFF (2 bytes)
  • Quantidade de bobinas a serem lidas: Faixa de 1 a 2.000 (0x7D0) (2 bytes)

mb_rsp_pdu

  • Código de função: 0x01 (1 byte)
  • Contagem de bytes: 1 byte
  • Status da bobina: n byte

Por exemplo, mb_req_pdu e mb_rsp_pdu para ler o status das bobinas de 20 a 38 serão: [17]

mb_req_pdu :

  • Código de função: 0x01
  • Byte alto do endereço inicial: 0x00
  • Endereço inicial Byte baixo: 0x13
  • Quantidade de saídas byte alto: 0x00
  • Quantidade de saídas Byte baixo: 0x13

O endereço inicial (2 bytes) é 0x0013 (ou 19 em decimal), que é a 20ª bobina.

A quantidade de saídas (2 bytes) é 0x0013, (ou 19 em decimal) o que corresponde a 19 valores de status das bobinas 20 a 38.

mb_rsp_pdu :

  • Código de função: 0x01
  • Contagem de bytes: 0x03
  • Status de saída 27-20: 0xCD
  • Status de saída 35-28: 0x6B
  • Status de saída 38-36: 0x05

Como são necessárias 19 bobinas (20-38), são usados ​​3 bytes para indicar o estado da bobina. Portanto, essa contagem de bytes é 0x03. Os estados da bobina de 20 a 27 são 0xCD, que é 1100 1101 em binário. Portanto, a bobina 27 é MSb e a bobina 20 é LSb. O mesmo para a bobina 28 a 35. Com a bobina 36 a 38, o estado será 0x05, que é 0000 0101. O estado da bobina 38 é o terceiro bit (contagem a partir da direita), ou seja, 1, a bobina 37 é 0 e a bobina 36 o estado é o bit LSb, ou seja, 1. 5 bits à esquerda são todos 0.

Códigos de função definidos pelo usuário 

Códigos de função definidos pelo usuário são códigos de função definidos pelos usuários. O Modbus fornece dois intervalos de valores para códigos de função definidos pelo usuário: 65 a 72 e 100 a 110. Obviamente, os códigos de função definidos pelo usuário não são exclusivos. [14]

Códigos de função reservados 

Códigos de função reservados são códigos de função usados ​​por algumas empresas para produtos legados e não estão disponíveis para uso público. [14]

Respostas de exceção 

Quando um cliente envia uma solicitação a um servidor, pode haver quatro eventos possíveis para essa solicitação: [18]

  • Se o servidor receber a solicitação e executar com sucesso, o servidor retornará uma resposta normal.
  • Se o servidor não puder receber a solicitação devido a um erro no canal de comunicação, o servidor não responderá nada ao cliente. O cliente terá então o erro de solicitação de tempo limite.
  • Se o servidor receber a solicitação e detectar um erro no canal de comunicação (por exemplo, paridade, LRC, CRC), o servidor não responderá nada ao cliente. O cliente terá então o erro de solicitação de tempo limite.
  • Se o servidor receber a solicitação e não conseguir executá-la (por exemplo, o cliente solicita a leitura de um registro inexistente), o servidor retornará uma resposta de exceção ao cliente para indicar a natureza do erro.

A mensagem de resposta de exceção inclui dois outros campos quando comparada a uma mensagem de resposta normal: [18]

  • Código de função: O bit MSB de exceção do código de função é 1. Isso tornará este código de função 0x80 maior do que o código de função da mensagem de solicitação.
  • Dados: o servidor retorna o código de exceção dentro do campo Dados. Este campo define a natureza do erro.

Todos os códigos de exceção Modbus: [19]

CódigoTextoDetalhes
1Função ilegalO código da função recebido na consulta não é reconhecido ou permitido pelo servidor
2Endereço de dados ilegaisO endereço de dados de algumas ou de todas as entidades necessárias não são permitidos ou não existem no servidor
3Valor de dados ilegaisValor não é aceito pelo servidor
4Falha no dispositivo do servidorOcorreu um erro irrecuperável enquanto o servidor tentava executar a ação solicitada
5ReconhecerO servidor aceitou a solicitação e a está processando, mas é necessário um longo período de tempo. Esta resposta é retornada para evitar que ocorra um erro de tempo limite no cliente. o cliente pode em seguida emitir uma mensagem Poll Program Complete para determinar se o processamento foi concluído
6Dispositivo de servidor ocupadoO servidor está processando um comando de longa duração; o cliente deve tentar novamente mais tarde
7Reconhecimento NegativoO servidor não consegue executar as funções de programação; o cliente deve solicitar informações de diagnóstico ou erro do servidor
8Erro de paridade de memóriaO servidor detectou um erro de paridade na memória; o cliente pode tentar novamente a solicitação
10Caminho do gateway indisponívelEspecializado para gateways Modbus: indica um gateway mal configurado
11O dispositivo de destino do gateway não respondeuEspecializado para gateways Modbus: enviado quando o servidor não responde

Protocolo Modbus sobre linha serial 

O padrão Modbus também define Modbus over Serial Line , um protocolo sobre a camada de enlace de dados do modelo OSI para que o protocolo da camada de aplicação Modbus seja comunicado através de um barramento serial . [20] O protocolo Modbus Serial Line é um protocolo mestre-escravo que suporta um mestre e vários escravos no barramento serial. [21] Com o protocolo Modbus na camada de aplicação, o modelo cliente/servidor é utilizado para os dispositivos no canal de comunicação. Com Modbus sobre linha serial, a função do cliente é implementada pelo mestre e a função do servidor é implementada pelo escravo . [21] [22]

A convenção de nomenclatura da organização inverte o uso comum de ter vários clientes e apenas um servidor. Para evitar esta confusão, a camada de transporte RS-485 utiliza os termos “nó” ou “dispositivo” em vez de “servidor”, e o “cliente” não é um “nó”. [22]

A (Organização Modbus) está usando "cliente-servidor" para descrever as comunicações Modbus, caracterizadas pela comunicação entre [dispositivo(s) cliente(s), que inicia a comunicação e faz solicitações de dispositivo(s) servidor(es), que processam as solicitações e retornam uma resposta apropriada ( ou mensagem de erro).

Um barramento serial para Modbus através de linha serial pode ter no máximo 247 escravos comunicando-se com 1 mestre . Esses escravos possuem um endereço único que varia de 1 a 247 (valor decimal). [23] O mestre não precisa ter endereço. [23] O processo de comunicação é iniciado pelo mestre, pois somente ele pode iniciar uma transação Modbus. Um escravo nunca transmitirá quaisquer dados ou executará qualquer ação sem uma solicitação do mestre, e os escravos não podem se comunicar entre si. [24]

No Modbus sobre linha serial , o mestre inicia solicitações aos escravos nos modos unicast ou broadcast . No modo unicast , o mestre iniciará uma solicitação a um único escravo com um endereço específico. Ao receber e finalizar a solicitação, o escravo responderá com uma mensagem ao mestre. [23] Neste modo, uma transação Modbus inclui duas mensagens: uma solicitação do mestre e uma resposta do escravo. Cada escravo deve possuir um endereço único (de 1 a 247) para ser endereçado de forma independente para a comunicação. [23] No modo broadcast , o mestre pode enviar uma solicitação a todos os escravos, usando o endereço de broadcast 0 , [23] que é o endereço reservado para trocas de broadcast (e não o endereço do mestre). Os escravos devem aceitar trocas de transmissão, mas não devem responder. [24] O mapeamento da PDU do Modbus para o barramento serial do protocolo Modbus sobre linha serial resulta na PDU da linha serial Modbus. [23]

Linha serial Modbus PDU = Endereço + PDU + CRC (ou LRC)

Com PDU = código de função + dados

  • Endereço é endereço escravo
  • PDU é definido de forma idêntica ao PDU do protocolo Modbus Application
  • Campo de verificação de erros com CRC/LRC: Os métodos de verificação de erros dependem das versões do protocolo MODBUS via linha serial, seja Modbus RTU ou Modbus ASCII .

Na camada Física , o MODBUS sobre Linha Serial realiza sua comunicação em bit por RS485 ou RS232 , sendo a interface TIA/EIA-485 Two-Wire a forma mais popular. A interface RS485 de quatro fios também é usada. TIA/EIA-232-E (RS232) também pode ser usado, mas está limitado à comunicação ponto a ponto de curto alcance. [21] MODBUS over Serial Line possui dois modos de transmissão RTU e ASCII que correspondem a duas versões do protocolo, conhecidas como Modbus RTU e Modbus ASCII . [25]

Modbus RTU 

Modbus RTU ( Remote Terminal Unit ), que é a implementação mais comum disponível para Modbus, faz uso de uma representação binária compacta dos dados para comunicação de protocolo. O formato RTU segue os comandos/dados com uma soma de verificação de redundância cíclica como um mecanismo de verificação de erros para garantir a confiabilidade dos dados. Uma mensagem Modbus RTU deve ser transmitida continuamente sem hesitações entre caracteres. As mensagens Modbus são enquadradas (separadas) por períodos ociosos (silenciosos). Cada dado/mensagem de 1 byte (8 bits) do Modbus RTU precisa ter mais 3 bits para formar o total de 11 bits: [3] [25]

  • 1 bit inicial
  • Dados/mensagem de 8 bits, o bit LSB é enviado primeiro
  • Paridade de 1 bit
  • 1 ponto de parada

Um quadro Modbus RTU será então: [26]

Endereço escravoCódigo de FunçãoDadosCDC
1 byte1 byte0 - 252 bytes2 bytes: 1 byte CRC baixo e 1 byte CRC alto

O cálculo CRC é amplamente conhecido como CRC-16-MODBUS cujo polinômio é 16 + 15 + 2 + 1 (sendo polinômio algébrico hexadecimal normal 8005e invertido A001). [27]

Exemplo de quadro Modbus RTU em hexadecimal : 01 04 02 FF FF B8 80(cálculo CRC-16-MODBUS para os 5 bytes de 01até FFdá 80B8, que é transmitido primeiro o byte menos significativo).

Para garantir a integridade do quadro Modbus durante a transmissão, o intervalo de tempo entre dois quadros deve ser pelo menos igual ao tempo de transmissão de 3,5 caracteres, e o intervalo de tempo entre dois caracteres consecutivos não deve ser superior ao tempo de transmissão de 1,5 caracteres. [26]

Por exemplo, com a taxa de transmissão padrão de 19.200 bps, o tempo de transmissão de 3,5 (t3,5) e 1,5 (t1,5) caracteres é (observe que cada caractere de 8 bits requer 3 bits de enquadramento extras para ser transmitido):

Para taxas de transmissão maiores, o Modbus RTU recomenda usar os valores fixos 750µs para t1.5 e 1.750ms para t3.5. [26]

Modbus ASCII 

O Modbus ASCII utiliza caracteres ASCII para comunicação de protocolo. O formato ASCII usa uma soma de verificação de redundância longitudinal . As mensagens Modbus ASCII são enquadradas por dois pontos iniciais (":") e uma nova linha final (CR/LF).

Um quadro Modbus ASCII inclui: [28]

NomeComprimento (bytes)Função
Começar1Dois pontos :( valor ASCII 3A 16 )
Endereço2Endereço da estação
Função2Indica o código de função, por exemplo, "ler bobinas"
Dadosn × 2Dados + comprimento serão preenchidos dependendo do tipo de mensagem
LRC2Soma de verificação ( verificação de redundância longitudinal )
Fim2Par retorno de carro + alimentação de linha (CR/LF) (valores ASCII 0D 16 e 0A 16 )

Endereço, Função, Dados e LRC são valores codificados hexadecimais ASCII, em que valores de 8 bits (0–255) são codificados como dois caracteres ASCII legíveis por humanos nos intervalos 0–9 e A–F. Por exemplo, um valor de 122 (7A 16 ) é codificado como dois caracteres ASCII, "7" e "A", e transmitido como dois bytes, 55(37 16 , valor ASCII para "7") e 65(41 16 , valor ASCII para").

LRC é calculado como a soma de valores de 8 bits (excluindo os caracteres iniciais e finais), negado ( complemento de dois ) e codificado como um valor de 8 bits. Por exemplo, se Endereço, Função e Dados forem 247, 3, 19, 137, 0 e 10, o complemento de dois de sua soma (416) é −416; isso cortado para 8 bits é 96 (256 × 2 − 416 = 60 16 ), fornecendo o seguinte quadro de 17 caracteres ASCII: :F7031389000A60␍␊LRC é especificado para uso apenas como uma soma de verificação: como é calculado nos dados codificados e não nos caracteres transmitidos, sua característica 'longitudinal' não está disponível para uso com bits de paridade para localizar erros de bit único.

Mensagens Modbus em TCP/IP 

Modbus TCP 

Modbus TCP ou Modbus TCP/IP é uma variante do Modbus usada para comunicações em redes TCP/IP , conectando-se pela porta 502 . [29] Não requer cálculo de checksum, pois as camadas inferiores já fornecem proteção de checksum.

A nomenclatura Modbus TCP é a mesma do protocolo Modbus sobre linha serial, pois qualquer dispositivo que envia um comando Modbus é o 'cliente' e a resposta vem de um 'servidor'. [30]

ADU para Modbus TCP é oficialmente chamado de MODBUS TCP/IP ADU (ou Modbus TCP/IP ADU) pela organização Modbus [31] e também é chamado de quadro Modbus TCP por outras partes. [3]

MODBUS TCP/IP ADU = Cabeçalho MBAP + Código de função + Dados

Onde MBAP - que significa cabeçalho do protocolo de aplicação MODBUS - é o cabeçalho dedicado usado no TCP/IP para identificar a unidade de dados de aplicação MODBUS.

cabeçalho do MBAP contém os seguintes campos: [32]

NomeComprimento (bytes)Função
Identificador de transação2Para sincronização entre mensagens de servidor e cliente
Identificador de protocolo20 para Modbus/TCP
Campo de comprimento2Número de bytes restantes neste quadro
Identificador da unidade1Endereço do servidor (255 se não for usado), tratado como endereço escravo no Modbus pela linha serial

O identificador de unidade é usado com dispositivos Modbus TCP que são compostos de vários dispositivos Modbus, por exemplo, Modbus TCP para gateways Modbus RTU. Nesse caso, o identificador da unidade é o endereço do servidor do dispositivo atrás do gateway.

Um formato de quadro MODBUS TCP/IP ADU/Modbus TCP será: [32] [31]

Identificador de transaçãoIdentificador de protocoloComprimentoIdentificador da unidadeCódigo de funçãoDados
2 bytes2 bytes2 bytes1 byte1 byten bytes

Exemplo de quadro Modbus TCP/IP ADU/Modbus TCP em hexadecimal :

12 34 00 00 00 06 01 03 00 01 00 01

  • 0x120x34 : Com o ID da transação = 0x1234 (2 bytes) como um "número único" a ser identificado entre o cliente/servidor Modbus TCP, o byte alto do ID da transação é 0x12 e o byte baixo do ID da transação é 0x34
  • 0x000x00 : Identificador de protocolo byte alto e byte baixo
  • 0x000x06 : Comprimento do byte alto e do byte baixo. O comprimento é de 6 bytes que inclui: identificador da unidade (endereço escravo) (1 byte), código de função (1 byte), byte alto do endereço do registrador a ser lido (1 byte), byte inferior do endereço do registrador a ser lido (1 byte ) e dados (2 bytes = byte alto e byte baixo do número de registros a serem lidos)
  • 0x01 : Identificador da unidade (endereço do escravo)
  • 0x03 : Código de função (leitura de vários registros retidos)
  • 0x000x01 : byte alto e byte baixo do endereço do registrador a ser lido. O endereço do registrador a ser lido neste caso é 0x0001.
  • 0x000x01 : byte alto e byte baixo do número de registros a serem lidos. O número de registros a serem lidos neste caso é 0x0001(ou seja, 1 registro)

Outras versões do protocolo Modbus sobre TCP/IP 

  • Modbus sobre TCP/IP , Modbus sobre TCP ou Modbus RTU/IP – uma variante que difere do Modbus TCP porque uma soma de verificação é incluída na carga útil, como acontece com o Modbus RTU.
  • Modbus sobre UDP – alguns experimentaram usar Modbus sobre UDP em redes IP, o que elimina a sobrecarga do TCP. [33]

Outras versões do protocolo Modbus 

Além dos amplamente utilizados Modbus RTU, Modbus ASCII e Modbus TCP, existem muitas variantes de protocolos Modbus:

  • Modbus Plus ( Modbus+ , MB+ ou MBP ) – Modbus Plus é propriedade da Schneider Electric , embora seja inédito em vez de patenteado e, ao contrário de outras variantes, suporta comunicações ponto a ponto entre vários clientes. [34] Apesar do nome, Modbus Plus [35] não é uma variante do Modbus. É um protocolo diferente , envolvendo passagem de token . Requer um coprocessador dedicado para lidar com a rotação rápida de tokens do tipo HDLC . Ele usa par trançado a 1 Mbit/s e inclui isolamento de transformador em cada nó, o que o torna acionado por transição/borda em vez de acionado por tensão/nível. É necessário hardware especial para conectar o Modbus Plus a um computador, normalmente uma placa feita para o barramento ISA , PCI ou PCMCIA . O Modbus Plus normalmente é implementado usando um chipset personalizado disponível apenas para parceiros da Schneider.
  • Pemex Modbus – uma extensão do Modbus padrão com suporte para dados históricos e de fluxo. Ele foi projetado para a empresa de petróleo e gás Pemex para uso no controle de processos e nunca foi amplamente adotado.
  • Enron Modbus – outra extensão do Modbus padrão desenvolvido pela Enron com suporte para variáveis ​​inteiras e de ponto flutuante de 32 bits e dados históricos e de fluxo. Os tipos de dados são mapeados usando endereços padrão. [36] Os dados históricos servem para atender a um padrão da indústria do American Petroleum Institute (API) sobre como os dados devem ser armazenados. carece de fontes ]

Os modelos de dados e as chamadas de função são idênticos para as primeiras quatro variantes listadas acima; apenas o encapsulamento é diferente. No entanto, as variantes não são interoperáveis, nem os formatos de quadro.

Mapeamento JBUS 

Outro protocolo de fato intimamente relacionado ao Modbus apareceu mais tarde e foi definido pela fabricante de PLC April Automates, resultado de um esforço colaborativo entre as empresas francesas Renault Automation e Merlin Gerin et Cie em 1985: JBUS . As diferenças entre Modbus e JBUS naquela época (número de entidades, estações de servidor) são agora irrelevantes, pois este protocolo quase desapareceu com a série April PLC, que a AEG Schneider Automation comprou em 1994 e depois tornou obsoleta. No entanto, o nome JBUS sobreviveu até certo ponto.

JBUS suporta os códigos de função 1, 2, 3, 4, 5, 6, 15 e 16 e, portanto, todas as entidades descritas acima, embora a numeração seja diferente:

  • Número e endereço coincidem: a entidade # x possui o endereço x no quadro de dados.
  • Consequentemente, o número da entidade não inclui o tipo de entidade. Por exemplo, manter o registro nº 40010 no Modbus será manter o registro nº 9, no endereço 9 no JBUS.
  • O número 0 (e, portanto, o endereço 0) não é suportado. O servidor não deve implementar nenhum dado real neste número e endereço e pode retornar um valor nulo ou gerar um erro quando solicitado.

Limitações 

  • Como o Modbus foi projetado no final da década de 1970 para se comunicar com controladores lógicos programáveis, o número de tipos de dados é limitado àqueles compreendidos pelos CLPs da época. Objetos binários grandes não são suportados.
  • Não existe uma maneira padrão para um nó encontrar a descrição de um objeto de dados, por exemplo, para saber que um valor de registro representa uma temperatura entre 30 e 175 graus.
  • Como o Modbus é um protocolo cliente/servidor (anteriormente mestre/escravo), [22] não há como um dispositivo de campo obter dados pelo mecanismo manipulador de eventos (exceto via Ethernet TCP/IP, chamado open-mbus) como cliente. O nó deve pesquisar rotineiramente cada dispositivo de campo e procurar alterações nos dados. Isso consome largura de banda e tempo de rede em aplicações onde a largura de banda pode ser cara, como em um link de rádio com baixa taxa de bits.
  • O Modbus está restrito a endereçar 247 dispositivos em um link de dados, o que limita o número de dispositivos de campo que podem ser conectados a uma estação pai (novamente, Ethernet TCP/IP é uma exceção).
  • O próprio protocolo Modbus não oferece segurança contra comandos não autorizados ou interceptação de dados. [37]

Referências 

  1. ^Ir para:d Protocolo de aplicação MODBUS 2012, p. 2.
  2. ^ MODICON, Inc. 1996 , "Prefácio"
  3. ^Ir para:abc Drury , Bill (2009) . Manual de acionamentos e controles de técnicas de controle (PDF)(2ª ed.). Instituição de Engenharia e Tecnologiapáginas 508–.
  4. ^Ir para:b "Página inicial do Modbus"ModbusOrganização Modbus,Inc. Recuperado em 2 de agosto de 2013.
  5. "Perguntas frequentes sobre Modbus" . Modbus . Organização Modbus, Inc. Recuperado em 1 de novembro de 2012 .
  6. "Sobre a organização Modbus" . Modbus . Organização Modbus, Inc. Recuperado em 8 de novembro de 2012 .
  7. ^Ir para:d Protocolo de aplicação MODBUS 2012, p. 4, "4.1 Descrição do protocolo"
  8. ^Ir para:b Protocolo de aplicação MODBUS 2012, p. 3, "4.1 Descrição do protocolo"
  9. ^Ir para:c Protocolo de aplicação MODBUS 2012, p. 5, "4.1 Descrição do protocolo"
  10. ^ Protocolo de aplicação MODBUS 2012 , p. 7, "4.4 Modelo de endereçamento MODBUS"
  11. ^ Protocolo de aplicação MODBUS 2012 , p. 9, "Figura 9 Diagrama de estado de transação MODBUS"
  12. ^ Protocolo de aplicação MODBUS 2012 , p. 6, "4.3 Modelo de dados MODBUS"
  13. "Simulador Mestre Modpoll Modbus" . modbusdriver. com Recuperado em 13/10/2023 "-t 0" é para "Tipo de dados de saída discreta (bobina)"
  14. ^Ir para:c Protocolo de aplicação MODBUS 2012, p. 10, "5 categorias de códigos de função"
  15. ^ Clarke, Gordon; Reynders, Deon (2004). Protocolos Scada Modernos Práticos: Dnp3, 60870.5 e Sistemas Relacionados . Novos. págs. 47–51. ISBN 0-7506-5799-5.
  16. ^Ir para:b Protocolo de aplicação MODBUS 2012, p. 11
  17. ^ Protocolo de aplicação MODBUS 2012 , p. 12, "6.1 01 (0x01) Ler bobinas"
  18. ^Ir para:b Protocolo de aplicação MODBUS 2012, p. 47, "7 Respostas de Exceção MODBUS"
  19. ^ Protocolo de aplicação MODBUS 2012 , p. 48, "7 Respostas de Exceção MODBUS"
  20. ^ MODBUS sobre protocolo de linha serial 2006 , p. 4
  21. ^Ir para:c MODBUS sobre protocolo de linha serial 2006, p. 5
  22. ^Ir para:c "Organização Modbus substitui Mestre-Escravo por Cliente-Servidor (comunicado à imprensa)"(PDF)modbus.org9 de julho de 2020Recuperado em 11 de julho de 2023.
  23. ^Ir para:f MODBUS sobre protocolo de linha serial 2006, p. 8
  24. ^Ir para:b MODBUS sobre protocolo de linha serial 2006, p. 7
  25. ^Ir para:b MODBUS sobre protocolo de linha serial 2006, p. 12
  26. ^Ir para:c MODBUS sobre protocolo de linha serial 2006, p. 13, "2.5.1.1 Enquadramento RTU de Mensagem MODBUS"
  27. ^ MODBUS sobre protocolo de linha serial 2006 , p. 39
  28. ^ MODBUS sobre protocolo de linha serial 2006 , p. 17, "2.5.2.1 Enquadramento ASCII de mensagem MODBUS"
  29. ^ Mensagens MODBUS em TCP/IP 2006 , p. 6
  30. ^ Prat, Jérôme (13 de fevereiro de 2017). "Curso intensivo: Cliente/Servidor/Mestre/Escravo" . Tecnologia ProSoft Recuperado em 17/10/2022 .
  31. ^Ir para:b Mensagens MODBUS em TCP/IP 2006, p. 4, "3.1.2 MODBUS na unidade de dados de aplicação TCP/IP"
  32. ^Ir para:b Mensagens MODBUS em TCP/IP 2006, p. 5, "3.1.3 Descrição do cabeçalho do MBAP"
  33. "Biblioteca Java Modbus - Sobre" . 2010 Recuperado em 07/02/2017 .
  34. "Qual é a diferença entre Modbus e Modbus Plus?" Schneider Elétrica. 21 de agosto de 2004 Recuperado em 07/02/2017 .
  35. "Modbus Plus - Rede Modbus Plus - Visão geral dos produtos - Schneider Electric Estados Unidos" . Schneider-electric. com Recuperado em 03/01/2014 .
  36. "Simplesmente Modbus - Sobre o Enron Modbus" . Simplesmente Modbus Recuperado em 07/02/2017 .
  37. ^ Palmer; Shenoi, Sujeet, eds. (23–25 de março de 2009). Protecção de infra-estruturas críticas III . Terceira Conferência Internacional IFIP WG 11. 10. Hanover, New Hampshire: Springer. pág. 87. ISBN 978-3-642-04797-8.

Trabalhos citados 

Links externos 

Especificações

Outro


Wikipédia? Informa!