Controller-Redundanz
Um die Verfügbarbarkeit des Systems zu erhöhen, können Sie in Kombination mit der CODESYS Redundancy eine zweite Steuerung mit einem redundanten PROFINET-Conroller einsetzen. Die CODESYS Redundancy übernimmt als "Backend" die Synchronisierung der Applikation auf den beiden Steuerungen. Die native PROFINET-Systemredundanz (SR) sorgt für stossfreien Datenaustausch mit den Feldgeräten.
Bei der PROFINET-Systemredundanz halten beide Controller je eine Verbindung (AR = Application Relation) zu jedem PROFINET-Feldgerät, das S2-Systemredundanz unterstützt. Eine der Verbindungen hat die Rolle PRIMARY
, die andere Verbindung die Rolle BACKUP
. Dabei überträgt nur die Verbindung mit der Rolle PRIMARY
gültige Daten. Wenn die Verbindung mit der Rolle PRIMARY
ausfällt, kann in kürzester Zeit stossfrei auf die Verbindung mit der Rolle BACKUP
umgeschaltet werden, die nun zur neuen PRIMARY
-Verbindung wird. Ein Mischbetrieb mit PROFINET-Feldgeräten, die keine S2-Systemredundanz unterstützen, ist möglich. Hier wird aber die Datenübertragung beim Ausfall der Verbindung kurz unterbrochen, da ein vollständiger, neuer Verbindungsaufbau gestartet wird. PROFINET-Systemredundanz kann mit anderen Redundanzmechanismen, wie MRP ("Leitungsredundanz") erweitert werden.
Konfiguration des CODESYS Runtime
[CmpRedundancyConnectionIP] Link1.IpAddressLocal=192.168.56.1 ; IP address of redundancy link of local PLC Link1.IpAddressPeer=192.168.56.101 ; IP address of redundancy link of peer PLC Link1.Port=1205 [CmpRedundancy] BootupWaitTime=5000 TcpWaitTime=2000 StandbyWaitTime=50 ; This timeout depends on the quality of real time task and communication system LockTimeout=20 ; Maximum time of timer lock Bootproject=Application ; Name of your CODESYS application RedundancyTaskName=MainTask ; Task name in your CODESYS application DataSyncAlways=1 PlcIdent=1 ;// Redundant Controller = 2 !!! SyncWaitTime=100;
Konfiguration im Projekt
Im Projekt müssen zusätzlich die Einstellungen wie IP-Adresse und Controller-Stationsname für den PROFINET-Controller auf der zweiten Steuerung (SPS 2) konfiguriert werden.
Wenn das Objekt Redundanzkonfiguration ins Projekt eingefügt wird, gibt es am EtherNet Adapter-Gerät zusätzliche Einstellungen für den EtherNet Adapter auf der SPS 2.
In der Konfiguration des Controllers erscheint eine weitere Registerkarte Systemredundanz für die Einstellungen, die auf SPS 2 verwendet werden sollen. Feldgeräte, die S2-Systemredundanz unterstützen, werden automatisch in diesen Modus gesetzt.
Wichtig
Die CODESYS Redundancy erlaubt nur die Synchronisierung einer einzelnen Task. In dieser sollten alle PROFINET-E/A-Daten verwendet werden, wobei das E/A-Abbild nur auf existierende Variablen vorgenommen werden sollte. Da nur der PROFINET-Controller mit der PRIMARY
-Verbindung gültige E/A-Daten empfängt, sollte auf einer BACKUP-Steuerung keine Verarbeitung von PROFINET-E/A-Daten stattfinden. PROFINET-Funktionsbausteine für azyklischen Dienste (beispielsweise RDREC
,WRREC
) oder Alamverarbeitung (beispielsweise RALARM
) dürfen nicht innerhalb der synchronisierten Task oder der synchronisierten Datenbereichen verwendet werden.
Die Priorität der redundanten Task muss deutlich niedriger sein als die der PROFINET I/O-Task.
Das Standardverhalten des PROFINET-Controllers im Betrieb:
Wenn die Rolle der Steuerung "Active" ist, dann wird der PROFINET-Controller (und alle Verbindungen)
PRIMARY
.Wenn die Rolle der Steuerung "Standby" ist, dann wird der PROFINET-Controller (und alle Verbindungen)
BACKUP
.Wenn die Rolle der Steuerung zum Zeitpunkt des Starts "Standalone" ist, wird nur der PROFINET-Controller auf SPS 1 zum
PRIMARY
-Controller.Wenn die Rolle der Steuerung auf "Standalone" wechselt (Redundanzverbindung unterbrochen oder Ausfall der anderen SPS), behält der PROFINET-Controller seine aktuelle Rolle.
Der Funktionsbaustein RedundancyManager erweitert das Standardverhalten um sinnvolle Fehlerbehandlung:
Wenn die Verbindungen eines
PRIMARY
-Controllers abgebrochen werden (kompletter Shutdown aller Verbindungen oder einzelner Verbindungsabbruch), schaltet die Standby-Steuerung auf "Active" und deren PROFINET-Controller wird zum neuenPRIMARY
-Controller.Wenn der PROFINET-Controller auf einer der beiden Steuerungen einen Ausfall hat (beispielsweise kein Netzwerk), wird diese Steuerung auf "Simulation" umgeschaltet.
Achtung: Der RedundancyManager darf nicht in einem synchronisierten Bereich definiert werden, sondern beispielweise in einer globalen Variablenliste.