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.

Diagnose im SPS-Programm 1:

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:

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:

Diagnose im SPS-Programm 2:

Analog sind in System Manager die Register für die Klemmbusse angezeigt:

Diagnose im SPS-Programm 3:

 

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:

 

Diagnose im SPS-Programm 4:

                     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.

Diagnose im SPS-Programm 5: