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

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 name

PowerShell:

$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 placeholder

PowerShell:

$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 placeholder
PowerShell:
$references = $systemManager.LookupTreeItem("TIPC^Untitled1^Untitled1 Project^References")
$references.FreezePlaceholder()
$references.FreezePlaceholder("Placeholder_NC")
SPS-Bibliotheken und -Platzhalter verwalten 1:

Die Version wird auf die Effective Resolution eingefroren. Wenn die Effective Resolution auf "*" zeigt, wird die neueste im System vorhandene Version verwendet.

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