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 ...

Die Struktur einer Steuerung, d. h. die enthaltenen Container Units und ihre Function Units, kann mit USG? SYS abgefragt werden.

Die Eigenschaften von Container Units und Function Units können mit USG? PROP abgefragt werden.

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:

FamilieTypen 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.

Beispiel:

Eine Steuerung unterstützt vier Achsen. Zwei dieser Achsen sind vom Typ DC Motor, eine vom Typ Schrittmotor und eine vom Typ PILine Motor. Die Zählung der Achsen erfolgt in der Steuerung typübergreifend. So ergibt sich für diese Steuerung die folgende Zuweisung von InstanzIDs: ID 1 zur ersten Achse mit DC Motor, ID 2 zur zweiten Achse mit DC Motor, ID 3 zur Achse mit Schrittmotor und ID 4 zur Achse mit PILine Motor. 

Steuerung

Achse mit DC Motor

InstanzID = 1

Alias*: Axis_1

Achse mit DC Motor

InstanzID = 2

Alias*: Axis_2

Achse mit Schrittmotor

InstanzID = 3

Alias*: Axis_3

Achse mit PILine Motor

InstanzID = 4

Alias*: Axis_4

 

 * Details zu den Alias 

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.

Beispiel:

Eine Steuerung unterstützt zwei Achsen.

Für Achse 1 besteht die Auswahl zwischen einem trapezförmigen und einem S-förmigen Dynamikprofil. In der Container Unit "Axis_1" sind dazu zwei Instanzen der Function-Unit-Familie "Trajectory" vorhanden: ID 1 ist dem Generator für das trapezförmige Profil zugewiesen, ID 2 dem Generator für das S-förmige Profil.

Für Achse 2 besteht die Auswahl zwischen einem trapezförmigen, einem S-förmigen und einem benutzerdefinierten Dynamikprofil. In der Container Unit "Axis_2" sind dazu drei Instanzen der Function-Unit-Familie "Trajectory" vorhanden: ID 1 ist dem Generator für das trapezförmige Profil zugewiesen, ID 2 dem Generator für das S-förmige Profil und ID 3 dem benutzerdefinierten Generator.

Steuerung

Axis_1

Trajektoriengenerator für trapezförmiges Profil

InstanzID = 1

Alias*: TRAJ_1

Trajektoriengenerator für S-förmiges Profil

InstanzID = 2

Alias*: TRAJ_2

Axis_2

Trajektoriengenerator für trapezförmiges Profil

InstanzID = 1

Alias*: TRAJ_1

Trajektoriengenerator für S-förmiges Profil

InstanzID = 2

Alias*: TRAJ_2

Trajektoriengenerator für benutzerdefiniertes Profil

InstanzID = 3

Alias*: TRAJ_3

 

 * Details zu den Alias 

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

FamilieFamilienID,InstanzIDAlias = FamilienName_InstanzIDBeispiele

System

Details

Container für allgemeine Funktionen, die von der gesamten Steuerung benötigt werden, wie zum Beispiel Error Handler oder GCS Interpreter

1,xSYS_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.

Axis2,xAXIS_x

EAX AXIS_3 1

Für die Instanz 3 der Familie "Axis" soll der Antrieb eingeschaltet werden.

Digital/Analog Input/Output3,xIO_x

 

Drive5,xDRV_x

USG? PAM DRV_1 -

Die Parameter, die zur Instanz 1 der Familie "Drive" gehören, sollen ermittelt werden. 

Gateway6,xGWY_x 
Connector7,xCON_xDie Hardware-Schnittstelle zur Mechanik.
Data Recorder8,xREC_x 

Reference Drive

9,x

REF_xContainer Unit für die Referenzfahrt

Function Units

FamilieFamilienID,InstanzIDAlias = FamilienName_InstanzIDBeispiele

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.

Controller1,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.

Interpreter2,x

INTPR_x

 

Trajectory3,xTRAJ_x

USG? SYS axis_1 traj_1

Informationen zum Typ des ersten Trajektoriengenerators der ersten Achse sollen abgefragt werden.

Unit Parameter Sync

5,xSYNC_x 
Filter6,xFILTER_x 
Transformation7,x

TRSF_x

 

Memory Management8,xMMU_x 

Event Handler

9,x

EVT_x 

 

Simulation10,xSIM_x 
Sensor11,xSENS_x 
Field Oriented Control12,xFOC_x 
Amplifier

13,x

AMP_x 
Limit14,xLIMIT_x

 

Safety

15,x

SAFE_x 
Communication Interface100,xCOM_x 
Update101,xUPDATE_x