S7 Fhem mehrere Fhem Variablen zu einen Byte/word zusammenfassen

Begonnen von Stonetech, 01 Februar 2017, 02:43:48

Vorheriges Thema - Nächstes Thema

Stonetech

Hallo Zusammen,
ich komme aus der SPS Ecke und steuere mein Haus seit 18 Jahren mit einer SPS. Seit 1 Jahr habe ich umgestellt auf eine S7-316 mit CP und Netzwerkanbindung. (Bitte keine Anmerkungen warum S7, habe ich nunmal!!). Von Kollegen habe ich die Möglichkeiten der Fhem kennengelernt, mit der Anbindung an der S7.
Ich habe schon einzelne Signale/Variablen mit Erfolg ausgetauscht, aber ich suche nach einer Möglichkeit mehrere Zustände/Vaiablen der Fhem in ein Word/Byte zusammen zufassen und bei Änderung der Fhem oder SPS zu übergeben. Ich verspreche mit dadurch auf beiden Seiten weniger Netzlast. Ich habe viel gegoogelt aber nichts gefunden. Die SPS als solches kann eigentlich alles steuern( steuert schon alle Lampen und erfasst alle Taster oder Sensoren), aber so manche Dinge (Anwesendheit, Tag/Nacht, LAN-Ping, Werte loggen) kann die Fhem nun mal einfacher erledigen. Aus diesem Grund suche ich die Möglichkeit ganze Speicherberiche der SPS in die Fhem zu übertragen/abfragen , oder von der Fhem in die SPS.
Um Anregungen oder Beispiele wäre ich Dankbar.
PS: Ich bin zwar kein Anfänger in der Programmierung, aber Anfänger in Perl und Fhem Syntax. Wenn jemand einen guten Link für Grundlagen hat, wäre ich auch Dankbar
Gruß Jan

charlie71

Hallo Stonetech,

das S7 Standartmodule erfüllt deine Wünsche teilweise:
Lesezugriff FHEM liest Daten von der SPS)
Hier versucht das S7 Module so wenig Daten wie nur möglich zu lesen, dh das S7 Modul berechnet aus den Datenpunkten Speicherblöcke die von der SPS zu lesen sind (Anmerkung das lesen erfolgt immer Zyklisch). DH es wird im Optimalfall nur ein Read Telegramm zur SPS gesendet. Die Blockgrößen ergeben sich durch die MaxPDU die von den Kommunikationsteilnehmern ausgehandelt werden.
Um die Anzahl der Datenblöcke zu reduzieren muss man wie folgt vorgehen:
1) vom selben DB lesen
2) Speicheradressen wählen die nahe beieinander liegen.

Schreibzugriff FHEM schreibt Daten zur SPS)
Wenn der Wert von einem AWRITE oder DWRITE beschrieben wird, dann wird unverzüglich ein Telegramm zur SPS gesendet.

Zusätzliche Infos:
Den Netzwerktraffic für das zyklische Lesen würde ich als vernachlässigbar einschätzen:
Werden zyklisch 2 Blöcke übertragen werden pro Sekunde ca 600 Bytes übertragen.
Etwas größer ins Gewicht fallt hier schon das Verteilen der Daten auf FHEM Seite, das kann bei einem Raspberry PI schon eine größere Prozessor Last erzeugen.

lG
Charlie71