Skip to main content

Kompatibilität

Kompatibilität von CODESYS-Projekten

Speicherformat

Anwendungsfall

Unterstützung

Laden von Projekten in neuer CODESYS-Version ohne Datenverlust

Speichern von Projekten für ältere CODESYS-Versionen

Öffnen neuer Projekte in alten CODESYS-Versionen

--

Bestehende Projekte, die mit einer neueren CODESYS-Version geöffnet werden, werden so lange wie möglich in einem "Kompatibilitätsmodus" gehalten. Solange Sie nur Änderungen am Projekt vornehmen, die keine neue Funktionalität erfordern, bleibt das Speicherformat auf demselben Stand. Deshalb kann die ursprüngliche CODESYS-Version das Projekt weiterhin ohne Datenverlust öffnen und bearbeiten. Wenn Sie Änderungen vornehmen, die die Speicherung neuer Daten im Projekt erfordern, werden Sie interaktiv über diese Situation informiert. Dabei haben Sie die Möglichkeit, die letzten Änderungen rückgängig zu machen, wenn ein Kompatibilitätsbruch nicht akzeptabel wäre.

Sie können Projekte mit neueren Speicherversionen oftmals in älteren CODESYS-Versionen öffnen, es wird jedoch dringend davon abgeraten. Ob Sie Projekte öffnen können, hängt von der Verfügbarkeit von Plug-in-Typen in der alten Version ab. Eine entsprechende Meldung wird beim Laden eines solchen Projekts angezeigt.

Sie haben auch die Möglichkeit, ein Projekt für eine ältere Version von CODESYS zu speichern, indem Sie den Befehl DateiSpeichern unter... ausführen. In diesem Fall werden in der Ansicht Meldungen Informationen darüber ausgegeben, welche Objekte vom Datenverlust betroffen sind. Das Speichern von Projekten für eine alte Version betrifft allerdings explizit nur das Speicherformat. Es findet keine vollständige Konvertierung des Projekts statt, bei der die Compilerversion oder ähnliche Einstellungen angepasst werden, damit sie zur alten Version passen.

Online-Verhalten

Anwendungsfall

Unterstützung

Übersetzen eines Projekts, das mit einer alten CODESYS-Version erzeugt wurde, in einer neuen CODESYS-Version.

Einloggen ohne Online-Change in einer neuen Version.

--

Neue CODESYS-Versionen können für bestehende Projekte nicht den gleichen Code erzeugen wie die ältere Version, mit der das Projekt erstellt wurde. Wenn Sie sich an einer laufenden Anwendung ohne Online-Change oder Download einloggen müssen, ist es erforderlich, dass Sie das Projekt mit der Version öffnen, mit der es zuletzt auf die Steuerung geladen wurde. Der CODESYS Installer und die Projektanalyse helfen Ihnen, die ursprüngliche Version wiederherzustellen, sofern diese nicht bereits vorhanden ist.

Dies bedeutet folglich, dass das Öffnen des Projekts mit einer neueren oder unterschiedlichen Version eine Aktualisierung des Projekts erfordert. Dabei ist höchstwahrscheinlich ein neuer Download der Laufzeitumgebung notwendig. Außerdem müssen Sie die Anwendung auf mögliche Verhaltensänderungen testen, die sich aus neuen Funktionen oder Fehlerbehebungen im Compiler oder den grafischen Editoren ergeben. Im Allgemeinen wird versucht, neue Compilerfehler oder Verhaltensänderungen für bestehende Projekte zu minimieren, um den Aufwand für die Aktualisierung auf neue Versionen so gering wie möglich zu halten.

Für die Kompatibilität zu bestehenden Laufzeiten sind die folgende Punkte zu beachten:

  • Neue Funktionen in CODESYS werden typischerweise in der Gerätebeschreibung aktiviert. Sie sind also für ältere Laufzeitsysteme oder ältere Gerätebeschreibungen deaktiviert.

  • Die Versionen aller externen Bibliotheken werden über die Gerätebeschreibung aufgelöst. Sie sind also auf das entsprechende Laufzeitsystem abgestimmt.

  • Interne Bibliotheken werden durch die CODESYS-Version aufgelöst, unabhängig von der Version des Laufzeitsystems.

  • Die Kommunikationsdienste werden nach einem gemeinsamen Format mit Tags aufgebaut. Unbekannte Tags werden vom Laufzeitsystem ignoriert. Eine Änderung des Kommunikationsdienstes ist daher möglich, aber das Programmiersystem wird nicht erwarten, dass das Laufzeitsystem die neuen Informationen interpretiert.

Kompatibilität CODESYS-Bibliotheken

Anwendungsfall

Unterstützung

Verwenden einer übersetzten Bibliothek, die in einer älteren CODESYS-Version erzeugt wurde, in einer neuen CODESYS-Version.

Verwenden einer übersetzten Bibliothek, die in einer neuen CODESYS-Version erzeugt wurde, in einer älteren CODESYS-Version.

--

Kompilierte Bibliotheken sollten immer mit der niedrigsten CODESYS-Version erstellt werden, mit der sie kompatibel sein sollen. Alte CODESYS-Versionen erkennen Bibliotheken, die mit neueren Versionen erstellt wurden, und lehnen deren Verwendung in einem Projekt ab. Die Prüfung basiert auf der in der Bibliothek eingestellten Compilerversion. Je nach Inhalt der Bibliothek kann auch das Speicherformat eine Rolle spielen.

Für Quellbibliotheken gelten die gleichen Regeln wie für CODESYS-Projekte.

Kompatibilität CODESYS-Laufzeitsystem

Es wird jedoch davon abgeraten, eine ältere Version von CODESYS und eine neuere Version des Laufzeitsystems zu verwenden. Diese Kompatibilität nicht explizit getestet. Aufgrund von Sicherheitskorrekturen in neueren Laufzeitsystemen kann es zu Inkompatibilitäten mit älteren CODESYS-Versionen kommen.

Für die Kompatibilität mit bestehenden Laufzeit-Versionen sind folgende Punkte zu beachten:

  • Neue Funktionen in CODESYS werden typischerweise in der Gerätebeschreibung aktiviert. Somit sind diese Versionen für ältere Laufzeitsysteme oder ältere Gerätebeschreibungen deaktiviert.

  • Die Versionen aller externen Bibliotheken werden über die Gerätebeschreibung aufgelöst. Sie sind also auf das entsprechende Laufzeitsystem abgestimmt.

  • Interne Bibliotheken werden durch die CODESYS-Version aufgelöst, unabhängig von der Version des Laufzeitsystems.

  • Die Kommunikationsdienste werden nach einem gemeinsamen Format mit Tags aufgebaut. Unbekannte Tags werden vom Laufzeitsystem ignoriert. Eine Änderung des Kommunikationsdienstes ist daher möglich, aber das Programmiersystem wird nicht erwarten, dass das Laufzeitsystem die neuen Informationen interpretiert.

Kompatibilität Gerätebeschreibungen - Laufzeitsystem

Anwendungsfall

Unterstützung

Eine ältere Version der Gerätebeschreibung und ein neueres Laufzeitsystem werden bei der Anmeldung akzeptiert.

Eine neuere Version der Gerätebeschreibung und ein älteres Laufzeitsystem werden nicht akzeptiert, so dass die Anmeldung verweigert wird.

--

Bestehende Projekte müssen auf bestehenden Laufzeitsystemen laufen, auch mit neueren CODESYS-Versionen. Dies kann dadurch erfüllt werden, indem die Gerätebeschreibung im Projekt nicht verändert wird und die bestehende Version hat, die mit der Version des Laufzeitsystems übereinstimmt. Zusätzlich ist eine Anmeldung am Laufzeitsystem möglich, wenn die Version der Gerätebeschreibung und des Laufzeitsystems nicht zu unterschiedlich oder inkompatibel sind:

  • Die Gerätebeschreibung enthält eine Liste von externen Bibliotheken, deren externe Funktionen im Laufzeitsystem implementiert sind. Die entsprechende Version der Bibliothek wird in der so genannten Bibliotheksplatzhalterliste angegeben. Diese Liste wird vom Gerätehersteller definiert.

    Tipp

    Die Platzhalterliste sollte nur die Bibliotheken enthalten, deren entsprechende Laufzeitkomponenten im Laufzeitsystem verfügbar sind.

  • Es besteht die Möglichkeit, den Kompatibilitätsbereich zwischen der Gerätebeschreibung und dem Laufzeitsystem zu konfigurieren. Das bedeutet, dass Sie sich nicht auf die Steuerung einloggen können, wenn die Versionen nicht übereinstimmen. Dieser Bereich kann vom Gerätehersteller mit den folgenden Einstellungen im Laufzeitsystem ausgewählt werden (siehe SysTargetItf.h des Laufzeitsystems):

    • SYSTARGETKEY_INT_TARGET_VERSION_MASK "TargetVersionMask": Einstellung zur Angabe einer Maske zur Überprüfung der Zielversion auf Kompatibilität mit der Gerätebeschreibung. In der Maske werden nur die signifikanten Ziffern geprüft.

    • SYSTARGETKEY_INT_TARGET_VERSION_COMPATIBILITY_MASK "TargetVersionCompatibilityMask": Einstellung zur Angabe einer Kompatibilitätsmaske zur Überprüfung der Zielversion auf Kompatibilität mit der Gerätebeschreibung. Eine Gerätebeschreibung, die niedriger oder gleich der Zielversion ist, wird akzeptiert. Eine höhere Version der Gerätebeschreibung wird abgelehnt.

Tabelle 1. Beispiel aktuelles CODESYS

Version CODESYS

Version CODESYS-Control

Version Gerätebeschreibung

Empfohlen

Einschränkungen

Kommentar

3.5.19.0

3.5.19.0

3.5.19.0

ja, optimal

--

Dies ist die optimale Kombination

3.5.19.0

3.5.12.0

3.5.12.0

ja

--

Dies ist ein typischer Kompatibilitätsfall

3.5.19.0

3.5.12.0

3.5.10.0

nein, aber möglich

Warnung beim Login in die Steuerung, dass die DevDesc nicht übereinstimmt

Dies ist möglich, weil die DevDesc älter ist als die Version der Steuerung

3.5.19.0

3.5.12.0

3.5.19.0

nein

Kein Zugriff auf die Steuerung

Dies wird standardmäßig verweigert, da DevDesc und das Laufzeitsystem nicht miteinander kompatibel sind

3.5.19.0

3.5.10.0

3.5.10.30

nein

Kein Zugriff auf die Steuerung

Dies ist möglich, weil die DevDesc im kompatiblen Bereich von 3.5.10.x liegt.



Tabelle 2. Beispiel älteres CODESYS

Version CODESYS

Version CODESYS-Control

Version Gerätebeschreibung

Empfohlen

Einschränkungen

Kommentar

3.5.17.0

3.5.19.0

3.5.19.0

nein

Inkompatibilitäten aufgrund von Sicherheitskorrekturen im Laufzeitsystem möglich

In CODESYS muss der Satz aller externen Bibliotheken vorhanden sein. Möglicherweise werden in den externen Bibliotheken neuere IEC-Sprachressourcen verwendet, die zu Kompilierfehlern führen.

3.5.17.0

3.5.19.0

3.5.17.0

nein, aber möglich

Inkompatibilitäten aufgrund von Sicherheitskorrekturen im Laufzeitsystem möglich



Kompatibilität Bootprojekt + Retains - Laufzeitsystem

Anwendungsfall

Unterstützung

Neueres Laufzeitsystem lädt ältere Bootprojekte

Älteres Laufzeitsystem lädt neuere Bootprojekte

--

Vorhandene Bootprojekte müssen innerhalb einer Hauptversion vom Laufzeitsystem geladen werden können. Ein vorhandenes Bootprojekt wird vor dem Laden gegen die Typbezeichnung eines Targets (VendorID, DeviceID und seit V3.5.8.0 die DeviceVersion) geprüft.

Retain-Variablen aus einer gespeicherten Retain-Datei (<Application>.ret) oder aus dem SRAM müssen immer kompatibel sein. Pro Retain-Bereich wird eine Prüfsumme in einer separaten Datei gespeichert, die gleiche Prüfsumme wird im Bootprojekt gespeichert. Diese Prüfsumme wird vom Compiler aus den Retain-Daten generiert und ist eine Identifikation aller Variablen im Retain-Bereich mit ihren jeweiligen Typen. Wenn die Prüfsumme der Retain-Daten und die Prüfsumme im Bootprojekt nicht übereinstimmen, haben Sie im Laufzeitsystem mehrere Optionen, um das Verhalten auszuwählen. Diese Optionen können Sie in der cfg-Datei im Abschnitt [CmpApp] angegeben:

  1. Bootproject.RetainMismatch.Init = 1: Das Bootprojekt wird geladen und Retains werden initialisiert.

  2. Bootproject.RetainMismatch.Exception = 1: Das Bootprojekt wird geladen, aber die Anwendung bleibt im Stoppzustand und wird in einen Ausnahmezustand versetzt. Durch einen manuellen Reset kann dieser Zustand behoben werden.

  3. Keine Einstellung [DEFAULT]: Das Bootprojekt wird nicht geladen und eine Fehlermeldung wird dem Logger hinzugefügt.

Vor Laufzeitsystem Version 3.5.7.0 wurde die Prüfsumme aus den gesamten Daten der Anwendung berechnet, bei neueren Versionen wird die Prüfsumme nur aus den Daten im Retain-Bereich berechnet. Somit können mit neueren Versionen die Retain-Daten in ein Bootprojekt geladen werden, auch wenn sich das Projekt geändert hat, solange diese Änderungen keine Änderungen in den Retain-Daten beinhalten.