EtherCAT-Geräte hinzufügen
EtherCAT-Slaves werden per CreateChild auf einem EtherCAT-Master oder übergeordneten Slave-Knoten angelegt. Der SubType und der Gerätename aus dem ESI-Katalog bestimmen den Gerätetyp.
Voraussetzungen
- Ein EtherCAT-Master ist in der I/O-Konfiguration vorhanden.
- Die ESI-Dateien des Geräts sind in TwinCAT registriert.
EtherCAT-Teilnehmer erstellen
Um einen EtherCAT-Master oder -Slave anzulegen, wird CreateChild auf dem I/O-Knoten TIID aufgerufen. Der SubType bestimmt den Typ. EtherCAT-Master verwendet 111, EtherCAT-Slave 130. Die Konfiguration von Netzwerkvariablen über ein Automatisierungsprotokoll wird in einem separaten Artikel beschrieben.
C#:
ITcSmTreeItem devices = sysManager.LookupTreeItem("TIID");
// EtherCAT master (SubType 111)
ITcSmTreeItem etherCatMaster = devices.CreateChild("EtherCAT Master", 111, null, null);
// EtherCAT slave (SubType 130)
ITcSmTreeItem etherCatSlave = devices.CreateChild("EtherCAT Slave", 130, null, null);PowerShell:
$devices = $systemManager.LookupTreeItem("TIID")
$ethercatMaster = $devices.CreateChild("EtherCAT Master", 111, $null, $null)
$etherCatSlave = $devices.CreateChild("EtherCAT Slave", 130, $null, $null)EtherCAT-Boxen und Klemmen mit SubType 9099 anlegen
Mit wenigen Ausnahmen verwenden alle untergeordneten Geräte eines EtherCAT-Masters den gemeinsamen SubType 9099. Die genaue Gerätevariante wird über den vInfo-Parameter als Produktrevision übergeben, die in der ESI-Datei des Geräts hinterlegt ist.
// Create EK1100 coupler
ITcSmTreeItem ek1100 = etherCatMaster.CreateChild("Term 1 (EK1100)", 9099, "", "EK1100-0000-0017");
// Create EL-terminals under coupler
ek1100Item.CreateChild("Term 2 (EL2004)", 9099, "", "EL2004-0000-0017");
ek1100Item.CreateChild("Term 3 (EL2004)", 9099, "", "EL2004-0000-0017");
// Create EL-terminal at specific position (after "Term 3")
ek1100Item.CreateChild("Term 4 (EL2004)", 9099, "Term 3 (EL2004)", "EL2004-0000-0017");PowerShell:
$ethercatMaster = $systemManager.LookupTreeItem("TIID^EtherCAT Master")
$ethercatMaster.CreateChild("EK1100", 9099, "", "EK1100-0000-0017")![]() | Neben der vollständigen Produktrevision kann auch ein Wildcard verwendet werden. Wenn nur |
CU1128 Multi-Port-Coupler
Der CU1128 ist ein EtherCAT-Switch, der mehrere getrennte EtherCAT-Stränge an einem Master-Anschluss zusammenführt. Nach dem Anlegen des CU1128-Knotens erstellt TwinCAT die physischen Ports automatisch als Kind-Knoten. Slaves werden direkt auf dem CU1128-Knoten angelegt und nicht auf den generierten Port-Knoten.
C#:
// Create CU1128 multi-port coupler
ITcSmTreeItem cu1128 = etherCatMaster.CreateChild("A2P (CU1128)", 9099, "", "CU1128");
// Add slaves directly on the CU1128 node (not on child port items)
cu1128.CreateChild("X2 (EK1100)", 9099, "", "EK1100-0000-0001");
cu1128.CreateChild("X3 (EK1100)", 9099, "", "EK1100-0000-0001");PowerShell:
$cu1128 = $ethercatMaster.CreateChild("CU1128", 9099, $null, "CU1128")
$cu1128_devA = $cu1128.get_Child(1)
$cu1128_devB = $cu1128.get_Child(2)
$ek1100_1 = $cu1128_devA.CreateChild("EK1100-1", 9099, $null, "EK1100")
$ek1100_2 = $cu1128_devB.CreateChild("EK1100-2", 9099, $null, "EK1100")Ausnahmen beim ItemSubType 9099
Einige Klemmen benötigen einen anderen SubType. Die folgende Tabelle listet Ausnahmen:
I/O | ItemSubType |
|---|---|
EP6002 | 9101 |
EL6001 | 9101 |
EL6002 | 9101 |
EP6001-0002 | 9101 |
EP6002-0002 | 9101 |
EL6021 | 9103 |
EL6022 | 9103 |
EL6021-0021 | 9103 |
BK1120 | 9081 |
ILXB11 | 9086 |
EL6731 | 9093 |
EL6751 | 9094 |
EL6752 | 9095 |
EL6731-0010 | 9096 |
EL6751-0010 | 9097 |
EL6752-0010 | 9098 |
EL6601 | 9100 |
EL6720 | 9104 |
EL6631 | 9106 |
EL6631-0010 | 9107 |
EL6632 | 9108 |
EL6652-0010 | 9109 |
EL6652 | 9110 |
EtherCAT-Topologie konfigurieren: PreviousPort
Der PreviousPort einer EtherCAT-Klemme legt fest, über welchen Port und welches Gerät sie physisch an das Netzwerk angebunden ist. In verzweigten Topologien mit mehreren Anschlüssen, etwa bei einem EK1122-Koppler, bestimmt der PreviousPort die logische Position der Klemme im EtherCAT-Strang.
<TreeItem>
<EtherCAT>
<Slave>
<PreviousPort Selected="1">
<Port>B</Port>
<PhysAddr>1045</PhysAddr>
</PreviousPort>
<PreviousPort>
<Port>B</Port>
<PhysAddr>1023</PhysAddr>
</PreviousPort>
</Slave>
</EtherCAT>
</TreeItem>
Beim Einfügen von Child-Knoten direkt unter einem Slave kann der bstrBefore-Parameter von CreateChild verwendet werden, um die Einfügeposition zu bestimmen. Auf einem EtherCAT-Master dagegen muss die Topologie über ConsumeXml mit der XML-Struktur oben gesetzt werden.
EtherCAT-Slaves zu einer HotConnect-Gruppe hinzufügen
Im TwinCAT Automation Interface kann dasselbe mit folgender XML-Struktur auf dem EtherCAT-Slave erreicht werden:
<TreeItem>
<EtherCAT>
<Slave>
<HotConnect>
<GroupName>Term 1 (EK1101)</GroupName>
<GroupMemberCnt>4</GroupMemberCnt>
<IdentifyCmd>
<Comment>HotConnect-Identität lesen</Comment>
<Requires>cycle</Requires>
<Cmd>1</Cmd>
<Adp>0</Adp>
<Ado>4096</Ado>
<DataLength>2</DataLength>
<Cnt>1</Cnt>
<Retries>3</Retries>
<Validate>
<Data>0000</Data>
<Timeout>5000</Timeout>
</Validate>
</IdentifyCmd>
</HotConnect>
</Slave>
</EtherCAT>
</TreeItem>
EtherCAT-Konfiguration aktivieren
Um eine erstellte TwinCAT-Konfiguration über das Automation Interface zu aktivieren, kann ITcSysManager::ActivateConfiguration() verwendet werden. Da die vorherigen Schritte eine Offline-Konfiguration ohne reale Adressen erstellen, müssen vor der Aktivierung die realen Adressen über ScanDevices + ProduceXml/ConsumeXml ermittelt und eingetragen werden.
