Pular para o conteúdo principal

Modbus Client

O MHO Keeper pode ser configurado como um Modbus Client, que realiza requisições de leitura ou escrita para um ou mais dispositivos do tipo Modbus Server. Normalmente nesse modo o equipamento realiza requisições em equipamentos de campo (como medidores, drivers, controladores...).

1 - Quantidade de endereços

O endereçamento Modbus sofre modificações conforme o modelo de equipamento e quantidade de endereços solicitados, segue abaixo o tipo do equipamento a ser especificado:

FunçãoQt. padrãoQt. tipo 2Qt. tipo 3Qt. tipo 4Qt. tipo 5
MBs (Discrete inputs e Coils)50100150200250
MIs (Input registers e Holding registers)20406080100

As colunas Qt. padrão, tipo 2, tipo 3, tipo 4 e tipo 5 significam as quantidades de endereços disponíveis que podem ser utilizados na leitura/escrita Modbus conforme a versão da licença.


2 - Tipos de dados

Troca de Dados

Todos os dados escritos nas memórias do equipamento podem ser configurados para envio ao servidor utilizado (MHO Cloud ou servidor próprio). As memórias de características digitais são enviadas instantaneamente, as de características analógicas são enviadas de acordo com o intervalo de tempo configurado.

As seguintes funções estão disponíveis:

Código (DEC)Função
02Read discrete Inputs
01Read Coils
05Write single coils
15Write multiple Coils
04Read input Register
03Read hold Register
06Write single Register
16Write multiple Register

Para os registradores de 16/32/64 bits a linha Keeper segue a padronização de memória Big-Endian. Uma word é definida como um registrador de 16 bits (2 bytes), uma double word é um registrador de 32 bits (4 bytes) (também entendido como 2 registradores de 16 bits) e uma long word é um registrador de 64 bits (8 bytes) (também entendido como 4 registradores de 16 bits)

Dica!

Ao ativar o modo Swapwords o tipo de endereço vira Little-Endian. Caso o dado lido não esteja correto na leitura padrão tente primeiro com o modo Swapwords, depois com os outros modos.


Os registradores do tipo inteiro/float podem ter padrão de leitura da seguinte forma:

  • swapbytes (disponível para os registradores de 16/32/64 bits);
  • swapword (disponível para os registradores de 32/64 bits);
  • swapdword (disponível para os registradores de 64 bits).

Exemplo 16 bits:

Um dado de 16 bits é transmitido da seguinte forma, onde cada letra representa um byte: A B
O padrão de leitura é "A B", porém se necessário pode-se aplicar as seguintes funções:

  • swapbytes: "B A".

Exemplo 32 bits:

Um dado de 32 bits é transmitido da seguinte forma, onde cada letra representa um byte: A B C D
O padrão de leitura é "A B C D", porém se necessário pode-se aplicar as seguintes funções:

  • swapbytes: "B A D C";
  • swapwords: "C D A B";
  • swapwords e swapbytes: "D C B A";

Exemplo 64 bits:

Um dado de 64 bits é transmitido da seguinte forma, onde cada letra representa um byte: A B C D E F G H
O padrão de leitura é "A B C D E F G H", porém se necessário pode-se aplicar as seguintes funções:

  • swapbytes: "B A D C F E H G";
  • swapwords: "C D A B G H E F";
  • swapwords e swapbytes: "D C B A H G F E";
  • swapdwords: "E F G H A B C D";
  • swapdwords e swapbytes: "F E H G B A D C";
  • swapdwords e swapwords: "G H E F C D A B";
  • swapdwords, swapwords e swapbytes: "H G F E D C B A";

3 - Arquivo de requisições

As requisições são feitas com base nas configurações do arquivo de configurações mbclient.json salvo no diretório /modbus.

4 - Depurar

