Hallo zusammen,
ich habe mir nun einen MEGA zugelegt mit dem ich über einen separaten Hardware Serial Port den Modbus auslesen kann.
Mit einem "einfachen" Temperatursensor funktioniert die Auslesung prima.
Da ich im Rahmen meiner Wetterstation mit einem professionellen Sensor die Temperatur/Feuchte erfassen möchte, habe ich mir nun den Lambrecht Sensor zugelegt. Über QModbus master mit USB/RS485 Converter kommen die Werte einwandfrei.
Über den MEGA wird jedoch immer ein Wert von 65535 ausgegeben, was recht warm ist
Im Handbuch meines Sensors steht etwas von "BIG Endian 32Bit" womit ich nichts so richtig anfangen kann.
Leider bin ich in dem Thema Datentypen noch nicht so richtig drinn.
Ich vermute dass in den Zeilen unterhalb des void loop etwas nicht stimmt.
Vielleicht kann sich das mal jemand ansehen. Vielen Dank im Voraus
#include <ModbusMaster.h>
#define MAX485_TX_ENABLE 13 // EIA-485 transmit control pin
ModbusMaster node;
void preTransmission() {
digitalWrite(MAX485_TX_ENABLE, true);// Vor der Übertragung wird Pin 13 auf High gesetzt.
}
void postTransmission() {
digitalWrite(MAX485_TX_ENABLE, false);// Nach der Übertragung wieder auf Low
}
void setup() {
pinMode(MAX485_TX_ENABLE, OUTPUT);
digitalWrite(MAX485_TX_ENABLE, false);
Serial.begin(19200);
Serial1.begin(19200, SERIAL_8E1); //Baudrate des Sensors auf 19200, 1Start Bit, Parität EVEN, 1 Stop Bit
node.begin(4, Serial1);//Start der seriellen Schnittstelle, Slave ID 4
node.preTransmission(preTransmission);
node.postTransmission(postTransmission);
Serial.print("Lambrecht THP - Modbus");// Bezeichnung meines Sensors
}
void loop() {
static uint32_t i;
uint8_t result;
uint16_t data[6];
result = node.readInputRegisters(30401, 1);//Funktion : Read Input Registers, Modbus Adresse 30401
if (result == node.ku8MBSuccess)
{
Serial.print("Temperatur: ");
Serial.println(node.getResponseBuffer(30401));//Temperatur, Datentyp laut Handbuch INT (???)
Serial.print(" °C");
}
else {
Serial.print("Fehler beim Auslesen des Sensors\n");
}
delay(10000);//Aktualisierung alle 10 Sekunden
}