Problemas Comuns no Driver Modbus: Bytes e Words Fora de Ordem

Descrição:

Em certas operações com o driver Modbus (especialmente na leitura de variáveis de tipo FLOAT), a leitura ocorre, mas os valores lidos estão em uma ordem diferente da esperada;  isto é, bytes e words aparecem fora de ordem. Como posso resolver este problema?

Solução:

Na leitura de valores que ocupam mais de um registrador, o equipamento pode enviar os bytes e words fora de ordem, ou seja, em ordem diferente da esperada. O driver permite então ajustar a ordem de interpretação dos bytes. Essa configuração é aplicada de maneiras distintas, dependendo de como os tags estão configurados: ou por parâmetros numéricos (N/B), ou por parâmetros sintáticos (Dispositivo e Item). A fim de descobrir a ordem em que os bytes são enviados, deve-se consultar a documentação fornecida pelo fabricante do equipamento.

 

Parâmetros numéricos:

Primeiramente, apresentamos uma solução que é aplicável somente na utilização de tags com parâmetros numéricos (N/B). Para isso, utilize a janela de configurações do driver e então, na aba Operations, selecione a operação a ser editada. Logo após, clique no botão Edit e marque ou desmarque as opções Swap Bytes e Swap Words de acordo com o padrão do equipamento. Posteriormente, clique OK para confirmar a edição. A fim de obter maiores informações sobre essa configuração, consulte o item Byte Order no tópico Aba Operations na documentação deste driver.

 

Parâmetros sintáticos:

Por outro lado, caso esteja utilizando parâmetros sintáticos (Dispositivo e Item), a configuração deve realizada através do parâmetro Item. Neste parâmetro, logo depois do identificador do tipo de dado, informe o padrão de ordem dos bytes, segundo a tabela abaixo. A fim de obter maiores informações sobre configuração, consulte o item Byte Order no tópico Configuração por Strings na documentação deste driver.

Padrão

Swap Bytes Swap Words Swap DWords Ordem
64 bits, onde by0 é lsb e b7 é msb
b0 msb by7 by6 by5 by4 by3 by2 by1 by0
b1 sb X by6 by7 by4 by5 by2 by3 by0 by1
b2 sw X by5 by4 by7 by6 by1 by0 by3 by2
b3 sb.sw X X by4 by5 by6 by7 by0 by1 by2 by3
b4 sdw X by3 by2 by1 by0 by7 by6 by5 by4
b5 sb.sdw X X by2 by3 by0 by1 by6 by7 by4 by5
b6 sw.sdw X X by1 by0 by3 by2 by5 by4 by7 by6
b7 lsb / sb.sw.sdw X X X by0 by1 by2 by3 by4 by5 by6 by7

Logo após, são mostrados alguns exemplos de como utilizar esses valores para alterar a ordem dos bytes em uma operação de leitura ou escrita de Holding Registers (funções 03 e 16) de endereço 1500 de um equipamento com ID 5, interpretado esse valor como DOUBLE.

Parâmetro Item Ordem
5:hr1500.d
5:hr1500.double
5:hr1500.d.b0
5:hr1500.d.msb
Sem inversão de bytes
5:hr1500.d.b1
5:hr1500.double.b1
5:hr1500.double.sb
Byte menos significativo de cada Word vindo antes
5:hr1500.d.b7
5:hr1500.d.lsb
5:hr1500.d.sb.sw.sdw
Bytes menos significativos vindo antes

Artigos relacionados:


Este artigo foi útil? Was this post helpful?
Yes0
No0

Deixe seu Comentário

Seu endereço de e-mail não será publicado. Campos marcados com asterisco são obrigatórios *