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

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, null verwenden.

602

TREEITEMTYPE_PLCPOUPROG

Program

POU

[0, optional]: IEC-Sprache gemäß IECLANGUAGETYPES. [1, optional]: "Extends"/"Implements"-Schlüsselwort. [2, optional]: Interface- oder POU-Name. [3, optional]: "Implements". [4, optional]: Interface für Ableitung.

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, null verwenden.

655

TREEITEMTYPE_PLCITFPROPSET

Property Set (Interface)

Interface

Kein vInfo-Parameter, null verwenden.

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)
PLC-Objekte anlegen 1:

Eine POU-Vorlagendatei kann eine .TcPou-Datei oder die entsprechenden Dateien für DUTs und/oder GVLs sein. Das Beispiel zeigt zwei Möglichkeiten: eine einzelne Datei importieren oder mehrere Dateien gleichzeitig importieren, indem die Dateipfade in einem String-Array gespeichert werden.