Implementeren van een 7e as bij een robotarm Thomas...

101
Thomas Ryon Implementeren van een 7e as bij een robotarm Academiejaar 2013-2014 Faculteit Ingenieurswetenschappen en Architectuur Voorzitter: prof. Kurt Stockman Vakgroep Industrieel Systeem- en Productontwerp Master of Science in de industriële wetenschappen: elektromechanica Masterproef ingediend tot het behalen van de academische graad van Promotoren: Bart Vanwalleghem, Simon Houwen

Transcript of Implementeren van een 7e as bij een robotarm Thomas...

Page 1: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

Thomas Ryon

Implementeren van een 7e as bij een robotarm

Academiejaar 2013-2014Faculteit Ingenieurswetenschappen en ArchitectuurVoorzitter: prof. Kurt StockmanVakgroep Industrieel Systeem- en Productontwerp

Master of Science in de industriële wetenschappen: elektromechanicaMasterproef ingediend tot het behalen van de academische graad van

Promotoren: Bart Vanwalleghem, Simon Houwen

Page 2: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

I

Voorwoord

Deze masterproef heeft me waardevolle lessen bijgebracht op meerdere terreinen. De uitdaging lag niet enkel

op technisch vlak maar ik heb ook op sociaal vlak veel bijgeleerd. Tijdens mijn masterproef heb ik dan ook heel

wat hulp gekregen van verschillende personen die ik wil bedanken.

Dankzij het voorstel van ing. Bart Vanwalleghem en ing. Simon Houwen heb ik de kans gekregen om één van de

grootste opstellingen in het labo Mechatronica van de UGent campus Kortrijk te mogen gebruiken. Via hun tips

en feedback heb ik de nodige ondersteuning gekregen om deze masterproef tot een succesvol einde te

brengen. Ik wil ook de heer José Vangheluwe bedanken voor de hulp bij het ontwerpen van de noodzakelijke

mechanische onderdelen.

Daarnaast gaat mijn dank uit naar Laurent Mattheys (Application Engineer/Robotics Stäubli) en andere

personen bij Stäubli die mij altijd verder hielpen bij technische problemen.

Als laatste wil ik mijn ouders bedanken voor de raad en de kans die ze mij gegeven hebben om verder te

studeren.

Page 3: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

II

Abstract

This document describes the implementation of a 7th

axis of a robotic arm. A 7th

axis is a linear or rotary

movement that creates an extra degree of freedom for a 6-axis robotic arm and so expands its working area.

In the lab Mechatronics in the UGent campus Kortrijk there is already a bridge with linear moving sled where a

robotic arm will be attached to. This extra movement acts like a 7th

axis for the arm. The robotics manufacturer

Stäubli will make a 6-axis robotic arm available because their software has the ability to not only control the

robotic arm but also several external axes. With the help of Stäubli, there will be determined which settings are

important and how the different components should be configured.

During the process of implementing the 7th

axis, there are several topics discussed such as drive and control

technics, robotics and automation. A fitting motor and drive is chosen for the 7th

axis, regarding the industrial

requirements of speed and acceleration. Using CAD software like Siemens NX, the necessary motor torque is

determined by examining the various components of the drive: a gearbox and a rack and pinion. The results are

also calculated with the dimensioning tool Cymex and compared.

To accomplish a synchronized movement between the motion of the robotic arm and the 7th

axis, it is required

to control them at the same time. Therefore it is necessary that the controllers of both systems can

communicate. This happens via the communication protocols CAN and CANopen.

At last, there will be examined how the robotic arm and the 7th

axis are controlled with the software of Stäubli

and a synchronized movement will be taught and executed.

Page 4: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

III

Inhoudsopgave

VOORWOORD ...................................................................................................................................... I

ABSTRACT .......................................................................................................................................... II

LIJST VAN SYMBOLEN EN AFKORTINGEN ................................................................................. V

LIJST VAN TABELLEN .................................................................................................................. VIII

LIJST VAN FIGUREN ........................................................................................................................ IX

INLEIDING ............................................................................................................................................ 1

HOOFDSTUK 1: TECHNISCHE BESCHRIJVING 7E AS............................................................... 3

1.1 7e as ............................................................................................................................................. 3

1.2 Robotarm .................................................................................................................................... 4

1.3 Synchronisatie tussen 7e as en robotarm ................................................................................... 5

HOOFDSTUK 2: DIMENSIONEREN AANDRIJVING 7E AS........................................................ 7

2.1 Motion Simulation ...................................................................................................................... 7

2.1.1 Stappenplan .................................................................................................................... 7

2.1.2 Koppelmeting op één onderdeel .................................................................................. 10

2.1.3 Koppelmeting bij een reductiekast ............................................................................... 10

2.1.4 Koppelmeting bij een tandwiel-tandheugeloverbrenging ............................................ 12

2.1.5 Koppelmeting bij een reductiekast en tandwiel-tandheugeloverbrenging .................. 13

2.1.6 Toegepast op de 7e as ................................................................................................... 16

2.2 Cymex ........................................................................................................................................ 21

2.3 Theoretisch ............................................................................................................................... 22

2.4 Selecteren van motor en drive .................................................................................................. 24

HOOFDSTUK 3: AANSTUREN ROBOTARM ............................................................................. 28

3.1 Werkingsmodi ........................................................................................................................... 28

3.1.1 Manueel ........................................................................................................................ 28

3.1.2 Lokaal ............................................................................................................................ 31

3.1.3 Remote ......................................................................................................................... 31

3.2 Stäubli Robotics Suite (SRS) ...................................................................................................... 31

HOOFDSTUK 4: SYNCHRONISEREN .......................................................................................... 33

4.1 Communicatie tussen controller en drive ................................................................................. 33

4.1.1 Controller Area Network .............................................................................................. 33

4.1.2 CANopen ....................................................................................................................... 36

4.2 Configureren van controller en drive ........................................................................................ 45

4.2.1 Instellingen voor de communicatie .............................................................................. 45

4.2.2 Instellingen voor de externe as .................................................................................... 47

4.3 Regelkringen en setpoints ......................................................................................................... 47

4.4 Programmeren van beweging ................................................................................................... 48

BESLUIT ............................................................................................................................................. 49

LITERATUURLIJST ......................................................................................................................... 51

Page 5: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

IV

BIJLAGE A: COMPONENTEN AANDRIJVING 7E AS ................................................................ 53

A.1 Koppeling tussen motor en reductiekast .................................................................................. 53

A.2 Reductiekast .............................................................................................................................. 53

A.3 Klembus tussen uitgang reductiekast en tandwielas ................................................................ 53

A.4 Tandwielas ................................................................................................................................ 54

A.5 Tandlat ...................................................................................................................................... 54

A.6 Lineaire lagers en geleiding ....................................................................................................... 54

BIJLAGE B: INSTELLINGEN IN NX VOOR 7E AS ...................................................................... 55

B.1 Link ............................................................................................................................................ 55

B.1.1 Koppeling_Reductiekast ............................................................................................... 55

B.1.2 Tandwielas_Klembus .................................................................................................... 56

B.1.3 Massa ............................................................................................................................ 56

B.2 Joint ........................................................................................................................................... 57

B.2.1 Revolute ........................................................................................................................ 57

B.2.2 Slider ............................................................................................................................. 59

B.3 Coupler ...................................................................................................................................... 59

B.3.1 Gear .............................................................................................................................. 60

B.3.2 2-Joint Coupler ............................................................................................................. 60

B.4 Driver ........................................................................................................................................ 61

B.5 Sensor ....................................................................................................................................... 63

BIJLAGE C: INSTELLINGEN IN CYMEX ...................................................................................... 66

C.1 Applicatie .................................................................................................................................. 66

C.2 Transformatie applicatie - vertragingskast ............................................................................... 66

C.3 Vertragingskast ......................................................................................................................... 67

C.4 Transformatie vertragingskast - motor ..................................................................................... 67

C.5 Motor ........................................................................................................................................ 68

C.6 MotionProfiler........................................................................................................................... 68

C.7 Resultaten ................................................................................................................................. 68

BIJLAGE D: AANSLUITSCHEMA 9400 HIGHLINE DRIVE .................................................... 69

BIJLAGE E: CONFIGURATIE VAN CONTROLLER EN DRIVE ............................................... 70

E.1 Instellingen voor de communicatie........................................................................................... 70

E.1.1 Controller ...................................................................................................................... 70

E.1.2 Drive ............................................................................................................................. 74

E.2 Instellingen voor de externe as ................................................................................................. 75

E.2.1 Controller ...................................................................................................................... 75

E.2.2 Drive ............................................................................................................................. 78

BIJLAGE F: APPLICATIE IN VAL3 STUDIO .............................................................................. 82

Page 6: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

V

Lijst van symbolen en afkortingen

α [rad/s²] hoekversnelling

αKoppeling_Reductiekast [rad/s²] hoekversnelling van de link Koppeling_Reductiekast

αlast [rad/s²] hoekversnelling van de last

αrotor [rad/s²] hoekversnelling van de rotor

αtandwiel [rad/s²] hoekversnelling van het tandwiel

αTandwielas_Klembus [rad/s²] hoekversnelling van de link Tandwielas_Klembus

Δt [s] tijdsinterval

ωrotor [rad/s] hoeksnelheid van de rotor

A1 coëfficiënt tweedegraadsterm van de parabool tussen T0 en T1

ACS Absolute Coordinate System

aslede [m/s²] lineaire versnelling van de slede

B1 coëfficiënt eerstegraadsterm van de parabool tussen T0 en T1

C1 constante term van de parabool tussen T0 en T1

CA Collision Avoidance

CAD Computer Aided Design

CAN Controller Area Network

CAN_H CAN High

CAN_L CAN Low

CiA CAN in Automation

COB Connection Object

CS Carrier Sense

CSMA/CA Carrier Sense, Multiple Access/Collision Avoidance

D differentiërende actie van een regelaar

EMCY Emergency Object

EN Europese Norm

Facc_Massa [N] versnellingskracht van de link Massa

Facc_mbew [N] versnellingskracht van de lineair bewegende massa

Fextern [N] externe kracht op de tandheugel of slede

i overbrengingsverhouding van de reductiekast

I integrerende actie van een regelaar

ID identifier

IEC International Electrotechnical Commission

IO Input/Output

ISO International Organization for Standardization

J [kgm²] massatraagheidsmoment of inertie

Jeq,rotor [kgm²] equivalente inertie gereflecteerd naar rotorzijde

Page 7: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

VI

Jeq,tandwiel [kgm²] equivalente inertie gereflecteerd naar tandwielzijde

Jklembus [kgm²] massatraagheidsmoment of inertie van de klembus

Jkoppeling [kgm²] massatraagheidsmoment of inertie van de koppeling

JKoppeling_Reductiekast [kgm²] inertie van de link Koppeling_Reductiekast

Jlast [kgm²] massatraagheidsmoment of inertie van de last

Jlast,rotor [kgm²] equivalente lastinertie gereflecteerd naar rotorzijde

Jreductiekast [kgm²] massatraagheidsmoment of inertie van de reductiekast

Jrotor [kgm²] massatraagheidsmoment of inertie van de rotor

Jtandwiel [kgm²] massatraagheidsmoment of inertie van het tandwiel

Jtandwielas [kgm²] massatraagheidsmoment of inertie van de tandwielas

JTandwielas_Klembus [kgm²] inertie van de link Tandwielas_Klembus

k [N/m] stijfheid

MA Multiple Access

MCP Manual Control Pendant

mbew [kg] massa van de lineair bewegende componenten

mMassa [kg] massa van de link Massa

nmotor [tr/min] motortoerental

NMT Network Management

NRZ Non-Return-to-Zero encoding

P proportionele actie van een regelaar

P0 positie op tijdstip T0

P1 positie op tijdstip T1

PDO Process Data Object

PLC Programmable Logic Controller

PWM Pulse Width Modulation

r [m] straal van het tandwiel

RPDO Receive Process Data Object

SDO Service Data Object

SRS Stäubli Robotics Suite

SYNC Synchronization Object

T0 [s] begintijdstip

T1 [s] begintijdstip + tijdsinterval

Tacc_Koppeling_Reductiekast [Nm] versnellingskoppel van de link Koppeling_Reductiekast

Tacc_last [Nm] versnellingskoppel van de last

Tacc_rotor [Nm] versnellingskoppel van de rotor

Tacc_tandwiel [Nm] versnellingskoppel van het tandwiel

Tacc_Tandwielas_Klembus [Nm] versnellingskoppel van de link Tandwielas_Klembus

TCP Tool Center Point, gereedschapsnulpunt

Page 8: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

VII

Textern [Nm] extern koppel aan lastzijde

Textern,rotor [Nm] equivalent van het extern lastkoppel aan rotorzijde

TIME Time Stamp Object

Tmbew_ex,last [Nm] koppel door de lineair bewegende massa en externe kracht op last

Tmotor [Nm] motorkoppel

TP Twisted Pair

TPDO Transmit Process Data Object

Ttegenwerkend [Nm] equivalent van het tegenwerkend koppel op de rotor

Ttot,koppeling [Nm] totaal koppel op de koppeling

Ttot,last [Nm] totaal koppel op de last

Ttot,rotor [Nm] totaal koppel op de rotor

Ttot,tandwiel [Nm] totaal koppel op het tandwiel

V0 snelheid op tijdstip T0

V1 snelheid op tijdstip T1

vslede [m/s] lineaire snelheid van de slede

WMS Working Mode Selection

Page 9: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

VIII

Lijst van tabellen

Tabel 2-1: Koppelmeting bij een reductiekast ...................................................................................................... 11

Tabel 2-2: Koppelmeting bij een tandwiel-tandheugeloverbrenging ................................................................... 13

Tabel 2-3: Koppelmeting bij een reductiekast en tandwiel-tandheugeloverbrenging ......................................... 15

Tabel 2-4: Componenten van de aandrijving van de 7e as .................................................................................... 16

Tabel 2-5: Massa en inertie van de verschillende links ......................................................................................... 17

Tabel 2-6: Motorkoppel in functie van de lineaire versnelling van de slede ........................................................ 23

Tabel 2-7: Motortoerental in functie van de lineaire snelheid van de slede ........................................................ 24

Tabel 2-8: Voor- en nadelen van verschillende dimensioneringsmethodes ......................................................... 27

Page 10: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

IX

Lijst van figuren

Figuur 1: Lineaire demonstratoren in het labo Mechatronica ................................................................................ 1

Figuur 2: 6-assige robotarm [2] ............................................................................................................................... 2

Figuur 1-1: Voet bevestigd aan de grond [3] ........................................................................................................... 3

Figuur 1-2: Voet bevestigd aan externe as [3] ........................................................................................................ 3

Figuur 1-3: Externe assen gemonteerd aan de flens [3] ......................................................................................... 3

Figuur 1-4: CAD model van de 7e as en robotarm ................................................................................................... 4

Figuur 1-5: Verschillende assen bij een 6-assige robotarm [2] ............................................................................... 5

Figuur 1-6: Globaal overzicht van de componenten [3] .......................................................................................... 5

Figuur 2-1: Definiëren van een link ......................................................................................................................... 7

Figuur 2-2: Definiëren van een revolute joint ......................................................................................................... 8

Figuur 2-3: Definiëren van een gear ........................................................................................................................ 8

Figuur 2-4: Definiëren van een driver ..................................................................................................................... 9

Figuur 2-5: Verschillende reference frames .......................................................................................................... 10

Figuur 2-6: Vereenvoudigde voorstelling van een reductiekast ........................................................................... 11

Figuur 2-7: Vereenvoudigde voorstelling van een tandwiel-stilstaande tandheugeloverbrenging ...................... 12

Figuur 2-8: Vereenvoudigde voorstelling reductiekast en tandwiel-stilstaande tandheugeloverbrenging .......... 13

Figuur 2-9: Exploded view van de aandrijving van de 7e as .................................................................................. 16

Figuur 2-10: Link Koppeling_Reductiekast ............................................................................................................ 17

Figuur 2-11: Link Tandwielas_Klembus ................................................................................................................. 17

Figuur 2-12: Link Massa......................................................................................................................................... 17

Figuur 2-13: Verschillende joints bij de 7e as ........................................................................................................ 18

Figuur 2-14: Gear tussen Koppeling_Reductiekast en Tandwielas_Klembus ....................................................... 18

Figuur 2-15: 2-joint coupler tussen Tandwielas_Klembus en Massa .................................................................... 19

Figuur 2-16: Snelheidsprofiel opgelegd aan Massa .............................................................................................. 19

Figuur 2-17: Totaal koppel bepaald via Motion Simulation .................................................................................. 20

Figuur 2-18: Toerental bepaald via Motion Simulation ........................................................................................ 20

Figuur 2-19: Hoofdscherm Cymex ......................................................................................................................... 21

Figuur 2-20: Resultaten Cymex ............................................................................................................................. 21

Figuur 2-21: Invloed van de inertieverhouding en stijfheid op de stabiliteit [8] .................................................. 25

Figuur 2-22: Overzicht van de aandrijving in Drive Solution Designer .................................................................. 26

Figuur 2-23: Resultaten Drive Solution Designer .................................................................................................. 27

Figuur 3-1: Controller CS8C [9] .............................................................................................................................. 28

Figuur 3-2: MCP [9] ............................................................................................................................................... 28

Figuur 3-3: WMS [9] .............................................................................................................................................. 28

Figuur 3-4: Werkingsmodi [9] ............................................................................................................................... 28

Figuur 3-5: Beweging in frame mode ten opzichte van de world [9] .................................................................... 29

Figuur 3-6: Flange van de TX90 ............................................................................................................................. 30

Figuur 3-7: Boring in de flange van de TX90 ......................................................................................................... 30

Figuur 3-8: Beweging in tool mode ten opzichte van een user tool ..................................................................... 30

Figuur 3-9: Hoofdscherm Stäubli Robotics Suite ................................................................................................... 32

Figuur 3-10: Emulator en 3D Studio ...................................................................................................................... 32

Figuur 4-1: Non-Return-to-Zero code [10] ............................................................................................................ 33

Figuur 4-2: Dominante en recessieve niveaus volgens ISO 11898-2 [11] ............................................................. 34

Figuur 4-3: CAN kabel volgens ISO 11898-2 [11] ................................................................................................... 34

Figuur 4-4: SUB D-9 connector volgens CiA 102 V3.0.0 [11] ................................................................................. 35

Page 11: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

X

Figuur 4-5: CAN Base Format frame met identifier [11] ....................................................................................... 36

Figuur 4-6: CAN en CANopen standaarden [11] .................................................................................................... 36

Figuur 4-7: Interne structuur van een CANopen device [12] ................................................................................ 37

Figuur 4-8: Structuur van de object dictionary [13] .............................................................................................. 38

Figuur 4-9: Basis identifiers volgens de Predefined Connection Set van CiA 301 V4.2.0 [14] .............................. 39

Figuur 4-10: PDO linking [15] ................................................................................................................................ 40

Figuur 4-11: PDO mappingparameter [11] ............................................................................................................ 40

Figuur 4-12: TPDO mapping [11] ........................................................................................................................... 41

Figuur 4-13: NMT slave status diagram [11] ......................................................................................................... 42

Figuur 4-14: State Machine [16]............................................................................................................................ 43

Figuur 4-15: Position vs Interpolated position mode [18] .................................................................................... 44

Figuur 4-16: Lineaire interpolatie .......................................................................................................................... 44

Figuur 4-17: Kwadratische interpolatie ................................................................................................................. 45

Figuur 4-18: RPDO1 mapping CAN-kaart controller .............................................................................................. 46

Figuur 4-19: TPDO1 mapping CAN-kaart controller .............................................................................................. 46

Figuur 4-20: RPDO2 mapping CAN-kaart controller .............................................................................................. 46

Figuur 4-21: TPDO2 mapping CAN-kaart controller .............................................................................................. 46

Figuur 4-22: Overzicht van de communicatie tussen de controller en drive ........................................................ 47

Figuur 4-23: Regelkringen in de drive ................................................................................................................... 47

Figuur A-1: Gegevens van de koppeling ................................................................................................................ 53

Figuur A-2: Gegevens van de reductiekast ............................................................................................................ 53

Figuur A-3: Gegevens van de klembus .................................................................................................................. 53

Figuur A-4: Gegevens van de tandwielas .............................................................................................................. 54

Figuur A-5: Gegevens van de tandlat .................................................................................................................... 54

Figuur A-6: Gegevens van het lineair lager ........................................................................................................... 54

Figuur B-1: Instellingen van de link Koppeling_Reductiekast ............................................................................... 55

Figuur B-2: Instellingen van de link Tandwielas_Klembus .................................................................................... 56

Figuur B-3: Instellingen van de link Massa ............................................................................................................ 57

Figuur B-4: Instellingen van de revolute joint op Koppeling_Reductiekast .......................................................... 58

Figuur B-5: Instellingen van de revolute joint op Tandwielas_Klembus ............................................................... 58

Figuur B-6: Instellingen van de slider joint op Massa ........................................................................................... 59

Figuur B-7: Instellingen van de gear ...................................................................................................................... 60

Figuur B-8: Instellingen van de 2-joint coupler ..................................................................................................... 61

Figuur B-9: XY Function Manager .......................................................................................................................... 61

Figuur B-10: Definiëren van de XY assen in de XY Function Editor ....................................................................... 62

Figuur B-11: Definiëren van de XY data in de XY Function Editor ......................................................................... 62

Figuur B-12: Instellingen van de driver op de slider joint van Massa ................................................................... 63

Figuur B-13: Instellingen van de koppelsensor op de revolute joint van Koppeling_Reductiekast ...................... 64

Figuur B-14: Instellingen van de koppelsensor op de revolute joint van Tandwielas_Klembus ........................... 64

Figuur B-15: Instellingen van de krachtsensor op de slider joint van Massa ........................................................ 65

Figuur B-16: Definiëren van de koppelformule in de XY Function Editor ............................................................. 65

Figuur C-1: Instellingen van de applicatie ............................................................................................................. 66

Figuur C-2: Instellingen van de klembus ............................................................................................................... 67

Figuur C-3 Instellingen van de reductiekast .......................................................................................................... 67

Figuur C-4 Instellingen van de 7e as in Cymex ....................................................................................................... 68

Figuur C-5 Instellingen in de MotionProfiler ......................................................................................................... 68

Figuur D-1: Aansluitschema van de 9400 HighLine drive [20] .............................................................................. 69

Page 12: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

XI

Figuur E-1: Instellingen in de Cells manager ......................................................................................................... 73

Figuur E-2: Instellingen van CAN management in Engineer .................................................................................. 74

Figuur E-3: Instellingen van CAN SYNC slave in Engineer ...................................................................................... 74

Figuur E-4: RPDO1 mapping CAN interface drive .................................................................................................. 75

Figuur E-5: TPDO1 mapping CAN interface drive .................................................................................................. 75

Figuur E-6: RPDO2 mapping CAN interface drive .................................................................................................. 75

Figuur E-7: TPDO2 mapping CAN interface drive .................................................................................................. 75

Figuur E-8: Overview in Engineer .......................................................................................................................... 78

Figuur E-9: Positieregelkring in Engineer .............................................................................................................. 79

Figuur E-10: Snelheidsregelkring in Engineer ........................................................................................................ 80

Figuur E-11: Koppelregelkring in Engineer ............................................................................................................ 81

Page 13: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

1

Inleiding

Robotarmen zijn bijna niet meer weg te denken uit de huidige industrie waar ze ingezet worden om te lassen,

boren, schilderen, verplaatsen van materiaal, … in gevaarlijke omgevingen of bij eentonig werk. Afhankelijk van

het aantal vrijheidsgraden zijn er verschillende types waarvan de 6-assige robotarmen het belangrijkst zijn.

Vanwege hun bouw, gebaseerd op de menselijke arm, zijn ze in staat om complexe taken uit te voeren in een

3-dimensionaal werkgebied. Deze ruimte is beperkt door de lengte van hun assen maar kan uitgebreid worden

door de robotarm te bevestigen aan een externe as zoals een lineaire slede of draaitafel. Bij het monteren aan

een lineaire slede beschikt de robotarm over een extra vrijheidsgraad en kunnen ook lange werkstukken ‘onder

handen’ worden genomen. Daarnaast verhoogt de productiviteit omdat er meerdere robotarmen elk op een

aparte slede op dezelfde lineaire geleidingen kunnen werken.

In het labo Mechatronica van de UGent campus Kortrijk zijn twee opstellingen aanwezig met een lineair

bewegende slede (Figuur 1). Aan de brug (achterste opstelling) kan een robotarm onderaan de slede worden

bevestigd. De horizontale beweging van de slede creëert een extra (7e) vrijheidsgraad voor een 6-assige

robotarm. Bij de aandrijving ontbreekt er echter een motor en drive.

Figuur 1: Lineaire demonstratoren in het labo Mechatronica

Page 14: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

2

De onderneming Stäubli is actief op het gebied van textielmachines, connectoren en robotica. Wereldwijd

verspreidt Stäubli zich over 25 landen met meer dan 4000 werknemers [1]. In de afdeling robotica worden er 4-

en 6-assige robotarmen ontwikkeld en sinds kort biedt hun software de mogelijkheid om externe assen aan te

sturen. Zij voorzien echter geen hardware oplossingen voor dergelijke opstellingen. De vraag kwam dan ook om

een externe as te dimensioneren voor een 6-assige robotarm (Figuur 2). Typische zaken zoals de inertie,

motorkoppel, toerental, versnelling, … zullen hierbij aan bod komen.

Figuur 2: 6-assige robotarm [2]

Ter ondersteuning van de ontwerper zijn heel wat softwaretools ontwikkeld om een geschikte aandrijving te

selecteren. Een evoluerende trend is het gebruik van CAD (Computer Aided Design) programma’s.

Een van de doelstellingen is dan ook om de aandrijving van de 7e as te dimensioneren met behulp van CAD

software (Siemens NX) en dit te valideren aan de hand van theorie en andere dimensioneringstools (Cymex).

Om te voldoen aan de hoge eisen vanuit de industrie, is het belangrijk om de aandrijving van de 7e as zo

dynamisch mogelijk te maken. Naast het kiezen van een geschikte motor en drive moeten ook de regelkringen

geoptimaliseerd worden. Dit hangt af van de applicatie en de eisen van de gebruiker. Hier zal de positie van de

slede snel en met weinig doorschot moeten bereikt worden.

De robotarm wordt aangestuurd via de software geleverd door Stäubli. Naast het leren werken met deze

software, worden belangrijke begrippen uit de robotica bestudeerd om een beter inzicht te verkrijgen in de

bewegingen van een robotarm.

De belangrijkste doelstelling is de beweging van een robotarm te synchroniseren met een 7e as. Hiervoor moet

er vlotte communicatie zijn tussen de aansturing van de robotarm en de aandrijving van de 7e

as. Dit gebeurt

op basis van het CAN (Controller Area Network) en CANopen protocol.

Page 15: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

3

Hoofdstuk 1: Technische beschrijving 7e as

Bij het implementeren van een 7e as bij een 6-assige robotarm zijn er verschillende hardware componenten

noodzakelijk. Deze worden achtereenvolgens besproken en samengebracht in een globaal overzicht. Er komen

ook verschillende thema’s aan bod zoals aandrijf- en regeltechniek, robotica en automatisering. In de volgende

hoofdstukken wordt elk thema verder uitgewerkt.

1.1 7e as

De eerste component is een lineaire of roterende beweging van een externe as die kan leiden tot een extra,

dus 7e, vrijheidsgraad voor een 6-assige robotarm. Hierbij kan het werkstuk, de voet of de flens van de arm

bevestigd zijn aan de externe as. In het eerste geval is de voet van de robotarm gemonteerd aan de grond en

het werkstuk aan de externe as zoals een draaitafel (Figuur 1-1), slede, … Het is ook mogelijk om de voet van

de arm te bevestigen aan één van de externe assen zoals een draaitafel (Figuur 1-2).

Figuur 1-1: Voet bevestigd aan de grond [3]

Figuur 1-2: Voet bevestigd aan externe as [3]

In het derde geval is de voet van de robotarm vastgemaakt aan de grond en wordt een gereedschap met

meerdere assen (lineaire en rotatieve beweging) gemonteerd op de flens (Figuur 1-3). De flens is het uiteinde

van de robotarm waaraan hier de lineaire geleiding is bevestigd.

Figuur 1-3: Externe assen gemonteerd aan de flens [3]

Page 16: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

4

In dit project is de voet van de robotarm vastgemaakt aan een lineair bewegende slede (Figuur 1-4). De

beweging van de slede is de 7e as die zorgt voor een uitbreiding van het werkgebied van de arm.

Figuur 1-4: CAD model van de 7

e as en robotarm

De aandrijving van de slede bestaat uit een reductiekast en tandwiel-tandheugeloverbrenging waarvan de

specificaties te vinden zijn in Bijlage A: Componenten aandrijving 7e as. De motor en drive zijn echter nog niet

aanwezig. De selectie hiervan wordt behandeld in Hoofdstuk 2: Dimensioneren aandrijving 7e as.

1.2 Robotarm

Een 6-assige robotarm vertoont vele overeenkomsten met de menselijke arm. De verschillende delen krijgen

dan ook een gelijkaardige naam zoals: de schouder (B), de arm (C), de elleboog (D), de voorarm (E) en de pols

(F). Deze zijn bevestigd aan de voet (A) (Figuur 1-5). Al deze segmenten zijn onderling verbonden via

scharnieren te vergelijken met gewrichten. Zo zijn er in totaal 6 rotaties of vrijheidsgraden. De beweging van de

arm wordt net zoals spieren door motoren gegenereerd.

De robotarm die ter beschikking is gesteld door Stäubli behoort tot de TX90 serie. Bij dit type worden de assen

aangestuurd met servomotoren waardoor hoge dynamische performanties gehaald worden. Dit is te wijten aan

hun lage inertie en het gebruiken van de motoren in gesloten lus regelkringen met positiefeedback. De T in de

naam betekent dat de servomotoren uitgerust zijn met absolute encoders. Dit zijn sensoren die de hoekpositie

van een as meten waarbij de informatie beschikbaar blijft na het wegnemen van de voeding. De X duidt op een

6-assige robotarm en het eerste cijfer na TX is de reikwijdte van de robotarm in decimeter. Dit is de maximale

werkstraal tussen as 1 en 5. Als het tweede cijfer na TX gelijk is aan 0, zijn alle assen aanstuurbaar.

In vol continu bedrijf kan de TX90 een last dragen van 7 kg. Dit heeft als gevolg dat dergelijke robotarmen niet

worden ingezet om zware lasten te dragen zoals in de automobielindustrie. Ze worden voornamelijk ingezet in

applicaties die hoge precisie vereisen en omdat alle motoren in de arm zitten, worden ze ook veel gebruikt in

de farmaceutica of voedingsindustrie waar hygiëne uiterst belangrijk is [2].

De sturing van de robotarm, ontwikkeld door Stäubli, wordt besproken in Hoofdstuk 3: Aansturen robotarm.

Page 17: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

5

Figuur 1-5: Verschillende assen bij een 6-assige robotarm [2]

1.3 Synchronisatie tussen 7e as en robotarm

In Figuur 1-6 wordt een overzicht gegeven van de belangrijkste componenten.

Figuur 1-6: Globaal overzicht van de componenten [3]

Page 18: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

6

Stäubli voorziet in een controller van het type CS8C met een CAN kaart (SRCAN) en een robotarm TX90. De

gebruiker moet beschikken over de overige hardware zoals een drive, motor en een 7e as opstelling.

Om de beweging van de 7e as en robotarm te synchroniseren, is het vanzelfsprekend dat onderlinge

communicatie noodzakelijk is. Er moet een uitwisseling zijn van stuurwaarden (setpoints) en terugkoppeling

(feedback). Hier verloopt de communicatie tussen de controller en de drive via het CAN en CANopen protocol.

De drive moet dus een CAN interface hebben. Het is ook belangrijk dat de drive een specifieke werkingsmodus

(operation mode) ondersteunt: interpolated position mode [3]. Hierdoor zal de drive het opgelegde traject

beter benaderen. Deze operation mode en het communicatieprotocol worden uitgediept in Hoofdstuk 4:

Synchroniseren.

Page 19: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

7

Hoofdstuk 2: Dimensioneren aandrijving 7e as

In dit hoofdstuk wordt het thema aandrijftechniek behandeld waarin een geschikt motorkoppel en -toerental

wordt berekend voor de aandrijving van de 7e as. Het koppel is afhankelijk van het massatraagheidsmoment of

inertie van de bewegende onderdelen en de gewenste lineaire versnelling van de slede. Het toerental hangt af

van de gewenste lineaire snelheid van de slede. Beide zaken worden bepaald via Motion Simulation in Siemens

NX en daarnaast worden de berekeningen uitgevoerd in een programma om een aandrijving te dimensioneren

(Cymex). Aan de hand van de theorie worden de bekomen resultaten dan gecontroleerd en ten slotte wordt

een motor en drive geselecteerd bij een geschikte fabrikant.

2.1 Motion Simulation

Met deze optie in Siemens NX is het mogelijk om het dynamisch gedrag van onderdelen te simuleren en te

analyseren waarbij er de keuze is tussen een Kinematics of Dynamics motion simulation. Kinematics omvat een

studie van de beweging zonder rekening te houden met de massa en de zwaartekracht. Dynamics houdt hier

wel rekening mee en externe krachten kunnen zorgen voor beweging. Aangezien het dynamisch gedrag van de

7e as geanalyseerd moet worden, is hier nood aan een Dynamics motion simulation.

2.1.1 Stappenplan

Bij het uitvoeren van een motion studie moeten telkens een aantal stappen doorlopen worden. Ter illustratie

worden de onderdelen gebruikt zoals te zien in Figuur 2-1. De twee cilinders stellen de assen aan rotor- en

lastzijde van een reductiekast voor. Voor de eenvoud zijn de tandwielen niet getekend.

Link

Als eerste moeten alle afzonderlijk bewegende onderdelen worden gedefinieerd. Deze worden links genoemd

en zijn in dit geval twee cilinders. Bij het dubbelklikken op een link is het mogelijk om de massa en de inertie

van de verschillende assen aan te passen.

Figuur 2-1: Definiëren van een link

Page 20: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

8

Joint

Na het definiëren van twee links zijn er in totaal 12 vrijheidsgraden want elke link heeft 6 vrijheidsgraden: 3

translaties en 3 rotaties. Door joints worden de links beperkt in hun beweging waarbij de twee meest gebruikte

een revolute en slider zijn. Een revolute laat rotatie in één richting toe, een slider translatie in één richting. Hier

mogen beide cilinders enkel roteren dus wordt op beiden een revolute joint opgelegd (Figuur 2-2).

Figuur 2-2: Definiëren van een revolute joint

Coupler

Zoals het woord te kennen geeft, wordt een coupler gebruikt om een koppeling of overbrenging voor te stellen.

Er is keuze tussen een gear, rack and pinion, cable of 2-3 joint coupler. Gear wordt gebruikt voor een

tandwieloverbrenging en rack and pinion voor een tandwiel-tandheugeloverbrenging. De revolutes van beide

cilinders worden gekoppeld met een gear waarbij de overbrengingsverhouding wordt meegegeven (Figuur 2-3).

Figuur 2-3: Definiëren van een gear

Page 21: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

9

Driver

Ten slotte moet er nog een drijvende kracht worden opgelegd op één of meerdere joints. Afhankelijk van de

joint kan gekozen worden voor een constante (hoek)versnelling, harmonisch of een functie. Hier wordt een

hoekversnelling van 100 rad/s² op de revolute joint van de eerste cilinder ingesteld (Figuur 2-4).

Figuur 2-4: Definiëren van een driver

Na het solven van de solution en op play te drukken, is de animatie te zien. De eerste cilinder versnelt aan 100

rad/s², de tweede aan 100 rad/s² gedeeld door de overbrengingsverhouding van de gear.

Sensor

Naast het simuleren van het dynamisch gedrag is er ook een analyse van enkele grootheden, zoals de

verplaatsing, snelheid, versnelling en kracht/koppel, mogelijk. Hiervoor wordt een sensor gebruikt van het type

displacement, velocity, acceleration of force. Naast het type moet ook de component en het reference frame

worden geselecteerd. Component duidt op de richting waarin de grootheid wordt gemeten zoals de X-, Y- of Z-

richting. Het is ook mogelijk om de totale grootte (magnitude) te meten. Reference frame geeft aan ten

opzichte van welk assenstelsel de grootheid wordt gemeten (zie 2.1.2).

Graphing

Via een grafiek worden de gemeten waarden van een sensor gevisualiseerd. Hierbij kan de waarde van de

sensor geplot worden in functie van de tijd. Het is ook mogelijk om deze uit te drukken ten opzichte van een

andere joint, sensor of marker. Een marker is een zelf gedefinieerd coördinatenstelsel dat gebruikt wordt als

referentie bij metingen. Net zoals bij een sensor moet de component en reference frame worden gekozen. Bij

component zijn dezelfde opties mogelijk en bij reference frame enkel absolute en relative (zie 2.1.2). Met deze

instellingen is het ook mogelijk om op een joint het koppel te meten van een onderdeel. Het gebruiken van een

sensor is dus vaak overbodig.

Page 22: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

10

2.1.2 Koppelmeting op één onderdeel

De aandrijving van de 7e as bestaat uit een aantal overbrengingen. Het is dus aangewezen om eerst aan de

hand van enkele testprojecten na te gaan hoe NX het koppel meet van één onderdeel, een reductiekast en een

tandwiel-tandheugeloverbrenging. Met behulp van de conclusies kan dan een correct motorkoppel worden

bepaald voor de 7e as ten gevolge van een opgelegd snelheidsprofiel aan de slede.

Voor de aanpak en uitwerking wordt verwezen naar de bijlagen.

Afhankelijk van de richting van het koppel moet een andere reference frame worden gekozen (Figuur 2-5):

Absolute: ten opzichte van het ACS (Absolute Coordinate System). Dit is enkel interessant als de richting

van de joint samenvalt met een as van het ACS.

Relative: ten opzichte van het assenstelsel van de joint. Dit is altijd mogelijk aangezien de Z-as van de joint

wijst in de richting van de beweging.

User defined: ten opzichte van het assenstelsel van een marker. Dit is enkel interessant als de richting van

de joint samenvalt met een as van de marker.

Figuur 2-5: Verschillende reference frames

2.1.3 Koppelmeting bij een reductiekast

De reductiekast wordt voorgesteld door twee roterende cilinders (Figuur 2-6). De ene cilinder beeldt de

rotorzijde af van de reductiekast en de andere de lastzijde. Door het opleggen van een revolute joint op de

rotor en een revolute joint op de last, kunnen ze enkel nog roteren rond hun lichaamsas.

Om het effect op de koppelmeting na te gaan, wordt er zowel langs rotor- en lastzijde een driver opgelegd. Het

motorkoppel wordt bepaald vanuit een beweging van de applicatie (driver aan lastzijde) of er wordt gekeken

naar de beweging van de applicatie ten gevolge van de motor (driver aan rotorzijde).

ACS Joint

Page 23: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

11

Figuur 2-6: Vereenvoudigde voorstelling van een reductiekast

Voor de tandwieloverbrenging tussen de cilinders biedt NX twee mogelijkheden: gear of 2-joint coupler. Beide

configuraties worden vergeleken met elkaar. Uit een aantal experimenten blijkt dat ook de onderlinge ligging

van de twee assen een rol speelt. De letters E, S en K betekenen evenwijdige, snijdende of kruisende assen.

Zoals te zien in Tabel 2-1 wordt afhankelijk van de coupler (gear of 2-joint coupler) een andere waarde

gemeten door de sensor. Het totale koppel aan rotorzijde is de som van het versnellingskoppel van de rotor, de

last en een extern lastkoppel teruggerekend naar de rotor.

met: : massatraagheidsmoment of inertie [kgm²]

: hoekversnelling [rad/s²]

: overbrengingsverhouding van de reductiekast

Bij een gear wordt het totale koppel gemeten aan driverzijde. Bij een 2-joint coupler meet elke sensor enkel het

versnellings- en lastkoppel van het onderdeel zelf (rotor of last). Er is één grote uitzondering: de koppelmeting

bij een gear tussen kruisende assen is hetzelfde als bij een 2-joint coupler!

Tabel 2-1: Koppelmeting bij een reductiekast

Reductiekast Driver Sensor Koppel

GearE of gearS Rotor Rotor Ttot,rotor

Last 0

Last Rotor 0

Last Ttot,last

GearK of 2-joint coupler Rotor Rotor Tacc_rotor

Last Tacc_last + Textern

Last Rotor Tacc_rotor

Last Tacc_last + Textern

Een groen gekleurde cel betekent dat het totale koppel te bepalen is via NX met de coupler en driver van die rij.

Wanneer de reductiekast wordt voorgesteld door een gear tussen kruisende assen (gearK) en de driver op de

rotor werkt (rood kader), wordt enkel het versnellingskoppel van de rotor gemeten aan rotorzijde. Aan lastzijde

wordt het versnellings- en lastkoppel van de last gemeten. Met behulp van (2.3) is dan het totale koppel aan

rotorzijde te berekenen.

