Skip to main content

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
. Spezifikation:
  • 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 Definition Parent 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 leere Parent-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 Typ Device hergestellt.

    • Die Definitionen Type, ID, ModuleID und Version der Sektion Identification 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 Definition ModuleID 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 Definitionen Value und ChildIndex

      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äts

      • ChildIndex: 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.

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


Beispiel 31. Beispiel mit Parameter
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


Beispiel 32. Beispiel für das Festlegen eines Gerätenamens
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