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

Drittanbieter-EtherCAT-Geräte hinzufügen 1:

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>
Drittanbieter-EtherCAT-Geräte hinzufügen 2:

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");