Page 24: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

12

2.1.4 Koppelmeting bij een tandwiel-tandheugeloverbrenging

Meestal draait het tandwiel terwijl de tandheugel een lineaire verplaatsing uitvoert. Maar soms blijft de

tandheugel stilstaan terwijl het tandwiel draait en zich tegelijkertijd verplaatst.

In het eerste geval wordt de revolute op het tandwiel en de slider op de tandheugel gekoppeld via een rack

and pinion of 2-joint coupler. In het tweede geval (Figuur 2-7) zijn er wat moeilijkheden bij de rack and pinion.

De nodige instellingen in NX worden besproken in de bijlagen.

Figuur 2-7: Vereenvoudigde voorstelling van een tandwiel-stilstaande tandheugeloverbrenging

Uit de simulaties blijkt dat de koppelmeting hetzelfde is bij een bewegende of een stilstaande tandheugel. De

koppelmeting is wel verschillend bij een rack and pinion en 2-joint coupler (Tabel 2-2). Het totale koppel aan

tandwielzijde is de som van het versnellingskoppel van het tandwiel, de versnellingskracht van de lineair

bewegende massa en een externe kracht teruggerekend naar het tandwiel.

met: : massa van de lineair bewegende componenten [kg]

: straal van het tandwiel [m]

Bij een rack and pinion is het totale koppel enkel te bepalen als de driver op de revolute (tandwiel) werkt. Dit is

geen vereiste bij een 2-joint coupler maar het totale koppel moet wel berekend worden met (2.6).

Wanneer een rack and pinion wordt gebruikt voor de tandwiel-tandheugeloverbrenging maar de driver op de

tandheugel of slede werkt (rood kader), wordt er geen koppel gemeten op het tandwiel. Op de tandheugel of

slede wordt enkel de versnellingskracht van de lineair bewegende massa en een externe kracht gemeten.

Zonder het versnellingskoppel van het tandwiel is het totale koppel dus niet te bepalen aan de hand van (2.6).

Page 25: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

13

Tabel 2-2: Koppelmeting bij een tandwiel-tandheugeloverbrenging

Tandwiel-

tandheugel-

overbrenging

Driver Sensor Koppel

Rack and pinion Tandwiel Tandwiel Ttot,tandwiel

Tandheugel of slede Facc_mbew + Fextern

Tandheugel of slede Tandwiel 0

Tandheugel of slede Facc_mbew + Fextern

2-joint coupler Tandwiel Tandwiel Tacc_tandwiel

Tandheugel of slede Facc_mbew + Fextern

Tandheugel of slede Tandwiel Tacc_tandwiel

Tandheugel of slede Facc_mbew + Fextern

2.1.5 Koppelmeting bij een reductiekast en tandwiel -tandheugel-

overbrenging

In de aandrijving van de 7e as is zowel een reductiekast als tandwiel-tandheugeloverbrenging aanwezig. Het is

daarom interessant om ook na te gaan hoe de koppelmeting verloopt bij een dergelijke configuratie. Opnieuw

moet hier een onderscheid gemaakt worden afhankelijk van de onderlinge ligging van de assen van de

reductiekast. Ook hier betekent de letter na de coupler (E, S of K) evenwijdige, snijdende of kruisende assen.

Omdat de koppelmeting hetzelfde is bij een bewegende of stilstaande tandheugel wordt enkel het geval van

een stilstaande tandheugel beschouwd. In Figuur 2-8 is het geheel vereenvoudigd voorgesteld.

Figuur 2-8: Vereenvoudigde voorstelling reductiekast en tandwiel-stilstaande tandheugeloverbrenging

Page 26: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

14

De resultaten van de motion simulation zijn terug te vinden in Tabel 2-3. Het totale koppel aan rotorzijde is de

som van het versnellingskoppel van de rotor en last, de versnellingskracht van de lineair bewegende massa en

een externe kracht teruggerekend naar de rotor.

Reductiekast

Bij een gear tussen evenwijdige of snijdende assen wordt het totale koppel enkel gemeten wanneer de driver

op de revolute (rotor) werkt.

Wordt een gear tussen kruisende assen of een 2-joint coupler gebruikt dan moet het totale koppel berekend

worden met (2.7) en (2.8).

Tandwiel-tandheugeloverbrenging

Bij een rack and pinion is het totale koppel niet te bepalen wanneer de driver op de slider (tandheugel of slede)

werkt! In dat geval moet een 2-joint coupler worden gebruikt.

Ter verduidelijking worden twee specifieke situaties beschouwd. Wanneer de reductiekast wordt voorgesteld

door een gear tussen evenwijdige assen (gearE) en de tandwiel-tandheugeloverbrenging door een 2-joint

coupler met driver op de slede (rood kader), wordt op de rotor geen koppel gemeten. Aan lastzijde wordt het

versnellingskoppel van de last en rotor teruggerekend naar de last gemeten. Op de slede wordt de versnellings-

kracht van de lineair bewegende massa en een externe kracht gemeten.

Het gemeten koppel aan lastzijde wordt teruggerekend naar de rotor door te delen door de overbrengings-

verhouding. De gemeten kracht op de slede wordt teruggerekend naar de rotor door te vermenigvuldigen met

de straal van het tandwiel en te delen door de overbrengingsverhouding.

Wanneer de reductiekast wordt voorgesteld door een gear tussen kruisende assen (gearK) en de tandwiel-

tandheugeloverbrenging door een rack and pinion met driver op de rotor (zwart kader), wordt op de rotor

enkel het versnellingskoppel van de rotor gemeten. Aan lastzijde wordt het versnellingskoppel van de last, de

versnellingskracht van de lineair bewegende massa en een externe kracht teruggerekend naar de last gemeten.

Op de slede wordt de versnellingskracht van de lineair bewegende massa en een externe kracht gemeten.

De gemeten waarde aan lastzijde bevat reeds het koppel van de lineair bewegende massa en een externe

kracht en wordt teruggerekend naar de rotor door te delen door de overbrengingsverhouding. Samen met het

versnellingskoppel van de rotor is het totale koppel te bepalen volgens (2.10).

Page 27: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

15

Tabel 2-3: Koppelmeting bij een reductiekast en tandwiel -tandheugeloverbrenging

Reductiekast Tandwiel-

tandheugel-

overbrenging

Driver Sensor Koppel

GearE of gearS Rack and pinion Rotor Rotor Ttot,rotor

Last 0

Tandheugel of slede Facc_mbew + Fextern

Tandheugel of slede Rotor 0

Last 0

Tandheugel of slede Facc_mbew + Fextern

2-joint coupler Rotor Rotor Ttot,rotor

Last Tmbew_ex,last

Tandheugel of slede Facc_mbew + Fextern

Tandheugel of slede Rotor 0

Last Tacc_last + Tacc_rotor * i

Tandheugel of slede Facc_mbew + Fextern

GearK of 2-joint coupler Rack and pinion Rotor Rotor Tacc_rotor

Last Tacc_last + Tmbew_ex,last

Tandheugel of slede Facc_mbew + Fextern

Tandheugel of slede Rotor Tacc_rotor

Last Tacc_rotor * i

Tandheugel of slede Facc_mbew + Fextern

2-joint coupler Rotor Rotor Tacc_rotor

Last Tacc_last

Tandheugel of slede Facc_mbew + Fextern

Tandheugel of slede Rotor Tacc_rotor

Last Tacc_last

Tandheugel of slede Facc_mbew + Fextern

Page 28: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

16

2.1.6 Toegepast op de 7e as

Aan de hand van de conclusies uit 2.1.5 is het nu mogelijk om met Motion Simulation het motorkoppel bij de 7e

as te bepalen. De componenten van de aandrijving zijn terug te vinden in Tabel 2-4, Figuur 2-9 en Bijlage A:

Componenten aandrijving 7e as.

Tabel 2-4: Componenten van de aandrijving van de 7e as

Onderdeel Type Massa (kg) Inertie (10-4

kgm²)

Koppeling rotor-reductiekast (1) Atlanta 65 44 919 0,55 1,757

Reductiekast (2) Atlanta 58 84 107 12 1,372

Klembus reductiekast-tandwielas (3) Atlanta 80 84 036 0,40 4,029

Tandwielas (4) Atlanta 20 89 420 1,60 5,04

Slede (5) 140

Geleidingswagens (4x) (6) HIWIN HGH35HA 7,68

Elektrische smeerpomp (7) Lincoln QLS 301 5,7

Figuur 2-9: Exploded view van de aandrijving van de 7

e as

Onderaan de slede wordt een grondplaat voorzien met 3 boringen om de robotarm te bevestigen. Er wordt ook

een plaatwerk gemaakt voor de controller. Het resultaat is te zien in Figuur 2-12.

Het maken van een motion simulation gebeurt in een aantal stappen. De precieze instellingen in NX zijn te

vinden in Bijlage B: Instellingen in NX voor 7e as.

Link

Eerst moeten de bewegende componenten, links, worden gedefinieerd. Voor de eenvoud kunnen alle

componenten die dezelfde beweging uitvoeren, samengenomen worden in één link. Zo blijven er slechts 3 links

over: de koppeling (Figuur 2-10), de tandwielas samen met de klembus (Figuur 2-11) en de lineair bewegende

massa (Figuur 2-12).

⑤ ⑥ ⑦

Page 29: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

17

Figuur 2-10: Link Koppeling_Reductiekast

Figuur 2-11: Link Tandwielas_Klembus

Figuur 2-12: Link Massa

Siemens NX berekent automatisch de massa en inertie op basis van de geometrie en materiaalsoort van de link.

Standaard wordt staal toegekend maar aangezien niet alle componenten bestaan uit dit materiaal komen de

massa en inertie niet overeen met de werkelijkheid. Nu is er de mogelijkheid om aan elke component het juiste

materiaal toe te kennen of de massa en inertie van een link manueel aan te passen. In de meeste situaties

wordt bij elke component het juiste materiaal opgegeven en zal de massa en inertie berekend door de

software overeenkomen met de werkelijke waarden. Hier is gekozen voor de manuele invoer omdat de massa

en inertie van de componenten terug te vinden zijn in de datasheets. Bij het definiëren van een link worden de

waarden gebruikt uit Tabel 2-4.

De inertie van de reductiekast wordt in rekening gebracht door ze op te tellen bij die van de koppeling. De

massa en inertie van de tandwielas en klembus worden samengenomen (Tabel 2-5).

De massa van de lineair bewegende onderdelen is gelijk aan 0,55 + 12 + 0,40 + 1,60 + 140 + 7,68 + 5,7 + 111

(robotarm) + 50 (controller) = 328,93 kg. Dit wordt afgerond naar 350 kg omdat de massa van de grondplaat,

de motor, kabelrups, … nog erbij moet komen. Voor de link Massa wordt dan 347,45 kg gekozen als massa.

Tabel 2-5: Massa en inertie van de verschillende links

Link Massa (kg) Inertie (10-4

kgm²)

Koppeling_Reductiekast 0,55 1,757 + 1,372 = 3,129

Tandwielas_Klembus 0,40 + 1,60 = 2,00 4,029 + 5,04 = 9,069

Massa 350 - 0,55 - 2,00 = 347,45

Page 30: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

18

Joint

De link Koppeling_Reductiekast moet roteren ten opzichte van de link Massa. Dit wordt dus voorgesteld met

een revolute joint (Figuur 2-13). Hetzelfde geldt voor de link Tandwielas_Klembus waar ook een revolute joint

wordt opgelegd. Als laatste kan de link Massa enkel transleren door het definiëren van een slider joint.

Figuur 2-13: Verschillende joints bij de 7

e as

Coupler

Er zijn verschillende mogelijkheden om de reductiekast en de tandwiel-tandheugeloverbrenging voor te stellen.

Bij de reductiekast bestaat de keuze tussen een gear of 2-joint coupler maar aangezien de in- en uitgaande as

van de reductiekast gekruist liggen, speelt dit geen rol. Er wordt gekozen voor een gear (Figuur 2-14) met een

overbrengingsverhouding van 6,75. Zoals te zien in Tabel 2-3 is het totale koppel aan rotorzijde niet te bepalen

wanneer de driver werkt op de tandheugel bij een rack and pinion. Daarom wordt de tandwiel-

tandheugeloverbrenging voorgesteld door een 2-joint coupler (Figuur 2-15) met een straal van 31,83 mm voor

het tandwiel. Er kan ook gekozen worden voor twee 2-joint couplers maar dit leidt tot hetzelfde resultaat.

Figuur 2-14: Gear tussen Koppeling_Reductiekast en Tandwielas_Klembus

Page 31: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

19

Figuur 2-15: 2-joint coupler tussen Tandwielas_Klembus en Massa

Driver

Het is de bedoeling om het nodige motorkoppel en -toerental te bepalen voor een bepaalde beweging van de

slede. Hier wordt een trapeziumprofiel gekozen met een maximale versnelling van 1,5 m/s² en maximale

snelheid van 2 m/s. Er wordt vanuit stilstand versneld met 1,5 m/s² tot een snelheid van 2 m/s. Na 1,33 s wordt

deze snelheid bereikt en 1,67 s lang aangehouden. Daarna wordt vertraagd met 1 m/s² tot stilstand.

Het snelheidsprofiel is gevisualiseerd in Figuur 2-16. Deze werkt als driver op de slider joint van de link Massa.

Figuur 2-16: Snelheidsprofiel opgelegd aan Massa

Het totale koppel op de koppeling is te berekenen volgens (2.7). Hiervoor is het gemeten koppel aan rotorzijde

(Koppeling_Reductiekast), lastzijde (Tandwielas_Klembus) en de gemeten kracht op de slede (Massa) nodig.

Door het gebruiken van een gear tussen kruisende assen en 2-joint coupler meet elke sensor het versnellings-

koppel of kracht van de link zelf.

0

0,2

0,4

0,6

0,8

1

1,2

1,4

1,6

1,8

2

0,000 0,500 1,000 1,500 2,000 2,500 3,000 3,500 4,000 4,500 5,000

Sne

lhe

id (

m/s

)

Tijd (s)

Snelheidsprofiel Massa

Page 32: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

20

Het totale koppel op de koppeling wordt dan:

Via een functie in NX gebeurt deze berekening automatisch. Het resulterende koppel is te zien in Figuur 2-17.

Figuur 2-17: Totaal koppel bepaald via Motion Simulation

Het maximum koppel treedt op tijdens het versnellen met 1,5 m/s² en bedraagt 2,58 Nm. De motor moet dus

in staat zijn om dit koppel plus het versnellingskoppel van zijn eigen rotor te leveren. Eens er een motor is

gekozen, kan het 3D model geïntegreerd worden in de motion simulation en zal het versnellingskoppel van de

rotor ook in rekening worden gebracht.

Het verloop van het toerental van de link Koppeling_Reductiekast is te zien in Figuur 2-18.

Figuur 2-18: Toerental bepaald via Motion Simulation

De motor moet dus 4050 tr/min draaien om de slede aan 2 m/s te laten bewegen.

2,58

-1,72 -2

-1,5

-1

-0,5

0

0,5

1

1,5

2

2,5

3

0,000 0,500 1,000 1,500 2,000 2,500 3,000 3,500 4,000 4,500 5,000

Ko

pp

el (

Nm

)

Tijd (s)

Totaal koppel op koppeling

4050

0

500

1000

1500

2000

2500

3000

3500

4000

4500

0,000 0,500 1,000 1,500 2,000 2,500 3,000 3,500 4,000 4,500 5,000

Toe

ren

tal (

tr/m

in)

Tijd (s)

Toerental Koppeling_Reductiekast

Page 33: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

21

2.2 Cymex

Deze engineering tool is ontwikkeld door Wittenstein en is bedoeld om eenvoudig en snel een volledige

aandrijflijn te ontwerpen. Zoals te zien op Figuur 2-19 kunnen van links naar rechts de verschillende

componenten van de aandrijflijn worden gekozen. Uiterst links wordt de applicatie zoals een tandwiel-tandlat,

spindel, riem, draaitafel of ketting/riem geselecteerd. Ernaast kan een transformatie worden opgegeven zoals

een rondseltrap, riemschijftrap of koppeling. Verder kan nog een vertragings- of reductiekast, opnieuw een

transformatie en een motor worden gekozen.

De klokjes stellen meetinstrumenten voor die het koppel, toerental, … berekenen. De richting van de wijzer

geeft aan welke componenten er in rekening zijn gebracht. Zo is op klok 1 enkel het koppel uitgeoefend door

de applicatie berekend terwijl op klok 5 het koppel uitgeoefend door alle componenten is berekend.

Figuur 2-19: Hoofdscherm Cymex

Met behulp van deze software is ook het motorkoppel en -toerental bepaald met hetzelfde opgelegde

snelheidsprofiel van de slede. Voor de werkwijze wordt verwezen naar Bijlage C: Instellingen in Cymex. De

gemeten waarden aan de rotorzijde van de reductiekast zijn te zien in Figuur 2-20.

Figuur 2-20: Resultaten Cymex

APPLICATIE VERTRAGINGSKAST

TRANSFORMATIE TRANSFORMATIE

MOTOR

Page 34: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

22

De maximale waarde voor het koppel is 2,58 Nm en komt overeen met het gemeten koppel in de motion

simulation. Ook de maximale snelheid van 4050 tr/min is bepaald via de motion simulation.

De resultaten bekomen met Cymex zijn dezelfde als die van Siemens NX 8.5. Beide zijn dus geschikt voor het

selecteren van een aandrijving maar Cymex heeft als voordeel dat een motor uit zijn database ook wordt

gecontroleerd op overbelasting. Bij Siemens NX 8.5 wordt enkel het nodige koppel en toerental berekend en

moet de controle van de motor apart gebeuren.

2.3 Theoretisch

Aan de hand van de theorie wordt nu nagegaan hoe de berekening gebeurt in Siemens NX 8.5 en Cymex.

De belangrijkste formules zijn [4]:

De equivalente inertie gereflecteerd naar rotorzijde van de reductiekast:

met: : equivalente inertie gereflecteerd naar rotorzijde [kgm²]

: inertie aan rotorzijde [kgm²]

: inertie aan lastzijde [kgm²]

: overbrengingsverhouding van de reductiekast

Het equivalent van het extern lastkoppel aan rotorzijde van de reductiekast:

met: : equivalent van het extern lastkoppel aan rotorzijde [Nm]

: extern koppel aan lastzijde [Nm]

De equivalente inertie gereflecteerd naar tandwielzijde bij een tandwiel-tandheugeloverbrenging:

met: : equivalente inertie gereflecteerd naar tandwielzijde [kgm²]

: inertie van het tandwiel [kgm²]

: massa van de lineair bewegende componenten [kg]

: straal van het tandwiel [m]

Het vereist motorkoppel bij een aandrijving:

met: : motorkoppel [Nm]

: equivalent van het tegenwerkend koppel op de rotor [Nm]

: hoekversnelling van de rotor [rad/s²]

Page 35: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

23

Toegepast op de 7e as:

met: : inertie van de rotor [kgm²]

: inertie van de koppeling rotor-reductiekast [kgm²]

: inertie van de reductiekast [kgm²]

: inertie van de klembus [kgm²]

: inertie van de tandwielas [kgm²]

Met (2.19) worden de resultaten van de motion simulation en Cymex gecontroleerd. Het tegenwerkend koppel

wordt gelijkgesteld aan 0 Nm omdat er in NX en Cymex geen rekening gehouden is met wrijving. Er is ook nog

geen motor aanwezig dus de inertie van de rotor is 0 kgm². Het koppel op de motor wordt berekend als volgt:

Rekening houdend met de overbrengingsverhouding van de reductiekast van 6,75 en de straal van het tandwiel

gelijk aan 31,83 mm wordt de equivalente inertie gereflecteerd naar de rotor:

Afhankelijk van de gewenste lineaire versnelling van de slede is een ander motorkoppel nodig. Het verband

tussen de lineaire versnelling van de slede en de hoekversnelling van de rotor is:

met: : hoekversnelling van de rotor [rad/s²]

: lineaire versnelling van de slede [m/s²]

Met behulp van bovenstaande formules wordt een Excel template gemaakt die te vinden is in de bijlagen. Op

deze manier wordt het motorkoppel bij een aantal lineaire versnellingen van de slede berekend (Tabel 2-6).

Tabel 2-6: Motorkoppel in functie van de lineaire versnelling van de slede

Lineaire versnelling slede (m/s²) 1,0 1,5 2,0 2,5 3,0

Motorkoppel (Nm) 1,72 2,58 3,44 4,30 5,16

Page 36: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

24

Bij dit berekend motorkoppel is nog geen rekening gehouden met wrijving, rendementen van de

overbrengingen en de inertie van de rotor! In werkelijkheid zal de motor dus iets meer koppel moeten leveren

