Wie ein PLC-Projekt angelegt wird
Ein neues PLC-Projekt wird über CreateChild auf dem PLC-Knoten TIPC angelegt. Dabei kann entweder ein Standard-Template oder eine eigene .plcproj-Vorlagendatei verwendet werden.
Voraussetzungen
- Eine TwinCAT-Solution ist geöffnet
C# Beispiel
ITcSmTreeItem plcNode = sysManager.LookupTreeItem("TIPC");
// Simple: use standard template
ITcSmTreeItem plcProject = plcNode.CreateChild("PLC1", 0, "", "Standard PLC Template");
// Explicit path — named form (object[]):
object[] vInfoNamed = new object[] {
new string[] { "path", @"C:\tmp\Template.plcproj" },
new string[] { "pathType", "template" } // "template" or "existing"
};
ITcSmTreeItem plcProjectFromTemplate = plcNode.CreateChild("NewPlcFromTmplt", 0, "", vInfoNamed);
// Explicit path — positional form (string[]):
string[] vInfoPositional = new string[] { @"C:\tmp\ExistingProject.plcproj", "existing" };
ITcSmTreeItem plcExisting = plcNode.CreateChild("ExistingPLC", 0, "", vInfoPositional);
PowerShell Beispiel
$plcNode = $sysManager.LookupTreeItem("TIPC")
# Standard template
$plcProject = $plcNode.CreateChild("PLC1", 0, "", "Standard PLC Template")
![]() | Der |
Standard-Template-Pfade
TwinCAT enthält zwei Standardvorlagen. Beide werden jeweils durch eine Vorlagendatei im TwinCAT-Verzeichnis repräsentiert.
Bis TwinCAT 3.1 4024
Vorlagenname | Vorlagendatei |
|---|---|
Standard PLC template |
|
Empty PLC template |
|
Ab TwinCAT 4026
Vorlagenname | Vorlagendatei |
|---|---|
Standard PLC template |
|
Empty PLC template |
|
![]() | Bei Standard-SPS-Vorlagen von Beckhoff sollte nur der Vorlagenname verwendet werden, z. B. |
Zugriff auf Nested Project und Project Instance
TwinCAT-SPS-Projekte bestehen aus zwei Bereichen: dem Nested Project und der Project Instance. Das Nested Project hat den Tree-Item-Subtyp 56 und enthält den Quellcode des SPS-Programms, während die Project Instance die deklarierten Ein- und Ausgangsvariablen des SPS-Programms enthält. Der Zugriff auf beide Bereiche erfordert unterschiedliche Methoden.
C#:
ITcSmTreeItem plcProject = sysManager.LookupTreeItem("TIPC^PLC1");
ITcProjectRoot projectRoot = (ITcProjectRoot)plcProject;
ITcSmTreeItem nestedProject = projectRoot.NestedProject;
ITcSmTreeItem projectInstance = plcProject.childitems[1];PowerShell:
$plcProject = $sysManager.LookupTreeItem("TIPC^PLC1")
$nestedProject = $plcProject.NestedProject
$projectInstance = $plcProject.childitems.item(1)![]() | Für den Zugriff auf die Schnittstelle |
Nach dem Erstellen des SPS-Projekts kann es durch Umwandlung in die Schnittstelle ITcPlcIECProject weiterbearbeitet werden, die zusätzliche Funktionen und Zugriff auf projektspezifische Attribute bietet:
C#:
ITcSmTreeItem plcProject = sysManager.LookupTreeItem("TIPC^NameOfProject^NameOfProject Project");
ITcPlcIECProject iecProject = (ITcPlcIECProject) plcProject;PowerShell:
$plcProject = $systemManager.LookupTreeItem("TIPC^NameOfProject^NameOfProject Project")