$VEL_AXIS $OV_PRO $VEL

  • Hallo Alle!


    Ich bin etwas verwirrt, was die Verwendung von $VEL_AXIS $OV_PRO und $VEL angeht.
    In dem Programm habe ich nen berechneten Punkt, den ich mit ner gewissen Geschwindigkeit anfahren mächte. Also wollte ich mit $VEL ne Geschwindigkeit vorgeben. Allerdings tut sich da die Frage auf, was der Unterschied zwischen ner Dreh- und ner Schwenkgeschwindigkeit ist.


    Die zweite Frage ist: Wie wirkt die Verwendung von $VEL_AXIS und $OV_PRO zusammen? Und wo liegt der Unterschied in den %Zahlen? Weil 1%$VEL_AXIS ist NICHT das Gleiche wie 1%$OV_PRO.


    Ich hab da nix dolles gefunden, in der Doku, hat da wer ne Quelle?

    If you and DEAD people can read Hex, how many people can read Hex?

  • Schritt für Schritt zum Roboterprofi!
  • Sers,
    ich hoff jetzt mal, dass ich keinen Schmarrn schreib, weil ich kenn mich net wirklich aus.
    Die Geschwindigkeiten der Struktur $Vel beziehen sich alle auf den TCP


    Die Axis Geschwindigkeiten beziehen sich auf die max. Geschwindigkeiten der einzelnen Achsen.


    Mit dem Programm Override werden alle eingestellten Geschwindigkeiten noch mal reduziert.


    Wozu musst Du den das so genau wissen? Wen Du irgend nen Prozess mit dem Roboter machst, ist das eh ne Spielerei und du darfst die nicht vergessen das der Roboter ja auch nen weg zum beschleunigen und abbremsen braucht, ausser dem koennen Dich zu grosse/kleine Ueberschleifdistanzen auch noch bremsen.
    Also ich denke mach Dir mal nich so nen Kopf um die Werte, sondern schau einfach wie sich der Robi bewegt oder wennsn Porzess ist wie Dein Ergebnis aussaut, und optimiere so. Ach und mim Override zu optimieren is nich schoen, wenn Dus doch machst solltes Du ihn im Submitinterpreter staendig auf den richtigen Wert setzen, damit ihn Dir kein Bediener ueberschreibt.


    Elias

    IF ROBOTER_STEHT AND SPS_VORHANDEN THEN<br />&nbsp; WHILE NOT ROBOTER_LAEUFT<br />&nbsp; &nbsp; &nbsp; $LOOP_MSG[]=&quot;SPS IST SCHULD!&quot;<br />&nbsp; ENDWHILE<br />&nbsp; $LOOP_MSG[]=&quot;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;<br />ENDIF<br /><br />Geld ohne Arbeit! Keine Arbeit ohne Geld!

    Einmal editiert, zuletzt von elias ()

  • moin!


    also ich sehe das so (bin auch nicht hundert sicher):


    $OV_PRO ist der programm-override. das ist die prozentzahl ganz oben rechts. die idee ist, dass die immer auf 100% steht. ausser zu testzwecken. und dass man sie zu diesen testzwecken eben auch tiefer einstellen kann, setze ich den wert nirgends automatisch. falls man mit AUTO EXTERN arbeitet, kann man ja die betriebsart abfragen, und OV_PRO ausschliesslich im AutExt setzen. (man stelle sich vor, sie würde im T1 oder sogar T2 automatisch auf 100% gesetzt. das wäre sicherheitstechnisch indiskutabel...)


    $VEL_AXIS ist die aktuell eingestellte maximale achsgeschwindigkeit. wenn du per inline formular (jaja, ich weiss...) einen PTP mit 100% machst, ist auch jede $VEL_AXIS[n] auf 100%. bei 80% auf 80%...


    $VEL ist eine struktur: $VEL{CP REAL, ORI1 INT, ORI2 INT} (bin nicht ganz sicher)
    in CP ist die aktuell höchste linear-/cirkular-geschwindikeit gespeichert, analog zu $VEL_AXIS[n] für PTP-bewegungen. aber frag mich nicht, was es mit ORI1 und ORI2 auf sich hat...


    allerdings brauche ich diese variablen nie direkt. sie werden ja durch die teachpunkte beziehungsweise durch die $RED_VEL gesetzt. was da im hintergrund abläuft, ist eigentlich gar nicht so wichtig, solange es funktioniert :)


    ach ja... $OV_PRO wirkt sich auf alles aus, wobei LIN/CIRCs rein subjektiv stärker beeinflusst werden als PTPs. zum beispiel schalte ich, wenn ich im T2 teste, ständig um: für PTPs 30%, für LIN/CIRCs 100% (das sind nicht die werte für den ersten test ;) )

    &quot;When using vi the screen of your terminal acts as a window into the file which you are editing. Changes which you make to the file are reflected in what you see.&quot;<br />Bill Joy 1978

    Einmal editiert, zuletzt von rob ()

  • Es geht ja leider um das Anfahren von berechneten, nicht von geteachten Punkten. Bis lang regel ich die Geschwindigkeit mit $OV_PRO, will davon aber dringend weit weg, weil ich auch während dem Testlauf mit der Taste oben rechts die Geschwindigkeit regeln möchte.
    Jetzt verhalten sich aber weder $VEL noch $VEL_AXIS so wie ichs erwarte, sprich: Wenn ich bei $VEL_AXIS die gleiche Zahl eintrage wie bei $OV_PRO, fährt der viel schneller. Ich werde heute mal mit $VEL rumhantieren, aber bei meinen letzten Versuchen gab es da auch ein recht seltsames Verhalten.

    If you and DEAD people can read Hex, how many people can read Hex?

  • achso. also ich mach das immer so (keine ahnung ob das korrekt ist, aber es funktioniert):


    BAS( #VEL_CP, 2 ) ; regelt LIN/CIRC im m/s
    BAS( #VEL_PTP, 100 ) ; regelt PTP in %


    zu beachten ist, dass der wert bis zum nächsten ändern erhalten bleibt. gilt also für alle nachfolgenden bewegungen. AUCH gesetzt werden sie durch teachpunkte. mach mal einen teachpunkt mit FOLD öffnen auf, dann siehst du die zwei variablen, so hab ich sie auch entdeckt :)


    EDIT: BAS( ... ) ist natürlich eine funktion, keine variable. im R1/SYSTEM/BAS.SRC kannst du dir anschauen, wie genau das funktioniert. ist recht schön aufgebaut finde ich.

    &quot;When using vi the screen of your terminal acts as a window into the file which you are editing. Changes which you make to the file are reflected in what you see.&quot;<br />Bill Joy 1978

    Einmal editiert, zuletzt von rob ()

  • Sers,


    das macht doch keinen unterschied ob der Punkt geteached oder berechnet ist!


    Elias

    IF ROBOTER_STEHT AND SPS_VORHANDEN THEN<br />&nbsp; WHILE NOT ROBOTER_LAEUFT<br />&nbsp; &nbsp; &nbsp; $LOOP_MSG[]=&quot;SPS IST SCHULD!&quot;<br />&nbsp; ENDWHILE<br />&nbsp; $LOOP_MSG[]=&quot;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;<br />ENDIF<br /><br />Geld ohne Arbeit! Keine Arbeit ohne Geld!

  • elias: Leider doch, bei geteachten Punkten kann ich die Geschwindigkeit beim Teachen angeben, bei berechneten nicht. In E6POS gibts halt keinen Eintrag für die Geschwindigkeit.


    rob: Dankeschön, das löst das Problem!


    @alle: $VEL_AXIS scheint sich NUR auf PTP-Befehle auszuwirken.


    $OV_PRO ist nicht WIRKLICH in Prozent, denn 1% von 2m/s wären ja 0,02m/s, der ist bei $OV_PRO=1 aber viiiiiiiiel langsamer. Ist vielleicht logarithmisch skaliert oder was weiss ich. Für ne Geschwindigkeit die optisch der 1%igen recht hahe kommt benutze ich jetzt BAS(#VEL_CP, 0.001)


    Ist $VEL.CP vielleicht das Gleiche wie das BAS-Konstrukt? Ich bin mir nämlich nicht sicher, ob ich beim Testen der Befehle so strikt auf die Unterscheidung von PTP und LIN Befehlen geachtet habe. Ich dachte ganz blauäugig, der würde halt die derzeit geringste Geschwindigkeit nehmen, egal ob Achsspezifisch oder in m/s.

    If you and DEAD people can read Hex, how many people can read Hex?

  • Hallo,


    in einer Postion kannst Du die Geschwindigkeit ueberhaupt nicht angeben!!


    Die Geschwindigkeit kannst Du nur vor einem Bewegungssatz angeben. In den Inlineformularen wird auch immer vor dem Bewegungssatz die Geschwindigkeit angegeben!!! Du kannst nicht nur Punkte teachen, die mit Inlineformularen erzeugt wurden, sondern auch manuel deklarierte (ab der 5er Software benoetigst Du hierfuer ExpertTech), und genauso kannst Du Punkte in Inlineformularen berechnen (schau mal in die zugehoerige *.Dat rein da ist nur ein x vor dem Punktname), wozu ich Dir eh raten wuerde, denn anders kannst Du bei Tool, Base oder ipo_mode wechsel, den Bedienern ein ganz schoenes Ei legen (Satzanwahl).


    Die Bas ist uebrigens ein KRL-Programm, welches, glaub ich, im Ordner System zu finden ist. Da kannst Du ja mal reinschauen wenn Dich die Bewegungsparameter interessieren.


    Gruss Elias

    IF ROBOTER_STEHT AND SPS_VORHANDEN THEN<br />&nbsp; WHILE NOT ROBOTER_LAEUFT<br />&nbsp; &nbsp; &nbsp; $LOOP_MSG[]=&quot;SPS IST SCHULD!&quot;<br />&nbsp; ENDWHILE<br />&nbsp; $LOOP_MSG[]=&quot;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;<br />ENDIF<br /><br />Geld ohne Arbeit! Keine Arbeit ohne Geld!

  • jo


    $VEL_AXIS[n] bezieht sich sogar nur auf die angegebene achse. bei einer PTP bewegung nimmt die steuerung ja immer DIE achse als referenz, die den grössten weg zu fahren hat. die anderen werden dann genau so viel reduziert, dass sich alle vom anfang bis zum ende der bewegung bewegen, auch wenn sie nur 1° zu fahren haben. ich könnte mir vorstellen dass dadurch auch LIN/CIRC bewegungen betroffen sind, aber da müsste man wohl sehr kleine werte reinschreiben, hab ich aber nie ausprobiert, macht ja auch keinen sinn...


    und elias. du hast natürlich recht. was wir hier als teachpunkte bezeichnet haben, sind eigentlich bewegungsanweisungen. es hat einfach ne gewisse verbreitung, DIE teachpunkte zu nennen, und die berechneten, wie auch die mit "x" vornedran einfach nur punkte. das ist eigentlich falsch.


    dass ich keine inline formulare verwende hat einfach den grund, dass ich sie nicht mag, und dass es bei doppelgreifer systemen einfach unkomfortabler ist, grad wegen dem tool und base wechsel. wenn man die zwei einem programm übergibt, das dann einen punkt damit anfährt, kann man das viel kürzer und übersichtlicher halten. man kann das ganze dann ja, um den bedienern kein ei zu legen, einfach in einen fold stecken:


    (pseudo)


    ich will doch bei 5 bases und 2 tools nicht 10 punkte anlegen müssen. oder gibt's da ne tolle lösung? zum editieren dann einfach alle folds öffnen (was bei verwendung von inline formularen recht mühsam ist...)

    &quot;When using vi the screen of your terminal acts as a window into the file which you are editing. Changes which you make to the file are reflected in what you see.&quot;<br />Bill Joy 1978

    Einmal editiert, zuletzt von rob ()

  • Hups?
    Es wird die Achse als Referenz genommen, die den weitesten Weg hat? Ich dachte, es wird die gesamte Bewegung - also alle Achsen so weit gebremst, das die, die am langsamsten darf nicht zu schnell fährt. Morgen noch mal Doku wälzen, das ist ja nun nen großer Unterschied...

    If you and DEAD people can read Hex, how many people can read Hex?

  • Hallo,


    die Bewegung wird standardmaessig bestimmt durch die langsamste Achse - alle Achsen erreichen gleichzeitig den Zielpunkt.


    wie wohl jeder weiss beeinflusst die Steuerung abhaengig von den
    Werkzeuglastdaten die Beschleunigungen und Geschwindigkeiten.
    Aber nur, wenn mann auch bas.SRC verwendet.
    bas(#VEL_PTP,50) ist das selbe, wie:
    for ii= 1 to 6
    $vel_Axis[ii]=50
    $vel_axis[ii]=def_vel_ptp*$vel_axis[ii]/100
    endfor


    vel_cp ist nur gedeckelt (maximal Def_vel_cp) - wohl der Grund, das sich die Override
    Reduzierung nicht gleich auf PTP- und Linearbewegungen auswirkt.


    Sind die Werrikzeuglastdaten auf Default, weil nach dem
    bas(#initmov.. das Tool immer mit $tool=tool_data[1] gesetzt wird (und nicht mit bas.src)
    kann das schon einen Unterschied zwischen $ov_pro = 50 und $vel_axis[ii]= 50 bedeuten.


    Gruss Stefan

  • So, ich hab noch mal was, zum gleichen Thema: Ich möchte gerne eine Position anfahren und je nach den Daten eines analogen Einganges nebenher die Geschwindigkeit variieren. Ich möchte dafür NICHT $OV_Pro benutzen.
    Ebensowenig möchte ich mit Break und Resume arbeiten, da das dann eine stockende Bewegung würde.
    Zur Einstellung der Geschwindigkeit würde ich die SPS benutzen. Kann ich da $VEL einsetzen???

    If you and DEAD people can read Hex, how many people can read Hex?

  • Hallo KaiN,


    also ich habs mal mit office lite probiert (V4.1.6) probiert. $vel.cp laesst sich im SPS.sub nicht beschreiben. Die einfachste Moeglichkeit sehe ich in berechneten Zwischenpunkten, wo zu anfang immer die Gesscheindigkeit in Abhaengigkeit vom Analogwert geaendert wird. Damit mann ueberschleifen kann muessen es aber mehrere Pukte sein und nicht immer der selbe in einem Loop.


    Gruss Stefan

  • Also ich mach das so:


    GREIFPOS={x 0.0,y -400.0,z 0.0,a -114.21,b 89.33,c -158.70}
    GREIFPOS.Z=GREIF_H
    BAS (#VEL_CP,2.0 ) Verfahrgeschwindigkeit!
    BAS (#ACC_CP,100 ) Orientierungsgeschindigkeit wenn es Probleme mit der Sollbeschleunigung gibt!
    LIN GREIFPOS C_DIS


    .... das funzt!


    Zu deinem zweiten Problem muß ich morgen mal was probieren!


    Gruß Handschuh


  • So, ich hab noch mal was, zum gleichen Thema: Ich möchte gerne eine Position anfahren und je nach den Daten eines analogen Einganges nebenher die Geschwindigkeit variieren. Ich möchte dafür NICHT $OV_Pro benutzen.
    Ebensowenig möchte ich mit Break und Resume arbeiten, da das dann eine stockende Bewegung würde.
    Zur Einstellung der Geschwindigkeit würde ich die SPS benutzen. Kann ich da $VEL einsetzen???


    Wie wäre es damit, hab es gecheckt es funzt!


    CONFIG.DAT:
    SIGNAL SENSOR1 $ANIN[1] ;0-10Volt
    REAL GESCHWINDIGKEIT=1.0
    POS POS_1={x 0.0,y 0.0,z 0.0,a -48.5999985,b -89.4000015,c -88.0999985}


    SPS.SUB
    GESCHWINDIGKEIT=SENSOR1


    TEST.SRC


    ; position 1 calculate
    GESCHWINDIGKEIT=GESCHWINDIGKEIT*2 ; um auf die 2 Meter Verfahrgeschwindigkeit zu kommen
    POS_1={x -0.0,y 0.0,z 0.0,a -48.6,b -89.4,c -88.1}
    ; go to position 1
    BAS (#VEL_CP,GESCHWINDIGKEIT )
    BAS (#ACC_CP,100 )
    LIN POS_1 C_DIS



    ; position 2 calculate
    GESCHWINDIGKEIT=GESCHWINDIGKEIT*2
    POS_1={x -0.0,y 0.0,z 100.0,a -48.6,b -89.4,c -88.1}
    ; go to position 2
    BAS (#VEL_CP,GESCHWINDIGKEIT )
    BAS (#ACC_CP,100 )
    LIN POS_1 C_DIS



    ; position 3 calculate
    GESCHWINDIGKEIT=GESCHWINDIGKEIT*2
    POS_1={x -0.0,y 0.0,z 200.0,a -48.6,b -89.4,c -88.1}
    ; go to position 3
    BAS (#VEL_CP,GESCHWINDIGKEIT )
    BAS (#ACC_CP,100 )
    LIN POS_1 C_DIS


    Ich hoffe es hilft weiter!
    Gruß Handschuh #33

  • Erst mal vielen Dank für die Antwort. Das ist leider nicht ganz, was ich benötige. Ich möchte mit dem Roboter so lange gengen einen Gegenstand (Schaumgummi) fahren, bis eine bestimmte Kraft erreicht ist, dann wird er über einen INTERRUPT mit BRAKE und RESUME getsoppt. Ich würde gerne je näher die Aktuelle der gewünschten Kraft kommt, langsamer fahren.
    Nun steigt der Roboter aber komplett aus, wenn BRAKE aufgerufen wird, ohne das der Roboter fährt, was beim Aufteilen in Teilstrecken ja passieren kann.
    Ausserdem weiss ich nie, wie Weit ich fahren muss und kann die Gesamtstrecke also nicht in sinnvolle Teilstücke aufteilen.
    Sprich: Ich suche ne Methode den Roboter zu verlangsamen, ohne Teilstrecken, mitten bei der Fahrt.
    Darf ich BAS aus nem Interrupt heraus aufrufen?

    If you and DEAD people can read Hex, how many people can read Hex?

  • Wie wäre es damit?


    CONFIG.DAT:
    SIGNAL SENSOR1 $ANIN[1]
    REAL GESCHWINDIGKEIT=0.5
    REAL GESCHWINDIGKEIT_2=1.0
    REAL VERGLEICH=1.0
    POS POS_1={x 0.0,y -500.0,z 0.0,a -52.2999992,b 89.4000015,c -96.5999985}
    POS POS_2={x 0.0,y -500.0,z 0.0,a -52.2999992,b 89.4000015,c -96.5999985}


    SPS.SUB
    GESCHWINDIGKEIT=SENSOR1
    GESCHWINDIGKEIT_2=GESCHWINDIGKEIT*2


    TEST.SRC


    $BASE=BASE_DATA[1] ;Base 1 aktivieren
    $TOOL=TOOL_DATA[1] ;Tool 1 aktivieren


    ; position 1 calculate
    POS_1={x 0.0,y -500.0,z 0.0,a -52.3,b 89.4,c -96.6}
    ; go to position 1
    BAS (#VEL_CP,2 )
    BAS (#ACC_CP,100 )
    LIN POS_1


    REPEAT


    INTERRUPT DECL 100 WHEN GESCHWINDIGKEIT_2<>VERGLEICH DO SPEED ( )
    $ADVANCE=0
    INTERRUPT ON 100


    SUCHEN ( )


    $ADVANCE=3


    UNTIL GESCHWINDIGKEIT_2==0.1 ;solange bie Speed 0.1 oder Position erreicht


    HALT


    DEF SUCHEN ( )


    ; position 1 calculate
    POS_2={x 0.0,y 0.0,z 0.0,a -52.3,b 89.4,c -96.6}
    ; go to position 1
    BAS (#VEL_CP,GESCHWINDIGKEIT_2 )
    BAS (#ACC_CP,100 )
    VERGLEICH=GESCHWINDIGKEIT_2 ;speichern der Geschwindigkeit
    LIN POS_2



    END


    DEF SPEED ( )


    INTERRUPT OFF 100
    BRAKE
    RESUME
    INTERRUPT ON 100


    END



    Es funktioniert im Office_lite 4.1.6, aber in wie weit deine Bewegung ruckelt oder nicht, hab ich nicht probiert! ;)


    Ich hoffe es hilft weiter!
    Gruß Handschuh #33


  • Jetzt habe ich kurz gestutzt...und muß noch mal nachfragen:


    Ist bas(#VEL_CP,0.1) dasselbe wie $VEL.CP=0.1 ?


    Ich denke schon, oder?

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.


  • Hups?
    Es wird die Achse als Referenz genommen, die den weitesten Weg hat? Ich dachte, es wird die gesamte Bewegung - also alle Achsen so weit gebremst, das die, die am langsamsten darf nicht zu schnell fährt. Morgen noch mal Doku wälzen, das ist ja nun nen großer Unterschied...


    Die Bewegungen der einzelnen Achsen werden so synchronisiert (Synchron--PTP), daß alle Achsen die Bewegung gleichzeitig starten und beenden. Dies bedeutet, daß nur die Achse mit dem längsten Weg, die sogenannte führende Achse, mit dem programmierten Grenzwert für Beschleunigung undGeschwindigkeit verfährt. Alle anderenAchsen bewegen sich nurmit denBeschleunigungen undGeschwindigkeiten, die notwendig sind, um zumselben Zeitpunkt den Endpunkt der Bewegung zu erreichen, unabhängig von den in $VEL_AXIS[Nr] und $ACC_AXIS[Nr] programmierten .Werten.

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

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