neues Modul: SIEMENS Anbindung / S7 / Siemens Logo

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

Vorheriges Thema - Nächstes Thema

fu_zhou

#390
Hallo Charlie,

über Nacht wurde die S7 von FHEM aus nicht bedient, trotzdem immer wieder Disconnects:
2015.02.02 23:25:05 3: 315 S7_ReadBlockFromPLC ReadArea error: 3=A timeout occurred waiting a reply.
2015.02.02 23:25:05 2: 315 S7 disconnected
2015.02.02 23:25:08 3: 315 S7_connect: connect to PLC with maxPDUlength=240
2015.02.03 01:05:50 3: 315 S7_ReadBlockFromPLC ReadArea error: 3=A timeout occurred waiting a reply.
2015.02.03 01:05:50 2: 315 S7 disconnected
2015.02.03 01:05:53 3: 315 S7_connect: connect to PLC with maxPDUlength=240
2015.02.03 01:10:53 3: 315 S7_ReadBlockFromPLC ReadArea error: 3=A timeout occurred waiting a reply.
2015.02.03 01:10:53 2: 315 S7 disconnected
2015.02.03 01:10:56 3: 315 S7_connect: connect to PLC with maxPDUlength=240
2015.02.03 01:18:56 3: 315 S7_ReadBlockFromPLC ReadArea error: 3=A timeout occurred waiting a reply.
2015.02.03 01:18:56 2: 315 S7 disconnected
2015.02.03 01:18:59 3: 315 S7_connect: connect to PLC with maxPDUlength=240
2015.02.03 02:11:14 3: 315 S7_ReadBlockFromPLC ReadArea error: 3=A timeout occurred waiting a reply.
2015.02.03 02:11:14 2: 315 S7 disconnected
2015.02.03 02:11:17 3: 315 S7_connect: connect to PLC with maxPDUlength=240
2015.02.03 02:25:20 3: 315 S7_ReadBlockFromPLC ReadArea error: 3=A timeout occurred waiting a reply.
2015.02.03 02:25:20 2: 315 S7 disconnected
2015.02.03 02:25:23 3: 315 S7_connect: connect to PLC with maxPDUlength=240
2015.02.03 03:11:41 3: 315 S7_ReadBlockFromPLC ReadArea error: 3=A timeout occurred waiting a reply.
2015.02.03 03:11:41 2: 315 S7 disconnected
2015.02.03 03:11:44 3: 315 S7_connect: connect to PLC with maxPDUlength=240
2015.02.03 04:01:58 3: 315 S7_ReadBlockFromPLC ReadArea error: 3=A timeout occurred waiting a reply.
2015.02.03 04:01:58 2: 315 S7 disconnected
2015.02.03 04:02:01 3: 315 S7_connect: connect to PLC with maxPDUlength=240
2015.02.03 06:38:52 3: 315 S7_ReadBlockFromPLC ReadArea error: 3=A timeout occurred waiting a reply.
2015.02.03 06:38:52 2: 315 S7 disconnected
2015.02.03 06:38:55 3: 315 S7_connect: connect to PLC with maxPDUlength=240


Es ist aber immer nur die Verbindung zur S7-315, die zur 317 steht ununterbrochen. Kann ich da was mit Wireshark finden? Kann das mit der echten PDU Länge zusammenhängen? Die 315 hat 240, die 317 hat 960.
FHEM auf RasPi 2, S7-300 mit ET200S über ProfiNet

John

Hi Charlie,

folgende Ergebnisse

Connect/Disconnect
Wenn die SPS beim Start von FHEM nicht erreichbar ist, erfolgt nie wieder ein erneuter Connect-Versuch.

S7_DRead
Wir haben hier ein fettes "Memory Leak".
Damit verbietet sich der produktive Einsatz, da das ganze System gefährdet ist.

define M1_1 S7_DRead flags 0  1.0

Zitat
# mit showInternalValues 1
list M1_1
Internals:
   ADDRESS    1.0
   AREA       flags
   CFGFN     
   DB         0
   DEF        flags 0  1.0
   IODev      S7
   LENGTH     1
   NAME       M1_1
   NR         609
   POSITION   8
   STATE      off
   TYPE       S7_DRead
  CHANGED:
     off
     off
     off
     off
     off
     off
     off
     off
     off
   CHANGEDWITHSTATE:
   Readings:
     2015-02-03 08:59:57   state           off
Attributes:
   IODev      S7
   room       S7
   verbose    5

Der interne Wert CHANGED wächst unendlich an.

Ich habe noch keine Device-Treiber nach dem FHEM Modell entwickelt, daher kann ich nur begrenzt helfen.

Ich vermute das Problem liegt hier:
Zitatlist S7   
Internals:
   ActiveTransmission 0
   CFGFN
   DEF        192.168.178.59   0 2 5
   Interval   5
   LocalTSAP  256
   NAME       S7
   NR         605
   RAWMSG     d flags 0 1 1 S7 00
   RemoteTSAP 258
   S7TYPE     NATIVE
   S7_MSGCNT  144
   S7_TIME    2015-02-03 09:02:14
   STATE      connected to PLC
   TYPE       S7
   ipAddress  192.168.178.59
   maxPDUlength 480
   .clientArray:
   Readings:
     2015-02-03 08:57:40   state           connected to PLC
Attributes:
clientArray darf meiner Meinung nach nicht leer sein.

Im Vergleich dazu CULMAX der als Clients die MAX-Devices hat:
ZitatInternals:
   CUL_MSGCNT 27
   CUL_RAWMSG Z0EC5020205E1F2123456000118001F
   CUL_RSSI   -74
   CUL_TIME   2015-02-03 09:02:46
   DEF        123456
   IODev      CUL
   LASTInputDev CUL
   MSGCNT     27
   NAME       CULMAX0
   NR         27
   STATE      Defined
   TYPE       CUL_MAX
   addr       123456
   cnt        0
   pairmode   0
   retryCount 0
   .clientArray:
     MAX
   Readings:
     2015-02-02 13:49:04   packetsLost     7281
   sendQueue:

John
CubieTruck Docker Node-Red Tasmota Shelly Homematic-IP

pc1246

Hallo zusammen
Ich kann auch noch etwas von gestern beisteuern! Beim Anlegen eines neuen Elements wird ja willkuerlich (Ich vermute das zuletzt angelegte IO_Dev) ein IO_DEV bestimmt! Wenn man das aendert, bleiben die readings vom alten erhalten! Ich hatte das zuerst gar nicht gesehen, da dachte ich es ist gar nicht geaendert worden! Kann jetzt keinen Screenshot schicken!
Gruss Christoph
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly

charlie71

Hallo Porsti,

die Config ist für mich OK.
Leider finde ich im Logfile nirgends einen "TCPClient WriteArea" Eintrag, kann sein, dass du NI9 nicht beschrieben hast bzw meine angepassten Files nicht verwendet hast.

lG
Charlie71


Zitat von: Porsti am 03 Februar 2015, 06:53:36
Hallo Charlie,

war gerade online als deine Nachricht kam.

Habe im Anhang die einstellung aus der Logosoft als Bild.

Config:

