neues Modul: SIEMENS Anbindung / S7 / Siemens Logo

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

Vorheriges Thema - Nächstes Thema

thmarx

Hallo zusammen,

ZitatIm Moment bin ich wirklich ein wenig ratlos. Aber vieleicht kann jemand anderer helfen.

Hier ich!!!

Nachdem ich ins .cfg dieses
attr global autoload_undefined_devices 1
Attribut eingefügt habe, gehts jetzt bei mir!!!

Danke charlie71 für die geduldige Hilfe! Jetzt werde ich mal in Ruhe verschiedenes testen...

Gruß
Thomas

charlie71

Hallo Gerd,

vielen Dank für Deine Anregungen ich werde nur mehr das Modul auf der ersten Seite aktualisieren.
Eine neue Version V1.4 ist bereits online dort wurden unter anderem auch deine Warnings gefixt.

Ich betreibe aktuell 4 Logos. Ich kann alle Infos dazu in FHEM abfragen.
Der Trick dabei ist der folgende:
Ich habe eine Logo als Server eingerichtet (nennen wir sie mal Logo1), alle anderen Logos (Logo2, Logo3, Logo4) sind Clients.
Auf den VM des Servers habe ich den einzelnen Logos zugeordnet:
1xx für die Logo1
2xx für die Logo2
3xx für die Logo3
4xx für die Logo4

Die Clients aktualisieren zyklisch ihre Daten am Server und holen sich auch Zyklisch alle Daten der Anderen Logs
Somit hat jeder Client alle Inputs/Outputs/... aller andern Logos in seiner VM

Das hat auch den Vorteil dass ich auf FHEM nur die Daten von der Logo1 holen muss, da hier von allen anderen Logos eine Kopie vorhanden ist.

lg
Charlie71

AHA1805

Zitat von: charlie71 am 07 Dezember 2014, 20:42:18
Hallo Hannes,

Achtung aktuell ist die V1.4 (ganz am Anfang des Threads) . Hier sollte das zweite Warning bereits gefixt sein. Beim ersten Warning kann ich dir nicht weiterhelfen.

Gruß
Charlie71

Hallo Charlie71

werde mal versuche ob ich es anderweitig weg bekomme.

Gruß und Danke
Hannes
AHA 1805 RIP 29.08.2016 --> RUHE IN FRIEDEN
In Gedanken Bei dir HANNES
Dein Bruder Gerd (Inputsammler) Vermisst dich Hannes (AHA1805)

Starkstrombastler

Hallo,

ich habe mein System mit den aktuellen Files neu aufgesetzt und habe jetzt ein Problem mit der Nodave.so.
Beim Versuch ein S7-Device zu definieren bekomme ich folgenden Log-Eintrag:
2014.12.07 18:06:52.265 0: Can't load '/usr/local/lib/perl/5.18.2/auto/Nodave/Nodave.so' 
  for module Nodave: /usr/local/lib/perl/5.18.2/auto/Nodave/Nodave.so:
  wrong ELF class: ELFCLASS64 at /usr/share/perl/5.18/XSLoader.pm line 68.
  at /usr/local/lib/perl/5.18.2/Nodave.pm line 274.
Compilation failed in require at ./FHEM/44_S7.pm line 9.
BEGIN failed--compilation aborted at ./FHEM/44_S7.pm line 9.


Kann es sein, dass die Nodave.so für 64bit-Systeme kompiliert ist?

Mein System ist Ubuntu 14 auf einem 32bit-Rechner und ich möchte eine Logo 0BA7 anbinden.
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

goerdi

#94
Hsallo Charlie71 !

Das hab ich im Prinzip auch so. aber ich finde es halt schoener wenn man jede Logo direkt ansprehcne kann.
Ich komme aber mit den Adressen nicht so zurecht..
m.W. ist ja alles im DB 1 und bei jeder Logo findet man
Ausgaenge
(Q1) V942.0 -  (Q16) V943.7
Eingaenge
(I1)  V923.0 - (I24)  925.7
Merker
(M1)  V948.0 - (M27) V951.2
usw... letztendlich endet der DB1 der 0BA7 bei Adresse     
983.7 da der letzte  AM16 bei VW982 liegt

Aber ich habs grad mal mit 2 Logos probiert.....  das funktioniert nicht... er nimmt die werte von der ersten Definittion auch fuer die zweite logo oder auch umgekehrt... je nach mondstand

cfg

# Logo Definitions
define logokg S7 2 0 192.168.63.101 0 0 102 2 960
attr logokg ReadDB-Config 0 942 2 10
define logokg_Q1 S7_DRead DB 0 7536
define logokg_Q2 S7_DRead DB 0 7537
define logokg_Q3 S7_DRead DB 0 7538
define logokg_Q4 S7_DRead DB 0 7539
define logokg_Q5 S7_DRead DB 0 7540
define logokg_Q6 S7_DRead DB 0 7541
define logokg_Q7 S7_DRead DB 0 7542
define logokg_Q8 S7_DRead DB 0 7543
define logokg_Q9 S7_DRead DB 0 7544
define logokg_Q10 S7_DRead DB 0 7545


define logoeg S7 2 0 192.168.63.102 0 0 102 2 960
attr logoeg ReadDB-Config 0 942 2 10
define logoeg_Q1 S7_DRead DB 0 7536
define logoeg_Q2 S7_DRead DB 0 7537
define logoeg_Q3 S7_DRead DB 0 7538
define logoeg_Q4 S7_DRead DB 0 7539
define logoeg_Q5 S7_DRead DB 0 7540
define logoeg_Q6 S7_DRead DB 0 7541
define logoeg_Q7 S7_DRead DB 0 7542
define logoeg_Q8 S7_DRead DB 0 7543
define logoeg_Q9 S7_DRead DB 0 7544
define logoeg_Q10 S7_DRead DB 0 7545


