Verwendung von Variablen
Variablen ermöglichen das Speichern von Werten und das Verwenden dieser Werte als Operanden für mathematische und logische Ausdrücke. Variablen können für das Berechnen einer veränderlichen Position, eines Offsets oder als Wert für Adressbuchstaben z. B. wie folgt in jedem G-Code-Dialekt verwendet werden:
WaitTime = Real1 + 500
G1 X100 + Offset_X Y100 + Offset_Y F=Fast
G1XPosition_X YPosition_Y
G4 Time=WaitTime
TargetReached = TRUE
Wenn Werte oder Variablen anderen Variablen im G-Code zugewiesen werden, ist die Angabe eines Gleichheitszeichens wie folgt zwingend erforderlich:
Real1 = 100, Real1 = Real2, Bool1 = True, Bool1 = Bool2,
Pose1[3] = 10, Pose[3] = Real1.
Bei Adressbuchstaben ist die Angabe des Gleichheitszeichens als Zuweisung optional:
X100
ist gleichbedeutend mitX=100
XReal1
ist gleichbedeutend mitX=Real1
XReal1 + 100
ist gleichbedeutend mitX=Real1+100
Im G-Code können dieselben Datentypen (Bool, Real und Pose) wie bei der SRL-Programmierung verwendet werden. In der SRL-Programmierung werden Variablen anhand ihres Index definiert und verwendet. Im G-Code erfolgt das Definieren und Verwenden über deren Namen. Damit die Umwandlung von G-Code in SRL-Befehle und umgekehrt erfolgen kann, muss festgelegt werden, welche G-Code-Variable welchen Index und Typ der SRL-Variablen verwendet. Diese Zuordnung von G-Code zu SRL-Variable muss der Anwender vor dem Im- oder Export im Menü Configuration variables vornehmen. In dieser Zuordnungstabelle wird während des Imports der Name der G-Code-Variablen dem konfigurierten Index der SRL-Variablen zugeordnet. Umgekehrt wird während des Exports von G-Code der im SRL-Programm verwendete Variablenindex dem G-Code-Namen zugeordnet. Ohne festgelegte Zuordnung in der Zuordnungstabelle können Variablen nicht im- oder exportiert werden. Unbekannte Zeichenfolgen bzw. nicht definierte Variablen führen zu syntaktischen Fehlern. G-Code-Variablen sind anhand dieser Liste global für jedes Programm gültig und können in jedem G-Code-Programm (sowie in anderen SRL-Programmen und in CallFunctions durch den Index der SRL-Variablen) verwendet werden.
Bei einem vorhandenen G-Code-Programm müssen alle im G-Code verwendeten Variablen in die Zuordnungstabelle der G-Code-Variablen eingetragen und anschließend die Definitionen in die SRL-Variablenliste übernommen werden (Schaltfläche [G-Code var list > SRL var list]). Dadurch können die Bezeichner mit dem SRL-Programm gespeichert werden. Die Definitionen in der G-Code-Konfigurationsdatei können über das Menü Configuration general auf der Festplatte gespeichert werden.
Bei einem vorhandenen SRL-Programm müssen allen im SRL-Programm verwendeten Variablen Bezeichner zugewiesen und anschließend die SRL-Variablen in die G-Code-Variablenliste übernommen werden (Schaltfläche [SRL var list > G-Code var list]). Dadurch können die Definitionen der im G-Code verwendeten Variablen in der G-Code-Konfigurationsdatei gespeichert und bei einem Import verwendet werden.
Wenn für mehrere G-Code-Programme unterschiedliche Variablendefinitionen benötigt werden, kann dies in unterschiedlichen G-Code-Konfigurationen festgelegt werden. Diese Konfigurationen können gespeichert und beim nächsten Import oder Export wieder verwendet werden.
HINWEIS
Variablen oder Ausdrücke im G-Code-Programm sind (wie im SRL-Programm) nicht synchron zur Bewegung. Erreicht der Programmvorlauf "P" (Programmpointer) den Ausdruck, wird dieser verarbeitet. Im SRL-Programm (z. B. nach dem Import) können Ausdrücke durch den Befehl WAIT_MOTION_DONE InLastSegment synchronisiert werden. Hierbei wird der Vorlauf bis zum Beginn des letzten Bewegungssegments gestoppt. Da im G-Code kein dem WAIT_MOTION_DONE gleichbedeutender Befehl existiert, muss der Vorlauf applikativ durch das Programmieren einer IEC Callfunction (M-Funktion) gestoppt werden. Dort kann mithilfe der Variablen Interface_MyRobot.Prg.OUT.lrRemainingDistance und Interface_MyRobot.Prg.OUT.lrRemainingTime durch den Anwendercode bestimmt werden, wann der Vorlauf fortgesetzt wird.
Verwendung von Pose-Variablen im G-Code
Pose-Variablen besitzen 6 Dimensionen vom Datentyp "Real". Der Zugriff auf eine Dimension erfolgt über eine eckige Klammer hinter dem Variablenbezeichner z. B. Pose_Var_1[ 1..6 ]
. Nicht jeder G-Code-Befehl, der einen numerischen Wert erwartet, erlaubt es eine Pose- anstatt einer Real-Variable zu verwenden. Ist der Datentyp Pose nicht für den verwendeten G-Code-Befehl zugelassen, wird ein entsprechender Hinweis im Meldungsfenster des G-Code Import-Dialogs angezeigt. Nachfolgendes Beispiel zeigt die Verwendung von Pose-Variablen:
Pose_Var_1[3] = Pose_Var_1[3] + 100
Pose_Var_1[3] = Real_Var_1 +100
Pose_Var_1[3] = 100
Vektor-Operationen mit Pose-Variablen (z. B. Vektoraddition Pose_Target = Pose_1 + Pose_2
) sind nicht möglich. Wenn beispielsweise eine Vektoraddition benötigt wird, muss eine Addition auf jede Dimension der Pose-Variable ausgeführt werden:
Pose_Target[1] = Pose_1[1] + Pose_2[1]
Pose_Target[2] = Pose_1[2] + Pose_2[2]
Pose_Target[3] = Pose_1[3] + Pose_2[3]
…
Verwendung von Real-Variablen im G-Code
Bei Operationen mit ausschließlich Real- oder Pose-Variablen können die Operatoren +, -, *, / verwendet werden. Wenn die Dimension bei Pose-Variablen angegeben wird, können beide Datentypen als Operanden eingesetzt werden:
Real_Target = Real_1 + Real_2
Real_Target = Real_1 / Real_2
Pose_Target[3] = Real_1 + Pose_Target[3]
Real_Target = Pose_1[1] + Pose_2[2]
Umsetzung von Real- und Pose-Ausdrücken im SRL-Programm:
Ausdrücke mit numerischen Operationen sowie Real- und Pose-Variablen im G-Code werden in einen CALC_REALVAR-Block umgewandelt. Bei konstanten Zahlen sind Vorzeichen erlaubt, bei Variablen nicht. Soll ein konstanter Wert explizit im SRL-Programm als negativ angezeigt werden, muss vor der Zahl der Operator und das Vorzeichen stehen.
Der Ausdruck Real_Target = Real_1 -100
wird wie folgt als SRL-Befehl umgesetzt:
Der Ausdruck Real_Target = Real_1 - -100
wird wie folgt als SRL-Befehl umgesetzt:
Der Ausdruck Real_Target = Real_1 + -100
wird wie folgt als SRL-Befehl umgesetzt:
Verwendung von Bool-Variablen im G-Code
BOOL-Variablen können den binären Zustand TRUE oder FALSE annehmen um z. B. Zustände oder den Fortschritt eines G-Code-Programms zu signalisieren. Bei boolschen Ausdrücken können Bool-Variablen als auch die konstanten Werte TRUE und FALSE verwendet werden. Als Operatoren können && bzw. AND für "UND", || bzw. OR für "ODER" und XOR verwendet werden:
Bool_Target = Bool_1 AND Bool_2
Bool_Target = Bool_1 && Bool_2
Das Ergebnis von Vergleichsoperationen zwischen Real- und/oder Pose-Variablen kann in Bool-Variablen gespeichert werden. Hierbei sind die Operatoren == (Gleich), <> (Ungleich) und >=,<=,>,< erlaubt:
Bool_Target = Real_1 == Pose_2[3]
Bool_Target = Real_1 > Pose_2[3]
Bool_Target = Real_1 <> Pose_2[3]
Bool_Target = Real_1 > 100
Für boolesche Operationen wird der Ausdruck im G-Code in einen SET_BOOLVAR-Block umgewandelt. Bei boolschen Operationen mit numerischen Operanden wird das angegebene Vorzeichen übernommen.
Der Ausdruck Bool_Target = Real1 <> -1
wird wie folgt als SRL-Befehl umgesetzt:
HINWEIS
Bei jeder Operation sind maximal zwei Operanden erlaubt. Sollen mehr Operanden in einem Ausdruck stehen, muss dieser Ausdruck wie folgt auf mehrere Zeilen aufgeteilt werden:
Der Ausdruck Bool_Target = (Pose_1[1] > Pose_2[1]) XOR FALSE
wird zu:
Bool_Target = Pose_1[1] > Pose_2[1]
Bool_Target = Bool_Target XOR FALSE
Folgende Grafik veranschaulicht das Verwenden von Variablen im SRL-Programm: