Logikprogramm

Beschreibung

PolyScope X-Anwendungen können ein Logikprogramm enthalten, das unabhängig vom Hauptroboterprogramm kontinuierlich im Hintergrund läuft. Dies ist nützlich für Aufgaben, die auch dann weiterlaufen müssen, wenn der Roboterarm ausgeschaltet ist, das Hauptprogramm angehalten oder beendet wurde oder der Bediener einen Sicherheitsbereich betreten hat.


Zu den typischen Anwendungsbereichen gehören die Aufrechterhaltung der Feldbus-Kommunikation (Modbus, Ethernet/IP, PROFINET, Socket, XmlRPC), die Reaktion auf externe Sensoreingaben, die Meldung des Roboterstatus an eine Produktions-SPS sowie die Steuerung externer Geräte, wenn das Hauptprogramm angehalten wird.

Das Logikprogramm darf keine Funktionen verwenden, die den Roboterarm direkt bewegen, die Nutzlast ändern oder die TCP-Parameter modifizieren.

Anwendungsbeispiele mit Logikprogramm

  1. Aktive Reaktion auf externe Sensoreingaben, während sich der Roboter in einem Stoppmodus befindet, z. B. „Safeguard Stop“, „Sicherheitsstopp“ oder „Not-Halt“, und das Hauptprogramm angehalten oder gestoppt ist oder bevor der Roboterarm eingeschaltet wird.

  2. Die Feldbus-Kommunikation (Modbus, Ethernet/IP, PROFINET, Socket, XmlRPC) bleibt auch dann aufrechterhalten, wenn der Roboterarm ausgeschaltet ist und das Programm nicht läuft.

  3. Kontinuierlicher Ablauf der Zelllogik, während das Hauptprogramm vom Bediener unterbrochen wird.

  4. Roboterstatusbericht, der an die Produktionssteuerungssoftware (Produktions-SPS) übermittelt wird.

  5. Gesteuertes Anhalten externer Geräte, wie z. B. Schweißmaschinen, Förderbänder oder Klebstoffspender, wenn das Hauptprogramm angehalten oder unterbrochen wird.

  6. Die Eingaben des Bedieners werden vor dem Start des Programms erfasst.

  7. Maßgeschneiderte Wiederherstellung bei Fehlerzuständen. Der Bediener kann entscheiden, was nach der Wiederaufnahme des Hauptprogramms geschehen soll.

  8. Ersatz der externen SPS-Steuerung in kleinen Roboterzellen.

Lizenz

Für das Logikprogramm ist eine Lizenz erforderlich, die über das Kundenportal erworben werden kann.

 

Steuerung des Logikprogramms

Wählen Sie auf der Seite „Programm“ in der Seitenleiste die Option „Logikprogramm“ aus. Die erweiterte Seitenleiste zeigt die Steuerelemente zur Navigation durch die verschiedenen Teile des Logikprogramms an. Außerdem können Sie damit das Programm starten, anhalten, stoppen und zurücksetzen.

 

Die Schaltfläche „Programm ausführen“ wird je nach Status des Logikprogramms entweder zu „Programm ausführen “ oder zu „Programm stoppen“. Sie dient als Schnellzugriff auf Programmsteuerungsaktionen, die im Kontextmenü des Logikprogramms verfügbar sind.

Die vier Anzeigen des Logic-Programms zeigen den aktuellen Status des Programms an. Außerdem wird angegeben, ob das Programm so konfiguriert ist, dass es automatisch gestartet wird, wenn eine Anwendung geladen wird.

 

Struktur des Logikprogramms

Ein Logikprogramm weist dieselben strukturellen Abschnitte auf wie ein Hauptprogramm:

  • Hauptprogrammblock – läuft kontinuierlich, bis er manuell, durch einen Stoppbefehl oder durch einen Laufzeitfehler beendet wird.
  • Vor dem Start — wird einmalig ausgeführt, wenn das Logikprogramm startet.
  • Module — Funktionen und Threads, die genauso organisiert sind wie im Hauptprogramm. Thread-Funktionen werden standardmäßig nur einmal ausgeführt; aktivieren Sie die Option „Loop“, um einen Thread kontinuierlich auszuführen.

Das Roboterprogramm und das Logikprogramm verfügen jeweils über einen eigenen Satz globaler Variablen, einen unabhängigen Thread-Pool und einen unabhängigen Ausführungslebenszyklus. Das Starten, Stoppen oder der Fehler eines Programms führt nicht zum Stoppen des anderen. Ein Stopp- oder Pausenbefehl wirkt sich nur auf das Programm aus, in dem er ausgeführt wird.

 

 

Im Abschnitt „Vor dem Start“ können Sie das Programm nur einmal ausführen.

Im Abschnitt „Module“ sehen Sie eine Liste der für das Programm verfügbaren Funktionen und Threads.

 

Datenaustausch mit dem Roboterprogramm

Die Kommunikation zwischen dem Roboterprogramm und dem Logikprogramm erfolgt in erster Linie über Anwendungsvariablen . Variablen können sowohl im Roboter- als auch im Logikprogramm gesetzt und ausgelesen werden.

