PLC-Code im PLCopen-Format exportieren
Mit ITcPlcOpenImportExport2.PlcOpenExport2 lassen sich einzelne POUs oder ganze Teilbäume eines PLC-Projekts als PLCopen-XML exportieren. Das Interface ITcPlcOpenImportExport2 wird durch einen Cast des PLC-Projekt-Tree-Items gewonnen. Die zu exportierenden Elemente werden über einen projektrelativen Selektor adressiert. Der bSubTree-Parameter steuert, ob nur die genannten Elemente oder zusätzlich alle Unterelemente exportiert werden.
Voraussetzungen
- TwinCAT XAE ist installiert und gestartet.
- Eine DTE-Verbindung zur Zielinstanz ist aktiv.
-
ITcSysManagerist in einem STA-Thread initialisiert. - Ein PLC-Projekt ist in der Solution vorhanden.
- Das Interface
ITcPlcOpenImportExport2steht ab TwinCAT Build 4019 zur Verfügung.
C# Beispiel
Der Selektor ist projektrelativ und verwendet ; als Trennzeichen, etwa "POUs.fb1;POUs.fb2". Mit bSubTree = true werden alle Unterelemente des gewählten Elements mitexportiert, darunter Methoden, Actions, Transitionen und Properties. Ohne dieses Flag werden nur die direkt genannten Elemente exportiert.
ITcSmTreeItem plcProject = sysManager.LookupTreeItem(@"TIPC^PLC1^PLC1 Project");
ITcPlcOpenImportExport2 exportInterface = (ITcPlcOpenImportExport2)plcProject;
// Export a single POU
exportInterface.PlcOpenExport2(
@"C:\Export\MyProg.xml", // output file
"POUs.MyProg", // selection (project-relative, ';' as separator)
false // false = only listed elements, not recursive
);
// Export selected POUs
exportInterface.PlcOpenExport2(
@"C:\Export\MyProg.xml", // output file
"POUs.MyProg;DUTs.MyDUT", // selection (project-relative, ';' as separator)
false // false = only listed elements, not recursive
);
// Export entire POUs folder recursively
exportInterface.PlcOpenExport2(
@"C:\Export\AllPOUs.xml",
"POUs",
true // true = entire subtree including methods, actions, transitions, properties
);
PowerShell Beispiel
Das PowerShell-Beispiel ruft PlcOpenExport2 mit denselben drei Parametern auf wie das C#-Beispiel.
$plcProject = $sysManager.LookupTreeItem(@"TIPC^PLC1^PLC1 Project");
# Export a single POU
$plcProject.PlcOpenExport2(
'C:\Export\MyProg.xml', # output file
'POUs.MyProg', # selection (project-relative,';' as separator)
$false # false = only listed elements, not recursive
);
# Export selected POUs
$plcProject.PlcOpenExport2(
'C:\Export\MyProg.xml',# output file
'POUs.MyProg;DUTs.MyDUT',# selection (project-relative,';' as separator)
$false # false = only listed elements, not recursive
);
# Export entire POUs folder recursively
$plcProject.PlcOpenExport2(
'C:\Export\AllPOUs.xml',
'POUs',
$true # true = entire subtree including methods, actions, transitions, properties
);