USV aus der SPS Steuern

Es besteht die Möglichkeit das USV-Modul aus der SPS heraus zu steuern. Es gibt zwei TwinCAT Bausteine, die die Steuerung ermöglichen. Dadurch kann ein Stromausfall in dem SPS-Programm berücksichtigt werden. Zunächst sind aber einige Einstellungen im TwinCAT System Manager notwendig, damit die USV korrekt eingebunden werden kann. Das USV - Modul wird im TwinCAT System Manager eingebunden, wie es unter der Inbetriebnahme beschrieben ist. Damit die SPS die Kontrolle übernehmen kann, müssen aber einige wichtige Einstellungen erfolgen. Die Steuerung im System Manager muss abgeschaltet werden. Des weitern müssen die Hardwareein- und ausgänge der USV mit den entsprechenden Variablen um SPS - Programm verknüpft werden. Die Ein- und Ausgänge müssen als GLOBALE Variablen in dem Programm deklariert werden. (Details weiter unten) Zunächst wird die Einstellung im System Manager beschrieben.

NotwendigeSystem Manager Einstellungen:

- Alles auf AUS! d.h. im Karteireiter CX1190 UPS wird weder "Enable Automatic Shutdown", noch "No Abort" aktiviert.

- Zusätzlich müssen die beiden Inputs (24V State und Charge State) und beide Outputs (Control und DIP Control) vom System Manager in die SPS zum USV - Baustein in die entsprechenden Variablen verknüpft werden.

Das Bild zeigt die USV - Einbindung im System Manager. Im Hierarchiebrowser sind die Ein- und Ausgänge der USV sowohl im Prozess- als auch im Hardwareabbild zu finden.

USV aus der SPS Steuern 1:

Die Signale werden per Doppelklick miteinander verbunden. Diese Verbindung ist notwendig, damit der Funktionsblock im SPS-Programm richtig funktionieren kann. Das SPS-Prozessabbild steht aber erst nach der Übersetzung eines Programms zur Verfügung. Es muss also vor der Verknüpfung der USV-Steuerungsbaustein in ein SPS-Programm eingebunden werden.

USV aus der SPS Steuern 2:

Details zum Verknüpfen von Signalen werden in der Dokumentation zum TwinCAT System Manager beschrieben.

Einbindung des USV-Steuerungsbaustein in ein SPS-Programm:

Die Steuerung der USV aus der SPS heraus erfolgt mit dem Funktionsbaustein FB_CX1000SimpleUps aus der TC CX1000System.lib. Diese muss über den Bibliotheksverwalter eingebunden werden. Ist dies geschehen, steht der Baustein als Funktionsblock zur Verfügung. Er wird als solcher im Deklarationsteil des Programms instanziert.


PROGRAM MAIN_USV
VAR
    USV : FB_CX1000SimpleUps;
END_VAR

Im Programm erfolgt dann der Aufruf mit den Parametern. Es gibt drei Parameter für diesen Funktionsblock:

Mit "tDelay" wird die Haltezeit eingestellt, die der Strom maximal ausfallen darf, ohne dass die USV die SPS abschaltet. Die zulässigen Eingaben hierfür sind 0 bis 10 Sekunden. Über den boolschen Ausdruck "bDIPDisable" kann die Einstellung des Drehschalters auf der USV ignoriert werden. Ist der Wert "TRUE", so wird der Wert der über "iDischargeLevel" eingestellt ist als gültige Haltezeit benutzt. Der Aufruf sieht dann wie folgt aus:


USV(
    bDIPDisable := TRUE, (* TRUE für DIP-Schalter override *)
    iDischargeLevel := 30, (* Werte von 0,1, ... 9 *)
    tDelay := t#5s     (* Haltezeit vor Shutdown t#0s .. t#10s *)
);

Damit der Funktionsblock funktionieren kann, müssen die im System Manager von TwinCAT zu verbindenden Signale noch als Variablen angelegt werden. Dies geschieht automatisch beim Einlesen des Prozessabbildes in den System Manager. Bei der Verknüpfung werden die Adressen in der Datei "TwinCAT_Configuration" abgelegt und beim nächsten Compileraufruf eingebunden. (Eine genaue Beschreibung kann in der TwinCAT-Beschreibung nachgelesen werden.) Alternativ kann man die Adressen von Hand vergeben. Nach dem Übersetzen werden Warnungen für die fehlende Konfiguration der Signale angezeigt. Unter dem Menüpunkt "Einfügen -> Alle Instanzen" werden in der Datei "Variablen_Konfiguration" die Signale eingefügt. Hier können dann die Adressen für die Signale eingegeben werden. (z.B. MAIN.USV.Li24VState AT %IB0 : BYTE für Speicheradresse 0).


