Erstellung von und Umgang mit Variablenzuordnungen
Ein sehr geläufiges Szenario, bei dem das TwinCAT-Automation Interface verwendet wird, ist die automatische Erzeugung der Variablenzuordnungen, z.B. zwischen SPS-Ein-/Ausgangsvariablen und deren entsprechenden I/O-Gegenstücken. Das Automation Interface bietet mehrere Methoden, um die Erstellung, Löschung oder Speicherung von Variablenzuordnungen zu vereinfachen. Der nachfolgende Artikel beschreibt diese Methoden kurz und erläutert deren Verwendung anhand einiger Beispiele. Die folgenden Themen werden behandelt:
- Allgemeine Informationen
- Variablen verknüpfen
- Variablenverknüpfungen auflösen
- Alle Variablenzuordnungen abrufen/festlegen
- Alle Variablenzuordnungen löschen
Allgemeine Informationen
Variablenzuordnungen können zwischen unterschiedlichen Ein-/Ausgangs-Tree Items in einem TwinCAT Projekt auftreten, z.B.:
- Zwischen SPS-Ein-/Ausgangsvariablen und I/O (und umgekehrt)
- Zwischen SPS-Ein-/Ausgangsvariablen und NC (und umgekehrt)
- Zwischen SPS-Ein-/Ausgangsvariablen und TcCOM-Objekten (und umgekehrt)
- …
In diesem Artikel werden die Mechanismen des Automation Interface beschrieben, die für alle diese Fälle verwendet werden können.
Variablen verknüpfen
Aus Sicht des Automation Interface werden Variablenzuordnungen immer zwischen zwei Tree Items vorgenommen, z.B. zwischen einer SPS-Ein-/Ausgangsvariablen und dem entsprechenden I/O-Gegenstück. Für die Verknüpfung von zwei Tree Items stellt das Automation Interface die Methode ITcSysManager::LinkVariables() zur Verfügung, die ein bestimmtes Quellenstrukturelement mit einem bestimmten Ziel-Tree Item verknüpft.
Code-Ausschnitt (C#):
string source = "TIPC^PlcProj^PlcProj Instance^PlcTask Inputs^bIn";
string destination = "TIID^EtherCAT^EK1100^EL1004^Channel 1^Input";
systemManager.LinkVariables(source, destination);
Code-Ausschnitt (Powershell):
$source = "TIPC^PlcProj^PlcProj Instance^PlcTask Inputs^bIn"
$destination = "TIID^EtherCAT^EK1100^EL1004^Channel 1^Input"
$systemManager.LinkVariables($source, $destination)
Variablenverknüpfungen auflösen
Mit der Verknüpfung von Variablen vergleichbar bietet das Automation Interface eine Methode ITcSysManager::UnlinkVariables() mit Hilfe derer die Verknüpfung zwischen einem bestimmten Quellen-Tree Item und einem bestimmten Ziel-Tree Item aufgelöst werden kann.
Code-Ausschnitt (C#):
string source = "TIPC^PlcProj^PlcProj Instance^PlcTask Inputs^bIn";
string destination = "TIID^EtherCAT^EK1100^EL1004^Channel 1^Input";
systemManager.UnlinkVariables(source, destination);
Code-Ausschnitt (Powershell):
$source = "TIPC^PlcProj^PlcProj Instance^PlcTask Inputs^bIn"
$destination = "TIID^EtherCAT^EK1100^EL1004^Channel 1^Input"
$systemManager.UnlinkVariables($source, $destination)
Alle Variablenzuordnungen Speichern/Wiederherstellen
Die Methoden ITcSysManager2::ProduceMappingInfo() und ITcSysManager2::ConsumeMappingInfo() können dazu verwendet werden, um alle Variablenzuordnungen eines TwinCAT Projekts zu speichern oder wiederherzustellen. Die erste Methode liest alle Variablenzuordnungen in einem TwinCAT Projekt und gibt diese in eine XML-Struktur zurück, die später mit Hilfe der letzteren Methode reimportiert werden kann.
Code-Ausschnitt (C#):
ITcSysManager2 systemManager2 = (ITcSysManager2)systemManager;
string mappingInfo = systemManager2.ProduceMappingInfo();
systemManager2.ConsumeMappingInfo(mappingInfo);
Code-Ausschnitt (Powershell):
$mappingInfo = $systemManager.ProduceMappingInfo()
$systemManager.ConsumeMappingInfo($mappingInfo)
Alle Variablenzuordnungen löschen
Mit Hilfe der Methode ITcSysManager3.ClearMappingInfo() können alle Variablenzuordnungen in einem TwinCAT Projekt gelöscht werden.
Code-Ausschnitt (C#):
ITcSysManager3 systemManager = (ITcSysManager3)systemManager;
systemManager.ClearMappingInfo();
Code-Ausschnitt (Powershell):
$systemManager.ClearMappingInfo()