neues Modul: SIEMENS Anbindung / S7 / Siemens Logo

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

Vorheriges Thema - Nächstes Thema

charlie71

Hi Leute,

Hier findet ihr die  Info zu meinen FHEM S7 Modul. Dieses Modul ermöglicht die Kommunikation mit Siemens SPS: S7-200, 300, 400, Logo!
Das Modul unterstützt folgende Funktionen:
   Digitale Merker, DB lesen, setzten, löschen.
   Analoge DB lesen und schreiben.

Das Modul ist seit der Version V10515 ein offizielle FHEM Modul (somit muss nix mehr extra nachinstalliert werden).
Falls das Modul fehlt einfach FHEM mit udate aktualisieren.

Aktuelle Versionsinfo

Unterstützte Plattformen
Grundsätzlich kann das modul für alle FHEM Plattformen eingesetzt werden da es nun ein native Perl Modul ist.
(Ab Version V2.0 kein C-Modul mehr erforderlich)

Wiki und Config
ein Konfigurationsanleitung findest du hier:
http://www.fhemwiki.de/wiki/S7

Versionsinfo:
V214 = V10515  first official Version

V213
* fix missing bracked in S7_AWrite.pm

V212
* performance optimisation
* fix in rebuild cache function

V2.11
* (fix) memory allocation fix during shutdown/restart sequence
* preperation  for non blocking calls: job caching, clients chache --> speeds up the module

V2.10
* (feature) S7_DWrite: with new attribute trigger_length the impulse length could be controlled
* (feature, performance) S7: with new attribute MaxMessageLength you can control the maximal message length to the plc. it is only used if it is lower than the negioated PDULength
* (fixes) some minor fixes in memory usage
* (fixes) startup: no error messages should be found in the log anymore
* (performance) performance tuning: (reduced dispace Messages) --> up to 4 times faster

V2.9
* fix for DWord (thanks to zicki)
* multiple fix for writing to PLC

V2.8
* minor fix in TCP Socked (TCP_NODELAY option now set)
* minor fix in reconnection (perl gets more time for garbage handling)
* connection to the PLC is now delayed (5sec after creation the connection is build up, 3 seconds later the reading polling is started)
* minor fix AWrite checks now connection status
* fix for fritzbox

V2.7
* new function: overlapping configurations are now supported
* minor change in reconnection procedure (TCPClient object is freed)

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

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

V2.4
* the requirement of having reading-configs and/or writing-configs are gone
The module calculates based on the logical modul configuration the reading required bocks dynamically
The writing is done as a minimal block for AWrite and as a Bit for DWrite
This is done every second per default (optional Parameter of the 44_S7 modul)

V2.3
* FIX: For Logo8 Simple config
* Error messages for perl PLC communication lib are available
* standard attributes like event-min-interval, event-min-interval, ...  are added
* PLC Communication client extended for bitwise writing
* removed attribute unit and precision: please use standard attribute stateFormat instead.

Example for stateFormat with precision=1 and unit=°C:
define innentemp S7_ARead db 0 6 u16
attr innentemp stateFormat {sprintf("%.1f",ReadingsVal("innentemp","state",0))." °C"}



V2.2
* Fix: for Multi DB configurations
* Fix: FHEM does not chrash if PLC is not available
* New Feature for Logo 8: Now NI and NQ for simply config method is supported

V2.1
* Fix: Fehler für DB ungleich 0 behoben
* Fix: AnalogRead und Analog Write

V2.0
keine LibNoDave Library erforderlich. Sämtliche Kommunikation mit der SPS wird über eine native perl library umgesetzt.
Achtung: die Konfigurationssyntax des Moduls hat sich geändert!!!!

V1.15
* PDU size of the connection  instead of the initial PDU Size (Parameter) is used for length checks
New Feature
* New Parameter for Analog Reads and Analog Writes:  unit: This can be used to show a unit after the analog value
* New Parameter for Analog Reads and Analog Writes:  precision: defines how many X places after the comma the value should be shown
* fix für simple config LOGO8
* cleanup logging info

V1.14
* Fehler in recreation behoben. (IMPORTANT FIX!!!!)
* PLC reconnection function improved
* Minor Fix for Logo addressing
* Installation files updated (X86 files included, ARM libs updated, autosplit inkludiert) --> ARM Nodave.so tauschen

V1.13
* Fix für multiple Writings
* Für Logo7 und Logo8 können nun sehr einfach Ein und Ausgänge konfiguriert werden
(Dies ist ein Zusatzfeature: die alte Config Syntax wird weiterhin unterstützt)

   define Q1_Logo2 S7_DRead Q1
   define Q2_Logo2 S7_DWrite Q2

alle internen Settings werden automatisch generiert. Diese können bei Bedarf selbstverständlich angepasst werden.

V1.12
* Interner Umbau: Kapselung aller lese und Schreiboperationen in eigene Funktionen
* Fix für die Adressierung im Byte.Bit Format. Bit beginnt jetzt mit 0 und nicht mit 1 --> Config prüfen!!!!

New Features:
* Logo7 und Logo8 können nun sehr nur durch Angabe der IP Adresse angelegt werden. Beispiel:

   define logo2 S7 LOGO7 10.0.0.242
   define logo3 S7 LOGO8 10.0.0.243
alle internen Settings werden dann automatisch generiert.
V1.11
* libnodave timeout is set now to 500ms
* the bocklength is now checked against the maxPDUlength

V1.10
* now also float data can be read and written
* I have changed the addressing of the bit readings:
Old: you have to calculate the pit position manually. example for 602.2 reading bit position = 4817.
NEW you can address it directly. Example
define Logo7_Q1 S7_DRead db 0 942.1

Note: The module detects if you are using the old syntax. Therfore no config changes are required.

V1.9
* now support multiple writing config

V1.8
* changed bufferhandling (this should fix the timeout error)
* now supports u8, u32, s8, s16, s32 writing

V1.7
* Support for more then one PLC activated

V1.6
* New Feature "connections to one than one PLC" deactivated

V1.5
New Feature
* Now connection to more than one S7 is supported (IODev) (many thanks to thmarx)

Fixes
* fix for recoonection includes (many thanks to thmarx)
* doku more FHEM conform (many thanks to Cnetrwal)
* some minor fixes

V1.4 Fix für multiple reading

V1.3 Fix für multiple reading

V1.2:
* Fixes von "Cnetrwal" merged  (many thanks)
* Automatisches Reconnect wenn ein reading fehlschlägt

V1.1:
* support multiple reading (the basic idea is to split slow data for data logging from fast data for swithing info)
* supports reading fram addresses > 1024 (requirement for 0BA8)
* Take care Configuration Change is needed if upgrading from V1.0:
   a) you have to add a reading interval in the modul S7 modul definition after the portNo example:
    oldConfig: S7 2 0 10.0.0.241 0 0 102 960
    newConfig: S7 2 0 10.0.0.241 0 0 102 2 960
    2 ... means that every 2 seconds the requirement for a PLC reading is checked
   b) you have to add at reading attribute of the S7 modul the reading intervall:
   oldConfig: attr logo ReadDB-Config 0 0 8
   newConfig: attr logo ReadDB-Config 0 0 8 300
   300 ... means that all 5min the modul reads the data from the PLC

(modul S7 interval in define as well as reading attribute for S7 modul)

V1.0 Erstversion

shootingstar

Hallo,

ich hab das Modul mal versucht auf eine Raspberry unter Wheezy und unter einem Centos zum laufen zu bekommen.
Unter beiden Systemen bekomme ich den gleichen Fehler:

2014.08.12 21:16:56 1: reload: Error:Modul 44_S7 deactivated:
Attempt to reload Nodave.pm aborted.
Compilation failed in require at ./FHEM/44_S7.pm line 9, <$fh> line 48.
BEGIN failed--compilation aborted at ./FHEM/44_S7.pm line 9, <$fh> line 48.

2014.08.12 21:16:56 0: Attempt to reload Nodave.pm aborted.
Compilation failed in require at ./FHEM/44_S7.pm line 9, <$fh> line 48.
BEGIN failed--compilation aborted at ./FHEM/44_S7.pm line 9, <$fh> line 48.


Gruß Andreas

ThomasRamm

Hallo, habe dein Modul angepasst damit es auch mit meiner S5 läuft.
Vielen Dank für deine Arbeit.
Habe bis jetzt nur das lesen konfiguriert, klappt aber schon gut.

Damit dein Modul für meine S5 funktioniert musste ich lediglich Anpassungen in der S7_Define vornehmen. Meinst du du könntest das bei dir noch so einbinden das beide Versionen also S5 und S7 mit deinem Modul laufen und man das nur durch Anpassungen der Parameter hinbekommen kann?
Bin absoluter fhem-Anfänger, habe das ganze erst vor 2 Tagen bei mir gestartet (auf einem neuen RaspberryPI)

Ansonsten ist mir bisher nur folgendes Aufgefallen:
du schreibst du in der Doku das der Befehl in der config lautet:
set <name> WriteDB-Config <DB> <STARTPOSITION> <LENGTH>
korrekt ist jedoch
attr <name> WriteDB-Config <DB> <STARTPOSITION> <LENGTH>

beim Starten von FHEM bekomme ich vom Modul folgende Meldungen:
Scalar value @areasconfig[$j] better written as $areasconfig[$j] at ./FHEM/44_S5.pm line 319, <$fh> line 46.
"my" variable $dmsg masks earlier declaration in same scope at ./FHEM/44_S5.pm line 341, <$fh> line 46.
"my" variable %addvals masks earlier declaration in same scope at ./FHEM/44_S5.pm line 345, <$fh> line 46.
"my" variable @a masks earlier declaration in same scope at ./FHEM/44_S5_DWrite.pm line 115.
Scalar value @Writebuffer[$s] better written as $Writebuffer[$s] at ./FHEM/44_S5_DWrite.pm line 132.
Scalar value @Writebuffer[$s] better written as $Writebuffer[$s] at ./FHEM/44_S5_DWrite.pm line 135.
"my" variable $bss masks earlier declaration in same scope at ./FHEM/44_S5_DWrite.pm line 143.
Scalar value @Writebuffer[$s] better written as $Writebuffer[$s] at ./FHEM/44_S5_DWrite.pm line 212.
Scalar value @Writebuffer[$s] better written as $Writebuffer[$s] at ./FHEM/44_S5_DWrite.pm line 212.
"my" variable @a masks earlier declaration in same scope at ./FHEM/44_S5_DWrite.pm line 244.
Scalar value @Writebuffer[$s] better written as $Writebuffer[$s] at ./FHEM/44_S5_DWrite.pm line 252.
Possible precedence problem on bitwise & operator at ./FHEM/44_S5_DWrite.pm line 254.


außerdem bekomme ich durch das modul alle zwei sekunden die Meldung
Use of uninitialized value $found[0] in string eq at fhem.pl line 2788.

Wenn die Konfiguration ändere bekomme ich immer Die Meldung ERROR 0 0 0

PS: ich hatte dein Modul kopiert und S7 mit S5 ausgetauscht, damit ich dein Original Code nicht verliere, also nicht wundern das die Befehle etwas anders sind.

Nochmal vielen Dank für dein Modul

ThomasRamm

Zitat von: shootingstar am 12 August 2014, 21:23:02
Hallo,

ich hab das Modul mal versucht auf eine Raspberry unter Wheezy und unter einem Centos zum laufen zu bekommen.
Unter beiden Systemen bekomme ich den gleichen Fehler:

2014.08.12 21:16:56 1: reload: Error:Modul 44_S7 deactivated:
Attempt to reload Nodave.pm aborted.
Compilation failed in require at ./FHEM/44_S7.pm line 9, <$fh> line 48.
BEGIN failed--compilation aborted at ./FHEM/44_S7.pm line 9, <$fh> line 48.

2014.08.12 21:16:56 0: Attempt to reload Nodave.pm aborted.
Compilation failed in require at ./FHEM/44_S7.pm line 9, <$fh> line 48.
BEGIN failed--compilation aborted at ./FHEM/44_S7.pm line 9, <$fh> line 48.


Gruß Andreas

Läuft es bei dir inzwischen? Anbei mein Installationsablauf auf dem RaspberryPI:
OS, PERL
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get autoremove -y && sudo reboot
sudo apt-get -f install && sudo apt-get install perl libdevice-serialport-perl libio-socket-ssl-perl libwww-perl libxml-simple-perl -y


LIBNODAVE
wget http://downloads.sourceforge.net/project/libnodave/libnodave/libnodave-0.8.5.tar.gz
tar -xvzf libnodave-0.8.5.tar.gz
rm libnodave-0.8.5.tar.gz
cd libnodave-0.8.5
nano Makefile

Wichtig hier die Zeile 24 enablen damit libnodave mit arm-Prozessor läuft. Die Zeile lautet: CFLAGS+=-DARM_FIX
make clean
make
sudo make install


LIBNODAVE-PERL
cd PERL
perl Makefile.PL
make
make test
sudo make install


Danach habe ich fhem installiert und die S7 Modul-Dateien in das FHEM Verzeichnis kopiert.

Starkstrombastler

Hallo,

ich habe die Bibliothek libnodave wie oben beschrieben auf meinem Ubuntu-IPC  installiert und die Dateien aus dem ersten Thread kopiert.
Nach einigem Herumprobieren habe ich herausgefunden, dass in der 44_S7.pm zwei Funktionen zum Absturz von Fhem führen:
Zeile 123:  setmaxPDUlength()   und
Zeile 125:  daveSetCommunicationType()

Kommentiere ich beide Zeilen aus, kann ich wenigsten ein Define (ohne Absturz) absetzen:
define Logo71 S7 2 0 192.168.178.71 0 0 10001
Das Define wird aber nicht ausgeführt, das Ergebnis lautet:
cound not connect to PLC

Hier hänge ich jetzt endgültig fest. Hat jemand eine Idee?

IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

Neo2304

ZitatHallo, habe dein Modul angepasst damit es auch mit meiner S5 läuft.
Vielen Dank für deine Arbeit.
Habe bis jetzt nur das lesen konfiguriert, klappt aber schon gut.

Damit dein Modul für meine S5 funktioniert musste ich lediglich Anpassungen in der S7_Define vornehmen. Meinst du du könntest das bei dir noch so einbinden das beide Versionen also S5 und S7 mit deinem Modul laufen und man das nur durch Anpassungen der Parameter hinbekommen kann?
Bin absoluter fhem-Anfänger, habe das ganze erst vor 2 Tagen bei mir gestartet (auf einem neuen RaspberryPI)

Hallo Ich möchte auch mit einer S5 kommunizieren.

wie kommunizierst du mit der S5 und was hast du angepasst?

ThomasRamm

Hallo,
habe deine Nachricht eben erst gelesen. Du hast zwei Möglichkeiten:
Entweder du schreibst den Define-Block des S7-Modul um, oder (wenn du nur DB lesen und schreiben willst) nimmst mein neues S5-Modul das ich eben im Forum gepostet habe. http://forum.fhem.de/index.php/topic,27577.0.html

Du kannst den Kompletten Define-Code meines Moduls nehmen und den Code aus dem "Original"-S7 Code dadurch ersetzen. Nur in der 3.letzten Zeile InternalTimer... muss der Teil "S5_GetUpdate" noch durch "S7_GetUpdate" ersetzt werden.
Achte nur darauf das die Reihenfolge der Parameter sich geändert hat (du musst also die S5 so wie in meinen Beispielen konfigurieren)

Gruß
Thomas

ThomasRamm

Zitat von: Starkstrombastler am 28 September 2014, 21:28:29
Hallo,

ich habe die Bibliothek libnodave wie oben beschrieben auf meinem Ubuntu-IPC  installiert und die Dateien aus dem ersten Thread kopiert.
Nach einigem Herumprobieren habe ich herausgefunden, dass in der 44_S7.pm zwei Funktionen zum Absturz von Fhem führen:
Zeile 123:  setmaxPDUlength()   und
Zeile 125:  daveSetCommunicationType()

Kommentiere ich beide Zeilen aus, kann ich wenigsten ein Define (ohne Absturz) absetzen:
define Logo71 S7 2 0 192.168.178.71 0 0 10001
Das Define wird aber nicht ausgeführt, das Ergebnis lautet:
cound not connect to PLC

Hier hänge ich jetzt endgültig fest. Hat jemand eine Idee?

Mit was für einem Prozessor läuft dein System? x86 32bit/64bit, arm?
Das libnodave-Modul das mitgeliefert wurde ist abgeändert worden und um den Punkt setmaxPDUlength() erweitert worden.
Ich weiß nicht für welches System das Modul mit den Änderungen kompiliert worden ist, für meinen RaspBerry Pi mit ARM-Prozessor musste ich libnodave vor dem kompilieren noch Umkonfigurieren damit es läuft.

Starkstrombastler

Hallo Thomas,

Danke schon einmal für die Rückfrage.

Mein System läuft mit einem Intel Celeron 723 @ 1,2 GHz. Linux ist als 32 bit Linux installiert.

Werde jetzt mein System nach libnodave.so absuchen. Möglicherweise habe ich hier die Versionen verwechselt.

Gruß
Bernhard
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

Starkstrombastler

Zitat aus der Threaderöffnung:
ZitatDas Modul verwendet die libnodave library (http://libnodave.sourceforge.net/) zur Kommunikation mit der SPS. Die libnodave musste gepatcht werden damit sie auch mit der Siemens Logo funktioniert. Eine kompilierte Version für Linux liegt dem Modul bei.
Hier stimmt etwas nicht:
--- gemäß    nm -D -C -g libnodave.so    enthält die im Zip-File mitgelieferte libnodave.so  keine Prozedur setMaxPDUlength(...)
--- in 44_S7.pm werden die Prozeduren mit   Nodave::...(..)   aufgerufen - d.h. es wird hier eine  Nodave.so  benutzt.
--- In meinem System habe ich eine Nodave.so unter /usr/lib/.... gefunden. Diese enthält alle von 44_S7.pm benutzten Symbole, außer  setMaxPDUlength()  und  daveSetCommunicationType().

Ich hänge hier echt fest. Hat jemand den Durchblick?

Im Übrigen sollte gemäß meinen Recherchen für die Logo! gelten:
port=102
rack=1
slot=0

Kann das jemand bestätigen?


IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

ThomasRamm

#10
Ich habe dir eine abgeänderte S7.pm angehängt.
Versuche dich damit nochmal zu Verbinden.
Du solltest dann eine Fehlermeldung im Log haben "RÜCKMELDUNG PLC: $res=$error"
$res = Fehlernummer
$error = Übersetzung der Fehlermeldung durch libnodave

Sollte das nicht weiterhelfen setze den Debugmodus von libnodave selber hoch.
Ich habe dir dazu eine Zeile hinzugefügt. Die beiden Zeilen einfach aus- /einkommentieren so dass sie so aussehen:

   #Nodave::daveSetDebug(0);
   Nodave::daveSetDebug(Nodave::daveDebugAll);

Die Debugmeldungen kommen bei mir direkt auf der Konsole an.

PS: die Anbindung an sich müsste klappen
https://www.automation.siemens.com/forum/guests/PostShow.aspx?PostID=307760&Language=de&PageIndex=5 "...Aber Logo 0BA7 + LibNoDave funktioniert !!!!!!!!!!!!!!!!!!!!..."

Gruß
Thomas

thmarx

`nabend zusammen!
Vielen Dank dass endlich FHEM und die  Logo! zusammen finden!

Ich benutze einen Raspi mit wheezy 09-09-2013 sowie die Logo 0BA7. Libnodave habe ich zuerst mal wie ganz oben genannt geladen, das makefile angepasst und compiliert. Dann das Testprogramm aus dem libnodave-Paket auf die Logo angepasst. Mit libnodave-0.8.5.1 und 0.8.5 ging nichts, keine Verbindung zur Logo. Erst mit Version 0.8.4.6 läuft libnodave. Hier http://www.sps-forum.de/hochsprachen-opc/56582-libnodave-kompilieren-auf-raspberry-pi-6.html scheint es um dass Problem zu gehen.
Als nächstes habe ich die 44_xxx.pm ins FHEM-Verzeichnis kopiert. Die Zeilen 123 und 125 aus 44_S/.pm musste ich auskommentieren.
Zitat
Nach einigem Herumprobieren habe ich herausgefunden, dass in der 44_S7.pm zwei Funktionen zum Absturz von Fhem führen:
Zeile 123:  setmaxPDUlength()   und
Zeile 125:  daveSetCommunicationType()

Meine aktuelle Test-Konfiguration sieht so aus:


define logo19 S7 2 0 192.168.178.19 1 0 102
attr logo19 ReadDB-Config 1 923 61
attr logo19 WriteDB-Config 1 923 61
attr logo19 ReadOutputs-Config 1 0 2
define logo19_AM16_r S7_ARead db 1 982 s16
define logo19_Q1_r S7_DRead outputs 1 0
define logo19_Q2_r S7_DRead outputs 1 1
define logo19_Q3_r S7_DRead outputs 1 2
define logo19_Q4_r S7_DRead outputs 1 3
define logo19_Q5_r S7_DRead outputs 1 4
define logo19_Q6_r S7_DRead outputs 1 5
define logo19_Q7_r S7_DRead outputs 1 6
define logo19_Q8_r S7_DRead outputs 1 7
define logo19_Q1_w S7_DWrite DB 1 7536
define logo19_Q2_w S7_DWrite DB 1 7537
define logo19_Q3_w S7_DWrite DB 1 7538
define logo19_Q4_w S7_DWrite DB 1 7539
define logo19_Q5_w S7_DWrite DB 1 7540
define logo19_Q6_w S7_DWrite DB 1 7541
define logo19_Q7_w S7_DWrite DB 1 7542
define logo19_Q8_w S7_DWrite DB 1 7543
attr logo19 ReadDB-Config 1 844 6
define logo19_T1_r S7_ARead db 1 844 s16
define logo19_T2_r S7_ARead db 1 846 s16
define logo19_T3_r S7_ARead db 1 848 s16


Ich lese damit den E/A-Bereich komplett ein

attr logo19 ReadDB-Config 1 923 61
attr logo19 WriteDB-Config 1 923 61

und visualisiere analog Merker 16 und Ausgang 1-8. Mit DWrite in den EA-Bereich kann ich die Ausgänge auch schalten, wenn sie vom Logo-Programm nicht genutz werden.
Mit

attr logo19 ReadDB-Config 1 844 6
define logo19_T1_r S7_ARead db 1 844 s16
define logo19_T2_r S7_ARead db 1 846 s16
define logo19_T3_r S7_ARead db 1 848 s16

lese ich noch Werte aus dem VM-Bereich, klappt soweit auch.

Was mir aufgefallen ist:

  • Wenn ich ReadDB-Config 1 844 6 (VM-Bereich) vor ReadDB-Config 1 923 61 (E/A-Bereich) definiere, kann ich aus dem VM-Bereich nicht mehr lesen.
  • Mehrere Logos lassen sich zwar definieren, der Zugriff von FHEM klappt aber nicht richtig. Scheinbar liest FHEM mal aus der einen, mal aus der anderen und bringt die Ergebnisse komplett durcheinander.
  • Die Konsole, in der FHEM läuft meckert ständig über einen "uninitialized value $found[0]" in fhem.pl.

Leider kann ich nicht viel zur Programmierung beitragen, freue mich aber schon die nächsten Versionen zu testen.

Schöne Grüsse
Thomas

Starkstrombastler

Die modifizierte 44_S7.pm
ZitatIch habe dir eine abgeänderte S7.pm angehängt.
Versuche dich damit nochmal zu Verbinden.
Du solltest dann eine Fehlermeldung im Log haben "RÜCKMELDUNG PLC: $res=$error"
$res = Fehlernummer
$error = Übersetzung der Fehlermeldung durch libnodave
liefert zusammen mit
   Nodave::daveSetDebug(Nodave::daveDebugAll);
folgendes Ergebnis:
2014.10.04 10:26:44.700 3: S7 Define: plcMPI=5, localMPI=0, ip_address=192.168.178.71,rack=1, slot=0, ip_port=102, PDULength= 960
send packet: :                             
                            0:0x03,0x00,0x00,0x16,0x11,0xE0,0x00,0x00,0x00,0x01,0x00,0xC1,0x02,0x01,0x00,0xC2,
                            10:0x02,0x01,0x20,0xC0,0x01,0x09,
asdf daveConnectPLC() step 1. got packet: :                             
asdf error in daveConnectPLC() step 1. retrying...res 0 readISOpacket: short packet:                             
asdf daveConnectPLC() step 1. got packet: :                             
asdf error in daveConnectPLC() step 1. retrying...res 0 readISOpacket: short packet:                             
asdf daveConnectPLC() step 1. got packet: :                             
asdf error in daveConnectPLC() step 1. retrying...openSocket: enter OpenSocketopenSocket: OpenSocket: socket is 44
openSocket: Connected to host: 192.168.178.71
openSocket: setsockopt Erfolg 0
2014.10.04 10:26:44.701 3: port handle: 44
2014.10.04 10:26:44.702 1: MELDUNG PLC: -1=no message defined!
2014.10.04 10:26:44.702 1: define Logo71 Logo71 S7 5 0 192.168.178.71 1 0 102: Could not connect to PLC


Ich interpretierte hieraus, dass keine Kommunikation mit der Logo zustande gekommen ist. Sehe ich das richtig?

Die Konfiguration der Logo! sollte eigentlich sauber sein. werde aber trotzdem einmal komplett neu aufsetzen.
--------------
In der  44_S7.pm  hat mein Perl noch einige Zeilen angemeckert:
Ich habe deshalb wie folgt geändert:

Z. 304       my @a = split( "[ \t][ \t]*", AttrVal($name,$areasconfig[$j],""));
Z. 323       my  $dmsg = "D ".$areaname[$j]." ".$a[$i]." ".$a[$i+1]." ".$a[$i+2];   
Z. 327       my  %addvals = (RAWMSG => $dmsg);

-------------
@thmarx
Das sieht ja gut aus - ist zumindest schon einmal ein Schritt weiter.
IPC\Ubuntu + Fhem, 1wire, Shellies, Siemens Logo!, Z-Wave, PhilipsTV, Vu+duo2, KM200

ThomasRamm

Zitat von: thmarx am 04 Oktober 2014, 21:07:23
Was mir aufgefallen ist:

  • Wenn ich ReadDB-Config 1 844 6 (VM-Bereich) vor ReadDB-Config 1 923 61 (E/A-Bereich) definiere, kann ich aus dem VM-Bereich nicht mehr lesen.
  • Mehrere Logos lassen sich zwar definieren, der Zugriff von FHEM klappt aber nicht richtig. Scheinbar liest FHEM mal aus der einen, mal aus der anderen und bringt die Ergebnisse komplett durcheinander.
  • Die Konsole, in der FHEM läuft meckert ständig über einen "uninitialized value $found[0]" in fhem.pl.

Leider kann ich nicht viel zur Programmierung beitragen, freue mich aber schon die nächsten Versionen zu testen.

Schöne Grüsse
Thomas
Die DB Blöcke müssten in einer Zeile definiert werden. Also readdbconfig DB 1 844 6 1 923 61
Ich glaube aber das es in dem code noch einen Fehler gibt und er an 1 oder 2 stellen die weiteren codeblöcke nicht mehr berücksichtigt. Deshalb hatte ich die ganze readdb Attribute aus meinem S5 Modul komplett entfernt.

Bin gerade nach nicht am PC um das nochmal nach zuschauen.

zicki

Hallo zusammen,

ich arbeite gerade selber an einem Modul mit libnodave als Grundlage. Ich möchte eine Verbindung zur S7 200 (CP 243-1) aufbauen. Klapt auch ganz gut, allerdings stürzt die FHEM komplett ab wenn der CP nicht erreichbar ist. Wie sieht das bei dem 44_S7.pm Modul aus? Hat jemand ähnliches Verhalten beobachten können oder ist das kein Problem?
Ich werde das Modul mal testen allerdings muss ich erst meinen Raspberry neu aufsetzen. Werde dann berichten.
Raspberry PI 2 Jessie mit FHEM; FritzBox 7580 FritzOS 06.83; S7 200 für Heizung und Solar;AVR-NET-IO informiert die S7 200 über das Wetter von morgen und die aktuellen Temperaturen (5x 1-Wire)im Solarspeicher sowie 1x AVR-NET-IO mit Ethersex 10x 1-Wire Raumtemperaturen und Status Fensterkontakte