################################################################################
# Anbindung Siemens Logo
#
#
define mylogo S7 LOGO8 192.168.10.50
attr mylogo verbose 3
#
# Verbindung Steuerung mit den Logo-Daten
#
define Licht_Aus S7_DWrite db 0 1246.0
attr Licht_Aus IODev mylogo
attr Licht_Aus alias Zentral Aus
attr Licht_Aus devStateIcon .*:black_FS20.off
attr Licht_Aus eventMap trigger:Aus
attr Licht_Aus group Schalter
attr Licht_Aus room Flur
attr Licht_Aus webCmd Aus
#
define Licht_An S7_DWrite db 0 1246.1
attr Licht_An IODev mylogo
attr Licht_An alias Zentral Ein
attr Licht_An devStateIcon .*:black_FS20.on
attr Licht_An eventMap trigger:Ein
attr Licht_An group Schalter
attr Licht_An room Flur
attr Licht_An webCmd Ein
#
define MEDIEN S7_DWrite NI9
attr MEDIEN IODev mylogo
attr MEDIEN alias Medien
attr MEDIEN devStateIcon .*:it_television
attr MEDIEN eventMap trigger:Ein
attr MEDIEN group Schalter
attr MEDIEN room Wohnzimmer
attr MEDIEN webCmd Ein
#
define URLAUB S7_DWrite db 0 1246.6
attr URLAUB IODev mylogo
attr URLAUB alias Urlaub
attr URLAUB devStateIcon Aus:black_FS20.off Ein:black_FS20.on
attr URLAUB eventMap on:Ein off:Aus
attr URLAUB group Schalter
attr URLAUB room Flur
attr URLAUB webCmd Ein:Aus
#
# Anzeigen
#
define BEL_FLUR_UG_STATUS S7_DRead Q1
attr BEL_FLUR_UG_STATUS IODev mylogo
attr BEL_FLUR_UG_STATUS alias Bel. KG
attr BEL_FLUR_UG_STATUS group Status
attr BEL_FLUR_UG_STATUS room Flur
attr BEL_FLUR_UG_STATUS sortby 04
#
define BEL_FLUR_EG_STATUS S7_DRead Q2
attr BEL_FLUR_EG_STATUS IODev mylogo
attr BEL_FLUR_EG_STATUS alias Bel. EG
attr BEL_FLUR_EG_STATUS group Status
attr BEL_FLUR_EG_STATUS room Flur
attr BEL_FLUR_EG_STATUS sortby 03
#
define BEL_FLUR_OG_STATUS S7_DRead Q3
attr BEL_FLUR_OG_STATUS IODev mylogo
attr BEL_FLUR_OG_STATUS alias Bel. OG
attr BEL_FLUR_OG_STATUS group Status
attr BEL_FLUR_OG_STATUS room Flur
attr BEL_FLUR_OG_STATUS sortby 02
#
define BEL_FLUR_DG_STATUS S7_DRead Q4
attr BEL_FLUR_DG_STATUS IODev mylogo
attr BEL_FLUR_DG_STATUS alias Bel. DG
attr BEL_FLUR_DG_STATUS group Status
attr BEL_FLUR_DG_STATUS room Flur
attr BEL_FLUR_DG_STATUS sortby 01
#
define MEDIEN_STATUS S7_DRead Q11
attr MEDIEN_STATUS IODev mylogo
attr MEDIEN_STATUS alias Medien Steckd.
attr MEDIEN_STATUS devStateIcon on:black_Steckdose.on off:black_Steckdose.off
attr MEDIEN_STATUS group Status
attr MEDIEN_STATUS room Wohnzimmer
#
define VORDACH_STATUS S7_DRead Q12
attr VORDACH_STATUS IODev mylogo
attr VORDACH_STATUS alias Steckd. Vordach
attr VORDACH_STATUS devStateIcon on:black_Steckdose.on off:black_Steckdose.off
attr VORDACH_STATUS group Status
attr VORDACH_STATUS room Aussen
#
define TEMP S7_ARead DB 0 0 s16
attr TEMP IODev mylogo
attr TEMP alias Temperatur
attr TEMP group Status
attr TEMP room Aussen
attr TEMP stateFormat {sprintf("%.0f",ReadingsVal("TEMP","state",0))." °C"}
#
define DAEMMERUNG_STATUS S7_DRead I1
attr DAEMMERUNG_STATUS IODev mylogo
attr DAEMMERUNG_STATUS alias Dämmerung
attr DAEMMERUNG_STATUS devStateIcon on:weather_moon_phases_8 off:weather_sun
attr DAEMMERUNG_STATUS group Status
attr DAEMMERUNG_STATUS room Aussen



Danke für deine Hilfe !!!!

Gruß
Porsti

alfonsmoeller

