Hello guys, I have an issue trying to use Arduino UNO for Modbus communication with a certain device I'm trying to get readings from.
Devices:
- ARDUINO UNO Board.
- MAXmax485 (DE-RE connected together).
- CEM M-RS485 (this is the link: http://docs.circutor.com/docs/M014B01-03.pdf), properly connected to A+ and B-.
The code is as follows:
#include <Arduino.h>
#include <ModbusMaster.h>
#define MODBUS_RX 7
#define MODBUS_TX 8
#define MODBUS_DE 6
ModbusMaster modbusNode;
void preTransmission()
{
digitalWrite(MODBUS_DE, HIGH);
delay(10);
}
void postTransmission()
{
delay(2);
digitalWrite(MODBUS_DE, LOW);
}
void setup() {
pinMode(MODBUS_DE, OUTPUT);
Serial.begin(9600);
modbusNode.begin(1, Serial);
modbusNode.preTransmission(preTransmission);
modbusNode.postTransmission(postTransmission);
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
uint8_t resultMain;
// Read 1 register from address
resultMain = modbusNode.readInputRegisters(2710,1);
Serial.println(resultMain,HEX);
}
According to the guide section 4.4.4.1.- Configuration variables for the CEM M-RS485 everything is set up. The registry I'm trying to read is 2710, which should return the following (see image attached to the message please).
In the table of section 4.4.4.5. there are also commands that should be readable, but no luck whatsoever.
Some strange values are included in the response (like "SOH", "EOT" and another one but I think is garbage, I'm not sure).
There's one value that is relevant though, 0xE2, which corresponds to ku8MBResponseTimedOut (he entire response was not received within the timeout period, ModbusMaster::ku8MBResponseTimeout).
Can someone help find out what the issue might be? Perhaps there's something I'm not properly setting inside my code, as the physical setup seems to be correct.
Thanks in advance!