Mahlzeit allerseits,
Bitte um Hilfe, werd noch ganz narrisch, wie lese ich richtig die Werte aus meinem neuen SDM630 Zähler aus?
Bin irgendwie zu blöd, um das mit den Registern Variablen und LSB und MSB zu kapieren....
Ich hab meinen SDM630 Zähler in einer Teststellung, L1 und N angehängt, als Verbraucher hängt das Notebook dran. Das funkt, Notebook braucht grad 0,02 kW.
An meinem Linux Notebook hab ich einen RS485 - USB Adapter dran, verkabelt ists auch. Serielle Einstellungen funken auch (Slave Adresse1, 19200 Baud, no parity, 1 Stopbit) also modbus RTU...
Nachdem ich mich gestern mit 3 verschiedenen, nicht funktionierenden Python Bibliotheken herumgeärgert hab, hab ich kurzerhand modpoll installiert (
https://www.modbusdriver.com/modpoll.html)
Ich bekomm sogar Werte zurück (Hurra) d.h. das Auslesen funkt grundsätzlich. Aber jetzt stehe ich irgendwie an, ich bekomme irgendwelche Hausnummern zurück, die für mich keinen Sinn ergeben und komm nicht weiter....
wenn ich abfrage mit:
modpoll -1 -b 19200 -s 1 -p none -m rtu -a 1 -r 1 -c 100 /dev/ttyUSB0
(also 1...100. register)
bekomm ich paar Werte zurück (Auszug):
modpoll 3.10 - FieldTalk(tm) Modbus(R) Master Simulator
Copyright (c) 2002-2021 proconX Pty Ltd
Visit
https://www.modbusdriver.com for Modbus libraries and tools.
Protocol configuration: Modbus RTU, FC3
Slave configuration...: address = 1, start reference = 1, count = 100
Communication.........: /dev/ttyUSB0, 19200, 8, 1, none, t/o 1.00 s, poll rate 1000 ms
Data type.............: 16-bit register, output (holding) register table
-- Polling slave...
[1]: 17008
[2]: 0
[3]: 17008
[4]: 0
[5]: 0
[6]: 0
[7]: 17244
[8]: 0
[9]: 16672
[10]: 0
[11]: 16448
[12]: 0
[13]: 17096
[14]: 0
[15]: 0
[16]: 0
[17]: 0
[18]: 0
[19]: 0
[20]: 0
[21]: 16256
[22]: 0
[23]: 0
[24]: 0
[25]: 17530
[26]: 0
[27]: 0
[28]: 0
[29]: 16448
[30]: 0
[31]: 0
[32]: 0
[33]: 0
[34]: 0
[35]: 0
[36]: 0
[37]: 17870
[38]: 16384
[39]: 0
[40]: 0
[41]: 17669
[42]: -12288
[43]: 25953
[44]: 29556
[45]: 0
Der este Wert sollte Laut SDM630 Registerbeschreibung die Spannung zwischen L1 und N sein - also irgendwas bei 232,9V laut SDM360 Anzeige....
d.h. die [1]: 17008 muss ich jetzt "irgendwie" konvertieren bzw. richtig definieren, was lt. Hilfe mit dem -t Parameter geht... allerdings muss ich da an Variablentypen angeben, in der SDM630 Protokollbeschreibung find ich nur infos zu Hi und Lo - Byte, deren Zusammenhang mir irgendwie entgeht....
Hat wer bitte einen Tip für mich, wie ich richtig z.b. die Spannung und momentane Leistung an L1 auslesen kann?
(Ich möchte, wenn möglich so wenig externe Bibliotheken wie möglich verwenden und am liebsten in der BASH bleiben, also ohne Umwege über Python, C# etc...)
Vielen Dank!
LG Wolfgang