Variablentypen
Jede Variable hat einen festen Typ, der beim Anlegen gewählt wird. Der Typ bestimmt, was die Variable enthalten kann, in welchen Ausdrücken sie zulässig ist und wie sie an Hardware gebunden werden kann.
Werttypen
| Typ | Enthält | Typische Verwendung |
|---|---|---|
| Integer | Eine ganze Zahl | Stückzähler, Zykluszähler, Indizes in einem Grid oder Stack |
| Float | Eine Dezimalzahl | Gemessene Abstände, Geschwindigkeiten, Gewichte |
| Boolean | true oder false | Flags, Bestätigungen der Bedienperson, Zustand „Greifer geschlossen" |
| String | Text | Teilenummern, Chargennummern, eine Subflow-UUID |
| Cartesian Pose | Eine Position (x, y, z) und eine Orientierung (rz, ry, rx) | Ein eingelernter Aufnahmepunkt, eine Workspace-Transformation, eine von RobVision gelieferte Pose |
| Joint Pose | Einen Winkel pro Robotergelenk | Eine Konfiguration, die der Roboter exakt erreichen muss, wenn die kartesische Pose allein nicht eindeutig ist |
Eine String-Variable kann ein komplettes JSON-Dokument enthalten, und
Ausdrücke greifen mit Klammernotation darauf zu —
myVariable["key0"]["key1"] für einen verschachtelten Wert, myVariable["users"][0]["name"]
für ein Element eines Arrays. So werden die Antworten der Nodes
HTTP Request und
SQL Query verarbeitet: Legen Sie die gesamte
Antwort in einer String-Variable ab und greifen Sie das benötigte Feld dort heraus, wo Sie es
brauchen, statt die Antwort in je eine Variable pro Wert zu zerlegen.
I/O-Typen
Zwei weitere Typen speichern keinen eigenen Wert — sie sind ein physikalischer Kanal an der Control Unit:
| Typ | Enthält | Richtung |
|---|---|---|
| Input | Den aktuellen Zustand eines digitalen Eingangs | Aus Sicht des Flows nur lesbar |
| Output | Den Zustand eines digitalen Ausgangs | Das Schreiben der Variable steuert den Ausgang |
Beide sind boolesch und werden über eine Bank und eine Kanalnummer innerhalb dieser Bank identifiziert. Siehe Eine Variable an I/O binden.
Posen
Eine Cartesian Pose beschreibt, wo sich der TCP befindet und wie er orientiert ist. Die Orientierung folgt derselben intrinsischen z-y-x-Euler-Konvention wie überall sonst in RobFlow, sodass eine an einer Stelle eingelernte Pose an anderer Stelle weiterverwendet werden kann.
Eine Joint Pose speichert stattdessen den Winkel jedes Gelenks. Verwenden Sie sie, wenn eine bestimmte Armkonfiguration entscheidend ist — dieselbe kartesische Pose ist oft mit mehreren Gelenkkonfigurationen erreichbar, und nur eine Joint Pose legt fest, welche davon.
Mit der Variable-Node können Sie die aktuelle Pose des
Roboters direkt in eine Variable beider Typen schreiben — über die unten beschriebenen
integrierten Werte currentCartesianPose und currentJointPose.
Um eine Pose zu berechnen statt sie einzulernen, setzen Sie die Felder über Ausdrücke — siehe Pose-Ausdruck konfigurieren für den Konfigurator, der eine Dimension nach der anderen aufbaut.
Integrierte Variablen
Zwei Variablen existieren immer und werden nicht von Ihnen angelegt. Sie halten einen Live-Wert statt eines gespeicherten Werts, können aber überall dort verwendet werden, wo eine gewöhnliche Variable desselben Typs zulässig ist.
| Variable | Typ | Wert |
|---|---|---|
Current Cartesian Pose (currentCartesianPose) | Cartesian Pose | Wo sich der Roboter gerade befindet |
Current Joint Pose (currentJointPose) | Joint Pose | Die aktuellen Gelenkwinkel des Roboters |
Keine der beiden kann angelegt, bearbeitet oder gelöscht werden, und ihre Namen sind reserviert —
Sie können keine eigene Variable currentCartesianPose oder currentJointPose nennen. Weisen Sie
eine davon einer Variable des passenden Typs zu, um festzuhalten, wo der Roboter an dieser Stelle
im Flow war.
Den richtigen Typ wählen
- Sie zählen etwas? Integer — und erwägen Sie, die Variable an ein Zählerereignis zu binden, damit sie in die OEE-Auswertung eingeht, siehe Persistenz, Tags und Zähler.
- Der Wert kann Nachkommastellen haben? Float — eine gemessene Distanz, eine Geschwindigkeit, ein Gewicht, ein Kalibrier-Restfehler. Wenn ein Wert jemals nicht ganzzahlig sein kann, wählen Sie gleich Float: Der Typ lässt sich später nicht mehr ändern.
- Ein Ja/Nein-Zustand innerhalb von RobFlow? Boolean — ein Flag, das ein anderer Zweig prüft, die Bestätigung einer Bedienperson, „die Aufspannung ist beladen“.
- Sie lesen oder steuern ein Signal an der Control Unit? Input oder Output, nicht Boolean.
- Text, eine Kennung oder eine Subflow-UUID? String — auch der Typ für JSON, in das Ausdrücke hineinindizieren können.
- Sie speichern eine eingelernte Position zur späteren Verwendung? Cartesian Pose, außer die Armkonfiguration ist entscheidend — dann Joint Pose.
- Sie kommunizieren über ein Register mit einer SPS? Jeder Werttyp ist geeignet; entscheidend ist die Protokollzuordnung.
Der Typ einer Variable kann nach dem Anlegen nicht mehr geändert werden. Legen Sie eine neue Variable des richtigen Typs an und passen Sie die Stellen an, die auf die alte verweisen.