Zum Hauptinhalt springen

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

TypEnthältTypische Verwendung
IntegerEine ganze ZahlStückzähler, Zykluszähler, Indizes in einem Grid oder Stack
FloatEine DezimalzahlGemessene Abstände, Geschwindigkeiten, Gewichte
Booleantrue oder falseFlags, Bestätigungen der Bedienperson, Zustand „Greifer geschlossen"
StringTextTeilenummern, Chargennummern, eine Subflow-UUID
Cartesian PoseEine Position (x, y, z) und eine Orientierung (rz, ry, rx)Ein eingelernter Aufnahmepunkt, eine Workspace-Transformation, eine von RobVision gelieferte Pose
Joint PoseEinen Winkel pro RobotergelenkEine Konfiguration, die der Roboter exakt erreichen muss, wenn die kartesische Pose allein nicht eindeutig ist
Eine String-Variable kann JSON enthalten

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:

TypEnthältRichtung
InputDen aktuellen Zustand eines digitalen EingangsAus Sicht des Flows nur lesbar
OutputDen Zustand eines digitalen AusgangsDas 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.

tipp

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.

VariableTypWert
Current Cartesian Pose (currentCartesianPose)Cartesian PoseWo sich der Roboter gerade befindet
Current Joint Pose (currentJointPose)Joint PoseDie 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.
warnung

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.