Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 12 von 12

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

  1. #11
    Registriert seit
    20.04.2008
    Ort
    Schaffhausen
    Beiträge
    87
    Danke
    10
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    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

    Zitat Zitat von Larry Laffer Beitrag anzeigen
    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
    Zitieren Zitieren Was wenn was verloren geht?  

  2. #12
    Registriert seit
    19.06.2005
    Ort
    in Bayern ganz oben
    Beiträge
    1.360
    Danke
    188
    Erhielt 372 Danke für 290 Beiträge

    Standard


    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
    Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie brauchte...

    OSCAT.lib Step 7

    Open Source Community for Automation Technolgy

    SPS-Forum Chat (Mibbit) | SPS-Forum Chat (MIRC)

Ähnliche Themen

  1. "Index Pulse", "Home Switch" und "Position Limit Switch"
    Von senmeis im Forum Antriebstechnik
    Antworten: 3
    Letzter Beitrag: 07.03.2011, 11:21
  2. Antworten: 0
    Letzter Beitrag: 31.01.2007, 13:53
  3. WinCC Variable auf "false" abfragen
    Von Nutellla im Forum HMI
    Antworten: 2
    Letzter Beitrag: 15.01.2007, 07:16
  4. Step 5 Operanden suchen im "Status Baustein"
    Von E-Marco im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 04.02.2005, 09:22
  5. Step5 Probleme mit "Status Variabel"
    Von Riedi1978 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 26.11.2004, 23:27

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •