Beispiel: Tc3AutomationInterface
Übersicht
Der Beispiel-Code besteht aus zwei m-Files:
- Tc3AutomationInterface.m: MATLAB®-Klasse, welche einige häufig genutzte Methoden implementiert.
- Tc3AutomationInterfaceGuide.mlx: MATLAB® Live-Script, welches die MATLAB®-Klasse beispielhaft aufruft.
Beispiel mit MATLAB® aufrufen Das TwinCAT Tool for MATLAB® and Simulink® Setup installiert das Beispiel auf Ihrem System. Rufen Sie das Beispiel mit dem MATLAB® Command Window auf: |
Das MATLAB®-Script
Das MATLAB®-Script liefert ein Beispiel, wie Sie eine TwinCAT-Solution erzeugen, den EtherCAT-Master nach I/O scannen, zwei TcCOM-Module instanziieren, verlinken und das Projekt auf einem Target aktivieren können.
Um das Script ausführen zu können, müssen die beiden verwendeten TcCOM in Ihrem publish directory %TwinCATDir%\\CustomConfig\Modules\ vorhanden sein. Laden Sie dazu das Beispiel Temperature Controller aus der TE1400 | Target for MATLAB®/Simulink® herunter. Die Dateiordner aus dem Verzeichnis .\TE1400Sample_TemperatureController\_PrecompiledTcComModules\Actual TwinCAT versions\ kopieren Sie dann in das publish directory.
Führen Sie das m-File Tc3AutomationInterface_Testbench.m aus. Es wird im Hintergrund die aktuellste auf Ihrem System verfügbare Visual Studio-Instanz geöffnet und die TwinCAT Solution konfiguriert, speichert und aktiviert.
Die MATLAB®-Klasse
Die Properties
In den Properties der Klasse Tc3AutomationInterface werden alle zur Instanz der Klasse gehörigen Variablen und Interfaces gehalten. So können mehrere TwinCAT Solutions in einem MATLAB®-Script aufgebaut werden, indem für jede Solution eine Instanz der Klasse erzeugt wird. Damit ergeben sich dann keine Überschneidungen.
Der Konstruktor
function this = Tc3AutomationInterface
Der Konstruktor lädt alle notwendigen Assemblies und setzt bei Erfolg das Property AssembliesLoaded auf TRUE. Die geladenen Assemblies sind:
- EnvDTE und EnvDTE80: Bibliotheken für das Visual Studio Core Automation. Notwendig zur Konfiguration von Visual Studio.
- TCatSysManagerLib: TwinCAT Automation Interface Bibliothek zur Konfiguration einer TwinCAT Solution in Visual Studio.
- TwinCAT.Ads: ADS Bibliothek, z. B. zum Lesen und Verändern des XAR state.
- System.Xml: Bibliothek zum Parsen von XML Dateien.
Ausgewählte Methoden der Klasse
function TcComObject = CreateTcCOM(this, Modelname)
Nutzen Sie die Hilfefunktion von MATLAB®, um die Funktion und die Parameter der Methode einzusehen.
Ebenfalls wird bei einigen Methoden ein Link ins das Beckhoff Infosys angeboten. Diese verweisen auf Dokumentationsbeispiele aus der TwinCAT Automation Interface Dokumentation, sodass Sie direkt einen Vergleich zur Implementierung in MATLAB®, C# und PowerShell einsehen können. Ebenfalls finden Sie in einigen Sektionen im Kommentar einen Link zum Beckhoff Infosys, sodass Sie die Quelle der Information einsehen können.
Die Methode CreateTcCOM beginnt zunächst mit dem Parsen der <modelname>.tmc Datei. Daraus wird mit der System.Xml die ClassID, die Task Zykluszeit sowie Task Priorität extrahiert. Dann wird mit dem Automation Interface ein entsprechendes TcCOM instanziiert sowie eine (oder mehrere) zugehörige Task(s) erzeugt. Abschließend wird (werden) die Task(s) dem TcCOM zugeordnet.
function ActivateOnDevice(this, AmsNetId)
Um den aktuellen Status einer TwinCAT Runtime, z. B. config oder run, zu erfragen bzw. zu verändern, wird TwinCAT ADS genutzt. In der Methode ActivateOnDevice wird zunächst die XAR mit der spezifizierten AmsNetId in den Config-Modus geschaltet und dann die aktuelle TwinCAT-Konfiguration aktiviert sowie das System gestartet. Zwischen den Einzelschritten sind Pausen eingetragen, da dieser Vorgang ggf. etwas Zeit benötigt.
Statische Methoden
Statische Methoden sind auch ohne Instanz der Klasse verfügbar.
function vsVersions = GetInstalledVisualStudios
Vorbereitet ist hier eine Funktion, welche über Registry Key Einträge die auf dem System verfügbaren Visual Studio Installationen detektiert und auflistet. Die Implementierung ist auf VS 2010 bis VS 2017 limitiert.