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

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")
EtherCAT-Geräte hinzufügen 1:

Neben der vollständigen Produktrevision kann auch ein Wildcard verwendet werden. Wenn nur "EK1100" als vInfo angegeben wird, erkennt das Automation Interface automatisch die neueste Revisionsnummer. Der bstrBefore-Parameter enthält den Namen des vorherigen Kind-Elements, nicht den vollständigen Pfad.

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.