log
2014.12.08 00:16:40 5: Loading ./FHEM/44_S7_DRead.pm
2014.12.08 00:16:41 5: Cmd: >define logokg_Q2 S7_DRead DB 0 7537<
2014.12.08 00:16:41 5: Cmd: >define logokg_Q3 S7_DRead DB 0 7538<
2014.12.08 00:16:41 5: Cmd: >define logokg_Q4 S7_DRead DB 0 7539<
2014.12.08 00:16:41 5: Cmd: >define logokg_Q5 S7_DRead DB 0 7540<
2014.12.08 00:16:41 5: Cmd: >define logokg_Q6 S7_DRead DB 0 7541<
2014.12.08 00:16:41 5: Cmd: >define logokg_Q7 S7_DRead DB 0 7542<
2014.12.08 00:16:41 5: Cmd: >define logokg_Q8 S7_DRead DB 0 7543<
2014.12.08 00:16:41 5: Cmd: >define logokg_Q9 S7_DRead DB 0 7544<
2014.12.08 00:16:41 5: Cmd: >define logokg_Q10 S7_DRead DB 0 7545<
2014.12.08 00:16:41 5: Cmd: >define logoeg S7 2 0 192.168.63.102 0 0 102 2 960<
2014.12.08 00:16:41 4: S7 Connect: plcMPI=2, localMPI=0, ip_address=192.168.63.102,rack=0, slot=0, ip_port=102, PDULength= 960
2014.12.08 00:16:41 3: maxPDUlength was set to: 960
2014.12.08 00:16:41 3: Communicationtype was set to 2
2014.12.08 00:16:41 3: connect to PLC: 0
2014.12.08 00:16:41 1: returnmessage PLC: 0=ok
2014.12.08 00:16:41 5: Cmd: >attr logoeg ReadDB-Config 0 942 2 10<
2014.12.08 00:16:41 5: Cmd: >define logoeg_Q1 S7_DRead DB 0 7536<
2014.12.08 00:16:41 5: Cmd: >define logoeg_Q2 S7_DRead DB 0 7537<
2014.12.08 00:16:41 5: Cmd: >define logoeg_Q3 S7_DRead DB 0 7538<
2014.12.08 00:16:41 5: Cmd: >define logoeg_Q4 S7_DRead DB 0 7539<
2014.12.08 00:16:41 5: Cmd: >define logoeg_Q5 S7_DRead DB 0 7540<
2014.12.08 00:16:41 5: Cmd: >define logoeg_Q6 S7_DRead DB 0 7541<
2014.12.08 00:16:41 5: Cmd: >define logoeg_Q7 S7_DRead DB 0 7542<
2014.12.08 00:16:41 5: Cmd: >define logoeg_Q8 S7_DRead DB 0 7543<
2014.12.08 00:16:41 5: Cmd: >define logoeg_Q9 S7_DRead DB 0 7544<
2014.12.08 00:16:41 5: Cmd: >define logoeg_Q10 S7_DRead DB 0 7545<
2014.12.08 00:16:41 1: Including ./log/fhem.save
2014.12.08 00:16:41 5: Cmd: >setstate Logfile active<
2014.12.08 00:16:41 5: Cmd: >setstate autocreate active<
2014.12.08 00:16:41 5: Cmd: >setstate eventTypes active<
2014.12.08 00:16:41 5: Cmd: >setstate global <no definition><
2014.12.08 00:16:41 5: Cmd: >setstate initialUsbCheck 2014-12-08 00:10:41<
2014.12.08 00:16:41 5: Cmd: >setstate logoeg connected to PLC<
2014.12.08 00:16:41 5: Cmd: >setstate logoeg_Q1 off<
2014.12.08 00:16:41 5: Cmd: >setstate logoeg_Q1 2014-12-08 00:16:17 state off<
2014.12.08 00:16:41 5: Cmd: >setstate logoeg_Q10 off<
2014.12.08 00:16:41 5: Cmd: >setstate logoeg_Q10 2014-12-08 00:16:17 state off<
2014.12.08 00:16:41 5: Cmd: >setstate logoeg_Q2 on<
2014.12.08 00:16:41 5: Cmd: >setstate logoeg_Q2 2014-12-08 00:16:17 state on<
2014.12.08 00:16:41 5: Cmd: >setstate logoeg_Q3 off<
2014.12.08 00:16:41 5: Cmd: >setstate logoeg_Q3 2014-12-08 00:16:17 state off<
2014.12.08 00:16:41 5: Cmd: >setstate logoeg_Q4 off<
2014.12.08 00:16:41 5: Cmd: >setstate logoeg_Q4 2014-12-08 00:16:17 state off<
2014.12.08 00:16:41 5: Cmd: >setstate logoeg_Q5 off<
2014.12.08 00:16:41 5: Cmd: >setstate logoeg_Q5 2014-12-08 00:16:17 state off<
2014.12.08 00:16:41 5: Cmd: >setstate logoeg_Q6 off<
2014.12.08 00:16:41 5: Cmd: >setstate logoeg_Q6 2014-12-08 00:16:17 state off<
2014.12.08 00:16:41 5: Cmd: >setstate logoeg_Q7 off<
2014.12.08 00:16:41 5: Cmd: >setstate logoeg_Q7 2014-12-08 00:16:17 state off<
2014.12.08 00:16:41 5: Cmd: >setstate logoeg_Q8 off<
2014.12.08 00:16:41 5: Cmd: >setstate logoeg_Q8 2014-12-08 00:16:17 state off<
2014.12.08 00:16:41 5: Cmd: >setstate logoeg_Q9 on<
2014.12.08 00:16:41 5: Cmd: >setstate logoeg_Q9 2014-12-08 00:16:17 state on<
2014.12.08 00:16:41 5: Cmd: >setstate logokg connected to PLC<
2014.12.08 00:16:41 5: Cmd: >setstate logokg_Q1 off<
2014.12.08 00:16:41 5: Cmd: >setstate logokg_Q1 2014-12-08 00:16:17 state off<
2014.12.08 00:16:41 5: Cmd: >setstate logokg_Q10 off<
2014.12.08 00:16:41 5: Cmd: >setstate logokg_Q10 2014-12-08 00:16:17 state off<
2014.12.08 00:16:41 5: Cmd: >setstate logokg_Q2 on<
2014.12.08 00:16:41 5: Cmd: >setstate logokg_Q2 2014-12-08 00:16:17 state on<
2014.12.08 00:16:41 5: Cmd: >setstate logokg_Q3 off<
2014.12.08 00:16:41 5: Cmd: >setstate logokg_Q3 2014-12-08 00:16:17 state off<
2014.12.08 00:16:41 5: Cmd: >setstate logokg_Q4 off<
2014.12.08 00:16:41 5: Cmd: >setstate logokg_Q4 2014-12-08 00:16:17 state off<
2014.12.08 00:16:41 5: Cmd: >setstate logokg_Q5 off<
2014.12.08 00:16:41 5: Cmd: >setstate logokg_Q5 2014-12-08 00:16:17 state off<
2014.12.08 00:16:41 5: Cmd: >setstate logokg_Q6 off<
2014.12.08 00:16:41 5: Cmd: >setstate logokg_Q6 2014-12-08 00:16:17 state off<
2014.12.08 00:16:41 5: Cmd: >setstate logokg_Q7 off<
2014.12.08 00:16:41 5: Cmd: >setstate logokg_Q7 2014-12-08 00:16:17 state off<
2014.12.08 00:16:41 5: Cmd: >setstate logokg_Q8 off<
2014.12.08 00:16:41 5: Cmd: >setstate logokg_Q8 2014-12-08 00:16:17 state off<
2014.12.08 00:16:41 5: Cmd: >setstate logokg_Q9 on<
2014.12.08 00:16:41 5: Cmd: >setstate logokg_Q9 2014-12-08 00:16:17 state on<
2014.12.08 00:16:41 5: Triggering global (1 changes)



Gruss Gerd

Porsti

Hallo Charli71,
habe es gerade noch mal ausprobiert.

Habe nur die VM Bereich auf die Logo8 hochgesetzt.


define mylogo S7 2 0 192.168.105.15 0 0 102 2 960
attr mylogo ReadDB-Config 0 1064 2 10
attr mylogo WriteDB-Config 0 1246 10
define mylogo_Q1 S7_DRead DB 0 8512
attr mylogo_Q1 room Logo
define mylogo_Q2 S7_DRead DB 0 8513
attr mylogo_Q2 room Logo
define mylogo_Q3 S7_DRead DB 0 8514
attr mylogo_Q3 room Logo
define mylogo_Q4 S7_DRead DB 0 8515
attr mylogo_Q4 room Logo



2014.12.08 07:35:38 3: S7: reading error from PLC errorcode -1025
2014.12.08 07:35:38 3: maxPDUlength was set to: 960
2014.12.08 07:35:38 3: Communicationtype was set to 2
2014.12.08 07:35:38 3: connect to PLC: 0
2014.12.08 07:35:38 1: returnmessage PLC: 0=ok


Gruß & THX

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 Starkstrombastler,

ja die aktuelle Version ist nur eine 64bit Version.

lG
Charlie71

charlie71

Hallo Gerd,

aktuell unterstützt das Modul nur das Verbinden zu einer IP Adresse.

lG
Charlie71

charlie71

Hallo Porsti,

ich denke das das Problem irgendwo in der SPS Konfig liegt.

Bitte versuch mal das beiliegende testLogo.pl auszuführen (Deine IP-Adresse musst du ändern).
Das ist ein Testprogramm das mit der Libnodave ausgeliefert wird.
Bitte poste das Ergebnis.

lG
Charlie71

Porsti

Hallo Charlie71,

habe den Test gerade mit folgendem Ergebnis durchlaufen lassen:


set debug level
debug level is: 0
port handle: 3
di: DaveInterface=SCALAR(0xd15b88) ok 5
res: 0 ok 6
connect to PLC. function result: 0
read from PLC. function result: 0
IB1: 00000000
IB2: 00000000
IB3: 00000000
AI1: 0
AI2: 0
AI3: 0
AI4: 0
QB1: 00000000
QB2: 00000000
AM1: 0
AM16: 0
Testing multiple item read
function result:0=ok
function result:0=ok
QB1: 00000000
QB2: 00000000
function result:0=ok
AI1: 0
AI2: 0
AI3: 0
AI4: 0
function result:0=ok
AM16: 0
function result:0=ok
function result:0=ok
QB1: 00000000
QB2: 00000000
function result:0=ok
AI1: 0
AI2: 0
AI3: 0
AI4: 0
function result:0=ok
AM16: 0
root@lemaker:~#


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,

interessant wie es scheint läuft der Test bei deiner 0BA8 durch.
Ich habe das Testscript noch einmal angepasst, jetzt werden auch die Speicherbereiche gelesen die unter FHEM fehlgeschlagen haben.

Bitte das Ergebnis nochmals posten.

lG
Charlie71

Porsti

#101
Hi Charlie71,

hier ist das Ergebnis von dem 0BA8 test:



set debug level
debug level is: 0
port handle: 3
di: DaveInterface=SCALAR(0x10487e0) ok 5
res: 0 ok 6
connect to PLC. function result: 0
read from PLC. function result: 0
IB1: 00000000
IB2: 00000000
IB3: 00000000
IB1: 00000000
IB2: 00000000
IB3: 00000000
IB2: 00000000
IB3: 00000000
AI1: 0
AI2: 0
AI3: 0
AI4: 0
QB1: 00000011
QB2: 00000000
AM1: 0
AM16: 0
Testing multiple item read
function result:0=ok
function result:0=ok
QB1: 00000000
QB2: 00000000
function result:0=ok
AI1: 0
AI2: 0
AI3: 0
AI4: 0
function result:0=ok
AM16: 500
function result:0=ok
function result:0=ok
QB1: 00000000
QB2: 00000000
function result:0=ok
AI1: 0
AI2: 0
AI3: 0
AI4: 0
function result:0=ok
AM16: 500


Noch mal eine andere Frage:
Habe gerade mal im laufenden Betrieb das Netzwerkkabel der Logo gezogen und der FHEM hat sich komplett aufgehangen. Konnte ihn nur durch kompletten Neustart des Systems zum leben erwecken. Gibt es eine möglichkeit das lesen zu unterbrechen wenn die logo nicht erreichbar ist?

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)

goerdi

Zitat von: charlie71 am 08 Dezember 2014, 10:33:01
Hallo Gerd,

aktuell unterstützt das Modul nur das Verbinden zu einer IP Adresse.

lG
Charlie71
Hi !

Ok habe nen quick and dirty hack angewendet.... und jetzt laufen alles 4.... das modul wird dann halt 4 mal geladen......

Gruss Gerd

charlie71

Hallo Porsti

das Logfile schaut gut aus.
Dann versuchen wir mal es wieder mit einer neuen konfig:
(Nur ein readconfig: Liest die die Ausgänge von der 0BA8 aus den DB 0)


define mylogo S7 2 0 192.168.10.50 0 0 102 2 960
attr mylogo ReadDB-Config 0 1064 8 10
define mylogo_Q1 S7_DRead outputs 0 8512
define mylogo_Q2 S7_DRead outputs 0 8513
define mylogo_Q3 S7_DRead outputs 0 8514
define mylogo_Q4 S7_DRead outputs 0 8515


Bitte dreh das loglevel höher:
attr global verbose 5

Wenn die Verbindung unterbrochen wird (Reading schlägt fehl), pausiert das Modul für 10s und versucht dann einen reconnect.

lG
Charlie71



Zitat von: Porsti am 08 Dezember 2014, 13:44:27
Hi Charlie71,

hier ist das Ergebnis von dem 0BA8 test:



set debug level
debug level is: 0
port handle: 3
di: DaveInterface=SCALAR(0x10487e0) ok 5
res: 0 ok 6
connect to PLC. function result: 0
read from PLC. function result: 0
IB1: 00000000
IB2: 00000000
IB3: 00000000
IB1: 00000000
IB2: 00000000
IB3: 00000000
IB2: 00000000
IB3: 00000000
AI1: 0
AI2: 0
AI3: 0
AI4: 0
QB1: 00000011
QB2: 00000000
AM1: 0
AM16: 0
Testing multiple item read
function result:0=ok
function result:0=ok
QB1: 00000000
QB2: 00000000
function result:0=ok
AI1: 0
AI2: 0
AI3: 0
AI4: 0
function result:0=ok
AM16: 500
function result:0=ok
function result:0=ok
QB1: 00000000
QB2: 00000000
function result:0=ok
AI1: 0
AI2: 0
AI3: 0
AI4: 0
function result:0=ok
AM16: 500


Noch mal eine andere Frage:
Habe gerade mal im laufenden Betrieb das Netzwerkkabel der Logo gezogen und der FHEM hat sich komplett aufgehangen. Konnte ihn nur durch kompletten Neustart des Systems zum leben erwecken. Gibt es eine möglichkeit das lesen zu unterbrechen wenn die logo nicht erreichbar ist?

Gruß
Porsti

thmarx

Hallo zusammen,

habe noch ein bisschen rumprobiert. Auf meine Logos 0BA7 kann ich lesend und schreibend zugreifen. Mehrere gleichzeitig war schon mal ein Thema. Dazu muss man den logischen Devices ein Attrib mitgeben, zu welchen physik. Gerät sie gehören. Ich denke, dazu dient attr IODev. Ich habe mal versucht das einzufügen.
Also für S7_ARead, S7_DRead, S7_AWrite und S7_DWrite kann man jetzt per attrib IODev das zugehörige Gerät bestimmen.


define mylogo S7 2 0 192.168.10.50 0 0 102 2 960
attr mylogo ReadDB-Config 0 1064 8 10
define Q1 S7_DRead outputs 0 8512
attr Q1 IODev mylogo
define Q2 S7_DRead outputs 0 8513
attr Q2 IODev mylogo

define mylogo2 S7 2 0 192.168.10.50 0 0 102 2 960
attr mylogo2 ReadDB-Config 0 1064 8 10
define Q3 S7_DRead outputs 0 8514
attr Q3 IODev mylogo2
define Q4 S7_DRead outputs 0 8515
attr Q4 IODev mylogo2


Wird das attrib nicht angegeben, wird es von fhem gesetzt.
Ganz zuverlässig läuft es noch nicht, manchmal wird bei mir eine Logo "vergessen".

Gruss
Thomas