Temperature Controller

Beschreibung

Im folgenden Beispiel werden die Grundlagen aus dem Beispiel „TemperatureController_minimal“ durch folgende Elemente erweitert:

Überblick Projektverzeichnis

TE1400Sample_TemperatureController enthält alle Dateien für dieses Beispiel:

TctSmplTempCtrl.mdl

erweiterter (aber immer noch sehr einfacher) Temperaturregler.
Temperature Controller 1:

TctSmplCtrlSysPT2.mdl

sehr einfaches PT2 Modell für die Regelstrecke.

TctSmplClosedLoopCtrl.mdl

Modell eines geschlossenen Regelkreises, das durch Referenzieren der Reglermodelle und der Regelstrecke implementiert wurde.

TctSmplTempCtrlParameters.mat

enthält alle notwendigen Modellparameter.

TctSmplTempCtrlBusObjects.mat

enthält alle notwendigen Simulink BusObjects (Strukturdefinitionen).

_PrecompiledTcComModules

Dieses Unterverzeichnis enthält bereits fertig kompilierte, aus den beiliegenden Simulink-Modellen erzeugte TwinCAT-Module. Diese erlauben es, die Einbindung eines Moduls in TwinCAT ohne vorherige Modulgenerierung auszuprobieren. Sie können z. B. genutzt werden, wenn beispielsweise noch keine MATLAB-Lizenz vorhanden ist. Eine Kurzanleitung zur Installation der Module auf dem Entwicklungsrechner liegt ebenfalls bei.

Info: Um das Modul auf einem x64-Zielsystem starten zu können, muss dieses in den Testmodus versetzt werden!

_PreviousSimulinkVersions

Die oben beschriebenen MDL-Dateien sind im Datei-Format der aktuellen Simulink-Version gespeichert. Dieses Unterverzeichnis enthält die Modelle im Datei-Format älterer Simulink-Versionen.

Parameterzugriff

TctSmplTempCtrl.mdl hat keine eingebetteten Parameterwerte (inline parameters), d.h. die Parameterwerte sind in der entsprechenden Modellparameterstruktur gespeichert. Darüber hinaus ist der Modulgenerator unter dem Karteireiter TCT Advanced der Codereinstellungen so konfiguriert, dass ADS-Zugriff auf die Parameter und die Erzeugung von ADS-Symbolen erlaubt sind. Damit ist aus TwinCAT Scope View oder anderen ADS-Clienten ADS-Zugriff möglich. Der Karteireiter Block diagram in TwinCAT XAE ist ein ADS-Client und der Zugriff auf seine Parameter hängt an diesen Einstellungen.
Temperature Controller 2:

Wenn die Option Inline parameters ohne weitere Konfigurationen aktiviert ist sind alle Parameterwerte in den generierten Modulcodes fest vorgegeben. Über die Schaltfläche Configure... neben Inline parameters kann ein Konfigurator geöffnet werden, in dem Sie Variablen des MATLAB Arbeitsbereichs auswählen können, die im generierten Modul einstellbar bleiben sollen:

Temperature Controller 3:

Im gezeigten Beispiel bleiben nur die Arbeitsbereichsvariablen Kp und Tn einstellbar, somit sind auch nur die von diesen Variablen abhängigen Simulink Blockparameter einstellbar. Die Parameterstruktur ist auf diese beiden Elemente reduziert.

Weitere Informationen zu parameter inlining, siehe
Simulink Dokumentation.

Verwendung von Bus-Objekten

Mit Simulink BusObjects ist ein Zugriff auf in Simulink generierte TwinCAT Module über strukturierte Symbole möglich. Das vorliegende Beispiel enthält ein vordefiniertes BusObject namens MonitoringSignalsType. Es ist eine Ausgabestruktur, d.h. es weist die enthaltenen Signale einem SPS-Modul zu.
Die Konfiguration eines BusObjects wird durch Doppelklick auf den BusCreator Block gestartet. Um den Bus Editor zu starten, klicken Sie im Begrüßungsfenster auf die Bearbeiten Schaltfläche, wie in nachfolgender Abbildung gezeigt. Weitere Informationen zur Verwendung von BusObjects finden Sie in der Simulink Dokumentation.

Temperature Controller 4:

Bei der Instanziierung des generierten Moduls in einem TwinCAT Projekt wird das spezifizierte BusObject als globaler TwinCAT Datentyp in das TwinCAT Projekt importiert. Dieser Datentyp wird vom generierten Modul selber für die Darstellung der Ausgabestruktur verwendet, kann aber auch von anderen Modulen wie eine SPS verwendet werden, die z. B. mit dieser Ausgabestruktur verknüpft wird.
Temperature Controller 5:

Verwendung von Testpunkten

