Container Units, Function Units - Klassifizierung, Instanzierung, Alias
Container Units, Function Units - Klassifizierung, Instanzierung, Alias
Version: v120
Einleitung
Wie werden in GCS 3.0 Elemente wie zum Beispiel Achsen oder Datenrekorder identifiziert und und in Befehlen adressiert? Zum besseren Verständnis ist zunächst ein kurzer Exkurs in den Aufbau der "Unified Motion Firmware" (UMF) notwendig:
Die UMF ist aus Codeblöcken aufgebaut, die als "Container Unit" oder "Function Unit" bezeichnet werden.
Container Unit
Eine Container Unit bildet eine inhaltliche Klammer um eine oder mehrere Function Units. Container Units ohne eingebettete Function Units sind aber auch zulässig.
Die Container Unit kann eigene Parameter haben. Container Units ohne eigene Parameter sind aber auch zulässig.
Zu den Container Units zählen zum Beispiel das System als Ganzes, die Achsen und die Eingangs- und Ausgangskanäle sowie die Datenrekorder der Steuerung. Zur Liste der Container Units ...
Function Unit
Eine Function Unit ist ein themenbezogener Codeblock. Eine Function Unit ist immer in einer Container Unit eingebettet.
Jede Function Unit hat Parameter.
Zu den Function Units zählen zum Beispiel Interpreter, Regler, Filter oder Trajektoriengeneratoren. Zur Liste der Function Units ...
Klassifizierung - Familien und Typen
Container Units und Function Units sind jeweils in Familien gegliedert. Jede Familie besteht aus Typen, die in ihren wesentlichen Eigenschaften übereinstimmen, sich jedoch in einer oder mehreren Eigenschaft/en unterscheiden.
Die Gliederung soll am Beispiel der Container-Unit-Familie "Axis" und der Function-Unit-Familie "Trajectory" verdeutlicht werden:
Familie | Typen innerhalb der Familie |
"Axis" | Achse mit DC Motor |
Achse mit Schrittmotor | |
Achse mit PILine Motor | |
... | |
"Trajectory" | Trapezoid Curve |
S Curve | |
... |
Instanzierung
Container Units
Innerhalb einer Steuerung können mehrere Instanzen aus derselben Container-Unit-Familie vorhanden sein. Die Zählung der Instanzen erfolgt innerhalb der Steuerung über alle Instanzen der Container-Unit-Familie hinweg, unabhängig davon, ob sie sich im Typ unterscheiden oder vom gleichen Typ sind. Die Zählung wird je Container-Unit-Familie durch eine eigene "InstanzID" abgebildet.
Function Units
Innerhalb einer Container Unit können mehrere Instanzen aus derselben Function-Unit-Familie vorhanden sein. Die Zählung der Instanzen erfolgt innerhalb der Container Unit über alle Instanzen der Function-Unit-Familie hinweg, unabhängig davon, ob sie sich im Typ unterschieden oder vom gleichen Typ sind. Die Zählung wird je Function-Unit-Familie durch eine eigene "InstanzID" abgebildet.
Die Zählung der Instanzen einer Function-Unit-Familie erfolgt jeweils innerhalb der Container Units der Steuerung, d. h. in jeder Container Unit beginnt die InstanzID der Function-Unit-Familie wieder bei 1 und geht bis zur Anzahl der Instanzen, die in dieser Container Unit vorhanden sind.
InstanzIDs starten immer mit 1.
Alias
Jede Container Unit und Function Unit in einer Steuerung hat eine eindeutige Adresse, die aus einer FamilienID und einer InstanzID besteht. FamilienIDs sind fest definiert. Für die InstanzIDs siehe "Instanzierung". Um die Bedienbarkeit auf Anwenderebene so einfach wie möglich zu halten, wird "nach außen" statt der Kombination aus FamilienID und InstanzID ein "Alias" verwendet. Im Alias ist die FamilienID durch einen fest definierten FamilienName ersetzt. FamilienName ist nicht case-sensitiv.
Für den Anwender einer Steuerung ist die FamilienID also nicht sichtbar. Die InstanzID ist sichtbar über den Alias.
Um eine Container Unit oder Function Unit mit den Befehlen des GCS 3.0 anzusprechen, muss der entsprechende Alias verwendet werden. Die Verwendung von FamilienIDs und InstanzIDs allein oder in Kombination ist auf der Ebene des GCS 3.0 nicht zulässig. Auch die Angabe des FamilienName ohne InstanzID ist nicht zulässig.
Container Units
Familie | FamilienID,InstanzID | Alias = FamilienName_InstanzID | Beispiele |
---|---|---|---|
System | 1,x | SYS_x | SPV? RAM SYS_1 - 0x107 Für die Instanz 1 der Familie "System" soll der Wert des Parameters 0x107 (Servo Cycle Time) im Arbeitsspeicher abgefragt werden. Dieser Parameter gehört direkt zur Container Unit, deshalb wird für die Function Unit der Alias "-" verwendet. |
Axis | 2,x | AXIS_x | EAX AXIS_3 1 Für die Instanz 3 der Familie "Axis" soll der Antrieb eingeschaltet werden. |
Digital/Analog Input/Output | 3,x | IO_x |
|
Drive | 5,x | DRV_x | USG? PAM DRV_1 - Die Parameter, die zur Instanz 1 der Familie "Drive" gehören, sollen ermittelt werden. |
Gateway | 6,x | GWY_x | |
Connector | 7,x | CON_x | Die Hardware-Schnittstelle zur Mechanik. |
Data Recorder | 8,x | REC_x | |
Reference Drive | 9,x | REF_x | Container Unit für die Referenzfahrt |
Function Units
Familie | FamilienID,InstanzID | Alias = FamilienName_InstanzID | Beispiele |
---|---|---|---|
Non-available Function Unit (Used to address container only) | 0,0 | - | SPV RAM AXIS_1 - 0x106 mm Im Arbeitsspeicher soll Parameter 0x106, der direkt zur Container Unit "Axis_1" gehört, auf den Wert "mm" gesetzt werden. |
Controller | 1,x | CNTR_x | SPV? RAM axis_1 CNTR_1 0x103 Für den ersten Regler der Container Unit "Axis_1" soll der Wert des Parameters 0x103 im Arbeitsspeicher abgefragt werden. |
Interpreter | 2,x | INTPR_x |
|
Trajectory | 3,x | TRAJ_x | USG? SYS axis_1 traj_1 Informationen zum Typ des ersten Trajektoriengenerators der ersten Achse sollen abgefragt werden. |
Unit Parameter Sync | 5,x | SYNC_x | |
Filter | 6,x | FILTER_x | |
Transformation | 7,x | TRSF_x |
|
Memory Management | 8,x | MMU_x | |
Event Handler | 9,x | EVT_x |
|
Simulation | 10,x | SIM_x | |
Sensor | 11,x | SENS_x | |
Field Oriented Control | 12,x | FOC_x | |
Amplifier | 13,x | AMP_x | |
Limit | 14,x | LIMIT_x |
|
Safety | 15,x | SAFE_x | |
Communication Interface | 100,x | COM_x | |
Update | 101,x | UPDATE_x |