Comunicação Arduino com Modbus Serial

Bom dia pessoal!

Estou tentando fazer a comunicação de um arduino Uno R3 com um sensor ultrassônico com o ScadaBR através do protocolo Modbus Serial mas não tenho certeza se meu código está certo.

O sensor faz a leitura perfeitamente e exibe no monitor serial mas na hora de colocar para exibir no data point do ScadaBR ele não exibe os dados do sensor e só aparece um “n/a” ao invés de exibir os dados. Não consegui resolver esse erro e preciso de ajuda.

Alguém aqui tem conhecimento nesse assunto para me ajudar?

Agradeço.

O código é esse aqui:

// C++ code
//

#include <ModbusSerial.h>
#include <SoftwareSerial.h>
#include <SimpleModbusSlave.h>

#define sensor

enum
{
VALOR_ALT,
VALOR_CAP,
HOLDING_REGS_SIZE
};

unsigned int holdingRegs[HOLDING_REGS_SIZE];

long readUltrasonicDistance(int triggerPin, int echoPin)
{
pinMode(triggerPin, OUTPUT); // Clear the trigger
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
// Sets the trigger pin to HIGH state for 10 microseconds
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
pinMode(echoPin, INPUT);
// Reads the echo pin, and returns the sound wave travel time in microseconds
return pulseIn(echoPin, HIGH);
}

void setup()
{
Serial.begin(9600);

/* configura cominicação modbus * 9600 bps, 8N1, RS485 network */

modbus_configure(&Serial, 9600, SERIAL_8N1, 1, 2, HOLDING_REGS_SIZE, holdingRegs);

modbus_update_comms(9600, SERIAL_8N1, 1);

}

void loop()

if (0.01723 * readUltrasonicDistance(A1, A0) > 0) {
VALOR_ALT = 0.01723 * readUltrasonicDistance(A1, A0);
}
if (VALOR_ALT <= 50) {
VALOR_CAP = 100;
Serial.println(VALOR_CAP);
} else {
if (VALOR_ALT <= 90 && VALOR_ALT >= 51) {
VALOR_CAP = 80;
Serial.println(VALOR_CAP);
} else {
if (VALOR_ALT <= 130 && VALOR_ALT >= 91) {
VALOR_CAP = 60;
Serial.println(VALOR_CAP);
} else {
if (VALOR_ALT <= 170 && VALOR_ALT >= 131) {
VALOR_CAP = 40;
Serial.println(VALOR_CAP);
} else {
if (VALOR_ALT <= 210 && VALOR_ALT >= 171) {
VALOR_CAP = 20;
Serial.println(VALOR_CAP);
} else {
if (VALOR_ALT <= 300 && VALOR_ALT >= 211) {
Serial.println(“Alerta”);
}
}
}
}
}
}
{
modbus_update();

 holdingRegs[VALOR_ALT] = analogRead(A0); 
 
 analogWrite( A1, holdingRegs[VALOR_CAP]);   

}

delay(10); // Delay a little bit to improve simulation performance
}

Inverta os dois fios do Modbus (pode ser isto).
Já fiz o teste com o ScadaBR e ele acha o Arduino (protocolo Modbus Serial ) com facilidade.