Sie können in Simulink auf Signalen Testpunkte festlegen, die z. B. von Simulink "Floating Scope" überwacht werden. Signale mit solchen Testpunkten werden bei Verwendung des TwinCAT Target Modulgenerators zwingend als Membervariable des generierten TwinCAT Moduls deklariert. Dadurch wird ADS-Zugriff auf das Signal möglich. Weitere Informationen zu Testpunkten siehe Simulink Dokumentation.
In diesem Beispiel wird mit dem Model Explorer ein Testpunkt für die Regeldifferenz e definiert:

Temperature Controller 6:


Zur Freigabe von ADS-Zugriff, internal block output in den Codereinstellungen unter dem Karteireiter TCT Advanced ermöglichen:

Temperature Controller 7:


So können Sie z.B. mit TwinCAT Scope View beim Ausführen des generierten TwinCAT Moduls auf das Signal mit Testpunkten und einige weitere Blockausgangsvariable zugreifen.

Temperature Controller 8:

Verwendung von referenzierten Modellen

Öffnen Sie das Modell TctSmplClosedLoopCtrl.mdl, das zwei Modellreferenzen enthält. Referenzierte Modelle sind der bekannte Temperaturregler und ein einfaches P-T2 Modell einer Temperaturregelstrecke.

Temperature Controller 9:


Ein solche Modellreferenzierung hat einige Vorteile, generell oder auch in Kombination mit TwinCAT Target. Zwei Grundmöglichkeiten für strukturierte Modellierung und, insbesondere in diesem Beispiel, für Reglergestaltung sind:

Simulation zur Optimierung des Reglers:

Optimieren des Reglerdesigns durch Simulation des Regelkreises mit MATLAB/Simulink und anschließend nur den optimierten Regler in die Echtzeitumgebung von TwinCAT 3 übertragen. Durch Verwendung der Standard-Simulink Ein- und Ausgabeblöcke für die Definition der TwinCAT Modulprozessabbildern müssen vor dem Start der Modulgenerierung keine Änderungen am Reglermodell erfolgen.

Modellwiederverwendung und schnelleres Erstellen:

Ein Modell kann mehrere Male in einem oder mehreren übergeordneten Modellen referenziert werden. So können die Modelle in wiederverwendbare funktionale Einheiten aufgeteilt werden, wie in Text-Programmiersprachen, wo der Code in Funktionen oder Methoden gegliedert ist. So wird die Lesbarkeit komplexer Modelle verbessert.
Der generierte Code von referenzierten Modellen wird zu statischen Bibliotheken kompiliert, die nur aktualisiert werden, wenn das referenzierte Modell seit der letzten Codegenerierung verändert wurde. Das kann die Erstellung komplexer Modelle beschleunigen, wenn Sie selten veränderte Teile in referenzierten Modellen ablegen.
Sie können in diesem Beispiel die Modellgenerierung für ein Regelkreismodell starten und eine Echtzeit-Regelkreissimulation in der TwinCAT Laufzeit ausführen.

Hinweis zu Lizenzen:

Das Regelkreismodell dieses Beispiels kann nur mit einer gültigen TwinCAT Target Lizenz (TE1400) in ein TwinCAT Modul übersetzt werden. Sonst sprengt dieses Modell die Grenzen für unlizenzierte Modelle.

Verwendung von External Mode

Das Temperaturreglermodell TctSmplTempCtrl.mdl wurde so vorkonfiguriert, dass ExternalMode Verbindungen erlaubt sind:

Temperature Controller 10:

Wegen dieser Konfigurationen können Sie mit dem Connect to Target Symbol in der Simulink Toolbar via ExternalMode eine Verbindung mit dem generierten Temperaturregler herstellen. Das Modul muss vorher generiert und auf einem TwinCAT System gestartet worden sein und es muss eine ADS-Route zwischen Ihrem Entwicklungssystem und dem entsprechenden Target System konfiguriert worden sein. Es werden einige Dialoge eingeblendet, die Ihnen bei der Navigation zur gewünschten Modulinstanz helfen.

Temperature Controller 11:

Jetzt können Sie den Scope Block in Simulink zur Überwachung der Echtzeitsignale des generierten und nun verbundenen TwinCAT Moduls verwenden. Sie können auch z.B. den Wert des Internal Setpoint Blocks ändern. Sobald die Parameteränderung bestätigt ist, wird sie direkt zum Zielmodul heruntergeladen. Das ist nur möglich für einstellbare Parameter, wenn die Modellparameter not inlined sind (siehe "Parameterzugriff").

Generieren von TwinCAT Modulen aus Untersystemen

Erstellen eines TwinCAT Moduls in einem Simulink Untersystem, statt dem gesamten Modell, über das Untersystem Kontextmenü:

Temperature Controller 12: