Eigene Fehlermeldungen

  • Hallo zusammen,

    ich suche nach einem Weg, eigene Fehlermeldungen (samt Stopp etc.) in der Statuszeile des Robots aus KAREL heraus auszugeben. Wenn möglich mit eigener Facility, Nummer, Text und Severity.

    Bspw: PLX-101 Part not found.

    Weiß jemand wie ich ein eigenes Fehler-Dictionary erstellen kann, welches ich in einen Roboter laden kann? Meine hierzu mal etwas gelesen zu haben, aber finde leider keinen Link mehr.

    Ich kenne sowas bereits aus Customs (bspw. für GM oder VW), daher muss es ja einen Weg geben.


    Bisher habe ich mich mit Useralarms versucht (siehe UAlarm auslösen aus Karel heraus mit Post_Err) und dort auch einen mehr schlechten als rechten Workaround mir zurecht gebaut. Auch hier wäre ein Weg, die UAlarms ohne diese unbeschrifteten Parameter ausgeben zu können gut.


    Bin für Hinweise und Ratschläge sehr dankbar.


    Beste Grüße

    Kai

  • ANZEIGE
  • Hey grob gesagt musst du dir eine eigene Dictionary Datei erstellen und diese dann mit der Karel Routine ADD_DICT einfügen/aktivieren. Dann kannst du ein kleines Karel Programm schreiben in dem du dir die gewünschten Parameter zur Fehlermeldung übergibst ( Facility, Nummer, Text und Severity).

    Die liest du dann mit GET_TPE_PRM aus und übergibst die wiederum POST_ERR um dann letztendlich die Fehlermeldung zu generieren...

  • So generell hab ich das auch verstanden. Ich scheitere gerade an dem WIE. Also wie schreibe ich eine Dict, die eben solche Fehlermeldungen beinhaltet.

    Du hast nicht zufällig ein kleines Beispiel? 🙈

  • Ja das habe ich.

    Aber noch bin ich nicht so recht dahinter gestiegen was das Thema Dictionary und Fehlermeldungen angeht.

  • Ok also du benötigst 3 dateien und alles in reihenfolge 1-3 ausrühren




    1.) dein dictionary.




    --------------------------------------------------------------------------------------------------------------------


    $1- &bg_yellow &fg_red "%s" &new_line *parameter will be included in error_code’s message if %s is specified in the dictionary text*






    --------------------------------------------------------------------------------------------------------------------


    Speichere das mit dem namen kalmdictionary.utx ab und konvertiere via roboguide zu .tx datei --> nur .tx dateien können von ADD_DICT gelesen werden

    du kannst auch einen anderen namen benutzen für das dictionary und dann um schritt 2 beim hinzufügen halt anpassen

    In meinem beispiel greife ich über den usb slot auf das dictionary zu also in roboguide in den UT1 ordner legen oder am realen robi halt via usb stick






    2.) Füge dein Dictionary auf deinem Robi hinzu



    ------------------------------------------------------------------------------------------------------------


    PROGRAM ADD_DICTIONARY

    %COMMENT = 'add_dic'

    %ALPHABETIZE

    %NOLOCKGROUP




    VAR


    status : INTEGER





    BEGIN




    ADD_DICT('UD1:\KALMDICTIONARY' ,'KALM',DP_DEFAULT,DP_DRAM,STATUS)



    IF status <> 0 THEN


    WRITE TPPROMPT('ADD_DICT failed, STATUS= ',STATUS,CR)

    ABORT -- Without the dictionary this program can not continue.




    ELSE


    WRITE TPPROMPT('DIC already loaded in system, STATUS= ',STATUS,CR)



    ENDIF




    END ADD_DICTIONARY




    ------------------------------------------------------------------------------------------------------------


    Speichere das als .kl datei ab und konvertiere es via Roboguide zu .pc, dann auf dem roboter mit CALL befehl ausführen und das dictionary wird hinzugefügt






    3.)




    PROGRAM test_posterr

    %COMMENT = 'post err'

    %NOLOCKGROUP

    %INCLUDE KLIOTYPS

    %INCLUDE klevccdf


    VAR


    error_code :INTEGER

    parameter :STRING[15]

    cause_code :INTEGER

    severity :INTEGER




    BEGIN


    error_code = 122001 --nummer um auf KALM Alarm Code zugreifen zu können,KALM ist für USER Specified Alarm Post

    parameter= 'fehlerxy' -- deine letztendliche fehlermeldung

    cause_code= 0

    severity = 0 -- 0 : WARNING, no change in task execution, 1 : PAUSE, all tasks and stop all motion, 2 : ABORT, all tasks and cancel




    POST_ERR(error_code, parameter, cause_code, severity)








    END test_posterr






    -------------------------------------------------------------------------------------


    Speichere das als .kl datei ab und konvertiere es via roboguide zu .pc, dann wieder über dein roboter aufrufen und die gewünschte fehlermeldung wird erscheinen. Ist halt hartcodiert. Wenn du das variabel machen willst mit dem text und der severity etc. dann am besten mit parameterübergabe und abruf der parameter mittels GET_TPE_PRM

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