Indicador de peso com Modbus TCP

Galera, to com uma aplicação onde preciso fazer o ScadaBR ler uma word em específico de uma tabela fieldbus de um equipamento para que eu possa fazer a leitura do peso que esse equipamento fornece. Estou com essa dificuldade de leitura. A comunicação se da em Modbus TCP.

Tens a documentacao do seu device modbus?

Tenho sim. Usei o Modbus Poll a fim de validar a comunicação e enxergar o peso, porém, no Scadabr o mesmo não se repetiu.
Abaixo a tabela fieldbus do indicador de peso 9097 da toledo.

Manda como você criou o datasource e datapoint e qual versao do seu ScadaBR?

Scada 1.0

Aparentemente esta tudo configurado e você consegue ler os registradores do device. Isso é muito bom. Você fez 96% do serviço, falta apenas o retoque.

segundo o seu manual o registrador 40006 diz que eh o peso liquido sem sinal No ScadaBR eh baseado em zero, ou seja, o 40001 que voce ve no manual, eh lido com registrador 00
por consequencia, o peso liquido sera lido no 07 e a tara no 008

Entao leia o Registrador Holding como Inteiro de 2 bytes sem sinal 0007 para o peso e 0008 para a Tara,
Segundo sua leitura do print, o peso e a tara parecem ser zero.

Faça o teste e nos dê um feedback.

Deveria esta marcando 410kg, mas não é o que acontece. E também não compreendi o que você quis dizer com “0007” para o peso. Por favor, agradeço se explicar.

Se na imagem que voce mandou, o registrador Inteiro 2 bytes deve ser o de numero 4.

Crie o datapoint como na receita abaixo:

Desculpe, eu fiz a interpretação errada. o Registrador no seu documento é o 40005. Como o ScadaBR ja sabe que é um Holding Register, ele já soma 40000 ao valor do registro lido, então é só ler o registro 5 que equivale ao 40005 do seu dispositivo de registro de peso.

Os registradores MODBUS são separados por faixa de valores. Por exemplo Holding Registers são a partir de 40.000

Na duvida, me chame PVT

A explicação dos registradores MODBUS é simples, veja a tabela abaixo:

    +------------------+-------------+
    | Tipo Registro    |  Enderecos  |   
    +------------------+-------------+    
    | Coil             | 00001-09999 |
    | Discrete Input   | 10001-19999 |
    | Input Register   | 30001-39999 |
    | Holding Register | 40001-49999 |
    +------------------+-------------+

Se notar, cada tipo de registro tem uma faixa de valores
Coil vao do endereco 0 a 9999
e Holding Register tem enderecos de 40.000 a 49.9999

no print acima, 05 tem o valor 019B que em Inteiro 2 Bytes dá o valor de 410 que seria o peso que voce informou.

A droga do MODBUS é que na norma nao se especifica se os registradores comecam com ZERO ou UM, ou seja, se os regisradores sao a partir de 40.000 ou 40.001
como o ScadaBR diz que comeca em Zero, se seu dispositivo nao tem o Holding Register ZERO ou 40.000. O scadaBR vai ler 40.001 como registro 00.

No ScadaBR usamos Offset, por isso o registro é lido como 05 e nao 40.005 .

E no seu registrador de peso, pelo jeito eles comecam com o registro 40.000. logo nao tem que subtrair ou somar um no numero do registro a ser lido.

Exatamente isso. Acertei fazendo essa configuração também. Agradeço.

A bronca agora é que eu forcei uma variação de peso e não correspondeu no supervisório. Ficou congelado nessa pesagem.

O ScadaBR é quem faz a leitura do peso. Se a leitura mudar no registrador só vai aparecer no ScadaBR quando o ScacaBR fizer a leitura novamente. Veja o tempo de atualização do dataSource.
Se colocar um Segundo, o valor vai mudar a cada Segundo. e assim vai.