Online-Change

Online-Change 1:

Ab TwinCAT 3.1. Build 4024.0

Die hier beschriebene Funktionalität ist ab TwinCAT 3.1. 4024.0 verfügbar.

TwinCAT 3.1 unterstützt das Austauschen von C++ Modulen zur Laufzeit d. h. ohne Unterbrechung des Echtzeitprogramms.

Hierfür werden unterschiedliche Versionen eines TwinCAT Executable (TMX) auf dem Zielsystem vorgehalten, wie bereits hier beschrieben.

Für alle Modul-Instanzen aus einem TMX kann durch das Engineering eine Umschaltung zwischen den Versionen veranlasst werden.

Der Ablauf ist grob skizziert:

Online-Change fähiges Modul in TMX
1. TwinCAT instanziiert das neue Modul. Das alte Modul wird weiterhin von der Task zyklisch aufgerufen.
2. TwinCAT ruft ITcOnlineChange::PrepareOnlineChange() des neuen Moduls auf.
Dieser Aufruf kann auf das alte Modul zugreifen und Daten übernehmen, die sich durch die zyklischen Aufrufe des Moduls nicht ändern - beispielsweise Parameterwerte.
3. TwinCAT ruft ITcOnlineChange::PerformOnlineChange() des neuen Moduls auf.
Dieser Aufruf kann auf das alte Modul zugreifen und wiederum Daten übernehmen, die sich zuvor zyklisch verändert haben. Dieser Aufruf wird ausgeführt, wenn kein zyklischer Aufruf durch eine Task erfolgt. Das alte Modul wird nicht nochmal wieder durch die Task aufgerufen, sondern das neue Modul wird aufgerufen. Damit diese Umschaltung von einem Taskzyklus zum nächsten erfolgen kann, muss die Methode PerformOnlineChange() entsprechend wenig Rechenzeit in Anspruch nehmen.
4. Nach Abschluss wird die Task das neue Modul zyklisch aufrufen.

Online-Change 2:

Durch diesen Dialog im Engineering kann der Online-Change vorgenommen werden.

Online-Change 3:

Bei dem Umgang mit dem Online-Change sind deswegen einige Aspekte zu beachten:

Nach einem Neustart wird TwinCAT den Treiber in der initialen Version der Module starten.