VAR
    MAIN.USV.Ii24VState AT %IB0 : BYTE;
    MAIN.USV.IiChargeState AT %IB1 : BYTE;
    MAIN.USV.QiControl AT %QB0     : BYTE;
    MAIN.USV.QiDipControl AT %QB1 : BYTE;
END_VAR

Für die Auswertung im Programmumfeld liefert der Baustein einige Statussignale. Diese können dann zur Steuerung, z.B. Sichern der Prozessdaten ins NOVRAM, oder Einstellen von definierten Zuständen oder Positionen für Achsen, benutzt werden. Im Einzelnen liefert der Baustein folgende Signale:

"bPowerFailure" liefert "TRUE", wenn ein Spannungsausfall der Versorgungsspannung erkannt wird. Bei Wiederkehr der Eingangsspannung wechselt das Signal wider auf "FALSE".

"bShutdownActive" signalisiert wenn ein Stop bzw. Shutdown ausgeführt wird.

"bUpsReady" signalisiert, dass die USV die Ausgangsspannung bereitstellt.

"b24VInOK" meldet die Versorgung der USV mit 24V-Eingangsspannung.

"bHolding" liefert "TRUE", wenn ein Spannungsausfall der Versorgungsspannung erkannt wird und die Haltezeit noch nicht abgelaufen ist.

"tTimeUntilShutdown" zeigt die verbleibende Haltezeit bis zum Shutdown an.

