SPS-Bibliotheken und -Platzhalter verwalten
Dieses Kapitel erklärt, wie auf SPS-Bibliotheken und SPS-Platzhalter zugegriffen und wie diese verwaltet werden. Themen:
- Allgemeine Informationen zu SPS-Bibliotheken und Platzhaltern
- Durch Referenzen navigieren
- Referenzen hinzufügen
- Referenzen entfernen
- Verfügbare Bibliotheken ermitteln
- Platzhalter-Version einfrieren
- Mit Repositories arbeiten
Allgemeine Informationen zu SPS-Bibliotheken und Platzhaltern
In TwinCAT 3 gibt es zwei Arten von Bibliotheksobjekten: Bibliotheken und Platzhalter. Weitere Informationen zu beiden Typen sind in der TwinCAT 3-Dokumentation zur Bibliotheksverwaltung zu finden.
In einem TwinCAT 3-SPS-Projekt werden Referenzen auf Bibliotheken und Platzhalter als untergeordnete Elemente zum References-Knoten des entsprechenden SPS-Projekts hinzugefügt. Bei Verwendung der Vorlage "Standard PLC Project" werden standardmäßig einige Bibliotheken und Platzhalter zum Projekt hinzugefügt, z. B. Tc2_Standard, Tc2_System, usw.
Durch Referenzen navigieren
Über das Automation Interface kann zum References-Knoten navigiert werden, indem die Methode ITcSysManager::LookupTreeItem() verwendet wird. Um dieses Objekt in C# korrekt zu verarbeiten, muss es in die Schnittstelle ITcPlcLibraryManager umgewandelt werden.
C#:
ITcSmTreeItem references = systemManager.LookupTreeItem("TIPC^Untitled1^Untitled1 Project^References");
ITcPlcLibraryManager libManager = (ITcPlcLibraryManager) references;PowerShell:
$references = $systemManager.LookupTreeItem("TIPC^Untitled1^Untitled1 Project^References")Alle Referenzen können mithilfe der Property ITcPlcLibraryManager::References durchlaufen werden. Diese Property gibt eine ITcPlcReferences-Kollektion zurück, die entweder Bibliotheksobjekte vom Typ ITcPlcLibrary oder Platzhalterobjekte vom Typ ITcPlcPlaceholderRef enthält.
C#:
ITcSmTreeItem references = systemManager.LookupTreeItem("TIPC^Untitled1^Untitled1 Project^References");
ITcPlcLibraryManager libManager = (ITcPlcLibraryManager) references;
foreach (ITcPlcLibRef libRef in libManager.References)
{
if (libRef is ITcPlcLibrary)
{
ITcPlcLibrary library = (ITcPlcLibrary) libRef;
// do something
}
else if (libRef is ITcPlcPlaceholderRef)
{
ITcPlcPlaceholderRef placeholder = (ITcPlcPlaceholderRef) libRef;
// do something
}
}Das Iterationsobjekt libRef ist vom Typ ITcPlcLibRef, der gemeinsamen Basisklasse für ITcPlcLibrary- und ITcPlcPlaceholderRef-Objekte. Um mit einer der spezifischen Klassen zu arbeiten, muss das Objekt entsprechend umgewandelt werden.
PowerShell:
$references = $systemManager.LookupTreeItem("TIPC^Untitled1^Untitled1 Project^References")
ForEach( $libRef in $references )
{
$libRef.LanguageIndependentName
}Referenzen hinzufügen
Die Klasse ITcPlcLibraryManager bietet zwei Methoden, um eine Bibliothek oder Platzhalter-Referenz zu einem SPS-Projekt hinzuzufügen: AddLibrary() und AddPlaceholder().
Eine Bibliothek kann durch Angabe von Bibliotheksname, Version und Distributor oder über den Anzeigenamen der Bibliothek hinzugefügt werden.
Bibliotheken hinzufügen
C#:
ITcSmTreeItem references = systemManager.LookupTreeItem("TIPC^Untitled1^Untitled1 Project^References");
ITcPlcLibraryManager libManager = (ITcPlcLibraryManager) references;
libManager.AddLibrary("Tc2_MDP", "*", "Beckhoff Automation GmbH"); // name, version, distributor
libManager.AddLibrary("Tc2_Math, * (Beckhoff Automation GmbH)"); // display namePowerShell:
$references = $systemManager.LookupTreeItem("TIPC^Untitled1^Untitled1 Project^References")
$references.AddLibrary("Tc2_MDP", "*", "Beckhoff Automation GmbH")
$references.AddLibrary("Tc2_Math, * (Beckhoff Automation GmbH)")Platzhalter hinzufügen
C#:
ITcSmTreeItem references = systemManager.LookupTreeItem("TIPC^Untitled1^Untitled1 Project^References");
ITcPlcLibraryManager libManager = (ITcPlcLibraryManager) references;
libManager.AddPlaceholder("Tc2_MC2_Camming"); // add existing placeholder by name
libManager.AddPlaceholder("Placeholder_NC", "Tc2_NC", "*", "Beckhoff Automation GmbH");PowerShell:
$references = $systemManager.LookupTreeItem("TIPC^Untitled1^Untitled1 Project^References")
$references.AddPlaceholder("Tc2_MC2_Camming")
$references.AddPlaceholder("Placeholder_NC", "Tc2_NC", "*", "Beckhoff Automation GmbH")Referenzen entfernen
Um eine Referenz zu entfernen, wird die Methode ITcPlcLibraryManager::RemoveReference() verwendet.
C#:
ITcSmTreeItem references = systemManager.LookupTreeItem("TIPC^Untitled1^Untitled1 Project^References");
ITcPlcLibraryManager libManager = (ITcPlcLibraryManager) references;
libManager.RemoveReference("Tc2_Math"); // remove library
libManager.RemoveReference("Placeholder_NC"); // remove placeholderPowerShell:
$references = $systemManager.LookupTreeItem("TIPC^Untitled1^Untitled1 Project^References")
$references.RemoveReference("Tc2_Math")
$references.RemoveReference("Placeholder_NC")Verfügbare Bibliotheken ermitteln
Um das System nach allen verfügbaren PLC-Bibliotheken zu durchsuchen, wird die Methode ITcPlcLibraryManager::ScanLibraries() verwendet.
C#:
ITcSmTreeItem references = systemManager.LookupTreeItem("TIPC^Untitled1^Untitled1 Project^References");
ITcPlcLibraryManager libManager = (ITcPlcLibraryManager) references;
ITcPlcReferences libraries = libManager.ScanLibraries();
foreach(ITcPlcLibrary library in libraries)
{
// do something
}PowerShell:
$references = $systemManager.LookupTreeItem("TIPC^Untitled1^Untitled1 Project^References")
$libraries = $references.ScanLibraries()
ForEach( $lib in $libraries )
{
$lib.Name
}Platzhalter-Version einfrieren
C#:
ITcSmTreeItem references = systemManager.LookupTreeItem("TIPC^Untitled1^Untitled1 Project^References");
ITcPlcLibraryManager libManager = (ITcPlcLibraryManager) references;
libManager.FreezePlaceholder(); // freeze version of all placeholders
libManager.FreezePlaceholder("Placeholder_NC"); // freeze version of a specific placeholderPowerShell:
$references = $systemManager.LookupTreeItem("TIPC^Untitled1^Untitled1 Project^References")
$references.FreezePlaceholder()
$references.FreezePlaceholder("Placeholder_NC")![]() | Die Version wird auf die Effective Resolution eingefroren. Wenn die Effective Resolution auf |
Mit Repositories arbeiten
Das Automation Interface enthält Methoden zur Verwaltung von PLC-Bibliotheks-Repositories.
C#:
ITcSmTreeItem references = systemManager.LookupTreeItem("TIPC^Untitled1^Untitled1 Project^References");
ITcPlcLibraryManager libManager = (ITcPlcLibraryManager) references;
libManager.InsertRepository("TestRepository", @"C:\Temp", 0);
libManager.InstallLibrary("TestRepository", @"C:\SomeFolder\TcTestLibrary.library", false);
libManager.UninstallLibrary("TestRepository", "Tc2_MDP", "*", "Beckhoff Automation GmbH");
libManager.RemoveRepository("TestRepository");PowerShell:
$references = $systemManager.LookupTreeItem("TIPC^Untitled1^Untitled1 Project^References")
$references.InsertRepository("TestRepository", "C:\Temp", 0)
$references.InstallLibrary("TestRepository", "C:\SomeFolder\TcTestLibrary.library", $false)
$references.UninstallLibrary("TestRepository", "Tc2_MDP", "*", "Beckhoff Automation GmbH")
$references.RemoveRepository("TestRepository")