Neues Modul für Geräte mit Modbus Schnittstelle über RS232 bzw. RS485

Begonnen von StefanStrobel, 12 Juli 2014, 14:50:22

Vorheriges Thema - Nächstes Thema

WumpE

Hallo Stefan, kann ich das Modul bedenkenlos auch für Modbus ASCII nutzen? Ich habe hier eine OEG KMS-D+ Heizungsregelung die über USB-CDC mit Modbus-Ascii komuniziert. Mit C# konnte ich  schon Daten anfordern und auswerten, aber bei Perl bin ich totaler noob.

der Request schaut zB so aus
:80030000003C41\r\n

80 ist das Gerät, 03 die Funktion, 3C die Länge die abgefragt wird und 41 der LRC

als antwort erhalte ich darauf
:8003783204190C10070001006E0068100000DC0096000000000000100000DC009600000000000010000244000000000000000000000000000000000000000100000000000000000000009803C100000C2D0138027B0132024501340C1C0C25003C003CFE0CFE0C01090276002802440028FE0CFE0C003C003C0028B6

Was wo steht habe ich schon herausgefunden

Falls ASCII bei dir nicht geht, gibt es evtl nen Modul was ich dafür verwenden könnte?

Danke und Grüße

Über Mich: Stefan, Informatiker, Systementwicklung Prozessleittechnik
Server: NUC7i5 - Debian Docker
Container: FHEM,DEBMATIC,EMQX,NODERED,SONOS2MQTT,TRAEFIK,HOMEBRIDGE,DECONZ
Aktoren/Sensoren: HM-RF, HM-IP, EnergyCam, Shelly, MiLight, Hue, SONOS, OEG KMS-D+, Echo's, Worx
Frontends: Smartvisu 2.9

StefanStrobel

Hallo,

ASCII habe ich bisher nicht implementiert.
Ich setze es mal auf die Wunschliste.

Gruß
    Stefan

oniT

Hallo Stefan,

also ich komme nicht so recht weiter und benötige weitere Hilfe. Ja Du hast Recht:
Zitat
mit Function Code 10 ist sicher 10 hex, also 16 dezimal gemeint ("write multiple holding reigisters").
es ist natürlich FC16. Hier hatte ich mich vertan.

So, wenn ich es richtig sehe muss mit FC16 alle Register gleichzeitig geschrieben werden, oder? Das ist ja ein Ding. Ich bin schon ziemlich weit, aber nicht der Modbus Spezi. Von daher hänge ich jetzt hier an der Stelle fest.

Was habe ich?
- Modbusadresse 99 ist klar
- FC16 ist auch klar
- Startregister 256 ist auch klar
- Anzahl Register 9 ist ebenfalls klar

Jetzt habe ich inzwischen herausbekommen, dass hiermit:

63 10 01 00 00 08 10 00 00 00 00 00 00 00 00 00 00 00 42 00 64 00 01 00 00 13 98

die Leistungsstufen, was dem Register 261 entspricht, z.B. mit dem Wert 66 beschreiben kann. Dies habe ich aus einer fertigen Konfiguration von dem Terminalprogramm hterm. Damit funktioniert es.

Jedoch bekomme ich das so nicht in der Konfiguration in ModbusAttr hin. Hier mal die aktuelle Ausgabe.

Internals:
DEF        99 3600
DEST
INTERVAL   3600
IODev      ModbusRTU
MODBUSID   99
NAME       RTUWrite
NR         56
PROTOCOL   RTU
STATE      opened
TYPE       ModbusAttr
getList
setList    256 257 258 259 260 261:0,33,66,100 262 263:0,1 264:0,1
Helper:
lrecv      1468855663.14424
lsend      1468855663.11331
Lastread:
Attributes:
IODev      ModbusRTU
dev-h-combine 9
dev-h-defPoll 0
dev-h-write 16
dev-timing-timeout 4
obj-h256-reading 256
obj-h256-set 1
obj-h257-reading 257
obj-h257-set 1
obj-h258-reading 258
obj-h258-set 1
obj-h259-reading 259
   obj-h259-set 1
   obj-h260-reading 260
   obj-h260-set 1
   obj-h261-hint 0,33,66,100
   obj-h261-max 100
   obj-h261-min 0
   obj-h261-reading 261
   obj-h261-set 1
   obj-h262-max 100
   obj-h262-min 0
   obj-h262-reading 262
   obj-h262-set 1
   obj-h263-hint 0,1
   obj-h263-max 1
   obj-h263-min 0
   obj-h263-reading 263
   obj-h263-set 1
   obj-h264-hint 0,1
   obj-h264-max 1
   obj-h264-min 0
   obj-h264-reading 264
   obj-h264-set 1
   userattr   IODev dev-h-combine dev-h-defBswapRegs dev-h-defPoll dev-h-write dev-timing-timeout obj-h256-reading obj-h256-set obj-h257-reading obj-h257-set obj-h258-reading obj-h258-set obj-h259-reading obj-h259-set obj-h260-reading obj-h260-set obj-h261-hint obj-h261-max obj-h261-minobj-h261-reading obj-h261-set obj-h262-max obj-h262-min obj-h262-reading obj-h262-set obj-h263-hint obj-h263-max obj-h263-min obj-h263-reading obj-h263-set obj-h264-hint obj-h264-max obj-h264-min obj-h264-reading obj-h264-set verbose
   verbose    5


Wenn ich jetzt auf das Register 261 den Wert 66 schreibe, dann bekomme ich ein Timeout und es wird auch nicht dieser

63 10 01 00 00 08 10 00 00 00 00 00 00 00 00 00 00 00 42 00 64 00 01 00 00 13 98


Was mache ich falsch?
Warum ist die Länge des Kommandos nicht richtig?
Und wie muss die Konfiguration in ModbusAttr sein?

Hier noch die Ausgabe des Log:

2016.07.18 17:27:43.110 5: RTUWrite: Set: key for 261 = h261
2016.07.18 17:27:43.111 5: RTUWrite: Set: found option 261 (h261), setVal = 66
2016.07.18 17:27:43.111 5: RTUWrite: Set: checking value 66 against min 0
2016.07.18 17:27:43.112 5: RTUWrite: Set: checking value 66 against max 100
2016.07.18 17:27:43.113 5: ModbusRTU: Send adds fcode 16 for 261 to queue: 6310010500010200428796 pdu 1001050001020042, force send
2016.07.18 17:27:43.115 5: RTUWrite: ReadAnswer called and remaining timeout is 3.99820995330811 requested reading is 261
2016.07.18 17:27:43.135 5: ReadAnswer got: 63
2016.07.18 17:27:43.136 5: ReadAnswer got: 6310
2016.07.18 17:27:43.137 5: ReadAnswer got: 631000
2016.07.18 17:27:43.138 5: ReadAnswer got: 63100000
2016.07.18 17:27:43.140 5: ReadAnswer got: 6310000000
2016.07.18 17:27:43.142 5: ReadAnswer got: 631000000000
2016.07.18 17:27:43.142 5: ReadAnswer got: 631000000000c8
2016.07.18 17:27:43.143 5: ReadAnswer got: 631000000000c84b
2016.07.18 17:27:47.146 3: RTUWrite: Timeout2 in ReadAnswer for 261


Danke
Gruß
Tino
BBB - debian weezy - FHEM 5.7
HMLAN - HM-LC-Bl1-FM, HM-ES-PMSw1-PI, HM-LC-Sw1-FM, HM-TC-IT-WM-W-EU, HM-WDS40-TH-I, HM-Sen-Wa-Od, HM-Sec-RHS
Dimplex Wärmepumpe / Dimplex ZL 300 - Modbus TCP
SDM630M - Modbus TCP
SolarLog 200 / SMA SonnyBoy 1.5/2.5 - Modbus TCP

StefanStrobel

Hallo Tino,