Número (Decimal e Hex)Erro em InglêsErro em PortuguêsPossível Causa do Problema
0 (0x00)OkOkOperação concluída com sucesso, sem erros.
1 (0x01)Illegal function codeCódigo de função ilegalO equipamento server não suporta a função solicitada pelo client.
2 (0x02)Illegal data addressEndereço de dado ilegalO client está tentando ler ou escrever em um registrador ou bobina que não existe no server.
3 (0x03)Illegal data valueValor de dado ilegalO valor que o client está tentando escrever está fora da faixa permitida para o endereço especificado.
4 (0x04)Server device failureFalha no dispositivo serverOcorreu um erro interno e irrecuperável no equipamento server. Pode ser uma falha de hardware ou software.
5 (0x05)AcknowledgeConfirmaçãoO server aceitou a solicitação, mas precisa de muito tempo para processá-la. O client deve aguardar e perguntar novamente mais tarde.
6 (0x06)Server device busyDispositivo server ocupadoO server está ocupado processando um comando anterior e não pode atender a uma nova solicitação no momento.
7 (0x07)Negative acknowledgeConfirmação negativaO server não pode executar a função de programação solicitada na consulta.
8 (0x08)Memory parity errorErro de paridade de memóriaO server detectou um erro de paridade em sua memória, indicando um possível problema de hardware.
10 (0x0A)Gateway path unavailableCaminho do gateway indisponívelO gateway de comunicação não conseguiu encontrar um caminho para se conectar ao dispositivo final.
11 (0x0B)Gateway target not respondingAlvo do gateway não respondeO gateway consegue se conectar à rede do dispositivo final, mas o próprio dispositivo não está respondendo.
224 (0xE0)TimeoutTempo esgotadoA resposta do dispositivo não chegou no tempo esperado. Pode ser um problema de rede, dispositivo offline ou configuração incorreta.
225 (0xE1)Invalid serverServer inválidoO ID do server na resposta não corresponde ao ID que foi solicitado.
226 (0xE2)CRC check errorErro de verificação CRCO pacote de dados foi corrompido durante a transmissão. Comum em comunicação serial (Modbus RTU).
227 (0xE3)Function code mismatchIncompatibilidade de código de funçãoO código da função na resposta não corresponde ao código da função na solicitação.
228 (0xE4)Server ID mismatchIncompatibilidade de ID do serverO ID do server na resposta não corresponde ao ID da solicitação.
229 (0xE5)Packet length errorErro no comprimento do pacoteO pacote recebido tem um tamanho incorreto para a função solicitada.
230 (0xE6)Wrong # of parametersNúmero incorreto de parâmetrosA quantidade de parâmetros na solicitação está errada.
231 (0xE7)Parameter out of boundsParâmetro fora dos limitesUm dos parâmetros da solicitação está fora de sua faixa válida.
232 (0xE8)Request queue fullFila de solicitações cheiaO server está com a fila de processamento cheia e não pode aceitar novas solicitações.
233 (0xE9)Illegal IP or portIP ou porta ilegalO endereço IP ou a porta configurada para a conexão é inválida.
234 (0xEA)IP connection failedFalha na conexão IPA conexão TCP/IP não pôde ser estabelecida. Pode ser um firewall, problema de rede ou o server não está ativo.
235 (0xEB)TCP header mismatchIncompatibilidade de cabeçalho TCPO cabeçalho Modbus TCP da resposta não corresponde ao da solicitação.
236 (0xEC)Incomplete requestSolicitação incompletaA mensagem recebida está incompleta ou vazia.
237 (0xED)Invalid ASCII frameQuadro ASCII inválidoErro na formatação do pacote de dados no modo Modbus ASCII (ex: falta de caracteres de início/fim).
238 (0xEE)Invalid ASCII CRCCRC ASCII inválidoO LRC (verificação de redundância) do pacote Modbus ASCII está incorreto, indicando corrupção de dados.
239 (0xEF)Invalid ASCII characterCaractere ASCII inválidoFoi encontrado um caractere não permitido dentro de uma mensagem no modo Modbus ASCII.
254 (0xFE)Invalid configConfiguração inválidaProblema nas configurações de comunicação do client.
255 (0xFF)Unspecified errorErro não especificadoUm erro de comunicação genérico que não se encaixa em nenhuma das outras categorias.