achs-position von extern vorgeben

  • hallo
    hab da mal ein kleines problem.
    ich möchte eine bestimmte position über ein TP vorgeben.
    der robi fährt immer den gleichen ablauf nur die position soll änderbar sein.
    wie kann ich den wert zum robi schicken und wie lege ich dort eine variable an ( vermute mal das ich das machen muß) in die ich den wert reinschicke.


    bsp. der robi fährt einen rahmen ab dessen pos sich ändert wobei der rahmen gleich bleibt.


    müsste also im X lin zwischen +50 / -50 mm anfahren. den wert selbst über die eingabe am TP ändern


    danke schonmal

  • Schritt für Schritt zum Roboterprofi!
  • Variable ganz "normal" im Programm anlegen
    PERS num nXVerschiebung:=0;


    An gewünschter Stelle im Programm mit dem Befehl Verschiebung abfragen
    TPReadNum nXVerschiebung, "Verschiebung in X-Richtung eingeben";

    die Verschiebung in der Bewegung verarbeiten
    MoveL Offset(pPosition,nXVerschiebung,0,0), v50, fine, tGreifer\WObj:=wRahmenOrginal;


    oder direkt Werkobjekt verschieben in dem der Rahmen abgefahren wird
    In Werkobjekt wRahmenOrginal ist der Rahmen in Orginalposition vermessen
    ! Initialisieren
    wRahmenVerschoben:= wRahmenOrginal;
    ! Verschiebung
    wRahmenVerschoben.trans.x:=wRahmenVerschoben.trans.x + nXVerschiebung

    oder den oframe des Orginalwerkobjektes verschieben


    Bewegung
    MoveL pPosition, vlangsam, fine, tGreifer\WObj:=wRahmenVerschoben;

    fertig

  • Kein Problem, nicht schlimm, es zählt dass du helfen wolltest.
    Mir stellt sich die Frage, was ist ein "externer TP"?


    Gruß
    Twister

    Kleinere Wunder werden sofort erledigt... größere nach der Mittagspause...

  • Denke, mit "TP" meint er TeachPanel, also bei KUKA das KWB oder KCP.

    Wolfram (Cat) Henkel

    never forget Asimov's Laws at the programming of robots...

    "Safety is an integral part of function. No safety, no production. I don't buy a car without brakes."


    Messages und Mails mit Anfragen wie "Wie geht das..." werden nicht beantwortet.

    Diese Fragen und die Antworten interessieren jeden hier im Forum.


    Messages and Mails with questions like "how to do..." will not be answered.

    These questions and the answers are interesting for everyone here in the forum.

  • Ok, klingt logisch.


    Dann würde ich vorschlagen dass er über die Variablentabelle von "extern" Änderungen durchführen kann.


    Anzeige->Variable übersicht


    Die Variable z.B. "frPos.X" kannst du in die Configmon.ini eintragen und dann bequem von "extern" ändern


    Die Position sollte in der $Config.dat deklariert sein
    DECL FRAME frPos = {0,0,0,0,0,0}


    Im Bewegungsprogramm könnte der Aufruf z.B. so aussehen.
    LIN frPos


    Gruß
    Twister

    Kleinere Wunder werden sofort erledigt... größere nach der Mittagspause...

    Einmal editiert, zuletzt von Twister ()

  • In der config.dat ein entsprechendes Signal und Variable definieren


    ; Vorgabe Verschiebung
    SIGNAL giVerschiebungX $IN[33] TO $IN[40]


    ;Verschiebung speichern
    INT nVerschiebung=0


    Im Programm zuweisen
    nVerschiebung=giVerschiebungX

  • joooo, das wär einer der einfachen wege...
    aber nicht so ohne weiteres für REAL-Varisblen geeignet.
    Bei +/-50mm könnte man eine 8-bit-zahl festlegen und einfach sagen 0-200 entspricht -50.0 bis 50.0. Er hätte dann ne auflösung von 0,5mm pro bit...

    Wolfram (Cat) Henkel

    never forget Asimov's Laws at the programming of robots...

    "Safety is an integral part of function. No safety, no production. I don't buy a car without brakes."


    Messages und Mails mit Anfragen wie "Wie geht das..." werden nicht beantwortet.

    Diese Fragen und die Antworten interessieren jeden hier im Forum.


    Messages and Mails with questions like "how to do..." will not be answered.

    These questions and the answers are interesting for everyone here in the forum.

  • und wie sage ich ihm auf welchen eingängen die zahl kommt
    muss doch sicherlich definieren ab welchen eingang und die länge


    sorry wie gesagt bin noch frischling und schwimm im kalten wasser schulungen kommen erst noch im juni


  • evtl dann für die 200-schritte:
    nverschiebung=giverschiebung/2-50.0

    Wolfram (Cat) Henkel

    never forget Asimov's Laws at the programming of robots...

    "Safety is an integral part of function. No safety, no production. I don't buy a car without brakes."


    Messages und Mails mit Anfragen wie "Wie geht das..." werden nicht beantwortet.

    Diese Fragen und die Antworten interessieren jeden hier im Forum.


    Messages and Mails with questions like "how to do..." will not be answered.

    These questions and the answers are interesting for everyone here in the forum.

    Einmal editiert, zuletzt von WolfHenk ()

  • jo.

    Wolfram (Cat) Henkel

    never forget Asimov's Laws at the programming of robots...

    "Safety is an integral part of function. No safety, no production. I don't buy a car without brakes."


    Messages und Mails mit Anfragen wie "Wie geht das..." werden nicht beantwortet.

    Diese Fragen und die Antworten interessieren jeden hier im Forum.


    Messages and Mails with questions like "how to do..." will not be answered.

    These questions and the answers are interesting for everyone here in the forum.

  • das hab ich in die config.dat geschreieben
    ;DECL XvonSPS $IN[100] TO $IN[107]
    ;DECL INT offset_x=0


    und das ins programm



    DECL XvonSPS=offset_x



    ;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 SPOTTECH INI
    USERSPOT(#INIT)
    ;ENDFOLD (SPOTTECH INI)
    ;FOLD GRIPPERTECH INI
    USER_GRP(0,DUMMY,DUMMY,GDEFAULT)
    ;ENDFOLD (GRIPPERTECH INI)
    ;FOLD USER INI
    ;Make your modifications here


    ;ENDFOLD (USER INI)
    ;ENDFOLD (INI)



    ;FOLD PTP HOME Vel=50 % DEFAULT;%{PE}%R 8.2.20,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:HOME, 3:, 5:50, 7:DEFAULT
    $BWDSTART=FALSE
    PDAT_ACT=PDEFAULT
    FDAT_ACT=FHOME
    BAS(#PTP_PARAMS,50)
    $H_POS=XHOME
    PTP XHOME
    ;ENDFOLD


    ;FOLD PTP p43 Vel=50 % PDAT30 Tool[1]:Greifer 1 Base[0];%{PE}%R 8.2.20,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:p43, 3:, 5:50, 7:PDAT30
    $BWDSTART=FALSE
    PDAT_ACT=PPDAT30
    FDAT_ACT=Fp43
    BAS(#PTP_PARAMS,50)
    PTP Xp43
    ;ENDFOLD
    ;FOLD PTP p44 Vel=50 % PDAT31 Tool[1]:Greifer 1 Base[0];%{PE}%R 8.2.20,%MKUKATPBASIS,%CMOVE,%VPTP,%P 1:PTP, 2:p44, 3:, 5:50, 7:PDAT31
    $BWDSTART=FALSE
    PDAT_ACT=PPDAT31
    FDAT_ACT=Fp44
    BAS(#PTP_PARAMS,50)
    PTP Xp44
    ;ENDFOLD


    ;FOLD SET GRP 1 State=CLO GDAT4;%{PE}%R 8.2.1,%MKUKATPGRP,%CGRP,%VGRP,%P 2:1, 4:2, 5:#NO, 6:GDAT4, 8:0, 10:0
    H50(GRP,1,2,GGDAT4)
    ;ENDFOLD
    ;FOLD WAIT FOR ( IN 2 'Greifer geschlossen' );%{PE}%R 8.2.20,%MKUKATPBASIS,%CEXT_WAIT_FOR,%VEXT_WAIT_FOR,%P 2:, 4:, 5:$IN, 6:2, 7:Greifer geschlossen, 9:
    WAIT FOR ( $IN[2] )
    ;ENDFOLD


    lin_rel {x=offset_x} ;;; hier soll auf den wert gefahren werden der von der SPS kommt


    lin_rel{y 800}


    vielleicht sieht ja jemand den Fehler ich leider nicht

  • Code
    und das ins programm
    
    
    
    
    DECL XvonSPS=offset_x


    falsch.
    da kein DECL rein, deklariert ist das ja schon in der config.dat


    Der Offset enthält hier NUR Positive werte. Du musst da noch ne kleine mathematik machen, damit du auch - fahren kannst. Siehe mein vor-voriger beitrag


    dann kommt

    Code
    lin_rel {x=offset_x}   ;;; hier soll auf den wert gefahren werden der von der SPS kommt


    probier mal
    lin_rel {x (offset_x)} ;;; hier soll auf den wert gefahren werden der von der SPS kommt

    Wolfram (Cat) Henkel

    never forget Asimov's Laws at the programming of robots...

    "Safety is an integral part of function. No safety, no production. I don't buy a car without brakes."


    Messages und Mails mit Anfragen wie "Wie geht das..." werden nicht beantwortet.

    Diese Fragen und die Antworten interessieren jeden hier im Forum.


    Messages and Mails with questions like "how to do..." will not be answered.

    These questions and the answers are interesting for everyone here in the forum.

  • funktioniert leider auch nicht
    kommt die fehlermeldg. "konstante erwartet"



    auf jeden fall muß man in der config.dat das ganze so schreiben


    SIGNAL offset_x $IN[100] TO $IN[107]
    DECL INT off_x=0



    das Wort SIGNAL muß noch davor sonst gehts nicht

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