You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
My sketch below is based on the Kitchen Sink example.
If I run the code with delay(5) at the beginning and at the end of the loop, everything is working fine, without I am running into timeout issue during readInputRegisterValues();
Any idea what is wrong with my code or is this a bug?
Slave settings:
Baud rate: 9600
Parity bits: None
/* Modbus RTU Client Kitchen Sink This sketch creates a Modbus RTU Client and demonstrates how to use various Modbus Client APIs. Circuit: - MKR board - MKR 485 shield - ISO GND connected to GND of the Modbus RTU server - Y connected to A/Y of the Modbus RTU server - Z connected to B/Z of the Modbus RTU server - Jumper positions - FULL set to OFF - Z \/\/ Y set to ON created 18 July 2018 by Sandeep Mistry*/
#include<ArduinoRS485.h>// ArduinoModbus depends on the ArduinoRS485 library
#include<ArduinoModbus.h>int counter = 0;
byte readModbus1 = 0;
byte writeModbus1 = 0;
voidsetup() {
Serial.begin(9600);
while (!Serial)
;
Serial.println("Modbus RTU Client Kitchen Sink");
// start the Modbus RTU clientif (!ModbusRTUClient.begin(9600, SERIAL_8N1)) {
Serial.println("Failed to start Modbus RTU Client!");
while (1)
;
}
}
voidloop() {
readInputRegisterValues();
counter++;
//delay(5);if ((bitRead(readModbus1, 0) == 0) && (bitRead(readModbus1, 1) == 0) && (bitRead(readModbus1, 2) == 0) && (bitRead(readModbus1, 3) == 0) && (bitRead(readModbus1, 4) == 0) && (bitRead(readModbus1, 5) == 0) && (bitRead(readModbus1, 6) == 0) && (bitRead(readModbus1, 7) == 0)) {
ModbusRTUClient.beginTransmission(01, COILS, 0x00, 8);
for (int i = 0; i < 8; i++) {
ModbusRTUClient.write(0);
}
if (!ModbusRTUClient.endTransmission()) {
Serial.print(F("failed!1 "));
Serial.println(ModbusRTUClient.lastError());
} else {
Serial.println(F("success1"));
}
}
if (bitRead(readModbus1, 0) == 1) {
Serial.println(F("Bit3 ist gesetzt"));
}
if ((bitRead(readModbus1, 0) == 1) || (bitRead(readModbus1, 1) == 1) || (bitRead(readModbus1, 2) == 1) || (bitRead(readModbus1, 3) == 1) || (bitRead(readModbus1, 4) == 1) || (bitRead(readModbus1, 5) == 1) || (bitRead(readModbus1, 6) == 1) || (bitRead(readModbus1, 7) == 1)) {
writeModbus1 = bitWrite(writeModbus1, 0, 1); //Update of relevant bits
writeModbus1 = bitWrite(writeModbus1, 2, 1); //Update of relevant bits
writeModbus1 = bitWrite(writeModbus1, 7, 1); //Update of relevant bits
ModbusRTUClient.beginTransmission(01, COILS, 0x00, 8); //Start Modbus communicationfor (int i = 0; i < 8; i++) {
ModbusRTUClient.write(bitRead(writeModbus1, i)); //writes full byte on the Modbus
}
if (!ModbusRTUClient.endTransmission()) {
Serial.print(F("failed!2 "));
Serial.println(ModbusRTUClient.lastError());
} else {
Serial.println(F("success2"));
}
}
//delay(5);//Serial.println();
}
voidreadInputRegisterValues() {
Serial.print("Reading input register values ... ");
// read 10 discrete input values from (slave) id 42,if (!ModbusRTUClient.requestFrom(1, DISCRETE_INPUTS, 0x00, 8)) {
Serial.print("failed!3 ");
Serial.println(ModbusRTUClient.lastError());
} else {
Serial.println("success3");
while (ModbusRTUClient.available()) {
readModbus1 = ModbusRTUClient.read();
Serial.print(readModbus1);
}
Serial.println();
}
}
The text was updated successfully, but these errors were encountered:
Hi,
I used a teensy 4.1 as Master and SGI0B08 (8DI 8DO by eletechsup). This is a simple Digital Input and Output card.
Strange is, that everything is working fine in case delay(5) is within the code.
I will check the link you posted and scan for hints which could solve my problem. Thank you.
My sketch below is based on the Kitchen Sink example.
If I run the code with
delay(5)
at the beginning and at the end of the loop, everything is working fine, without I am running into timeout issue duringreadInputRegisterValues();
Any idea what is wrong with my code or is this a bug?
Slave settings:
Baud rate: 9600
Parity bits: None
The text was updated successfully, but these errors were encountered: