Der PoKeys57E ist ein Modul mit div I/O's, Fühlern incl der Möglichkeit einer Speicherprogrammierbaren Steuerung (SPS) mit Ethernet Anschluss, dieses Bord wird von PoLabs entwickelt.
Die Key- Features:
und vieles anderes...
Bild 1. Quelle: https://www.poscope.com/PoKeys57E
Das User Datagram Protocol, kurz UDP, ist ein minimales, verbindungsloses Netzwerkprotokoll, das zur Transportschicht der Internetprotokollfamilie gehört. UDP ermöglicht Anwendungen den Versand von Datagrammen in IP-basierten Rechnernetzen. Die Entwicklung von UDP begann 1977, als man für die Übertragung von Sprache ein einfacheres Protokoll benötigte als das bisherige verbindungsorientierte TCP. Es wurde ein Protokoll benötigt, das nur für die Adressierung zuständig war, ohne die Datenübertragung zu sichern, da dies zu Verzögerungen bei der Sprachübertragung führen würde. ... UDP ist ein verbindungsloses, nicht-zuverlässiges und ungesichertes wie auch ungeschütztes Übertragungsprotokoll. Das bedeutet, es gibt keine Garantie, dass ein einmal gesendetes Paket auch ankommt, dass Pakete in der gleichen Reihenfolge ankommen, in der sie gesendet wurden, oder dass ein Paket nur einmal beim Empfänger eintrifft. Es gibt auch keine Gewähr dafür, dass die Daten unverfälscht oder unzugänglich für Dritte beim Empfänger eintreffen. Eine Anwendung, die UDP nutzt, muss daher gegenüber verlorengegangenen und unsortierten Paketen unempfindlich sein oder selbst entsprechende Korrekturmaßnahmen und ggfs. auch Sicherungsmaßnahmen vorsehen Quelle: Wikipedia |
Durch die Einschränkung der ModbusTCP Funktion ab Firmware V8.1.11.11 (PoKeys57E 55 - Digitale Ein und Ausgänge, div Fühler via ModbusTCP an LOXONE koppeln. oder Modbus TCP- und RTU-Schnittstelle) ist die Idee entstanden, die Zustände der Eingänge über UDP an den Miniserver zu schicken. Dabei hat man keine Einschränkung wie den minimalen Abfragezyklus von 5s bei ModbusTCP. Für kritische Signale, sollte dies nicht verwendet werden, da es sich hier um ein ungeschütztes Übertragungsprotokoll handelt. (siehe Info oben)
In der aktuellen Version PoKeys v4.2.19 ist das versenden von UDP Daten nur mit Hilfe der Shared Data Slots möglich. Bereits in der aktuellen Beta v4.2.21 sind neue UDP Send Blöcke hinzugekommen und in den neusten Versionen wird man von Loxo Befehle und Abfragen per UDP an das Pokeys57E Modul senden können.
In diesem Artikel werden beide Wege beschrieben falls man die Betaversion nicht nutzen möchte.
Die folgende Konfiguration sollte gewählt werden, wenn man die Betaversion nicht nutzen möchte.
Für die Konfiguration des PoKeys ist eine Konfigurationssoftware des Herstellers nötig und kann von der Herstellerseite heruntergeladen werden:
Nach dem Starten der Konfigurationssoftware wird der PoKey automatisch gefunden. Anschließend auf "Connect" drücken.
Bild 2: Automatisch gefundener PoKeys
Über "Device / Network device settings.." kann eine feste IP und Gateway vergeben werden. Die Gateway IP ist nur wichtig, wenn eine Kommunikation über mehrere Netzwerke stattfinden soll (z.B. Heimnetzwerk → Internet)
Bild 3: Netzwerkeinstellungen vom PoKeys
Falls mehrere PoKeys zum Einsatz kommen, kann zusätzlich noch über "Change user ID" und "Change device name" der PoKey eindeutig benannt werden
Dieser Schritt ist nicht unbedingt nötig, da die Einstellungen später in einem anderen Programm gemacht werden. |
Als nächstes muss festgelegt werden, welcher I/O Kanal als Ein- bzw. Ausgang verwendet werden soll. Da ich meinen PoKey auf der 24 In / 24 Out Adapterplatine von Helmut Holm habe, ist bei mir die Belegung schon vorgegeben. Auf dem Screenshot sind die ersten 16 Kanäle schon konfiguriert.
Bild 4: I/O Konfiguration für einen Teil der digitalen Eingänge
Man wählt den entsprechenden Pin aus (hier Pin 1 ausgewählt) und stellt diesen auf "Digital input". Möchte man in Loxone den unbeschaltenen Pin als inaktiv sehen, muss noch der Haken bei "Invert pin" gesetzt werden. Der Eingang ist im Ruhezustand über einen Pull-Up Widerstand auf High-Pegel.
Drückt man F4 oder geht auf "Peripherals / Digital Input and Outputs" kann man die Funktion der Eingänge testen. Aktive Eingänge werden Grün dargestellt.
Bild 5: Eingang 2 aktiv Bild 6: Eingang 2 inaktiv
Bild 7: Shared Slot Settings
Als nächstes drückt man auf "Open report server configuration" und es öffnet sich folgendes Fenster.
Bild 8: UDP Settings
Verwendete LoxConfig Version: V8.1.11.11 |
Danach sollten unten im Log über Port 4000 Daten empfangen werden.
Bild 9: LoxConfig UDP Empfangstest
Bei der PoKeys Installation wird ein Programm "PoBlocks" installiert. Dabei handelt es sich um ein sehr mächtiges Programm. Damit lassen sich per Drag&Drop und grafischer Programmierung Logik-Schaltungen erstellen. Diese können direkt auf den PoKeys übertragen und getestet werden.
Beim ersten Start von PoBlocks wird noch kein PoKeys gefunden, da der Core deaktiviert ist. Man wählt hier einfach PoKeys 57 series [generic] aus.
Bild 10: PoBlocks Erster Start
Ist das Programm gestartet, kann man oben rechts die "Device Selection" aufrufen.
Bild 11: PoBlocks Core Settings
In der "Device Selection" wird das Netzwerk nach vorhandenen PoKeys durchsucht. Wird der PoKeys gefunden kann man den PoIL Core aktivieren indem man auf Enable/Disable klickt. Danach wird der Pokeys auch beim Start von PoBlocks automatisch gefunden. Mit "Connect" mit dem Pokeys verbinden.
Bild 12: PoIL Core Enable
In meinem Fall wurden die Informationen von 8 Fensterkontakten zusammengefasst zu einem Byte. Dafür unter IO die benötigte Anzahl an Digital Inputs anlegen und einen Namen und Pin vergeben. Mit Hilfe des "Bits to byte" Block unter Extended werden 8 Signale zu einem Byte zusammengefasst.
Bild 10: Zusammenfassen von jeweils 8 Signalen zu einem Byte
Anschließend kann man den Ausgängen der "Bits to Byte" Blöcke S0 bis S2 jeweils einen Shared Slot zuweisen. Dafür wechselt man rechts auf den Reiter "Shared data" und macht einen Doppelklick auf den ersten freien Slot. Der Cursor ändert sich und man klickt den Ausgang vom Block S0 an. Hat man das für alle Slots gemacht, sollte es so aussehen.
Bild 11: Vergeben von Shared Slots
Die einzelnen Bytes können mit Hilfe des Binärdekoders in der LoxConfig in einzelne Bits getrennt werden. Bei mir steht jedes Bit für einen Fensterkontakt. Mit diesen Signalen gehe ich dann in die Logik mit verketteten Statusbausteinen. Link ins Forum
Diese Konfiguration ist momentan nur möglich, wenn man die aktuelle Betaversion "PoKeys v4.2.21 beta Configuration and PoBlocks (18.1.2017).exe (38.57 Mb)" von der Downloadseite nutzt.
Kann von oben übernommen werden. Es muss nur v4.2.21 installiert werden.
Kann von oben übernommen werden.
Bei der PoKeys Installation wird ein Programm "PoBlocks" installiert. Dabei handelt es sich um ein sehr mächtiges Programm. Damit lassen sich per Drag&Drop und grafischer Programmierung Logik-Schaltungen erstellen. Diese können direkt auf den PoKeys übertragen und getestet werden.
Beim ersten Start von PoBlocks wird noch kein PoKeys gefunden, da der Core deaktiviert ist. Man wählt hier einfach PoKeys 57 series [generic] aus.
Bild 10: PoBlocks Erster Start
Ist das Programm gestartet, kann man oben rechts die "Device Selection" aufrufen.
Bild 11: PoBlocks Core Settings
In der "Device Selection" wird das Netzwerk nach vorhandenen PoKeys durchsucht. Wird der PoKeys gefunden kann man den PoIL Core aktivieren indem man auf Enable/Disable klickt. Danach wird der Pokeys auch beim Start von PoBlocks automatisch gefunden. Mit "Connect" mit dem Pokeys verbinden.
Bild 12: PoIL Core Enable
Bild 10: Zusammenfassen von jeweils 8 Signalen zu einem Byte
Zum Schluss muss noch der AutoStart des Programms aktiviert werden. Ist kein Block markiert, werden rechts die allgemeinen Einstellungen angezeigt. Über "Check and transfer" die Änderung noch an den PoKeys senden.
Zusätzlich legen wir zu diesem virtuellen UDP Eingang noch einen "Virtueller UDP Eingang Befehl" an.
Als Senderadresse wird wieder die IP unseres Pokeys eingetragen.
Die Befehlserkennung muss an das jeweils empfangene Paket angepasst werden. Über den UDP Monitor lässt sich das recht einfach auslesen. Bei mir sehen die Daten wie folgt aus:
Man sieht hier, welche Auswirkung die Einstellung der Datenports vom UDP Sender Blocks in PoBlocks hat.
Möchte man z.B. den Wert von Port A abfragen, gibt man als Befehlserkennung In_a=\v ein.
Dies ist das Ergebnis des langen Prozesses der Planung und die Funktion ist in der 'Beta-Version implementiert.
PoKeys-Geräte verfügen nun über eine einfache textbasierte Befehlsschnittstelle, die einfach via UDP-Pakete verbunden werden kann.
PoKeys überträgt diese Befehle auf Port 20057.
Diese einfache Textoberfläche wird in Zukunft erweitert, um mehr Befehle und andere Schnittstellen zu unterstützen.
Derzeit sollte es Ihnen ermöglichen, einfache UDP-Pakete an PoKeys Gerät zu senden.
Poil-Steckplätze können auch gelesen und geschrieben werden.
Das Setzen/Abfragen des digitalen Ausgangs zB Pin 5 auf 1 ist so einfach mit dem Senden von "OSV5=1" (ohne Anführungszeichen).
einfach als Text als UDP an die IPadr des Pokeys über Port 20057.
Das Update 4.2.23 ist unter https://www.dropbox.com/s/af3w319x0d3iz4n/PoKeys_Setup_4_2_23.exe?dl=0 verfügbar
Die PoKeys SimpleText-Syntax ist einfach:
Jeder Befehl beginnt mit einem Buchstaben, der die Zielperipherie angibt:
- I: Digitaleingang
- A: Analogeingang
- O: Digitalausgang
- E: Encoder-Wert
- C: digitaler Zählerwert
- S: EasySensors-Werte
- B: PoBlocks shared slot
Der zweite Buchstabe des Befehls ist ein Verb:
- G: get
- S: set
- R: reporting
Der dritte Buchstabe ist das Substantiv:
- V: Wert
- S: status
Der Befehl fährt dann mit Parametern fort, wobei jeder Parameter mit einem Kommasymbol getrennt wird.
Im Falle eines set-Befehls muss der Befehl dann = Zeichen und den Wert in numerischer Form ohne zusätzliche Einheits- oder Dezimalpunktsymbole enthalten.
Wenn die Antwort angefordert wird, endet der Befehl mit einem Fragezeichen?
Beispiele für die Abfragebefehle:
- IGV10? -> digitalen Eingangswert von Pin 10 (echte Pin-Nummer), mit dem Wert wird geantwortet
-> Antwort: IRV10=1 - Melde-Digitaleingangswert von Pin 10 ist 1 (ON)
- AGV41? -> den analogen Eingangswert von Pin 41 (echte Pin-Nummer) erhalten, mit dem Wert antworten
-> Antwort: ARV41=534 - Der analoge Eingangswert des Pins 41 wird mit 534 ausgegeben
- OSV5=1 -> digitalen Ausgangswert von Pin 5 auf Zustand 1 (ON) setzen, keine Antwort Reaktion
Zum Schluss möchte ich mich noch bei den Entwicklern des PoKeys bedanken. Der Support ist super und neue Funktionen werden auch auf Wunsch der Community eingebaut. Sofern diese sinnvoll sind. So hat man zufriedene Kunden Manch anderer könnte sich hier eine Scheibe von abschneiden.
Quellen und Links: