Skip to main content

Befehl: Online-Change

Funktion: Der Befehl dient dem Anstoßen eines Online-Change auf die gerade aktive Applikation. Dabei lädt CODESYS nur die geänderten Teile einer bereits auf der Steuerung laufenden Applikation neu in die Steuerung.

Aufruf: Menü Online, Kontextmenü des Objekts Applikation

Voraussetzung: Die Applikation ist im Onlinebetrieb.

Der Befehl ist im Kontextmenü verfügbar, wenn eine Applikation im Gerätebaum selektiert ist. Somit können Sie einen Online-Change gezielt auf eine Applikation ausführen, auch wenn die Applikation aktuell nicht die „aktive“ ist.

Achtung

Ein Online-Change verändert das laufende Applikationsprogramm und bewirkt keinen Neustart.

Stellen Sie sicher, dass der neue Applikationscode dennoch das gewünschte Verhalten des gesteuerten Systems bewirkt.

Abhängig von der gesteuerten Anlage könnten Schäden an der Anlage und Werkstücken entstehen oder Gesundheit und Leben von Personen gefährdet sein.

Wichtig

  • Wenn ein Online-Change durchgeführt wird, werden die applikationsspezifischen Initialisierungen (zum Beispiel Referenzfahrt) nicht ausgeführt, weil die Maschine ihren Status beibehält. Aus diesem Grund hat der neue Programmcode möglicherweise nicht den gewünschten Effekt.

  • Variablen auf Pointer behalten ihren Wert aus dem letzten Zyklus. Wenn ein Pointer auf eine Variable zeigt, die durch den Online-Change ihre Größe verändert hat, wird der Wert nicht mehr korrekt geliefert. Stellen Sie sicher, dass die Pointer in jedem Zyklus erneut zugewiesen werden.

  • Eine „Kindapplikation“ wird von der Steuerung entfernt, wenn ein Online-Change erfolgt, nachdem Sie die „Vaterapplikation“ geändert haben.

Kein Initialisierungscode bei schnellem Online-Change

Seit Compilerversion >= 3.5.0.0 wird für kleine Änderungen ein „schneller Online-Change“ durchgeführt. Bei schnellem Online-Change wird nur der jeweils geänderte Baustein übersetzt und nachgeladen. Insbesondere wird kein Initialisierungscode erzeugt.

Bei Variablen mit dem Attribut init_on_onlchange führt das ebenfalls dazu, dass kein Initialisierungscode erzeugt wird. In den üblichen Szenarien wird das keine Auswirkungen haben: Das Attribut wird üblicherweise verwendet, um Variablen mit Adressen zu initialisieren. Beim schnellen Online-Change kommt es jedoch nicht dazu, dass eine Variable ihre Adresse ändert.

Um dennoch die Wirkung des Attributs init_on_onlchange auf den gesamten Applikationscode sicherzustellen, können Sie generell für die Applikation den schnellen Online-Change mit Hilfe der Compiler-Define no_fast_online_change ausschalten. Selektieren Sie dafür im Gerätebaum Ihr Applikationsobjekt und wählen Sie den Kontextbefehl Eigenschaften. Fügen Sie dort unter der Registerkarte Build die Compiler-Define no_fast_online_change hinzu.

Für weitere Informationen siehe: Build

Beim Laden listet CODESYS im Meldungsfenster in der Kategorie Übersetzen auch die geänderten Schnittstellen, betroffenen Variablen und alle Bausteine, für die neuer Code generiert wurde. Wenn sich Speicherorte ändern, wird in einer Dialogbox auf mögliche Probleme in Zusammenhang mit Pointern hingewiesen.

Tipp

In der Ansicht Speicherreserve für Online-Change können für Funktionsbausteine eines Projekts Speicherreserven für den Online-Change konfiguriert werden, sodass bei Änderungen eines Funktionsbausteins beim Online-Change Instanzvariablen im Speicher nicht verschoben werden müssen .

Für weitere Informationen siehe: Einstellungen Speicherreserve für Online-Change

Was verhindert einen Online-Change?

Es gibt Aktionen in CODESYS, nach denen ein Online-Change auf eine Steuerung nicht mehr möglich ist. Danach ist immer ein vollständiges Neukompilieren der Applikation erforderlich. Ein typischer Fall ist der Befehl Alles bereinigen - Achtung!, der die beim letzten Download abgelegte Übersetzungsinformation löscht. Solche Aktionen erzeugen jedoch typischerweise eine Warnung und müssen von Ihnen quittiert werden.

Aber es gibt auch „normale“ Editieraktionen, die dazu führen, dass beim nächsten Einloggen ein Online-Change nicht mehr möglich ist. Achten Sie deshalb beim Editieren in den Programmbausteinen auf folgendes Symbol in der Statusleiste: _cds_icon_online_change_ok.png. Wenn dieses Symbol eine rote Farbe annimmt: _cds_icon_online_change_nok.png, kann danach nur noch ein vollständiger Download auf die Steuerung durchgeführt werden. Mit einem Doppelklick auf das Symbol öffnet sich der Dialog Applikationsinformation mit einer Liste der Unterschiede zum letzten Download. Im Dialog finden Sie auch Information dazu, welche der Änderungen einen Online-Change verhindern.

Für weitere Informationen siehe: Befehl: Einloggen

Tabelle 102. Aktionen und Änderungen in verschiedenen Bereichen einer Applikation, die einen Online-Change verhindern:

Checkfunktionen

Aktivieren oder Entfernen einer Checkfunktion (CheckBounds, CheckRange, CheckDiv usw.)

Änderung in der Schnittstelle einer Checkfunktion (auch das Einfügen und Löschen von lokalen Variablen)

Taskkonfiguration

Änderung in den Konfigurationseinstellungen

Projekteinstellungen

Änderung der Compile-Optionen in der Sektion Einstellungen (Unicode, Konstanten ersetzen, Logging in Haltepunkten)

Änderung in den Compiler-Defines

Applikationseigenschaften

Änderung der Zielsystem-Speichereinstellungen (Registerkarte Build)

Bausteineigenschaften

Änderung der Option Externe Implementierung (Registerkarte Build)

Tasklokale globale Variablenliste

Alle Änderungen

Funktionsbaustein

Ändern des Basisbausteins eines Funktionsbausteins (EXTENDS FBbase), auch das Einfügen oder Löschen eines solchen Basisbausteins

Änderung in der Schnittstellenliste (IMPLEMENTS ITF)

Ausnahme: Hinzufügen einer neuen Schnittstelle am Ende der Liste

Datentyp

Änderung des Datentyps einer Variable von einem benutzerdefinierten Datentyp zu einem anderen benutzerdefinierten Datentyp (beispielsweise von TON zu TOF)

Änderung des Datentyps von einem benutzerdefinierten Datentyp zu einem Basisdatentyp (beispielsweise von TON zu TIME)

Hinweis: Als Workaround sollten Sie gleichzeitig mit dem Datentyp immer auch den Namen der Variable ändern. Dann wird die Variable als neue Variable initialisiert und die alte entfernt. Ein Online-Change ist danach möglich.

Alarmkonfiguration

Änderung in der Alarmdatenbankkonfiguration

Änderung der Anzahl der Latch-Variablen (hat ebenfalls Auswirkungen auf das Speicherformat in der Datenbank)

Änderung an der Konfiguration der verteilten Alarme

Datenquelle

Alle Änderungen in der Konfiguration

Gerätekonfiguration

Änderung im Gerätebaum (auch durch Befehl Gerät aktualisieren)

Änderung in einer Gerätekonfiguration: Im Standardfall sind Änderungen an Geräteparametern nicht Online-Change-fähig. Ausnahmen können jedoch in der Gerätebeschreibung konfiguriert sein.

Hinweis: Das E/A-Mapping auf Variablen ist über Online-Change möglich.

Visualisierung

Umschalten der Overlay-Funktion

Vor V3.5 SP6: Änderung in der Konfiguration des Trace-Elements

Hinweis: Ab V3.5 SP6 gilt: Bei Online-Changes, die Visualisierungen betreffen oder sich auf die Daten der Applikation auswirken (beispielsweise: neue Variable eingefügt), initialisiert sich die Visualisierung vollständig neu. Für die TargetVisu bedeutet dies zum Beispiel, dass sich die Visualisierung schließt und mit der Startseite erneut öffnet. Im Fall der WebvVisu startet die Visualisierung nach einer kurzen Wartezeit ebenfalls neu mit der Startvisualisierung.

Einheitenumrechnung

Einfügen oder Entfernen von Objekten zur Einheitenumrechnung

Trend

Änderung der Anzahl Variablen oder der maximalen Anzahl Variablen

Änderung der Anzahl Variablen mit Beschreibung oder speziellen Linieneinstellungen



Für weitere Informationen siehe: Online-Change ausführen und init_on_onlchange