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

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:

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

LoginCmd

true = in SPS-Laufzeit einloggen

LogoutCmd

true = aus SPS-Laufzeit ausloggen

StartCmd

true = aktuell in die Laufzeit geladenes SPS-Programm starten

StopCmd

true = aktuell in die Laufzeit geladenes SPS-Programm stoppen

Bestehendes SPS-Projekt öffnen 1:

Um Befehle wie ResetOriginCmd zu verwenden, muss zuvor ein LoginCmd ausgeführt werden. Das Vorgehen entspricht dem in TwinCAT XAE.

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")