Hilfe - Arduino will Modbus Temperatursensor nicht auslesen (RS485 Linksprite)

Hallo,

ich glaube du hast da einiges noch nicht verstanden

winterwurst:
Ich verwende die Pins 2 und 3 im Code und habe auch die Jumper auf dem Shield entsprechend gesteckt.

Das sind doch die Pins mit denen die RS485 zwischen Sende- und Empfangsrichtung umschaltet. Nicht die über die gesendet wird. Da müsste man sowieso checken, ob die so zum Shield passen, bzw. dieses richtig einstellen.

Natürlich hat SoftwareSerial keine Funktionen wie "readHoldingRegisters". Dafür ist ja die Modbus Master Library da. Sie erweitert eine serielle Schnittstelle entsprechend.

Und da verwendest du Serial, also die Pins 0 und 1:

node.begin(1, Serial);   // Da wird die Schnittstelle festgelegt !

Damit hängen dann das USB-Interface vom Uno, der Microcontroller und die RS485 zusammen. Das gibt diesen Unfug im seriellen Monitor. Ist elektrisch und softwaremäßig ziemlicher Käse, funktioniert aber wegen der Richtungsumschaltung an der RS485 "irgendwie".

Mit der Softwareserial sähe das eher so aus (ungetestet aus Beispielen zusammenkopiert):

#include <SoftwareSerial.h>
#include <ModbusMaster.h>

// Pins für Transceiver und Receiver Enable
#define MAX485_DE      3
#define MAX485_RE_NEG  2

ModbusMaster node;

SoftwareSerial mySerial(10, 11); // RX, TX      Pins ggf. so ändern, dass sie zum Shield passen

void setup() {
  Serial.begin(9600);             // Für den seriellen Monitor

  mySerial.begin(9600);         // Für den Modbus

  node.begin(1, mySerial);     // Jetzt mit SoftwareSerial