Wie den Status der CPU-LED "SF" abfragen?

Spud

Level-1
Beiträge
26
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
wie kann ich den Status der CPU-LED "SF" abfragen?

Der Grund:
Bei einer SPS sind einige Fehler-OB`s programmiert z.B. OB81, 82, 86 usw.
Das Programm erkennt auch ob es sich um ein kommendes oder gehendes
Ereignis handelt. Trotzdem kann es vorkommen das die SPS wieder
fehlerfrei läuft, obwohl ein Fehler OB ein gehendes Ereignis zu wenig
hat - Sprich die SPS denk es wäre noch ein Fehler vorhanden.

Der Status der SF-LED wäre da hilfreich.

Jemand eine Idee...?

Danke

Spud
 
Hallo Spud,

das ist möglich mit dem SFC51 "RDSYSST" (Auslesen einer SZL-Teilliste oder eines SZL-Teillistenauszugs).

MfG
Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei einer SPS sind einige Fehler-OB`s programmiert z.B. OB81, 82, 86 usw.
Das Programm erkennt auch ob es sich um ein kommendes oder gehendes
Ereignis handelt. Trotzdem kann es vorkommen das die SPS wieder
fehlerfrei läuft, obwohl ein Fehler OB ein gehendes Ereignis zu wenig
hat - Sprich die SPS denk es wäre noch ein Fehler vorhanden.

Denkt die SPS das oder die Merker, die in den OB's mal gesetzt worden sind und (wahrscheinlich) nicht richtig zurück-gesetzt worden sind ?

Da ich außer der Sache mit den Fehler-OB's keinen Trick kenne, den Status der LED abzufragen ... was ist der Hintergrund deiner Frage ...?

Gruß
LL
 
Denkt die SPS das oder die Merker, die in den OB's mal gesetzt worden sind und (wahrscheinlich) nicht richtig zurück-gesetzt worden sind ?

Da ich außer der Sache mit den Fehler-OB's keinen Trick kenne, den Status der LED abzufragen ... was ist der Hintergrund deiner Frage ...?

Gruß
LL

Die Merker denken das, da diese wahrscheinlich nicht richtig zurückgesetzt
werden weil ein gehendes Ereignis fehlt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... wie wertest du das denn aus ? FC125 oder FB125 oder etwas selbst-gestricktes ?

Das gehen oder kommen eines Ereignis?

Mit der Temp-Var im OB z.B.:

OB86_EV_CLASS für den ...ja OB86:ROFLMAO:

B#16#38 - gehend
B#16#39 - kommend

Funkioniert auch eingentlich einwandfrei. Nur eben wenn man
einen schweren Fehler (mehrer verschiedene) austestet, geht
etwas verloren...
 
... versuch doch mal den genannten Siemens-FC oder besser noch den FB ...
Vielleicht kommst du so weiter ... Das Auswerten der Ereignisse sollte allerdings auch funktionieren ... Stell doch mal den Auszug aus dem OB86 hier ein ...
 
Was wenn was verloren geht?

Hi möchte bei dem Eintrag von Larry kurz anhängen.
Ich habe das Problem das beim Aufstarten der Anlage der OB82 anhand eines kurz anstehen SF einmalig ansteht und ein Merker Bit gesetzt wird.
Nach folendetem Starten wird dieses jedoch nicht mehr zurück gesetzt.
Ist ja auch klar da der OB82 nicht bearbeitet wird.
Wie kann ich das umgehen.
Werte den Fehler direkt im OB82 aus mit Ev-Class 39

Denkt die SPS das oder die Merker, die in den OB's mal gesetzt worden sind und (wahrscheinlich) nicht richtig zurück-gesetzt worden sind ?

Da ich außer der Sache mit den Fehler-OB's keinen Trick kenne, den Status der LED abzufragen ... was ist der Hintergrund deiner Frage ...?

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

das ist möglich mit dem SFC51 "RDSYSST" (Auslesen einer SZL-Teilliste oder eines SZL-Teillistenauszugs)!

Code:
FUNCTION_BLOCK FB 1
TITLE =SPS SF u. BF LED auswerten
VERSION : 1.0


VAR_INPUT
  REQ : BOOL ;    //Anstoß der Bearbeitung
END_VAR
VAR_OUTPUT
  BUSY : BOOL ;    //Lesevorgang noch nicht abgeschlossen
  SPS_SF : BOOL ;    //Systemfehler
  SPS_BF : BOOL ;    //Busfehler
END_VAR
VAR
  TON_SPS_SF : SFB 4;    //Verz. SPS SF
  TON_SPS_BF : SFB 4;    //Verz. SPS BF
  System : STRUCT     
   LED_SF_Kennung : WORD ;    
   LED_SF_Zustand : BYTE ;    
   LED_SF_Blink : BYTE ;    
   LED_RUN_Kennung : WORD ;    
   LED_RUN_Zustand : BYTE ;    
   LED_RUN_Blink : BYTE ;    
   LED_STOP_Kennung : WORD ;    
   LED_STOP_Zustand : BYTE ;    
   LED_STOP_Blink : BYTE ;    
   LED_FORCE_Kennung : WORD ;    
   LED_FORCE_Zustand : BYTE ;    
   LED_FORCE_Blink : BYTE ;    
   LED_BF_Kennung : WORD ;    
   LED_BF_Zustand : BYTE ;    
   LED_BF_Blink : BYTE ;    
  END_STRUCT ;    
END_VAR
VAR_TEMP
  tSaveAr1 : DWORD ;    
  tSaveAr2 : DWORD ;    
  tWord : WORD ;    
  t_RetVal : INT ;    
  t_busy : BOOL ;    
  t_szl_header : STRUCT     
   l : WORD ;    
   n : WORD ;    
  END_STRUCT ;    
END_VAR
BEGIN
NETWORK
TITLE =Adressregister sichern

      TAR1  #tSaveAr1; 
      TAR2  #tSaveAr2; 

NETWORK
TITLE =Systemfehlerauswertung

      CALL SFC   51 (
           REQ                      := #REQ,
           SZL_ID                   := W#16#19,
           INDEX                    := W#16#0,
           RET_VAL                  := #t_RetVal,
           BUSY                     := #BUSY,
           SZL_HEADER               := #t_szl_header,
           DR                       := #System);

NETWORK
TITLE =Adresse System ermitteln

      TAR2  ; // Multiinstanz-DB-Offset
      LAR1  ; 
      L     P##System; // Basisadresse System laden
      +AR1  ; 

      L     DINO; // IDB aufschlagen
      T     #tWord; 
      AUF   DB [#tWord]; 

NETWORK
TITLE =SPS SF

      L     #System.LED_SF_Kennung; 
      L     W#16#1; 
      ==I   ; 
      U     DIX [AR1,P#2.0]; 
      =     #TON_SPS_SF.IN; 

      CALL #TON_SPS_SF (
           IN                       := #TON_SPS_SF.IN,
           PT                       := T#10S,
           Q                        := #TON_SPS_SF.Q,
           ET                       := #TON_SPS_SF.ET);

      U     #TON_SPS_SF.Q; 
      =     #SPS_SF; 

NETWORK
TITLE =SPS BF

      L     #System.LED_BF_Kennung; 
      L     W#16#B; 
      ==I   ; 
      U     DIX [AR1,P#18.0]; 
      =     #TON_SPS_BF.IN; 

      CALL #TON_SPS_BF (
           IN                       := #TON_SPS_BF.IN,
           PT                       := T#10S,
           Q                        := #TON_SPS_BF.Q,
           ET                       := #TON_SPS_BF.ET);

      U     #TON_SPS_BF.Q; 
      =     #SPS_BF; 

NETWORK
TITLE =Adressregister wiederherstellen

      LAR1  #tSaveAr1; 
      LAR2  #tSaveAr2; 

NETWORK
TITLE =KOP/FUB-BOX Ausgangssignal "ENO" auf TRUE

      SET   ; 
      SAVE  ; 

END_FUNCTION_BLOCK

REQ kann einfach auf TRUE gesetzt werden, wenn kein weiterer Aufruf von SFC51 im Programm erfolgt.

Gruss Daniel
 
Zurück
Oben