Moin Allerseits,
versuche mit einen Mega 2 Slaves auszulesen.
Mit einem funktioniert es tatellos, habe aber keine Idee den 2. Slave einzubinden.
Die auszulesenen Register sind die gleichen.
/
/ FOR MEGA2560 with Modbus device #1 on Serial #1 @ 9600 baud.
#include <ModbusMaster.h> //Library for using ModbusMaster
#define MAX485_REDE_PIN 5
int sensor1;
int sensor2;
int sensor3;
int sensor4;
int sensor5;
int sensor6;
int sensor7;
int sensor8;
ModbusMaster node; //object node for class ModbusMaster
void preTransmission() //Function for setting stste of Pins DE & RE of RS-485
{
digitalWrite(MAX485_REDE_PIN, 1);
}
void postTransmission()
{
digitalWrite(MAX485_REDE_PIN, 0);
}
void setup()
{
pinMode(MAX485_REDE_PIN, OUTPUT);
digitalWrite(MAX485_REDE_PIN, 0);
Serial.begin(9600); //Baud Rate as 9600
Serial1.begin(9600); //Baud Rate as 9600
node.begin(2, Serial1); //Slave ID as 1 on Serial #1
node.preTransmission(preTransmission); //Callback for configuring RS-485 Transreceiver correctly
node.postTransmission(postTransmission);
}
void loop()
{
uint16_t result = node.readHoldingRegisters(0x0000,8); // Reads Holding Registers 40001 - 40008
if (result == node.ku8MBSuccess)
sensor1 = (node.getResponseBuffer(0));
sensor2 = (node.getResponseBuffer(1));
sensor3 = (node.getResponseBuffer(2));
sensor4 = (node.getResponseBuffer(3));
sensor5 = (node.getResponseBuffer(4));
sensor6 = (node.getResponseBuffer(5));
sensor7 = (node.getResponseBuffer(6));
sensor8 = (node.getResponseBuffer(7));
Serial.print(sensor1/10);
Serial.print(",");
Serial.print(sensor2/10.0);
Serial.print(",");
Serial.print(sensor3/10);
Serial.print(",");
Serial.print(sensor4/10);
Serial.print(",");
Serial.print(sensor5/10);
Serial.print(",");
Serial.print(sensor6/10);
Serial.print(",");
Serial.print(sensor7/10);
Serial.print(",");
Serial.println(sensor8/10);
delay(1000);
}
Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.
So funktioniert der Code erstmal, die seltsame Formatierung von serial.print ist für
MakerPlot,da habe ich die Werte über Virtuelle Instrumente.
Kommen dann noch 16 dazu.
Mit Arrays wir der Code sicher erheblich kürzer, aber so gut binn ich noch nicht.