Skip to main content

Einschränkungen

Versionen der Laufzeitsysteme

Das Bootprojekts muss auf beiden Steuerungen ladbar und lauffähig sein. Eine stoßfreie Aktualisierung der Laufzeitsysteme bei unterschiedlichen Versionen dieser Laufzeitsysteme wird durch ein Feature des Add-ons CODESYS Redundancy Configuration ermöglicht.

Task und Kommunikation in Echtzeit

Nur zyklische Tasks sind erlaubt. Tasks vom Typ Ereignis, Status oder Freilaufend können nicht synchronisiert werden.

Mit der Funktionalität des Add-ons CODESYS Redundancy Configuration wird genau eine Task (die Redundanztask) synchronisiert. Weitere Tasks und Applikationen sind möglich, laufen jedoch auf den SPSen unsynchronisiert.

Außerdem muss das Redundanzsystem, was die Taskausführung und die Kommunikation betrifft, gewisse Echtzeitanforderungen erfüllen: Die Laufzeit der Nachrichten (Anfrage und Antwort) der Redundanzkommunikation muss innerhalb eines vorher fest definierten Zeitintervalls vorliegen und der Task-Jitter muss berücksichtigt werden. Der dazu verwendete Kommunikationslink sollte ausschließlich für die Redundanzkommunikation verwendet werden.

Echtzeit-Taskausführung bedeutet, dass die Applikationstask, die durch Redundanz gesteuert wird, einen begrenzten Jitter hat. Echtzeitkommunikation bedeutet, dass eine über die Redundanzverbindung gesendete Nachricht von der anderen SPS innerhalb einer bestimmten Zeit empfangen werden muss.

Task-Ausführungszeit

Die Nachrichtenlaufzeit (Zeit für Anfrage und Antwort) erhöht die Ausführungszeit der Task: Bei Verwendung von Redundanz wird die Gesamtausführungszeit der Task länger.

Ändern von Applikationsnamen und Tasknamen