om de gewenste lineaire versnelling te halen.

Ook het toerental is een belangrijke parameter bij het kiezen van een motor. Het verband tussen de lineaire

snelheid van de slede en het motortoerental is:

met: : motortoerental [tr/min]

: lineaire snelheid van de slede [m/s]

Ter verduidelijking is het toerental berekend bij een aantal lineaire snelheden van de slede (Tabel 2-7).

Tabel 2-7: Motortoerental in functie van de lineaire snelheid van de slede

Bij een versnelling van 1,5 m/s² (Tabel 2-6) en een snelheid van 2 m/s (Tabel 2-7) zijn dezelfde waarden terug te

vinden zoals berekend met Motion Simulation en Cymex. Het is dus mogelijk om gebruik makend van Siemens

NX 8.5 en Cymex correcte resultaten te bekomen bij het selecteren van een aandrijving.

2.4 Selecteren van motor en drive

Met het berekende koppel en toerental kan nu een motor en drive worden geselecteerd. De motor moet in

staat zijn om 2,58 Nm te leveren en aan 4050 tr/min te draaien bij een snelheidsprofiel van de slede zoals in

Figuur 2-16. Daarnaast moet de motor nog aan enkele zaken voldoen:

- nauwkeurige positieterugkoppeling (resolver of encoder)

- beperkte inbouwhoogte

- rem om de slede snel tot stilstand te brengen

- geforceerde koeling is niet nodig

Resolvers en encoders zijn sensoren om de hoekpositie van een as te meten. Resolvers zijn robuuster en

leveren een analoge wisselspanning die evenredig is met de positie van de as. Encoders leveren meestal

blokvormige spanningen (pulsen) waarbij elke puls overeenkomt met een toename in de positie van de as. Hun

nauwkeurigheid wordt uitgedrukt in precisie en resolutie. Precisie is de mogelijkheid van het toestel om een

hoek te meten ten opzichte van een theoretische standaard. Resolutie geeft aan in hoeverre het toestel een

kleine verandering in hoek kan waarnemen [5].

Naast de keuze tussen een resolver of encoder moet de beperkte inbouwhoogte van de motor in rekening

worden genomen. De lengte van de motor (inclusief de rotor) mag niet langer zijn dan 290 mm.

Zoals vermeld in 1.3 moet de drive beschikken over een specifieke operation mode: interpolated position

mode. Via een marktstudie zijn een aantal leveranciers gecontacteerd waaronder Lenze.

Lineaire snelheid slede (m/s) 1,0 1,5 2,0 2,5 3,0

Motortoerental (tr/min) 2025 3038 4050 5063 6075

Page 37: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

25

-

-

De 7e as beschikt al over een reductiekast en een koppeling aan rotorzijde met een diameter van 19 mm. Lenze

produceert een aantal servo- en inductiemotoren met een dergelijke rotordiameter. De inductiemotoren zijn

echter te lang dus wordt gekozen voor een servomotor [6].

Vanwege de lineaire snelheid van 2 m/s wordt best gekozen voor de MCS12D41 met een nominaal toerental

van 4050 tr/min. Deze motor lijkt geschikt maar moet gecontroleerd worden op de stabiliteitsvoorwaarde: de

verhouding van het externe tot het motormassatraagheidsmoment (actieve deel zonder rem) mag een factor

10 niet overschrijden [7]:

met: : equivalente lastinertie gereflecteerd naar rotorzijde [kgm²]

Deze voorwaarde is heel belangrijk omdat een te grote verhouding kan leiden tot instabiel gedrag. Dit is vooral

problematisch wanneer de gekoppelde stijfheid k (reductiekast) tussen de motor en last laag is en/of de last te

traag versnelt [8]. Op Figuur 2-21 is de snelheid van de motor (actuator) en last te zien in functie van

verschillende inertieverhoudingen en gekoppelde stijfheden. Linksboven staat de meest gunstige situatie

waarbij de inertieverhouding 1:1 en de stijfheid heel groot is. De last volgt perfect de beweging van de motor

met een grote versnelling. Rechtsboven is de inertieverhouding ook 1:1 maar is de stijfheid veel lager met als

gevolg dat de beweging van de last een enorm doorschot ondervindt. Linksonder is de stijfheid terug veel

hoger maar is de inertieverhouding 10:1, hierdoor volgt de last de motor maar is de versnelling veel kleiner.

Rechtsonder is de minst gunstige situatie afgebeeld: een grote inertieverhouding waardoor de lastversnelling

veel kleiner is en een kleine stijfheid waardoor de motor te veel wordt bijgeregeld met doorschot als gevolg.

Figuur 2-21: Invloed van de inertieverhouding en stijfheid op de stabiliteit [8]

INER

TIEV

ERH

OU

DIN

G

STIJFHEID +

Page 38: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

26

De rotorinertie van de MCS12D41 is 4,00 kgcm² waardoor de inertieverhouding gelijk is aan:

Wanneer deze motor wordt gebruikt, zal het systeem instabiel worden en moeilijk te regelen zijn.

Om te voldoen aan de voorwaarde van stabiliteit moet de inertie van de rotor minstens gelijk zijn aan:

Een mogelijke oplossing lijkt om de lastinertie gereflecteerd naar rotorzijde te verkleinen door een grotere

overbrengingsverhouding te kiezen maar dan is een hoger toerental nodig om de lineaire snelheid te halen!

Een motor die net niet voldoet aan de stabiliteitsvoorwaarde is de MCS12H35. Deze motor heeft een inertie

van 7,30 kgcm² wat leidt tot een verhouding van:

De kortste uitvoering met rem en positieterugkoppeling (resolver of incrementele encoder) heeft een lengte

van 288 mm. Er wordt gekozen voor de resolver vanwege de hogere resolutie (0,80 ten opzichte van 1,30

boogminuten). De motor heeft een nominaal toerental van 3525 tr/min, een nominaal koppel van 7,50 Nm en

een nominaal vermogen gelijk aan 2,80 kW. Belangrijk om op te merken, is het feit dat de verhouding van de

inerties nog iets groter wordt door het gebruik van de rem!

Nu een motor is geselecteerd, moet een bijhorende drive gekozen worden. Om voldoende motorkoppel te

hebben, moet de drive in staat zijn om de nodige stroom te leveren zonder de vermogenselektronica te

overbelasten.

Hiervoor heeft Lenze een tool ontworpen: Drive Solution Designer (DSD). Het vertoont veel overeenkomsten

met Cymex. De parameters van de aandrijving zoals de straal van het tandwiel, de reductieverhouding, de

inerties van de componenten,… moeten opgegeven worden.

Een overzicht is te zien op Figuur 2-22. Het bestand GANTRY.dsd is te vinden in de bijlagen.

Figuur 2-22: Overzicht van de aandrijving in Drive Solution Designer

Page 39: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

27

Hetzelfde snelheidsprofiel zoals in Siemens NX 8.5 en Cymex wordt opgelegd. De resultaten worden

weergegeven op Figuur 2-23.

Figuur 2-23: Resultaten Drive Solution Designer

Op de tweede rij is van links naar rechts het motorkoppel, het koppel aan de ingang van de reductiekast en het

motortoerental te zien tijdens het versnellen met 1,5 m/s². Het koppel van 2,58 Nm en toerental van 4050

tr/min is ook bekomen met Motion Simulation en Cymex. Het motorkoppel van 2,85 Nm is het koppel aan de

ingang van de reductiekast verhoogd met het versnellingskoppel van de rotor en de rem.

De motor MCS12H35 met een nominaal koppel van 7,50 Nm beschikt dus over meer dan voldoende koppel om

de last te versnellen. Het maximaal toerental is 6000 tr/min en is dus ook genoeg om een lineaire snelheid van

2 m/s te halen.

De 9400 HighLine drive E94ASHE0074 heeft een nominaal vermogen van 3,00 kW wat voldoende is voor de

motor (2,80 kW). De aansluiting van de drive is te vinden in Bijlage D: Aansluitschema 9400 HighLine drive.

Er zijn dus verschillende mogelijkheden om een aandrijving te dimensioneren: via CAD software met de optie

Motion Simulation, dimensioneringstools of theoretisch. In Tabel 2-8 worden de methodes vergeleken.

Tabel 2-8: Voor- en nadelen van verschillende dimensioneringsmethodes

Dimensioneringsmethode Voordelen Nadelen

CAD (Motion Simulation)

Automatische berekening van

massa en inertie

Visualisatie van beweging

Houdt rekening met beweging van

andere objecten zoals robotarm

Geometrie moet getekend worden

Koppelmeting afhankelijk van

configuratie

Geen controle van motor op belasting

Dimensioneringstool

Cymex

Snel en eenvoudig

Controle van motor op belasting

Massa en inertie moet gekend zijn

Geen visualisatie van beweging

Dimensioneringstool

Drive Solution Designer

Meest uitgebreide methode

Controle van motor op belasting

Afdrukken van overzicht

Massa en inertie moet gekend zijn

Geen visualisatie van beweging

Enkel keuze uit Lenze componenten

Theoretisch Snelle schatting van koppel en

toerental met rekenblad

Biedt meest inzicht

Massa en inertie moet gekend zijn

Geen visualisatie van beweging

Kennis nodig van formules

Page 40: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

28

Hoofdstuk 3: Aansturen robotarm

Dit hoofdstuk bevat alle nodige informatie in verband met robotica. De robotarm wordt bekrachtigd via een

controller (Figuur 3-1) ontworpen door Stäubli. Deze computer bevat de nodige rekenkracht en

vermogenelektronica om de servomotoren in de arm aan te sturen. Naast de controller is er de MCP (Manual

Control Pendant, Figuur 3-2) en de WMS (Working Mode Selection, Figuur 3-3).

Figuur 3-1: Controller CS8C [9]

Figuur 3-2: MCP [9]

Figuur 3-3: WMS [9]

De MCP is te vergelijken met een afstandsbediening voor de controller. Via dit toestel wordt de voeding

ingeschakeld en kan de arm bewogen worden. Ook de bewegingsmodus (zie 3.1.1) en snelheid wijzigen en het

starten en stoppen van een applicatie gebeurt via de MCP. Het is mogelijk om de MCP niet te gebruiken en de

controller aan te sturen via een PLC. De WMS dient om de werkingsmodus te selecteren.

3.1 Werkingsmodi

Er zijn drie verschillende werkingsmodi: manueel, lokaal en remote (Figuur 3-4). Via een sleutel op de WMS

wordt de schakelaar in één van de drie posities gezet (Figuur 3-3).

Figuur 3-4: Werkingsmodi [9]

3.1.1 Manueel

Deze mode wordt vooral gebruikt om de robotarm te laten bewegen via de MCP of een applicatie te testen. Dit

alles gebeurt aan een verlaagde snelheid van maximum 250 mm/s in het gereedschapsnulpunt (zie Frame) en

45 °/s voor elke as. Via drie verschillende bewegingsmodi (joint, frame en tool) worden er punten geteached. In

de vierde bewegingsmode (point) kan dan bewogen worden naar de aangeleerde punten.

Joint

De robotarm kan as per as worden aangestuurd. De positie van de assen wordt telkens in graden weergegeven.

Op de robotarm is de positieve en negatieve zin van elke as aangeduid.

Page 41: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

29

Frame

Het frame is het coördinatenstelsel dat wordt gebruikt om de positie van het tool center point (TCP) of het

gereedschapsnulpunt te definiëren (zie Tool). Dit komt overeen met de oorsprong van het assenstelsel in

stippellijn op Figuur 3-5.

Als frame kan gekozen worden voor de world of een zelf gedefinieerd coördinatenstelsel (user frame) ten

opzichte van de world. De world is een vast coördinatenstelsel met een oorsprong op as 1 ter hoogte van as 2.

Zoals te zien op Figuur 3-5 ligt de Z-as op as 1 en gaat weg van de voet. De X-as staat loodrecht op de Z-as en

gaat weg van de aansluiting. De Y-as volgt uit de rechterhandregel.

Figuur 3-5: Beweging in frame mode ten opzichte van de world [9]

In frame mode beweegt het tool center point langs de drie assen van het huidige coördinatenstelsel (frame).

Hier is als frame de world en als tool een grijper gedefinieerd. Wanneer op Z+ wordt gedrukt, zal het nulpunt

van de grijper bewegen volgens de Z+ as van de world dus verticaal omhoog.

Tool

De tool is ook een coördinatenstelsel en wordt bepaald door het gereedschap. Standaard is de tool de

robotflens (flange). Op Figuur 3-6 zijn de assen van de flange getekend. De Z-as staat loodrecht op het

flensoppervlak. De X-as gaat door de boring (Figuur 3-7) en de Y-as volgt opnieuw uit de rechterhandregel. In

de praktijk wordt er meestal een gereedschap (user tool) zoals een grijper gebruikt. Deze wordt gedefinieerd

ten opzichte van de flange.

TCP

Page 42: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

30

Figuur 3-6: Flange van de TX90

BORING

Figuur 3-7: Boring in de flange van de TX90

Het nulpunt van het gereedschap wordt nu aangestuurd volgens de drie assen van de tool. Veronderstel dat de

tool is gedefinieerd zoals te zien op Figuur 3-8. Wanneer Z+ wordt ingedrukt, zal het nulpunt van de grijper in

de Z+ richting van de tool bewegen dus naar beneden. Dit is heel belangrijk wanneer de grijper zich net boven

het werkstuk bevindt. Wanneer in frame mode wordt gewerkt met als frame de world zal de grijper omhoog

bewegen bij het indrukken van Z+ maar in tool mode omlaag!

Figuur 3-8: Beweging in tool mode ten opzichte van een user tool

X-

Z-

X+

Z+

Y+

Z+

Y+

X+

X+

Y+ Z+

TCP

Page 43: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

31

Point

Het tool center point (TCP) of gereedschapsnulpunt wordt bewogen naar een bepaald punt in de applicatie.

Hiervoor zijn er drie verschillende manieren:

Line: het tool center point beschrijft een rechte lijn naar het geselecteerde punt.

Joint: de beweging gebeurt as per as. Dit is de snelste manier om te bewegen naar een punt.

Align: de Z-as van de tool wordt evenwijdig gebracht met de dichtstbij gelegen as van het huidige frame.

3.1.2 Lokaal

In Lokale mode kan de robotarm een applicatie uitvoeren waarbij het startsignaal afkomstig is van de MCP. De

applicatie kan gestopt of opnieuw gestart worden en de snelheid is aanpasbaar zodat de bewegingen van de

robotarm de maximale snelheid kunnen halen.

3.1.3 Remote

Deze mode is te vergelijken met Lokaal. Alleen moet de voeding worden ingeschakeld via een extern systeem

zoals een PLC. De applicatie wordt ook onmiddellijk uitgevoerd zodra de voeding wordt ingeschakeld [9].

3.2 Stäubli Robotics Suite (SRS)

Naast het manueel aansturen van de robotarm in joint, frame, tool of point mode kan een applicatie

ontwikkeld worden in de Stäubli Robotics Suite (SRS) (Figuur 3-9). Dit softwarepakket bestaat uit een Cells

manager, VAL3 Studio, Emulator (Figuur 3-10) en een 3D Studio (Figuur 3-10).

Cells manager

Met deze functie wordt een Cell aangemaakt met de juiste gegevens van de robotarm en de controller.

VAL3 Studio

Dit is de programmeeromgeving om applicaties te creëren.

Emulator

Deze functie bevat een simulatie van een controller en een MCP.

3D Studio

In deze optie wordt de robotarm en zijn bewegingen gevisualiseerd.

Transfer Manager

Via deze functie kan data verstuurd worden van en naar de controller.

Remote Access

Deze geeft op afstand de toestand weer van de controller.

Page 44: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

32

Figuur 3-9: Hoofdscherm Stäubli Robotics Suite

Figuur 3-10: Emulator en 3D Studio

Page 45: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

33

Hoofdstuk 4: Synchroniseren

Dit laatste hoofdstuk omvat de thema’s automatisering en regeltechniek en beschrijft de nodige stappen om de

beweging van de robotarm te synchroniseren met een externe as. Het thema automatisering behandelt de

communicatie tussen de controller van de robotarm en de drive van de externe as. De controller en de drive

moeten geconfigureerd worden om de verstuurde data correct te interpreteren. In het thema regeltechniek

worden de regelkringen nader bekeken en wordt er ook aandacht besteed aan de weg die de setpoints

(stuurwaarden) afleggen. Als laatste dient een applicatie geschreven te worden waarbij een traject wordt

aangeleerd en uitgevoerd.

4.1 Communicatie tussen controller en drive

De communicatie tussen de Stäubli CS8C controller en de Lenze Servo Drive 9400 HighLine is gebaseerd op

CANbus en CANopen. In de controller wordt een CAN-kaart geïmplementeerd die communiceert met de drive.

De drive moet dus beschikken over een CAN interface. Voor de synchronisatie wordt interpolated positioning

gebruikt. Dit is een werkingsmodus (operation mode) van de drive beschreven in de CANopen standaard CiA

(CAN in Automation) 402: CANopen device profile for drives and motion control.

4.1.1 Controller Area Network

CANbus is een standaard gedefinieerd in de ISO (International Organization for Standardization) 11898-1: CAN

data link layer and physical signalling. Physical signalling beschrijft de transmissiemode (serieel of parallel,

synchroon of asynchroon) en definieert hoe een bit eruitziet (modulatie). De data link layer is het belangrijkste

onderdeel van het CAN protocol en geeft aan hoe de frames (berichten) worden verstuurd over het netwerk.

Deze laag behandelt ook de toegangsmethode tot de bus (busarbitrage) en voorziet de data van een

foutdetectiemechanisme.

Physical signall ing

Het CAN protocol geeft geen invulling aan de hardware vereisten van het medium. Enkel de transmissiemode

en modulatie worden behandeld. De communicatie is mogelijk in twee richtingen maar er kan slechts één node

(deelnemer) aan het zenden zijn (half-duplex). De bits worden één voor één verstuurd (serieel) en er zijn geen

start- en stopbits (synchroon) voorzien. Als modulatie wordt de NRZ (Non-Return-to-Zero) code gebruikt

waarbij het signaal constant hoog of laag blijft om een bit voor te stellen (Figuur 4-1). Voor de specificatie van

het medium zijn een aantal standaarden ontwikkeld. De belangrijkste zijn de ISO 11898-2: CAN High-Speed

Medium Access Unit en de CiA 102.

Figuur 4-1: Non-Return-to-Zero code [10]

Page 46: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

34

A ISO 11898-2

Deze standaard gebruikt als medium de elektrische tweedraadsbus die gebaseerd is op het

differentieelprincipe. Dit houdt in dat het spanningsverschil tussen de twee draden het niveau aangeeft. Een

logische ‘0’ wordt dominant genoemd, een logische ‘1’ recessief. Op Figuur 4-2 is te zien dat een dominant

niveau overeenkomt met een spanningsverschil van 2V tussen CAN_H (CAN High) en CAN_L (CAN Low). Bij een

recessief niveau is er geen spanningsverschil tussen beide. Wanneer twee nodes een ‘0’ en een ‘1’ op de bus

willen plaatsen, zal een ‘0’ op de bus komen omdat ‘0’ het dominante niveau is.

Figuur 4-2: Dominante en recessieve niveaus volgens ISO 11898-2 [11]

Om reflectie van signalen te vermijden, worden de beide uiteinden van de bus afgesloten met een weerstand

van 120 Ω (Figuur 4-3).

Figuur 4-3: CAN kabel volgens ISO 11898-2 [11]

B CiA 102 V3.0.0

De CiA Association heeft de CiA 102 V3.0.0: CAN Physical layer for industrial applications ontwikkeld. Die is

gebaseerd op de ISO 11898-2 standaard maar geeft ook enkele aanbevelingen voor bekabeling en connectoren.

Zo wordt het gebruik van twisted pair (TP) en/of afgeschermde kabel (Shielded) en een 9-polige SUB D

connector aangeraden (Figuur 4-4). TP is het paarsgewijs in elkaar draaien van geïsoleerde aders. Op die

manier is de kabel beter bestand tegen elektromagnetische interferentie. Bij een Shielded kabel is elk aderpaar

op zich nog eens geïsoleerd.

CAN Node A CAN Node B

CAN Node C

120 120

CAN_H

CAN_L

CAN_H CAN_L

3,5V

2,5V 1,5V

recessief dominant recessief

Page 47: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

35

Figuur 4-4: SUB D-9 connector volgens CiA 102 V3.0.0 [11]

Data l ink layer

Het is de taak van de datalinklaag om de toegang tot de bus goed te laten verlopen en de frames correct te

versturen over het netwerk.

A CSMA/CA

