CANOpen-System konfigurieren

CANOpen-Master und -Slave werden per CreateChild unter dem I/O-Knoten angelegt. Der SubType bestimmt den Gerätetyp. EtherCAT-basierte Karten EL6751 und EL6751-0010 verwenden die SubTypes 87 bzw. 98. Nach dem Anlegen wird mit ClaimResources die zugehörige Hardware-Ressource zugewiesen. Liegt die Netzwerkkonfiguration als DBC-Datei vor, kann TwinCAT die darin definierten Slaves automatisch anlegen.

Voraussetzungen

C# Beispiel

Master und Slave werden unter dem I/O-Knoten TIID mit CreateChild angelegt. Direkt nach dem Anlegen weist ClaimResources dem Gerät die erste verfügbare Hardware-Ressource zu.

ITcSmTreeItem devices = sysManager.LookupTreeItem("TIID");

// CANOpen master (SubType 87 = EL6751)
ITcSmTreeItem canMaster = devices.CreateChild("Device 2 (EL6751)", 87, "", null);
canMaster.ClaimResources(1);

// CANOpen slave (SubType 98 = EL6751-0010)
ITcSmTreeItem canSlave = devices.CreateChild("Device 3 (EL6751-0010)", 98, "", null);
canSlave.ClaimResources(1);

PowerShell Beispiel

$devices = $sysManager.LookupTreeItem("TIID")

$canMaster = $devices.CreateChild("Device 2 (EL6751)", 87, "")
$canMaster.ClaimResources(1)

$canSlave = $devices.CreateChild("Device 3 (EL6751-0010)", 98, "")
$canSlave.ClaimResources(1)

DBC-Datei ab TC 3.1 Build 4018 importieren

Eine DBC-Datei, CAN Database, beschreibt die Nachrichten und Signale eines CAN-Netzwerks. Beim Import über das Automation Interface werden die in der DBC-Datei definierten CANOpen-Slaves automatisch als Unterknoten des Masters angelegt. Die einzelnen Optionen des Imports steuern, welche Nachrichten übernommen werden und wie mit bestehender Konfiguration umgegangen wird.

string dbcImportXml = @"<TreeItem>
  <DeviceDef>
    <CanOpenMaster>
      <ImportDbcFile>
        <FileName>C:\Projects\CANConfig\can_config.dbc</FileName>
        <ImportExtendedMessages>false</ImportExtendedMessages>
        <ImportMultiplexedDataMessages>false</ImportMultiplexedDataMessages>
        <KeepUnchangedMessages>true</KeepUnchangedMessages>
        <ExtBoxesSupport>false</ExtBoxesSupport>
        <VectorXXXSupport>false</VectorXXXSupport>
        <CommunicateWithSlavesFromDbcFile>true</CommunicateWithSlavesFromDbcFile>
      </ImportDbcFile>
    </CanOpenMaster>
  </DeviceDef>
</TreeItem>";

canMaster.ConsumeXml(dbcImportXml);

Die vollständige XML-Struktur für die Gerätekonfiguration sieht wie folgt aus:

<DeviceDef>
  <AmsPort>28673</AmsPort>
  <AmsNetId>172.17.251.109.2.1</AmsNetId>
  <AddressInfo>
    <Ecat>
      <EtherCATDeviceId>0</EtherCATDeviceId>
    </Ecat>
  </AddressInfo>
  <MaxBoxes>126</MaxBoxes>
  <ScanBoxes>false</ScanBoxes>
  <CanOpenMaster>
    <ImportDbcFile>
      <FileName>c:\dbc_file_folder\dbc_file_to_be_imported.dbc</FileName>
      <ImportExtendedMessages>false</ImportExtendedMessages>
      <ImportMultiplexedDataMessages>false</ImportMultiplexedDataMessages>
      <KeepUnchangedMessages>true</KeepUnchangedMessages>
      <ExtBoxesSupport>false</ExtBoxesSupport>
      <VectorXXXSupport>false</VectorXXXSupport>
      <CommunicateWithSlavesFromDbcFile>true</CommunicateWithSlavesFromDbcFile>
    </ImportDbcFile>
  </CanOpenMaster>
  <Fcxxxx>
    <CalculateEquiTimes>0</CalculateEquiTimes>
    <NodeId>127</NodeId>
    <Baudrate>500 k</Baudrate>
    <DisableNodeStateModification>false</DisableNodeStateModification>
  </Fcxxxx>
</DeviceDef>

Die modifizierte XML-Struktur wird über ConsumeXml() auf dem CANOpen-Master-Knoten eingelesen.

CANOpen-System konfigurieren 1:

Die Importoptionen im Überblick:

ImportExtendedMessages: Nachrichten mit 29-Bit-Identifier (Extended Frame) importieren

ImportMultiplexedDataMessages: Gemultiplexte Datennachrichten aus der DBC übernehmen

KeepUnchangedMessages: bereits konfigurierte Nachrichten erhalten, die nicht in der DBC vorkommen

ExtBoxesSupport: Unterstützung für Erweiterungskarten aktivieren

VectorXXXSupport: Vector CANdb++-spezifische Features aktivieren

CommunicateWithSlavesFromDbcFile: Kommunikation mit den importierten Slaves aktivieren

Die Option "Simulate slaves from dbc file" wird laut Quelle nicht unterstützt.