neues Modul: SIEMENS Anbindung / S7 / Siemens Logo

Begonnen von charlie71, 12 August 2014, 15:33:23

Vorheriges Thema - Nächstes Thema

thmarx

Der Fehler -1025 ist ja an sich nicht schlimm. Nur dass FHEM dann immer komplett abgeschmiert ist stört halt. Ich konnte es mit der letzten Version aber bisher nicht mehr beobachten. Zumindest lässt sich der Komplettabsturz mit "eval" abfangen.
Was jetzt noch fehlt ist der korrekte Autoreconnect. Das Modul versucht aktuell ständig (alle 2 Sekunden, solange ist das timeout beim portopen) ein reconnect (sollte aber doch 10 Sekunden abwarten?).
MultiWrite scheint zu funktionieren, danke bis dahin für die gute Arbeit...

Gruss
Thomas

charlie71

Hallo,

so ich nun wieder eine neue Version (V1.10).
Ich habe mehrmals die Netzwerkverbindung getrennt und wieder hergestellt. Das Modul hat sauber reconnected.

Versionsinfo
Changes:
* ich hab das libnodave timeout von 1500s auf 10s reduziert.
* neue Konfigurationsyntax für S7_DRead / S7_DWrite
(Der wichtigte Hinweis gleich vorab. Die bestehende Configs müssen NICHT angepasst werden. Das Modul erkennt selbstständig die alte Syntax)
Es können nun die Bits wie in einer SPS Umgebung gewohnt adressiert werden:
define Logo7_Q1 S7_DRead db 0 942.1
Ich denke das Konfigurieren sollte nun viel einfacher werden.

new Features
* es können nun auch floats gelesen und geschrieben werden.

bitte um Feedback.

lG
Charlie71




moonsorrox

#167
kurze zwischen Frage wo befindet sich nochmal die "Nodave.xs" in /root/libnodave-0.8.5/PERL oder in /root/libnodave-0.8.5

übrigens hatte ich gerade beim einspielen der Dateien diesen Fehler wiedermal, passiert immer dann wenn Fhem Neustart gemacht wird..! (nicht neu einlesen)
Can't locate auto/Nodave/autosplit.ix in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl . ./FHEM) at /usr/share/perl/5.14/AutoLoader.pm line 173, <> line 12. at /usr/lib/perl/5.14/Nodave.pm line 33
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

Porsti

Hallo Charlie71,

habe gerade auf deine Version 10 geupdatet.
Die Version läuft aber leider sehe ich der Log-Datei und über putty alle 10sec.
den folgenden Fehler:

DIE:Nodave::daveReadBytes: dc is not of type DaveConnection at ./FHEM/44_S7.pm line 615.

Muss ich nur die Dateien aus dem Ordner FHEM überschreiben aus V1.8 oder alle anderen auch?

Gruß
Porsti
____________________________________
fhem 6.2  auf Raspberry 3b
Homematic HM-CC-RT-DN / HM-TC-IT-WM-W-EU / HM-SEC-SCo / HM-LC-SW1-PL2
SIGNALduino, KNX (Merten, MDT, Siemens, ABB)

moonsorrox

rückmeldung zum Timeout...!
der besteht bei mir nach wie vor, hier mal wie es aussieht (etwas anders als vorher)
2014.12.22 14:20:18 3: mylogo S7_connect: connect to PLC: 0
2014.12.22 14:20:08 3: mylogo S7_readFromPLC daveReadBytes error: -1025=Timeout when waiting for PLC response
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

charlie71

Hallo moonsorrox,

die "Nodave.xs" befindet sich in /root/libnodave-0.8.5/PERL

@Timeout:
Stürtzt FHEM nach der Timeoutmeldung  komplett bei dir ab, oder funktioniert FHEM weiterhin?

lg
Charlie71

charlie71

Hallo Porsti,

nur bei einem Update von einer Version < 1.8 müssen die libs getauscht werden. Seit der Version 1.8 sind sie wieder gleich.

Die Fehlermeldung hängt meiner Meinung nach mit dem Timeoutfehler zusammen.

lG
Charlie71

moonsorrox

