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
- Eine TwinCAT-Solution ist geöffnet und eine DTE-Verbindung ist aktiv.
ITcSysManagerwurde als COM-Objekt in einem STA-Thread initialisiert.- EL6751 als Master oder EL6751-0010 als Slave sind verfügbar.
- Für den DBC-Datei-Import: TwinCAT 3.1 ab Build 4018.
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.
![]() | Die Importoptionen im Überblick:
|
Die Option "Simulate slaves from dbc file" wird laut Quelle nicht unterstützt.
