Olá! Fiz alguns programas para fazer a comunicação de um microcontrolador PIC 16F877A com o SCADABR. Os programas que fazem a leitura das bobinas ou dos holding registers funcionaram perfeitamente. Já os programas para ligar/desligar leds não funcionaram. Em todos os programas que fiz utilizei o procedimento que aprendi sobre modbus que foi o seguinte:
1-) O microcontrolador faz a leitura do conjunto de bytes enviados pelo mestre (no caso o PC).
2-) Após receber os bytes, calcula o CRC e compara com o CRC recebido para verificar se houve erro de transmissão.
3-) Se a mensagem foi enviada corretamente, verifica os dois primeiros bytes para determinar se a mensagem é para o escravo certo e determinar a função (ler bobinas, ler holding registers, escrever bobinas, etc) que o escravo deve executar.
4-) Executa o procedimento solicitado pelo mestre.
5-) Envia a resposta para o mestre já com o novo CRC calculado em função dos bytes da resposta.
Gostaria que me informassem se este é o procedimento correto para se trabalhar com o SCADABR. Outra coisa que não entendi foi que em todos os programas que fiz o segundo byte (função) é sempre o número 3 (holding registers), mesmo quando tentei fazer o programa para ligar/desligar leds.
Grato pela atenção e pelo trabalho que tiveram para fazer o SCADABR e disponibilizá-lo para nós.