Das Ändern des Namens der redundanten Applikation oder der redundanten Task stellt eine wesentliche Änderung dar und ist während des redundanten Betriebs nicht möglich. Nach einer solchen Änderung müssen beide SPSen neu konfiguriert werden. So wie im Abschnitt Erste Schritte (unter "Redundanzsystem konfigurieren“) beschrieben.

Wert für Zeitüberschreitung

Der von Ihnen angegebene Wert für die Zeitüberschreitung muss größer sein als die Summe aus Task-Jitter-Zeit und maximaler Kommunikations-Jitter-Zeit.

Beide Zeiten sind systemspezifisch. Beide Features - Echtzeit-Tasks und Echtzeit-Kommunikation - werden benötigt, um eine bestimmte maximale Zeitüberschreitung anzugeben. Wenn zur Laufzeit der Task-Jitter hoch ist und die Nachrichtenübertragung sich verzögert, tritt eine Zeitüberschreitung ein. Beim Warten auf eine Nachricht von der anderen SPS wird dann angenommen, dass die andere SPS nicht mehr läuft. Daraufhin schalten sowohl die wartende SPS als auch die sendende SPS jeweils in den Standalone-Betrieb. Das führt zu Synchronisierungsverlusten und zu Kommunikationsproblemen auf dem Feldbus.

Wichtig

In speziellen Situationen kann es vorkommen, dass beide Steuerungen des redundanten Steuerungssystems unerwartet in den Simulationsbetrieb wechseln.

Ursache: Wenn die Ausführung der Redundanztask auf der aktiven Steuerung unterbrochen oder sehr stark verzögert ist. kann die Synchronisierungsnachricht erst nach Ablauf des der Zeitüberschreitung auf der Standby-Steuerung eintreffen.

Das resultierende Verhalten hängt vom Flag AutoSyncEnable ab:

  • Wenn AutoSyncEnable = 0 gilt, wechselt die zweite SPS in den Standalone-Betrieb.

  • Wenn AutoSyncEnabled = 1 gilt, dann geht die zweite Steuerung initial in den Standalone-Betrieb. Nachdem diese Steuerung die verzögerte Nachricht erhalten hat, geht sie in den Simulationsbetrieb, gefolgt von einem weiteren Verbindungsversuch.

Lösung:

  • Zur Vermeidung dieses Problems sollte der Redundanz-Task eine hohe Priorität zugewiesen werden, um dadurch das Risiko von Unterbrechungen oder Verzögerungen zu minimieren

  • Alternativ: Aktivieren Sie die Watchdog-Task mit einem Zeitüberschreitungswert, der kleiner ist als die Zeitüberschreitung der Redundanz.

  • Alternativ: Synchronisieren Sie die Steuerungen manuell.

Die Zeitüberschreitung, nach der die aktive SPS in den Standalone-Betrieb wechselt, definieren Sie im Editor Redundanzkonfiguration in der Registerkarte Redundanzeinstellungen, Registerkarte Allgemein.

Der Wert wird außerdem in der Konfigurationsdatei des Laufzeitsystems (beispielsweise CODESYSControl.cfg) mit dem Eintrag StandbyWaitTime gespeichert.

IEC-Timer

Unterschiedliche Taskausführungszeiten auf den beiden SPSen können „Bumps“ (voneinander abweichende Werte der Ausgänge) beim Umschalten verursachen. Um das zu vermeiden, werden die IEC-Timerwerte während der Ausführung einer IEC-Task eingefroren. Aufrufe von IEC-Zeitgebern (beispielsweise von der Funktion TON) während der Ausführung einer IEC-Task führen deshalb zu immer gleichen Timerwerten, auch wenn die physikalische Zeit weiter läuft. Implementierungen sollten deshalb nicht aktiv (eventuell in einer Schleife) warten. Denn IEC-Timerwerte ändern sich im aktuellen Task-Scan nicht.

Pointer, Referenzen, Interfaces

Die Mittel POINTER TO, REFERENCE TO und INTERFACE (und Interface-Instanzen) für das Ausdrücken von Beziehungen zwischen Applikationseinheiten funktionieren nicht mit synchronisierten redundanten Applikationen.

POINTER-Variablen dürfen nicht in Datenbereichen deklariert werden, die unter Redundanzkontrolle liegen. Denn redundant kontrollierte Daten werden während einer Synchronisierung auf die andere SPS übertragen. Pointer sind jedoch auf der anderen SPS nicht gültig, weil dort ein anderes Speicherlayout vorliegen kann.

Während des Übersetzens prüft die Redundanzfunktionalität, ob ein Pointer in einem redundant kontrollierten Bereich liegt. Für jeden Pointer, der dort gefunden wird, erscheint eine Warnung. Die Prüfung kann mit Hilfe des folgenden Eintrags in der Gerätebeschreibungsdatei deaktiviert werden:

<Device>
    <Custom>
        <Redundancy DisablePointerChecks="true">

EtherCAT DC

Die Redundanzerweiterung ist eher für die Prozessindustrie als für die Fabrikautomation ausgelegt. Deshalb werden EtherCAT-Antriebe mit verteilten Uhren nicht unterstützt. EtherCAT-E/As werden jedoch unterstützt.

Für weitere Informationen siehe: Task und Kommunikation in Echtzeit

Map on Existing

Abbilden auf bestehende Variablen

Die E/A-Mapping-Methode „Map on Existing” (Abbilden von E/As auf bestehende Variablen) wird bei Verwendung des Add-ons CODESYS Redundancy Configuration nicht empfohlen. Solche Variablen werden nicht in den Eingangs- oder Ausgangsdatenbereichen gespeichert, sondern dort, wo sie deklariert sind. Dies führt dazu, dass sie während des Betriebs nicht synchronisiert werden.

Netzwerkvariablen

Netzwerkvariablen mit Schreibzugriff dürfen nicht verwendet werden, weil sonst mehrere Schreibtelegramme gleichzeitig gesendet werden. Netzwerkvariablen mit Lesezugriff sind erlaubt.

Dateizugriff

Ein Dateizugriff darf nicht verwendet werden, da unterschiedliche Dateidaten auf den unterschiedlichen SPSen beim Umschalten „Bumps“ verursachen können.

Wenn Sie Dateien verwenden, müssen Sie die zugehörigen Dateihandles in Datenbereichen deklarieren, die nicht der Redundanzkontrolle unterliegen. Jede SPS öffnet ihre Dateien unabhängig voneinander. Ein gemeinsames Handle wird nicht unterstützt. Ein Dateihandle, das auf einer SPS erzeugt wurde, darf nicht verwendet werden, um auf Dateien der jeweils anderen SPS oder auf Dateien des lokalen PCs zuzugreifen.

Beim Übersetzen wird geprüft, ob Handlevariablen (RTS_IEC_HANDLE, CAA.HANDLE) in einem redundant kontrollierten Bereich liegen. Für jede Handlevariable, die in einem solchen Bereich gefunden wird, erscheint eine Warnung.

Online-Security-Benutzerverwaltung

Wenn eine Online-Security-Benutzerverwaltung verwendet wird, müssen Sie beide SPSen mit den gleichen Benutzernamen und den gleichen Passwörtern konfigurieren. Ansonsten werden Onlinedienste wie write variable oder online change nicht auf die Standby-SPS übertragen.

SoftMotion

CODESYS SoftMotion und CODESYS Redundancy Configuration können nicht kombiniert verwendet werden. Die Zeitanforderungen von SoftMotion können beim Einsatz von Redundanz nicht erfüllt werden.