Function Code 16 kann mehrere Register gleichzeitig schreiben. Das muss er aber nicht. Das Modul erzeugt deshalb auch einen anderen Request. In Deinem hterm-Beispiel werden 8 Register ab Adresse 256 zusammen geschrieben. 261 ist nur eines davon.
Das Fhem Modul versucht gezielt nur Register 261 zu schreiben.

Der Timeout ist seltsam, da ja eine Antwort ankommt. Das könnte ein Bug sein.

Als erstes solltest Du die aktuellste Version des Moduls 98_Modbus.pm verwenden. Einfach mit dem Fhem Befehl update aktualisieren.

Könntest Du dann bitte nochmal Deine Konfiguration posten - nicht als Ausgabe von list sondern den relevanten Auszug aus Deiner fhem.cfg für das Modbus-Modul und für das ModbusAttr-Modul.

Zudem bräuchte ich eine Log-Ausgabe, bei der sowohl das physische als auch das logische Modul verbose 5 gesetzt haben.
Da müsste einiges mehr an Log-Zeilen kommen.

Gruß
    Stefan

Bjoernar

Hallo,

ich habe seit inniger Zeit das Problem das ich mein Wechselrichter am morgen nicht mehr abfragen kann. Nachts ist er nicht erreichbar!
Ich vermute das es seit dem letzten oder vorletzten Update ist.

Typ: Fronius Symo per TCP
Komisch ist nur das ich zwei Module habe. 1x für den MPP Tracker und 1x für den WR selbst.

Gleiche IP gleiche ID

Das MPP Modul liefert sofort wieder Daten wenn er wieder erreichbar ist.
Der WR nicht.

Habe das Modul jetzt schon auf disable gesetzt wenn der WR nicht mehr erreichbar ist, hat aber auch nicht geholfen.

Wenn ich ein get mache erhalten ich "No FD"


2016.08.04 09:50:27 5: Cmd: >get Wechselrichter1 ActiveStateCode<
2016.08.04 09:50:27 5: Wechselrichter1: Get: key for ActiveStateCode = h00213
2016.08.04 09:50:27 5: Wechselrichter1: Get: Requesting ActiveStateCode (h00213)
2016.08.04 09:50:27 5: Wechselrichter1: Get: Queue is stil busy - taking over the read with ReadAnswer
2016.08.04 09:50:27 4: Wechselrichter1: Send called with h 00213 len 1 / span - to id 1, queue has 37 requests
2016.08.04 09:50:27 4: Wechselrichter1: Send queues fcode 3 for h 00213 (ActiveStateCode), len / span 1 : 002900000006010300d50001 pdu 0300d50001, force
2016.08.04 09:50:27 4: Wechselrichter1: sends 002900000006010300d50001 (fcode 3 to 1, tid 41 for ActiveStateCode (00213), len 1)
2016.08.04 09:50:27 5: SW: 002900000006010300d50001
2016.08.04 09:50:27 4: name: /fhem?detail=Wechselrichter1&dev.getWechselrichter1=Wechselrichter1&cmd.getWechselrichter1=get&arg.getWechselrichter1=ActiveStateCode&val.getWechselrichter1=&XHR=1&addLinks=1&fw_id=1445 / RL:27 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2016.08.04 09:50:28 4: Wechselrichter1: sends 00a40000000601039c9d0002 (fcode 3 to 1, tid 164 for Frequency__Hz (40093), len 2)
2016.08.04 09:50:28 5: SW: 00a40000000601039c9d0002


BUSY steht dann immer auf 1
nach einem shutdown restart ist alles wieder ok.

Hat jemand ein Idee?

Gruß
Björnar

StefanStrobel

Hallo Björnar,

Kommt da ein timeout?
Kannst Du mal ein größeres Stückchen
Log posten?

Gruß / Thanx
   Stefan

Bjoernar

Hallo,

ich werde heute Abend mal das logging mal wieder hochsetzen mal sehen was dann kommt:

Aufgefallen ist mit lediglich folgendes (Loglevel = 3)

2016.08.04 22:28:41 1: 192.168.178.21:502 disconnected, waiting to reappear (Wechselrichter1)
2016.08.04 22:28:41 1: 192.168.178.21:502 disconnected, waiting to reappear (Wechselrichter1_MPPT)


