robots industriels -ilian bonev-cours 02

Upload: ivan-avramov

Post on 04-Apr-2018

225 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/29/2019 Robots Industriels -Ilian Bonev-Cours 02

    1/21

    1

    GPA546Robots industriels

    Ilian Bonev, ing., Ph.D.Professeur, TS

  • 7/29/2019 Robots Industriels -Ilian Bonev-Cours 02

    2/21

    4

    Cours 2 : Rvision

    IRB 1600 - 5/1.45 type A IRC5 avec FlexPendant

  • 7/29/2019 Robots Industriels -Ilian Bonev-Cours 02

    3/21

    5

    Cours 2 : Rvision

    Mouvement des axes (tous les axes en position zro)

    (+180, 180)

    (+120, 90)

    (+65, 245)(+200, 200) ou 380 tours max !!!

    (+115, 115)

    (+400, 400) ou 576 tours max !!!

    Attention !

    Dans cette configuration, le robot esten singularit (axes 4 et 6 sont aligns)

    6

    Cours 2 : RvisionDANGER !

  • 7/29/2019 Robots Industriels -Ilian Bonev-Cours 02

    4/21

    7

    Cours 2 : Rvision

    8

    Cours 2 : Rvision

  • 7/29/2019 Robots Industriels -Ilian Bonev-Cours 02

    5/21

    9

    Cours 2 : Rvision Modlisation dune cellule

    Modlisation doutils

    Programmation interactive diteur RAPID

    Programmation MultiMove

    Simulation

    Cours 3 : Langage RAPID

  • 7/29/2019 Robots Industriels -Ilian Bonev-Cours 02

    6/21

    Structure dun programme en RAPID11

    MODULE MainModule

    PROC main()Rotuine1;Routine2;

    ENDPROC

    PROC Routine1()MoveL;

    ENDPROC

    PROC Routine2()MoveL;

    ENDPROCENDMODULE

    ModuleA.mod

    MainModule.mod

    Pick_and_Place_Cell_A.pgf

    MainModule.mod

    MODULE ModuleA

    PROC RoutineA1()

    MoveL;

    MoveL;

    ENDPROC

    ENDMODULE

    ModuleA.mod

    Exemple dun programme en RAPID12

    MODULE ExempleCONST robtarget A:=[[300,0,500],[0,1,0,0],[0,-1,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];CONST robtarget B:=[[0,300,500],[0,1,0,0],[0,-1,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];CONST tooldata tPince_bout:= [TRUE,[[0,0,233.37],[0.707107,0,0,0.707107]],

    [1.7,[12.2,0,158],[1,0,0,0],0.009,0.003,0.012]];

    PROC main()deplacer_piece;

    ENDPROC

    PROC fermer_pince()Set DO01_EE_PINCE01;

    ENDPROC

    PROC deplacer_piece()VAR num reponse;

    MoveJ A,v100,z5,tPince_bout\WObj:=wobj0;MoveL B,v800,fine,tPince_bout\WObj:=wobj0;

    WaitDI DI14_ZS0104, 1;fermer_pince;TPWrite "Le bloc est dans la pince. tes-vous satisfait?";TPReadFK reponse, "", stEmpty, stEmpty, stEmpty, "Oui", "Non";

    ENDPROC

    ENDMODULE

  • 7/29/2019 Robots Industriels -Ilian Bonev-Cours 02

    7/21

    Rgles de base13

    Chaque instruction se termine par un point-virgule

    (sauf FOR, IF, PROC, etc.). Une ligne commenant par ! ne sera pas interprte.

    RAPID nest pas sensible la casse, mais il est recommand dcriretous les mots rservs (VAR, PROC, etc.) en majuscules.

    Le premier caractre dun identificateur doit tre une lettre. Lesautres caractres peuvent tre des lettres, des chiffres ou _ . Lalongueur maximale est 32 caractres.

    RAPID est un langage structure non impose, ce qui signifie que lonpeut utiliser des espaces nimporte o sauf dans les identificateurs,les mots rservs, les valeurs numriques, et les marques derservation (, , etc.).

    Sortes de donnes14

    Trois sortes : constantes, variables et persistantes.

    Une constante reprsente une valeur statique et peut seulementrecevoir une nouvelle valeur manuellement.

    Une variable peut galement recevoir une valeur en coursdexcution du programme.

    Une persistante peut tre dcrite comme tant une variablepersistante. Lorsquun programme est sauvegard, la valeurdinitialisation reflte la valeur actuelle de la persistante.

    Exemples :CONST num Decalage := 200;CONST string auteur := "Jean Tremblay";CONST speeddata LowSpeed := [250,500,5000,1000];

    VAR bool PresenceTrou;VAR num N;VAR num maxno{10} := [1,2,3,4,5,6,7,8,9,10];PERS robtarget table := [[300,0,500],[0,1,0,0],

    [0,-1,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];

  • 7/29/2019 Robots Industriels -Ilian Bonev-Cours 02

    8/21

    Types de donnes15

    Trois types : atomic, record et alias.

    Un type de donnes est atomic (atomique) dans le sens ou il nest

    pas dfini en se basant sur un autre type et quil ne peut pas tredivis en parties ou composantes (bool, num, dnum et string).

    Un type de donnes record (denregistrement), est un type avecdes composantes ayant un nom et un ordre, par exemple pos. Unecomposante pourra tre soit du type atomic soit du type record.VAR pos pos1 := [200, 300, 150];VAR orient orient1 := [1, 0, 0, 0];VAR pose frame1;frame1:= [pos1,orient1];pos1.x := pos1.x + 20;frame1.trans.y := 300;

    Un type de donnes pseudonymes est, par dfinition, quivalent un autre type. Les types pseudonymes permettent de classer lesobjets de donnes. Par exemple, dionum est quivalent num.

    Routines16

    Trois types : procdures, fonctions et interruptions.

    Les procdures ne fournissent pas de valeur et sont utilises dansle contexte des instructions.

    Les fonctions fournissent une valeur dun type spcifique et sontutilises dans le contexte des expressions.

    Les routines dinterruption fournissent un moyen de grer lesinterruptions.

    Locales (LOCAL PROC routine1()) et globales (PROC routine2()).

    Quatre types de paramtres :PROC routine1(num in_par, INOUT num inout_par, VAR num var_par,PERS num pers_par)

    Exemple de fonction :FUNC num veclen(pos vector)

    RETURN SQRT(POW(vector.x,2)+POW(vector.y,2)+POW(vector.z,2));ENDFUNC

  • 7/29/2019 Robots Industriels -Ilian Bonev-Cours 02

    9/21

  • 7/29/2019 Robots Industriels -Ilian Bonev-Cours 02

    10/21

    Types de donnes : Records19

    robtarget : Dfinit la localisation dun rfrentiel doutil du robotpar rapport un autre rfrentiel, la configurations des axes du robot,et les axes externes. Les composantes :

    trans de type pos;

    rot de type orient;

    robconf de type confdata;

    extax de type extjoint(toujours [9E9,9E9,9E9,9E9,9E9,9E9] pour nos robots).

    PERS robtarget Retrait:=[[-306.31,517.44,768.63],[0.263201,-0.442148,-0.833986,-0.199236],[1,1,-3,0], [9E9,9E9,9E9,9E9,9E9,9E9]];

    Types de donnes : Records20

    orient : utilis pour les orientations.Lorientation est dcrite sous la forme d'unquaternion compos de quatre lments:q1, q2, q3 et q4, de type num.

    L'orientation doit tre normalise,c'est--dire que la somme des carrsdoit tre gale 1.

    Absolument non intuitives et difficiles utiliser!!!

    Ne jamais entrer une orientation en quaternions directement!

    Heureusement, il y a les fonctions suivantes :

    object.rot := OrientZYX(roll1, pitch1, yaw1);

    yaw2 := EulerZYX(\X, object.rot);pitch2 := EulerZYX(\Y, object.rot);roll2 := EulerZYX(\Z, object.rot);

    !Note : il y a 50% de probabilit que yaw2 yaw1, etc.

    yawyaw pitch

    rollroll

  • 7/29/2019 Robots Industriels -Ilian Bonev-Cours 02

    11/21

    x2

    y2z2

    180o

    x2

    y2

    z2

    180o

    x2

    y2

    z2

    180o

    x1

    y1

    z1

    -90o

    x1y1

    z1

    -90ox

    y

    zx2 y2

    z2

    180o

    x2y2

    z2

    180o

    x2

    y2

    z2

    180o

    x3

    y3z3

    90oxy

    z

    Angles dEuler21

    Applet JavaxR

    yR

    zR

    Yaw Pitch

    Roll

    Convention dangles dEuler utilise par ABB

    interprtation 1 : ZR (r) Y(p)

    X(w)interprtation 2 : XR (w) YR (p) ZR

    (r)

    Lordre des rotations est important!!!

    xRyR

    zR

    x

    y

    z

    90ox

    yz

    90o

    Exemple :

    w = 90o

    p = 90o

    r = 180o

    x1

    y1

    z1

    -90o

    Attention !Il y a 2 ou solutions [180o,180o]solution 1 : w, p, rsolution 2 : w 180o, 180o p, r 180o

    Types de donnes : Records22

    confdata : Configuration daxes du robot (cf1, cf4, cf6 et cfx). Dfini sousla forme de la rvolution de quart de cercle des axes 1, 4 et 6. Lapremire rvolution de quart de cercle positive allant de 0 90 estfixe 0, ensuite 1, 2, 3, etc., ou -1, -2, etc.

    Trs difficile utiliser!!! On peut ignorer la configuration avec

    ConfL \Off ou ConfJ \Off.

  • 7/29/2019 Robots Industriels -Ilian Bonev-Cours 02

    12/21

    Types de donnes : Records23

    La composante cfx est de 0 7.

  • 7/29/2019 Robots Industriels -Ilian Bonev-Cours 02

    13/21

    Types de donnes : Records25

    speeddata : permet de spcifier la vitesse laquelle le robot et lesaxes externes se dplacent. Les composantes :

    v_tcp : vitesse du point central de loutil (TCP) en mm/s; v_ori : vitesse angulaire du TCP, exprime en degrs/s;

    v_leax : vitesse des axes externes linaires en mm/s;

    v_reax : vitesse des axes externes rotatifs en mm/s;

    plusieurs vitesses prdfinies : v5, v10, , v6000, v5000, vmax.

    VelSet : permet de changer la vitesse programme(VelSet Override Max)

    AccSet : permet de changer lacclration.

    Types de donnes : Records26

    zonedata : permet de spcifier la faon dont une position doit tretermine, c'est--dire quelle distance de la position programme lesaxes doivent se trouver avant de se dplacer vers la position suivante.

    plusieurs points de passages prdfinies : z0, z1, , z200.

    point darrt : fine.

    75mm50mm

    fine

    fine

    fine

    z50

  • 7/29/2019 Robots Industriels -Ilian Bonev-Cours 02

    14/21

  • 7/29/2019 Robots Industriels -Ilian Bonev-Cours 02

    15/21

    Instructions de mouvement30

    MoveJ : permet de dplacer le robot rapidement dun point un autrelorsquil nest pas ncessaire que ce dplacement se fasse en lignedroite. Le robot et les axes externes se dplacent vers la destination lelong dune trajectoire non linaire.

    Chaque axe est dplac selon une vitesse daxe constante et tous lesaxes atteignent la destination en mme temps, ce qui rsulte en unetrajectoire Cartsienne non linaire.

    ConfJ \Off : le robot ne change pas la configuration des axes 1 3,mais il recherche la solution pour les axes 4 6 la plus proche de celledu dpart.

  • 7/29/2019 Robots Industriels -Ilian Bonev-Cours 02

    16/21

    Instructions de mouvement31

    MoveJ : permet de dplacer loutil du robot, dune pose une autre,en gardant le TCP le long dune trajectoire circulaire.

    CirPathMode : permet de slectionner diffrents modes derorientation de loutil au cours des mouvements circulaires.

    trs sensibles aux singularits (on peut utiliser SingArea \Wrist mais)

    exemple :

    MoveC p_int, p_final, v500, z30, tPince_bout;

    Instructions de mouvement32

    MoveAbsJ : permet de dplacer le robot vers une configuration donne,dfinie dans les positions daxes. Utilis lorsque cette configuration estsingulire.

    MoveJDO (ou MoveLDO) : MoveJ (ou MoveLDO) + le signal de sortie

    logique spcifi est mis 1/remis 0 au milieu du raccordement. CalcRobT : permet de calculer des donnes robtarget partir de

    donnes jointtarget.

    CalcJointT : permet de calculer les angles des axes du robot et des axesexternes partir de donnes robtarget spcifies.

    Offs : permet de dcaler la position dun robot dans le repre objet.(MoveL Offs(p2, 0, 0, 10), v1000, z50, tool1\WObj:=fixture;).

    RelTool : permet dajouter un dplacement et/ou une rotation, exprimdans le systme de coordonnes de loutil.(MoveL RelTool(CRobT,0,0,10 \Rz:=25), v1000, z50, tool1;).

  • 7/29/2019 Robots Industriels -Ilian Bonev-Cours 02

    17/21

    Systmes de coordonnes(Rfrentiels)

    33

    XF

    ZF

    YF

    Rfrentiel Poignet (tool0)

    YT

    XT

    ZT

    Rfrentiel Outil

    Z0

    Y0

    X0

    Rfrentiel Base

    ZR

    YR

    XR

    RfrentielAtelier

    tooldata tGun :=[TRUE,[[0,0,233.37],

    [0.707107,0,0,0.707107]],[1.7,[12.2,0,158],[1,0,0,0],0.009,0.003,0.012]];

    Systmes de coordonnes : wobj34

    ZR

    YR

    XRRfrentiel ATELIER

    wobj0

    X

    YZ

    uframeX

    Z

    Y

    oframe

    X

    Z

    Y

    uframeoframe

    =

  • 7/29/2019 Robots Industriels -Ilian Bonev-Cours 02

    18/21

    wobjdata : permet de dcrire lobjet de travail que le robot soude,excute, dans lequel il se dplace, etc. Les composantes :

    robhold : indique si le robot maintient lobjet de travail dans latche de programme rel (TRUE ou FALSE);

    ufprog : dfinit si un repre utilisateur fixe est utilis;

    ufmec : "";

    uframe : repre utilisateur (type pose, p/r wobj0);

    oframe : repre objet (type pose, p/r uframe);

    Exemples :

    Feuille := DefFrame(P_1,P_2,P_3);

    WobjFeuille.uframe := Feuille;

    WobjFeuille.oframe.trans := [100,130,0];

    WobjFeuille.oframe.rot := OrientZYX(90,0,0);

    Systmes de coordonnes : wobj35

    ZR

    YR

    XRRfrentiel ATELIER

    wobj0

    XYZuframe X

    ZYoframe

    Systmes de coordonnes : wobj36

    X1

    X2

    Y1

    X2

    X1

    Enregistre pourmmoriser les pointsde mesure (pour

    contrles ultrieurs)

    Y1

  • 7/29/2019 Robots Industriels -Ilian Bonev-Cours 02

    19/21

    Instructions I/O37

    SetDO : permet de changer la valeur dun signal de sortie digitale, avecou sans retard de synchronisation.(SetDO \SDelay := 0.2, DO01_EE_PINCE01, high;SetDO \Sync ,do1, 0;)

    Set (ou Reset) : mettre (remettre) un signal de sortie 1 (0).

    Pour lire la valeur dun signal dentre :

    IF DI09_ZS0101 = 1 THEN ...WaitDI DI09_ZS0101, 1;WaitDI diPresenceBloc,1 \MaxTime:=2000 \TimeFlag:=NoBloc;WHILE not TestDI(DI09_ZS0101) DO ...

    WaitTime : attendre un laps de temps donn en secondes.

    Synchronisation I/O38

    P40

    P30

    P20

    p10

  • 7/29/2019 Robots Industriels -Ilian Bonev-Cours 02

    20/21

    Contrle du programme39

    FOR : rptition un nombre donn de fois.

    FOR i FROM 1 TO 10 DO

    routine1;ENDFOR

    pas besoin de dclarer la variable du compteur ;

    cette variable est accessible uniquement lintrieur du boucle(par exemple, on ne peut pas utiliser i dans la routine routine1).

    Communication laide de TP40

    TPErase : permet deffacer lcran du FlexPendant.

    TPWrite : permet dcrire du texte sur le FlexPendant.

    (TPWrite "Max. TCP speed in mm/s for my robot ="

    \Num:=MaxRobSpeed();) TPReadFK : permet dcrire du texte sur les touches de fonction et

    dtecter la touche appuye.

    (TPReadFK reponse, "Encore?", stEmpty, stEmpty, stEmpty,"Oui", "Non"; o reponse est de num)

    TPReadNum : permet lire un nombre partir du FlexPendant.

    (TPReadNum reponse, "Nombre de blocs?";)

  • 7/29/2019 Robots Industriels -Ilian Bonev-Cours 02

    21/21

    Communication laide de linterface util.41

    UIMsgBox, UIMessageBox : permet crire un message sur le FlexPendant.

    UINumEntry : permet de lire une valeur numrique sur le FlexPendant.

    UINumTune : permet dajuster une valeur numrique sur leFlexPendant.

    UIAlphaEntry : permet de lire une chane sur le FlexPendant.

    UIListViewEntry : permet de dfinir des lignes de menu qui incluent dutexte et des icnes sur le FlexPendant.