Hallo charlie71 und alle anderen Mitwirkenden,
ein DICKES DANKESCHÖN!!!
Bei mir funktioniert jetzt DB Bytes auslesen und schreiben zwischen FHEM und S7.
Egal ob WinLC 4.1 , RTX 4.5 oder S7-315!
Somit steht ein Eingriff in die Haussteuerung über FHEM S7 Anbindung V2.5 nichts mehr im Wege.
m.f.G. Alfons

Porsti

Hallo Carlie,

in der zeit von dem log habe ich nur NI1 oder NI2 beschrieben. Diese befehle sind leider nicht auf der Logo angekommen.
Der NI9 wurde  auch vor dem update  beschrieben und konnte den dann nicht wieder zurück  nehmen.

Lesen klappt alles wie vorher. Habe auch dann diw Version 2.2 und 2.3 wieder aufgespielt aber es klappt auch nicht mehr wie vorher.

Habe deine Dateien eingespielt  und fhem neu gestartet  wie im log zu sehen.

Habe auch das Programm  der Logo  noch mal neu übertragen, hat sich au nichts getan.

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)

alfonsmoeller

Hallo Prosti,
mal eine ganz vorsichtige Frage? Du hast mal mit dem Dateimanager auf
dein Verzeichnis FHEM nach gesehen das dort die Datei "44_S7_Client.pm"
steht und nicht zweimal vorhanden ist, zusätzlich auch als "44_s7_client.pm",
ist mir anfangs passiert. Überträgt man mit ftp die Dateien z.B. von Windows
nach Unix wird der Dateiname grundsätzlich in Kleinschreibung hinterlegt.
Sicherheitshalber lösche ich immer erst die 44_S7*.* auf dem Unixsystem
und benenne die neuen Dateien um  in Groß- und Kleinschreibung.
Da gibt es sicher eine bessere Lösung ab ich wollte mich nicht verzetteln.
m.f.G. Alfons

charlie71

Hallo Porsti,

aus dem Logfile sehe ich dass die WriteBit Funktion für NI0 (1246.0) aufgerufen wird:
2015.02.03 06:52:08 5: mylogo S7_WriteBitToPLC: Write Bytes to PLC: 7, 0, 9968 , 1, 1
Diese bereitet den Aufruf für den Client vor. Die eigentliche Kommunikation passiert dann im S7TCPClient->WriteArea. Hier fehlt aber der Eintrag im logfile.
dh:
1) diese funktion wird nicht aufgerufen (eher unwahrscheinlich)
2) Es wird die letzte Version der 44_S7_Client.pm aufgerufen.

Bitte prüfe ob FHEM wirklich die letzte Version des 44_S7_Client verwendet. Gib einfach "version" ein, es sollten alle S7_44_XXXX Dateien einer Version von 2.5 haben. Die  44_S7_Client.pm musst du manuell prüfen: file size 31.652 Bytes. Es muss in der Datei folgender Eintrag vorhanden sein:
main::Log3 undef, 1,"TCPClient WriteArea : $b";

lG
Charlie71


Zitat von: Porsti am 03 Februar 2015, 10:45:22
Hallo Carlie,

in der zeit von dem log habe ich nur NI1 oder NI2 beschrieben. Diese befehle sind leider nicht auf der Logo angekommen.
Der NI9 wurde  auch vor dem update  beschrieben und konnte den dann nicht wieder zurück  nehmen.

Lesen klappt alles wie vorher. Habe auch dann diw Version 2.2 und 2.3 wieder aufgespielt aber es klappt auch nicht mehr wie vorher.

Habe deine Dateien eingespielt  und fhem neu gestartet  wie im log zu sehen.

Habe auch das Programm  der Logo  noch mal neu übertragen, hat sich au nichts getan.

Gruß  Porsti

mani

Hallo,

