Huawei Wechselrichter auslesen RS485 Modbus mit Arduino
von
am 22.04.2022 um 18:26 (18596 Hits)
Hallo Miteinander, ich habe für Euch ein vielleicht einfaches Problem zu lösen.
Ich habe einen Smart Power Meter (Huawei DTSU666-H 250 A/50mA) welcher in Verbindung mit meinem Wechselrichter steht (Huawei SUN2000 12KTL)
Das Protokoll ist ein RS485.
Weiß wer von Euch welchen Register ich da hernehmen muss? Ich verzweifle schön langsam und habe alle Varianten durch.
Ich benötige lediglich den Wert "Aktive Power" Mit der Adresse 40525. (Benötige ich da den HEX Wert oder nur 0525?)
Am Smartmeter ist die Communication-Address: 11 - jedoch wo füge ich das ein?
Am Ende des Beitrags hänge ich die entsprechenden Daten von Huawei an.
Vielen Dank falls sich jemand erbarmt um mich... vielen vielen Dank
Code:#include <ModbusMaster.h> #include <SoftwareSerial.h> #define MAX485_TX_ENABLE 7 // EIA-485 transmit control pin; MAX485 Module PIN DE and RE #define EIA485_RX 9 // EIA-485 serial receive pin ; MAX485 Module PIN RO #define EIA485_TX 10 // EIA-485 serial transmit pin ; MAX485 Module PIN DI ModbusMaster node; SoftwareSerial RS485Serial(EIA485_RX, EIA485_TX); // Hier wird der serielle Port beschrieben void preTransmission() { digitalWrite(MAX485_TX_ENABLE, true);// Vor der Übertragung wird Pin 7 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(9600); RS485Serial.begin(9600); //Baudrate des Sensors auf 9600 node.begin(1, RS485Serial);//Start der seriellen Schnittstelle, Slave ID 1 //???????????? Huwaei DTH666 says 11????? node.preTransmission(preTransmission); node.postTransmission(postTransmission); Serial.print("Hoerb1 KW ");// Bezeichnung meines Sensors } void loop() { float result; //uint16_t result; result = node.readInputRegisters(0525, 1);//Funktion : Read Input Registers, Modbus Adressen 2 //???????? no idea if it is right if (result == node.ku8MBSuccess) { Serial.print("Active Power: "); Serial.println(node.getResponseBuffer(0)*0.1,1);// 1. Part???????????? Serial.println(node.getResponseBuffer(1)*0.1,1); // 2. Part??????????? Serial.println(" kw"); } else { Serial.print("Fehler beim Auslesen des Sensors\n"); } delay(2000);//Aktualisierung alle 2 Sekunden }
https://www.solarmarkt.ch/herstimg/3...rDTSU666-H.pdf
https://www-file.huawei.com/~/media/...0150715_JP.pdf