Erstellung von und Umgang mit CANOpen-Geräten

In diesem Artikel wird beschrieben, wie CANOpen-Master- und –Slave-Geräte mit Hilfe des TwinCAT-Automation Interface erstellt und gehandhabt werden. Er setzt sich aus folgenden Schwerpunkten zusammen:

Einen CANOpen-Master erstellen und hinzufügen

Zum Erstellen eines CANOpen-Master-Geräts öffnen Sie eine neue oder bestehende TwinCat-Konfiguration und scannen alle Geräte. Denken Sie daran, dass diese Aktionen auch über das Automation Interface durchgeführt werden können.

Erstellung von und Umgang mit CANOpen-Geräten 1:

Erstellen Sie ein Systemmanager-Objekt und navigieren Sie zu den Geräten.

Code-Ausschnitt (C#):

project = solution.Projects.Item(1);
sysman = (ITcSysManager)project.Object;
ITcSmTreeItem io = (ITcSmTreeItem)sysman.LookupTreeItem("TIID");

Code-Ausschnitt (Powershell):

$project = $sln.Projects.Items(1)
$sysman = $project.Object
$io = $sysman.LookupTreeItem("TIID")

Verwenden Sie die ITcSmTreeItem:CreateChild Methode, um einen CANOpen-Master hinzuzufügen:

Code-Ausschnitt (C#):

ITcSmTreeItem5 can_master = (ITcSmTreeItem5)io.CreateChild("Device 2 (EL6751)", 87, "", null); 

Code-Ausschnitt (Powershell):

$can_master = $io.CreateChild("Device 2 (EL6751)", "87", "", $null) 

Geben Sie hier für andere CANOpen-Master-Geräte den korrekten hier aufgelisteten ItemSubtype an. Dadurch wird das neue Gerät wie im Screenshot dargestellt hinzugefügt:

Erstellung von und Umgang mit CANOpen-Geräten 2:
CANOpen-Master hinzugefügt

Ein CANOpen-Master-Gerät in der Liste suchen und anfordern:

Der neu hinzugefügte CANOpen-Master muss konfiguriert werden, was normalerweise in TwinCAT mittels Drücken der Suchen-Taste und Auswahl des korrekten Geräts aus der Liste erledigt wird.

Erstellung von und Umgang mit CANOpen-Geräten 3:
CANOpen Master über Search-Taste

Dies kann über Automation Interface gemacht werden:

Code-Ausschnitt (C#):

string availableMaster = can_master.ResourceCount;
can_master.ClaimResources(1);

Code-Ausschnitt (Powershell):

$availableMaster = $can_master.ResourceCount
$can_master.ClaimResources(1)

ITcSmTreeItem5:ResourceCount zeigt die Anzahl kompatibler CANOpen-Master-Geräte an, und ITcSmTreeItem5:ClaimResources nimmt den Index des CANOpen-Geräts, das als Master konfiguriert werden soll.

Einen CANOpen-Slave erstellen und hinzufügen

Der aktuellen Konfiguration kann ein CANOpen-Slave folgendermaßen hinzugefügt werden:

Code-Ausschnitt (C#):

ITcSmTreeItem5 can_slave = (ITcSmTreeItem5)io.CreateChild("Device 3 (EL6751-0010)", "98", null); 

Code-Ausschnitt (Powershell):

$can_slave = $io.CreateChild("Device 3 (EL6751-0010)", "98", $null) 

Einen CANOpen-Slave suchen und anfordern

Wie im Fall von CANOpen-Master kann eine Liste von CANOpen-Slaves durch folgenden Code publiziert werden:

Code-Ausschnitt (C#):

string availableSlaves = can_slave.ResourceCount;
can_slave.Claimresources(1);

Code-Ausschnitt (Powershell):

$availableSlaves = $can_slave.ResourceCount
$can_slave.Claimresources(1)

Die letzte Zeile im Code bestimmt das EL6731-0010 Gerät als CANOpen-Slave, ähnlich wie im Dialogfeld, das in der TwinCAT-Bedieneroberfläche erscheint.

Erstellung von und Umgang mit CANOpen-Geräten 4:
CANOpen bestimmt Ressourcen über das Dialogfeld

DBC-Dateien über Automation Interface importieren

Erforderliche Version: TwinCAT 3.1 Build 4018 oder höher

TwinCAT ermöglicht den Import der DBC-Datei über ein Dialogfeld, wie dies im Screenshot wiedergegeben ist. Mit Rechtsklick auf einen CANOpen-Master, z. B. EL6751, und Auswahl von “Import dbc-file” fordert ein Dialogfeld den Benutzer auf, die DBC-Datei zu durchsuchen. Durch Klicken auf OK wird die CANOpen-Konfiguration automatisch geladen.

Erstellung von und Umgang mit CANOpen-Geräten 5:
CANOpen DBC-Datei importieren

Automation Interface unterstützt ebenfalls den DBC-Dateiimport. Hierzu muss zum CANOpen-Master-Tree Item navigiert und die XML-Datei über ITcSmTreeItem:ProduceXml() exportiert werden. In der XML-Datei den Pfad zu der zu importierenden DBC-Datei hinzufügen, zusammen mit den weiteren Eigenschaften, die Bestandteil des vorstehend wiedergegebenen Dialogfelds sind.

<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-Datei über ITcSmTreeImte:ConsumeXml() zurück in die TwinCAT-Konfiguration importieren. Die Konfiguration wird nun unter CANOpen-Master geladen.