danach kommen solche Meldungen nur noch für Wechselrichter1_MPPT und nicht für Wechselrichter1
2016.08.05 02:13:19 1: 192.168.178.21:502 reappeared (Wechselrichter1_MPPT)
2016.08.05 02:29:42 1: 192.168.178.21:502 disconnected, waiting to reappear (Wechselrichter1_MPPT)


Gruß
Björnar

Bjoernar

Das bekomme ich wenn es nicht funktioniert:

Zitat2016.08.05 07:21:08 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00dc0000000601039ca50002, last Buffer:
2016.08.05 07:21:08 4: Wechselrichter1: sends 00680000000601039c8d0002 (fcode 3 to 1, tid 104 for Current_L3__A (40077), len 2)
2016.08.05 07:21:10 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00680000000601039c8d0002, last Buffer:
2016.08.05 07:21:10 4: Wechselrichter1: sends 005f0000000601039c8f0002 (fcode 3 to 1, tid 95 for Voltage_L1_to_L2__V (40079), len 2)
2016.08.05 07:21:12 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 005f0000000601039c8f0002, last Buffer:
2016.08.05 07:21:12 4: Wechselrichter1: sends 00a90000000601039c870002 (fcode 3 to 1, tid 169 for Current_total__A (40071), len 2)
2016.08.05 07:21:14 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00a90000000601039c870002, last Buffer:
2016.08.05 07:21:14 4: Wechselrichter1: sends 00a20000000601039c8b0002 (fcode 3 to 1, tid 162 for Current_L2__A (40075), len 2)
2016.08.05 07:21:14 4: Wechselrichter1: update timer modified: will call GetUpdate in 60.0 seconds at 2016-08-05 07:22:14
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request ActiveStateCode
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Power_Site__W
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Energy_Day__kWh
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Energy_Year__kWh
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Energy_Total__kWh
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Current_total__A
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Current_L1__A
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Current_L2__A
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Current_L3__A
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Voltage_L1_to_L2__V
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Voltage_L2_to_L3__V
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Voltage_L3_to_L1__V
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Voltage_L1__V
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Voltage_L2__V
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Voltage_L3__V
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Power__W
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Frequency__Hz
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Power__VA
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Power__VAr
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request PowerFactor
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Energy_total__kWh
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Current_DC__A
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Voltage_DC__V
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Power_DC__W
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Temp_Cabinet__C
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Temp_Coolant__C
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Temp_Transformer__C
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Temp_other__C
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Operating_State
2016.08.05 07:21:14 4: Wechselrichter1: GetUpdate will request Operating_State_Vendor
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 00501 len 4 / span 4 to id 1, queue has 7 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 00501 (Energy_Day__kWh), len / span 4 : 003300000006010301f50004 pdu 0301f50004
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 00499 len 2 / span 2 to id 1, queue has 8 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 00499 (Power_Site__W), len / span 2 : 001f00000006010301f30002 pdu 0301f30002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40107 len 2 / span 2 to id 1, queue has 9 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40107 (Power_DC__W), len / span 2 : 00cf0000000601039cab0002 pdu 039cab0002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40117 len 1 / span 1 to id 1, queue has 10 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40117 (Operating_State), len / span 1 : 007e0000000601039cb50001 pdu 039cb50001
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40081 len 2 / span 2 to id 1, queue has 11 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40081 (Voltage_L2_to_L3__V), len / span 2 : 00720000000601039c910002 pdu 039c910002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40113 len 2 / span 2 to id 1, queue has 12 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40113 (Temp_Transformer__C), len / span 2 : 005f0000000601039cb10002 pdu 039cb10002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40093 len 2 / span 2 to id 1, queue has 13 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40093 (Frequency__Hz), len / span 2 : 00330000000601039c9d0002 pdu 039c9d0002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40091 len 2 / span 2 to id 1, queue has 14 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40091 (Power__W), len / span 2 : 00f50000000601039c9b0002 pdu 039c9b0002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40083 len 2 / span 2 to id 1, queue has 15 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40083 (Voltage_L3_to_L1__V), len / span 2 : 006f0000000601039c930002 pdu 039c930002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 00509 len 4 / span 4 to id 1, queue has 16 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 00509 (Energy_Total__kWh), len / span 4 : 007300000006010301fd0004 pdu 0301fd0004
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40089 len 2 / span 2 to id 1, queue has 17 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40089 (Voltage_L3__V), len / span 2 : 00c70000000601039c990002 pdu 039c990002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 00505 len 4 / span 4 to id 1, queue has 18 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 00505 (Energy_Year__kWh), len / span 4 : 00e000000006010301f90004 pdu 0301f90004
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40115 len 2 / span 2 to id 1, queue has 19 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40115 (Temp_other__C), len / span 2 : 00050000000601039cb30002 pdu 039cb30002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40101 len 2 / span 2 to id 1, queue has 20 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40101 (Energy_total__kWh), len / span 2 : 002f0000000601039ca50002 pdu 039ca50002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40099 len 2 / span 2 to id 1, queue has 21 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40099 (PowerFactor), len / span 2 : 00770000000601039ca30002 pdu 039ca30002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40103 len 2 / span 2 to id 1, queue has 22 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40103 (Current_DC__A), len / span 2 : 00620000000601039ca70002 pdu 039ca70002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40111 len 2 / span 2 to id 1, queue has 23 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40111 (Temp_Coolant__C), len / span 2 : 007b0000000601039caf0002 pdu 039caf0002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40105 len 2 / span 2 to id 1, queue has 24 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40105 (Voltage_DC__V), len / span 2 : 00230000000601039ca90002 pdu 039ca90002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40073 len 2 / span 2 to id 1, queue has 25 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40073 (Current_L1__A), len / span 2 : 00dc0000000601039c890002 pdu 039c890002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40077 len 2 / span 2 to id 1, queue has 26 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40077 (Current_L3__A), len / span 2 : 00630000000601039c8d0002 pdu 039c8d0002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40079 len 2 / span 2 to id 1, queue has 27 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40079 (Voltage_L1_to_L2__V), len / span 2 : 00550000000601039c8f0002 pdu 039c8f0002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40085 len 2 / span 2 to id 1, queue has 28 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40085 (Voltage_L1__V), len / span 2 : 00510000000601039c950002 pdu 039c950002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40118 len 1 / span 1 to id 1, queue has 29 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40118 (Operating_State_Vendor), len / span 1 : 00e80000000601039cb60001 pdu 039cb60001
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40109 len 2 / span 2 to id 1, queue has 30 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40109 (Temp_Cabinet__C), len / span 2 : 009f0000000601039cad0002 pdu 039cad0002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40095 len 2 / span 2 to id 1, queue has 31 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40095 (Power__VA), len / span 2 : 00040000000601039c9f0002 pdu 039c9f0002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40075 len 2 / span 2 to id 1, queue has 32 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40075 (Current_L2__A), len / span 2 : 00820000000601039c8b0002 pdu 039c8b0002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40071 len 2 / span 2 to id 1, queue has 33 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40071 (Current_total__A), len / span 2 : 00d90000000601039c870002 pdu 039c870002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40097 len 2 / span 2 to id 1, queue has 34 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40097 (Power__VAr), len / span 2 : 00200000000601039ca10002 pdu 039ca10002
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 00213 len 1 / span 1 to id 1, queue has 35 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 00213 (ActiveStateCode), len / span 1 : 008700000006010300d50001 pdu 0300d50001
2016.08.05 07:21:14 4: Wechselrichter1: Send called with h 40087 len 2 / span 2 to id 1, queue has 36 requests
2016.08.05 07:21:14 4: Wechselrichter1: Send queues fcode 3 for h 40087 (Voltage_L2__V), len / span 2 : 004b0000000601039c970002 pdu 039c970002
2016.08.05 07:21:16 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00a20000000601039c8b0002, last Buffer:
2016.08.05 07:21:16 4: Wechselrichter1: sends 007d0000000601039c9f0002 (fcode 3 to 1, tid 125 for Power__VA (40095), len 2)
2016.08.05 07:21:18 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 007d0000000601039c9f0002, last Buffer:
2016.08.05 07:21:18 4: Wechselrichter1: sends 00290000000601039cad0002 (fcode 3 to 1, tid 41 for Temp_Cabinet__C (40109), len 2)
2016.08.05 07:21:20 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00290000000601039cad0002, last Buffer:
2016.08.05 07:21:20 4: Wechselrichter1: sends 00dd0000000601039cb60001 (fcode 3 to 1, tid 221 for Operating_State_Vendor (40118), len 1)
2016.08.05 07:21:22 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00dd0000000601039cb60001, last Buffer:
2016.08.05 07:21:22 4: Wechselrichter1: sends 00ea0000000601039c950002 (fcode 3 to 1, tid 234 for Voltage_L1__V (40085), len 2)
2016.08.05 07:21:24 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00ea0000000601039c950002, last Buffer:
2016.08.05 07:21:24 4: Wechselrichter1: sends 00db0000000601039c970002 (fcode 3 to 1, tid 219 for Voltage_L2__V (40087), len 2)
2016.08.05 07:21:26 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00db0000000601039c970002, last Buffer:
2016.08.05 07:21:26 4: Wechselrichter1: sends 00a800000006010300d50001 (fcode 3 to 1, tid 168 for ActiveStateCode (00213), len 1)
2016.08.05 07:21:28 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00a800000006010300d50001, last Buffer:
2016.08.05 07:21:28 4: Wechselrichter1: sends 00bc0000000601039ca10002 (fcode 3 to 1, tid 188 for Power__VAr (40097), len 2)
2016.08.05 07:21:30 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00bc0000000601039ca10002, last Buffer:
2016.08.05 07:21:30 4: Wechselrichter1: sends 003300000006010301f50004 (fcode 3 to 1, tid 51 for Energy_Day__kWh (00501), len 4)
2016.08.05 07:21:32 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 003300000006010301f50004, last Buffer:
2016.08.05 07:21:32 4: Wechselrichter1: sends 001f00000006010301f30002 (fcode 3 to 1, tid 31 for Power_Site__W (00499), len 2)
2016.08.05 07:21:34 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 001f00000006010301f30002, last Buffer:
2016.08.05 07:21:34 4: Wechselrichter1: sends 00cf0000000601039cab0002 (fcode 3 to 1, tid 207 for Power_DC__W (40107), len 2)
2016.08.05 07:21:36 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00cf0000000601039cab0002, last Buffer:
2016.08.05 07:21:36 4: Wechselrichter1: sends 007e0000000601039cb50001 (fcode 3 to 1, tid 126 for Operating_State (40117), len 1)
2016.08.05 07:21:38 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 007e0000000601039cb50001, last Buffer:
2016.08.05 07:21:38 4: Wechselrichter1: sends 00720000000601039c910002 (fcode 3 to 1, tid 114 for Voltage_L2_to_L3__V (40081), len 2)
2016.08.05 07:21:40 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00720000000601039c910002, last Buffer:
2016.08.05 07:21:40 4: Wechselrichter1: sends 005f0000000601039cb10002 (fcode 3 to 1, tid 95 for Temp_Transformer__C (40113), len 2)
2016.08.05 07:21:42 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 005f0000000601039cb10002, last Buffer:
2016.08.05 07:21:42 4: Wechselrichter1: sends 00330000000601039c9d0002 (fcode 3 to 1, tid 51 for Frequency__Hz (40093), len 2)
2016.08.05 07:21:44 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00330000000601039c9d0002, last Buffer:
2016.08.05 07:21:44 4: Wechselrichter1: sends 00f50000000601039c9b0002 (fcode 3 to 1, tid 245 for Power__W (40091), len 2)
2016.08.05 07:21:46 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00f50000000601039c9b0002, last Buffer:
2016.08.05 07:21:46 4: Wechselrichter1: sends 006f0000000601039c930002 (fcode 3 to 1, tid 111 for Voltage_L3_to_L1__V (40083), len 2)
2016.08.05 07:21:48 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 006f0000000601039c930002, last Buffer:
2016.08.05 07:21:48 4: Wechselrichter1: sends 007300000006010301fd0004 (fcode 3 to 1, tid 115 for Energy_Total__kWh (00509), len 4)
2016.08.05 07:21:50 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 007300000006010301fd0004, last Buffer:
2016.08.05 07:21:50 4: Wechselrichter1: sends 00c70000000601039c990002 (fcode 3 to 1, tid 199 for Voltage_L3__V (40089), len 2)
2016.08.05 07:21:52 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00c70000000601039c990002, last Buffer:
2016.08.05 07:21:52 4: Wechselrichter1: sends 00e000000006010301f90004 (fcode 3 to 1, tid 224 for Energy_Year__kWh (00505), len 4)
2016.08.05 07:21:54 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00e000000006010301f90004, last Buffer:
2016.08.05 07:21:54 4: Wechselrichter1: sends 00050000000601039cb30002 (fcode 3 to 1, tid 5 for Temp_other__C (40115), len 2)
2016.08.05 07:21:56 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00050000000601039cb30002, last Buffer:
2016.08.05 07:21:56 4: Wechselrichter1: sends 002f0000000601039ca50002 (fcode 3 to 1, tid 47 for Energy_total__kWh (40101), len 2)
2016.08.05 07:21:58 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 002f0000000601039ca50002, last Buffer:
2016.08.05 07:21:58 4: Wechselrichter1: sends 00770000000601039ca30002 (fcode 3 to 1, tid 119 for PowerFactor (40099), len 2)
2016.08.05 07:22:00 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00770000000601039ca30002, last Buffer:
2016.08.05 07:22:00 4: Wechselrichter1: sends 00620000000601039ca70002 (fcode 3 to 1, tid 98 for Current_DC__A (40103), len 2)
2016.08.05 07:22:02 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00620000000601039ca70002, last Buffer:
2016.08.05 07:22:02 4: Wechselrichter1: sends 007b0000000601039caf0002 (fcode 3 to 1, tid 123 for Temp_Coolant__C (40111), len 2)
2016.08.05 07:22:04 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 007b0000000601039caf0002, last Buffer:
2016.08.05 07:22:04 4: Wechselrichter1: sends 00230000000601039ca90002 (fcode 3 to 1, tid 35 for Voltage_DC__V (40105), len 2)
2016.08.05 07:22:06 4: Wechselrichter1: timeout waiting for 3 from 1, Request was 00230000000601039ca90002, last Buffer:
2016.08.05 07:22:06 4: Wechselrichter1: sends 00dc0000000601039c890002 (fcode 3 to 1, tid 220 for Current_L1__A (40073), len 2)