In diesem Beispiel werden die in den Eingabepuffer der Roboterzelle gelangenden Objekte gezählt und die Anzahl im Roboterprogramm angezeigt. Der Zähler zählt weiter, auch wenn der Roboterarm ausgeschaltet ist.

 

Den Roboterstatus ablesen

Der Status des Roboters ist über integrierte RTDE-Variablen abrufbar. Diese Variablen können mit der Skript-Funktion get_rtde_value() ausgelesen werden. Eine vollständige Liste der verfügbaren RTDE-Felder finden Sie im RTDE-Handbuch .

Das folgende Beispiel zeigt, wie Sie überprüfen können, ob „Safeguard Stop“ aktiv ist:


safety_status = get_rtde_value("safety_status")
# Überprüfung auf „Safeguard Stop“ und „Automatic Mode Safeguard Stop“
is_safeguard_stop_active = (safety_status == 5 or safety_status == 12)

 

Das folgende Beispiel prüft, ob das Roboterprogramm angehalten ist:

is_program_paused = get_rtde_value("runtime_state") == 4

Die URScript Control API bündelt diese Funktionalität ebenfalls.

 

Automatischer Start des Logikprogramms

Sie können ein Programm auswählen, das automatisch gestartet werden soll, wenn eine Anwendung geladen wird. Wenn Sie die Option „Autostart“ auswählen, wird das Logikprogramm unmittelbar nach dem Laden der Anwendung gestartet.

Sie können das Logikprogramm auch automatisch starten, wenn die Robotersteuerung eingeschaltet und die letzte Anwendung geladen wird.

Die Autostart -Funktion funktioniert unabhängig vom Betriebsmodus oder vom Status des Roboterarms. Wenn „Autostart“ beim Laden ausgelöst wird, bestätigt eine Snackbar-Benachrichtigung, dass das Logikprogramm gestartet wurde.

 

 

Das Symbol in der Seitenleiste auf dem „Logic Program“-Symbol zeigt stets den aktuellen Status des Programms an, unabhängig davon, ob es läuft oder angehalten ist.

Es liegt in Ihrer Verantwortung, sicherzustellen, dass das Logikprogramm sicher ist, wenn der Roboter eingeschaltet ist und wenn verschiedene Anwendungen geladen werden.

Logikprogramme können externe Geräte über kabelgebundene oder SPS-Verbindungen (Modbus, PROFINET, Ethernet/IP, Socket, direkte Ausgänge oder andere Schnittstellen) aktivieren und deaktivieren.

 

Module und Threads

Die Funktionen des Logikprogramms können in Funktionen gegliedert werden. Dies funktioniert genauso wie im Roboterprogramm.

Jede Funktion kann als „Thread“ markiert werden. Standardmäßig werden die Threads nur einmal ausgeführt. Aktivieren Sie das Kontrollkästchen „Loop“ bei der Thread-Funktion, um den Thread kontinuierlich auszuführen.

 

Gemeinsame Nutzung von Ressourcen

Obwohl das Roboterprogramm und das Logikprogramm unabhängig voneinander ausgeführt werden und jeweils über einen eigenen Pool an Threads und Variablen verfügen, nutzen sie alle dieselben Hardware-Ressourcen. Dies bringt einige Einschränkungen mit sich, die Programmierer beachten sollten:

  • Logikprogramm-Threads werden auf derselben CPU ausgeführt wie das Roboterprogramm. Die Ausführungszeit aller Logikprogramm-Threads addiert sich zur Ausführungszeit aller Roboterprogramm-Threads. Dies kann in extremen Fällen zu einem Verstoß gegen die Regel „Laufzeit zu weit im Rückstand“ führen.

  • Einige Kommunikationsressourcen wie Modbus-Signale oder Allzweckregister sind gemeinsam genutzte Ressourcen. Das gleichzeitige Schreiben in dasselbe Register führt zu unerwarteten Ergebnissen. Zudem kann sich das derzeit beobachtete Verhalten in Zukunft ändern, wenn die zugrunde liegende Implementierung optimiert wird.

  • Modbus — Es wird ein Modbus-Client gemeinsam genutzt. Signale, die in einem der beiden Programme erzeugt werden, sind in beiden sichtbar.

  • Flexibler Ethernet/IP-Adapter — Jedes Programm öffnet einen eigenen Lese- oder Schreib-Handle für dieselbe Instanz. Handles dürfen nicht dieselben Datenfelder beschreiben.

 

Einschränkungen

  • Im Logikprogramm steht nur ein Teil der URScript-Befehle zur Verfügung.

  • Anzeigen zur Programmausführung und das Debuggen anhand von Haltepunkten werden für das Logikprogramm nicht unterstützt.

  • Der Interpreter-Modus wird in Logikprogrammen nicht unterstützt. Der Interpreter-Modus kann jedoch auch dann im Roboterprogramm gestartet werden, während das Logikprogramm läuft.