Validação da comunicação Modbus IP

Olá! Estou utilizando a biblioteca do Arduino recomendada aqui no fórum para fazer a comunicação do ScadaBR via Modbus IP. Toda a “mágica” é feita pelo comando mb.task(), onde as mensagens são trocadas entre o Arduino e o SCADABR.

Minha dúvida é: Como saber que a comunicação de fato ocorreu? Existe algum parâmetro retornado pela biblioteca que eu possa utilizar para validar isso?

Aparentemente apenas via programa wireahark, pois o mb.task eh meio caixa preta.

Outra opcao eh um segundo arduino usando a mesma lib como master, solicitando para seu slave
Ou via scadabr

Obrigado pelo retorno. Possuo um sistema que funciona como um contador de peças no Arduino e toda vez que o ScadaBR faz uma solicitação, o Arduino envia quantas peças foram contadas até aquele momento. Depois disso eu zero o contador e vou incrementando até que uma nova solicitação seja feita. Minha dúvida seria no quesito de garantir que a informação que o Arduino enviou para o ScadaBR realmente chegou nele para somente então poder zerar o contador.

Você poderia, por exemplo, fazer o ScadaBR escrever em um endereço Modbus no Arduino sempre que uma nova informação sobre o contador for recebida. É uma forma bem simples de confirmar que o ScadaBR armazenou o valor.

Perfeito, obrigado pela sugestão. Eu havia pensado em algo semelhante, porém não consegui avançar na implementação via ScadaBR (é o meu primeiro projeto com o software). Gostaria de saber se você pode me ajudar em como posso fazer para que quando o ScadaBR atualize o data point de contagem (ou seja, informação recebida do Arduino), ele também atualize um outro registrador, que será lido pelo Arduino, sinalizando que a informação foi recebida. Dessa forma posso ler no Arduino esse registrador e confirmar que a informação de fato foi enviada e assim zerar o contador e começar a contar novamente.

Veja se você consegue fazer isso usando point links:

Consegui solucionar o problema através das sugestões dos colegas. Basicamente o que fiz foi criar no ScadaBR um point link que pega o valor contado pelo Arduino e repassa para um outro datapoint chamado de “Confirmação”. No Arduino, eu leio o registrador que contém os dados dessa confirmação e verifico se o valor é igual ao que foi enviado anteriormente pelo próprio Arduino. Caso o valor seja de fato igual, sei que a comunicação ocorreu da maneira correta e que o ScadaBR recebeu as informações.

1 curtida