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

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)