"eUpsState" zeigt den Status der USV an [UNDEF | CHARGING | CHARGED | DISCHARGE | DISCHARGE_RESTART | OUTPUT_OFF | OVERLOAD

Der Funktionsbaustein überbrückt kurze Spannungsausfälle ohne Shutdown, lange Spannungseinbrüche führen zum TwinCAT Stop und Shutdown des Betriebssystems.Der CX10x0 wird von der USV nach Erreichen der Entladegrenze abgeschaltet auch bei Stromwiederkehr während des Shutdown.Der CX10x0 wird von der USV wieder eingeschaltet, wenn die USV voll geladen ist.

Wird ein anderes Verhalten der USV, z.B. längere Haltezeit, BUS-Reset oder garantierter Neustart der SPS auch bei kurzem Stromausfall, benötigt, so kann alternativ der Funktionsbaustein FB_CX1000UPSHANDLING aus der TC CX1000System.lib verwendet werden. Diese Bibliothek muss über den Bibliotheksverwalter eingebunden werden. Ist dies geschehen, steht der Baustein als Funktionsblock zur Verfügung. Er wird als solcher im Deklarationsteil des Programms instanziert.


PROGRAM MAIN_USV
VAR
    USV : FB_CX1000UPSHANDLING;
END_VAR

Im Programm erfolgt dann der Aufruf mit den Parametern. Es gibt sieben Parameter für diesen Funktionsblock:

Mit "bAutoReset" wird das CX10x0-System nicht abgeschaltet, wenn die Spannung rechtzeitig (Einstellung unter "tDelay") wiederkehrt. Ist dieses Verhalten erwünscht, so muss der Eingang auf "TRUE" gelegt werden. Wie bei dem anderen Modul auch, kann mit "bDIPDisable" die Stellung des Drehschalters übergangen werden (Eingang auf "TRUE"). Es wird dann ebenfalls der Wert verwendet, der unter "iDischargeLevel" eingestellt ist, verwendet. Mit "bShutdown24V" wird die 24V Spannung abgeschaltet. Achtung! "bShutdown5V" wird zur Zeit nicht verwendet. Dieser Eingang muss immer auf "FALSE" gesetzt sein! Es ist aber ausreichend ihn zu ignorieren, da er mit "FALSE" initialisiert wird. "iDischargeLevel" gibt die Entladekapazität der USV an. Der Wertebereich geht von 0 bis 9, wobei z.B. 3 mit Schalterstellung 3 korrespondiert und heißt, dass die USV nach Verlust von 30% der Kapazität abschaltet. Mit "TDelay" wird die Haltezeit angegeben, bevor Stop bzw. Shutdown durchgeführt wird. Der Schalter "bTcStopOnly" wird für das Schreiben der persistenten Daten bei dem Betriebsystem "Microsoft Windows CE" benötigt. Ein Shutdown führt zum Reboot des Systems. Für das Schreiben der persistenten Daten ist aber ein TwinCAT-Stop notwenig. Dieses Stopsignal wird mit dem Eingang "bTCStopOnly" gesetzt ("bTcStopOnly" := "TRUE"). Bei "Microsoft Windows XP embedded" bewirkt ein Shutdown das Schreiben der persistenten Daten. Der Schalter wird also nicht benötigt (bTcStopOnly = FALSE).

Der Aufruf sieht dann wie folgt aus:


USV(
    bAutoReset := TRUE; (* TRUE für Weiterbetrieb bei Wiederkehr der Spannung)
    bDIPDisable := TRUE;    (* TRUE für DIP-Schalter override *)
    bShutdown24V := FALSE;(* nur dann TRUE, wenn Abschaltung erwünscht -> alles AUS !!! *)
    bShutdown5V := FALSE;(* NICHT BENUTZEN ---> Reservierte Funktion *)
    iDischargeLevel := 3; (* Werte von 0,1, ... 9 *)
    bTcStopOnly := TRUE;    (* Bei WINDOWS CE zur Sicherung der persistenten Daten sonst FALSE*)
    tDelay     := t#5s; (* Haltezeit vor Shutdown *)
);

Auch dieser Funktionsblock benötigt zu seiner Funktion weitere Variablen. Sie werden im System Manager von TwinCAT mit Signalen aus der USV verbunden. Diese Variablen müssen noch angelegt werden. Dies geschieht automatisch beim Einlesen des Prozessabbildes im den System Manager. Bei der Verknüpfung werden die Adressen in der Datei "TwinCAT_Configuration" abgelegt und beim nächsten Compileraufruf eingebunden. (Eine genaue Beschreibung kann in der TwinCAT-Beschreibung nachgeschlagen werden.) Alternativ kann man die Adressen von Hand vergeben. Nach dem Übersetzen werden Warnungen für die fehlende Konfiguration der Signale angezeigt. Unter dem Menüpunkt "Einfügen -> Alle Instanzen" werden in der Datei "Variablen_Konfiguration" die Signale eingefügt. Hier können dann die Adressen für die Signale eingegeben werden. (z.B. MAIN.USV.Li24VState AT %IB0 : BYTE für Speicheradresse 0).


VAR
    MAIN.USV.Ii24VState AT %IB0 : BYTE;
    MAIN.USV.IiChargeState AT %IB1 : USINT;
    MAIN.USV.QiControl AT %QB0     : BYTE;
    MAIN.USV.QiDipControl AT %QB1 : USINT;
    MAIN.USV.IbPowerFault AT %I : BOOL;

END_VAR

Für die Auswertung im Programmumfeld liefert der Baustein einige Statussignale. Diese können dann zur Steuerung, z.B. Sichern der Prozessdaten ins NOVRAM, oder Einstellen von definierten Zuständen oder Positionen für Achsen, benutzt werden. Im Einzelnen liefert der Baustein folgende Signale:

"bPowerFailure" liefert "TRUE", wenn ein Spannungsausfall der Versorgungsspannung erkannt wird. Bei Wiederkehr der Eingangsspannung wechselt das Signal wider auf "FALSE".

"bShutdownActive" signalisiert wenn ein Stop bzw. Shutdown ausgeführt wird.

"bUpsReady" signalisiert, dass die USV die Ausgangsspannung bereitstellt.

"b24VInOK" meldet die Versorgung der USV mit 24V-Eingangsspannung.

Der Funktionsbaustein lässt dem SPS-Programm volle Kontrolle über das Verhalten der USV. Je nach Betriebsmodus muss der Entwickler Sorge tragen, dass sich das System beim Abschalten in dem gewünschten Zustand befindet, bzw. dass das System beim Neustart korrekt verhält. Probleme die auftreten könnten sind z.B:System ist angehalten, die USV liefert aber wieder Spannung -> System steht, obwohl Spannungsversorgung anliegt.System startet wieder, die USV ist aber noch in der Entladephase und schaltet erst bei vollständiger Entladung ab -> System läuft an geht dann aber unvermittelt aus.