Danke für Eure schnellen Antworten aber ich komme nicht weiter :-[
Ich möchte den Aussentemperaturwert meiner Luxtronik2 an die Logo7 übergeben wie muss ich da vorgehen....
Kann mir bitte jemand ein Beispiel zeigen?

Danke Manfred
RasPi B+,Onkyo_AVR,Luxtronik2,Logo7,Mpd,Arduino Uno mit Ethernet,KNX,Jablotron

rhonline

Hallo charlie71,

habe soeben auf V2.5 hochgerüstet.
Schreiben und Lesen scheint auf den ersten Blick zu funktionieren, allerdings werden jetzt die DRead- und die ARead-Werte
auf der Web-Oberfläche nur durch refresh aktualisiert.


Zitat von: charlie71 am 02 Februar 2015, 21:58:28
Hallo,

hier eine neue Version bei der die letzten fixes inkludiert sind. Bitte updaten.
@fu_zhou & Posti: Ich denke mit dieser Version sollten eure Probleme gelöst sein.

Releasenotes
V2.5
* fixes for writing operations for S300
* fix in TCPClient for dedection of writing error

lG
Charlie71
fhem auf RasPi B+ / S7-300 / 44_S7 V2.x

charlie71

Hallo Leute,

langsam geht es in die Zielgerade. Ich hab das Problem mit dem Bildschirm-wert aktualisieren und dem vermeintlichen Memory leak in der V2.6 gefixt.
Leider sind dass die Sideeffects eines solchen Modulumbaus, den wir gerade hinter uns haben. Ich denke die Probleme sollten nun langsam abnehmen.
Vielen Dank fürs Testen und feedbacken.

Release Notes:
V2.6
* fix: reconnection at creation time
* fix: state update on reading
* fix: memory leak during message dispatch

Update dringen empfohlen. File befindet sich wie immer im ersten Posting.

lG
Charlie71


rhonline

Hallo charlie71,

kann bestätigen... Aktualisierung läuft bei der V2.6 !
Alles andere kann ich erst später testen.

Aber eins kannst Du Dir an die Wand schreiben :

ALLE BUGS SEIEN DIR VERZIEHEN BEI DIESER LEISTUNG UND DIESEM EINSATZ !!!

Gruß
Ralf
fhem auf RasPi B+ / S7-300 / 44_S7 V2.x

fu_zhou

Hallo Charlie,

ich kann bestätigen, dass im Moment DWrite, DRead, AWrite (Float), ARead (Float) mit 2 CPUs funktioniert inkl. der Aktualisierung der Anzeige (V2.6).
Hut ab und vielen Dank!

Wenn jetzt noch die sporadischen Verbindungsabbrüche zur S7-315 ausbleiben... das werde ich morgen mal im Log-File nachsehen.

Was hast du jetzt noch so auf deiner Agenda bzgl. des Moduls?

Danke nochmal!!!

fu_zhou
FHEM auf RasPi 2, S7-300 mit ET200S über ProfiNet

charlie71

Hallo

folgende Punkte sind noch auf meiner Agenda.

* Eventlast reduzieren, aktuell feuert jedes Lesen von digitalen Datenpunkte ein event.

Vorerst möchte ich mal abwarten ob V2.6 stabil ist.

lG
Charlie71

pc1246

Hallo zusammen
Bei mir sieht es nicht so gut aus! Eigentlich unveraendert zu gestern! Alle Module zeigen V2.6!
Kein Schreiben auf WinLC! Lesen von ueberlappenden Bereichen funktioniert nicht! (Nicht nur keine Aktualisierung, sondern es wird nicht gelesen!)
Muss ich alles noch einmal anlegen? Oder wie kommt Ihr zum positiven Ergebnis?
Gruss Christoph
HP T610
Onkyo_AVR;3 Enigma2; SB_Server ; SB_Player; HM-USB mit 15 HM-CC-RT-DN, 3 HM_WDS10_TH_O, 6 HM-Sec-SCo, 4 HM-Sec-MDIR-2, 1 HM-Sen-MDIR-O-2, 8 Ferion 5000 OW ; PhilipsTV; 4 harmony hub; Jeelink mit 9 PCA301; Somfy; S7-300; 3 LGW; HUE; HM-IP auf Charly