CODESYS Anwendung – Kommunikation catman AP - PMX

Diese Anleitung beschreibt das Erstellen einer CODESYS-Anwendungen auf PMX.

Grundlegende Erfahrungen mit CODESYS werden vorausgesetzt. Erfahrene Benutzer können davon gerne abweichen. Weitere Hilfen gibt es mit den Beispielen, die beim Importieren des PMX Pakets standardmäßig auf dem Desktop installiert werden, und der Online-Hilfe des Pakets.

Die erforderlichen Dateien befinden sich auf der CD „PMX CODESYS“, die mit jedem PMX das CODESYS enthält mitgeliefert wird oder von der Supportseite von hbm.com heruntergeladen werden kann.

In diesem Beispiel wird der PMX als TCP/IP-Server eingesetzt und eine Kommunikation mit Catman AP von HBM aufgebaut.

Mittels selbstdefinierter Befehle können so über die Catman AP CPU-Kanäle gesetzt werden, um z.B. Sollwerte von PID-Reglern o.ä. zu verändern. Dadurch ermöglicht PMX von HBM einfache automatisierte Regelungen.

Die grundsätzliche Funktionsweise des TCP/IP-Servers auf dem PMX erklären die entsprechenden Anwendungstipps von HBM. Die Stringmanipulationen wurden im Beispiel mit Hilfe der von OSCAT bereitgestellten Bibliotheken vorgenommen (www.oscat.de).

PMX-seitig besteht das Beispiel vor allem aus dem „TCP/IP-Server“ und dem „CPUInterface“. Auf dem PC stellt ein Catman Easy Script die Kommunikationsfunktionen bereit.

Aufbauskizze

CODESYS-Paket extrahieren

Entwicklungsumgebung öffnen

Führen Sie CODESYS als Administrator aus.

Paket extrahieren

Wählen Sie im sich öffnenden Dialog das Verzeichnis, in dem das Archiv „TCP-IP-Server.projectarchive“ abgelegt wurde, und öffnen dieses.
<br>
Gehen Sie in CODESYS auf den Reiter „Datei“, wählen Sie „Projektarchiv“ und darunter „Archiv extrahieren...“.

PMX verbinden

Gateway hinzufügen

Doppelklick auf „Device (CODESYS Control HBM PMX V3)“, dann „Gateway hinzufügen…“ am rechten Seitenrand.

Einstellungen im Fenster beibehalten und mit „OK“ bestätigen.

PMX einbinden

Über „Netzwerk durchsuchen“ sollte das PMX automatisch erkannt werden.
Mit einem Doppelklick wird das Gerät aktiviert.

Befehlsinterpretation auf dem PMX durch CODESYS

Der „TCP/IP-Server“ wird als Blackbox verwendet. Wenn Catman AP sich mit ihm verbunden hat, gibt der Server empfangene Strings an das „CPUInterface“ weiter. Dieses interpretiert die darin gesendeten Befehle und agiert entsprechend.

Zum Einstieg in das Beispiel sind die Schnittstellen des Servers zunächst nochmals aufgeführt. Anschließend wird die Befehlsinterpretation näher betrachtet und die Verbindung mit den CPU-Kanälen erläutert, die zur Weiterverarbeitung verwendet werden können. Im Beispiel werden auf diese Weise zwei Kanäle gesetzt.

