Diagnose im SPS-Programm
Zur Analyse des Klemmbus (K-Bus und IP-Link) kann auf die in der Architektur beschriebenen Register über TwinCAT von einem SPS-Programm zugegriffen werden. Dazu muss die Klemmbusanbindung auf erweitertes DPRAM Model geschaltet (Firmware > B3) sein. Mit diesen Einstellungen wird in TwinCAT das erweiterte Registermodell aktiviert.
Die einzelnen Register, die in der Architekturbeschreibung erklärt sind sind als SPS-Datentypen verfügbar. Im folgenden wird die Fehleranalyse als Beispiel vorgestellt. Die Vorgehensweise ist für beide Sub-Busse identisch, daher wird in den Beschreibungen die Signale nur allgemein erklärt.
Für die Fehleranalyse werden im Wesentlichen vier Signale/Variablen benötigt:
- BusState (gibt den Zustand des Busses an: 0 -> kein Fehler, 1 -> Busfehler)
- ErrorCode (entspricht dem Errorcode beim Blinkcode der DiganoseLEDs)
- ErrorArg (entspricht dem Argument-Code beim Blinkcode der DiganoseLEDs)
- Request[0] (Ausgang zum Anfordern / Rücksetzen des Busses)
In dem SPS-Programm müssen dazu analog externe Variablen angelegt werden:
VAR
k_bus_request AT %QX0.0 : BOOL;
k_bus_err_code AT %IB0 : USINT;
k_bus_err_arg AT %IB1 : USINT;
k_bus_state AT %IB2 : USINT;
ip_bus_request AT %QX0.1 : BOOL;
ip_bus_err_code AT %IB3 : USINT;
ip_bus_err_arg AT %IB4 : USINT;
ip_bus_state AT %IB5 : USINT;
END_VAR
In dem SPS Programm kann dann der Fehler wie folgt bestimmt werden (es handelt sich hier um Pseudocode, der so direkt nicht lauffähig ist)
....
IF k_bus_state = 1 THEN (* auf dem K-Bus ist ein Fehler aufgetreten *)
k_bus_request := TRUE; (* Anfordern der Fehlerwerte für die Register ErrCode und ErrArg *)
CASE k_bus_err_code OF
0 : return; (* Sollte nicht vorkommen, da ja Fehler vorliegt *)
1 : CASE k_bus_arg OF
0 : melde Fehler; (* EEPROM Prüfsummenfehler *)
1 : melde Fehler; (* Überlauf im Code Buffer *)
2 : melde Fehler; (* Unbekannter Datentyp *)
END_CASE;
2 : CASE k_bus_arg OF
0 : melde Fehler; (* Programmierte Konfiguration, falscher Tabelleneintrag *)
ELSE melde Fehler; (* Falscher Tabelleneintrag *)
END_CASE;
3 : melde Fehler (* K-Bus_Kommandofehler *)
4 : CASE k_bus_arg OF
0 : melde Fehler; (* Bruchstelle hinter dem Netzteil *)
ELSE melde Fehler; (* Bruchstelle hinter Busklemme 'k_bus_arg' *)
END_CASE;
5 : melde Fehler (* K-Bus-Fehler bei Register-Kommunikation mit Busklemme 'k_bus_arg' *)
9 : CASE k_bus_arg OF
0 : melde Fehler; (* Checksummenfehler im Programm-Flash *)
ELSE melde Fehler; (* Die Busklemme 'k_bus_arg' stimmt nicht mit der Konfiguration, die beim Erstellen des Boot-Projektes existierte, überein*)
END_CASE;
14 : melde Fehler (* 'k_bus_arg'-te Busklemme hat das falsche Format *)
15 : melde Fehler (* Anzahl der Busklemmen stimmt nicht mehr*)
16 : melde Fehler (* Länge der K-Bus-Daten stimmt nicht mehr*)
END_CASE
k_bus_request := TRUE; (* Rücksetzen des Busses, wenn Fehler beseitigt, dann startet der Klemmbus wieder *)
....
Damit die Steuerung und die Register zusammen arbeiten, müssen sie im System Manager verknüpft werden. Bindet man das SPS-Programm im System Manager ein, so ergeben sich folgende Signale:
Analog sind in System Manager die Register für die Klemmbusse angezeigt:
Mit Hilfe der Maus werden die Signale
k_bus_err_code mit ErrorCode
k_bus_err_arg mit ErrorArg
k_bus_state mit BusState
und
k_bus_request mit Request[0]
verknüpft. Analog werden die Signale für den IP-Link verknüpft:
ip_bus_err_code mit ErrorCode
ip_bus_err_arg mit ErrorArg
ip_bus_state mit BusState
ip_bus_request mit Request[0]
Sind alle Signale verknüpft, können Sie die Konfiguration und das SPS-Programm auf die Steuerung laden.
Firmware > B7
Mit der neuen Firmware B7 ist es möglich diese Diagnose zu vereinfachen. Bei der oben beschriebenen Lösung wird der Fehlercode beim Auslesen beseitigt, wenn der Grund für den Fehler nicht mehr besteht. In der Firmware Version > B7 ist es möglich den Fehlercode und das Fehlerargument sofort in die entsprechenden Register eintragen zu lassen. Dies geschieht durch das Setzten des Bit 4 im GCB. Für die Fehlerdiagnose ist es empfehlenswert das Bit 4 gleich in der Initialisierung der Fehlerroutine oder des SPS-Programms zu setzen. Die Verknüpfung des Bits in der SPS erfolgt dann mit dem Bit 4 im Request-Feld des GCB.