Erstellung von und Umgang mit Profibus-Geräten
In diesem Artikel wird beschrieben, wie Profibus-Master- und –Slave-Geräte mit Hilfe des TwinCAT-Automation Interface erstellt und gehandhabt werden. Er setzt sich aus folgenden Schwerpunkten zusammen:
- Einen Profibus-Master erstellen und hinzufügen
- Geeignetes Gerät (EL6731, FC310x, usw.) suchen und konfigurieren
- Einen Profibus-Slave erstellen und hinzufügen
- Geeignetes Slave-Gerät (EL6731-0010, usw.) suchen und konfigurieren
- Änderung der Feldbus-Adresse
Einen Profibus-Master erstellen und hinzufügen
- 1. Um ein Profibus-Master-Gerät zu erstellen, öffnen Sie eine neue oder bestehende TwinCat-Konfiguration
- 2. Alle Geräte scannen. (Diese Aktionen können auch über das Automation Interface durchgeführt werden.)
- 3. 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 Profibus-Master hinzuzufügen.
Code-Ausschnitt (C#):
ITcSmTreeItem5 profi_master = (ITcSmTreeItem5)io.CreateChild("Device 2 (EL6731)", 86, "", null);
Code-Ausschnitt (Powershell):
$profi_master = $io.CreateChild("Device 2 (EL6731) ", "86", "", $null)
Für weitere Profibus-Master geben Sie den korrekten, hier aufgelisteten ItemSubtype ein. Dadurch wird das neue Gerät wie im Screenshot dargestellt hinzugefügt:
Ein Profibus-Master-Gerät in der Liste suchen und anfordern:
Der neu hinzugefügte Profibus-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.
Dies kann über Automation Interface gemacht werden:
Code-Ausschnitt (C#):
string availableMaster = profi_master.ResourcesCount;
profi_master.ClaimResources(1);
Code-Ausschnitt (Powershell):
$availableMaster = $profi_master.ResourcesCount
$profi_master.ClaimResources(1)
ITcSmTreeItem5:ResourcesCount zeigt die Anzahl kompatibler Profibus-Master-Geräte an, und ITcSmTreeItem5:ClaimResources nimmt den Index des CANOpen-Geräts, das als Master konfiguriert werden soll.
Einen Profibus-Slave erstellen und hinzufügen
Der aktuellen Konfiguration kann ein Profibus-Slave folgendermaßen hinzugefügt werden:
Code-Ausschnitt (C#):
ITcSmTreeItem5 profi_slave = (ITcSmTreeItem5)io.CreateChild("Device 3 (EL6731-0010)", 97, null);
Code-Ausschnitt (Powershell):
$profi_slave = $io.CreateChild("Device 3 (EL6731-0010)", "97", "", $null)
Einen Profibus Slave suchen und anfordern
Wie im Falle von Profibus-Master kann die Anzahl von Profibus-Slaves durch folgenden Code publiziert werden:
Code-Ausschnitt (C#):
string availableSlaves = profi_slave.ResourcesCount;
profi_slave.ClaimResource(1);
Code-Ausschnitt (Powershell):
$availableSlaves = $profi_slave.ResourcesCount
$profi_slave.ClaimResources(1)
Die letzte Zeile im Code bestimmt das EL6731-0010 Gerät als Profibus-Slave, ähnlich wie im Dialogfeld, das in der TwinCAT-Bedieneroberfläche erscheint.
Änderung der Feldbus-Adresse
Um die Feldbusadresse (Station-Nr.) einer Profibus-Box in einer Konfiguration zu ändern, muss eine TwinCAT System Manager-Instanz erstellt und die Konfiguration geöffnet werden. Die LookupTreeItem-Methode der ITcSysManager-Schnittstelle gibt einen ITcSmTreeItem-Schnittstellenzeiger zurück, der vom Tree Item, das über seinen Pfadnamen referenziert wird, implementiert ist. Diese Schnittstelle beinhaltet eine ConsumeXml-Methode des Tree Items.
Ablauf
Die Vorgehensweise für die Erstellung der ITcSysManager-Schnittstelle (die 'sysMan'-Instanz hier) wird im Kapitel Auf TwinCAT-Konfigurationen zugreifen beschrieben. Diese Schnittstelle verfügt über eine LookupTreeItem-Methode, die einen ITcSmTreeItem-Zeiger auf ein, mit seinem Pfadnamen angegebenes Tree Item zurückgibt. Zum Ändern der Feldbusadresse (Station-Nr.) einer Profibus-Box "TIID^Device 1 (FC310x)^Box 1 (BK3100)" in 44, kann der folgende Code verwendet werden:
Code-Ausschnitt (C#):
ItcSmTreeItem item = sysMan.LookupTreeItem("TIID^Device 1 (FC310x)^Box 1 (BK3100)");
item.ConsumeXml("44");
Code-Ausschnitt (Powershell):
$item = $sysMan.LookupTreeItem("TIID^Device 1 (FC310x)^Box 1 (BK3100)")
$item.ConsumeXml("44")