Bij CAN is de bustoegang gebaseerd op CSMA/CA (Carrier-Sense, Multiple Access/Collision Avoidance). Alle

nodes luisteren tot de bus vrij komt (CS) en kunnen dan toegang verkrijgen tot de bus (MA). CA zorgt ervoor

dat botsingen worden vermeden wanneer meerdere nodes een frame willen verzenden op een vrij medium.

Elk bericht is voorzien van een 11-bits identifier (ID) die de prioriteit van een bericht bepaalt (Figuur 4-5).

Veronderstel twee nodes die beginnen zenden wanneer de bus vrij komt. Zolang beide hetzelfde niveau op de

bus plaatsen, blijven ze zenden. Wanneer de ene node een dominant niveau (‘0’) en de andere een recessief

niveau (‘1’) op de bus plaatst, wint het dominante niveau. De recessieve node ziet het dominante niveau op de

bus en weet dat een andere node meer prioriteit heeft en stopt met zenden. De bustoegang gebeurt dus

bitsgewijs: Bitwise Arbitration.

PIN Signaal Omschrijving

1 Niet gebruikt Gereserveerd

2 CAN_L CAN_L bus draad (dominant laag)

3 CAN_GND CAN ground

4 Niet gebruikt Gereserveerd

5 (CAN_SHLD) Optioneel CAN Schield

6 (GND) Optionele CAN GND

7 CAN_H CAN_H bus draad (dominant hoog)

8 Niet gebruikt Gereserveerd

9 (CAN_V+) Optionele externe CAN voeding

(gebruikt voor voeding van transceivers)

‘Mannelijke’ SUB D-9 connector

Page 48: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

36

B Dataframe

Figuur 4-5: CAN Base Format frame met identifier [11]

Het CAN protocol voorziet twee soorten dataframes: Base en Extended Format. Het voornaamste verschil is de

grootte van de identifier: 11 bits (Base) tegenover 29 bits (Extended). Naast de prioriteit aangeven, bepaalt de

identifier voor welke node een bericht is bestemd. Het dataveld (Data field) kan maximum bestaan uit 8 bytes.

4.1.2 CANopen

Met het CAN protocol is het mogelijk om berichten te versturen maar dit is niet voldoende om een volledig

netwerk te bouwen. Om grote hoeveelheden data (meer dan 8 bytes) te versturen, de nodes te configureren

over het netwerk en het netwerk te beheren, zijn bijkomende functies nodig. Deze worden ingevuld door het

CANopen protocol, een verzameling van profielen (Figuur 4-6). Het fundament van elke CANopen toepassing is

de CiA 301 V4.2.0: CANopen application layer and communication profile. Dit profiel is gestandaardiseerd in de

EN (Europese Norm) 50325-4 en beschrijft de basiscommunicatie en het netwerk management. Afhankelijk van

de toepassing kunnen bijkomende profielen geïmplementeerd worden. Deze worden Device en Application

Profiles genoemd en beginnen met nummer 4. Device Profiles beschrijven hoe CANopen toegepast moet

worden voor een specifiek toestel zoals een drive. Application Profiles gaan verder en beschrijven een volledige

applicatie. Vaak moet de CANopen applicatielaag (CiA 301) verder uitgebreid worden door Frameworks die

beginnen met nummer 3. Deze bevatten extra configuratiemechanismen, toegangsmethodes, …

Figuur 4-6: CAN en CANopen standaarden [11]

CAN standaard – Datalink & Fysieke laag

DS-301

Communicatie Profile

DS-3xx

Frameworks

DS-4xx

Device Profiles

DS-4xx

Application Profiles

Start of frame

Arbitration field

Control field

Data field

CRC field

ACK field

End of frame field

Intermission field

Message Identifier 11 bit

Remote Transmission Request

1 bit

Page 49: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

37

De inwendige opbouw van elk CANopen device (toestel) bestaat uit drie elementen: communicatieobjecten,

object dictionary en applicatie (Figuur 4-7). Deze worden verder achtereenvolgens besproken.

Figuur 4-7: Interne structuur van een CANopen device [12]

Elk device heeft ook een aantal logische verbindingen (kanalen) naar één of meerdere nodes waarlangs data

wordt verstuurd. Net zoals bij CAN wordt elk bericht voorzien van een identifier. Bij CANopen wordt er echter

onderscheid gemaakt tussen drie soorten identifiers:

- Node ID: is uniek voor elke node in een CAN netwerk.

- Object dictionary index (en subindex): duidt op de plaats van een variabele in de object dictionary.

- COB (Connection Object) ID: komt overeen met de identifier in het CAN protocol. In CANopen heeft elke

logische verbinding tussen nodes een uniek COB ID (zie Process Data Objects (PDO)).

Object dictionary

Het belangrijkste onderdeel van een CANopen device is de object dictionary (Figuur 4-8). Deze tabel bevat

objecten die de configuratie en mogelijkheden van het device beschrijven. Elk object in de object dictionary

heeft een 16-bits index. Op die manier kunnen er in totaal 216

of 65536 objecten worden opgeslagen.

Daarnaast is ook nog een 8-bits subindex voorzien om maximum 256 waarden met dezelfde index op te slaan.

De objecten met index 1000hex tot 1FFFhex bevatten alle parameters die nodig zijn voor de communicatie. Deze

zijn gedefinieerd in de CiA 301 en zijn gemeenschappelijk voor alle CANopen devices.

Op index 2000hex tot 5FFFhex is het applicatiegedrag van het device beschreven door de fabrikant. Van index

6000hex tot 9FFFhex wordt dit ingevuld met een gestandaardiseerd CANopen Device of Application Profile. Dit

komt aan bod bij Applicatie.

Page 50: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

38

Figuur 4-8: Structuur van de object dictionary [13]

Communicatieobjecten

Om de data in de object dictionary van een device te versturen over het netwerk, worden er communicatie-

objecten gebruikt. Deze bepalen de prioriteit (COB ID) en het type van de data.

De data die wordt verstuurd over het netwerk wordt vaak verdeeld in twee categorieën:

- Procesdata: dit omvat korte berichten zoals setpoints en actuele waarden van drives en bestaat slechts uit

enkele bits.

- Parameterdata: deze data dient om toestellen te configureren en bestaat uit meerdere bytes.

Naast proces- en parameterdata is er nog data voorzien voor synchronisatie, foutmeldingen, tijdsinformatie en

netwerk management. Om deze data optimaal te versturen, is er voor elk type data een communicatieobject

gedefinieerd. Zo kunnen de communicatieobjecten verdeeld worden in vier groepen:

- PDO (Process Data Object)

- SDO (Service Data Object)

- Speciale objecten: SYNC (Synchronization Object), EMCY (Emergency Object) en TIME (Time Stamp Object)

- NMT (Network Management)

Hierna worden enkel de belangrijkste besproken: PDO en NMT.

Page 51: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

39

A Process Data Objects (PDO)

Met deze objecten wordt procesdata verstuurd via de PDO kanalen (logische verbindingen tussen nodes).

Wanneer CANbus het onderliggend protocol is, kunnen maximaal 8 bytes procesdata per bericht verstuurd

worden. Met een TPDO (Transmit Process Data Object) wordt data verzonden en met een RPDO (Receive

Process Data Object) data ontvangen. Voor elke PDO zijn er communicatie- en mappingparameters nodig.

De communicatieparameters bevatten de COB ID en geven aan hoe de communicatie van een PDO gestart

wordt. Via het COB ID weet elke node of het bericht voor hem is bestemd of niet. Het COB ID bestaat uit de

som van een basis identifier en het eigen node ID. De basis identifier hangt af van het type data dat verstuurd

wordt. In de Predefined Connection Set van de CiA 301 V4.2.0 liggen deze vast (Figuur 4-9) maar kunnen indien

nodig worden aangepast. Het node ID wordt aan elke deelnemer toegekend en moet uniek zijn in het netwerk.

Stel dat een bericht wordt verstuurd naar node 1 via PDO1. De richting is naar het device dus wordt de basis

identifier van een RPDO gebruikt. De basis identifier voor RPDO1 is gelijk aan 200hex. Het COB ID van het bericht

wordt dan 200hex + 1 = 201hex. Als node 1 een bericht verstuurt via PDO1 wordt het COB ID 180hex + 1 = 181hex.

Figuur 4-9: Basis identifiers volgens de Predefined Connection Set van CiA 301 V4.2.0 [14]

Een node zal een PDO bericht enkel verwerken wanneer het COB ID overeenkomt met het COB ID van zijn

RPDO van dat kanaal. Dus wanneer het COB ID gelijk is aan de som van de basis identifier van RPDO1 (2, 3 of 4)

en zijn eigen node ID.

Zoals te zien op Figuur 4-9 zorgt de Predefined Connection Set ervoor dat een TPDO van een node nooit

hetzelfde COB ID kan hebben als de RPDO van een andere node. Met deze instellingen is er dus geen

communicatie mogelijk tussen nodes. Daarom wordt soms een CANopen master gebruikt waarbij alle TPDO’s

van de zendende slaves enkel ontvangen kunnen worden door de master. Deze verstuurt dan een PDO met het

COB ID van de RPDO van de ontvangende slave. Er moet dus altijd gecommuniceerd worden via de master.

Page 52: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

40

A.1 PDO linking

Soms is er geen master aanwezig in het netwerk en moet er rechtstreekse communicatie zijn tussen de

verschillende nodes. Dit wordt opgelost door de COB ID van een RPDO van de ontvangende node aan te

passen. Dezelfde waarde wordt gebruikt als het COB ID van de TPDO van de zendende node (Figuur 4-10).

Figuur 4-10: PDO linking [15]

A.2 PDO mapping

Het interessante aan een PDO is dat er meerdere procesdata variabelen in één CAN bericht kunnen verzonden

worden. Per variabele houdt één mappingparameter de index, subindex en lengte van die variabele bij. De

index en subindex geven de plaats van de variabele aan in de object dictionary (Figuur 4-11).

Figuur 4-11: PDO mappingparameter [11]

De mapping van een PDO bestaat zo uit een array (reeks) van mappingparameters. Deze array bevindt zich in

de object dictionary met een eigen index. Op die manier hoort bij de TPDO en RPDO van elk kanaal een array

van mappingparameters. Subindex 0 bevat het aantal variabelen. De andere subindices bevatten een

mappingparameter die verwijst naar een variabele.

In Figuur 4-12 worden er 4 variabelen verstuurd met TPDO3. De array van mappingparameters van TPDO3

bevindt zich op index 1A02hex. Het eerste element op subindex 0 bevat het aantal mappingparameters dus 4.

Subindex 1 bevat de eerste 32-bit mappingparameter die verwijst naar een variabele in de object dictionary.

Deze variabele bevindt zich op index 2010hex en subindex 1 en heeft een lengte van 8 bits. De 8-bits variabele

wordt in de eerste byte van TPDO3 geplaatst. Zo komt elke variabele op een unieke plaats in het dataveld van

het CAN bericht terecht.

In de ontvangende node moeten dezelfde mappingparameters ingesteld worden voor RPDO3 om de data

correct te interpreteren.

Index bit 31 tot en met 16

Subindex bit 15 tot en met 8

Lengte bit 7 tot en met 0

Page 53: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

41

Figuur 4-12: TPDO mapping [11]

Object Dictionary eenheid 1A02h

Sub Index Data Data Type

0 4 (Aantal gemapte object dictionary eenheden) UNSIGNED8

1 2010 01 08h (Index 2010h, Sub Index 1, 8 bit) UNSIGNED32

2 2010 02 08h (Index 2010h, Sub Index 2, 8 bit) UNSIGNED32

3 2011 01 10h (Index 2011h, Sub Index 1, 16 bit) UNSIGNED32

4 2011 02 10h (Index 2011h, Sub Index 2, 16 bit) UNSIGNED32

Object Dictionary eenheid 2010h

Sub Index Data Data Type

0 4 UNSIGNED8

1 8 bits waarde UNSIGNED8

2 8 bits waarde UNSIGNED8

… … …

Object Dictionary eenheid 2011h

Sub Index Data Data Type

0 5 UNSIGNED8

1 16 bits waarde UNSIGNED16

2 16 bits waarde UNSIGNED16

… … …

byte 1 byte 2 byte 3 byte 4 byte 5 byte 6 byte 7 byte 8

TPDO 3

Page 54: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

42

B Network Management (NMT)

Elk netwerk is voorzien van een NMT master. Deze kan de communicatie naar bepaalde of alle nodes starten,

stoppen of resetten. Dit gebeurt door het doorlopen van het NMT slave status diagram (Figuur 4-13).

Elke CANopen slave gaat automatisch van de Power-On Reset status naar Initialisation na het aanleggen van

spanning. Nadat de CAN/CANopen interface is geïnitialiseerd, stuurt de node een boot-up bericht en gaat over

naar de Pre-Operational status.

Enkel de NMT master kan een node doen overschakelen tussen Operational, Pre-Operational en Stopped. De

master kan ook de node of communicatie resetten.

Afhankelijk van de status van de NMT slave kunnen er bepaalde objecten gebruikt worden. Zo kan een SDO

ontvangen worden in de toestand Pre-Operational en Operational terwijl dit voor een PDO enkel mogelijk is in

Operational [11].

Figuur 4-13: NMT slave status diagram [11]

Applicatie

Afhankelijk van de waarde van de data in de object dictionary moet het device een actie ondernemen. Dit

wordt beschreven in een Device Profile. Hier wordt de CiA 402: Device profile for drives and motion control

gebruikt bovenop de CiA 301 (Figuur 4-6). Dit profiel beschrijft het gedrag van servo drives, frequentieregelaars

en aansturingen van stappenmotoren. Het is gestandaardiseerd als IEC (International Electrotechnical

Commission) 61800-7-201 en IEC 61800-7-301.

De belangrijkste functies van dit profiel zijn het vrijgeven (enablen) van het device en het selecteren van een

werkingsmodus (operation mode). De CiA 402 objecten hebben een index 6000hex tot 67FFhex.

A State Machine

De toestand van het device wordt weergegeven in het status word (6041hex). Dit wordt gewijzigd met het

control word (6040hex) en wordt beïnvloed door interne signalen zoals fouten (Figuur 4-14).

Initialisation

Pre-Operational

Operational

Stopped

Reset Communication

Power-On Reset

Reset Node

Transmit Boot-Up

Page 55: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

43

Figuur 4-14: State Machine [16]

Zo kan het device volgende toestanden hebben: Not Ready To Switch On, Switch On Disabled, Ready To Switch

On, Switched On, Operation Enable, Quick Stop Active, Fault Reaction Active of Fault. Enkel in Operation Enable

kan een beweging worden uitgevoerd.

B Operation mode

Het gedrag van het device hangt af van de actieve operation mode. De huidige mode wordt weergegeven in

modes of operation display (6061hex) en wordt gewijzigd met modes of operation (6060hex) [16].

Het CiA 402 profiel voorziet verschillende operation modes. De belangrijkste die de Lenze 9400 HighLine drive

ondersteunt, zijn de homing en interpolated position mode.

B.1 Homing mode

In deze mode gaat de drive op zoek naar de home positie. Dit is noodzakelijk na het wegnemen van de voeding

omdat de rotor kan verdraaid zijn. De homing gebeurt meestal met een mechanisch contact (home switch).

Wanneer het contact is bereikt, stopt het home proces en wordt die positie als de nulpositie aangenomen. Het

is ook mogelijk om de nulpositie te verplaatsen ten opzichte van de home positie met de home offset (607Chex).

Ook de homing methode (6098hex), snelheden (6099hex) en versnellingen (609Ahex) kunnen opgegeven worden.

Het starten gebeurt via het control word en het einde van de homing wordt weergegeven in het status word.

B.2 Interpolated position mode

Deze operation mode maakt het mogelijk om de beweging van verschillende of een enkele as te controleren.

Een controller (master) berekent het traject en stuurt de belangrijkste posities naar de drives (slaves) van de

verschillende assen. De drives beschikken meestal over een buffer zodat de posities in groep verstuurd worden.

Op basis van de posities in de buffer berekenen de drives tussenliggende waarden (interpoleren) waardoor het

oorspronkelijk traject wordt benaderd. Doordat de posities vroeger worden verstuurd dan nodig, kan de drive

al het volgende stuk van het traject berekenen waardoor de datatransportsnelheid kleiner mag zijn [17].

Nog een groot voordeel aan de interpolated position mode is te zien op Figuur 4-15. Doordat er tussenliggende

waarden voor de positie worden berekend, zijn de overgangen van het snelheids- en versnellingsprofiel bij een

nieuw positie setpoint vloeiender. In Position mode zijn er grote pieken zichtbaar bij het versnellingsprofiel.

Hierdoor is de ruk, afgeleide van de versnelling, theoretisch oneindig met veel slijtage aan mechanische

onderdelen als gevolg.

De beweging verloopt dus veel soepeler bij interpolated position mode waardoor er minder trillingen en een

grotere nauwkeurigheid is.

Page 56: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

44

Figuur 4-15: Position vs Interpolated position mode [18]

Hier zal de controller van de robotarm de belangrijkste posities berekenen uit het traject en deze versturen

naar de drive van de 7e as. Die zal op zijn beurt het oorspronkelijke traject benaderen door de posities te

interpoleren. De drive ondersteunt verschillende manieren om tussenliggende posities te berekenen: linear en

quadratic interpolation.

B.2.1 Linear interpolation

De controller verstuurt op elk tijdsinterval Δt een positie (P0, P1, …) naar de drive. Deze berekent

tussenliggende waarden waarbij de snelheid voor elk tijdsinterval constant wordt gehouden (4.1). Het traject

wordt zo benaderd door een aaneenschakeling van eerstegraadsveeltermen of lijnstukken (Figuur 4-16).

Figuur 4-16: Lineaire interpolatie

Page 57: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

45

B.2.2 Quadratic interpolation

Bij deze vorm van interpolatie worden tweedegraadsveeltermen of parabolen gebruikt tussen twee posities

waardoor het berekend traject over het algemeen beter aansluit dan bij lineaire interpolatie (Figuur 4-17). Het

nadeel is dat niet alleen de posities (P0, P1,…) maar ook de snelheden (V0, V1, …) op elk tijdsinterval moeten

berekend en verstuurd worden door de controller. Uit (4.4) en (4.5) volgen de factoren A1 en B1. Met (4.2)

wordt dan C1 gevonden waardoor het traject tussen P0 en P1 wordt benaderd door een parabool.

Figuur 4-17: Kwadratische interpolatie

4.2 Configureren van controller en drive

Om de communicatie tussen de controller en drive op een correcte manier te laten verlopen, moeten er enkele

instellingen gebeuren. Daarnaast dienen de specificaties van de externe as opgegeven te worden.

4.2.1 Instellingen voor de communicatie

Bij Network Management (NMT) is besproken dat elk CANopen netwerk beschikt over een NMT master. Hier is

de CAN-kaart in de controller ingesteld als NMT master en de drive als NMT slave.

Na het opstarten gaat de drive automatisch naar de Pre-Operational status (Figuur 4-13). In deze toestand kan

de drive SDO’s ontvangen en verwerken. De controller (NMT master) zal op dat moment de PDO mapping van

elk kanaal van de drive instellen. Ten slotte wordt via een NMT bericht de drive in Operation status gebracht.

De PDO mapping moet zowel in de controller als de drive ingesteld worden. Voor de controller gebeurt dit in

een bestand can.cfx en bij de drive in het programma Engineer. Deze software ontworpen door Lenze wordt

gebruikt om de drive te configureren en eventueel te besturen. De instellingen zijn terug vinden in Bijlage E:

Configuratie van controller en drive.

Page 58: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

46

Aangezien de PDO mapping van de CAN-kaart in de controller en de CAN interface van de drive hetzelfde is,

wordt enkel de mapping van de CAN-kaart beschouwd. Het enige verschil is dat een RPDO mapping bij de CAN-

kaart overeenkomt met een TPDO mapping bij de CAN interface. Dit is logisch want de CAN-kaart verwacht het

status word, de positie en operation mode van de drive via een RPDO1. De drive verstuurt deze gegevens met

een TPDO1 waarbij de gegevens op dezelfde plaats terechtkomen als in Figuur 4-18.

Figuur 4-18: RPDO1 mapping CAN-kaart controller

Figuur 4-19: TPDO1 mapping CAN-kaart controller

Figuur 4-20: RPDO2 mapping CAN-kaart controller

Figuur 4-21: TPDO2 mapping CAN-kaart controller

Het control word (6040hex), position setpoint (60C1hex) en modes of operation (6060hex) worden dus verstuurd

van de controller naar de drive via het eerste PDO kanaal (PDO1). In omgekeerde richting verstuurt de drive zijn

status word (6041hex), position feedback (6063hex) en modes of operation display (6061hex).

