Bestehendes SPS-Projekt öffnen
Dieses Kapitel erklärt, wie ein bestehendes SPS-Projekt über das TwinCAT Automation Interface geöffnet und weiterverarbeitet wird. Themen:
- Bestehendes SPS-Projekt öffnen
- SPS-Projekt als Bibliothek speichern
- Online-Funktionen verwenden (Login, StartPlc, StopPlc)
- Boot-Projektoptionen setzen
- Projekt und/oder Solution als Archiv speichern
Bestehendes SPS-Projekt öffnen
Um ein bestehendes SPS-Projekt über das Automation Interface zu öffnen, wird zum SPS-Knoten navigiert und CreateChild() mit dem Pfad zur .plcproj-Datei aufgerufen.
Als SubType sind drei Werte möglich:
0: Projekt in das Solution-Verzeichnis kopieren1: Projekt in das Solution-Verzeichnis verschieben2: Ursprünglichen Projektspeicherort verwenden (in diesem Fall""als Projektnamen-Parameter übergeben)
Diese Werte entsprechen den Schaltflächen Ja, Nein und Abbrechen der entsprechenden Dialogbox in TwinCAT XAE. Alternativ kann auch ein SPS-Projektarchiv (.tpzip-Datei) als Pfad übergeben werden.
C#:
ITcSmTreeItem plc = systemManager.LookupTreeItem("TIPC");
ITcSmTreeItem newProject = plc.CreateChild("NameOfProject", 1, "", pathToProjectOrTpzipFile);PowerShell:
$plc = $systemManager.LookupTreeItem("TIPC")
$newProject = $plc.CreateChild("NameOfProject", 1, "", pathToProjectOrTpzipFile)SPS-Projekt als Bibliothek speichern
Um ein SPS-Projekt als PLC-Bibliothek zu speichern, wird die Methode ITcPlcIECProject::SaveAsLibrary() verwendet.
C#:
iecProject.SaveAsLibrary(pathToLibraryFile, false);
PowerShell:
$plcProject.SaveAsLibrary(pathToLibraryFile, $false)
Der zweite Parameter bestimmt, ob die Bibliothek nach dem Speichern automatisch im Standard-Repository installiert werden soll.
Online-Funktionen verwenden (Login, StartPlc, StopPlc, ResetCold, ResetOrigin)
Das Automation Interface unterstützt auch SPS-Online-Funktionen, beispielsweise zum Einloggen in eine SPS-Laufzeit und zum Starten, Stoppen oder Zurücksetzen des SPS-Programms. Diese Funktionen sind über ProduceXml() und ConsumeXml() auf einem ITcPlcIECProject-Knoten zugänglich.
XML-Struktur:
<TreeItem>
<IECProjectDef>
<OnlineSettings>
<Commands>
<LoginCmd>false</LoginCmd>
<LogoutCmd>false</LogoutCmd>
<StartCmd>false</StartCmd>
<StopCmd>false</StopCmd>
</Commands>
</OnlineSettings>
</IECProjectDef>
</TreeItem>
C#:
string xml = "<TreeItem><IECProjectDef><OnlineSettings><Commands><LoginCmd>true</LoginCmd></Commands></OnlineSettings></IECProjectDef></TreeItem>";
ITcSmTreeItem plcProject = systemManager.LookupTreeItem("TIPC^NameOfProject^NameOfProject Project");
plcProject.ConsumeXml(xml);
Beschreibung der XML-Knoten:
XML | Beschreibung |
|---|---|
|
|
|
|
|
|
|
|
![]() | Um Befehle wie |
Boot-Projektoptionen setzen
Dieses Code-Beispiel setzt Boot-Projektoptionen für ein SPS-Projekt über die ITcPlcProject-Schnittstelle.
C#:
ITcSmTreeItem plcProjectRoot = systemManager.LookupTreeItem("TIPC^PlcGenerated");
ITcPlcProject plcProjectRootIec = (ITcPlcProject) plcProjectRoot;
plcProjectRootIec.BootProjectAutostart = true;
plcProjectRootIec.GenerateBootProject(true);PowerShell:
$plcProject = $systemManager.LookupTreeItem("TIPC^PlcGenerated")
$plcProject.BootProjectAutostart = $true
$plcProject.GenerateBootProject($true)Projekt und/oder Solution als Archiv speichern
Um die gesamte TwinCAT-Solution als ZIP-kompatibles Archiv (*.tszip) zu speichern, wird die ITcSysManager9-Schnittstelle verwendet.
C#:
ITcSysManager9 newSysMan = (ITcSysManager9)systemManager;
newSysMan.SaveAsArchive(@"C:\test.tszip");PowerShell:
$systemManager.SaveAsArchive("C:\test.tszip")Um eine gespeicherte TSZIP-Datei neu zu laden, wird AddFromTemplate() verwendet.
C#:
dte.Solution.AddFromTemplate("C:\test.tszip", @"C:\tmp", "CreatedFromTemplate");PowerShell:
$dte.Solution.AddFromTemplate("C:\test.tszip", "C:\tmp", "CreatedFromTemplate")Um ein einzelnes SPS-Projekt als Archiv (*.tpzip) zu speichern, wird ITcSmTreeItem::ExportChild() verwendet.
C#:
ITcSmTreeItem plc = sysManager.LookupTreeItem("TIPC");
plc.ExportChild("PlcProject", @"C:\PlcTemplate.tpzip");PowerShell:
$plc = $systemManager.LookupTreeItem("TIPC")
$plc.ExportChild("PlcProject", "C:\PlcTemplate.tpzip")Um eine gespeicherte TPZIP-Datei zu laden, wird CreateChild() verwendet.
C#:
plcConfig.CreateChild("PlcFromTemplate", 0, null, @"C:\PlcTemplate.tpzip");PowerShell:
$plc.CreateChild("plcFromTemplate", 0, $null, "C:\PlcTemplate.tpzip")