KUKA RSI XML

  • Hallo zusammen,


    Ich bin Student und neu in diesem Forum. Ich hoffe ihr könnt mir weiterhelfen.
    Ich habe einen Roboter von KUKA KR 30-3 mit KRC2 und RSI. Ich habe in C# eine Applikation geschrieben und möchte möchte den Roboter direkt über Ethernet mit einer externen Applikation ansteuern. Soweit funktionert das auch ganz gut solange ich Positionen senden.
    Allerdings möchte ich jetzt direkt die Roboterachsen mit Soll-Winkeln ansteuern. Laut RSI-Doku nehmen die Befehle ST_SKIPPTP, ST_SKIPLIN etc. nur Positionsdaten an. Gibt es eine Möglichkeit trotzdem direkt die Achsen anzusteuern?


    :huh:


    Hier mein Code wie ich mir das vorgestellt hatte:


    DEF Drive_Path( )


    DECL RSIERR Ret
    DECL INT hEthernet
    DECL INT hMap2Prea1,hMap2Prea2,hMap2Prea3,hMap2Prea4,hMap2Prea5,hMap2Prea6,hMap2Pint1


    ;FOLD INI
    ;FOLD BASISTECH INI
    GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
    INTERRUPT ON 3
    BAS (#INITMOV,0 )
    ;ENDFOLD (BASISTECH INI)
    ;FOLD USER INI
    ;Make your modifications here


    ;ENDFOLD (USER INI)
    ;ENDFOLD (INI)


    HALT
    ; The current position will be used as SAK movement!
    PTP XHOME


    ;-----------------------------------------------------------
    ; Create RSI Object ST_Ethernet, read object configuration .../INIT/ERXConfig.xml
    Ret = ST_ETHERNET(hEthernet,0,"DrivePath.xml")



    ;Set Ethernet Parameters
    Ret = ST_SETPARAM(hEthernet,eERXFastCycle,0) ;Set to false (12ms)
    Ret = ST_SETPARAM(hEthernet,eERXmaxLatePackages,200) ;Set to 200 Packets
    ;ST_SETPARAM(hEthernet,eERXmaxLateInPercent,10)
    ;ST_SETPARAM(hEthernet,eERXFmaxFieldOfView,1000)
    ;ST_SETPARAM(hEthernet,eERXerrorFlag,99)
    ;ST_SETPARAM(hEthernet,eERXprecision,4)
    ;-----------------------------------------------------------


    RET=ST_MAP2SEN_PREA(hMap2Prea1,0,hEthernet,1,1)
    RET=ST_MAP2SEN_PREA(hMap2Prea2,0,hEthernet,2,2)
    RET=ST_MAP2SEN_PREA(hMap2Prea3,0,hEthernet,3,3)
    RET=ST_MAP2SEN_PREA(hMap2Prea4,0,hEthernet,4,4)
    RET=ST_MAP2SEN_PREA(hMap2Prea5,0,hEthernet,5,5)
    RET=ST_MAP2SEN_PREA(hMap2Prea6,0,hEthernet,6,6)
    RET=ST_MAP2SEN_PINT(hMap2Pint1,0,hEthernet,7,1)


    RET=ST_ON1(#WORLD,1)


    WHILE $SEN_PINT[1]==0


    PTP_AXIS()


    ENDWHILE


    HALT


    END
    DEF PTP_AXIS()
    E6AXIS fTARGET
    fTARGET.A1=$SEN_PREA[1]
    fTARGET.A2=$SEN_PREA[2]
    fTARGET.A3=$SEN_PREA[3]
    fTARGET.A4=$SEN_PREA[4]
    fTARGET.A5=$SEN_PREA[5]
    fTARGET.A6=$SEN_PREA[6]
    ST_SKIPPTP(fTARGET)
    END


    DEF LIN_AXIS()
    E6AXIS fTARGET
    fTARGET.A1=$SEN_PREA[1]
    fTARGET.A2=$SEN_PREA[2]
    fTARGET.A3=$SEN_PREA[3]
    fTARGET.A4=$SEN_PREA[4]
    fTARGET.A5=$SEN_PREA[5]
    fTARGET.A6=$SEN_PREA[6]
    ST_SKIPLIN(fTARGET)
    END



    Vielen Dank schon im Voraus,
    Santiago

  • Schritt für Schritt zum Roboterprofi!
  • Mach doch einfach


    Code
    PTP fTarget


    Die SKIP / RET Funktionen muss ja nicht unbedingt nehmen. Die führen auch nur eine LIN/CIRC/PTP aus, aber es ist halt noch fertige Funktionalität zum Abbrechen der Bewegung mit drin.

  • Das hat geklappt danke.. :biggrins:


    Allerdings habe ich dann keine Kontrolle darüber, ob er alle Punkte anfährt die ich ihm sende. :(
    solange er am fahren ist ignoriert er alles was über Ethernet reinkommt...

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