ModbusRS485 Energiezähler SDM630

Begonnen von Joerky, 25 Juni 2018, 22:16:34

Vorheriges Thema - Nächstes Thema

Joerky

Hallo Fhem-Gemeinde,

ich stehe irgendwie auf dem Schlauch...

ich habe mir einen Energiezähler SDM630 und einen DIGITUS DA-70157 ModbusRS485 USB Adapter besorgt und am Raspi angeschlossen.
Der Digitus scheint vernünftig eingebunden zu sein.
Die Leitung zwischen Zähler und Digitus ist abgeschirmt, GND über Schirm geführt und angeschlossen und je 120Ohm Abschlusswiderstand auf beiden Seiten eingelötet, wobei ich das bei 1m Leitung eigentlich Quatsch finde. Schaden wird es sicher nicht...



Den ModbusSlave habe ich dann definiert, wie ich es in einem Beispiel gefunden habe.



define ModbusRS485 Modbus /dev/ttyUSB0@9600
define SDM630 ModbusSDM630M 1 60
attr SDM630 userattr IODev
attr SDM630 IODev ModbusRS485
attr SDM630 room Stromzaehler
attr ModbusRS485 room Stromzaehler


Allerdings steht bei State nur ???.
Und wenn ich einen beliebigen Wert abrufe, kommen unerwartete Ergebnisse zurück, sofern ich die Fehlermeldung richtig interpretiere.


Hat jemand eine Idee?
Ich habe ein paar Screenshot angehängt...


Gruß Joerky


pc1246

Moin
Das naechste mal schick doch lieber keine Screenshots, sondern ein list des entsprechenden devices! Das ganze dann noch in Codetags ( das "#" ueber den Smileys) und alles wird gut!
Meine erste Frage ist, hat denn Dein Zaehler auch die gleiche Baudrate, wie Du in fhem definiert hast?
Gruss Christoph
HP T610
Onkyo_AVR;Enigma2; SB_Server; SB_Player; HM-USB; PhilipsTV; harmony hub; Jeelink mit PCA301; Somfy; S7-300; LGW; HUE; HM-IP auf Charly; div

Joerky

Hallo pc1246,
Danke erstmal für die erste Antwort und Interesse mir überhaupt zu helfen. :)
ok, ich vermeide screenshots  ;)

...klar, die Baudrate im Zähler steht auf 9.6k Parity none , 1 Stopbit,  Adresse 001...

Ein "list ModbusRS485" bringt folgende Ergebnisse


Internals:
   BUSY       0
   DEF        /dev/ttyUSB0@9600
   DeviceName /dev/ttyUSB0@9600
   FD         4
   LASTOPEN   1529940740.81633
   NAME       ModbusRS485
   NR         98
   NTFY_ORDER 50-ModbusRS485
   PARTIAL   
   REQUESTHEX 0103002400080407
   STATE      opened
   TYPE       Modbus
   devioLoglevel 3
   nextOpenDelay 60
   QUEUE:
   READINGS:
     2018-06-25 17:32:20   state           opened
   defptr:
     1:
       DEF        1 60
       DEST       
       INTERVAL   60
       IODev      ModbusRS485
       MODBUSID   1
       ModuleVersion 3.7.3 - 22.12.2017
       NAME       SDM630
       NOTIFYDEV  global
       NR         99
       NTFY_ORDER 50-SDM630
       PROTOCOL   RTU
       STATE      ???
       TRIGGERTIME 1530033641.1396
       TRIGGERTIME_FMT 2018-06-26 19:20:41
       TYPE       ModbusSDM630M
       helper:
         lrecv      1529954385.20012
         lsend      1530033588.53198
       lastRead:
   helper:
     buffer     
     lid        1
     lrecv      1530033588.57284
     lsend      1530033588.53198
Attributes:
   room       Stromzaehler


Leider hab ich keinen Plan, wie ich sonst noch einen Test machen kann, ob die Schnittstellenanbindung und die serielle Datenverbindung überhaupt steht.
Da ich keinen Windoof PC habe, finde ich auch kein Tool zum testen. :-\
Ein Update im FHEM hatte ich vorher auch durchgeführt.

Was mir eben beim Befehl version aufgefallen ist, das das von Hand kopierte "98_ModbusSDM630M.pm" keine ID hat.
Liegt hier ggf. schon das Problem?


Latest Revision: 16903

File                Rev   Last Change

