PLC-Objekte anlegen
PLC-Objekte wie Methoden, Eigenschaften, Actions, Funktionsbausteine oder Ordner werden über CreateChild angelegt. Der Aufruf erhält den Namen des neuen Elements, den SubType als Zahlenwert für die gewünschte Objektart und ein optionales vInfo-Array mit zusätzlichen Angaben wie der IEC-Sprache oder dem Rückgabedatentyp. Der SubType bestimmt, welches Element entsteht.
Voraussetzungen
- TwinCAT XAE ist installiert und gestartet.
- Eine DTE-Verbindung zur Zielinstanz ist aktiv.
ITcSysManagerist in einem STA-Thread initialisiert.- Ein PLC-Projekt mit mindestens einem Funktionsbaustein ist vorhanden.
SubType-Referenz
Die folgende Tabelle listet die SubType-Werte für CreateChild mit ihrem internen Tag, der Objektart und der Belegung des vInfo-Arrays. Ein Strich in der Spalte vInfo-Parameter bedeutet, dass für dieses Element keine Erstellungsparameter dokumentiert sind.
SubType | Tag | Element | Kategorie | vInfo-Parameter |
|---|---|---|---|---|
600 | TREEITEMTYPE_PLCAPP | PLC application, root object | – | – |
601 | TREEITEMTYPE_PLCFOLDER | PLC Folder | Folder | Kein vInfo-Parameter, |
602 | TREEITEMTYPE_PLCPOUPROG | Program | POU | [0, optional]: IEC-Sprache gemäß |
603 | TREEITEMTYPE_PLCPOUFUNC | Function | POU | [0]: IEC-Sprache. [1]: Rückgabedatentyp, etwa DINT oder BOOL. |
604 | TREEITEMTYPE_PLCPOUFB | Function Block | POU | [0, optional]: IEC-Sprache. [1–4, optional]: Extends/Implements analog zu Program. |
605 | TREEITEMTYPE_PLCDUTENUM | Enum | DUT | [0, optional]: Deklarationstext. |
606 | TREEITEMTYPE_PLCDUTSTRUCT | Struct | DUT | [0, optional]: Deklarationstext. |
607 | TREEITEMTYPE_PLCDUTUNION | Union | DUT | [0, optional]: Deklarationstext. |
608 | TREEITEMTYPE_PLCACTION | Action | POU | [0, optional]: IEC-Sprache. [1, optional]: PLCopen-XML-String mit Code. |
609 | TREEITEMTYPE_PLCMETHOD | Method | POU | [0, optional]: IEC-Sprache. [1, optional]: Rückgabedatentyp. [2, optional]: Zugriffsmodifizierer. [3, optional]: PLCopen-XML-String. |
610 | TREEITEMTYPE_PLCITFMETH | Method (Interface) | Interface | [0]: Rückgabedatentyp. |
611 | TREEITEMTYPE_PLCPROP | Property | POU | [0]: IEC-Sprache. [1]: Rückgabedatentyp. [2, optional]: Zugriffsmodifizierer. |
612 | TREEITEMTYPE_PLCITFPROP | Property (Interface) | Interface | [0]: Rückgabedatentyp. |
613 | TREEITEMTYPE_PLCPROPGET | Property Get | POU | [0, optional]: IEC-Sprache. [1, optional]: Zugriffsmodifizierer. [2, optional]: PLCopen-XML. |
614 | TREEITEMTYPE_PLCPROPSET | Property Set | POU | [0, optional]: IEC-Sprache. [1, optional]: Zugriffsmodifizierer. [2, optional]: PLCopen-XML. |
615 | TREEITEMTYPE_PLCGVL | Global Variable List | GVL | [0, optional]: Deklarationstext. |
616 | TREEITEMTYPE_PLCTRANS | Transition | POU | [0, optional]: IEC-Sprache. [1, optional]: PLCopen-XML mit Code. |
617 | TREEITEMTYPE_PLCLIBMAN | Library Manager | – | – |
618 | TREEITEMTYPE_PLCITF | Interface | Interface | [0, optional]: Erweiterungstyp. |
619 | TREEITEMTYPE_PLCVISOBJ | Visualization object | – | – |
620 | TREEITEMTYPE_PLCVISMAN | Visualization manager | – | – |
621 | TREEITEMTYPE_PLCTASK | PLC task object | – | – |
622 | TREEITEMTYPE_PLCPROGREF | Program reference | – | – |
623 | TREEITEMTYPE_PLCDUTALIAS | Alias | DUT | [0, optional]: Deklarationstext. |
624 | TREEITEMTYPE_PLCEXTDATATYPECONT | External data type container | – | – |
625 | TREEITEMTYPE_PLCTMCDESCRIPTION | TMC description file | – | – |
629 | – | Parameter List | PL | [0, optional]: Deklarationstext. |
631 | – | UML Class Diagram | POU | Kein vInfo-Parameter. |
654 | TREEITEMTYPE_PLCITFPROPGET | Property Get (Interface) | Interface | Kein vInfo-Parameter, |
655 | TREEITEMTYPE_PLCITFPROPSET | Property Set (Interface) | Interface | Kein vInfo-Parameter, |
C# Beispiel: Methode anlegen
// Look up function block
ITcSmTreeItem fb = sysManager.LookupTreeItem(@"TIPC^PLC1^PLC1 Project^POUs^MyFB");
// Create method (SubType 609 — source-verified)
// vInfo[0] = method name, vInfo[1] = return type (REQUIRED)
object[] vInfoMethod = new object[] { "MyMethod", "BOOL" };
fb.CreateChild("MyMethod", 609, "", vInfoMethod);
// Create folder for methods (SubType 601 — available from TC 4024.14)
ITcSmTreeItem folder = fb.CreateChild("Folder", 601);
ITcSmTreeItem methodInFolder = folder.CreateChild("MyMethod2", 609);
Deklaration und Implementierung lesen und setzen
Das Lesen und Setzen von Deklarations- und Implementierungstext einer POU ist in einem eigenen Artikel beschrieben: Deklaration und Implementierung einer POU auslesen und setzen.
SPS-Zugriffsmodifizierer
Die folgenden Zugriffsmodifizierer sind gültig: PUBLIC, PRIVATE, PROTECTED, INTERNAL.
Funktionsbaustein mit Extends/Implements anlegen
string[] vInfo;
bool bExtends = true;
bool bImplements = true;
if (bExtends && bImplements)
{
vInfo = new string[5];
vInfo[0] = language.AsString();
vInfo[1] = "Extends";
vInfo[2] = "ADSRDSTATE";
vInfo[3] = "Implements";
vInfo[4] = "ITcADI";
}
else if (bExtends)
{
vInfo = new string[3];
vInfo[0] = language.AsString();
vInfo[1] = "Extends";
vInfo[2] = "ADSRDSTATE";
}
else
{
vInfo = new string[1];
vInfo[0] = language.AsString();
}
ITcSmTreeItem newPOU = parent.CreateChild("FB_Test", 604, "", vInfo);
POUs importieren (Vorlagen)
C#:
ITcSmTreeItem plcProject = systemManager.LookupTreeItem("TIPC^PlcGenerated^PlcGenerated Project");
plcProject.CreateChild("NameOfImportedPOU", 58, null, pathToPouFile);
plcProject.CreateChild(null, 58, null, stringArrayWithPathsToPouFiles);
PowerShell:
$plcProject = $systemManager.LookupTreeItem("TIPC^PlcGenerated^PlcGenerated Project")
$plcProject.CreateChild("NameOfImportedPOU", 58, $null, $pathToPouFile)
$plcProject.CreateChild($null, 58, $null, $stringArrayWithPathsToPouFiles)
![]() | Eine POU-Vorlagendatei kann eine |