StefanStrobel

Hallo Bjoernar,

wenn die TCP-Verbindung verloren geht, dann versucht das Modbus-Modul regelmäßig die Verbindung neu aufzubauen. Allerdings funktioniert das nur dann zu verlässig, wenn die Gegenseite die Verbindung aktiv schließt und nicht wenn die Verbindung physisch getrennt wird. Sonst bleibt das lange unbemerkt. Das ist ein Problem mit TCP und wurde im Forum schon oft diskutiert.
Es könnte also sein dass bei einem Deiner Geräte Fhem nicht bemerkt dass die Verbindung weg ist.
Für diesen Fall habe ich ein Attribut vorgesehen: maxTimeoutsToReconnect
setze das mal auf zwei, dann baut Fhem die TCP-Verbindung neu auf wenn zweimal hintereinander ein Timeout auftritt.
Ich könnte mir vorstellen, dass das das Problem schon löst.

Gruss
     Stefan

Bjoernar

Zitat von: StefanStrobel am 06 August 2016, 11:59:44
Hallo Bjoernar,

wenn die TCP-Verbindung verloren geht, dann versucht das Modbus-Modul regelmäßig die Verbindung neu aufzubauen. Allerdings funktioniert das nur dann zu verlässig, wenn die Gegenseite die Verbindung aktiv schließt und nicht wenn die Verbindung physisch getrennt wird. Sonst bleibt das lange unbemerkt. Das ist ein Problem mit TCP und wurde im Forum schon oft diskutiert.
Es könnte also sein dass bei einem Deiner Geräte Fhem nicht bemerkt dass die Verbindung weg ist.
Für diesen Fall habe ich ein Attribut vorgesehen: maxTimeoutsToReconnect
setze das mal auf zwei, dann baut Fhem die TCP-Verbindung neu auf wenn zweimal hintereinander ein Timeout auftritt.
Ich könnte mir vorstellen, dass das das Problem schon löst.