#172
Zitat von: charlie71 am 22 Dezember 2014, 18:36:56
die "Nodave.xs" befindet sich in /root/libnodave-0.8.5/PERL
Ok vielen Dank, da war sie auch, aber an der wird es wohl nicht liegen, habe aber trotzdem die aus dem neuen zip eingespielt..

Zitat von: charlie71 am 22 Dezember 2014, 18:36:56
@Timeout:
Stürtzt FHEM nach der Timeoutmeldung  komplett bei dir ab, oder funktioniert FHEM weiterhin?
ja komplett weg, ich schaue dann mit putty drauf und sehe dann "fhem is not running" mit der Fehlermeldung in einer reboot Schleife.
Ich breche die Fehlermeldung/Fhem dann ab und versuche Fhem neu zu starten, dass klappt manchmal nicht beim 1. mal, wohl weil er in einer reboot Schleife ist.
Aber ich bekomme es aber wieder zum laufen mit /etc/init.d/fhem start
Intel-NUC i5: FHEM-Server 6.1 :: Perl v5.18.2

Homematic: HM-USB-CFG2,HM-CFG-LAN Adapter, HM-LC-BL1-FM, HM-LC-Sw1PBU-FM, HM-LC-Sw1-PI-2, HM-WDS10-TH-O, HM-CC-TC, HM-LC-SW2-FM

thmarx

Zitat* ich hab das libnodave timeout von 1500s auf 10s reduziert.
Ich denke, Du hast das Timeout auf 10ms reduziert. Bei mir läufts damit total unstabil (hohe Latenz im Netzwerk, Status wechselt ständig). Habe jetzt mal probehalber 100ms eingestellt, damit gehts wieder wie vorher.

Gruss
Thomas

charlie71

Hallo

ein wenig bin ich nun weiter:
Wenn die Länge eines Datensatz zB in der ReadDBConfig > als die MaxPDU length ist dann kommt immer die Timeoutfehlermeldung.

Bitte prüft eure Configs ob jemand die Länge > 200 konfiguriert hat.

lG
Charlie71

Porsti

Hallo,

habe hier mal den Teil der Config für die Länge.


define mylogo S7 2 0 192.168.10.50 0 0 102 10 960
attr mylogo ReadDB-Config 0 4 6 10 0 1024 2 10 0 1064 2 10 0 1104 2 10
attr mylogo WriteDB-Config 0 1246 15


Kann ich mit dem lesen von 12 Worten über die länge einen Timeout erhalten?
Mehr ist bei mir nicht definiert.
Jetzt verarbeite ich nur noch die Daten die ich oben abrufe oder schreibe.

Gruß
Porsti
____________________________________
fhem 6.2  auf Raspberry 3b
Homematic HM-CC-RT-DN / HM-TC-IT-WM-W-EU / HM-SEC-SCo / HM-LC-SW1-PL2
SIGNALduino, KNX (Merten, MDT, Siemens, ABB)

charlie71

Hallo Porsti,

die Config ist OK. Leider hat Thomas recht, ich habe den Timeout auf 10ms gestellt. Bin gerade dabei das zu fixen inclusive der maxPDU abfrage. Neue files kommen bald.

lG
Charlie71

Zitat von: Porsti am 22 Dezember 2014, 20:48:36
Hallo,

habe hier mal den Teil der Config für die Länge.


define mylogo S7 2 0 192.168.10.50 0 0 102 10 960
attr mylogo ReadDB-Config 0 4 6 10 0 1024 2 10 0 1064 2 10 0 1104 2 10
attr mylogo WriteDB-Config 0 1246 15


Kann ich mit dem lesen von 12 Worten über die länge einen Timeout erhalten?
Mehr ist bei mir nicht definiert.
Jetzt verarbeite ich nur noch die Daten die ich oben abrufe oder schreibe.

Gruß
Porsti

charlie71

Hallo

Vielen Dank für Eure schnellen Rückmeldungen.

Hier die neue Version mit folgenden Fixes:
* Timeout is set to 500ms
* Block length is checked against the maxPDUlength

Wichtig:Die max PDULength für die Logo7 ist 240!
Vielleicht kann mir jemand die Info geben auf welche PDU Length die Logo8 unterstützt.

