Zum Ende der Metadaten springen
Zum Anfang der Metadaten

IN ARBEIT

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:

  • 55 Digitale In und Outputs
  • Eingänge 5V Tolerant, d.h. Ein Eingang kann wie üblich statt 3.3 Volt auch direkt mit 5 V Beschaltet werden ohne Schaden zu nehmen.
  • 7 Analoge 0-3,3 Volt 12 Bit Eingänge (0- 3,3V entspricht 0 bis 4094).
  • I2C Bus an Bord.
  • PoBus an Bord (Ähnlich den Loxone Extensions).
  • mehrere 1-wire 18x20-Bus-Pin und DHT2x Feuchte/Temperatur Anschlüsse möglich.
  • diverse Sensoren schon implementiert zB. DHT21, Lichtsensor, analoge IC's
  • RTC (real-time clock) Echtzeituhr (Batteriegepuffert 3 Volt CR1220).
  • Spannungsausfall sichere- Funktionen (Batteriegepuffert 3 Volt CR1220).
  • grafisch programmierbare SPS mit zB PID-Reglern, Limiter, Multiplexer, Bit-Byte, Byte-Bit ... Ram-Speicherstellen, "Merker" über Modbus TCP
  • und vieles anderes...

 

Bild 1. Quelle: https://www.poscope.com/PoKeys57E

 

Arbeitsschritte für die Kopplung Pokeys ↔ Miniserver mittels UDP


Warum UDP?

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 verbindungslosesnicht-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)


Schritt 1: Installation der PoKeys Konfigurationssoftware

Für die Konfiguration des PoKeys ist eine Konfigurationssoftware des Herstellers nötig und kann von der Herstellerseite heruntergeladen werden:

  • Software herunterladen und installieren Link zur Downloadseite
  • Aktuellste Version zum Zeitpunkt der Artikelerstellung "PoKeys v4.2.19 Configuration and PoBlocks (21.12.2016).exe (38.2 Mb)"

Schritt 2: PoKey Netzwerkeinstellungen anpassen

  • Den PoKey mit Spannung versorgen und mit dem eigenen Netzwerk verbinden.
  • Wenn ein DHCP Server vorhanden ist, bekommt der PoKey eine IP Adresse zugewiesen.
  • 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


Schritt 3: I/O Konfiguration anpassen (Optional)

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.

  • Mit "Send to device" werden die Einstellungen übertragen.

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

Schritt 4: PoKeys UDP Kommunikation einstellen

  • Um die ersten leeren Daten senden zu können, öffnet man "Device / Web interface configuration" und stellt die folgenden Sachen ein.

Bild 7: Shared Slot Settings
  1. Add new
  2. Item caption / Data source / Display type / Data unit / Min value einstellen wie auf dem Screenshot. Item caption kann frei gewählt werden.
    Data Source ist ein Shared Memory. Auf diesen kann per UDP zugegriffen werden. Wir beginnen hier mit dem ersten Speicherbereich "Shared slot 1". Dieser wird später in PoBlocks S0 benannt. Leider zählt die Konfigurationssoftware von 1 bis X und PoBlocks von 0 bis X-1.
  3. Acces rights wählt man "Server reports" aus. Ohne diese Einstellung werden keine Werte gesendet.
  4. Über "Send to device (without saving) wird die Konfiguration temporär auf den PoKey gespeichert.
  • Als nächstes drückt man auf "Open report server configuration" und es öffnet sich folgendes Fenster.

Bild 8: UDP Settings
  • UDP mode einstellen
  • Unter "Destination data" die IP Adresse des Empfänger Loxone Miniservers eingeben.
  • Einen Port auswählen. Als Beispiel hier 4000.
  • Updateintervall einstellen (Unter 1 Sekunde habe ich nicht getestet)
  • Send to device (no save)
  • Report server configuration und Dashboad configuration können geschlossen werden.

 

  • Im Hauptfenster kann über "Send to device" die Konfiguration dauerhaft übertragen werden.
  • Die Grundkonfiguration des PoKey für UDP ist hiermit abgeschlossen und man kann die ersten "Dummy" Werte in der LoxConfig empfangen.

 


Schritt 5: Erster UDP Emfpangstest in der LoxConfig

Verwendete LoxConfig Version: V8.1.11.11

 

  • Ist man mit einem Miniserver verbunden kann man über den UDP Monitor die ersten Daten empfangen.
  • Virtuelle Eingänge markieren und oben den UDP Monitor aktivieren.
  • Danach sollten unten im Log über Port 4000 Daten empfangen werden.

    Bild 9: LoxConfig UDP Empfangstest
  • Im nächsten Schritt müssen die UDP Pakete nur noch mit Informationen gefüttert werden.

Schritt 6: Zustand der Eingänge im Shared Slot ablegen

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

     

  • Wenn man sich noch einmal Schritt 4 anschaut, würde dort nur der Shared Slot 0 ausgewählt. Für S1 und S2 muss dort auch noch ein Eintrag angelegt werden.
  • Hat man alles erledigt, kann das Programm compiliert werden. Entweder über "Tools / Compile" oder Strg+B. Gibt es noch Fehler, werden diese nun aufgelistet. Sind noch Eingänge offen, so entsteht hierfür eine Fehlermeldung. Diese Eingänge können mit einem Rechtsklick auf den Eingang mit einer Konstanten versehen werden.
  • Über "Tools / Download", F6 oder "Check and transfer" wird das Programm auf den PoKeys heruntergeladen und kann mit einem Druck auf "RUN" oben rechts gestartet werden (siehe Bild 11). Über "Tools / Monitor Mode" oder F7 kann eine Live View  aktiviert werden. Da alle Eingänge über einen Pull Up Widerstand auf High Pegel gezogen werden, sollten jetzt alle Eingänge aktiv sein. Markiert man einen Eingang, kann man die Einstellung "Inverted" aktivieren. Mit aktivierter Live View sieht man auch den aktuellen Wert der momentan in den Shared Slot gespeichert wird.

    Bild 12: PoBlock Live View

 

  • 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.

Schritt 7: Empfangen der Werte in der LoxConfig

  • Virtuellen UDP Eingang anlegen
    • Senderadresse = IP unseres PoKeys
    • UDP Port = Erster eingestellter Port in der PoKeys Konfigurationssoftware. Hier ist es Port 4000.
  • 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 "PoKey_1_S0=0.00".
    Den Anzeigewert multipliziere ich noch über die Korrektur mit dem Wert 100. Damit empfange ich ganze Zahlen, die leichter weiter verarbeitet werden können.
    Verwendet man keine Skalierung muss die Einheit auf zwei Stellen nach dem Komma erweitert werden, da z.B. der Wert 1 über UDP als 0.01 empfangen wird. Verwendet man die Korrektur, kann man die Einheit auf <v> ändern, da dann keine Nachkommastellen benötigt werden.
  • Nach dem Herunterladen des Programms auf den Miniserver sollten jetzt schon die Daten sichtbar sein.
  • 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

 

 


Quellen und Links: