ProfiNET-System konfigurieren

ProfiNET-Geräte werden per CreateChild unter dem I/O-Knoten angelegt. Der Pfad zur GSDML-Datei des Geräts wird dabei als vInfo-Parameter übergeben. Die GSDML-Datei beschreibt die verfügbaren Module eines Geräts. Module werden später unter dem API-Knoten der ProfiNET-Box angelegt, wobei der SubType ihre Position in der GSDML-Modulliste bestimmt.

Voraussetzungen

SubType-Übersicht für ProfiNET-Controller und -Device

Zur Erstellung von ProfiNET E/A-Geräten, also Controllern und Geräten, kann die Methode CreateChild() verwendet werden. Der SubType legt den tatsächlichen Gerätetyp fest.

Name

Sub-Typ

Profinet Controller (RT)

113

Profinet Controller CCAT (RT)

140

Profinet Controller EL6631 (RT, EtherCAT)

119

Profinet Controller EL6632 (RT + IRT, EtherCAT)

126

Profinet Device (RT)

115

Profinet Device CCAT (RT)

142

Profinet Device CCAT (RT + IRT)

143

Profinet Device EL6631 (RT, EtherCAT)

118

SubType-Übersicht für ProfiNET-Boxen

Beckhoff-eigene ProfiNET-Feldbus-Koppler erfordern die folgenden SubTypes:

Gerät

SubType

BK9102

9125

BK9300

9128

BK6631 / EL6631

9130

C# Beispiel

Zuerst wird der ProfiNET-Controller unter dem I/O-Knoten TIID angelegt. Darunter folgt die ProfiNET-Box, deren GSDML-Pfad mit dem DAP-ModId-Suffix #0x3 als vInfo übergeben wird. Der API-Knoten der Box entsteht automatisch und wird per LookupChild("API") aufgerufen. Unter ihm werden die Module mit ihrer Slot-Nummer angelegt.

ITcSmTreeItem io = sysManager.LookupTreeItem("TIID");

// Create ProfiNET controller (SubType 113)
ITcSmTreeItem profinetCtrl = io.CreateChild("Profinet Controller", 113, null, null);

// Create ProfiNET box: vInfo = path to GSDML file with DAP-ModId suffix (#0x3)
// Note: Since TC 4026 the default TwinCAT installation path has changed.
// Verify the GSDML path on the target system before use.
ITcSmTreeItem profinetEL6631 = profinetCtrl.CreateChild("EL6631", 9130, null,
    @"C:\TwinCAT\3.1\Config\Io\Profinet\GSDML-V2.31-beckhoff-EL6631-20140508.xml#0x3");

// Look up API node (created automatically)
ITcSmTreeItem api = profinetEL6631.LookupChild("API");

// Remove existing modules (optional: reset configuration)
foreach (ITcSmTreeItem module in api)
    api.DeleteChild(module.Name);

// Add modules with slot number
// SubType = index in <ModuleList> of the GSDML file
// vInfo = slot number as string
ITcSmTreeItem module1 = api.CreateChild("Module_1",  2, "", "2");   // SubType 2, Slot 2
ITcSmTreeItem module2 = api.CreateChild("Module_10", 7, "", "10");  // SubType 7, Slot 10

GSDML-Pfad-Format und BoxFlags

Der vInfo-Parameter beim Anlegen der ProfiNET-Box unterstützt ein erweitertes Format mit BoxFlags:

GSDML-Pfad#DAP-ModId#BoxFlags#DAP-Nr
Beispiel:
C:\TwinCAT\Io\Profinet\GSDML-V2.3-beckhoff-TCPNDevice-20130723.xml#0x01#0#0x03

Die folgenden BoxFlags werden ausgewertet:

Name

Wert

Beschreibung

GENERATE_NAME_FROM_PAB

0x0004

Profinet-Name wird über das Prozessabbild generiert.

GET_STATIONNAME

0x0400

Profinet-Name aus der TC-Konfiguration wird verwendet (Tree-Item-Name).

SET_NOT_IP_TO_OS

0x4000

Nur CE: Profinet-IP wird nicht im OS registriert.

Profinet Sub-Module hinzufügen

ProfiNET Sub-Module können unterhalb eines "Profinet Modular Module" hinzugefügt werden:

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
ProfiNET-System konfigurieren 1:

GSDML-Dateien dürfen keine Leerzeichen oder Kommentare in der ModuleList enthalten. Andernfalls schlägt das Parsen fehl.