Untersektion: Device
Die Untersektion Device
definiert Geräte, die vom Gerätegenerator hinzugefügt werden sollen. Es gibt mehrere Typen von generierten Geräten, die mit den verschiedenen Untersektionen Identification
, Wildcard
und FlexibleWildcard
festgelegt werden.
Syntax:
SEC DeviceGenerator //optional: yes, modifier: [UPDATE] SEC Device : <target ID> //optional: yes, modifier [UPDATE] Parent := <target ID>; //optional: yes, type: ID ParentSlotIndex := <slot number>; //optional: yes, type: literal/integer SEC Identification //optional: yes, modifier: [UPDATE] Type := <type number>; //optional: no, type: literal/string ID := <ID mumber>; //optional: no, type: literal/string ModuleID := <module ID>; //optional: yes, type: literal/string Version := <version mumber>; //optional: no, type: literal/string SEC SetChildName //optional: yes, modifier: [UPDATE] Value := <child name>; //optional: no, type: literal/string ChildIndex := <index number>; //optional: no, type: literal/string END_SEC END_SEC END_SEC SEC ExportDevice //optional: yes, modifier: [UPDATE, HIDE] Files :=[<filename1>, <filename2>, ...]; //optional: no, type: string END_SEC END_SEC
Der Abschnitt
Device
besitzt eine Target-ID, die ihn unter den anderen generierten Geräten eines Moduls eindeutig kennzeichnet. Diese ID kann dazu verwendet werden, auf dieses Gerät zu referenzieren. Dies erfolgt hauptsächlich in der DefinitionParent
anderer erzeugter Geräte oder verbundener E/As.Die Definition
Parent
spezifiziert das gewünschte Elterngerät, unter dem das erzeugte Gerät eingehängt werden soll.Das Elterngerät kann gar nicht (Definition ist optional), über seine ID oder über einen Parameter identifiziert werden.
Im Detail wird das Elterngerät dann auf folgende Art und Weise ermittelt:
Ist überhaupt kein
Parent
definiert, wird stets das erste passende zur Verfügung stehende Elterngerät verwendet, wobei für eine leereParent
-Definition nur ab dem ersten Elternmodul gesucht wird. Wenn im direkten Elternmodul selbst kein Gerät definiert ist, wird so lange die Historie der Elternmodule nachverfolgt, bis schließlich ein Gerät vorhanden ist, das passt oder das Toplevel-Modul erreicht ist. In diesem Fall wird dann, falls möglich, dessen Applikationsgerät verwendet.Ist zudem eine Device-ID oder ein Parameter als
Parent
angegeben, wird in selber Weise die Historie der Elterngeräte durchforstet, wobei nun zusätzlich die Geräte des Ausgangsmoduls selbst mit in Betracht gezogen werden und ein mögliches Elterngerät auch die entsprechende ID besitzen muss.Wenn, nach den oben beschriebenen Regeln, kein mögliches Elterngerät gefunden werden kann, wird beim Generierungs-Check ein Fehler ausgegeben.
ParentSlotIndex
: Gibt den Index des Steckplatzes (Slot-Nummer) des übergeordneten Geräts an, in den das Gerät eingefügt werden wird. Das ist dann hilfreich, wenn ein Einstecken erforderlich ist.
Die Untersektion
Identifikation
umfasst die eindeutige Beschreibung eines Devices, das hinzugefügt werden soll. Es wird damit ein eindeutiger Bezug zu diesem TypDevice
hergestellt.Die Definitionen
Type
,ID
,ModuleID
undVersion
der SektionIdentification
identifizieren eindeutig einen Gerätetyp einer bestimmten Version. Ein EtherCAT-Master hat beispielsweise folgende Definition:Type := '64';
ID := '000 0001';
Version := '3.5.1.0';
Wenn als Version
*
definiert wird, wird stets die neuste Version des Gerätes verwendet. Wenn die DefinitionModuleID
nicht verwendet wird, wird das System nach Geräten mit einer DeviceIdentification durchsucht, andernfalls wird nach Geräten mit einer ModuleIdentification gesucht.Wenn das definierte Gerät im Geräterepository nicht vorhanden ist, wird eine entsprechende Fehlermeldung bereits beim Scan-Vorgang ausgegeben.
Untersektion
SetChildName
mit den DefinitionenValue
undChildIndex
Mit Hilfe dieser Optionen können Sie den Namen festlegen, den ein automatisch eingefügtes Gerät haben soll. Wird derselbe Name mehr als einmal verwendet, wird der resultierende Name durch Anhängen eines Unterstrichs und einer Zahl eindeutig gemacht.
Value
: Gewünschter Name des GerätsChildIndex
: Index des automatisch eingefügten Geräts, das umbenannt werden soll
Diese Sektion bietet die Möglichkeit, die Felder mit Hilfe des Eingabeassistenten zu belegen. Dazu wird der Cursor auf das Zeilenende hinter
Identification
gesetzt und Return gedrückt. Danach öffnet der Assistent und bietet die verfügbaren Geräte an. Nach der Auswahl eines Gerätes werden die entsprechenden Parameter in die Moduldeklaration übernommen. Bitte beachten Sie, dass diese Funktion nur zur Verfügung steht, falls das Ende der Untersektion (END_SEC
) noch nicht eingegeben wurde.Die Definition Files enthält eine Liste von Geräten, die zum Projekt hinzugefügt werden. Diese Geräte wurden manuell konfiguriert und in eine Bibliothek exportiert.
SEC Device : Buskoppler2 SEC Identification Type := '65'; ID := '2_044C2C5200110000'; Version := '*'; END_SEC END_SEC SEC Device : KlemmeDigitalOutput Parent := Buskoppler2; SEC Wildcard : KlemmeTyp Desc := TL.WildDesc; END_SEC SEC ExportDevices Files := [ExtFile.BK5120_1SDO, ExtFile.BK5120_2SDO]; END_SEC END_SEC
SEC std.DeviceGenerator SEC Device : CANopen_Manager Parent := CurrentCAN; SEC FlexibleIdentification Type := '16'; ID := '181016'; Version := '*'; Maximum := 1; END_SEC END_SEC END_SEC SEC std.Parameters SEC Param : CurrentCAN Name := TL.CurrentCAN_Name; Desc := TL.CurrentCAN_Desc; VariableType := wSTRING; Default := 'CANBus_0'; END_SEC END_SEC
SEC std.DeviceGenerator SEC Device : EcoVario Parent := CanManager; SEC Identification Type := '18'; ID := '1619 0001'; Version := '*'; SEC SetChildName : ChildDevice Value := 'ChildName'; ChildIndex := 0; END_SEC END_SEC END_SEC SEC Parameters : EcoVario SEC AddParameter : BoolParamAdd ParameterID := '150'; ParameterName := 'BoolParam'; ParameterType := 'std:BOOL'; ChildIndex := 0; END_SEC SEC SetParameter : BoolParamAdd ParameterID := '150'; ElemPath := ''; Value := 'TRUE'; ChildIndex := 0; END_SEC SEC SetParameter : bVirtual ParameterID := '1040'; ElemPath := ''; ConnectorID := '0'; Value := 'TRUE'; ChildIndex := 0; END_SEC END_SEC SEC InstRefMapping : Axis SEC Demand Desc := TL.DescAxis; Properties := [SM_DRIVE_CAN]; END_SEC END_SEC END_SEC