Erstellung von und Umgang mit Profinet-Geräten
In diesem Artikel wird beschrieben, wie Profinet E/A-Geräte mit Hilfe des TwinCAT-Automation Interface erstellt und gehandhabt werden. Die folgenden Themen werden dabei behandelt:
- Erstellung von Profinet-Geräten
- Hinzufügen von Profinet-Boxen
- Hinzufügen von Profinet-Modulen
- Hinzufügen von Profinet-Submodulen
Erstellung von Profinet-Geräten
Zur Erstellung von Profinet E/A-Geräten (Controller/Geräte) kann die Methode ITcSmTreeItem::CreateChild() verwendet werden. Der Subtyp stellt den tatsächlichen Typ ein, der hinzugefügt werden sollte.
Name | Subtyp |
---|---|
Profinet-Controller (RT) | 113 |
Profinet-Controller CCAT (RT) | 140 |
Profinet-Controller EL6631 (RT, EtherCAT) | 119 |
Profinet-Controller EL6632 (RT + IRT, EtherCAT) | 126 |
Profinet-Gerät (RT) | 115 |
Profinet-Gerät CCAT (RT) | 142 |
Profinet-Gerät CCAT (RT + IRT) | 143 |
Profinet-Gerät EL6631 (RT, EtherCAT) | 118 |
Code-Ausschnitt (C#):
ITcSmTreeItem io = sysManager.LookupTreeItem("TIID");
ITcSmTreeItem profinetController = io.CreateChild("Profinet Controller", 113, null, null);
Code-Ausschnitt (Powershell):
$io = $sysManager.LookupTreeItem("TIID")
$profinetController = $io.CreateChild("Profinet Controller", 113, $null, $null)
Hinzufügen von Profinet-Boxen
Zur Erstellung von Boxen unterhalb eines Profinet-Geräts kann die Methode ITcSmTreeItem::CreateChild() verwendet werden. Der Subtyp hängt von der Box ab, die hinzugefügt werden soll. Die folgende Tabelle gibt einen Überblick über die möglichen Werte:
Name | Subtyp |
---|---|
BK9102 | 9125 |
EK9300 | 9128 |
EL6631 | 9130 |
Zudem sind einige Kenntnisse über die entsprechende Profinet-GSD-Datei erforderlich, um den vInfo-Parameter korrekt zu nutzen. Der vInfo-Parameter ist aus der folgenden Syntax zusammengesetzt: PathToGSDfile#ModuleIdentNumber#BoxFlags#DAPNumber
Die ModuleIdentNumber kann aus der GSD-Datei heraus bestimmt werden, z. B. über die XML-Struktur <ProfileBody><ApplicationProcess><DeviceAccessPointList><DeviceAccessPointItem ModuleIdentNumber>. Die ModuleIdentNumber ist in der Regel einzigartig. Wenn nicht, spezifiziert die DAPNumber die Position in der DeviceAccessPointList.
Es werden z.Zt. folgende BoxFlags interpretiert:
Name | Wert | Beschreibung |
---|---|---|
GENERATE_NAME_FROM_PAB | 0x0004 | Der Profinet-Name wird über das Prozessabbild erstellt |
GET_STATIONNAME | 0x0400 | Es wird der Profinet-Name von TC config verwendet (Strukturelementname) |
SET_NOT_IP_TO_OS | 0x4000 | Nur CE: Profinet-IP wird in OS nicht registriert |
Code-Ausschnitt (C#):
ITcSmTreeItem profinetEL6631 = profinetController.CreateChild("EL6631", 9130, null, "C:\\TwinCAT\\3.1\\Config\\Io\\Profinet\\GSDML-V2.31-beckhoff-EL6631-20140508.xml#0x3");
Code-Ausschnitt (Powershell):
$profinetEL6631 = $profinetController.CreateChild("EL6631", 9130, $null, "C:\\TwinCAT\\3.1\\Config\\Io\\Profinet\\GSDML-V2.31-beckhoff-EL6631-20140508.xml#0x3")
Hinzufügen von Profinet-Modulen
Profinet-Module werden unterhalb des API-Knotens einer Profinet-Box erstellt. Der API-Knoten wird automatisch erstellt, wenn der TwinCAT-Konfiguration eine Profinet-Box hinzugefügt wird. Zum Hinzufügen von Profinet-Modulen kann die Methode ITcSmTreeItem::CreateChild() verwendet werden. Der Subtyp bestimmt die Position der Module innerhalb der <ProfileBody><ApplicationProcess><ModuleList> XML-Struktur der entsprechenden GSD-Datei.
Code-Ausschnitt (C#):
ITcSmTreeItem profinetEL6631api = profinetEL6631.get_Child(1);
ITcSmTreeItem profinetModule1 = profinetEL6631api.CreateChild("", 30, null, null); // SubType 30 = 200 Byte In-Out
ITcSmTreeItem profinetModule2 = profinetEL6631api.CreateChild("", 12, null, null); // SubType 12 = 8 Byte In-Out
ITcSmTreeItem profinetModule3 = profinetEL6631api.CreateChild("", 8, null, null); // SubType 8 = 4 Byte Out
Code-Ausschnitt (Powershell):
$profinetEL6631api = $profinetEL6631.get_Child(1)
$profinetModule1 = $profinetEL6631api.CreateChild("", 30, $null, $null)
$profinetModule2 = $profinetEL6631api.CreateChild("", 12, $null, $null)
$profinetModule3 = $profinetEL6631api.CreateChild("", 8, $null, $null)
Hinzufügen von Profinet-Submodulen
Profinet-Submodule können unterhalb eines sogenannten Profinet modularen Moduls hinzugefügt werden. Die Handhabung ähnelt sehr dem Hinzufügen von normalen Profinet-Modulen. Der Subtyp bestimmt die Position der Submodule innerhalb der <ProfileBody><ApplicationProcess><ModuleList> XML-Struktur der entsprechenden GSD-Datei.
Code-Ausschnitt (C#):
ITcSmTreeItem profinetModularModule = profinetEL6631api.CreateChild("", 98, null, null); // SubType 98 = Modular
ITcSmTreeItem modularModule1 = profinetModularModule.CreateChild("", 12, null, null); // SubType 12 = 8 Byte In-Out
ITcSmTreeItem modularModule2 = profinetModularModule.CreateChild("", 14, null, null); // SubType 14 = 16 Byte Out
ITcSmTreeItem modularModule3 = profinetModularModule.CreateChild("", 31, null, null); // SubType 31 = 8 Word In
Code-Ausschnitt (Powershell):
$profinetModularModule = $profinetEL6631api.CreateChild("", 98, $null, $null)
$modularModule1 = $profinetModularModule.CreateChild("", 12, $null, $null)
$modularModule2 = $profinetModularModule.CreateChild("", 14, $null, $null)
$modularModule3 = $profinetModularModule.CreateChild("", 31, $null, $null)