In de mapping van het tweede PDO kanaal (PDO2) zijn zowel setpoints als feedback voor de speed (snelheid) en

het torque (koppel) voorzien. Hier wordt het traject voldoende benaderd door enkel het speed setpoint

(60FFhex) te versturen van de controller naar de drive.

Dit alles wordt schematisch weergegeven op Figuur 4-22.

Page 59: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

47

Figuur 4-22: Overzicht van de communicatie tussen de controller en drive

4.2.2 Instellingen voor de externe as

De beweging van de robotarm en de externe as wordt berekend door de controller. Het is dan ook belangrijk

om enkele zaken zoals de configuratie, snelheden, versnellingen, … van de externe as op te geven. Dit wordt

gedefinieerd in een bestand externaxes.cfx. Als laatste moeten nog enkele zaken in Engineer worden ingesteld.

Zowel externaxes.cfx als de instellingen in Engineer zitten in Bijlage E: Configuratie van controller en drive.

4.3 Regelkringen en setpoints

Op Figuur 4-22 is te zien hoe de positie en snelheid setpoints terechtkomen in de drive via CANopen. De weg

die de setpoints vervolgens afleggen, wordt afgebeeld in Figuur 4-23.

Figuur 4-23: Regelkringen in de drive

POSITIE

Op basis van de positie setpoints berekent de drive tussenliggende waarden voor de positie via lineair

interpolation (Figuur 4-16). Deze interpolated positie setpoints worden vergeleken met de werkelijke positie

gemeten door de resolver wat leidt tot een positiefout. Die wordt versterkt door de proportionele (P) actie van

de positieregelaar met een wenswaarde voor de snelheid als resultaat.

Page 60: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

48

SNELHEID

Het snelheid setpoint komende van de controller gaat niet door de positieregelaar maar wordt rechtstreeks

aangeboden aan de ingang van de snelheidsregelaar (snelheidsfeedforward). Deze waarde plus de uitgang van

de positieregelaar min de snelheid afgeleid uit het resolversignaal leidt tot een snelheidsfout. Deze wordt

versterkt (P) en gesommeerd door de integrerende (I) actie van de snelheidsregelaar met als uitgang een

wenswaarde voor het koppel. Er is ook een differentiërende (D) actie mogelijk maar een zuivere PI-regelaar

volstaat hier.

KOPPEL

De wenswaarde voor het koppel wordt vergeleken met het gemeten koppel (op basis van de stroom) en deze

koppelfout wordt versterkt (P) en gesommeerd (I) door de koppelregelaar. De uitgang stuurt de PWM (Pulse

Width Modulation) invertor aan om de nodige stromen naar de motor te sturen.

4.4 Programmeren van beweging

Als laatste stap in het synchronisatieproces moet de beweging van de robotarm en de 7e as worden

geprogrammeerd. Hiervoor wordt gebruik gemaakt van de Stäubli Robotics Suite (SRS).

In de Cells manager wordt een Cell gedefinieerd met de gegevens van de robotarm en de controller zoals het

type robot en de SRC (Stäubli Robotics Controls) versie van de firmware op de controller. Ook de IO (CAN) en

de verschillende opties (externalAxis) worden geselecteerd.

Met behulp van de VAL3 Studio wordt dan een applicatie geschreven voor de synchronisatie. Hierbij moeten er

verschillende taken worden uitgevoerd. Als eerste dient de communicatie met de drive verzorgd te worden. Er

moet een controle zijn of de robotarm niet in botsing kan komen met de 7e as opstelling of de controller. En er

is een teachprocedure nodig om een nieuw traject aan te leren. Ten slotte moet het traject uitgevoerd worden

waarbij de beweging van de robotarm gesynchroniseerd is met de 7e as.

Het programma is te vinden in Bijlage F: Applicatie in VAL3 Studio.

Page 61: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

49

Besluit

Sinds kort beschikt de software van de robotfabrikant Stäubli over een optie om externe assen aan te sturen

maar zelf produceren ze geen dergelijke opstellingen. Aangezien er in het labo Mechatronica van de UGent

campus Kortrijk een geschikte lineaire demonstrator aanwezig is, was de samenwerking vanzelfsprekend.

De meerwaarde van dit project is dan ook het uittesten van deze externe as optie en nagaan hoe eenvoudig het

is om een externe as te implementeren. De robotarm wordt onderaan de slede van de lineaire demonstrator

bevestigd waardoor de arm over een groter werkgebied beschikt. De 7e as is de lineaire beweging van de slede

die zorgt voor een extra, dus 7e, vrijheidsgraad voor de robotarm. Het is mogelijk om de robotarm en de slede

apart aan te sturen maar om een specifiek traject te volgen, moet de beweging van beiden gesynchroniseerd

zijn. Dit houdt in dat ze tegelijkertijd worden aangestuurd.

De aandrijving van de slede heeft nog geen motor en drive waardoor extra voorbereidend werk is vereist.

Hierbij is aan de hand van CAD software (Siemens NX) nagegaan wat het nodige motorkoppel en -toerental is

voor een gewenst snelheidsprofiel van de slede. Er is ook gekeken naar de interactie tussen de verschillende

componenten van de aandrijving zoals een reductiekast en tandwiel-tandheugeloverbrenging. Uit de motion

simulatie is het volgende gebleken:

Bij een reductiekast speelt de ligging van de assen een belangrijke rol bij het meten van een koppel

aan rotor- of lastzijde. Ook de plaats van de drijvende kracht en de keuze van het type koppeling in

Siemens NX heeft een invloed.

Bij een tandwiel-tandheugeloverbrenging is ook de plaats van de drijvende kracht en de keuze van het

type koppeling in Siemens NX van belang.

De waarde voor het motorkoppel en -toerental is gevalideerd met een dimensioneringstool (Cymex). Het is dus

mogelijk om een complexe aandrijving te dimensioneren via CAD software. Het voordeel van deze aanpak is

dat de massa en inertie van de componenten automatisch wordt berekend. Er kan ook gekeken worden naar

het effect van de beweging van de robotarm op het motorkoppel. Op basis hiervan kunnen de componenten al

in de ontwerpfase worden aangepast wat een serieuze besparing van kosten is.

De motor wordt aangestuurd via een drive die een aantal regelkringen bevat. Een belangrijk onderdeel van dit

project is het nagaan waar de regelkringen zich bevinden en wie de setpoints genereert. Zowel de positie-,

snelheids- en koppelregelaar bevinden zich in de drive. De setpoints (positie en snelheid van de slede) worden

echter berekend door de sturing van de robotarm en verstuurd naar de drive.

Dit alles gebeurt via CAN en CANopen. Door het bestuderen van deze protocollen zijn de nodige instellingen

gemaakt in de sturing van de robotarm en de drive. Als laatste is een programma geschreven om een traject

van de robotarm en de slede aan te leren en uit te voeren. Hierbij worden de positie en snelheid van de slede

berekend door de sturing van de robotarm. Deze worden verstuurd naar de drive die op zijn beurt

tussenliggende waardes voor de positie berekent (interpoleert).

Het resultaat is een gesynchroniseerde beweging van de robotarm en de slede. Dit houdt in dat het mogelijk is

om de slede te bewegen terwijl het uiteinde van de arm op dezelfde positie blijft.

Page 62: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

50

Dit project behandelt dus de noodzakelijke stappen om een robotarm te voorzien van een 7e as. Dit kan als

basis dienen voor verdere masterproeven waarbij de nauwkeurigheid van de opstelling wordt opgemeten en

verbeterd. Hierbij kan de invloed van de regelparameters op de nauwkeurigheid worden nagegaan.

Voorlopig zijn er enkel setpoints en feedback voor de positie en snelheid voorzien. Het is ook mogelijk om dit

uit te breiden voor het koppel. Ook dit zal een invloed hebben op de nauwkeurigheid.

Het kan ook interessant zijn om na te gaan wat het effect is van de robotarm op het motorkoppel. Wanneer de

robotarm beweegt, wordt een extra lastkoppel gegenereerd dat ook door de motor moet overwonnen worden.

Aangezien de software van Stäubli toelaat om 32 assen te synchroniseren, is de bewegingsvrijheid van de

robotarm uit te breiden met een 8e, 9

e, … as. Dit is mogelijk door de voet van de robotarm te monteren aan een

draaitafel die op zijn beurt is bevestigd aan de lineair bewegende slede.

Page 63: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

51

Literatuurlijst

[1] STÄUBLI (2013), Welkom bij Stäubli [on line]. http://www.staubli.be/ [datum van opzoeking:

20/09/13].

[2] STÄUBLI (2012), Arm - Familie TX Serie 90 Handleiding [on line].

https://secure.staubli.com/Intranet_Applications/Robotics/Group/RobDoc.nsf/webkey/D28082923B

@REF/$FILE/D28082923B.PDF [datum van opzoeking: 02/10/13].

[3] Stäubli, External axis Network Training, PowerPoint.

[4] Pollefliet, J., Elektronische vermogencontrole. Volume 2: Elektronische motorcontrole, 7de druk, Gent:

Academia Press, 2011, p. 17.13-17.21.

[5] BARNETT, D. (2013), Resolver Vs Encoder [on line].

http://www.optoresolver.com/help/tutorials/resolver_v_encoder.htm [datum van opzoeking:

18/04/14].

[6] LENZE (2013), Catalogue MCS / MDxKS synchronous servo motors and MQA / MCA asynchronous

servo motors [on line].

http://www.lenze.com/fileadmin/lenze/documents/en/catalogue/15593805_Catalogue_MCS_MDxKS

_synchronous_servo_motors_and_MQA_MCA_asynchronous_servo_motors_en-GB.pdf [datum van

opzoeking: 12/12/13].

[7] SEW-EURODRIVE (2001), Aandrijftechniek in de praktijk: het selecteren van aandrijvingen [on line].

http://download.sew-eurodrive.com/download/pdf/10522972.pdf [datum van opzoeking: 12/12/13].

[8] Stockman, K., Geavanceerde aandrijftechniek: stijfheid, delicaat aspect van een positioneersysteem,

PowerPoint, dia 4 en 5.

[9] STÄUBLI (2012), CS8C-controller Handleiding [on line].

https://secure.staubli.com/Intranet_Applications/Robotics/Group/RobDoc.nsf/webkey/D28081223B

@REF/$FILE/D28081223B.PDF [datum van opzoeking: 02/10/13].

[10] GURARI, E. (1998), Digital Data, Digital Signal [on line]. http://www.cse.ohio-

state.edu/~gurari/course/cis677/cis677Se12.html [datum van opzoeking: 15/05/14].

[11] Derammelaere, S., Masterproef: protocolstudie en implementatie van het CANopen protocol, Kortrijk:

Howest, 2006, p. 22, 23, 35-39, 52-57 (CANbus), p. 1-8, 20, 26-34 (CANopen).

[12] CAN IN AUTOMATION (2014), CANopen [on line]. http://www.can-cia.org/index.php?id=canopen

[datum van opzoeking: 20/02/14].

[13] CiA 301 V4.2.0, “CANopen application layer and communication profile”, 2011.

Page 64: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

52

[14] LENZE (2012), Reference Manual E94AxHE_Servo Drives 9400 HighLine [on line].

http://download.lenze.com/TD/E94AxHE__Servo%20Drives%209400%20HighLine%20(from%20Firmw

are%2001-50)__v9-0__EN.pdf [datum van opzoeking: 21/02/14].

[15] ESD ELECTRONICS, INC. (2009), CANopen Quickstart Guide [on line]. http://www.esd-electronics-

usa.com/Shared/Handbooks/Renesas/CANopen-Quickstart-Guide.pdf [datum van opzoeking:

19/04/14].

[16] CiA DSP 402 V2.0, “Device Profile Drives and Motion Control”, 2002.

[17] COPLEY CONTROLS (2012), CANopen Programmer’s Manual [on line].

http://www.maccon.de/fileadmin/FTPROOT/CANopenProgrammersManual.pdf [datum van

opzoeking: 14/12/13].

[18] NATIONAL INSTRUMENTS (2014), Mode of Operation [on line]. http://zone.ni.com/reference/en-

XX/help/370984T-01/target4devicehelp/properties/modeofop/ [datum van opzoeking: 20/04/14].

[19] HMK (2013), Pinion - helical tooth, module 3, pinion shaft hub, quality 6, 20 teeth bore 28mm (20 89

420) [on line]. http://www.hmkdirect.com/shop/20%2089%20420/ [datum van opzoeking: 02/10/13].

[20] LENZE (2010), Hardware Manual E94A Servo Drives 9400 HighLine [on line].

http://download.lenze.com/TD/E94A__Servo%20Drives%209400%20HighLine__v7-1__EN.pdf [datum

van opzoeking: 21/02/14].

Page 65: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

53

Bijlage A: Componenten aandrijving 7e as

A.1 Koppeling tussen motor en reductiekast

Atlanta 65 44 919

Figuur A-1: Gegevens van de koppeling

A.2 Reductiekast

Atlanta 58 84 107

Figuur A-2: Gegevens van de reductiekast

A.3 Klembus tussen uitgang reductiekast en tandwielas

Atlanta 80 84 036

Figuur A-3: Gegevens van de klembus

Page 66: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

54

A.4 Tandwielas

Atlanta 20 89 420

Figuur A-4: Gegevens van de tandwielas

De inertie is 5,04 x 10-4

kgm² [19].

A.5 Tandlat

Atlanta 38 31 100

Figuur A-5: Gegevens van de tandlat

A.6 Lineaire lagers en geleiding

HIWIN HGH 35HA

Figuur A-6: Gegevens van het lineair lager

Page 67: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

55

Bijlage B: Instellingen in NX voor 7e as

Bij het uitvoeren van een motion simulation op de 7e as is het noodzakelijk om de stappen behandeld in 2.1.1

te doorlopen. Aan de hand van screenshots wordt elke stap toegelicht.

B.1 Link

Alle onderdelen die dezelfde beweging uitvoeren, kunnen samengenomen worden in een link. In de aandrijving

van de 7e as zijn er zowel roterende als translerende componenten die in totaal leiden tot 3 verschillende links:

Koppeling_Reductiekast, Tandwielas_Klembus en Massa.

B.1.1 Koppeling_Reductiekast

De koppeling en de ingaande as van de reductiekast roteren rond dezelfde as en kunnen dus samengenomen

worden in een link. In het CAD model bestaat de reductiekast echter uit één solid body waardoor de ingaande

as niet apart geselecteerd kan worden. Bijgevolg wordt de koppeling op zich een link waarbij de inertie van de

reductiekast wordt opgeteld. Samen wordt dit 1,757 + 1,372 = 3,129 * 10-4

kgm² = 312,9 kgmm². Dit wordt

ingevuld bij het massatraagheidsmoment van de lichaamsas (Izz).

Aangezien de massa van de ingaande as van de reductiekast niet gekend is, wordt enkel de massa van de

koppeling (0,55) ingevuld (Figuur B-1).

Figuur B-1: Instellingen van de link Koppeling_Reductiekast

Z

Page 68: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

56

B.1.2 Tandwielas_Klembus

De uitgaande as van de reductiekast, de tandwielas en de klembus roteren rond dezelfde as. De inertie van de

uitgaande as zit vervat in de inertie van de reductiekast die al is opgenomen in de link Koppeling_Reductiekast.

De massa van de uitgaande as maakt deel uit van de massa van de reductiekast die tot de link Massa behoort.

Enkel de massa en inertie van de tandwielas en de klembus dienen dus samengenomen te worden. De massa is

dan gelijk aan 0,40 + 1,60 = 2,00 kg en de inertie 4,029 + 5,04 = 9,069 * 10-4

kgm² = 906,9 kgmm² (Figuur B-2).

Figuur B-2: Instellingen van de link Tandwielas_Klembus

Bij de link Koppeling_Reductiekast en Tandwielas_Klembus worden automatisch de inerties van de

verschillende assen berekend op basis van de geometrie en de materiaalsoort van de componenten. Aangezien

niet aan elke component de juiste materiaalsoort is toegewezen, zullen deze waarden niet overeenstemmen

met de werkelijkheid. Toch mogen deze waarden blijven staan omdat de links enkel roteren rond de Z-as en

enkel deze inertie dus van belang is.

B.1.3 Massa

Als laatste worden alle onderdelen die een lineaire verplaatsing uitvoeren, samengenomen in de link Massa.

Daarin zit onder andere de reductiekast, de slede, de kabelrups, … De totale massa van de lineair bewegende

onderdelen wordt afgerond naar 350 kg omdat de massa van de motor, grondplaat, … nog erbij moet komen.

De massa van de koppeling, tandwielas en klembus is al ingevuld bij de link Koppeling_Reductiekast en de link

Tandwielas_Klembus. Voor de link Massa wordt dus 350 - 0,55 - 2,00 = 347,45 kg gekozen (Figuur B-3).

Z

Page 69: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

57

Figuur B-3: Instellingen van de link Massa

B.2 Joint

Met behulp van een joint wordt de beweging van een link beperkt. Afhankelijk van het type joint worden een

aantal vrijheidsgraden van de beweging van de link weggenomen. Dit kan de beweging ten opzichte van de

vaste omgeving (ground) of een andere link zijn.

Bij het definiëren van een joint wordt het type, de action (en base) link aangeduid. De twee meest gebruikte

types zijn revolute en slider. De action link is de link waarvan de beweging wordt beperkt door de joint.

Wanneer een base link is geselecteerd, wordt de beweging van de action link beperkt ten opzichte van de base

link. Indien er geen base link is aangeduid, is dit ten opzichte van de ground.

Bij de 7e as wordt de rotatie van de links Koppeling_Reductiekast en Tandwielas_Klembus voorgesteld door een

revolute joint. Voor de translatie van de link Massa wordt een slider joint gebruikt.

B.2.1 Revolute

De links Koppeling_Reductiekast en Tandwielas_Klembus roteren rond hun lichaamsas maar voeren ook een

translatie uit ten opzichte van de ground aangezien ze bevestigd zijn aan de lineair bewegende slede. Met deze

redenering zou er zowel een revolute als slider joint moeten opgelegd worden. Er kan echter ook gezegd

worden dat de links Koppeling_Reductiekast en Tandwielas_Klembus roteren rond hun lichaamsas en stil staan

ten opzichte van de bewegende slede. Dit komt overeen met een revolute joint waarbij

Koppeling_Reductiekast (Figuur B-4) of Tandwielas_Klembus (Figuur B-5) de action link is en Massa de base

link. Bij de action link wordt als oorsprong een punt op de lichaamsas gekozen. Als vector wordt de lichaamsas

zelf gekozen.

Page 70: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

58

Figuur B-4: Instellingen van de revolute joint op Koppeling_Reductiekast

Figuur B-5: Instellingen van de revolute joint op Tandwielas_Klembus

Page 71: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

59

B.2.2 Slider

De link Massa voert een lineaire beweging uit ten opzichte van de vaste omgeving (ground). Door het opleggen

van een slider joint zonder base link kan de Massa enkel nog transleren in één richting die wordt opgegeven

met een vector (Figuur B-6).

Figuur B-6: Instellingen van de slider joint op Massa

B.3 Coupler

Door het definiëren van joints kunnen de links enkel nog roteren of transleren in een vastgelegde richting. Via

couplers worden de bewegingen van de verschillende links aan elkaar gekoppeld. Zo is het mogelijk om allerlei

types overbrengingen voor te stellen. Een reductiekast wordt meestal voorgesteld door een gear, een tandwiel-

tandheugeloverbrenging door een rack and pinion. NX biedt ook de mogelijkheid om twee revolutes, sliders of

een combinatie te koppelen met een 2-joint coupler. De reductiekast in de aandrijving van de 7e as wordt

voorgesteld door een gear en de tandwiel-tandheugeloverbrenging door een 2-joint coupler.

Page 72: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

60

B.3.1 Gear

Wanneer de link Koppeling_Reductiekast roteert (ingaande as), moet de link Tandwielas_Klembus (uitgaande

as) ook roteren. Het verband tussen hun toerentallen hangt af van de overbrengingsverhouding. Bij de 7e as is

dit 6,75, dit houdt in dat de link Koppeling_Reductiekast (ingaande as) 6,75 keer sneller draait dan de link

Tandwielas_Klembus (uitgaande as). De koppeling tussen beide rotaties is voor te stellen door een gear of 2-

joint coupler. Uit Tabel 2-1 blijkt dat de koppelmeting hetzelfde is bij een gear of 2-joint coupler wanneer de

assen gekruist liggen. Er kan dus een gear worden gebruikt waar de overbrengingsverhouding in te vullen is bij

Ratio. NX definieert de Ratio echter als de verhouding van uitgaand op ingaand toerental waardoor de