Version ist soweit auf meinen 2 Logos getestet. Es kommt kein Timeoutfehler.
Nun warte ich auf eure Rückmeldung.

lG
Charlie71

John

#178
Hi Charlie71

ZitatVielleicht kann mir jemand die Info geben auf welche PDU Length die Logo8 unterstützt.
Ist genauso groß wie Logo 7 (240 Byte).

Aber das sind Brutto-Daten. Um die effektive Netto-Groesse für Nutzdaten zu erhalten musst du den Protokoll-Overhead noch abziehen.
Der ist bei MultiRead natürlich größer als bei einem einfachen DBRead.

siehe Protokollaufbau: http://snap7.sourceforge.net/siemens_comm.html#s7_protocol

Snap7 ermittelt übrigens die die PDU-Groesse automatisch. (negotiated)

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

thmarx

Guten Morgen,

habe V1.11 getestet, läuft soweit.
ZitatEs kommt kein Timeoutfehler.
Nun warte ich auf eure Rückmeldung.
bei mir leider:
014.12.23 00:04:28 1: Including ../logo.cfg
2014.12.23 00:04:28 3: telnetPort: port 7373 opened
2014.12.23 00:04:28 3: WEB: port 8383 opened
2014.12.23 00:04:28 3: logo32 S7_connect: connect to PLC: 0
2014.12.23 00:04:28 3: logo19 S7_connect: connect to PLC: 0
2014.12.23 00:04:29 3: logo21 S7_connect: connect to PLC: 0
2014.12.23 00:04:29 1: Including tmp/fhem.logo.save
2014.12.23 00:04:29 1: Including ../logo.cfg
2014.12.23 00:04:29 3: telnetPort: port 7373 opened
2014.12.23 00:04:29 3: WEB: port 8383 opened
2014.12.23 00:04:29 3: logo32 S7_connect: connect to PLC: 0
2014.12.23 00:04:29 3: logo19 S7_connect: connect to PLC: 0
2014.12.23 00:04:29 3: logo21 S7_connect: connect to PLC: 0
2014.12.23 00:04:29 1: Including tmp/fhem.logo.save
2014.12.23 00:04:33 3: S7_AWrite_Set
2014.12.23 00:04:33 3: S7_AWrite_Set
2014.12.23 00:05:18 3: S7_AWrite_Set
2014.12.23 00:05:18 3: S7_AWrite_Set
2014.12.23 00:05:43 3: S7_AWrite_Set
2014.12.23 00:05:43 3: S7_AWrite_Set
2014.12.23 00:05:52 3: S7_AWrite_Set
2014.12.23 00:05:52 3: S7_AWrite_Set
2014.12.23 00:06:01 3: S7_AWrite_Set
2014.12.23 00:06:01 3: S7_AWrite_Set
2014.12.23 00:06:10 3: S7_AWrite_Set
2014.12.23 00:06:10 3: S7_AWrite_Set
2014.12.23 00:09:09 3: S7_AWrite_Set
2014.12.23 00:09:09 3: S7_AWrite_Set
2014.12.23 00:16:06 3: S7_AWrite_Set
2014.12.23 00:16:06 3: S7_AWrite_Set
2014.12.23 00:29:59 3: logo32 S7_readFromPLC daveReadBytes error: -1025=Timeout when waiting for PLC response
2014.12.23 00:30:00 3: logo19 S7_readFromPLC daveReadBytes error: -1025=Timeout when waiting for PLC response
2014.12.23 00:30:00 3: logo32 S7_readFromPLC daveReadBytes error: -1025=Timeout when waiting for PLC response
2014.12.23 00:30:00 3: logo32 S7_Undef closeSocket error: -1=no message defined!
2014.12.23 00:30:00 3: logo19 S7_readFromPLC daveReadBytes error: -1025=Timeout when waiting for PLC response
2014.12.23 00:30:00 3: logo19 S7_Undef closeSocket error: -1=no message defined!
2014.12.23 00:30:00 3: logo32 S7_readFromPLC daveReadBytes error: -1025=Timeout when waiting for PLC response
2014.12.23 00:30:00 3: logo32 S7_Undef closeSocket error: -1=no message defined!
2014.12.23 00:30:00 3: logo19 S7_readFromPLC daveReadBytes error: -1025=Timeout when waiting for PLC response
2014.12.23 00:30:00 3: logo19 S7_Undef closeSocket error: -1=no message defined!
2014.12.23 00:30:00 3: S7_DWrite: logo32_Q5_w disconnected
2014.12.23 00:30:00 3: S7_DWrite: logo32_Q6_w disconnected
2014.12.23 00:30:00 3: S7_DWrite: logo32_Q8_w disconnected
2014.12.23 00:30:01 3: S7_DWrite_GetUpdate: logo32_Q5_w disconnected
2014.12.23 00:30:01 3: S7_DWrite_GetUpdate: logo32_Q6_w disconnected
2014.12.23 00:30:01 3: S7_DWrite_GetUpdate: logo32_Q8_w disconnected
2014.12.23 00:30:01 3: S7_DWrite: logo32_Q5_w disconnected
2014.12.23 00:30:01 3: S7_DWrite: logo32_Q7_w disconnected
2014.12.23 00:30:02 3: S7_DWrite: logo32_Q6_w disconnected
2014.12.23 00:30:02 3: S7_DWrite_GetUpdate: logo32_Q5_w disconnected
2014.12.23 00:30:02 3: S7_DWrite_GetUpdate: logo32_Q7_w disconnected
2014.12.23 00:30:03 3: S7_DWrite: logo32_Q5_w disconnected
2014.12.23 00:30:03 3: S7_DWrite_GetUpdate: logo32_Q6_w disconnected
2014.12.23 00:30:04 3: S7_DWrite: logo32_Q8_w disconnected
2014.12.23 00:30:04 3: S7_DWrite_GetUpdate: logo32_Q5_w disconnected
2014.12.23 00:30:05 3: S7_DWrite: logo32_Q5_w disconnected
2014.12.23 00:30:05 3: S7_DWrite: logo32_Q6_w disconnected
2014.12.23 00:30:05 3: S7_DWrite: logo32_Q7_w disconnected
2014.12.23 00:30:05 3: S7_DWrite_GetUpdate: logo32_Q8_w disconnected
2014.12.23 00:30:06 3: S7_DWrite_GetUpdate: logo32_Q5_w disconnected
2014.12.23 00:30:06 3: S7_DWrite_GetUpdate: logo32_Q6_w disconnected
2014.12.23 00:30:06 3: S7_DWrite_GetUpdate: logo32_Q7_w disconnected
2014.12.23 00:30:07 3: S7_DWrite: logo32_Q5_w disconnected
2014.12.23 00:30:08 3: S7_DWrite: logo32_Q6_w disconnected
2014.12.23 00:30:08 3: S7_DWrite_GetUpdate: logo32_Q5_w disconnected
2014.12.23 00:30:09 3: S7: logo32 disconnected
2014.12.23 00:30:09 3: logo32 S7_connect: connect to PLC: 0
2014.12.23 00:30:10 3: logo19 S7_connect: connect to PLC: 0
2014.12.23 00:30:10 3: S7: logo32 disconnected
2014.12.23 00:30:10 3: S7: logo19 disconnected
2014.12.23 00:30:10 3: S7: logo32 disconnected
2014.12.23 00:30:10 3: S7: logo19 disconnected
2014.12.23 00:30:10 3: logo32 S7_connect: connect to PLC: 0
2014.12.23 00:30:10 3: logo19 S7_connect: connect to PLC: 0
2014.12.23 00:30:10 3: logo32 S7_connect: connect to PLC: 0
2014.12.23 00:30:10 3: logo19 S7_connect: connect to PLC: 0
2014.12.23 00:30:11 3: logo32 S7_readFromPLC daveReadBytes error: -1025=Timeout when waiting for PLC response
2014.12.23 00:30:11 3: logo19 S7_readFromPLC daveReadBytes error: -1025=Timeout when wait


Schadet aber nicht weiter, FHEM läuft weiter. Es versucht allerdings ständig einen reconnect und fühlt sich daher recht "zäh" an.

Gruss
Thomas