fhem.pl             16866 2018-06-14 07:58:06Z rudolfkoenig
90_at.pm            15795 2018-01-05 20:46:21Z rudolfkoenig
98_autocreate.pm    15620 2017-12-16 18:10:36Z rudolfkoenig
10_CUL_HM.pm        16838 2018-06-09 05:15:46Z martinp876
98_dummy.pm         12700 2016-12-02 16:49:42Z rudolfkoenig
91_eventTypes.pm    14888 2017-08-13 12:07:12Z rudolfkoenig
01_FHEMWEB.pm       16875 2018-06-15 19:05:36Z rudolfkoenig
92_FileLog.pm       16770 2018-05-24 15:16:12Z rudolfkoenig
98_help.pm          15223 2017-10-10 10:14:24Z betateilchen
00_HMLAN.pm         14073 2017-04-22 13:45:25Z martinp876
30_HUEBridge.pm     16310 2018-03-02 10:43:36Z justme1968
31_HUEDevice.pm     16352 2018-03-08 07:42:40Z justme1968
98_Modbus.pm        15871 2018-01-13 16:24:22Z StefanStrobel
No Id found for 98_ModbusSDM630M.pm
91_notify.pm        15937 2018-01-20 13:43:28Z rudolfkoenig
99_SUNRISE_EL.pm    16632 2018-04-17 19:00:21Z rudolfkoenig
98_telnet.pm        16293 2018-02-28 21:33:57Z rudolfkoenig
99_Utils.pm         15713 2017-12-28 11:01:02Z rudolfkoenig
98_version.pm       15140 2017-09-26 09:20:09Z markusbloch

Color.pm            11159 2016-03-30 16:08:06Z justme1968
DevIo.pm            16623 2018-04-15 18:44:05Z rudolfkoenig
HMConfig.pm         16887 2018-06-19 18:42:44Z martinp876
HttpUtils.pm        16768 2018-05-24 08:53:41Z rudolfkoenig
RTypes.pm           10476 2016-01-12 21:03:33Z borisneubert
SetExtensions.pm    16568 2018-04-08 09:44:42Z rudolfkoenig
TcpServerUtils.pm   15707 2017-12-27 14:41:21Z rudolfkoenig

fhemweb.js                 16727 2018-05-11 09:12:01Z rudolfkoenig



Gruß Joerky

wthiess

Hallo Joerky!

Bei 1m Leitung die beiden 120Ohm Wid. weg. Ist eher hinderlich. Bei 3-10m habe ich nur an einer Seite. Erst bei länderen Leitungen beide Seiten.
Bitte um eine genaue Zeichnung Schaltplan. Anschlussplan.
Den Eintrag
define ModbusRS485 Modbus /dev/ttyUSB0@9600
finde ich nicht gut. Bitte schreib by-id wie folgt.
define VR400Mod Modbus /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AL01GIJ7-if00-port0@9600,8,E,1

lg
Wolfgang
Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

Joerky

Hallo wthiess !

das mit by-id hab ich abgeändert. Leider ohne Erfolg...

##define ModbusRS485 Modbus /dev/ttyUSB0@9600,8,N,1
define ModbusRS485 Modbus /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AO000KUJ-if00-port0@9600,8,N,1
define SDM630 ModbusSDM630M 1 60
attr SDM630 userattr IODev
attr SDM630 IODev ModbusRS485
attr SDM630 room Stromzaehler
attr ModbusRS485 room Stromzaehler


Ich habe heute noch mal lange nachgelesen, was die Abschlusswiderstände betrifft. Auf allen "kommerziellen" Seiten von ModBus-Geräteherstellern wird zwingend auf die 120 Ohm Abschlusswiderstände verwiesen, ohne Angabe der Leitungslängen.

Klar kann man auch den Wellenwiderstand berechnen, und berechnete Widerstände einbauen, aber bei 9.6 K sollten doch Daten kommen, wenn 120 Ohm eingelötet sind. Die Leitung ist geschirmt und beidseitig mit GND verbunden.

Der Digitus hat einen 5V Anschluss. Den habe ich frei gelassen. ???
Ich habe aber von Pullupwiderstände gelesen, jeweils 390Ohm gegen 5V bzw. GND???

https://www.mikrocontroller.net/topic/97551#845017


Am Anfang UND am Ende des Busses wir je ein 120R zw. A und B geschaltet.
Des weiteren am Anfang UND am Ende jeweils ein 390R gegen +5V und GND,
wob ei es hier sehr wichtig ist, dass von A ein 390R nach +5V geht und
von B ein 390R gegen Masse. NICHT ungekehrt !!!


Was denkst du? Macht das Sinn, oder sind die Pullup/down nicht bereits im Gerät verbaut?

Gruß Joerky



wthiess

Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

pc1246

Moin
Also grundsaetzlich sollte jede RS485-Leitung an beiden Enden mit einem 120Ohm Widerstand abgeschlossen werden! Bei der Laenge waere es aber eher kein Problem diese nicht zu haben! Warum Du allerdings den Schirm auf beiden Seiten mit GND verbindest, wenn ich das richtig verstanden habe, verstehe ich nicht! Ok, auch hier haben wir bei der Laenge eher keine Stoerungen zu erwarten, aber trotzdem solltest Du ihn nur auf einer Seite auflegen! Wenn Du ihn allerdings als den dritten Ausgleichsleiter (GND) nutzt, dann musst Du es so lassen!
Pullup und Pulldown koennen noch ein Thema sein! Da wuerde ich einfach mal probieren.
Was Du allerdings beachten solltest, ist die Moeglichkeit, dass sowohl der Digitus, als auch der SDM630 solche Widerstaende eingebaut haben kann. (Evtl. parametrierbar)
Ein putty als Terminal sollte Dir auch auf einem nicht Windoofs PC zur Verfuegung stehen. Und da kannst du schon mal sehen ob der SDM630 etwas schickt!
Gruss Christoph
HP T610
Onkyo_AVR;Enigma2; SB_Server; SB_Player; HM-USB; PhilipsTV; harmony hub; Jeelink mit PCA301; Somfy; S7-300; LGW; HUE; HM-IP auf Charly; div

wthiess

#7
Ich verwende den hier
https://www.amazon.de/USB-RS485-Adapter-mit-Geh%C3%A4use/dp/B00I9H5J02/ref=sr_1_2?ie=UTF8&qid=1530098759&sr=8-2&keywords=modbus+usb
die beiden 390Ohm habe ich immer ausgeschalten. Bei so kurzen Leitungen machen auch mit 120 Probleme.
Also ausschalten und noch mal Verkabelung A- B+ prüfen. Beim Digitus steht + - Beim 630 steht A B.
Das waren mein ersten Probleme. Mittlerweile habe ich 4 versch. Stränge mit verschiedenen Adaptern.
Genaue Zeichnungen würden immer Helfen.
In deinem Code fehlen mir die Register????
Hier auch meine fhem.cfg inkl.Statistik (der 220M ist der Einphasige sonst ähnlich)
#Zähler1 Boiler
define Z1 ModbusSDM220M 9 30
attr Z1 IODev Zaehler
attr Z1 alias Boiler
attr Z1 dev-i-combine 5
attr Z1 dev-i-defPoll 1
attr Z1 group Zähler_Boiler
attr Z1 obj-i0-format %.1f V
attr Z1 obj-i0-reading Voltage__V
attr Z1 obj-i12-format %.f W
attr Z1 obj-i12-reading Power__W
attr Z1 obj-i342-format %.3f kWh
attr Z1 obj-i342-reading Energy_total__kWh
attr Z1 obj-i6-format %.2f A
attr Z1 obj-i6-reading Current__A
attr Z1 room Zaehler
attr Z1 sortby 1
attr Z1 stateFormat <p align="left"> lStunde:statEnergy_total__kWhHourLastcost lTag:statEnergy_total__kWhDayLastcost lMonat:statEnergy_total__kWhMonthLastcost lJahr:statEnergy_total__kWhYearLastcost <p align="left"> Aktuell:statEnergy_total__kWh <p align="left"> Letzt:statEnergy_total__kWhLast <p align="left"> Zählerstand:Energy_total__kWh <p align="left">Ampere:Current__A  Watt:Power__W
attr Z1 userReadings statEnergy_total__kWhHourLastcost { ReadingsVal("$name","statEnergy_total__kWhHourLast",0)*0.14 . " €";; },statEnergy_total__kWhDayLastcost { ReadingsVal("$name","statEnergy_total__kWhDayLast",0)*0.14 . " €";; },statEnergy_total__kWhMonthLastcost { ReadingsVal("$name","statEnergy_total__kWhMonthLast",0)*0.14 . " €";; },statEnergy_total__kWhYearLastcost { ReadingsVal("$name","statEnergy_total__kWhYearLast",0)*0.14 . " €";; }

define Z1stat statistics Z1
attr Z1stat deltaReadings Energy_total__kWh
attr Z1stat room Unsorted
attr Z1stat singularReadings Z1:Energy_total__kWh:Delta:(Hour|Day|Month|Year)

lg
Wolfgang
Raspberry Pi 3; 8xRelais; Aptodec Nano V3.0 Pro; FS1000a; RF-5V; Hama TS33C; 3x Brennerstuhl FunkSteckdosen; 9x Dooya funk Rollo; KWL Systemair VR400; Thermokon Modbusthermostat; diverse China Modbus Thermostate; 1-wire Bus; Telegram; QuickFhem; FhemNative; Firmata; Alexa ......

Turnschuh

Hallo Joerky,

konntest Du Dein Problem denn lösen?
Ich habe momentan das gleiche und finde den Fehler nicht.
Zuvor hat der SDM630 jedoch Readings aktualisiert, seit einem Update nicht mehr.

Cheers,
Andy