Schnittstellen des Servers

  • Eingänge:
    • sSend (String: zu sendender String)
    • port (Word: Port, auf dem der PMX angesprochen werden kann)
    • sIpAddress (String: IP-Adresse, die mit der angezeigten IP-Adresse im Webbrowser abgestimmt werden muss)
    • bStart (Boolean: startet den Server)
    • bShutDownServer (Boolean: beendet den Server)
  • Ausgänge:
    • sReceived (String: empfangener String)
    • bClientOnline (Boolean: signalisiert Erkennung eines Clients)
    Blockschaltbild des „TCP/IP-Servers“

    Funktionsweise des „CPU-Interface“

    Das bereitgestellte „CPU-Interface“ unterstützt jeweils für jeden Kanal drei Befehle: Setzen, Abfragen, Zurücksetzen. Die Befehle werden im struct „InstructionSet“ zusammengefasst, als Anwendern einen schnellen Überblick über die Funktionen zu ermöglichen. Zu beachten ist, dass die „set...“-Befehle hier mit einem Leerzeichen enden – dies erleichtert die Unterscheidung zwischen dem eigentlichen Befehl und dem folgenden zu setzenden Parameter.

    Code des „InstructionSets“

    Nachdem der TCP-Server eine Verbindung zu einem Client, d.h. Catman AP, feststellt, beginnt das CPU-Interface, eingehende Nachrichten unter sReceived auf Befehle zu überprüfen. Sobald ein Befehl erkannt wird, wird er entsprechend befolgt.

    Das durch den Befehl ausgelöste Verhalten muss im CPU-Interface bestimmt werden. An Catman AP zurückzugebende Werte müssen mit dem String „$R$N“ terminiert werden. Dazu wird mit dem Stringbefehl „Concat()“ der Rückgabewert mit „$R$N“ zu einem String vereint.

    Code des „CPUInterface“
    Verknüpfung mit den CPU-Kanälen

    Verknüpfung mit den CPU-Kanälen

    Die Verknüpfung von Variablen mit den CPU-Kanälen wird in der CODESYS-Entwicklungsumgebung wie folgt vorgenommen:

    1. Ein Doppelklick links im Verzeichnisbaum der Entwicklungsumgebung auf „Device“ öffnet das entsprechende Konfigurationsfenster
    2. Auf den Reiter „Internal I/O Mapping“ klicken (2)
    3. Zu „Codesys Output x“ scrollen und auf dem leeren Feld in der Spalte „Variable“ einen Doppelklick ausführen (3)
    4. Im sich öffnenden Fenster die gewünschte Variable auswählen (Muss vom Typ REAL sein!)
    5. Abschließend rechts unten bei „Always update variables“ einen Haken setzen (4)

    Catman AP

    Visualisierung in Catman AP

    Innerhalb von Catman AP muss ein Catman Easy Script erstellt werden, das mithilfe der Objektbibliothek „EA_Comm“ einen TCP/IP-Client erstellt sowie die in CODESYS definierten Befehle beherrscht. Natürlich kann auch ein anderer TCP/IP-Client Kontakt zum PMX aufnehmen und durch die Befehle mit ihm kommunizieren.

    Das Beispiel bietet in einer Visualisierung Schaltflächen an, mit deren Hilfe die einzelnen Schritte zum Kommunikationsaufbau vorgenommen werden. Die Schaltflächen sollten in der Reihenfolge wie angegeben bedient werden, d.h. Verbinden mit PMX, beliebiges Setzen oder Abfragen von Werten sowie Trennen vom PMX, um eine einwandfreie Kommunikation zu sichern. Falls ein Problem auftritt hilft i.d.R. eine Trennung vom PMX und erneutes Verbinden. Probleme können durch einen Wert ungleich null im Feld (5) durch den Anwender erkannt werden.

    Der Verbindungsaufbau beginnt über die Schaltfläche „Connect to PMX“ (1). War der Aufbau erfolgreich, quittiert der PMX dies mit einem „Ready“ im Feld (3). Von nun an können in Feld (3) die verknüpften CPU-Kanäle 1 und 2 beliebig gesetzt (2) und abgefragt (4) werden. Durch den Anwender muss beim Setzen von Werten sichergestellt werden, dass sie sich in einem vom PMX umsetzbaren Bereich bewegen. Ansonsten wird zwar der CPU-Kanal gesetzt, aber die angeschlossene Hardware verarbeitet den ungültigen Wert nicht. Des weiteren muss sich generell ein Zahlenwert in Feld (3) befinden, da ansonsten eine Null auf dem entsprechenden Kanal gesetzt wird.

    Rückgabewerte werden ebenfalls in Feld (3) ausgegeben. Feld (5) dient ausschließlich der Fehlererkennung innerhalb des Scripts. Sobald ein Wert ungleich null dort erscheint, sollte die Verbindung getrennt und wieder erneut aufgebaut werden. Nach der gewünschten Parametrierung der Kanäle sollte die Verbindung immer getrennt werden (6).

    Im Code des Scripts kann nachvollzogen werden, wie mit der „EA_Comm“-Bibliothek zum Aufbau eines TCP/IP-Clients umgegangen werden muss. Die Schaltflächen in der Visualisierung lösen die entsprechenden Routinen bzw. Subs aus. Der vorliegende Auszug beschränkt sich auf das Setzen des CPU-Kanals 1. Die Sub-Methoden lassen sich jedoch auf CPU-Kanal 2 übertragen.

    Die Variable „Timeout“ legt die Wartezeit fest, während der auf eine Reaktion des Servers gewartet wird. Diese sollte immer länger sein als die Zyklen der SPS. „Id“ liefert einen Handle oder Deskriptor zur Verwaltung des darunterliegenden Sockets. „Terminator“ legt das ASCII-Zeichen fest, bis zu dem Nachrichten im Puffer gelesen werden – das Zeichen 10 steht für „Linefeed“, was bei CODESYS „$R$N“ bedeutet. Die Puffergröße, bestimmt durch „MaxBytes“ sollte mit der Puffergröße im PMX übereinstimmen. Dasselbe gilt selbstverständlich für die Portnummer und IP-Adresse.

    Zu beachten ist, dass die Bibliothek den Empfangspuffer nicht automatisch leert. D.h. nach dem erfolgreichen Lesen einer Nachricht werden beim erneuten Lesen die restlichen Bytes der vorigen Nachricht gelesen, die keine relevanten Informationen mehr enthalten. Das Problem wird durch das byte-weise „Leerlesen“ des Puffers erreicht. Der entsprechende Teil ist im Sub „getCPU1“ gekennzeichnet.

    catman Easy script

    TIPP

    Weitere Informationen und Hilfen zur Codesys Programmerstellung erhalten Sie in der Online-Hilfe von Codesys, im Internet unter http://www.codesys.com oder im Codesys Chat http://forum.codesys.com/

    Nutzen Sie vorhandenes Wissen und Erfahrung im Codesys Store. Dort finden Sie eine Vielzahl von Programm- und Lösungsbeispielen zu unterschiedlichsten Aufgabenstellungen http://store.codesys.com/?___store=en&___from_store=default

    Rechtlicher Hinweis

    Diese Beispiele dienen lediglich der Veranschaulichung. Sie unterliegen keinen Gewährleistungs- oder Haftungsansprüchen.

    Kontakt / Fragen? Wir freuen uns auf Ihre Anfrage.