Jede SPS enthält mindestens drei Hauptaufgaben/Programme:
-
HA-Programm
-
Anwendungsprogramm
-
Modbus Programm
Die Programme in einer SPS kommunizieren über interne Strukturen der Bibliotheken und dedizierte interne Speicherbereiche für das HA-Sync-Array und die Modbus CI52x-Speicher(n) CiModDataxx.

Layout-Element |
Bedeutung |
---|---|
Gepunkteter Umrisskasten |
Kennzeichnet optionale Funktionsblöcke oder Programme. |
Feste Umrissbox |
Zeigt die obligatorischen Funktionsblöcke oder Programme an. Alle obligatorischen Blöcke werden aufgerufen, wenn ein Export aus dem Bulk Data Manager erstellt wird. |
Kursive Schrift |
Gibt das Programm oder die Funktionen an, die der Benutzer in seinem Projekt aufrufen soll und die nicht von Bulk Data Manager erstellt wurden. |
Hellgelber Hintergrundblock / blauer Pfeil |
Gibt die Vorgänge an, die in der Bibliothek intern behandelt werden. |
Grüner Vollkarton |
Zeigt die drei verschiedenen Aufgaben an, die der Benutzer zu konfigurieren hat. |
Modbus Programm
Der Funktionsbaustein CIModCI52x (V3) / CI_MOD_CI52x (V2) liest die Eingangswerte aus den CI52x-Modulen und speichert sie in der Struktur CiModDataxx. Wenn die CPU primär ist, schreibt sie auch die Ausgänge an die CI52x-Module. Der Funktionsblock parametriert auch das CI-Modul, wie es z.B. in Bulk Data Manager Tool beim ersten Start oder beim Austausch eines CI-Moduls.
Normalerweise kümmert sich die Bibliothek HA-Modbus TCP um die Kommunikationsüberwachung. Wenn die Kommunikation jedoch komplett unterbrochen wird, müssen die CI52x Kommunikationsschnittstellen und ihre E/A-Module selbständig reagieren, um ein stoßfreies oder gewünschtes Verhalten zu erreichen: Für die Kommunikationsschnittstellen und E/A-Module des CI52x sind die folgenden Parameter zu beachten:
-
- CI52x: Parameter "Timeout" für Busüberwachung: 2)
Ermöglicht die Erkennung von Fehlern auf der Seite der Kommunikationsschnittstelle und ergreift Maßnahmen, um ein ausfallsicheres Verhalten zu gewährleisten, wenn die Kommunikation unterbrochen wird. Sie kann in 10-ms-Schritten eingestellt werden. Bei einer Einstellung von 0 ist keine Busüberwachung aktiv. Vorgeschlagener Wert: 50 = 500 ms = Standardwert im Bulk Data Manager; dieser Wert sollte erhöht werden, z. B. auf den Wert 65, wenn AC500 CPU-Ports für die Feldkommunikation verwendet werden, um die größere TCP-Wiederübertragungszeit zu berücksichtigen.
-
„Verhalten Ausgänge“ bei „Timeout für Busüberwachung“ 1), 2). Dieser Fail-Safe-Parameter muss sorgfältig eingestellt werden: Für jedes Modul (und jede Kommunikationsschnittstelle) sind separate Einstellungen möglich: "aus"; "zuletzt" oder "Ersatz": 5 s, 10 s, ∞ s 1).
Anmerkungen:
1) Die Parameter „Verhalten Ausgänge bei Komm. Der Fehler“ wird nur ausgewertet, wenn der Failsafe-Mode [ON] ist.
2) Beides sind CI52x-Parameter, die z.B. über das Bulk Data Manager Tool im Programm eingestellt werden.
Anwendungsprogramm
-
Beim Start der Anwendungsaufgabe muss das Programm InputRefresh aufgerufen werden. Es kopiert Daten von Modbus über die Struktur CiModDataxx in die Benutzervariablen, die im BDM als Signale definiert wurden. Weitere Informationen finden Sie in der BDM-Dokumentation, die unter folgendem Pfad verfügbar ist: %ALLUSERSPROFILE%\Documents\Automation Builder Examples\PS5601-HA-MTCP\BulkDataManager\Documentation.
-
Nur die Hauptanwendungsprogramme sollten sich in dieser Aufgabe befinden und diese Variablen für die benutzerdefinierten Funktionen verwenden. Hier sollten z.B. die Anwenderprogramme und die Logik aufgerufen werden und die HA-Bibliotheken Utility-Bausteine (die synchronisieren ihre historischen Daten automatisch) und HA_MOD_DATA_SYNC-Bausteine für weitere zu synchronisierende Anwenderdaten verwenden.
-
Daten von Utility-Blöcken und HA_MOD_DATA_SYNC-Blöcken werden in das HA-Sync-Array der primären CPU kopiert (das vom HA-Programm an die sekundäre CPU gesendet wird).
-
Das Programm OutputRefresh wird als letzter Schritt aufgerufen. Es kopiert Daten aus den Benutzervariablen über die Struktur CiModDataxx nach Modbus.
Beispiel für einen Utility-Funktionsblock (mit integrierten Sync-Daten)
Betrachten wir den Einschaltverzögerungszeitgeber HA_MOD_TON (V2)/ HaModTon (V3).

Beide SPSen benötigen denselben Funktionsblock, der im Programm aufgerufen wird. Unter normalen Betriebsbedingungen werden die verstrichene Zeit ET und der Ausgang Q des Zeitgebers intern von der primären zur sekundären CPU synchronisiert. ET- und Q-Daten sind verfügbar und können je nach Anwendungsanforderungen an lokale oder globale Variablen im Programm angehängt werden. Wenn die SPS A aufgrund eines Fehlers ausfällt, geht der Primärstatus auf die SPS B über.
Im Falle einer Umschaltung läuft der Timer auf dieser SPS weiter, sobald SPS B die primäre Rolle übernimmt. Bis zum Zeitpunkt des Ausfalls von SPS A war der Zeitgeber von SPS B synchronisiert. Dies ist besonders wichtig in Fällen, in denen eine CPU nicht in Betrieb oder ausgeschaltet war und solche integralen oder historischen Systemwerte (Zeitgeber, Zähler, Bedienereinstellungen, ...) "nachholen" muss. Der eigentliche Prozess bleibt dann von der Umstellung unberührt.
HA-Programm
HA_MOD_CONTROL hat zwei Funktionen:
-
Austausch von Statusdaten (lifecom1 und lifecom2) und Umschalten von der sekundären auf die primäre SPS (oder umgekehrt) auf der Grundlage des Status gemäß den unter "Ausfälle und Anwendungsfälle"⮫ „Misserfolge und Anwendungsfälle“ beschriebenen Anwendungsfällen.
-
Senden Sie das Sync-Array "HA SYNC" von der primären an die sekundäre SPS, um sicherzustellen, dass die sekundäre SPS immer im Hot-Standby-Modus ist und sofort übernehmen kann. Das UDP-Protokoll wird für die Datensynchronisation zwischen den CPUs verwendet.
Datensynchronisation über UDP
In diesem Kapitel wird erläutert, wie die Datensynchronisation zwischen primärer und sekundärer SPS über UDP erfolgt.
Alle vorbereiteten Sync-Daten werden mit der sekundären SPS synchronisiert. Typischerweise müssen nur Integralwerte (Timer, Zähler, PID, ...) oder Einstellungen, die eventuell empfangen wurden, synchronisiert werden. Zum Beispiel für schnelle Starts, wenn eine sekundäre CPU neu gestartet wurde, da beide SPSen eng parallel laufen und auf der Grundlage der gleichen Eingabewerte rechnen, führt die Synchronisierung dazu, dass die sekundäre CPU mit dem aktuellen Wert anstelle des Standardwerts startet. Einzelheiten zur Konfiguration oder Verwendung des Daten-Sync-Funktionsblocks finden Sie in Beispielprojekten.
Folgende Schritte werden durchgeführt:
-
HA SYNC-Array wird über UDP an die sekundäre CPU übertragen. Dazu gehört auch der Austausch des Lifecom1-Status zwischen primärer und sekundärer CPU.
-
Im HA-Programm sammelt der Funktionsbaustein HA_MOD_CONTROL alle Diagnose-, Sync- und Lifecom2-Daten aus dem Feld bzw. der anderen SPS. Ob eine Umstellung erforderlich ist, wird anhand einer einfachen Entscheidungsmatrix entschieden.
-
Lifecom2 wird in jedem Zyklus über Modbus TCP zwischen den CPUs ausgetauscht.
-
Eine Aufgabe pro Programm, siehe Abbildung oben.
-
Der Status der an die dezentralen E/A-Stationen CI52x angeschlossenen Eingänge wird in jedem SPS-Zyklus gleichzeitig an beide SPSen übertragen. Sie werden von dem Funktionsblock CI52x empfangen.
-
Am Ende des Programms werden die erzeugten Ausgabewerte gesendet, indem die entsprechenden Puffer von der primären SPS über den CI52x-Funktionsblock und Modbus TCP an das/die CI52x-MODTCP-Modul(e) übertragen werden. Die sekundäre SPS ist sendebereit, bleibt aber "still" (sendet keine Ausgangswerte).
Die SPS benötigt einen HA-Zyklus, um einen ETH-Rahmen von der primären zur sekundären CPU zu senden und eine Bestätigung von der sekundären CPU zu erhalten. In ähnlicher Weise benötigt V3 SPS zwei HA-Zyklen.
Ein ETH-Frame kopiert ca. 1412 Datenbytes. Die Anzahl der ETH-Frames, die zur Synchronisation von HA Sync Array benötigt werden, hängt vollständig von der Anzahl der Daten-Sync-Bytes ab. Die globale Variable iNoOfEthFrames gibt dem Benutzer diese Information, die zur Berechnung der Zykluszeit für die Anwendungstask verwendet werden sollte.
⮫ „Empfehlungen zur Aufgabenkonfiguration für das HA-System“
Es können bis zu max. 60 kB an Sync-Daten können synchronisiert werden.
Die Synchronisierung zwischen der primären und der sekundären SPS erfolgt über einige Zyklen der HA-Task-Zeit, abhängig von der Gesamtzahl der im System konfigurierten Sync-Datenbytes. Lifecom1 wird auch zwischen der primären und der sekundären SPS ausgetauscht. Die primäre SPS sendet lifecom1 zusammen mit den Sync-Daten an die sekundäre SPS. In der Rückwärtsrichtung sendet die sekundäre SPS jeden Zyklus lifecom1 an die primäre SPS.
Die folgenden Abbildungen zeigen ein Beispiel für eine V2-SPS. Wenn im Projekt die Sync-Daten gleich 4 iNoOfEthFrames sind, dann dauert es 4 HA-Zyklen, um die Daten zwischen den SPSen zu synchronisieren.

Wenn die Sync-Daten im Projekt gleich 6 iNoOfEthFrames sind, dauert es 6 HA-Zyklen, um die Daten zwischen den SPS zu synchronisieren.
