Drittanbieter-EtherCAT-Geräte hinzufügen
EtherCAT-Geräte von Drittanbietern, die nicht im TwinCAT-ESI-Katalog enthalten sind, lassen sich über CreateChild mit den Identifikationswerten aus der ESI-Datei des Herstellers hinzufügen. TwinCAT identifiziert jedes EtherCAT-Gerät anhand von drei Werten aus der ESI-Datei: VendorId, ProductCode und RevisionNo. Diese werden entweder als Integer-Array oder als kompakte String-Repräsentation übergeben.
Damit TwinCAT die ESI-Datei des Drittanbieters findet, muss sie vor dem Anlegen des Geräts in den richtigen Ordner kopiert werden.
Voraussetzungen
- Die ESI-Datei des Drittanbieters liegt im Verzeichnis
%LOCALAPPDATA%/Beckhoff/TwinCAT/3.1/Config/IO/EtherCAToderC:/Program Files (x86)/Beckhoff/TwinCAT/3.1/Config/Io/EtherCAT - TwinCAT-Solution ist geöffnet mit einem EtherCAT-Master.

Werte aus der ESI-Datei auslesen
Die benötigten Werte sind in der ESI-Datei des Herstellers als XML hinterlegt. VendorId, ProductCode und RevisionNo befinden sich an festen Stellen in der Dateistruktur und müssen für den Automation Interface-Aufruf als Hexadezimalwerte übergeben werden.
<!-- VendorId: in the <Vendor> node at the top of the ESI file -->
<Vendor FileVersion="7">
<Id>2</Id> <!-- decimal: 2 = hex: 0x2 -->
</Vendor>
<!-- ProductCode and RevisionNo: in the <Type> element of each <Device> node -->
<Device Physics="YY">
<Type ProductCode="#x368ecc09" RevisionNo="#x00100000">AMI8000-0000</Type>
</Device>![]() | Die Werte müssen hexadezimal übergeben werden. Ein dezimaler Wert <Id>106</Id> in der ESI entspricht 0x6A im vInfo-Array. Der vierte Int-Wert ist die Seriennummer, in der Regel 0. Die String-Repräsentation "V6A_P00414B44_R1" ist die kompaktere Variante und erst ab TwinCAT 2.11 R3 / 3.1 verfügbar. |
C# Beispiel
ITcSmTreeItem ecMaster = sysManager.LookupTreeItem(@"TIID^Device 1 (EtherCAT)");
// Variant 1: integer array (all versions)
// vInfo[0] = VendorId (hex), vInfo[1] = ProductCode (hex), vInfo[2] = RevisionNo, vInfo[3] = SerialNo
int[] vInfo = new int[] { 0x2, 0x368ecc09, 0x001, 0 };
ITcSmTreeItem device = ecMaster.CreateChild("Drive", 9099, "", vInfo);
// Variant 2: string representation (TwinCAT 3.1 and later)
// Format: "V<VendorId>_P<ProductCode>_R<RevisionNo>"
ITcSmTreeItem device2 = ecMaster.CreateChild("Drive", 9099, "", "V2_P368ECC09_R001");
