Meldungstexte automatisch quittieren...

  • Hi Leute,


    ich habe mir eine routine geschrieben, mit der ich mir immer die richtige Meldung anzeigen kann.


    Siehe hier:


    Im Arbeitsprogramm:
    WHILE IN_AREA_FREE_AS == FALSE
    Check (132, TRUE, 22, 003)
    ENDWHILE


    Im Check:
    DEF Check (EINGANG: IN, STATUS: IN, ZEIT: IN, FEHLER_NR: IN)
    INT EINGANG, ZEIT, FEHLER_NR
    BOOL STATUS
    CHAR TEXT[26] ; max. 26 Zeichen


    ;Beispiel Aufruf:
    ;Check ($in[8], true, 5, 17)


    $TIMER[1] = 0 ; Timer initialisieren
    ZEIT = ZEIT * 1000 ; Zeit von sek nach ms umrechnen
    $TIMER_STOP[1] = FALSE


    WAIT FOR ($TIMER[1] >= ZEIT) OR ($IN[EINGANG] == STATUS)


    IF ($TIMER[1] >= ZEIT) AND ($IN[EINGANG] <> STATUS) THEN
    $TIMER_STOP[1] = TRUE ; timer anhalten

    ;Fehlermeldung auswerten/setzen
    SWITCH FEHLER_NR
    CASE 001
    ;Fehler 1
    TEXT[] = "Kein Werkstueck angewaehlt"
    usermessage (FEHLER_NR, TEXT[])
    DEFAULT
    ;Ungueltige Fehlernummer
    TEXT[] = "Ungueltige Fehlernummer"
    usermessage (FEHLER_NR, TEXT[])
    ENDSWITCH
    ENDIF
    $TIMER_STOP[1] = TRUE ; timer anhalten
    END


    Und im usermessage den Rest...:

    DEF userMessage (FNr:IN, Meldungstext:IN)
    INT FNr ; Fehlernummer aus dem Check() Programm
    CHAR Meldungstext[] ; Text aus dem Check() Programm - max. 26 Zeichen


    DECL KrlMsg_T Error_Msg
    DECL KrlMsgPar_T Par[3]
    DECL KrlMsgOpt_T Opt
    INT nHandle


    ;Fehlernummer an SPS uebertragen
    OUT_FNR_AN_SPS = FNr


    Error_Msg = { Modul[] "userfault", Nr 1, Msg_txt[] "Fehler-Nr. %1: %2" }


    ;%1 = FNr
    Par[1] = {par_type #value, par_int 0}
    Par[1] .par_int = FNr


    ;%2 = Meldungstext
    Par[2] = {par_type #value, par_txt[] " "}
    Par[2] .par_txt[] = Meldungstext[]


    Opt = { VL_Stop TRUE, Clear_P_Reset TRUE, Log_To_DB FALSE }


    nHandle = Set_KrlMsg (#quit, Error_Msg, Par[], Opt)


    ;Halt bei Taktende
    IF IN_HALT_TAKTENDE THEN
    ;FOLD OUT 144 'O_Halt_bei_Taktende' State=TRUE ;%{PE}%R 8.2.24,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:144, 3:O_Halt_bei_Taktende, 5:TRUE, 6:
    $OUT[144]=TRUE
    ;ENDFOLD
    HALT
    ;FOLD OUT 144 'O_Halt_bei_Taktende' State=FALSE ;%{PE}%R 8.2.24,%MKUKATPBASIS,%COUT,%VOUTX,%P 2:144, 3:O_Halt_bei_Taktende, 5:FALSE, 6:
    $OUT[144]=FALSE
    ;ENDFOLD
    ENDIF


    ;Fehler in SPS zuruecksetzen
    OUT_FNR_AN_SPS = 0


    END



    Soweit funktioniert das auch, allerdings kann es vorkommen, dass ich z.B. 20 Meldungen habe und die probleme sich selbst behoben haben, wie Bereichsfreigabe.


    Wie kann ich die Meldung nach beheben des Problems automatisch löschen? Gibt es da ne Möglichkeit?




    Gruß Tealmasta

  • Schritt für Schritt zum Roboterprofi!

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden