Beiträge von MTownRobotics

    Hallo Zusammen,


    ich versuche gerade die Numerischen Register von einem Roboter über C# auszulesen. Das ganze funktioniert auch solange es ein Integer ist. Sobald im Register eine Gleitkommazahl steht wird eine exception geworfen.


    Codeauszug:

    var numRegister = (myRobot.RegNumerics[1].Value.RegLong);


    Wenn in Register 1 ein Integer steht also zb. 100 geht es. Wenn nicht dann kommt folgende meldung : System.Runtime.InteropServices.COMException: "Register value is not of Integer type."


    Macht Sinn da der Value halt kein Integer ist. Jetzt meine Frage.


    Weiß jemand wie ich auch Gleitkommazahlen auslesen kann ? Oder geht das nicht ?


    Liebe Grüße

    Hallo, ja das kannst du machen. Das Panel zeigt ja nur an. Gespeichert sind die ganzen Programme etc ja auf deinem Controller. Du musst halt schauen dass dein Panel Typ auch kompatibel ist mit dem Controller an dem du es anschließt. Panel Typ steht hinten auf den Panel drauf. Je nach dem was für ein Controller also iA, iB, iB+ etc brauchst halt unterschiedliche Panel Typen.

    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

    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...

    Hallo Zusammen, 2 Roboter von uns sind in einem Übergaberegal zu nah aneinander vorbei gefahren und beide sind mit dieser Meldung stehen geblieben.

    Kann mir jemand sagen wie die Meldung zustande kommt bzw wie/wer sie ausgelöst hat ?


    LG