omgekeerde waarde 1/6,75 moet ingevuld worden. Bij de twee joints worden de revolute joints van

Koppeling_Reductiekast en Tandwielas_Klembus geselecteerd (Figuur B-7).

Figuur B-7: Instellingen van de gear

B.3.2 2-Joint Coupler

De laatste component in de aandrijving is de tandwiel-tandheugeloverbrenging. Een rotatie van de link

Tandwielas_Klembus leidt tot een translatie van de Massa. De grootte van de lineaire verplaatsing hangt af van

de steekdiameter van het tandwiel. Hier is dit 63,66 mm wat inhoudt dat één rotatie van de link

Tandwielas_Klembus resulteert in een verplaatsing van 63,66 * π = 200 mm van de link Massa. Ook hier is er de

keuze tussen twee couplers: rack and pinion of 2-joint coupler. Rekening houdend met het feit dat het

snelheidsprofiel wordt opgelegd aan de slede wordt een 2-joint coupler gekozen. Met een rack and pinion is

het totaal koppel niet te bepalen via NX (witte cellen in Tabel 2-3).

Page 73: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

61

Bij de eerste joint wordt de revolute joint van Tandwielas_Klembus geselecteerd, bij de tweede de slider joint

van de Massa. Door middel van Scale is de overbrenging in te stellen waarbij de straal van het tandwiel (31,83

mm) wordt ingevuld bij de eerste joint (Figuur B-8).

Figuur B-8: Instellingen van de 2-joint coupler

B.4 Driver

Vervolgens dient een drijvende kracht te worden opgelegd om alle links te laten bewegen. Hier wordt een

snelheidsprofiel voor de slede gedefinieerd met behulp van de XY Function Manager (Figuur B-9).

Figuur B-9: XY Function Manager

Page 74: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

62

In de volgende stap worden de X- en Y-as gedefinieerd waarbij de snelheid (m/s) wordt uitgezet in functie van

de tijd (s) (Figuur B-10).

Figuur B-10: Definiëren van de XY assen in de XY Function Editor

In de laatste stap wordt de XY data ingevoerd in Excel via Edit Data with Spreadsheet (Figuur B-11).

Figuur B-11: Definiëren van de XY data in de XY Function Editor

Page 75: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

63

Als laatste wordt het gemaakte snelheidsprofiel ingesteld als driver voor de slider joint van de link Massa

(Figuur B-12).

Figuur B-12: Instellingen van de driver op de slider joint van Massa

Wanneer de solution is gesolved en op play wordt gedrukt, zal de link Massa transleren volgens het opgelegd

snelheidsprofiel. De links Tandwielas_Klembus en Koppeling_Reductiekast zullen ten gevolge hiervan roteren

aan een bepaalde snelheid afhankelijk van de overbrengingsverhouding.

De vraag is nu wat het totale koppel op de koppeling is ten gevolge van al deze bewegingen. Hiervoor zijn er

twee mogelijkheden: via sensoren of graphing. Het verschil tussen beide wordt verder besproken in de

bijlagen. Hier wordt enkel de methode met sensoren toegepast.

B.5 Sensor

Volgens Tabel 2-3 moet bij een gear tussen kruisende assen en een 2-joint coupler het koppel worden gemeten

aan rotor- en lastzijde van de reductiekast en een kracht op de slede. Dit is mogelijk door sensoren te

definiëren op de revolute joints van Koppeling_Reductiekast (Figuur B-13) en Tandwielas_Klembus (Figuur

B-14) en op de slider joint van de Massa (Figuur B-15). Aangezien de richting van elke joint evenwijdig is met

een as van het Absolute Coordinate System (ACS) kan een absolute reference frame worden gebruikt.

Page 76: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

64

Figuur B-13: Instellingen van de koppelsensor op de revolute joint van Koppeling_Reductiekast

Figuur B-14: Instellingen van de koppelsensor op de revolute joint van Tandwielas_Klembus

Page 77: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

65

Figuur B-15: Instellingen van de krachtsensor op de slider joint van Massa

Ten slotte wordt het koppel berekend aan de hand van de sensorwaarden. Dit kan manueel maar met de XY

Function Manager gebeurt dit automatisch. De koppel- en krachtsensoren worden toegevoegd door bij Insert

Motion-Sensor te selecteren (Figuur B-16). Via een grafiek is het totale koppel dan af te lezen.

Figuur B-16: Definiëren van de koppelformule in de XY Function Editor

Page 78: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

66

Bijlage C: Instellingen in Cymex

Deze bijlage bespreekt de nodige stappen om het motorkoppel en -toerental te berekenen van de aandrijving

van de 7e as met behulp van Cymex. Startend bij de applicatie moeten de verschillende componenten van de

aandrijving worden opgegeven. Nergens wordt er rekening gehouden met rendement, wrijving, stijfheid,

speling, … zodat de resultaten kunnen vergeleken worden met die van de motion simulation. Het bestand

GANTRY.cm3 is terug te vinden in de bijlagen.

C.1 Applicatie

In de aandrijving van de 7e as wordt een tandwiel-tandlat (rack & pinion) gebruikt met een steekdiameter van

het tandwiel van 63,66 mm en een breedte van 30 mm. Toch wordt als breedte 0 mm ingevuld omdat Cymex

anders de inertie van het tandwiel berekent. Dit is niet nodig omdat de inertie van de tandwielas gegeven is in

de datasheets en apart wordt opgegeven (zie C.3 Vertragingskast). Voor de eenvoud wordt er net zoals in de

motion simulation geen rekening gehouden met wrijving en verliezen in de overbrenging. De instellingen zijn te

zien in Figuur C-1.

Figuur C-1: Instellingen van de applicatie

C.2 Transformatie applicatie - vertragingskast

De uitgang van de reductiekast is via een klembus verbonden met de tandwielas. Die kan voorgesteld worden

door een koppeling met de inertie van de klembus (4,029 kgcm²). Zoals te zien in Figuur C-2 is de stijfheid (c)

bijna oneindig en is er geen rekening gehouden met speling (s). Ook in de motion simulation is er gerekend met

starre onderdelen dus mag er geen stijfheid geïmporteerd worden om de resultaten te kunnen vergelijken.

Page 79: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

67

Figuur C-2: Instellingen van de klembus

C.3 Vertragingskast

Daarna wordt een reductiekast geselecteerd maar de gebruikte reductor, Atlanta 58 84 107, komt niet voor in

de catalogus. Er zou een reductiekast met dezelfde overbrengingsverhouding en inertie gezocht kunnen

worden in de catalogus. Er komt echter geen voor met een overbrenging van 6,75. Als oplossing wordt geen

kast geselecteerd maar in plaats daarvan een transformatie (rondseltrap) toegevoegd. Deze kan enkel nog links

van de motor worden geplaatst.

Om de reductie voor te stellen, wordt de diameter van het tandwiel aan de uitgang (d02) gelijk gesteld aan de

overbrengingsverhouding (6,75) en de diameter van het tandwiel aan de ingang (d01) gelijk gesteld aan 1.

Aangezien de transformatie links van de motor wordt gebruikt om de reductiekast in rekening te brengen, kan

de koppeling tussen motor en reductie niet meer apart worden toegevoegd. De oplossing is om als inertie aan

de ingang van de reductiekast (J1) de inertie van de koppeling en die van de kast zelf te nemen (1,757 + 1,372

kgcm²). Als inertie aan de uitgang (J2) moet enkel nog de inertie van de tandwielas worden opgegeven (5,04

kgcm²). Opnieuw wordt er geen rekening gehouden met wrijving en rendement (Figuur C-3).

Figuur C-3 Instellingen van de reductiekast

C.4 Transformatie vertragingskast - motor

De rotor is via een koppeling verbonden met de ingang van de reductiekast. De inertie van de koppeling is al

toegevoegd bij de ingang van de reductiekast.

Page 80: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

68

C.5 Motor

Voorlopig is er nog geen motor aanwezig op de 7e as. Wanneer geen motor wordt gekozen, stelt Cymex

standaard een motor in met een inertie van 100 kgmm². Om toch de berekeningen te kunnen vergelijken met

die van de motion simulation kan gewoon gekeken worden naar klok 4 waar het koppel aan rotorzijde van de

reductiekast wordt gemeten. Het eindresultaat is te zien op Figuur C-4.

Figuur C-4 Instellingen van de 7

e as in Cymex

C.6 MotionProfiler

Als laatste dient nog een gewenst bewegingsprofiel van de last te worden ingeladen. Als bewegingsprofiel zijn

er verschillende mogelijkheden: constante versnelling, constante snelheid, … Om hetzelfde bewegingsprofiel

als in de motion simulation op te leggen, wordt gekozen voor ‘versn.tijd/totale tijd/vertr.tijd/snelheid’. Dit is

een profiel met een stijgende, horizontale en dalende flank in snelheid (rode grafiek in Figuur C-5).

De massa van de bewegende onderdelen is constant en bedraagt ongeveer 350 kg. Als maximale versnelling is

1,5 m/s² en als maximale snelheid is 2 m/s gekozen.

Figuur C-5 Instellingen in de MotionProfiler

C.7 Resultaten

De nominale en maximale waarden voor het koppel en toerental aan rotorzijde van de reductiekast zijn af te

lezen op klok 4. Ook de inertie gereflecteerd naar rotorzijde wordt berekend.

MotionProfiler

Page 81: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

69

Bijlage D: Aansluitschema 9400 HighLine drive

Figuur D-1: Aansluitschema van de 9400 HighLine drive [20]

Drive X1 CANopen interface

X2 voeding elektronica

X3 analoge in- en uitgangen

X4 digitale uitgangen

X5 digitale ingangen (RFR = enable drive)

X6 diagnostic adapter

X7 resolver

X8 encoder

Backplane X100 hoofdvoeding (L1, L2, L3)

X105 externe remweerstand (Rb1, Rb2) + voeding motor (U, V, W)

X106 temperatuursensor (T1, T2)

X107 motorrem (BD1, BD2) + voeding motorrem (+, -)

Page 82: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

70

Bijlage E: Configuratie van controller en drive

In deze bijlage worden de nodige instellingen in de Stäubli CS8C controller en een drive overlopen om een

externe as te implementeren. Deze zijn zowel nodig voor de communicatie als voor de externe as.

E.1 Instellingen voor de communicatie

Op het gebied van communicatie moet de CAN interface en de PDO mapping correct gedefinieerd worden. Dit

is zowel nodig in de controller als de drive.

E.1.1 Controller

can.cfx

In een configuratiebestand can.cfx (zie volgende pagina) wordt de CAN communicatie en de PDO mapping

ingesteld. Dit bestand moet geüpload worden naar de controller die op zijn beurt herstart dient te worden.

Belangrijke zaken zoals de CANbus frequentie of baudrate (500 kHz), het gebruiken van het CANopen protocol,

de naam en het adres van de verschillende nodes (Axis7, adres 1) en de output refresh cycle time (4 ms)

worden gedefinieerd. De output refresh cycle time is de tijd tussen het versturen van twee SYNC objecten. Aan

de hand van dit object weten de SYNC slaves wanneer ze hun procesdata mogen versturen. Hier verstuurt de

controller (SYNC master) elke 4 ms een SYNC object naar de drive (SYNC slave). Deze zal als reactie hierop zijn

procesdata versturen naar de controller waarna de controller zijn procesdata verzendt naar de drive. Zo krijgt

de drive elke 4 ms een nieuw positie en snelheid setpoint.

De PDO’s van de controller worden verstuurd en ontvangen met behulp van de analoge in- en uitgangen van de

CAN-kaart. Bij de analoge ingangen wordt de RPDO1 en RPDO2 mapping van de CAN-kaart ingesteld. Bij de

analoge uitgangen die van TPDO1 en TPDO2. Hierbij wordt voor elke procesdata variabele de naam, factoren,

plaats in de PDO (eerste bitnummer), bitgrootte en het formaat opgegeven.

Factoren worden gebruikt om een omrekening te maken tussen verschillende eenheden. Zo is coefA bij de

variabele drvPosFbk_0 gelijk aan 2211,84. Dit is nodig omdat de verstuurde positie door de drive is uitgedrukt

in rotor increments terwijl in de VAL3 applicatie wordt gewerkt met de positie van de slede in millimeter. Bij 1

omwenteling van de rotor is er een toename van 65536 rotor increments. Rekening houdend met de reductie

van 6,75 en een tandwiel-tandheugeloverbrenging van 200 mm per omwenteling van het tandwiel wordt dit:

De variabele drvPosFbk_0 wordt verstuurd van de drive naar de controller via een PDO1 en wordt dus gemapt

in de RPDO1 van de CAN-kaart in de controller (Figuur 4-18).

name = drvPosFbk_0 bitCount= 32 32 bits (4 bytes) lang

coefA = 2211,84 waarde wordt gedeeld door 2211,84 format = signed kan positief of negatief zijn

channel = 16 de variabele wordt vanaf bit 16 ingevuld in de PDO

Bij het versturen van procesdata wordt de waarde vermenigvuldigd met coefA!

Page 83: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

71

<?xml version="1.0" encoding="utf-8"?>

<!-- =============================== WARNING

===================================

* name length is 16 characters maximum

* name cannot start with a numerical character (0..9)

* name can only be standard ASCII characters

(not '-')

====================================================================

======== -->

<!-- ======================= Parameters description

============================

- can

freq: CAN bus frequency in KHz

waitBeforeReset: delay in ms before sending reset command on

CAN bus

(MAX_UINT32: 4294967295: Reset not send)

(Default: 0: no delay)

waitBeforeStart: delay in ms before sending start command on

CAN bus

(Default: 0: no delay)

canOpen: true configure the CAN master to use canOpen

protocol

(Default: true)

- module

name: name of the module in VAL3

address: module address on the can bus

heartBeat: maximum duration between 2 heartBeat in ms

(Default: no heartBeat check)

outputRefreshCycle: output refresh cycle time in ms (resolution

is 4ms)

(Default: 0 so 4ms)

sendRtr: true force the CAN master to send a "Remote

transmission Request"

just after synchronisation message

(Default: false: no RTR)

- dio

name: name of the digital input or output in VAL3

mode: specified in the state must be inverted(inverted) or

not(notInverted)

in VAL3 (Default: notInverted).

channel: bit number in the PDO associated with the dio

- aio

name: name of the analogic input or output in VAL3

coefA, coefB: coef apply to aio in VAL3: coefA*aio + coefB

(Default: coefA=1 and coefB=0)

channel: first bit number in the PDO associated with the aio

bitcount: size in bit of the aio

format: specify the format in VAL3 (unsigned, signed, float)

====================================================================

======== -->

<can freq="500" waitBeforeReset="0" waitBeforeStart="10000">

<Options name="Synchronisatie" />

<!-- DRIVE -->

<module name="Axis7" address="1" heartBeat="500"

outputRefreshCycle="4">

Page 84: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

72

<dinputs>

</dinputs>

<doutputs>

</doutputs>

<ainputs>

<!-- 16 bits word0: Object: [0x6041]statusWord -->

<aio name="statusWord_0" channel="0" bitCount="16"

coefA="1" format="unsigned" />

<!-- 32 bits word2: Object: [0x6063]Position

Feedback -->

<aio name="drvPosFbk_0" channel="16" bitCount="32"

coefA="2211.84" format="signed" />

<!-- 8 bits integer6: Object: [0x6061]Mode of

Operation Display -->

<aio name="drvOpModeDisplay_0" channel="48" bitCount="8"

coefA="1" format="signed" />

</ainputs>

<ainputsPdo2>

<!-- 32 bits word0: Object: [0x606C]Velocity

Feedback -->

<aio name="drvVelFbk_0" channel="0" bitCount="32"

coefA="10000" format="signed" />

<!-- 32 bits word4: Object: [0x6077]Torque Feedback

-->

<aio name="drvTorqFbk_0" channel="32" bitCount="32"

coefA="10000" format="signed" />

</ainputsPdo2>

<aoutputs>

<!-- 16 bits word0: Object: [0x6040]controlWord -->

<aio name="ctrlWord_0" channel="0" bitCount="16"

coefA="1" format="unsigned" />

<!-- 32 bits word2: Object: [0x60C1/1]Interpolated

data X1 -->

<aio name="drvCmdPos_0" channel="16" bitCount="32"

coefA="10000" format="signed" />

<!-- 8 bits integer6: Object: [0x6060]Mode of

Operation -->

<aio name="drvOpMode_0" channel="48" bitCount="8"

coefA="1" format="signed" />

</aoutputs>

<aoutputsPdo2>

<!-- 32 bits word0: Object: [0x60FF]Target Velocity

-->

<aio name="drvCmdVel_0" channel="0" bitCount="32"

coefA="10000" format="signed" />

<!-- 32 bits word4: Object: [0x6071]Target Torque

-->

<aio name="drvCmdTorq_0" channel="32" bitCount="32"

coefA="10000" format="signed" />

</aoutputsPdo2>

</module>

</can>

RPDO1 mapping

RPDO2 mapping

TPDO1 mapping

TPDO2 mapping

Page 85: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

73

Stäubli Robotics Suite

Bij het maken van een Cell in de Stäubli Robotics Suite wordt de versie van de controller (s7.5.4) ingevuld. Voor

de robot wordt het type (tx90) en de bevestiging (ceiling) meegegeven. Bij de IO moet bij CAN het type van de

CAN-kaart worden opgegeven (SRCAN). Bij de opties wordt externalAxis op True geplaatst (Figuur E-1).

Figuur E-1: Instellingen in de Cells manager

Page 86: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

74

E.1.2 Drive

Engineer

De Lenze Servo Drive 9400 HighLine wordt geconfigureerd met het programma Engineer waar ook de CAN

communicatie en de PDO mapping worden ingesteld.

Bij het maken van een nieuw project wordt de aanwezige hardware zoals een drive (9400 HighLine), safety

module (SM100), motor (MCS12H35), … gekozen en moet als Application CiA 402 geselecteerd worden.

In All parameters CAN CAN management worden essentiële zaken zoals het node adres (1), baud rate

(500 kbps) en NMT master of slave (slave) geselecteerd (Figuur E-2). Code 359 is de NMT status van de drive.

Figuur E-2: Instellingen van CAN management in Engineer

Bij All parameters CAN CAN SYNC slave wordt de bron (CAN on-board) en de cyclustijd (4000 µs) van het

SYNC object ingesteld (Figuur E-3). Dit object wordt om de 4 ms verstuurd door de controller (SYNC master) en

komt binnen bij de drive (SYNC slave) via de CAN interface (CAN on-board).

Figuur E-3: Instellingen van CAN SYNC slave in Engineer

De PDO mapping gebeurt op dezelfde manier als bij de CAN-kaart in de controller waarbij de instellingen voor

een RPDO nu horen bij een TPDO en omgekeerd (Figuur E-4, Figuur E-5, Figuur E-6 en Figuur E-7). Dit is terug te

vinden in het project SynchronisatieOK.afs onder My Axis CAN on-board Process data objects.

Page 87: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

75

Figuur E-4: RPDO1 mapping CAN interface drive

Figuur E-5: TPDO1 mapping CAN interface drive

Figuur E-6: RPDO2 mapping CAN interface drive

Figuur E-7: TPDO2 mapping CAN interface drive

E.2 Instellingen voor de externe as

Naast het configureren van het netwerk moet ook de externe as gedefinieerd worden in de controller en drive.

E.2.1 Controller

externaxes.cfx

Net zoals bij de communicatie moeten de instellingen in de controller voor de externe as gebeuren in een apart

configuratiebestand externaxes.cfx (zie volgende pagina). Dit dient daarna ook geüpload te worden naar de

controller waarbij de instellingen pas van kracht zijn na het herstarten van de controller.

Enkele belangrijke parameters zijn:

NbOfAxes 1 aantal externe assen

ArtType prismatic prismatic (lineaire) of rotoid (roterende) externe as

LinkedToFlange false true (externe as bevestigd aan flens) of false

GroundLink 0 0 wanneer de robotarm bevestigd is aan de externe assen

ArtDir x = 1, y = 0, z = 0 bewegingsrichting van externe as (X, Y of Z)

JntToDrvMatrix 1 overbrengingsverhouding

MinJntPos -10 mm minimum positie van externe as

MaxJntPos 5500 mm maximum positie van externe as

NomJntVel 1741 mm/s nominale snelheid van externe as

NomJntAcc 2000 mm/s² nominale versnelling van externe as

MaxJntVel 2500 mm/s maximum snelheid van externe as

MaxJntAcc 3000 mm/s² maximum versnelling van externe as

MaxManuJntVel 250 mm/s maximum snelheid van externe as in manuele mode

DrvDelay 0,004 s vertraging tussen controller en drive (is gecompenseerd)

Page 88: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

76

<?xml version="1.0" encoding="utf-8" ?>

<externaxes>

<Geometry>

<Uint name="NbOfAxes" value="1" />

<ArtType>

<String name="ArtType[0]" value="prismatic" />

</ArtType>

<Bool name="LinkedToFlange" value="false" />

<Uint name="GroundLink" value="0" />

<ArtDir>

<VectCartArray name="ArtDir" >

<VectCart index="0" x="1" y="0" z="0" />

</VectCartArray>

</ArtDir>

<VectCart name="Base" x="0" y="0" z="0" />

<ArtDim>

<VectCartArray name="ArtDim" >

<VectCart index="0" x="0" y="0" z="0" />

</VectCartArray>

</ArtDim>

<JntToDrvMatrix>

<Value line="0" column="0" >1</Value>

</JntToDrvMatrix>

<MinJntPos>

<FloatArray name="MinJntPos" >

<Float index="0" value="-10" />

</FloatArray>

</MinJntPos>

<MaxJntPos>

<FloatArray name="MaxJntPos" >

<Float index="0" value="5500" />

</FloatArray>

</MaxJntPos>

</Geometry>

<Motion>

<Descriptor>

<NomJntVel>

<FloatArray name="NomJntVel" >

<Float index="0" value="1741" />

</FloatArray>

</NomJntVel>

<NomJntAcc>

<FloatArray name="NomJntAcc" >

<Float index="0" value="2000" />

</FloatArray>

</NomJntAcc>

</Descriptor>

</Motion>

<Safety>

<Limitation>

<MaxJntVel>

<FloatArray name="MaxJntVel" >

<Float index="0" value="2500" />

</FloatArray>

</MaxJntVel>

Page 89: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

77

<MaxJntAcc>

<FloatArray name="MaxJntAcc" >

<Float index="0" value="3000" />

</FloatArray>

</MaxJntAcc>

<MaxManuJntVel>

<FloatArray name="MaxManuJntVel" >

<Float index="0" value="250" />

</FloatArray>

</MaxManuJntVel>

</Limitation>

</Safety>

<Drives>

<DrvDelay>

<FloatArray name="DrvDelay" >

<Float index="0" value="0.004" />

</FloatArray>

</DrvDelay>

<DrvCountPerTurn>

<UintArray name="DrvCountPerTurn" >

<Uint index="0" value="65536" />

</UintArray>

</DrvCountPerTurn>

<DrvOffset>

<FloatArray name="DrvOffset" >

<Float index="0" value="0" />

</FloatArray>

</DrvOffset>

</Drives>

</externaxes>

Page 90: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

78

E.2.2 Drive

Engineer

Na het maken van een nieuw project komt de gebruiker automatisch terecht op de Overview (Figuur E-8). Dit

algemeen overzicht bevat alle essentiële parameters voor een goede aansturing van de motor. Zo wordt de

overbrengingsverhouding van de reductiekast (27/4 = 6,75) en de tandwiel-tandheugeloverbrenging (200 mm

per toer) gedefinieerd. Vanuit dit overzicht kunnen ook de verschillende operation modes afhankelijk van de

gekozen Application (CiA 402) worden ingesteld. Bij de Homing mode worden alle zaken voor het home proces

opgegeven en bij Interpolated position mode wordt het type interpolatie gekozen.

Onder All basic functions zijn de algemene functies zoals de Limiter en Position follower terug te vinden. Bij de

Limiter worden de software limits geactiveerd en kan er eventueel een begrenzing op de snelheid of versnelling

worden geplaatst. Bij de Position follower wordt de P actie van de positieregelaar aangepast. Hier kan ook

verder geklikt worden naar de Signalflow. Dit is een regeltechnisch schema van de weg die alle positie, snelheid

en koppel setpoints afleggen (zie pagina’s 79-81).

Figuur E-8: Overview in Engineer

Page 91: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

79

Figuur E-9: Positieregelkring in Engineer

Helemaal links staan de wenswaardes voor de positie, snelheid en het koppel (Figuur E-9). Bij Source position setpoint wordt de position setpoint doorgestuurd naar de

positieregelaar. Het is ook mogelijk om de additional speed te integreren. Bij Source add. speed wordt de additional speed doorgestuurd naar de uitgang van de

positieregelaar maar deze kan ook afgeleid worden uit het position setpoint.

Page 92: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

80

Figuur E-10: Snelheidsregelkring in Engineer

De uitgang van de positieregelaar en de additional speed worden begrensd en gestuurd naar de snelheidsregelaar (Figuur E-10). Deze regelaar berekent hieruit een koppel

als ingang voor de koppelregelaar aan de hand van een proportionele, integrerende en differentiërende actie. Bij dit koppel kan een wenswaarde voor het koppel worden

opgeteld.

Page 93: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

81

Figuur E-11: Koppelregelkring in Engineer

De uitgang van de snelheidsregelaar (en een extra wenswaarde voor het koppel) wordt begrensd, gefilterd en gestuurd naar de koppelregelaar (Figuur E-11). Deze regelaar

berekent de nodige pulsen voor de PWM invertors met een proportionele en integrerende actie.

Page 94: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

82

Bijlage F: Applicatie in VAL3 Studio

In de VAL3 Studio van de Stäubli Robotics Suite (SRS) wordt een applicatie geschreven om de beweging van de

robotarm te synchroniseren met de 7e as. Zoals elke applicatie bevat deze een start en stop programma.

Daarnaast worden er ook een aantal taken gedefinieerd. De programmacode begint vanaf volgende pagina.

start

Dit programma wordt onmiddellijk uitgevoerd bij het starten van de applicatie. Hierbij worden de verschillende

taken: taskZONE, taskDRIVE, taskTEACH en taskCYCLE gestart of beëindigd. Wanneer het homen is voltooid en

knop 1 op de MCP wordt ingedrukt, start taskTEACH.

taskZONE

In deze taak wordt gecontroleerd of de robotarm zich in een gevaarlijke zone bevindt. Dit kan te dicht bij de

middelste paal van de brug (Figuur 1), de slede van de voorste opstelling (Figuur 1) of de controller zijn. Als de

arm in één van de zones terechtkomt, wordt de voeding van de arm onmiddellijk uitgeschakeld.

taskDRIVE

Deze taak verzorgt de communicatie met de drive. Afhankelijk van het status word van de drive wordt de juiste

operation mode geselecteerd en wordt de drive vrijgegeven. Ook het versturen van de positie en snelheid

setpoints en het binnenlezen van de positie feedback wordt behandeld.

taskTEACH

Wanneer deze taak wordt uitgevoerd, kan een positie van de slede en de tool worden opgeslagen door het

indrukken van knop 2 op de MCP. Zo is het mogelijk om de verschillende punten van het traject aan te leren.

Het indrukken van knop 3 leidt tot het beëindigen van taskTEACH en het starten van taskCYCLE.

taskCYCLE

In deze taak wordt de aansturing van de robotarm en de slede gegenereerd. Dit kan op twee manieren:

$Xmovel: de externe as beweegt naar de opgegeven positie terwijl het tool center point (TCP) van de robotarm

een rechte lijn beschrijft naar het opgegeven punt.

$Xmovej: de beweging gebeurt as per as. Dit is de snelste manier om te bewegen naar een bepaalde positie

van de externe as en een punt van het TCP.

In beide gevallen berekent de controller het nodige pad (rode lijn in Figuur linear interpolation) dat de slede

moet afleggen op basis van de opgegeven snelheden, versnellingen, … in externaxes.cfx. Uit dit pad worden

dan de positie en de snelheid van de externe as op vaste tijdsintervallen genomen en verstuurd via CANbus

naar de drive.

stop

Bij het stoppen van de applicatie worden het start programma en de overige taken onmiddellijk beëindigd. Er

wordt ook voor gezorgd dat de beweging van de arm en de slede stopt.

Page 95: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

83

start

begin

//taskZONE gevarenzone controleren

//taskDRIVE communicatie met drive verzorgen

//taskTEACH traject teachen

//taskCYCLE beweging synchroniseren

//taskZONE eenmalig aanmaken

//als taak nog niet bestaat

if taskStatus("ZONE")==-1

//naam en prioriteit van taak meegeven

taskCreate "ZONE",10,taskZONE()

//wachten totdat taak bestaat

wait(taskStatus("ZONE")==1)

endIf

//taskDRIVE eenmalig aanmaken

if taskStatus("DRIVE")==-1

taskCreate "DRIVE",100,taskDRIVE()

wait(taskStatus("DRIVE")==1)

endIf

bTeachDone=false

//main loop

while true

//demo external axis afgelopen --> stop

if taskStatus("DRIVE")==250

call stop()

endIf

//controle zone

if !bZoneAs1 and !bZoneAs2 and !bZoneControl and !bZoneFlens and

!bZoneSlede

bZone=false

else

bZone=true

endIf

//traject teachen als knop 1 wordt ingedrukt --> taskTEACH

if aioGet(aidrvOpModeDisp)==7 and isKeyPressed(281) and

taskStatus("TEACH")==-1

taskCreate "TEACH",100,taskTEACH()

wait(taskStatus("TEACH")==1)

endIf

//robot bevindt zich niet in gevarenzone en traject is geteached -->

taskCYCLE

if aioGet(aidrvOpModeDisp)==7 and !bZone and bTeachDone and

taskStatus("CYCLE")==-1

taskCreate "CYCLE",100,taskCYCLE()

wait(taskStatus("CYCLE")==1)

endIf

//robot bevindt zich in gevarenzone of traject wordt geteached --> kill

taskCYCLE

Page 96: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

84

if (bZone or !bTeachDone) and taskStatus("CYCLE")!=-1

//beweging robotarm en slede stoppen

disablePower()

//volgende beweging moet starten uit jHome en nHomeExtern

$XresetMotion(jHome,nHomeExtern)

//taskCYCLE beëindigen

taskKill("CYCLE")

wait(taskStatus("CYCLE")==-1)

endIf

delay(0)

endWhile

end

taskZONE

begin

//bij herstarten moet zone gecontroleerd worden

bZoneAs1=false

bZoneAs2=false

bZoneFlens=false

bZoneSlede=false

bZoneControl=false

//limieten

//ASSEN

nPosZoneAs1[0]=0

nPosZoneAs1[1]=3000

nPosZoneAs2[0]=750

nPosZoneAs2[1]=2100

nPosZoneAs2[2]=300

nPosZoneAs2[3]=2000

//FLENS

nYNegLimitFlens=30

nPosZoneFlens[0]=0

nPosZoneFlens[1]=2800

//SLEDE

nYPosLimitSlede=500

nZPosLimitSlede=350

//main loop

while true

//robotarm uit gevarenzone gebracht?

//AS1

if bZoneAs1

//as1 groter dan -90 en kleiner dan 115 graden

if (herej()--90,0,0,0,0,0)>0,-9999,-9999,-9999,-9999,-9999 and

(herej()-115,0,0,0,0,0)<0,9999,9999,9999,9999,9999

bZoneAs1=false

endIf

endIf

//AS2

if bZoneAs2

//as1 kleiner dan 20 graden en as2 kleiner dan 0 graden

if (herej()-20,0,0,0,0,0)<0,9999,9999,9999,9999,9999 and

(herej()-0,0,0,0,0,0)<9999,0,9999,9999,9999,9999

bZoneAs2=false

//as1 groter dan -20 graden en as2 groter dan 0 graden

Page 97: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

85

elseIf (herej()--20,0,0,0,0,0)>0,-9999,-9999,-9999,-9999,-9999

and (herej()-0,0,0,0,0,0)>-9999,0,-9999,-9999,-9999,-9999

bZoneAs2=false

endIf

endIf

//CONTROLLER

if bZoneControl

//as2 groter dan -65 en kleiner dan 65 graden

if (herej()-0,-65,0,0,0,0)>-9999,0,-9999,-9999,-9999,-9999 and

(herej()-0,65,0,0,0,0)<9999,0,9999,9999,9999,9999

bZoneControl=false

endIf

endIf

//FLENS

//huidige positie opslaan in local point

l_pHere=here(flange,world)

if bZoneFlens

//flens ver genoeg van paal

if l_pHere.trsf.y>nYNegLimitFlens

bZoneFlens=false

endIf

endIf

//SLEDE

if bZoneSlede

//flens ver genoeg van slede

if l_pHere.trsf.y<nYPosLimitSlede or l_pHere.trsf.z<nZPosLimitSlede

bZoneSlede=false

endIf

endIf

//robotarm in gevarenzone?

//AS1

if !bZoneAs1

//as1 kleiner dan -90 of groter dan 115 graden

if (herej()--90,0,0,0,0,0)<0,9999,9999,9999,9999,9999 or

(herej()-115,0,0,0,0,0)>0,-9999,-9999,-9999,-9999,-9999

if (nPosZoneAs1[0]<nPosExtern and nPosExtern<nPosZoneAs1[1])

bZoneAs1=true

disablePower()

popUpMsg("As1 kan niet passeren langs paal")

logMsg("As1 kan niet passeren langs paal")

endIf

endIf

endIf

//AS2

if !bZoneAs2

//as1 groter dan 20 graden en as2 kleiner dan 0 graden

if (herej()-20,0,0,0,0,0)>0,-9999,-9999,-9999,-9999,-9999 and

(herej()-0,0,0,0,0,0)<9999,0,9999,9999,9999,9999

if (nPosZoneAs2[0]<nPosExtern and nPosExtern<nPosZoneAs2[1])

bZoneAs2=true

disablePower()

popUpMsg("As2 kan niet passeren langs paal")

logMsg("As2 kan niet passeren langs paal")

endIf

//as1 kleiner dan -20 graden en as2 groter dan 0 graden

Page 98: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

86

elseIf (herej()--20,0,0,0,0,0)<0,9999,9999,9999,9999,9999 and

(herej()-0,0,0,0,0,0)>-9999,0,-9999,-9999,-9999,-9999

if (nPosZoneAs2[2]<nPosExtern and nPosExtern<nPosZoneAs2[3])

bZoneAs2=true

disablePower()

popUpMsg("As2 kan niet passeren langs paal")

logMsg("As2 kan niet passeren langs paal")

endIf

endIf

endIf

//CONTROLLER

if !bZoneControl

//as2 kleiner dan -65 of groter dan 65 graden

if (herej()-0,-65,0,0,0,0)<9999,0,9999,9999,9999,9999 or

(herej()-0,65,0,0,0,0)>-9999,0,-9999,-9999,-9999,-9999

bZoneControl=true

disablePower()

popUpMsg("As2 bevindt zich te dicht bij controller")

logMsg("As2 bevindt zich te dicht bij controller")

endIf

endIf

//FLENS

if !bZoneFlens

//flens te dicht bij paal

if l_pHere.trsf.y<nYNegLimitFlens

if (nPosZoneFlens[0]<nPosExtern and nPosExtern<nPosZoneFlens[1])

bZoneFlens=true

disablePower()

popUpMsg("Flens kan in botsing komen met paal")

logMsg("Flens kan in botsing komen met paal")

endIf

endIf

endIf

//SLEDE

if !bZoneSlede

//flens te dicht bij slede

if l_pHere.trsf.y>nYPosLimitSlede and l_pHere.trsf.z>nZPosLimitSlede

bZoneSlede=true

disablePower()

popUpMsg("Flens kan in botsing komen met slede")

logMsg("Flens kan in botsing komen met slede")

endIf

endIf

delay(0)

endWhile

end

Page 99: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

87

taskDRIVE

begin

//frame gelinkt aan externe as declareren

$XframeLink(fExtremity)

//main loop

while true

//huidige positie van externe as

$Xherej(nPosExtern)

//geen noodstop, verkeerde zone en positie externe as

if esStatus()!=2 and !bZone and nPosExtern>-10 and nPosExtern<5500

//statuswoord binnenlezen

nStatusWord=aioGet(aistatusWord_0)

//controle of homing al is gebeurd

if bAnd(nStatusWord,16384)==16384

//operation mode = interpolated position mode

aioSet(aodrvOpMode_0,7)

//arm power ON

if isPowered()

//positie sturen naar drive

$XgetDrvCmdPos(nPos)

aioSet(aodrvCmdPos_0,nPos)

//snelheid sturen naar drive

$XgetDrvCmdVel(nSpeed)

aioSet(aodrvCmdVel_0,nSpeed)

//kracht sturen naar drive

//$XgetDrvCmdAtc(nTorque)

//aioSet(aodrvCmdTorq_0,nTorque)

//arm power OFF

else

//huidige positie van externe as sturen naar traject generator

nPos=aioGet(aidrvPosFbk_0)

$XsetDrvFbkPos(nPos)

//huidige positie van externe as sturen naar drive

aioSet(aodrvCmdPos_0,nPos)

//snelheid van externe as op 0 zetten

nSpeed=0

aioSet(aodrvCmdVel_0,nSpeed)

endIf

//homing nog niet gebeurd

else

if !(abs(herej()-jHome)<1,1,1,1,1,1)

popUpMsg("Breng robot in homepositie")

resetMotion(jHome)

wait(abs(herej()-jHome)<1,1,1,1,1,1)

endIf

//operation mode = homing

aioSet(aodrvOpMode_0,6)

endIf

//drive enablen

aioSet(aoctrlWord_0,31)

//wel noodstop, verkeerde zone of positie externe as

else

//drive disablen

aioSet(aoctrlWord_0,0)

endIf

delay(0)

endWhile

end

Page 100: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

88

taskTEACH

begin

bTeachDone=false

popUpMsg("Druk op knop 2 om te teachen of knop 3 om te beëindigen")

//vorig traject wissen

resize(nPosStp,1,1)

resize(pPointStp,1,1)

do

wait(isKeyPressed(282) or isKeyPressed(283))

if isKeyPressed(282)

//knop 2 indrukken

wait(isKeyPressed(282))

nPosStp[size(nPosStp)-1]=nPosExtern

pPointStp[size(pPointStp)-1]=here(flange,world)

//arrays vergroten met 1 waarde

append(nPosStp)

append(pPointStp)

//knop 2 loslaten

wait(!isKeyPressed(282))

popUpMsg("Ga naar volgende positie")

delay(0)

endIf

until isKeyPressed(283)

//als array meer dan 1 waarde bevatten

if size(nPosStp)>1

//laatste waarde wissen

resize(nPosStp,1,size(nPosStp)-1)

resize(pPointStp,1,size(pPointStp)-1)

popUpMsg("Traject is geteached")

bTeachDone=true

else

popUpMsg("Geen traject geteached")

endIf

end

taskCYCLE

begin

//main loop

while true

//traject aan helft nominale snelheid

//$Xmovel is niet mogelijk vanuit kalibratiestand

$Xmovej(pPointStp[0],nPosStp[0],flange,mLowSpeed)

//$Xmovel voor flens op constante positie

for l_nCounter=1 to 9

$Xmovel(pPointStp[l_nCounter],nPosStp[l_nCounter],flange,mLowSpeed)

endFor

//$Xmovej voor snelste beweging

for l_nCounter=10 to size(nPosStp)-1

$Xmovej(pPointStp[l_nCounter],nPosStp[l_nCounter],flange,mLowSpeed)

endFor

//traject aan nominale snelheid

for l_nCounter=0 to 9

$Xmovel(pPointStp[l_nCounter],nPosStp[l_nCounter],flange,mNomSpeed)

endFor

Page 101: Implementeren van een 7e as bij een robotarm Thomas Ryonlib.ugent.be/fulltxt/RUG01/002/154/126/RUG01-002154126_2014_0001_AC.pdfAbstract This document describes the implementation of

89

for l_nCounter=10 to size(nPosStp)-1

$Xmovej(pPointStp[l_nCounter],nPosStp[l_nCounter],flange,mNomSpeed)

endFor

delay(0)

endWhile

end

stop

begin

//taskCYCLE beëindigen

if taskStatus("CYCLE")!=-1

taskKill("CYCLE")

wait(taskStatus("CYCLE")==-1)

endIf

//taskTEACH beëindigen

if taskStatus("TEACH")!=-1

taskKill("TEACH")

wait(taskStatus("TEACH")==-1)

endIf

//taskDRIVE beëindigen

if taskStatus("DRIVE")!=-1

taskKill("DRIVE")

wait(taskStatus("DRIVE")==-1)

endIf

//taskZONE beëindigen

if taskStatus("ZONE")!=-1

taskKill("ZONE")

wait(taskStatus("ZONE")==-1)

endIf

//beweging arm stoppen

stopMove()

//beweging slede stoppen

nPos=aioGet(aidrvPosFbk_0)

$XsetDrvFbkPos(nPos)

aioSet(aodrvCmdPos_0,nPos)

//snelheid van slede op 0 zetten

nSpeed=0

aioSet(aodrvCmdVel_0,nSpeed)

//drive disablen

aioSet(aoctrlWord_0,0)

end