Gruss
     Stefan
Danke das hat zum gewünschten Erfolg geführt.

Gesendet von meinem Moto G (4) mit Tapatalk


Bjoernar

Zitat von: Bjoernar am 07 August 2016, 08:53:35
Danke das hat zum gewünschten Erfolg geführt.

Gesendet von meinem Moto G (4) mit Tapatalk

Hallo,

war leider doch nicht von erfolg gekrönt, bekomme nun folgende Meldung:

2016.08.09 06:59:55 3: Wechselrichter1: no IODev found for Wechselrichter1

Gruß
Brörnar

StefanStrobel

Hi Björnar,

dauerhaft oder nur kurzzeitig? In welchem Kontext?

Die Meldung sollte kommen wenn keine Verbindung besteht, aber dennoch ein get oder set Kommando ausgeführt wurde.
Sobald Fhem das nächste Mal erfolgreich die Verbindung wiederherstellen konnte, sollte die Meldung nicht mehr kommen.

Gruss
    Stefan

Bjoernar

Hallo,

ab ca. 21:56 war der Wechselrichter1 nicht mehr erreichbar.
Danch versucht er nach dem timeouts scheinbar ein reconnect.
Um 23:16 behauptet er das er ein reconnect gemacht hat. Gerät war aber definitiv nicht erreichbar.
Danach folgen bis zu restart von fhem immer die "no IODev found" Fehler.

Hilft das weiter?

Danke und Gruß
Björnar

2016.08.09 21:56:52 3: Wechselrichter1: 2 successive timeouts, trying to reconnect
2016.08.09 21:56:52 3: Opening Wechselrichter1 device 192.168.178.21:502
2016.08.09 21:56:55 3: Can't connect to 192.168.178.21:502: Die Wartezeit für die Verbindung ist abgelaufen
2016.08.09 23:16:51 3: Wechselrichter1: 3 successive timeouts, trying to reconnect
2016.08.09 23:16:51 3: Opening Wechselrichter1 device 192.168.178.21:502
2016.08.09 23:16:51 3: Wechselrichter1 device opened
2016.08.09 23:17:49 3: Wechselrichter1: no IODev found for Wechselrichter1
2016.08.09 23:18:49 3: Wechselrichter1: no IODev found for Wechselrichter1
2016.08.09 23:19:49 3: Wechselrichter1: no IODev found for Wechselrichter1
2016.08.09 23:20:49 3: Wechselrichter1: no IODev found for Wechselrichter1
2016.08.09 23:21:49 3: Wechselrichter1: no IODev found for Wechselrichter1
2016.08.09 23:22:49 3: Wechselrichter1: no IODev found for Wechselrichter1
2016.08.09 23:23:49 3: Wechselrichter1: no IODev found for Wechselrichter1
2016.08.09 23:24:49 3: Wechselrichter1: no IODev found for Wechselrichter1

StefanStrobel

Hallo,

ja - das hilft weiter. Da ist noch ein Bug im Code...

Gruss
    Stefan

Bjoernar

...das klingt gut ;-) zumindest muss ich nicht mehr weiter suchen... Was mir noch aufgefallen ist, selbst wenn ich das Device auf disable setze fragt er weiter ab...

Gruß Björnar

Gesendet von meinem Moto G (4) mit Tapatalk