Eindhoven University of Technology MASTER Het ontwerpen en ... · onder begeleiding van ir. C.A.M....
Transcript of Eindhoven University of Technology MASTER Het ontwerpen en ... · onder begeleiding van ir. C.A.M....
Eindhoven University of Technology
MASTER
Het ontwerpen en realiseren van een robotbesturing
Tielemans, M.J.A.
Award date:1986
Link to publication
DisclaimerThis document contains a student thesis (bachelor's or master's), as authored by a student at Eindhoven University of Technology. Studenttheses are made available in the TU/e repository upon obtaining the required degree. The grade received is not published on the documentas presented in the repository. The required complexity or quality of research of student theses may vary by program, and the requiredminimum study period may vary in duration.
General rightsCopyright and moral rights for the publications made accessible in the public portal are retained by the authors and/or other copyright ownersand it is a condition of accessing publications that users recognise and abide by the legal requirements associated with these rights.
• Users may download and print one copy of any publication from the public portal for the purpose of private study or research. • You may not further distribute the material or use it for any profit-making activity or commercial gain
FACULTEIT DER ELEKTROTECHNIEK
TECHNISCHE UNIVERSITEIT EINDHOVEN
Vakgroep meet- en regeltechniek
HET ONTWERPEN EN REALISEREN
VAN EEN ROBOTBESTURING
door M.J.A. Tielemans
Rapport van het afstudeerwerk
uitgevoerd van januari tot december 1986
in opdracht van prof. ir. F.J. Kylstra
onder begeleiding van ir. C.A.M. van den Brekel en
A. van de Graft
in samenwerking met F.M.T. Coenen
De faculteit der Elektrotechniek van de Technische
Universiteit Eindhoven aanvaardt geen verantwoordelijkheid
voor de inhoud van stage- en afstudeerverslagen.
1
SUMMARY
DESIGN AND IMPLEMENTATION OF A ROBOT-CONTROLLER
The design of a controller for an ASEA IRb-6/2 robot will be
discussed. The controller is structured in a hierarchical
modular way.
The construction consists of the following layers:
1. The robot-programming system and the setpoint-generator:
both implemented on a HP 9920 microcomputer.
2. The axis-controllers, implemented on 8085-processorcards
and consisting of:
- An axis-position-initiationprocedure.
- An interpolator.
- A Digital Controller.
3. The servo-system consisting of:
- Digital to Analog Converters to convert the digital
control-signal into an analog control-signal.
- Linear Servo-amplifiers.
- The actuators: DC-motors.
- Resolvers and converters to have a digital position-
signal, which can be fed back to the digital
controller.
In this report the design and implementation of layer 2 and
3 is described.
The axis-velocity and position are controlled by two
cascaded PlO-controllers. The velocity-feedback signal is
filtered to increase the stability of the controller.
Finally the optimization of the axis-controller by using a
performance criterium is described.
3
INHOUDSOPGAVE
pag:
Samenvatting
Inhoudsopgave
2
4
1. Inleiding 6
1.1. Robotonderzoek aan de T.U. Eindhoven
1.2. Het doel van dit afstudeerwerk
6
7
2. Opzet van de robotbesturing 9
2.1. De ASEA IRb-6
2.2. Structuur van het besturingssysteem
9
11
3. De hardware van het besturingssysteem 18
3.1. Inleiding 18
3.2. EWMC processorkaart 20
3.3. Positieopnemer 22
3.4. Digitaal Analoog Omzetter 26
3.5. Versterkers, voeding en motoren 29
3.6. Beveiliging 31
4. Philips Microcomputer Development System 35
4.1. Inleiding 35
4.2. UNIX en editor 37
4.3. ontwikkelfaciliteiten op PMDS 41
4.4. Omzetten van Philips format naar Intel-hex format 44
5. De software van het besturingssysteem 47
5.1. Inleiding 47
5.2. Initialisatie van de nulpositie 50
5.3. Setpointoverdracht en interpolatie van setpoints 56
5.4. De digitale regelaar 61
5.4.1. Inleiding 61
4
5.4.2. Gebruik van laagdoorlaatfilter in
terugkoppeling 65
5.4.3. Optimalisatie van de regelparameters 70
5.4.4. Metingen bij de optimalisatie van de
regeling 75
6. Conclusies en aanbevelingen 80
7. Literatuur 84
Bijlage
1. Het beveiligingscircuit van de motoren 86
2. Hardwareverb indingen 87
2.1. HP-GPIO - Hoofdinterface 87
2.2. Hoofdinterface - Interface 2 en 3 88
2.3. EWMC processorkaart - Interfaces 89
2.4. DAC en positieopnemer - EWMC processorkaart 90
2.5. Robot - Positieopnemer 91
3. P.M.O.S 92
3.1. UNIX shell scripts 92
3.2. Editor commando' s 93
3.3. Debugger commando's 94
3.4. Aansluiting van PMDS naar THE-net en DECprinter 95
4. EWMC Processorkaart en assemblerprogramma 97
4.1. Geheugen en I/O adressen van de EWMC 97
4.2. Procedure-namen met verklaring 98
4.3. Variabelen met betekenis 100
5. Meetresultaten bij de optimalisatie
van de PID-regelaars 101
5.1. Optimalisatie van de PI-snelheidsregelaar 101
5.2. Optimalisatie van de P-positieregelaar 102
5.3. Optimalisatie van de PID-positieregelaar 103
6. Listing C-programma om Inte1hex-code te genereren ..... 104
5
Hoofdstuk 1 INLEIDING
1.1. Robotonderzoek aan de Technische Universiteit Eindhoven
In de literatuur worden diverse definities voor een robot
gegeven, die per land nog eens sterk verschillen. In [lito
3] wordt de volgende definitie gegeven:
Industriele robots zijn universele, vrij programmeerbare
manipulatoren, die produkten of gereedschappen kunnen hante
ren en die zijn ontworpen voor een breed spektrum van taken.
In 1985 stonden er zo'n 135.000 robots opgesteld in Japan,
de V.S. en Europa, voor het grootste gedeelte in de automo
bielindustrie [lit 4]. De robots, die daarbij het meeste
toegepast worden, zijn robots van de eerste generatie, waar
bij de arm bestuurd wordt zonder dat er een terugkoppeling
is van de positie van de robot t.o.v. het werkstuk of de
daarop uitgeoefende kracht. De groei van het aantal ver
kochte robots in de toekomst is sterk afhankelijk van het
feit of er in de toekomst robots ontwikkeld kunnen worden,
waarbij de robots uitgerust kunnen worden met sensoren
(robots van de tweede generatie) .
Het onderzoek aan de T.U. Eindhoven op het gebied van flexi
bele automatisering en industriele robots is een interfacul
teitsproject (FAIR) tussen de faculteit Electrotechniek
(vakgroep meet- en regeltechniek ER) en de faculteit Werk
tuigbouwkunde (vakgroep Produktietechnologie en Bedrijfs
mechanisatie WPB). Het doel van het onderzoek is ondermeer
om bij te dragen aan de ontwikkeling van de volgende gene
ratie robots, waarbij de intelligentie van robots vergroot
wordt door terugkoppeling van sensorsignalen.
Het interafdelingsproject is verdeeld over diverse project
groepen. Zo worden ondermeer fysische- en rekenmodellen
ontwikkeld, waarmee het dynamisch gedrag van een robot
systeem beschreven kan worden en is er onderzoek gaande naar
6
het adaptief regelen waarbij gebruik wordt gemaakt van een
invers robotmodel.
Binnen de projectgroep "aandrijvingen en besturingen" wordt
een robot-besturingssysteem ontwikkeld en gebouwd. Men heeft
daarbij de beschikking over een ASEA IRb-6/2 robot.
1.2. Het doel van dit afstudeerproject
Nadat eerder onderzoek uitgewezen heeft dat ingrijpen op de
commercieel verkrijgbare besturing van de ASEA-robot prak
tisch onmogelijk is, is besloten om een geheel nieuwe
besturing voor de ASEA IRb-6 robot te ontwikkelen. Het doel
is om een multiprocessorsysteem te ontwikkelen dat hierar
chisch en modulair is.
Het voordeel van een zelf ontwikkelde besturing is dat
inzicht verkregen wordt in de problemen die optreden bij het
ontwerpen en bouwen van zo'n besturing en dat in de toekomst
naar eigen inzichten een eventueel gewenste terugkoppeling
van sensorsignalen met minder moeite te realiseren is.
Frank van Blerck [lito 1] heeft een eerste aanzet gegeven
tot de bouw van deze besturing, waarbij gekozen is om op het
hoogste niveau een Hewlett Packard 9920 microcomputer te
gebruiken. Deze microcomputer verzorgt de robotprogrammering
door de gebruiker, berekent coordinatentransformaties en zal
setpoints doorgeven aan digitale regelaars, waarbij gebruik
gemaakt wordt van microprocessorkaarten met Intel 8085
processoren. Omdat er niet meer dan 3 processorkaarten
beschikbaar waren, is besloten om in eerste instantie alleen
de positie te regelen. De vierde en vijfde vrijheidsgraad,
die de stand van bv. een grijper bepalen, zullen buiten
beschouwing gelaten worden.
7
Mijn afstudeerwerk heeft bestaan uit het realiseren van de
hardware van de robotbesturing en de implementatie van de
digitale asregelaars. Dit werk is een vervolg op het werk
van van Blerck en is uitgevoerd in samenwerking met Frans
Coenen, die het gedeelte van de besturing dat betrekking
heeft op de HP microcomputer ontwikkeld heeft [lito 2].
8
Hoofdstuk 2. OPZET VAN DE ROBOTBESTURING
2.1. De ASEA IRb6j2
De ASEA IRb6j2 robot, die in het verleden is aangeschaft
zonder de gebruikelijke commerciele besturing van ASEA,
heeft 5 vrijheidsgraden, die allemaal van het rotatie type
zijn (fig. 2.1.-1).
5cre.... eUJut
Sen.... unit
Turn dI1. ve UlU t , ..,
Til t drivE! UJll.t, f
Et dnve uzut
OL d.rlve '.Ll1it
f drlV'1! UlU.t
/ Tilt (bend). I
r----11~~-~ CTum. v
'-- Wrist
L.- Upper a.J:III
~ Lover arm
f--llody
f-------- Pede.tal
Fig. 2.1.-1: De ASEA IRb-6j2 robot.
De eerste vrijheidsgraad (phi-as) kan draaien over maximaal
340 graden, waarbij opgemerkt moet worden dat deze hoek
betrekking heeft op de as zelf en niet op de motor, die de
as aandrijft. Tussen de motor en de as zit een vertragende
overbrengingsverhouding van 158, die gerealiseerd wordt door
een harmonie drive. De maximale snelheid van deze as is 95
graden per seconde.
De rotatiemogelijkheden van de schouder (theta-as) en de
elleboog (alpha-as) worden weergegeven in figuur 2.1.-2. De
aandrijving geschiedt door middel van schroefspindels. De
aspositie van de boven- en onderarm zijn zodanig afhankelijk
van elkaar, dat bij verandering van de theta-as de bovenarm
dezelfde stand (ten opzichte van het wereldcoordinaten
stelsel) in zal blijven nemen. Dit heeft als consequentie
9
dat de controle op het te dicht naderen van deze eindpositie
niet door de regelaar kan gebeuren, maar dat dit alleen op
het hoogste niveau gecontroleerd kan worden. De overbren
gingsverhoudingen van de tweede en de derde vrijheidsgraad
zijn niet constant en afhankelijk van de posities, die de
beide vrijheidsgraden innemen. Van Wijck (lit. 7] heeft een
afleiding gegeven voor de overbrengingsverhoudingen van de
tweede en de derde vrijheidsgraad.
\
Fig. 2.1.-2: Aandrijving van de tweede en derde as.
De draaimogelijkheden in de pols worden gerealiseerd door de
v- en de t-as. De v-as (Bend) kan varieren tussen +90 en -90
graden en de t-as (Turn) kan roteren over 360 graden. De
aandrijving van de polsgewrichten gaat door middel van een
parallel stangenmechanisme. Deze laatste 2 assen bepalen de
stand van een door de robot te hanteren produkt of gereed
schap.
De ASEA IRb-6 is uitgerust met AXEM F9M4H permanent-magneet
gelijkstroom-motoren van de firma CEM, die een vermogen
hebben van 168 Watt en een nominale snelheid van 3000 omwen
telingen per minuut. Iedere motor is verbonden met een
tachogenerator (AXEM F9T met een uitgangsspanning van 3 Volt
per 1000 omwentelingen per minuut) en een resolver (SINGER
RC/CR4 1095 004), waarmee de hoekstand van de motoras (niet
te verwarren met de robot-asstand) bepaald kan worden. In
paragraaf 3.3. zal verder ingegaan worden op de methode van
10
positiebepaling van de robot-asstand.
Bij de theta- en alfa-as z~Jn (op een positie net voor het
einde van het bereik) referentieschakelaars aangebracht,
waarmee een initiele nulpositie bij deze assen bepaald kan
worden. Bij de eerste as is een zelfgebouwde constructie
aangebracht waarmee een nulpositie bepaald kan worden.
Om de ASEA robot te beveiligen z~Jn eindschakelaars aange
bracht. Bij het inschakelen van een van deze eindschake
laars, worden de motoren kortgesloten en zal de robot niet
met een klap tegen een mechanische eindstand aanlopen.
2.2. structuur van het besturingssysteem
Een robotbesturing kan vergeleken worden met elk ander com
plex systeem (bv. een bedrijf of een biologisch organisme)
dat beheerst en geregeld moet worden. Door Albus [lito 5] is
een besturingsconcept opgesteld dat specifiek voor een robot
werkcel van toepassing is (zie fig. 2.2.1).
Een robotbesturingssysteem is net als andere complexe syste
men hierarchisch opgebouwd, waarbij een complexe taak op het
hoogste niveau verdeeld wordt in sub-taken die naar lagere
niveau's worden doorgegeven: de taakdecompositie. Dit opde
len van taken gaat net zolang door tot een subtaak zo klein
is dat het met een eenvoudige aktie kan worden uitgevoerd.
Op deze manier kan een complexe taak opgesplitst worden en
mbv. commando's naar lagere niveau's uitgevoerd worden.
Behalve de taakdecompositie-module bevinden zich op een
zelfde niveau nog twee modules: een terugkoppelmodule en een
module, die een model representeert van dat niveau.
De terugkoppelmodule zorgt ervoor dat informatie over een
lager niveau omgerekend wordt en als relevante informatie
11
teruggekoppeld wordt naar de taakdecompositie-module. De
inputsignalen kunnen ook bestaan uit door sensoren gemeten
informatie. Op het laagste niveau bestaat de terugkoppeling
alleen maar uit sensorinformatie.
De module die het model van een niveau representeert, heeft
als input de uitgangssignalen van de taakdecompositie en de
berekende terugkoppelsignalen. Het model vergelijkt hierbij
de werkelijkheid met de verwachtingen. Als een groot ver
schil gevonden wordt moet de taakdecompositie-module beslis
sen welke fout opgetreden is en op welke manier deze opge
lost kan worden.
TIVEil
ALS
\ \COMPlEX TASK
HIGH LEVEL PART I!HNTITY 51MPU IV'SION jlHATIONSHIPS TASK
PROCEiSING GENERA TOR
\ \ SII,IPlE TASK
INTERMEDIA Ti P·AJtT ~O S1T10~1 I ELEMfNTAL IVISION OllIEI~TATIeN I MOVE
PROCESSING CHIERATOR
\ \ HEMEN rAL MOVE
LOW LEVEL I PRoxlMIn I ACTION
VISION I EDGES I PRIMATIVE
PROCESSING GENERATOR
\ \ ACTION PRI~!,
XY! Fe SITION. (XY
COORCINA TE I FO~CEI eOORDINA rE
TlANSFORMER TRANSFORMEI
\ " ~k..é6JOINT JOINT posmON.
IPosmON VE~OClTY SERVOS
SeALING
\ DRIVEMEASUREMENT SIGNDATA
Fig. 2.2.-1: De functionele opbouw van een robotbesturing,
volgens Albus [lito 5].
Voor iedere module zijn er 3 tijdsaspecten waar te nemen.
Dit zijn de planningstijd, de res~onsietijd en de cyclus
tijd.
De planningstijd is het interval waarover vooruit gekeken
wordt. Op hogere niveau's is de planningstijd veel groter
dan op lagere niveau's het geval is.
12
De responsietijd is de vertragingstijd tussen een verande
ring in de input en het tijdstip waarop de output van het
geregelde systeem deze gewenste verandering bereikt.
De cyclustijd is het interval, waarmee het ingangssignaal
bemonsterd wordt. Over het algemeen zal de responsietijd
iets groter zijn dan de cyclustijd maar veel kleiner dan de
planningstijd. De responsietijd heeft een invloed op de
stabiliteit. Dit zal ook duidelijk terug te vinden zijn in
de instelling van de digitale regelaar, die in hoofdstuk 5
besproken zal worden.
Als communicatieprincipe tussen de diverse modules wordt
door Albus voorgesteld om een methode te gebruiken, waarbij
door 1 module een status in een database geschreven wordt en
waarbij door vele andere deze status gelezen kan worden. Dit
alles kan door een status-klok op alle niveau's gesynchroni
seerd worden door bepaalde tijdsintervallen te bestemmen
voor het schrijven van data en andere voor het lezen van
data.
Om deze hierarchische structuur te realiseren is het gewenst
om een zodanig besturingssysteem te hebben, dat taken paral
lel aan elkaar uitgevoerd kunnen worden.
In figuur 2.2.-2 is te zien hoe het functionele schema van
het besturingssysteem eruit zal gaan zien.
Het hoogste niveau van de robotbesturing bestaat uit de
robotprogrammering door de gebruiker, het verwerken van dit
robotprogramma naar een geschikt traject en het omrekenen
van dit traject naar geschikte coordinaten voor de verschil
lende assen. Bij de robotprogrammering wordt de robot door
de gebruiker mbv. een teach-in paneel (bv. een joystick)
bewogen (TEACH) en worden gewenste bewegingen opgeslagen
(STORE). Bij het automatisch uitvoeren van het robotpro-
13
gramma (AUTO) wordt eerst in het x,y,z stelsel met behulp
van een interpolator een gewenst traject berekend en wordt
dit met coordinatentransformaties omgezet in gewenste posi
ties van de 3 motoren. Deze gewenste as-posities worden om
de 80 ms als verplaatsingssetpoint doorgegeven aan de bij
die as horende regelaar.
Het hoogste niveau van de robotbesturing kan beschouwd
worden als het programmeersysteem van de robot. Het ontwerp
hiervan wordt door Coenen (lit. 2J besproken.
TeQc.~ - I",
Î-'o.."ed
EWI1C. -
proc.e\s.,.,. kll.4.r"te.n
Fig. 2.2.-2: Functioneel schema van de robotbesturing.
Op het middelste niveau van de hierarchie bevinden zich voor
iedere as een interpolator, die de 80 ms verplaatsings
setpoints omzet naar 10 ms verplaatsingssetpoints en een
14
digitale regelaar. Op dit niveau moet tevens gecontroleerd
worden of een eindpositie bereikt is.
Bij het opstarten van de robotpositie is het gewenst dat de
robot een eenduidige initiele positie in zal nemen. Tijdens
deze positie-initialisatie zullen de verschillende vrij
heidsgraden niet bestuurd worden vanuit het bovenste niveau
maar zullen deze onafhankelijk van elkaar bestuurd worden.
Op het laagste nieveau wordt de omzetting verzorgd van het
uitgangssignaal van de regelaar naar een actuator-input
signaal en wordt de positie van de actuator gemeten.
De samplefrequentie op het laagste niveau is gelijk aan 10
ms.
Het is gewenst om op het laagste niveau het tijdstip waarop
de positie bepaald wordt en het tijdstip waarop de spanning
over de motor veranderd wordt gelijktijdig en op equi
distante tijdstippen te laten plaatsvinden. Dan zal het
exacte tijdstip bekend zijn waarop een positie gemeten is.
Als de tijd tussen 2 opeenvolgende veranderingen van de
spanning gelijk zijn zullen geen niet-lineariteiten geintro
duceerd worden.
Het hoogste niveau wordt geimplementeerd op een Hewlett
Packard 9920 microcomputer. Het programmeersysteem, dat op
deze microcomputer geimplementeerd is, is beschreven in het
verslag van Coenen [lito 2].
De digitale regelaars voor de verschillende assen zijn geim
plementeerd op een EWMC processorkaart. EWMC is de afkorting
van Elektro-Werktuigbouw Micro Computer. Iedere robotas
wordt geregeld door een eigen processorkaart.
De omzetting van de output van de digitale regelaar naar een
analoog inputsignaal voor een actuator wordt verricht door
15
een OAC. Op de OAC-kaart vindt de omzetting plaats van het
a-bits digitaal uitgangssignaal van de regelaar naar een
analoge spanning tussen -10 en +10 Volt, die na versterking
als ingangssignaal van de motor fungeert.
Om de positie van een robotas te bepalen wordt gebruik
gemaakt van een resolver, die verbonden is met de motoras.
Met behulp van een Resolver to oigital-Converter (ROC) wordt
het resolversignaal omgezet in een 12 bits digitaal signaal.
Op de positieopnemerkaart zijn voorzieningen getroffen om
mbv. een logische schakeling de positie van de motoras uit
te breiden tot een 20 bits digitaal signaal dat de positie
van de robotas representeert.
De verbinding van de verschillende EWMC-processorkaarten
met de host-computer, de OAC en de positieopnemer wordt op
eenvoudige wijze gerealiseerd door gebruik te maken van
interfacekaarten.
Op deze manier kunnen de verschillende kaarten op een effi
ciente wijze in een rek geplaatst worden.
Op de hoofdinterface (de verbinding met de HP) is verder een
timing- en beveiligingsschakeling opgebouwd met behulp van
watchdogs. In paragraaf 3.6., waar de beveiliging besproken
zal worden, zal hier verder op ingegaan worden.
In de besturing die gerealiseerd is worden de tijdstippen,
waarop een commando gegeven moet worden aan een lager
niveau, bepaald door interrupts die door de interne klok van
de HP host-microcomputer gegenereerd worden: de sampletijden
zijn op het hoogste niveau ao ms en op het laagste niveau
10 ms. Met de gerealiseerde besturing is het mogelijk om de
kloksignalen in de toekomst extern te genereren en als
interruptsignalen aan de HP en de EWMC-processorkaarten aan
te bieden. Dit omdat de interne klok van de HP geen kleinere
sampleintervallen kan genereren dan het 10 ms interval dat
nu gebruikt wordt.
16
Door de keuze van de diverse onderdelen van de besturing
zijn er enkele beperkingen. Zo is bij het ontwerpen besloten
om voorlopig geen positieterugkoppeling van de as-processor
kaarten naar de host-computer (HP) in te bouwen.
17
Hoofdstuk 3 DE HARDWARE VAN HET BESTURINGSSYSTEEM
3.1. Inleiding
In figuur 3.1.-1 is de hardware van de besturing nader
uitgewerkt.
rWMc.
1
Hoofd inter{a.ce
EWMC
~
'DACPOSITIEOPHEMElt
DAt.1'OS Ir1e:OPNEMEIt
DAGPOSITIEOPNEMER
Rt~lvtr Re~ver Re~otller
Fig. 3.1.-1: Hardware van de robotbesturing.
De belangrijkste taak van de hoofdinterface is om een koppe
ling te leggen tussen de GPIO-kaart van de HP-microcomputer,
die de I/O van de HP verzorgt, en de verschillende EWMC
processor-kaarten. De uitgangssignalen van de HP worden op
de hoofdinterface bovendien afgesloten met de daarvoor ver
eiste weerstanden.
Van de HP-microcomputer naar de EWMC-processorkaarten zijn
de volgende verbindingen aanwezig:
- Acht datalijnen, waarover de setpoint-databytes en de
checksum-byte verstuurd worden naar de EWMC-processorkaar
ten. Deze achb lijnen zijn gemeenschappelijke datalijnen
18
tussen de HP en de verschillende EWMC-processorkaarten.
- Een handshake lijn Data Valid.
- Een 10 ms interruptlijn. Deze lijn is gemeenschappelijk.
In de toekomst kan dit interruptsignaal door een externe
klok gegenereerd worden.
- Drie 80 ms interruptlijnen: voor iedere EWMC-processor
kaart een lijn. Omdat de databus gemeenschappelijk is moet
de setpointoverdracht voor iedere as afzonderlijk gebeuren
en om de overdracht op te starten moet er dan ook voor
iedere as een aparte interruptlijn aanwezig zijn.
Van de EWMC-processorkaarten naar de HP-microcomputer worden
de volgende lijnen gebruikt:
- Een handshake lijn Data Accepted, die tevens fungeert als
80 ms acknowledge lijn.
- Een 10 ms acknowledge lijn, die tevens gebruikt wordt om
een watchdog-schakeling te resetten.
- Een checksum OK lijn.
- Een lijn die aangeeft dat de nulpositie van een as bereikt
is.
De verbinding tussen de HP microcomputer en de hoofdinter
face bestaat uit een 50 polige verbinding, met aan de HP
zijde een edge connector en aan de hoofdinterfacezijde een
Eurocard-connector. Tijdens de ontwikkel fase is het voorge
komen dat de GPIO kaart door overspanning defect geraakt is.
Om dit in de toekomst te voorkomen is het raadzaam om de
verbindingslijnen uit te rusten met opto-couplers.
De interfaces van de verschillende assen zijn via 2 50
aderige flat-cable verbindingen verbonden met de bijbe
horende EWMC processorkaart en via een 26 aderige flat-cable
verbonden met de hoofdinterface. De interfacekaarten, die
met Eurocard connectoren samen met de positieopneernkaarten
en de DAC-kaarten op een compacte wijze in een rek zijn
19
ingebouwd, zorgen ervoor dat iedere processorkaart verbonden
is met de bijbehorende positieopneemkaart en DAC-kaart.
Omdat alle kaarten dezelfde Eurocardaansluitingen hebben,
kunnen ook gemeenschappelijke lijnen zoals voedingslijnen en
het resolver-referentiesignaal op eenvoudige wijze
aangesloten worden.
De interfacekaart voor de eerste as is niet als aparte kaart
opgebouwd, maar geintegreerd in de hoofdinterfacekaart. In
bijlage 2.1. t/m 2.5. is een overzicht gegeven van de
verbindingen tussen de diverse onderdelen.
3.2. EWMC-processorkaarten
De EWMC-processorkaart is een single-board computer die
opgebouwd is rondom een 8085A microprocessor van Intel en is
ontwikkeld door de faculteiten Elektrotechniek en Werktuig
bouwkunde van de Technische Universiteit Eindhoven.
Een schema van de opbouw van de processorkaart kunt U vinden
in fig. 3.2.-1.
Behalve de 8085A microprocessor bevat de EWMC-processorkaart
de volgende onderdelen:
- EPROM (8 kByte) met daarin een monitorprogramma.
- 2732 EPROM met daarin het robotprogramma dat voor de
desbetreffende as geschreven is.
- RAM opgebouwd uit 8185 (1 kByte) RAM ic's.
- Twee 8251-USART's, waarmee 2 RS-232 seriele verbindingen
mogelijk zijn.
- Twee 8255-Parallelle I/O interfaces, waarmee in totaal 2
keer 24 I/O lijnen mogelijk zijn.
- 8259 ProgrammabIe Interrupt Controller, waarmee 8 inter
ruptlijnen mogelijk zijn, waarvan 4 via de Parallelle I/O
lijnen.
- 8253 ProgrammabIe Interval Timer/Counter, waarmee 3
20
timers geprogrammeerd kunnen worden.
- 8279 Keyboard/Display controller.
De memory-map van de EWMC-processorkaart is weergegeven in
bijlage 4.1.
COtITIIOt.~
ONTROL
6.flt\ HH_
rD~ IROM 2716 ....27~2 I I RAM 8185 J)l,.t .,
~, ..... P Ir- .il 1'.' • ADG•• " aUI Ad .... AI
,..- IUT 1.1
r- .'U I.'r- IHr. -
8282Aoa•• '1 lUI A,"" A.
BOB5 LATCJ; 2 • nAP ~"'T"H"".CPU ....,- • sr '.f lH"•. I1".a,I••.,,'.. IN'••· ..'-- - RIT". ...,..."c~ INT......,.
1-- ......".7.ALl t--- • LOGIC I-
~ "AT." r------'-.....e.- I
o.
18286
INT
R/W I Jl,to.rA BUS 2 •DRIY( lD6. au=I DRIV 7DIUVU- ~
I 1 ,l-·l~~1 I I 1 1· 1. J
es DATA IJW I cs ll/ITA lJ~ 1I C' DATA Ri",] IC' DATA a/lol IC' DATA a/lol 11 cs Jl,to.TA ~ les !lATA Rlwl82:l~-O 825~l-1 hl~:t~.tJA.cl •. 8~61·t, on. <'" ~21i~ .....n" '....A 82.59
.., 8279'"Q
1 1 r .J.t-o"', f-o-
Il"IINr• • • I • • \ \1'-<>,.... 1'-<>"" ~~.,,- INT ""' .. IIHT _h"NT
~LYI 111/] Ir r IDlllvull",v·"1
I IJi J2 I" JO
Ie30&
Fig. 3.2.-1 Schema van de EWMC-processorkaart.
.Het ontwikkelen van de software voor de processorkaart is
gedaan met behulp van een PMDS-II ontwikkelsysteem van Phi
lips. Meer hierover in Hoofdstuk 4.
Nadat de software voor de verschillende processorkaarten
gerealiseerd was, zlJn de programma's in een EPROM gezet.
Met behulp van het monitorprogramma kan zo'n programma opge
start worden. Daartoe moet eerst door het herhaaldelijk
intikken van het karakter 'U' de seriele verbinding tussen
een terminal en de eerste poort van de EWMC-processorkaart
opgestart worden. Vervolgens kan met het Go commando hèt
21
user-programma opgestart worden (G 1000). Het is ook moge
lijk om door het verzetten van dip-switches op de EWMC
processorkaart dit programma na een reset direct op te laten
starten. Voor meer informatie over het monitorprogramma en
de hardware van de EWMC processorkaartwordt verwezen naar
de handleiding die geschreven is door Piecha [lito 6].
3.3. De Positieopnemer
Zoals vermeld in paragraaf 2.2. is iedere motor van de ASEA
robot verbonden met een tachogenerator en een resolver. De
tachogenerator levert een spanning, die evenredig is met de
hoeksnelheid, maar wordt verder in de besturing niet ge
bruikt. Met behulp van de resolver kan de hoekstand van de
motor bepaald worden.
De resolver is opgebouwd uit 3 spoelen. Twee spoelen z1Jn
vast opgesteld en staan onderling loodrecht op elkaar: de
statorspoelen. De derde spoel (de rotorspoel) is aan een as
bevestigd, die verbonden is met de as van de desbetreffende
motor (fig.3.3.-1).
/9 I
I
A sin JJ~ I
I I, Iroo Ö0Ö0'-r..... __
I Vz
Fig. 3.3.-1: Het schema van de resolver.
Als op de. rotorspoel een referentie-wisselspanning gezet
wordt, dan zal in beide statorspoelen ook een wisselspanning
geinduceerd worden. De amplitudes van deze 2 signalen hangen
22
als volgt af van de hoek theta tussen de rotorspoel en de
beide statorspoelen:
VI = Vmax * cos (theta) * sin(wt)
V2 = Vmax * sin (theta) * sin(wt)
(3.3.1)
(3.3.2)
De spanningen over de statorspoelen en de rotorspoel (refe
rentiespanning) worden als ingangssignaal gebruikt voor een
resolver digital converter (ROC) , die de omzetting verzorgt
naar een digitaal signaal dat de positie van de rotorspoel
tov. beide statorspoelen voorstelt. Gekozen is voor een ROC
19126/302 van de firma OOC.
De output van de ROC wordt gerepresenteerd door een 12 bits
digitaal signaal. De nauwkeurigheid is gelijk aan +/- 8.5
boogminuten. De referentiespanning die vereist is, is een
wisselspanning met een frequentie van 2.4 kHz en een span
ning die groter is dan 4 Volt top-top. Meer informatie kunt
U vinden in bijlage 7 van het verslag van Verhoef [lito 8].
Omdat de reduktieverhouding van de harmonie drive gelijk is
aan 158 zal de robot-ashoekstand (uitgedrukt in graden)
gelijk zijn aan:
robotashoekstand = (motoras-hoekstand x 360) / (4096 x 158)
De resolutie in de robotas-hoekstand is daarmee gelijk aan
0.00056 graden. Voor de eerste vrijheidsgraad betekent dit
(met de bovenarm in een vertikale en de onderarm in een
horizontale positie), dat de afstand die afgelegd wordt door
het T.C.P., gelijk is aan:
765 mm x sin(0.00056) = 7.4 micrometer.
Als de motor 1 omwenteling maakt zal de robotas slechts 2.3
graden verdraaid zijn, terwijl de robotas een rotatiebereik
23
heeft van 340 graden. Om de positie van de robotas te kunnen
bepalen, is het noodzakelijk dat het aantal motoromwente
lingen bijgehouden wordt. Dit kan, door de meest significan
te bit van de 12-bits motoras-positieaanduiding en de
richtingslijn van de RDC toe te voeren naar een schakeling
met up/down counters. Door Verhoef [lito 8] is hiervoor een
ontwerp gemaakt dat door van Blerck [lito 1] verder uitge
werkt is. In figuur 3.3.-2 is een overzicht gegeven van deze
schakeling.
De volgende lijnen vormen de verbinding tussen de positie
opnemer-kaart en de EWMC-processorkaart:
Van positieopnemerkaart naar EWMC-processorkaart:
- Acht datalijnen om per byte de positie-data door te geven.
- Een lijn van de referentiepositie-schakelaar. In feite is
deze lijn slechts een doorverbinding van de robotconnector
naar de EWMC-processorkaart.
Van EWMC-processorkaart naar positieopnemerkaart:
Drie decoder-input lijnen. De decoder bestuurt de output
control lijnen van de latches, waarmee bepaald wordt welke
byte op de rlata-lijnen komt.
- Decoder enable lijn. Als deze niet geactiveerà is, wordt
geen enkele latch aangesproken.
Latch lijn. Als deze lijn hoog gemaakt wordt, zal nieuwe
positie-data in de latches geklokt worden.
Load lijn. Deze lijn wordt gebruikt om een initiele posi
tiewaarde in te klokken.
- Inhibit lijn. Deze lijn is direct verbonden met de inhibit
lijn van de Roe. Als deze lijn laag wordt gemaakt, dan zal
de RDC het digitale outputsignaal stabiel maken, zodat
datatransfer kan plaatsvinden.
24
S""'& _1IUl.j/JGuP;ba..,AI
,,;;;. """".-"p %
lJl7Tl1 BUS
Fig. 3.3.-2: Schakeling van de positieopnemer.
Het protocol om een positie te bepalen en data te transpor
teren naar de EWMC-processorkaart ziet er als volgt uit:
- Inhibit laag. Positie-data is stabiel. Dit gebeurt direct
nadat een 10 ms interrupt gegeven wordt.
- Latch hoog. Positie-data van RDC en counters wordt inge
klokt in de 3 daarvoor bestemde latches.
- Inhibit laag en Latch laag.
- Code voor gewenste byte naar decoder en decoder enable
aktief.
25
- Data byte kan via de robotbus ingelezen worden door de
EWMC-processorkaart en in het daarvoor bestemde RAM-adres
geplaatst worden.
De laatste 2 punten worden voor iedere data-byte herhaald.
Zoals eerder vermeld, wordt een gedeelte van de positie
databits bepaald met behulp van tellers. Bij het opstarten
zullen deze tellers geinitialiseerd moeten worden. De
robotas-positie, waar deze initialisatie plaatsvindt is
daarbij van belang. De methode en het algorithme om deze
initiele robotas-referentiepositie te bepalen zal besproken
worden in paragraaf 5.2.
Als een robotas zich bevindt in de initiele referentie
positie moeten de tellers geladen worden met bepaalde data,
die op de positieopnemerkaart is vastgelegd met behulp van
dip-switches.
Deze waarde van de beginpositie is gelijk aan 080000 hex.
Het protocol om de tellers te laden met de initiele data
ziet er als volgt uit:
- Decoder enable aktief en decoder data = 011. Hiermee wordt
de output control lijn van de latch, die de initiele data
inklokt, aktief gemaakt. De initialisatiewaarde wordt dan
op de interne databus van de positieopnemerkaart gezet.
- Load lijn laag-aktief en vervolgens hoog maken. De 2 daar
voor bestemde counters worden dan geladen met de data, die
op de interne databus staat.
3.4. De Digitaal Analoog Omzetter
De verbinding tussen de digitale regelaar en de versterker,
die de motor aanstuurt wordt verzorgd door een 8-bits Digi
taal Analoog Omzetter. De DAC-schakeling is weergegeven in
figuur 3.4.-1.
26
10 ~ j"ten ....pti"te, fOot\!r---,
I I
.~ ..J
EW MC f--_~_AC_._c1_A.k_ ___,jLATCH ~_---,
Fig. 3.4.-1: Overzicht van de DAC-schakeling.
Het 8 bits output-datawoord van de digitale regelaar wordt,
na aanpassing, als inputsignaal aan de DAC aangeboden. Deze
data wordt in de latch ingeklokt als latch enable (LE) hoog
wordt en zal doorgegeven worden aan de DAC als output con
trol laag-aktief is.
Als de output control lijn niet laag is, zal met behulp van
optrekweerstanden de code 80 hex op de DAC gezet worden.
Daarmee wordt de uitgangsspanning gelijk aan 0 Volt en zal
de robotas niet bewegen. Bij de initialisatie van de EWMC
processorkaart zal de output control lijn laag gezet worden,
waardoor ingeklokte data direct wordt doorgegeven aan de
DAC.
Ten aanzien van de lijn latch enable is het ontwerp van de
DAC-schakeling veranderd. In het ontwerp van van Blerck
[lito 1] was het zo dat deze lijn continu verbonden was met
de 5 Volt lijn, waardoor de spanning op de motor direct
veranderde als een nieuw datawoord door de EWMC-processor
kaart aangeboden werd. De tijd die de digitale regelaar
nodig heeft om een nieuw datawoord te berekenen is echter
niet altijd gelijk. Daarmee worden niet-lineariteiten gein-
27
troduceerd. Bij een tijdvertragend element met een variabele
tijdconstante zal een uitgangssignaal niet meer dezelfde
vorm hebben als het ingangssignaal (bv. een sinus zal een
gemoduleerde vorm krijgen) .
Dit probleem is op eenvoudige wijze op te lossen door de
latch enable aan de 10 ms interrupt lijn te hangen. Als de
regelaar nu een nieuw datawoord berekend heeft zal dit aan
de ingang van de latch blijven staan zonder dat dit doorge
geven wordt aan de DAC. Pas bij de volgende 10 ms interrupt
wordt dit datawoord doorgegeven. Op deze manier zal precies
om de 10 ms de spanning over de motor veranderen. Een
nadeel van deze methode is dat er een grotere vertragings
tijd zal optreden.
Om ook tijdens het bewegen naar de initiele robotas-referen
tie-positie de motor te kunnen sturen, wordt het met behulp
van een or schakeling mogelijk gemaakt om de latch enable
met een tweede lijn hoog te maken. Daardoor kan ook tijdens
het bewegen naar de referentiepositie, als er nog geen 10
ms interrupts aanwezig zijn de DAC aangestuurd worden.
De DAC-schakeling is zo opgebouwd dat het uitgangssignaal
varieert tussen -10 en +10 Volt. Het oplossend vermogen van
1 bit is ongeveer 78 mV. Bij het datawoord 80 hex zal zoals
eerder vermeld de uitgangsspanning gelijk zijn aan 0 V. Bij
het datawoord 00 hex is de uitgangsspanning gelijk aan -10 V
en bij het datawoord FF hex zal de uitgangsspanning 9.92 V
zijn.
Opgemerkt moet worden dat in de software van de digitale
regelaar gebruik gemaakt wordt van de 2-complement code. Om
toch de juiste data aan de DAC toe te voeren moet bij het
uitgangs-datawoord van de digitale regelaar eerst nog 80 hex
opgeteld worden.
28
3.5. Versterkers, voeding en motoren
De motoren van de ASEA IRb-6 z1Jn gelijkstroom motoren met
permanente magneten van het type CEM AXEM F9M4H. Het nomi
nale toerental is 3000 rpm, de nominale voedingsspanning is
35 V en de nominale stroom 8 A. Door Werter [lito 9] is een
onderzoek gedaan naar het statische en het dynamische gedrag
van deze motor.
Voor de aansturing van de motoren worden 6 lineaire verster
kers gebruikt met elk een voedingsspanning van 24 V. Voor
elke motor worden 2 versterkers gebruikt (zie fig. 3.5.-1).
- I~ 1/
v·l
Fig. 3.5.-1: De aansturing van de motor met beveiliging.
Door 2 versterkers per motor te gebruiken kan met een 24 V
voeding toch de nominale spanning van 35 V over de motor
bereikt worden. Voor het schema van de voeding, versterker
en de inverter wordt verwezen naar het verslag van van
Blerck [lito 1].
In de praktijk heeft de versterker nogal wat problemen
opgeleverd op momenten dat met behulp van een beveiligings
relais de motoren werden kortgesloten, waardoor de uitgang
29
van de versterkers wordt losgekoppeld van de motoren. Door
de induktiviteit van de kabel en de rotor van de motor kunnen
grote induktiespanningen optreden. Het natrillen (bouncing)
van de relais versterkt dit effekt nog eens. Als gevolg van
het onderbreken van de stroom ontstaat op de uitgang van de
versterker een grote induktiespanning en heeft als gevolg
dat de zwakste eindtransistoren kapot gaan. Een oplossing
voor de beveiliging van de versterker is het aanbrengen van
fast recovery diodes tussen de uitgang van de versterker en
de voedingslijnen. Zie hiervoor fig. 3.5.-1.
De wrijvingen van de lagers en de borstels hebben tot gevolg
dat de motor bij aanloop een lostrekkoppel moet overwinnen
(stictie). Dit lostrekkoppel blijkt sterk afhankelijk van
oa. de temperatuur. Als gevolg van het lostrekkoppel zal de
motor alleen aanlopen als een bepaalde minimum waarde voor
de spanning over de motor gezet wordt. Het dode gebied, wat
hierdoor ontstaat kan voorkomen worden door het DAC-data
woord zodanig aan te passen dat de motor alleen stil zal
blijven staan als dit gewenst is. Het DAC-datawoord, waarbij
een as net beweegt blijkt echter sterk afhankelijk te zijn
van de temperatuur en de instelling van de versterker.
Door Brummans [lito 10] is een eerste aanzet gegeven om de
lineaire servo versterkers te vervangen door versterkers,
die gebaseerd zijn op het principe van pulsbreedtemodulatie.
Daarbij worden spanningspulsen aangeboden, waarbij de tijds
duur geregeld wordt. Door de zelfinduktie van het anker
circuit worden deze pulsen afgevlakt, waardoor een benaderde
gelijkstroom ontstaat. Het voordeel van pulsbreedtemodulatie
is dat alleen het gewenste vermogen geleverd zal worden aan
de motor, waardoor minder verliezen op zullen treden. De
enige verliezen zullen optreden in de versterker bij het
schakelen van de spanning.
30
3.6. Beveiliging
Als een van de onderdelen van het robotbesturings-systeem
defect raakt zal het waarschijnlijk zijn dat de robot een
baan zal gaan beschrijven die niet gewenst is. Om beschadi
gingen aan de robot te voorkomen zijn allerlei maatregelen
genomen, die ervoor moeten zorgen dat de robot direct tot
stilstand komt indien dat nodig is.
Noodstop
Het belangrijkste onderdeel van deze beveiliging is de nood
stop. Als de noodstop ingeschakeld is, worden de motoren met
behulp van een relais kortgesloten en losgekoppeld van de
versterkers. Deze noodstop kan door de gebruiker ingescha
keld worden op een moment dat de beweging van de robot niet
overeenkomt met datgene wat de gebruiker verwacht. In Bij
lage 1 is te zien hoe de beveiliging met de verschillende
relais is opgebouwd.
Zoals eerder vermeld kunnen bij het kortsluiten van de
motoren tijdens maximale uitsturing grote induktiespanningen
optreden. Ook over de spoelen van de relais zullen grote
piekspanningen kunnen ontstaan. Om deze spanningen zo snel
mogelijk kwijt te raken, zijn over de spoelen van de relais
fast recovery diodes aangebracht.
Om de motoren te beschermen tegen hoge piekspanningen zijn
hierover varistors aangebracht.
Eindstanddetectie
De eindstand van een bepaalde robotas kan op 2 manieren
gedetecteerd worden.
Ten eerste softwarematig. Bij het uitvoeren van de 10 ms
interruptprocedure (de regelroutine) wordt bepaald of de
31
gemeten robotas-positie in een veilig gebied ligt. Is dit
niet het geval dan wordt de betreffende motor tot stilstand
gebracht.
De tweede methode is hardwarematig, en zal later in werking
treden dan de softwarematige detectie van een eindpositie.
Bij iedere as zijn net voor de mechanische eindstanden
schakelaars aangebracht, die moeten voorkomen dat de robot
met een klap tegen zo'n mechanische eindstand aanloopt. Als
een van de eindschakelaars ingeschakeld wordt, zullen alle
motoren kortgesloten worden.
Als alleen eindschakelaars aangebracht worden aan het einde
van de slag van de tweede en de derde as, is toch een
mechanische eindstand mogelijk waarbij geen eindschakelaar
in werking zal treden. Dit zal optreden als de hoek tussen
de boven- en onderarm te groot of te klein wordt. Om ook
deze mechanische eindstanden te verhinderen is een reed
relais aangebracht bij de elleboog, die als dat nodig is de
motoren zal kortsluiten. Bij deze mechanische eindstand
kan niet softwarematig door de regelroutines een beveiliging
ingebouwd worden. Daarom zal er bij de implementatie op de
HP gecontroleerd moeten worden op een eventuele toelaatbare
positie. Een overzicht van de beveiligingsschakeling wordt
gegeven in Bijlage 1.
Watchdogs
Een methode om een beveiliging in te bouwen voor fouten in
de software is om gebruik te maken van ~vatchdogs. Watchdogs
zijn delay-timers, die een signaal afgeven als ze niet
binnen een bepaalde tijd gereset worden. Als een watchdog
met een bepaalde regelmaat gereset wordt is er dus niets aan
de hand.
32
Het resetten kan gebeuren door de regelroutine. Als op een
of andere manier een fout in de software is opgetreden, zal
de watchdog niet meer gereset worden en zal hij aflopen. Het
aflopen bestaat uit het interrumperen van de host-microcom
puter, die vervolgens de geijkte maatregelen kan nemen.
Omdat de regelroutine tussen de 2 en 4 ms in beslag zal
nemen en omdat deze routine om de 10 ms opgestart wordt,
zal de ingestelde delay-tijd groter moeten zijn dan 12 ms.
De watchdog-schakeling is opgebouwd op de hoofdinterface
kaart. De schakeling bevat 3 H6006 watchdogs, waarbij de
delay-tijd instelbaar is met een RC-netwerk. Iedere watchdog
wordt vanuit een EWMC-processorkaart gereset. De uitgangs
signalen van de watchdogs worden met een NAND en een D flip
flop verbonden met de HP-interruptingang. De D flip-flop is
nodig omdat een level-sensitive signaal nodig is. Om in de
toekomst de mogelijkheid open te laten om een externe timer
de 80 ms interrupts te laten verzorgen is deze lijn ook
verbonden met de (enige) interruptingang van de HP. Met
behulp van de special purpose lijnen STIO en STIl is na een
eventuele interrupt te zien of de interrupt door de watchdog
schakeling of door de 80 ms interrupt veroorzaakt is.
L _
- ,IIIIII
II
_ ...J
'------t-------t---Ji STI ~
+------------r~sn 1Hboal:.
H bc.l:.
Hboo~
f---+-~ TC L To f-------4f
f---+-----lI TC L Tc> ~------>I
1---+-----4f TC. L Tö f-------lI
rI
EW'MC
1
EWMC
1
E '''''MC
J
Fig. 3.6.-1: De timing- en watchdogschakeling.
33
Bufferbeveiliging
Behalve de softwarematige controle op een eindpositie is in
de software een andere beveiliging ingebouwd. De 80 ms
verplaatsings-setpoints die door de HP overgestuurd worden,
worden geinterpoleerd naar 8 10 ms-verplaatsingssetpoints
en opgeslagen in een FIFO-buffer. Iedere 10 ms zal de
regelroutine zo'n geinterpoleerd verplaatsingssetpoint uit
het buffer halen om de gewenste positieverandering te effec
tueren.
Het kan echter voorkomen dat het buffer leeg is. In dat
geval zal hetzelfde positiesetpoint gehandhaafd worden
(waarde van 10 ms setpoint = 0000 hex).
software-beveiliging
Als tijdens het lopen van het programma een fout
gedetecteerd wordt, zal naar een errorroutine gesprongen
worden. In deze routine wordt allereerst de motor stilgezet
en wordt het programma na het geven van een errormelding op
het aangesloten beeldscherm gestopt.
Fouten kunnen ontstaan als bij het optellen een overflow
wordt gedetecteerd, als in de regelaar een overflow optreedt
of als een eindpositie overschreden wordt. Het geoorloofde
werkgebied dat gehanteerd wordt bij de verschillende assen
is gelijk aan:
- As 1: 04 00 00 oe 00 00
- As 2: 07 10 00 08 EO 00
- As 3: 07 90 00 09 70 00
Het is wenselijk om in de toekomst een terugmelding naar de
HP-host-microcomputer te geven als een fout optreedt. De HP
kan alle processorkaarten dan opnieuw initialiseren door
deze een reset te geven.
34
Hoofdstuk 4 PHILIPS MICROCOMPUTER DEVELOPMENT SYSTEM
4.1. Inleiding
Het Philips Microcomputer Development system (PMDS-II) is
opgebouwd rondom een 68000 microprocessor, waarvan de opbouw
is weergegeven in figuur 4.1.-1.
DomesliC computer
Eil!l FEW I-'IJ! :
I y---...-mo-'y-m-an__--'-""'-,-,
Unlvet'sal debug UNt ,-4
Otsk controller
-----\
i
I
Fig. 4.1.-1: Opbouw van het PMDS-ontwikkelsysteem.
De belangrijkste onderdelen zijn de zgn. domestic computer,
een winchester hard disk unit van 22 Mbytes, een floppy disk
drive en een toetsenbord. Het is mogelijk om met meerdere
gebruikers het systeem te gebruiken (max. 6). Verder is het
systeem geschikt gemaakt om een printer (Digital DECprinter
lIl) te gebruiken en om m.b.v. het programma kermit via het
THE-net het systeem als terminal te gebruiken voor een ander
computersysteem, of file transport mogelijk te maken.
Om de PMDS als ontwikkelsysteem te gebruiken, moet een zgn.
35
Microprocessor Adapter-Box (MAB) gebruikt worden. De MAB
verbindt de PMDS met de te ontwikkelen microprocessor: voor
iedere target-microprocessor moet dan ook een eigen MAB
aangeschaft worden. Ook zijn voor elk type microprocessor
eigen doelgerichte softwarepakketten zoals assemblers en
debuggers vereist. Het emulatiegeheugen en de trace-facili
teiten zijn onafhankelijk van de target-microprocessor. Het
ontwikkelen van software kan in een hogere programmeertaal
(Pascal, C of PL/M) of in de assemblertaal van de desbetref
fende microprocessor.
HUO11 CI 0'" 0 CES SOl
'10 1tl cue_OU' 0u, !.
'UTar,,(cIIC uIJ
Fig. 4.1.-2: De Microprocessor Adaptor Box.
De PMDS-II is gebaseerd op het besturingssysteem UNIX, dat
een hierarchische bestandsstructuur heeft. Deze bestands
structuur biedt de mogelijkheid om toegang te krijgen tot
bestanden van andere gebruikers. Ook kan de gebruiker eigen
36
commando's (shell scripts) maken. Unix is een multi-tasking
operating system en biedt de mogelijkheid om tijdrovende
taken op achtergrond te draaien.
Tijdens het gebruik van het PMDS-systeem kunnen de volgende
paragrafen als basis-handleiding dienst doen. Bij het
schrijven van de tekst is ervan uitgegaan dat een eventuele
gebruiker nog onbekend is met UNIX.
4.2. UNIX en de editor
In UNIX zijn korte namen gebruikelijk, waarbij er van uitge
gaan wordt dat de gebruiker weet wat hij doet. Er worden dan
ook zeer weinig foutmeldingen gegeven. De UNIX prompt is in
het algemeen de '$' maar kan ook anders ingesteld worden.
Een commando in UNIX wordt een shell script genoemd. Enkele
veel gebruikte UNIX shell scripts zijn te vinden in bijlage
3.1.
Om een shell script onder UNIX af te breken kan de delete
toets gebruikt worden, in tegenstelling tot het vaak
gebruikte [ctrl] Cc]. Andere door Philips gemaakte UNIX
shell scripts zijn te vinden in de file /READ_ME.
Meer informatie kan gevonden worden in Re informatie AG 87
[lito 14].
4.2.1. De structuur van UNIX
Bij UNIX worden de bestanden, met behulp van een boom
structuur, systematisch opgeslagen. Een gebruiker van het
systeem bevindt zich altijd ergens in deze hierarchische
boomstructuur.
37
In de wortel van de boomstructuur zit de zg. root, die kan
worden aangeroepen met een 'j'. Daaronder zitten verschil
lende directories of files (bv. bin, etc, usr .. ). Hieronder
kunnen weer andere directories of files zitten. Deze
boomstructuur is weergegeven in figuur 4.2.-1.
Fig. 4.2.-1: De boomstructuur van UNIX.
Het is mogelijk dat meerdere personen gebruik maken van dit
systeem. Iedere gebruiker bezit daarbij een eigen directory.
Zo is bv. een gebruiker van dit systeem als directory aanwe
zig onder jusrj'gebruiker' (bij inloggen komt deze gebruiker
ook in deze directory terecht). Een file van deze gebruiker
heeft jusrj'gebruiker'j'file' als padnaam.
Met het commando 11 (long list) verkrijgt men informatie
over subdirectories en de files op 1 niveau lager. Na het
invoeren van dit commando verschijnen bv. de volgende re
gels (onder de directory jusrjmariusjrbass):
-rw-r--r-- 1 marius
drwxr-xr-x 2 marius
87981 oct 15 15:45 as1.s
368 oct 29 11:13 eprom
Op het einde van de regel wordt de naam van een file of een
subdirectory gegeven. De rest van een regel heeft betrekking
op deze file of directory.
De letters aan het begin van de regel hebben betrekking op
38
de file-protectie en hebben de volgende betekenis:
De eerste letter is een d of een streepje. De d betekent dat
de naam aan het einde van de regel een subdirectory is. Een
streepje wil zeggen dat het een file is.
Voor de protectie van een file wordt onderscheid gemaakt
tussen de eigenaar (user,u): karakter 2 tm 4, groep (g):
karakter 5 tm 7 en de overige gebruikers (0): achtste t/m
laatste karakter.
Een karakter is een r (read & copy permission) , w (write
permission) of een x (execute permission) bij een file. Bij
een directory betekent de r dat in de betreffende directory
gelezen mag worden, een w dat aan de betreffende directory
iets mag worden toegevoegd en een x betekent dat de betref
fende directory in een padnaam gebruikt mag worden.
Als men zelf een UNIX shell script wil schrijven dat uitge
voerd kan worden moet allereerst een tekstfile (met daarin
geldige UNIX commando's) geedit worden, en deze vervolgens
executable gemaakt worden. Het executable maken kan met het
shell script chmod +x <filenaam>.
De meeste UNIX-commando's gebruiken input en produceren
output. De standaard input is daarbij het toetsenbord en de
standaard output is het beeldscherm. De output van een UNIX
commando kan weer gebruikt worden als input van een ander
commando. Dit heet I/O redirection.
Voorbeelden:
- 'command' < 'tekst'
- 'command' > 'tekst'
39
De file tekst fungeert als input
voor een commando ipv. het
gebruikelijke keyboard.
De output van een commando wordt
ipv. naar het beeldscherm in een
file 'tekst' gezet. In plaats
van een filenaam kan ook een
device (zoals bv. /dev/ttyOl)
- 'command' » 'tekst'
- 'commandl' 'command2'
ingevuld worden, waarmee output
naar een ander beeldscherm
gestuurd kan worden.
Een pipe. De output van 'com
mandl' wordt als input voor
'command2' gebruikt. Bv 'com
mand' I lpr zal bv. alle output
van een commando naar de printer
sturen.
De output van commando gaat
naar de file 'tekst'. Als de
file 'tekst' al bestaat zullen
de gegevens toegevoegd worden.
4.2.2. De editor e
Als een nieuwe file aangemaakt wordt kan dit met de screen
editor e. Het systeem vraagt eerst of dit een nieuwe file is
(met CR bevestigen), en komt vervolgens in de edit mode. Met
het indrukken van LINE FEED komt men in de command-mode. In
de edit mode kan gebruik gemaakt worden van de cursor toet
sen (zie figuur 4.2.-2).
more boven onder links rechts
Fig. 4.2.-2: Cursor toetsen.
De toets met de pijl naar links-boven wordt de more toets
genoemd. Met deze toets kunnen de volgende cursor-bewegingen
gemaakt worden:
- more boven (of onder): Ga een scherm naar boven
(beneden) .
40
- more links (of rechts): Ga een woord naar links
(rechts).
- more more boven (of onder): Ga naar het begin (einde) van
de file.
- more more links (of rechts): Ga naar het begin (einde) van
de regel.
Een aantal vaak gebruikte commando's in de command-mode van
de editor e kunt U vinden in bijlage 3.2.
4.3. Het ontwikkelen van software met PMDS-II
Het Philips Compiler Package (PCP) stelt de gebruiker in
staat om niet alleen met assembler-taal, maar ook met een
hogere programmeertaal software voor een specifieke proces
sor te ontwikkelen. Bij gebruik van een hogere programmeer
taal (Pascal, C of PL/M) wordt de source mbv. een preproces
sor vertaald naar source code, die geschikt is voor de host
processor van de PMDS. Deze code kan eventueel ook gebruikt
worden om een executable file te maken. Met een specifieke
doelprocessorcompiler en een optimiser wordt deze code omge
zet in intermediate code. Een code-generator zet deze inter
mediate code weer om naar assembly-code. Op dit systeem is
helaas geen codegenerator voor de 8085 microprocessor aanwe
zig, maar voor de 68000 is deze wel aanwezig (onder de naam
/usr/ack/68k44/cg). Met een linker kan deze assembly-code
gelinkd worden met door de gebruiker geschreven assembler
source files of eventueel files uit een bibliotheek. Deze
objectfiles of modules worden gecombineerd in een groot
programma, waarbij naar labels in andere modules gerefereerd
mag worden. De assembler zet deze file om in code, die
geschikt is voor de gebruikte microprocessor. Omdat in ons
geval de source geschreven is in assembler-taal kan de
41
souree rechtstreeks als input van de 8085-assembler dienen.
Voordat de PMDS aangeschaft is, is door Frank van Blerck
[lito 1] een eerste aanzet gegeven om de software voor de
besturing van een as te schrijven. Deze source code was
geschreven als souree voor de 8085-crossassembler op de
Burroughs 7900 van het rekencentrum. Deze assembler heeft de
naam MICROSIM en werkt met INTEL mnemonics. De assembler op
de PMDS heeft enige verschillen t.a.v. deze mnemonics.
Hieronder vindt U een overzicht hiervan:
- Een hexadecimaal getal wordt gerepresenteerd door:
Ox<hex getallen>.
- Bij commentaar moet een uitroepteken ervoor gezet worden.
- Een DB instructie (1 byte definieren) wordt:
<labelnaam>: .data1 <waarde>.
- Een OW instructie (2 bytes definieren) wordt:
<labelnaam>: .data2 <waarde>.
- Een constante definieren gebeurt met '=' ipv. EQU.
- Het is mogelijk om de ascii-waarden van een aantal opeen-
volgende karakters in het geheugen op te slaan en af te
sluiten met het nulkarakter. Dit gebeurt met het commando:
<labelnaam>: .asciz '<tekst>'.
- Het programma is opgedeeld in sections, die allemaal op
een eigen geheugenadres kunnen beginnen. Dit wordt aange
geven met .base <adres>.
Verder worden de gebruikelijke INTEL 8085 instructies
gebruikt.
Het omzetten van het assembler-programma, dat op de
Burroughs ontwikkeld was, naar het PMDS-assembler programma
is uitgevoerd met een zelf geschreven shell script, waarbij
gebruik is gemaakt van de stream editor sed.
Met het UNIX-commando 8085 <filenaam>.s wordt de source code
geassemblembeerd. Met het commando 8085 -d1700 <filenaam>.s
42
wordt de gegenereerde code tesamen met de source code weer
gegeven. Om deze uit te printen moet een "pipe" naar het
print commando gegeven worden:
aoa5 -d1700 <filenaam>.s I lpr.
4.3.1. Omzetten naar code voor de debugger debaOa5
De output van de aoa5 assembler staat in de file a.out. Deze
code is echter gemaakt voor een PMDS-1 en moet omgezet
worden naar code die geschikt is voor de PMDS-2. Dit gebeurt
met de shell script convpmds. Convpmds maakt 3 files aan,
een :a, een :b en een :m code file. Dit met de gewenste
filenaam ervoor. Met convpmds -a<hexadres> <filenaam> worden
van a.out 3 files gemaakt, waarmee de debugger een geladen
programma direct kan uitvoeren op het startadres dat achter
de -a optie staat.
4.3.2. De debugger debaOa5
Met de debugger kan het geassembleerde robotprogramma gela
den, gerund en evt. gecontroleerd worden. Om het programma
te kunnen laten runnen moet eerst de MAB (Microprocessor
Adapter Box) met de prototype aoa5 socket verbonden worden.
Als de spanning ingeschakeld is, kan de debugger opgestart
worden. De prompt die bij de debugger verschijnt is "?DO:".
In de debugger kan gebruik gemaakt worden van het geheugen
van de prototype (de EWMC-processorkaart), maar ook van
intern geheugen van de PMDS (emulator geheugen). Met het
MAP-commando wordt aangegeven welk gedeelte van het geheugen
in de prototype (p) zit en welk gedeelte in de emulator
(em). Tevens wordt met dit commando aangegeven of een
43
bepaald gedeelte van het geheugen ROM of RAM is.
Bij de gebruikte EWMC kaarten zit een EPROM met een monitor
programma op adres O-fff, een gebruikers-EPROM van adres
1000-lfff en RAM van 2000-23ff en 3400-3fff. De EWMC kaart
maakt gebruik van memory mapped geheugenadressering. De
adressering van de peripherals zit op geheugenadres 4000
40ff. Bij het ontwikkelen van de software is gebruik ge
maakt van het emulatorgeheugen. De code van het programma
wordt geladen in adres 1000-lfff. Nu het programma uitont
wikkeld is, is de software in eprom gezet en start ook op
adres 1000.
Het statusgeheugen bevindt zich in adres 2400-33ff. Omdat
hiervoor geen plaats is op de EWMC-processorkaart, wordt ook
hier gebruik gemaakt van het emulator geheugen.
Een overzicht van de debugger-commando's is gegeven in
Bijlage 3.3.
4.4. Omzetten van Philips format naar Intel-hex format
Op de EWMC kaarten is de mogelijkheid aanwezig om bij het
inschakelen van de spanning of na het geven van een reset,
direct een gebruikersprogramma, dat opgeslagen is in eprom ,
uit te voeren. Het is dan ook wenselijk om de geschreven
software, als deze eenmaal een definitieve vorm gekregen
heeft in eprom te zetten. Helaas is er geen eprom-programmer
aanwezig bij de PMDS. Er is dan ook gebruik gemaakt van een
andere eprom-programmer en wel de DIGILEC portable program
mer 824 bij de vakgroep EB. Deze programmer maakt het echter
noodzakelijk om een codefile te formateren volgens het
intel-hex format. Er is een C programma geschreven met de
naam intelhex.c dat een outputfile van de PMDS-assembler
omzet naar intel-hex format. Dit programma is uitvoerbaar
44
met intelhex.x <inputfile:m> <outputfile>. In het kort zal
beschreven worden hoe beide formats er uit zien en hoe het
omzetten van de ene naar de andere format gedaan wordt.
Zoals in de vorige paragraaf vermeld werd, geven de assem
bler en.de converter 3 outputfiles: een :a, een :b en een :m
file. De :m file is geschikt om een omzetting te maken naar
intel-hex format. Een record in een :m file ziet er als
volgt uit: Een record begint altijd met 2 bytes, waarvan de
waarde het aantal bytes voorstelt dat nog volgt in het
betreffende record.
Vervolgens komt een byte, die het type van de record aan
geeft:
- 00 als het het eerste record is in een file. Dit record
bevat informatie over de naam van de load-file.
- Ol geeft aan wat het startadres van de load-file is.
- 02 geeft aan dat data volgt.
- 03 als het het laatste record is in een file.
Na deze byte volgen 3 bytes waarvan de inhoud gelijk is aan
00.
De 2 bytes die daarop volgen bevatten het startadres van de
gegevens, die volgen.
Bij de bespreking van het Intel-Hex format moet opgemerkt
worden dat 1 byte aan data opgeslagen wordt in 2 karakters,
waarbij deze karakters de hexadecimale notatie voorstellen
van het te representeren byte. De ascii-waarden van deze
karakters zullen opgeslagen worden. Bv. het byte met de
waarde 00 hex zal omgezet worden naar de bytes met de ascii
waarden 30,30 hex, d.w.z. de karakters 0,0. (Zo zullen de
karakters 0-9 omgezet worden naar 30-39 hex en A-F naar 41
46 hex).
Een record in het Intel-hex format ziet er als volgt uit:
- Het eerste karakter in een record is een dubbele punt
45
(3A hex), die het begin van een record aangeeft.
- Het tweede en derde karakter vormen samen een byte, die de
lengte van het record aangeven in bytes.
- Het vierde tot en met het zevende karakter vormen een 16
bit hex adres dat het adres is van de eerste databyte in
het record.
- Het achtste en negende karakter geven het type aan van het
record: Ol als het het laatste record is in de file,
anders is de inhoud 00.
- Hierna volgen steeds 2 karakters, die samen een databyte
voorstellen. Als bv. de waarde van een databyte gelijk is
aan 00, zal dit in het intel-hex format weergegeven worden
als twee keer ascii code 30 hex ('0').
- De laatste 2 karakters in een record is de checksum. De
checksum wordt bepaald door alle bytes (twee opeenvolgende
karakters als byte beschouwen) behalve de dubbele punt op
te tellen met weglating van de carry en dit te complemen
teren in het two's complement. De checksum ook weergeven
met twee ascii karakters.
In het programma intelhex.c wordt van een :m file record
voor record gelezen. Bij een record dat data bevat wordt als
de lengte en het startadres bekend is direct een gelezen
databyte omgezet in twee karakters en in een intel-hex
record geplaatst. Een listing van het programma vindt U in
de bijlage.
46
HOOFDSTUK 5 DE SOFTWARE VAN HET BESTURINGSSYSTEEM
5.1. Inleiding
De software voor de EWMC-processorkaarten is geschreven in
assembler-taal en ontwikkeld op een PMDS-II ontwikkelsys
teem van Philips. De software is, op enkele details na,
gelijkvormig voor alle assen: alleen de procedure om bij de
initialisatie naar een eenduidige beginpositie te gaan is
bij elke as verschillend. Bovendien zijn bepaalde constanten
in de procedures om de eindpositie te controleren, de regel
parameters en de aanpassing tussen de regelaar en de DAC (om
het dode gebied op te heffen) verschillend.
De programma's zijn zodanig opgedeeld in sections, dat een
modulaire structuur ontstaat.
Voordat de robotas bestuurd kan worden door de HP, moet de
robotas zich bevinden in een eenduidige initiele nulpositie.
De procedure om een as in deze positie te krijgen wordt
nader besproken in de volgende paragraaf.
Behalve de initialisatie, is de software die geimplementeerd
is op de EWMC-processorkaarten opgebouwd uit 2 interruptrou
tines. Een routine, die de setpointoverdracht en de interpo
latie verzorgt wordt om de SO ms uitgevoerd. De andere (de
regelroutine) wordt om de 10 ms uitgevoerd.
Door de opbouw van de hardware is het niet mogelijk om de
setpoints voor de verschillende assen gelijktijdig door te
geven. Daardoor is er voor iedere EWMC-processorkaart een
afzonderlijke SO ms interruptlijn noodzakelijk. De 10 ms
interruptlijn is wel universeel en dus verbonden met iedere
EWMC-processorkaart (zie fig. 5.1.-1).
De interruptsignalen worden gegenereerd door een klok. In de
gerealiseerde besturing wordt de interne klok van de HP-
47
microcomputer gebruikt, maar het is ook mogelijk om een
externe klok te gebruiken. Het kleinst mogelijke sample
interval van de interne klok van de HP is gelijk aan 10 ms
zodat bij eventuele verkorting van de sampletijd een externe
klok noodzakelijk zal zijn.
100 Hl
klok.
IlH fWMC1.
Fig. 5.1.-1: Interruptsignalen in de robotbesturing.
De verschillende routines zien er schematisch als volgt
uit:
INITIALISATIE:
- Initialiseer de EWMC-processorkaart.
- Ga naar een eenduidige initiele nulpositie.
- Wacht op interrupts.
SO MS INTERRUPTROUTINE:
- setpointoverdracht van HP naar EWMC-processorkaart.
- sa ms setpoint interpoleren naar S 10 ms setpoints.
- 10 ros setpoints opslaan in setpointbuffer.
10 MS INTERRUPTROUTINE (de regelroutine):
- Latchen van DAC-data (hardwarematig) en positieinformatie
(softwarematig).
- Als de positie buiten de grenswaarden ligt dan error
melding geven, de motor stilzetten en het programma
stoppen.
- 10 ms setpoint uit setpointbuffer halen.
- Met digitale regelaar nieuw DAC-inputdatawoord berekenen.
- DAC-inputdatawoord op ingang van de latch zetten.
4S
De software, die geschreven is voor de verschillende assen
is op het PMDS systeem aanwezig onder de directory
/usr/marius/rbass. Onder deze directory is weer een sub
directory met de naam eprom waar de software aanwezig is,
die uiteindelijk in de eproms gezet is. De software onder de
directory rbass bevatten de routines om met een terminal de
regeling interactief te testen.
Een overzicht van de procedures en de variabelen wordt
gegeven in bijlage 4.2. en 4.3.
5.1.1. Initialisatie van de EWMC-processorkaart
Als een programma op de EWMC-processorkaart opgestart wordt,
zullen in eerste instantie een aantal zaken geinitialiseerd
worden.
Zo moeten om op een juiste manier interruptroutines op te
kunnen starten, jump adressen geplaatst worden in de inter
rupt jump table (adres 3FEO-3FFF) en m?et de interrupt
controller geinitialiseerd worden (edge-triggered mode) .
De stackpointer wordt geinitialiseerd op adres 3FDF.
Om de seriele verbinding op te starten wordt counter 2 in
mode 3 gezet, zodat een blokgolf gegenereerd wordt met een
frequentie van 153.6 kHz. De USART van poort 0 wordt gereset
en ingesteld op 9600 baud, 8 databits, geen parity en 1
stopbit. Na een transmit- en receive enable is communicatie
over deze lijn mogelijk.
Zoals eerder vermeld wordt een setpointbuffer gebruikt. Dit
buffer wordt geplaatst in adres 3EBO tot 3EDF. In paragraaf
5.3. wordt de initialisatie van het buffer verder besproken.
Variabelen, die in de programma's gebruikt worden zijn ge
plaatst in adres 3EOO tot 3E68 en 3EE2-3EFF.
49
5.2. Initialisatie van de nulpositie
Om een positieregeling te kunnen gebruiken is het noodzake
lijk dat de positie op elk moment, dus ook bij aanvang van
de regeling bekend is. De beginpositie zal om verscheidene
redenen geinitialiseerd moeten worden:
- Er is geen terugkoppeling van de positie naar de HP-host
microcomputer.
- Omdat de overdracht van de setpoint-databytes verhou
dingsgewijs veel processortijd kost, is besloten om in
plaats van de gewenste positie na 80 ms, de gewenste
verandering van de positie na 80 ms als setpoint door te
geven waardoor i.p.v. 4 bytes nog maar 3 bytes doorgegeven
moeten worden. De consequentie is echter dat een afspraak
gemaakt zal moeten worden op welke positie een as zal
staan als de HP-microcomputer begint met het doorgeven van
setpoints. Deze positie moet eenduidig en nauwkeurig
bepaald zijn.
- Omdat de positie van de robotas bepaald wordt met behulp
van counters, zullen deze counters in het begin geladen
moeten worden met een initiele waarde. De positie waarin
de robotas zich bevindt als de counters geinitialiseerd
worden, moet binnen een motoromwenteling nauwkeurig repro
duceerbaar zijn. De positie van de motoras kan immers
met de RDe bepaald worden.
Om de gewenste nulpositie te bepalen kan er gebruik gemaakt
worden van de referentieschakelaars, die als herkenningspunt
gebruikt worden (niet te verwarren met de eindschakelaars,
die de beveiliging inschakelen). Bij de tweede en derde
vrijheidsgraad zijn deze op een positie aangebracht, waarbij
de eindschakelaars nog net niet aangesproken worden. Omdat
de referentieschakelaars op het einde van de slag aange
bracht zijn is ook de bewegingsrichting bekend waarmee de
positie van de referentieschakelaar bereikt kan worden.
50
Bij de eerste vrijheidsgraad is door ASEA een referentie
schakelaar aangebracht, maar deze zit op het midden van de
slag. Een nadeel van deze positie is dat bij de initiali
satie niet bekend is aan welke zijde van de schakelaa~ de as
zich bevindt zodat de as niet automatisch in de richting van
deze schakelaar bewogen kan worden. Om dit wel te kunnen
realiseren is een ijzeren halve ring aangebracht, die een
reed relais kan inschakelen. Met deze referentiestand-scha
keling kan gedetecteerd worden aan welke zijde van de slag
de eerste as zich bevindt (zie fig. 5.2.-1).
1
1 2 3
Fig. 5.2.-1: De eerste vrijheidsgraad.
opgemerkt moet worden dat tijdens het bewegen van een robot
as naar de nulpositie de motor van de desbetreffende as niet
geregeld maar gestuurd wordt. Tijdens het bewegen naar de
nulpositie zal een robotas met minimale snelheid moeten
bewegen om zo exact mogelijk op deze positie terecht te
kunnen komen.
Het blijkt dat de motorsnelheid bij lage snelheden afhanke
lijk is van de instelling van de versterker. Bij een kleine
aansturing moet een stictie overwonnen worden, die bovendien
niet altijd gelijk is. Het blijkt dat de stictie kleiner
wordt als de robot een tijdje gedraaid heeft, waarschijnlijk
omdat de wrijving bij het warmer worden van de verschillende
onderdelen afneemt. Als een versterker vervangen wordt, moet
51
de offset-spanning zodanig ingesteld worden dat het algo
rithme om de nulpositie te bereiken op de gewenste manier
uitgevoerd wordt.
De algorithmes voor de verschillende assen worden hieronder
nader beschreven.
Initialisatie van de eerste vrijheidsgraad
- Als het uitgangssignaal van de referentiestand-schakeling
laag is (zie de derde stand van fig. 5.2.-1) dan zal de
motor met een negatieve spanning aangestuurd worden en zal
de robotas draaien tot dit uitgangssignaal hoog wordt.
Het uitgangssignaal van de referentiestand-schakeling is
nu weliswaar hoog, maar de positie is niet bepaald.
- De motor wordt met een positieve spanning aangestuurd tot
dat het uitgangssignaal weer laag wordt. Omdat de robot
niet direct stil zal staan, zal de eindpositie van de
robotas nog niet gelijk zijn. De mate waarin de robotas
doorgeschoten is, is namelijk niet altijd gelijk.
- De motor wordt met een kleine negatieve spanning aange
stuurd zodat de robotas net beweegt. De robotas wordt
gestopt als een overgang van laag naar hoog gedetecteerd
wordt. Als de as tot stilstand gekomen is, zal de positie
altijd binnen 1 motoromwenteling nauwkeurig blijven.
Om een gedefinieerd nulpunt te krijgen is het wenselijk
dat het uitgangssignaal van de RDC gelijk is aan 000 hex
als de counters geinitialiseerd worden. Er kan echter niet
voorkomen worden dat de robot niet direct tot stilstand
zal komen. Het is wenselijk dat de RDC een uitgangssignaal
heeft dat zo dicht mogelijk bij 000 hex ligt en positief
is. Tijdens de initialisatie zal de uitgangswaarde van de
RDC dan ook moeten oplopen. Om dit te bereiken zal de
motor met een positieve spanning aangestuurd worden.
52
- Nadat de motor aangestuurd wordt met een kleine positieve
spanning zal het uitgangssignaal van de RDC gecontroleerd
worden. Het uitgangssignaal van de RDC bestaat uit 12
bits. Om de eindfout in de positie zo klein mogelijk te
maken is het belangrijk om de procedure waarbij gecontro
leerd wordt op de juiste data zo kort mogelijk te houden.
Daarom zal slechts 1 byte tegelijkertijd getest worden.
Achtereenvolgens wordt gecontroleerd of:
De 4 meest significante bits gelijk z1Jn aan 1. Als
FOO hex bereikt is, zal alleen het minst signifi
cante byte nog gecontroleerd moeten worden.
- Het minst significante byte gelijk is aan 10 hex.
Als direct op 00 hex gecontroleerd wordt kan het
zijn dat deze direct gevonden wordt terwijl de
uitgangswaarde van de RDC nog gelijk is aan FOO hex
ipv. 000 hex.
- Uiteindelijk wordt gecontroleerd op 00 hex.
Als de initiele nulpositie bereikt is kan de motor stilgezet
worden en worden de counters zo geinitialiseerd dat de
waarde van de beginpositie gelijk is aan 080000 hex. Na het
initialiseren van de counters wordt een outputlijn hoog
gezet om de HP te melden dat de beginpositie bereikt is. Ook
zal op de aangesloten terminal weergegeven worden in welke
positie de robotas tot stilstand is gekomen. Deze positie
zal (afhankelijk van de instelling van de versterker) toch
een kleine fout met zich meebrengen.
Initialisatie van de tweede vrijheidsgraad
Bij de initialisatie van de tweede as moet opgemerkt worden
dat de motorspanning die nodig is om deze as stil te laten
staan, afhankelijk is van de positie. In fig. 5.2.-2 zijn 3
standen weergegeven. In de eerste en de derde stand zal een
negatieve resp. een positieve spanning nodig zijn om de
robot niet in elkaar te laten zakken. Alleen in de tweede
53
stand zal de robot in dezelfde stand blijven staan zonder
dat de motor aangestuurd moet worden. Dit is dan ook de
gewenste initialisatiestand.
1 2 3
Fig. 5.2.-2: De tweede vrijheidsgraad.
Omdat in de derde stand van fig. 5.2.-2 de referentieschake
laar ingeschakeld zal worden, zal de as as hier eerst naar
toe bewegen en vervolgens terugkeren naar de tweede stand.
Het algorithme om naar deze stand te bewegen ziet er als
volgt uit:
- Als de tweede as in een stand geplaatst is, waarbij de
robot niet in elkaar zakt, dan zal de lijn van de referen
tieschakelaar hoog zijn. Er wordt een negatieve spanning
op de motor gezet totdat deze lijn laag wordt. Er is dan
een positie bereikt, waarbij de eindschakelaar nog net
niet ingeschakeld wordt.
De motor wordt aangestuurd met een positieve spanning, die
nodig is om de zwaartekracht te overwinnen. De spanning
moet zo groot zijn dat de bovenarm tot stilstand komt. De
eindschakelaar mag zeker niet bereikt worden omdat dan
alle motoren kortgesloten zullen worden.
Het is mogelijk dat de as zodanig doorgeschoten is dat de
lijn van de referentieschakelaar weer hoog geworden is.
Daarom zal worden gecontroleerd op een overgang van laag
naar hoog als de bovenarm langzaam omhoog bewogen zal
worden om een eenduidige positie te verkrijgen.
54
- Als een eenduidige positie verkregen is kan, net als bij
de eerste as, de as zo bewogen worden dat als de RDC een
uitgangssignaal heeft dat gelijk is aan 000 hex de coun
ters geinitialiseerd zullen worden. De waarde van de posi
tie is dan gelijk aan 080000 hex.
- Zoals eerder vermeld is de gewenste positie dan nog niet
bereikt. De positiewaarde waarbij de bovenarm vertikaal
staat is gelijk aan 08DOOO hex. Hier zal als volgt naar
toe bewogen worden:
- In de positie 080000 hex wordt de motor zo aan
gestuurd dat de bovenarm net omhoog zal bewegen.
- Als de middelste byte gelijk is aan CB hex dan wordt
de spanning verder verlaagd omdat de snelheid van de
as toeneemt.
- Controleer achtereenvolgens of de
middelste byte gelijk is aan CF hex,
minst significante byte gelijk is aan 10 hex,
minst significante byte gelijk is aan 00 hex
en schakel de motorspanning uit.
Initialiseer de counters opnieuw zodat in de gewenste
initialisatiestand de positiewaarde gelijk is aan 080000
hex.
Initialisatie van de derde vrijheidsgraad
De initialisatie van de derde as gaat bijna analoog aan de
tweede as, alleen wordt bij deze as geen hinder ondervonden
van de zwaartekracht.
In fig. 5.2.-3 zijn 2 standen getekend. De eerste stand is
de gewenste initialisatiestand en je tweede stand is de
stand waarbij de referentieschakelaar ingeschakeld wordt.
Bij de initialisatie van de derde as wordt de onderarm
omhoog bewogen tot de referentieschakelaar ingeschakeld
wordt. De counters worden geinitialiseerd als vervolgens het
55
uitgangs-signaal van de RDC gelijk is aan 000 hex. De arm
wordt omlaag bewogen naar positie 084000 hex en de counters
worden op deze positie opnieuw geinitialiseerd.
~~ ~ jTJ);
:r-tIljJlI· ~! I! I I:
'id.i i
:1 I
li~
/
Fig. 5.2.-3: De derde vrijheidsgraad.
5.3. Setpointoverdracht en interpolatie van setpoints
De communicatie tussen de HP-host-microcomputer en de ver
schillende EWMC-processorkaarten, die elk een as besturen,
verloopt via een gezamelijke 8-bits databus. De setpoint
overdracht gaat per as afzonderlijk en kan starten op het
moment dat door alle EWMC-processorkaarten een terugmelding
ontvangen is dat de initialisatie gereed is. De overdracht
van een setpoint naar een EWMC-processorkaart wordt opge
start door een 80 ms interrupt signaal. In een tijdsbestek
van 80 ms moeten in totaal 3 setpoints door de HP verstuurd
worden.
Bij de setpointoverdracht wordt een handshake protocol ge
bruikt zodat vanuit de HP een lijn Data Valid nodig is en
vanuit iedere EWMC-processorkaart een lijn Data Accepted,
die tevens gebruikt wordt als 80 ms interrupt acknowledge
signaal. Behalve de setpoint-databytes wordt als laatste
byte een checksum overgestuurd om te controleren of de
overdracht correct verlopen is.
Het nadeel van het handshake protocol is dat dit relatief
56
gezien vrij veel tijd kost, ook al omdat de overdracht 3
keer (voor iedere as) moet plaatsvinden. Daarom is besloten
om niet de gewenste positie na 80 ms als setpoint door te
geven (3 databytes + checksum), maar het gewenste verschil
van de positie na 80 ms (2 databytes + checksum). De conse
quentie is dat afgesproken moet worden op welke positie de
robot zich bevindt als begonnen wordt met het versturen van
setpoints. Dit wordt gerealiseerd bij de initialisatie van
de verschillende assen en is nader besproken in de vorige
paragraaf.
Bij de representatie van de setpointwaarde wordt de 2
complement notatie gebruikt. Het setpoint met een maximale
positieve verplaatsing in 80 ms is gelijk aan 7FFF hex. Het
setpoint met een maximale negatieve verplaatsing in 80 ms
is gelijk aan 8000 hex. Als de as stil moet blijven staan
(afregelen op een positie) wordt het setpoint 0000 hex
doorgegeven.
Zoals gezegd heeft het setpoint dat door de HP verstuurd
wordt, de betekenis van een gewenste verplaatsing, die over
80 ms bereikt moet worden. Omdat de regelroutine iedere 10
ms uitgevoerd wordt, zal het 80 ms setpoint geinterpoleerd
moeten worden naar 8 10 ms setpoints. Deze interpolatie is
op vrij eenvoudige wijze te realiseren omdat het 80 ms
setpoint gedeeld kan worden door 8. Delen door 8 is bij
binair rekenen niets anders dan een byte 3 bits naar rechts
verschuiven. Dit klopt niet helemaal want op die manier
heeft een afronding plaatsgevonden. Om de som van de 8
geinterpoleerde setpoints toch gelijk te laten zijn aan het
80 ms setpoint, worden een aantal 10 ms setpoints verhoogd
met de waarde 1. Dit aantal wordt voorgesteld door de 3
minst significante bits van het 80 ms setpoint. Bij de 10 ms
setpoints die achtereenvolgens in het setpointbuffer worden
geplaatst zullen eerst de setpoints weggeschreven worden,
57
die de grootste verplaatsing representeren. Bij een negatief
setpoint moet van de laatste 3,bits van het 80 ms setpoint
het 2-complement genomen worden om dit te realiseren.
Het setpointbuffer dat gebruikt wordt, is een FIFO-buffer
dat in totaal 24 10 ms setpoints kan bevatten. Het plaatsen
van een 10 ms setpoint (2 bytes) in het setpointbuffer wordt
gerealiseerd met de procedure PUTDE, die in de interpolatie
procedure aangeroepen wordt. Door de regelroutine wordt een
setpoint uit het buffer gehaald met de procedure GETDE.
'PUTDE
{t----II
FtFO -
~ETDE10 "'s. setpoi"l:
Di3ito.leR.~e.l_r
Fig 5.3.-1: Setpointoverdracht naar de digitale regelaar
Het buffer wordt beschermd met de volgende semaforen:
- NSPACE: Geeft het aantal plaatsen aan dat nog vrij is om
een setpoint in te plaatsen. NSPACE wordt geiniti
aliseerd met 18 hex (24 dec).
- NITEMS: Het aantal setpoints dat op een bepaald moment
58
aanwezig is in het setpointbuffer (is 0 bij initi
alisatie).
Het verhogen en verlagen van NSPACE of NITEMS moeten ondeel
bare processen zijn. Dit kan gerealiseerd worden door een
disable interrupt te geven voordat NSPACE of NITEMS gelezen
wordt, en een enable interrupt te geven als NSPACE of NITEMS
na verandering weer in het geheugen wordt opgeslagen.
Een mutual exclusion semafoor die gebruikt wordt voor buffer
manipulatie zal niet nodig zijn zoals verderop duidelijk
gemaakt zal worden. Andere variabelen, die betrekking hebben
op het gebruik van het setpointbuffer zijn 2 variabelen die
geheugenadressen aangeven waar gelezen (NEXTRA) dan wel
geschreven (NEXTWA) moet worden. Bij initialisatie zijn
beide gelijk aan 3EBO hex.
De procedure PUTDE wordt aangeroepen vanuit de interpolator
en is een onderdeel van de 80 ms interruptroutine. De
procedure PUTDE ziet er schematisch als volgt uit:
- Als NSPACE=O (buffer is vol) dan moet gewacht worden
totdat de 80 ms interruptroutine onderbroken wordt door
een 10 ms interrupt (heeft een hogere prioriteit). In de
10 ms interruptroutine zal een setpoint uit het buffer
gehaald worden. Als de regelroutine afgelopen is kan ver
der gegaan worden met het plaatsen van een setpoint in het
buffer.
Verlaag NSPACE met 1.
Plaats op adres NEXTWA het meest significante byte van het
geinterpoleerde setpoint.
Plaats op adres NEXTWA+1 het minst significante byte van
het geinterpoleerde setpoint.
Verhoog NEXTWA met 2. Als NEXTWA dan gelijk wordt aan
adres 3EEO dan moet de waarde veranderd worden in 3EBO
omdat gebruik gemaakt wordt van een cyclisch buffer (adres
3EDF is de laatste geheugenlocatie van het buffer) .
59
- NITEMS met 1 verhogen: er is immers een setpoint bijge
plaatst.
De procedure GETDE is een onderdeel van de 10 m. interrupt
routine en zal een setpoint uit het setpointbuffer halen.
Dit 10 ms setpoint wordt opgeteld bij het positiesetpoint
(de input van de digitale regelaar).
Als bij deze procedure geen setpoint in het buffer gevonden
wordt dan zal aangenomen worden dat er geen gewenste ver
plaatsing is (setpointwaarde = 0000 hex). Dit heeft een
aantal voordelen:
- Er zal geen individual starvation optreden omdat alleen in
de procedure PUTDE eventueel gewacht moet worden. Dit
wachten zal altijd tijdelijk zijn omdat binnen 10 ms weer
een setpoint uit het buffer gehaald zal worden.
- Er zal altijd een 10 ms interruptsignaal aanwezig mogen
zijn. Als de EWMC-processorkaart opgestart wordt zal deze
ervoor zorgen dat de desbetreffende robotas naar de ini
tiele nulpositie gaat. Daar aangekomen zal een interrupt
enable gegeven worden, waarna direct de regelroutines
mogen starten. Normaal gesproken zou het noodzakelijk zijn
dat direct setpoints door de HP doorgestuurd moeten wor
den. Als nu geen setpoints doorgestuurd worden zal de
regeling ervoor zorgen dat de robotas afgeregeld wordt op
de initiele positie.
- Als er een fout optreedt in de communicatie tussen de HP
en een EWMC-processorkaart zal de regeling niet direct
verstoord worden. Het enige wat er zal gebeuren is dat de
robotas afgeregeld wordt op de laatst doorgegeven gewenste
positie.
De procedure GETDE ziet er als volgt uit:
- Als NITEMS ongelijk is aan 0 dan:
- NITEMS met 1 verlagen.
- Meest significante byte van 10 ms setpoint lezen op
60
adres NEXTRA.
- Minst significante byte van 10 ms setpoint lezen op
adres NEXTRA+1.
- Verhoog NEXTRA met 2 en pas de waarde eventueel aan
als de waarde buiten het daarvoor bestemde bereik
van het buffer valt.
- NSPACE met 1 verhogen: er is weer een plaats extra
vrijgekomen voor een nieuw setpoint.
- Anders setpointwaarde = 0000 hex, waarbij de buffervaria
belen niet veranderd worden.
5.4. De digitale regelaar
5.4.1. Inleiding
Bij het ontwerpen en implementeren van een servoregeling
moet rekening gehouden worden met de volgende eisen:
- De stabiliteit moet gegarandeerd worden in het hele werk
gebied.
- Er moet een goed volggedrag zijn.
- Externe verstoringen moeten onderdrukt worden.
Een optimale servoregeling voor een robotbesturing zal niet
eenvoudig te realiseren zijn, dit vanwege de complexe dyna
mica van het robotsysteem. Het dynamisch gedrag zal afhanke
lijk zijn van:
- De positie van het TooI Centre Point (TCP) van de robot.
- De last die door de robot gedragen wordt.
- De snelheid waarmee bewogen moet worden (denk aan traag-
heidskrachten).
Bovendien is er een interactie tussen de verschillende as
sen. Als het mogelijk is om de verschillende vrijheidsgraden
van de robot te kunnen ontkoppelen, zal het eenvoudiger zijn
61
om een optimale regeling te ontwerpen. Vanwege de hardware
is geen communicatie tussen de verschillende asregelaars
mogelijk, zodat een ontkoppelde servoregeling niet te reali
seren is.
Bij de keuze om een regelaar te ontwerpen die gelijkvormig
is voor iedere as, zal de regeling zodanig ontworpen moeten
zijn dat de interactie tussen de verschillende vrijheidsgra
den beschouwd wordt als een externe verstoring. Om rekening
te houden met standafhankelijke gedrag zou het mogelijk zijn
dat de host-computer, afhankelijk van de positie, regelpara
meters doorgeeft die op dat moment ideaal zijn voor de
servoregeling. Dit alles zal echter teveel processortijd
kosten om het realiseerbaar te maken.
Om de regelparameters theoretisch af te kunnen leiden, moet
eerst een volledig model van de robotdynamica bekend zijn.
Door van Wijck [lito 7] is een aanzet gegeven om het model
van de ASEA IRb-6 robot te beschrijven, waarbij nog geen
rekening is gehouden met de interactie tussen de verschil
lende vrijheidsgraden. Het blijkt dat een vrijheidsgraad van
de robot te beschrijven is met een model van de vijfde orde.
Omdat het proces nog zo goed als onbekend is, is het beter
om voorlopig een servoregeling te ontwerpen, die vr1J een
voudig is. De regelparameters kunnen zo gekozen worden, dat
ruime veiligheidsmarges ingesteld worden, waardoor de stabi
liteit van het servosysteem gewaarborgd wordt. Er zullen dan
wel beperkingen zijn tav. bewegingssnelheid en baannauwkeu
righeid.
Als gebruik gemaakt wordt van een volledig digitale regeling
zal het in de toekomst mogelijk blijven om de servo-regeling
met weinig moeite te veranderen of uit te breiden,waarbij de
hardware hetzelfde kan blijven. Het nadeel van een digitale
regelaar is dat de snelheid over het algemeen kleiner is dan
62
bij een analoge regelaar. Ook kan de kwantiseringsruis een
rol spelen bij een digitale regeling.
De regeling zoals die uiteindelijk gerealiseerd is, is een
regeling met 2 PID-regelaars in cascade. De cascaderegeling
bestaat uit een binnenlus (de regeling van de snelheid) en
een buitenlus, waarbij de positie geregeld wordt. In figuur
5.4.-1 ziet U deze regeling schematisch weergegeven. G(R1)
is daarbij de positieregelaar, G(R2) de snelheidsregelaar en
G(P) het proces, dwz. de motor en andere toebehoren van de
robotas.
I I
~-------------
Fig. 5.4.-1: Cascade regeling.
Het in cascade opbouwen van de regelaar heeft een aantal
voordelen:
Verstoringen in de snelheid kunnen direct door de binnen
lus weggeregeld worden.
- Het is mogelijk om de snelheidsregelaar zo te ontwerpen
dat een pool in het proces weggeregeld wordt met een
nulpunt in de snelheidsregelaar.
- De binnenlus kan als een apart proces G(W2) beschouwd
worden dat door de positieregelaar geregeld moet worden.
Met een goede keuze van de snelheidsregelaar is het moge
lijk dat het proces G(W2) sneller wordt dan het proces
G(P) zelf.
- Bij gebruik van een cascaderegeling kunnen de regelparame
ters langs praktische weg veel sneller ingesteld worden.
Allereerst kan de snelheidsonderlus geoptimaliseerd wor
den. Vervolgens kan de buitenlus geoptimaliseerd worden
63
terwijl de snelheidsregelaar hetzelfde blijft.
Het nadeel van een cascaderegeling is dat het meer werk is
om 2 variabelan te regelen.
Bij het ontwerpen van de regelaar voor de binnenlus worden
door Isermann [lito 11] enkele richlijnen gegeven. Zo mag
bij een discreet systeem de versterking van de regelaar
G(R2) niet te groot zijn vanwege een klein stabiliteitsge
bied. De binnenlus wordt dan wel langzamer en de offset
groter. Om de offset te elimineren kan het beste gebruik
gemaakt worden van een PI-regelaar voor de binnenlus.
Van Blerck heeft in zijn ontwerp gekozen voor een PO-rege
ling vanwege de grotere snelheid, die daarmee bereikt wordt.
Er is echter gebleken dat bij gebruik van een PO-regeling de
respons zeer instabiel is.
Behalve de verandering van de snelheidsregelaar is nog een
andere methode gebruikt om instabiliteiten in het proces weg
te regelen. Deze methode zal in de volgende paragraaf be
schreven worden.
Bij de instelling van de positieregelaar blijkt het een
groot verschil te zijn of de regeling een traject moet
volgen of dat de robotas afgeregeld moet worden op een
positie. Bij het volgen van een traject kan het beste een P
regeling gebruikt worden, terwijl bij het afregelen van een
positie het beste een PlO regeling gebruikt kan worden. Dit
zal ook nader besproken worden.
De stand waarin de regeling geoptimaliseerd wordt is gelijk
aan de stand in fig. 5.4.-2.
64
5.4.2. Gebruik van laagdoorlaatfilter in de terugkoppeling
Zoals eerder vermeld kan een vrijheidsgraad van het robot
systeem beschreven worden met een model van de vijfde orde.
Tevens treden allerlei niet-lineariteiten op in het systeem.
Bij een verkeerde instelling van de servoregeling zullen danook al snel instabiliteiten optreden. Tijdens de ontwikkeling van de regelaar is dat ook gebleken.
Opvallend is dat er bij een optredende instabiliteit steedseen oscillatie in de respons optreedt met een zelfde fre
quentie van 25 Hz.Deze frequentie komt ook tot uiting in de volgende meting.
De robot wordt in de stand van fig. 5.4.-2 mechanisch geexciteerd (bv. door een klap te geven tegen de onderarm). De
tachorespons van de eerste as zal een uitgedempte trilling
vertonen, waarbij de trillingsfrequentie weer gelijk blijkt
te zijn aan 25 Hz (gemeten met een samplefrequentie van 100
Hz) .
~_'UIA- IC)m
~III•• !
Fig. 5.4.-2: De nulpositie.
Door van Wijck [lito 7] en Beljaars [lito 12] zijn metingengedaan aan het dynamische gedrag van de ASEA IRb6 robot.Door Beljaars is een frequentie-analyse uitgevoerd, waarbij
een arm mechanisch geexciteerd wordt en de respons gemeten
65
wordt mbv. een versnellingsopnemer.
Door van Wijck is de frequentie-analyse verricht door een
spanning, die stapvormig verloopt op de motor te zetten en
waarbij de respons van het tachosignaal gemeten wordt. Met
differentiatie en fouriertransformatie is daarbij een fre
quentiespectrum berekend.
Het frequentiespectrum van de eerste vrijheidsgraad, bij een
meting door van Wijck in de stand van fig. 5.4.-2 is
weergegeven in fig. 5.4.-3.
88
•
r-.......:----r---.----r--.----.----.,.--.----.-----.--
\\
.,iI...i~
J
i-1I]~I
-211 11111
FREQ. IN HERZ
Fig. 5.4.-3: Frequentiespectrum van de l' vrijheidsgraad in
de stand van fig. 5.4.-2, volgens v. Wijck [7].
Het blijkt dat bij de diverse frequentiespectra, die beide
hebben bepaald steeds pieken optreden in de buurt van 15 tot
35 Hz. Deze pieken treden voor de verschillende assen en bij
verschillende standen van de robot steeds bij andere
66
frequenties op. Omdat het frequentiespectrum afhankelijk is
van de robotstand zullen ook de polen, die uit een frequen
tiespectrum afgeleid worden, afhankelijk zijn van de robot
stand.
Omdat een vrijheidsgraad beschreven wordt met een vijfde
orde proces, zal het niet mogelijk zijn om met 2 in cascade
geschakelde regelaars alle polen van het systeem, die langs
theoretische weg bepaald zijn, te compenseren. Bovendien
zijn deze polen ook nog eens standafhankelijk zoals in de
vorige alinea beschreven is.
Er is dan ook besloten om in de terugkoppeling een laagdoor
laatfilter aan te brengen. Op deze wijze kan op eenvoudige
wijze stabiliteit gegarandeerd worden voor hogere frequen
ties zonder dat een complexe regeling noodzakelijk is. Een
nadeel is dat de mechanische bandbreedte van het robot
systeem beperkt zal worden.
Een filter dat bij de gebruikte samplefrequentie van 100 Hz
goed voldoet is om de laatste 4 snelheden, die ingelezen
zijn te middelen. Dit middelen kan op een snelle en eenvou
dige manier gebeuren door 4 snelheden op te tellen en te
delen door 4 (2 bits naar rechts schuiven).
De overdrachtskarakteristiek is berekend en de frequentie
respons is weergegeven in figuur 5.4.-4. Het inputsignaal
van het filter is u(k), dat gelijk is aan de snelheid,
berekend door het verschil tussen 2 opeenvolgende posities
te bepalen. De gefilterde snelheid is y(k), die uiteindelijk
als terugkoppelsignaal fungeert.
y(k) = 0.25 ( u(k) + u(k-1) + u(k-2) + u(k-3) }
67
5.4.1.
Na z-transformatie volgt:
3 2 2
Y(z) z + z + z + 1 ( z+l) (z +1)
H(z) = = = 5.4.2.
3 3
U (z) 4z 4z
IH(z) I kan berekend worden door Izl=l in te vullen in H(z).
Als z = a + bj dan geldt dat:
b = 1 - a
2
5.4.3.
Er geldt dan met a als parameter dat:
I H (a) I =
lal
2
V (2a + 2) i 5.4.4.
Omdat de samplefrequentie gelijk is aan 100 Hz is de fre
quentie, waarbij deze overdracht bereikt wordt gelijk aan:
f(a) = 50 k +
50
180
ARCTAN {
v( 1 - a
a
2 i
} Hz
5.4.5.
Voor a > 0 geldt dat k=O en voor a < 0 geldt dat k=l.
De overdrachtskarakteristiek is weergegeven op de volgende
pagina.
68
---t--.".-~-
II--+--~;;-I-'---- .~.. r
I--+--...J.----'--"..+--l--.-.-~-- ~.
/--.J-....,....-I--+--+--i-3~--+-.l......- .-_.~-.
G.~l--+--+--+--+--+~~t--~r- .--l--+-c-...J-.,-+--l-""'+-J~I--+-: -;------i---,.- -\....
; , . ii, I
l--+--+--1:f-.-l---+-J-P\;+-~Î-----t·· .-_ _.
o ~ ...Fig. 5.4.-4: Overdracht van laagdoorlaatfilter.
iI :, I
20·10 :
------ -- - - - -_. --
Fig. 5.4.-5: Respons zonder en met laagdoorlaatfilter.
Als bij een instabiele regeling een setpoint ingevoerd
wordt, zal een oscillatie optreden in de tachorespons. De
robotas zal dan trillen rondom de gewenste positie, die
69
bepaald is met de keuze van het opgegeven setpoint. In
figuur 5.4.-5 is zo'n respons te zien. Als bij dezelfde
regeling het laagdoorlaatfilter in de terugkoppellus aange
bracht wordt, blijkt de respons aanmerkelijk verbeterd. Als
gevolg van de stictie van de motor en het feit dat de posi
tie zeer nauwkeurig gemeten wordt, zal het niet mogelijk
zijn om de positie exact te bereiken zodat een minimale
trilling zal blijven bestaan.
5.4.3. Optimalisatie van de regelparameters
Het ontwerp van de digitale regelaar is weergegeven in
figuur 5.4.-6.
e
Fig. 5.4.-6: De gerealiseerde digitale regeling.
De positieregelaar bestaat uit 2 regelaars: een regelaar
wordt gebruikt tijdens het doorlopen van een traject (Conti
nuous Path). De andere wordt gebruikt als op een positie
moet worden afgeregeld.
Bij de implementatie van de regelaar is besloten om deze 2
regelaars te combineren door een I-faktor in te schakelen
als op een positie afgeregeld moet worden. Het blijkt dat
als deze I-faktor zeer klein is, een gewenste positie toch
binnen redelijke grenzen te bereiken is.
Voor de snelheidsregelaar is gekozen voor een PI-regelaar
'zoals eerder vermeld in paragraaf 5.4.1.
70
Door van Blerck werden het setpoint en de positie door 3
bytes gerepresenteerd terwijl de snelheid en het DAC input
data woord gerepresenteerd worden met 1 byte. Tijdens het
gebruik van deze regeling is gebleken dat het snelheidsset
point en de waarde van de snelheidsterugkoppeling vaak
vastlopen tegen de maximum waarde, die te representeren is
met 1 byte.
Als gevolg van het verzadigingsverschijnsel dat hierdoor
ontstaat is besloten om de signalen die betrekking hebben
op de snelheid te representeren met 2 byte.
Het output data woord van de regelaar dat na aanpassing
gebruikt wordt als input data woord van de OAC blijft een 8
bits datawoord.
Op deze manier zal in de digitale regelaar geen verzadi
gingsverschijnseloptreden als gevolg van een te beperkte
digitale representatie van regelsignalen. Omdat de snel
heidsregelaar rekent met een nauwkeurigheid van 2 byte,
terwijl een 8 bits DAC gebruikt wordt, zal wel een afronding
moeten plaatsvinden.
De vergelijking van de PlO-regelaar is te beschrijven met de
volgende vergelijking. Oe parameters hebben de volgende
betekenis:
- u(nT)
- e(nT)
- Ts
- Ti
- Td
- Kp
Het uitgangssignaal van de regelaar op sample
tijdstip nT.
Het foutsignaal op tijdstip nT (het inputsignaal
van de regelaar.
Oe sampltijd: in dit geval 10 ms.
Integratietijd.
Differentiatietijd.
Versterkingsfactor.
71
u(nT) = Kp e(nT) +
Td
Ts
{ e(nT) - e(nT-T) } +
Ts n2: { 0.5 [ e(iT) + e(iT-T) ] }
Ti i=o5.4.6.
In de digitale regelaar worden de regelparameters als volgt
gerepresenteerd:
Kp =(DECPP-B)
PFAK 2 5.4.7.
Td (DECPD-B)
Kd = = DFAK 2
Ts
Ts (DECPI-B)
Ki = = IFAK 2
Ti
5.4.B.
5.4.9.
PFAK, DECPP, DFAK etc. worden daarbij steeds als B bits
datawoorden geimplementeerd.
De procedures, die geschreven zijn om een PID-regelaar te
implementeren zijn uitgebreid beschreven door van Blerck,
zodat hier verder geen aandacht aan geschonken wordt.
Zoals in de inleiding al vermeld is, zal de regelaar staps
gewijs geoptimaliseerd worden. Om de optimalisatie te reali
seren is gekozen om gebruik te maken van een performance
criterium.
72
De volgende 4 sommatiecriteria worden het meest toegepast,
waarbij eek) het foutsignaal is op een bepaald sample
tijdstip.
TI1 = L eek)
k=O
T 2
I2 = E e (k)
k=O
TI3 = L le(k) I
k=O
TI4 = L k le(k) I
k=O
5.4.10.
5.4.11.
5.4.12.
5.4.13.
Het sommatiecriterium I2 wordt veel gebruikt als voor een
regeling de hoeveelheid "regelenergie" geminimaliseerd moet
worden (bv. brandstof). Dit criterium zal echter (net als
I1) leiden tot een oscillerend gedrag in het uitgangssignaal
van de regelaar [ lito 11]. Bij het optimaliseren van een
robotregeling zijn deze criteria dan ook niet geschikt omdat
oscillerend gedrag zoveel mogelijk vermeden moet worden.
Hoewel I4 in feite een betere keuze zou zijn, is vanwege de
veel eenvoudigere implementatie gekozen voor sommatiecri
terium I3.
Bij de optimalisering van een regelaar wordt de setpoint
waarde stapsgewijs veranderd. Dit is zodanig geimplementeerd
dat met een terminal, die verbonden is met de processor
kaart, een gewenste positieverandering kan worden ingevoerd
73
en de regeling opgestart kan worden. Er gebeurd dan hetzelf
de als dat de host-computer 1 keer een 80 ms setpoint zou
geven. Omdat geen gebruik gemaakt wordt van de HP, zal met
een blokgolfgenerator de la ms interrupt gegenereerd moeten
worden.
De stand van de robot, waarbij de optimalisatie zal plaats
vinden, is de nulpositie die bij de initialisatie van de 3
assen bereikt wordt.
Na iedere uitvoering van de regelroutine wordt de status
weggeschreven in een statusgeheugen (het emulatorgeheugen
van het PMDS-ontwikkelsyteem). Na ongeveer 2.5 seconde is
dit statusgeheugen vol en wordt de regeling gestopt. Het
blijkt dat deze tijd ruimschoots voldoende is om de regelaar
te optimaliseren.
Als het statusgeheugen vol is wordt op de aangesloten termi
nal een aantal relevante gegevens weergegeven zoals:
- Het opgegeven positiesetpoint.
- De som van de absolute positiefout.
- De positie op het moment dat de overshoot maximaal is.
- De eindpositie.
- De som van de absolute snelheidsfout.
- De maximale snelheid.
- De eindsnelheid.
Om de snelheidsregelaar te optimaliseren wordt in de soft
ware van de regelaar na de positieregelaar een commando
tussengevoegd waarmee het snelheidssetpoint een bepaalde
waarde krijgt. Het opgegeven positiesetpoint wordt dan gene
geerd.
Het blijkt dat bij gebruik van het gekozen criterium bij de
optimale regelparameters toch een gedempt oscillerend gedrag
zal optreden. Daardoor is een extra eis toegevoegd nl. dat
74
de maximale overshoot kleiner moet zijn dan 5%.
Op deze manier is op een snelle wijze de regeling te optima
liseren, zonder dat het noodzakelijk is om gebruik te maken
van de host-computer om setpoints op te geven.
5.4.4. Metingen bij de optimalisatie van de regeling.
Tijdens het optimaliseren van de regelparameters worden, na
het invoeren van een gewenste waarde de meetresultaten
gemeten mbv. een 2 kanaals x-t schrijver. Hiermee wordt de
spanning over de motor en de uitgangsspanning van de
tachogenerator gemeten en weergegeven als functie van de
tijd. Behalve met een schrijver worden diverse meet- en
regelvariabelen opgeslagen in een statusgeheugen.
Behalve met het gekozen sommatiecriterium kan de kwaliteit
van de regeling beoordeeld worden aan de hand van de respons
van het uitgangssignaal van het geregelde systeem. Als het
ingangssignaal stapvormig veranderd wordt, zal de regeling
ervoor zorgen dat het uitgangssignaal van het systeem de
gewenste waarde bereikt. In figuur 5.4.-7 is een respons van
het uitgangssignaal van het geregelde systeem schematisch
weergegeven. Dit kan zowel de snelheid als de positie van
een as voorstellen. De volgende constanten worden in de
figuur aangegeven:
- Tr De tijdconstante van het geregelde systeem. Dit wordt
gedefinieerd als de tijd waarop 63% van de gewenste
eindwaarde bereikt wordt.
- Mp
- Tp
- Ts
De maximale overshoot.
Het tijdstip waarop de maximale overshoot optreedt (de
piektijd).
De settling time. Deze tijd wordt gedefinieerd als de
tijd, die nodig is om het uitgangssignaal binnen 2%
75
van de gewenste eindwaarde te laten blijven. Als de
nauwkeurigheid van 2% niet gehaald wordt, wordt een
eindfout aangegeven.
I _
6~'/o
o Tt' lp I,
Fig. 5.4.-7: Respons van een geregeld systeem.
Bij de optimalisatie van de snelheidsregelaar is een 10 ms
setpoint gekozen dat gelijk is aan 100 hex. Dit betekent dat
de gewenste robotas-hoeksnelheid gelijk is aan:
(256 x 360 x 100) / (4096 x 158) = 14.24 graden/sec.
De factor 100 komt erbij vanwege de samplefrequentie van 100
Hz.
In bijlage 5.1. worden de gekozen parameters, de bijbehoren
de stapresponsies en tijdconstanten van het geregelde sys
teem weergegeven.
Bij de respons van de tweede vrijheidsgraad is de invloed
van de zwaartekracht duidelijk merkbaar. Als gevolg van de
zwaartekracht zal bij gelijke aansturing de snelheid groter
worden. Omdat een constante snelheid gewenst is, zal de
motor aangestuurd worden met een steeds minder grote
spanning.
76
Een ander probleem dat bij de tweede as optreedt is het feit
dat het dode gebied van de motor afhankelijk is van de
positie. Bij de initialisatiestand zal de as niet bewegen
als er geen spanning over de motor wordt gezet. Het dode
gebied ligt dan ook rondom de spanning van 0 V. In een
andere stand zal wel een bepaalde spanning nodig zijn om de as
op dezelfde plaats te houden, waarbij tevens het dode gebied
mee verschuift. Om het dode gebied op te heffen is in de
software een aanpassing gemaakt, zoals beschreven in
paragraaf 3.G. Deze aanpassing is echter constant zodat bij
de tweede vrijheidsgraad oscillaties optreden als het werke
lijke dode gebied op een gegeven moment niet meer gelijk is
aan het in de software veronderstelde dode gebied.
Het probleem ontstaat uit het feit dat het askoppel niet
evenredig is met de spanning over de motor. Het askoppel is
wel evenredig met de ankerstroom zodat stroomsturing in
plaats van spanningssturing het gedrag bij lage snelheden
mischien kan verbeteren.
Bij de optimalisatie van de positieregelaar is als inputsig
naal 1 setpoint gegeven. De waarde van dit setpoint is
gelijk aan 1000 hex, wat een gewenste robotas-hoekver
draaiing betekent van 2.28 graden. In eerste instantie werd
een P-positieregelaar gebruikt waarbij een I-faktor toege
voegd werd als op een positie afgeregeld moet worden.
In bijlage 5.2. worden de gekozen parameters, de staprespon
sies en de parameters van het geregelde systeem weergegeven.
Bij de stapresponsies moet opgemerkt worden, dat in plaats
van de positie de snelheid is weergegeven zodat niet direct
af te leiden is dat het om een stapresponsie gaat.
Om de snelheid te vergroten werd vervolgens een PD-positie
regelaar gebruikt in plaats van een P-positieregelaar. De
77
resultaten van de optimalisatie van deze regelaar zijn weer
gegeven in bijlage 5.3.
Het blijkt dat bij gebruik van de PD-positieregelaar ipv.
een P-positieregelaar de som van de absolute positiefout met
een factor 3 beter wordt. Het lijkt er dan ook op dat de PD
positieregelaar beter voldoet (Het geregelde systeem wordt
sneller en de eindfout wordt kleiner). De responsie vertoont
echter een meer oscillerend karakter dan bij gebruik van een
P-positieregelaar.
Als vanuit de HP een serie setpoints naar de eerste vrij
heidsgraad worden verstuurd, blijkt dat bij gebruik van de
PD-positieregelaar met een extra I-faktor tijdens het afre
gelen op een positie de respons een oscillerend karakter zal
vertonen. In figuur 5.4.-8 is de tacho-respons weergegeven,
waarbij de eerste robotas gedurende 1 seconde moet bewegen
met een snelheid van 30 graden/sec.
I
.
Fig. 5.4.-8: Respons bij
gebruik van een
PD-positieregelaar.
Fig. 5.4.-9: Respons bij
gebruik van een
P-positieregelaar
(Kp = 0.141).
Ook als bij de positieregelaar een P-regeling lnet Kp=0.141
gebruikt wordt, is er een oscillerende snelheidsrespons (zie
fig. 5.4.-9).
78
Als voor de P-regeling een P-waarde van 15 hex (Kp=0.082)
gekozen wordt, is de respons beter. De afregeling op de
eindpositie is daarbij echter duidelijk langzamer (fig.
5.4.-10) .
Fig. 5.4.-10: Respons bij gebruik van een P-positieregelaar.
(Kp = 0.082)
uit de metingen kan het volgende geconcludeerd worden:
- Tijdens het volgen van een traject, is het beter om een P
regeling als positieregelaar te gebruiken. De P-waarden
waarbij de regeling optimaal wordt, zullen iets kleiner
zijn dan de waarden, die gegeven worden in bijlage 5.2.
De optimalisatiemethode van deze positieregelaar zal nader
besproken worden bij de aanbevelingen.
- Als op een positie afgeregeld moet worden, kan het beste
een PlO-regelaar als positieregelaar gebruikt worden.
Hiervoor kunnen de PlO parameters genomen worden, die in
bijlage 5.3. gegeven zijn met Ki steeds gelijk aan 0.004.
79
Hoofdstuk 6. CONCLUSIE EN AANBEVELINGEN
6.1. Conclusie
De hardware van de robotbesturing is gerealiseerd, waarbij
voor ieder as een digitale regelaar geimplementeerd is.
Bij de realisering van de besturing moeten enkele
kanttekeningen gemaakt worden:
- De hardware en de regelaar van de eerste as is getest
onder besturing van de HP. Er is niet toegekomen aan het
testen van de tweede en de derde as onder besturing van de
HP, omdat na het gebruik van de noodstop de op dat moment
afgeschakelde versterker steeds kapot ging. De
verbeteringen om dit in de toekomst te voorkomen zijn wel
gerealiseerd, maar er is te weinig tijd overgebleven om
alsnog de laatste 2 assen te testen.
- Bij gebruik van de (in de eproms) geimplementeerde
regelparameters (PD-positieregeling met extra I-term als
op een positie moet worden afgeregeld) is de regeling
tijdens het volgen van een traject vrij instabiel. Om dit
te verbeteren wordt een digitale regelaar voorgesteld,
waarbij tijdens het volgen van een traject een P
positieregelaar gebruikt wordt en bij het afregelen op een
positie een PID-positieregelaar (fig. 6.1.-1).
as + e. rl "PIn h"".
Fig. 6.1.-1: Verbeterde digitale regeling.
80
e
Om dit te realiseren moet de software iets veranderd worden
waarbij ook de parameters van de P-positieregelaar nog geop
timaliseerd moeten worden.
6.2. Aanbevelingen
Bij de huidige opzet van de besturing zijn nog enkele verbe
teringen aan te brengen.
Hardware
- Om de I/O interfaces van de HP en de processorkaarten te
beveiligen kunnen opto-couplers aangebracht worden.
- De kloksnelheid kan vergroot worden met een externe klok.
- Als bij de huidige software een fout optreedt zal de motor
van de as, waar de fout geconstateerd wordt stopgezet
worden. Als gevolg van het aflopen van de watchdogs zal de
beveiliging in werking treden en wordt de HP geinterrum
peerd. Het is ook mogelijk om met een extra lijn vanuit
iedere processorkaart aan te geven als een fout geconsta
teerd wordt.
- De processorkaarten moeten nu opgestart worden door het
geven van een handmatige reset. Dit zou ook mogelijk
moeten zijn vanuit de HP. Dit kan door een outputlijn van
de HP te verbinden met de reset ingang van ieder proces
sorkaart. Deze lijnen kunnen ook gebruikt worden om na
detectie van een fout bij een bepaalde as, alle asregelin
gen opnieuw op te starten.
- De DAC-schakeling kan beter beveiligd worden. De meest
storende fout komt voor als alle DAC data-lijnen hoog zijn
terwijl de DAC geactiveerd wordt als dat niet gewenst is.
De robotas zal dan met maximale snelheid gaan bewegen. Om
dit te voorkomen wordt de output control afgeschakeld als
alle datalijnen hoog zijn (fig. 6.2.-1). Het nadeel is wel
81
dat de aanpassing van de digitale regelaar hier rekening
mee moet houden.
EWMC
DAC- Jat...L.ATC/i l>AC
lP MS. klok
Fig. 6.2.-1: Verbetering van de OAe-schakeling.
optimalisatie van de regelaar
- De gebruikte methode om de regelparameters te
optimaliseren werkt niet voor de positieregelaar, die
gebruikt wordt als een traject gevolgd wordt. De oorzaak
hiervan is, dat met het invoeren van 1 setpoint de
gewenste responsie niet beschouwd kan worden als een
traject. Het is dan ook beter om deze positieregelaar te
optimaliseren door setpoints aan te bieden, waarbij een
constante robotas-hoeksnelheid gewenst is.
Bij het volgen van een traject is het niet direct van
belang dat de gewenste posities gehaald worden: er mag
best een kleine vertraging optreden tussen de gewenste en
de werkelijk bereikte posities. Het is belangrijker dat de
werkelijke snelheid overeenkomt met de gewenste snelheid.
Daarom zal bij de optimalisatie van de positieregelaar bij
het volgen van een traject gekeken moeten worden naar de
snelheidsfout en niet naar de positiefout.
- Bij het gebruik van het regelcriterium waarbij de absolute
fout opgeteld wordt, blijken de optimale parameters zoda
nig te zijn dat toch een oscillerend gedrag in de stapres-
82
ponsie optreedt. Voor een robotregeling is dit niet ge
wenst.
Door het criterium aan te passen kan geprobeerd worden om
het oscillerende gedrag te vermijden. Een suggestie is om
de volgende klasse van criteria te definieren:
L = MIN { Lp k
p lip
I e (k) I } 6.2.1.
Voor p=l is dit criterium gelijk aan het gebruikte regel
criterium. Bij de H-oneindig methode [lito 13] wordt de
limiet voor p naar oneindig genomen. In feite wordt dan de
maximum waarde van le(k) I geminimaliseerd. Grote pieken in
de respons worden door dit criterium dan ook niet geaccep
teerd, hetgeen het oscillerende gedrag mogelijk tegengaat.
Als deze methode gebruikt wordt, moet door het reken
intensieve karakter van het criterium wel gebruik gemaakt
worden van een hogere pr~grammeertaal om de software voor
dit criterium te implementeren.
6.3. Slotopmerkingen
Iedereen, die het afgelopen jaar heeft geholpen aan het
welslagen van mijn afstudeerwerk wil ik hartelijk danken,
met name mijn begeleiders Carel v.d. Brekel en Ton v.d.
Graft. Verder wil ik Frans Galle (Rekencentrum) en Piet
v.d. Schoot danken voor de hulp bij het installeren van
het PMDS-systeem en Ad Damen voor de nadere uitleg van de
H-oneindig methode.
83
7. LITERATUUR
1. Blerck, F.J.J.: De bouw van een robotbesturing.
Afstudeerverslag. Vakgroep meet- en regeltechniek.
T.U. Eindhoven, december 1985.
2. Coenen, F.M.T.: ontwerp van een universeel programmeer
systeem voor industriele robots.
Afstudeerverslag. Vakgroep meet- en regeltechniek.
T.U. Eindhoven, december 1986.
3. Reijers, L.N. en H.J.L.M. de Haas: Flexibele produktie
automatisering, Deel 3:industriele robots, l' druk
Technische Uitgeverij De Vey Mestdagh bv., Middelburg,
1986. [KGB 86 REI bsw]
4. Denis, F.: Robots en industriele automatisering.
Technology transfer express, nummer 37, september 1986.
Jaargang 4. Brussel, 1986
5. Albus J.S. e.a.: Hierarchical control for Robots in an
automated factory.
13' -International Symposium on Industrial Robots and
Robots 7, Conference Proceedings Volume 2, pag. 13-29,
April 17-21 1983, Chicago Ilinois.
6. Piecha J.: Description and implementation of a single
board computer for industrial control. EUT Report 81-E
120.
T.H. Eindhoven, vakgroep EB, 1983.
7. van Wijck M.P.C.M.: Industrie-robot gemodelleerd als
starre manipulator met flexibele aandrijvingen.
Afstudeerverslag. Vakgroep meet- en regeltechniek.
T.U. Eindhoven, Oktober 1986.
84
8. Verhoef, P.L.M.: Verkenning ter realisatie van snelle
gecoordineerde motorregelaars te implementeren op een
multiprocessor configuratie.
Afstudeerverslag. Vakgroep meet- en regeltechniek.
T.U. Eindhoven, augustus 1983.
9. Werter, M.J.: Het dynamisch gedrag van een servomotor
met tachometer van een robot.
stageverslag. Vakgroep meet- en regeltechniek.
T.H. Eindhoven, Februari 1982.
10. Brummans, G.: Een servoversterker met pulsbreedte
modulatie.
Stageverslag. Vakgroep meet- en regeltechniek.
T.H. Eindhoven, Juni 1986.
11. Isermann, R.: Digital Control Systems.
Springer Verlag Berlijn, 1981.
[DPU 81 ISE]
12.Beljaars, J.W.F.M.: Het dynamisch gedrag van een
industrierobot met 2 graden van vrijheid.
Afstudeerverslag. Vakgroep Meet- en Regeltechniek.
T.H. Eindhoven, augustus 1984.
13.Zames, G.Z. en B.A. Francis:
Feedback, minimax sensitivity and optimal robustness.
IEEE Transactions on Automatic Control.
Vol. AC-28, No. 5, mei 1983, pag. 585-601.
14.Galle, F.: Het UNIX systeem.
R.C. Informatie AG-8?
Uitgave Rekencentrum T.U. Eindhoven.
85
lJj1-'.w.fo-'III
'lij VI!l(1)
~.
rVI rVl 1V
5::r:
Eind-txj1-3
Sc.h"keJCUA.... s RB~ RB3 AB5 {(/rl Raf} R8~lJjtxj<:txjHtt
RA RB' HG)HZG)
(» Cl)0\ Cl
H
NooJs~r ~Clc::H1-3
~~
V2. V" V60-((AB 0
txj
:s:0
In ~c.hCo\kelllQ.t S 0," 1-3
RB0
NOods~or en ...0 bo ~ ~txjZ
Bijlage 2.1. VERBINDINGEN HP-GPIO - HOOFDINTERFACE
EDGE CONNECTOR -> SO-ADERIGE KABEL -> EUROCARD-CONNECTORHP NO (pootje) FUNCTIE AANSLUITING
GNDD01SD014D013D012D011D010D009DOOSD007D006DOOSD004D003D002DOOlDOOOdiverse
1 AARDE2 NC3 NC4 Reset Flip Flop van (timing)5 SO ms interrupt EWMC 36 SO ms interrupt EWMC 27 Data Valid (handshake)S SO ms interrupt EWMC 19 10 ms interrupt-lijn
10 datalijn D07 van HP11 datalijn D06 van HP12 datalijn DOS van HP13 datalijn D04 van HP14 datalijn D03 van HP15 datalijn D02 van HP16 datalijn DOl van HP17 datalijn DOO van HPlS tim. 25: niet verbonden
<-
A01A02A03A04AOSA06A07AOSA09AlOAllA12A13A14AlSA16A17
GNDDI1SDI14DI13DI12DI11DI10DI09DIOSDI07DI06DIOSDI04DI03DI02DI01DIOOGND-SAFETYPFLGPSTSEIRSTIOSTIlGNDNC
26272S2930313233343536373S3940414243444546474S4950
NCNCINIT-OK EWMC 3DATA-lijn van EWMC 3Checksum OK EWMC 3SO ms ack. & Data Accepted EWMC 310 ms acknowledge EWMC 3INIT-OK EWMC 2DATA-lijn van EWMC 2Checksum OK EWMC 2SO ms ack. & Data Accepted EWMC 210 ms acknowledge EWMC 2INIT-OK EWMC 1DATA-lijn van EWMC 1Checksum OK EWMC 1SO ms ack. & Data Accepted EWMC 110 ms acknowledge EWMC 1NCNCNCQ-uitgang van Flip-Flop: INT ingangReset-lijn van Watch-Dog-schakeling10 ms interruptlijn (externe klok)NCNC
S7
COlC02C03C04COSC06C07COSC09C10C11C12C13C14C1SC16C17C1SC19C20
HP C21C22C23C24C2S
Bijlage 2.2. VERBINDINGEN HOOFDINTERFACE - INTERFACE 2 EN 3
HOOFDINTERFACE --> 26-aderige flat cable --> INTERFACE 2/3no: functie: no:
123456789
1011121314151617181920
AARDE80 ms interruptlijn naar EWMC 2/3DV-handshake van HP10 ms interruptlijnDatalijn D07 van HPDatalijn D06 van HPDatalijn DOS van HPDatalijn D04 van HPDatalijn D03 van HPDatalijn D02 van HPDatalijn DOl van HPDatalijn DOO van HPINIT-OK EWMC 2/3Datalijn naar HP van EWMC 2/3Checksum OK (NAAR HP)80 ms int. ack & Data Valid van EWMC 2/310 ms interrupt acknowledge van EWMC 2/3Watchdog reset van EWMC 2/35 Volt lijn5 Volt lijn
88
123456789
1011121314151617181920
Bijlage 2.3. VERBINDING EWMC PROCESSORKAART - INTERFACES
8255- J- FUNCTIE: Interface no: HP/EUROC:
0/B-70/B-60/B-50/B-40/B-30/B-20/B-1O/B-O0/C-70/C-60/C-50/C-40/C-30/C-20/C-1O/C-O0/A-70/A-60/A-50/A-40/A-30/A-20/A-1O/A-O1/B-71/B-61/B-51/B-41/B-31/B-21/B-1l/B-O1/C-71/C-61/C-51/C-41/C-31/C-21/C-1l/C-O1/A-71/A-61/A-51/A-41/A-31/A-21/A-1l/A-Oo en 1
1/2 Datalijn (bit 7) positieopnemer1/4 Datalijn (bit 6) positieopnemer1/6 Datalijn (bit 5) positieopnemer1/8 Datalijn (bit 4) positieopnemer1/10 Datalijn (bit 3) positieopnemer1/12 Datalijn (bit 2) positieopnemer1/14 Datalijn (bit 1) positieopnemer1/16 Datalijn (bit 0) positieopnemer1/18 NC1/20 NC1/22 NC1/24 NC1/26 80 ms interruptlijn EWMC 1/2/31/28 Data Valid handshake1/30 Referentieschakelaar1/32 10 ms interruptlijn1/34 Latch lijn naar positieopnemer1/36 Inhibit lijn naar RDC1/38 DAC Latch Enable tijdens GOREF1/40 Load lijn naar positieopnemer1/42 Enable decoder positieopnemer1/44 Decoder Data positieopnemer1/46 Decoder Data positieopnemer1/48 Decoder Data positieopnemer2/2 Datalijn DO-7 van HP2/4 Datalijn DO-6 van HP2/6 Datalijn DO-5 van HP2/8 Datalijn DO-4 van HP2/10 Datalijn DO-3 van HP2/12 Datalijn DO-2 van HP2/14 Datalijn DO-1 van HP2/16 Datalijn DO-O van HP2/18 As 1/2/3 op beginpositie2/20 DATA-lijn van EWMC 1/2/32/22 Checksum OK van EWMC 1/2/32/24 80 ms ack. & Data accepted2/26 10 ms acknowledge as 1/2/32/28 watchdog reset2/30 Enable Output Control DAC-latch2/32 Enable Output Control DAC-latch2/34 DAC-data lijn bit 72/36 DAC-data lijn bit 62/38 DAC-data lijn bit 52/40 DAC-data lijn bit 42/42 DAC-data lijn bit 32/44 DAC-data lijn bit 22/46 DAC-data lijn bit 12/48 DAC-data lijn bit 01,2/oneven Aarde
89
1 A182 A173 A164 A155 A146 A137 A128 All9
10111213 HP8/ 6/ 514 HP715 C2316 HP917 A818 A719 A620 A521 A422 A323 A224 Al
1 HP102 HP113 HP124 HP135 HP146 HP157 HP168 HP179 HP38/33/28
10 HP39/34/2911 HP40/35/3012 HP41/36/3113 HP42/37/321415 A3216 A3117 A2818 A2719 A2620 A2521 A2422 A2323 A2224 A21
HP1 en C2
HOOFDINTERFACE --> EWMC 2/3HOOFDINTERFACE --> EWMC 1
no. flat EWMCcable: 8255-pin no: FUNCTIE:
Bijlage 2.4. VERBINDING NAAR DAC EN VAN POSITIEOPNEMER
DAC- / POSITIEOPNEEMKAART--> INTERFACE -->--> 40 aderige flat cable -->
O/A-O0/A-10/A-20/A-30/A-40/A-50/A-60/A-7
O/B-O0/B-10/B-20/B-30/B-40/B-50/B-60/B-7
0/C-1
l/A-O1/A-11/A-21/A-31/A-41/A-51/A-61/A-7
l/C-O1/C-1
22
12345678
1011121314151617
2324252627282930
2120
9/18
positieopnemerpositieopnemerpositieopnemerpositieopnemerpositieopnemerpositieopnemerpositieopnemerpositieopnemer
Output Control DAC-latchoutput Control DAC-latchlijn
Decoder data positieopnemerDecoder data positieopnemerDecoder data positieopnemerEnable Decoder positieopnemerLoad lijn naar positieopnemerDAC Latch Enable tijdens GOREFInhibit lijn naar positieopnemeLatch lijn naar positieopnemerNCNCDatalijn (bit 0)Datalijn (bit 1)Datalijn (bit 2)Datalijn (bit 3)Datalijn (bit 4)Datalijn (bit 5)Datalijn (bit 6)Datalijn (bit 7)NCNCDAC-datalijn bit 0DAC-datalijn bit 1DAC-datalijn bit 2DAC-datalijn bit 3DAC-datalijn bit 4DAC-datalijn bit 5DAC-datalijn bit 6DAC-datalijn bit 7NeNCEnableEnable5 VoltAardeRef. signaal Res. & RDC (2400 Hz sinus)Referentiesignaal Resolver & RDC (aarde)Referentieschakelaar+ 15 Volt voedingslijn- 15 Volt voedingslijnDAC-outputlijn (naar ingang versterker en inverter)
A- 1A- 2A- 3A- 4A- 5A- 6A- 7A- 8A- 9A-10A-11A-12A-13A-14A-15A-16A-17A-18A-19A-20A-21A-22A-23A-24A-25A-26A-27A-28A-29A-30A-31A-32B/C-1B/C-2C-20C-21C-23C-25C-27C-30
90
Bijlage 2.5. VERBINDING VAN ROBOTCONNECTOR - POSITIEOPNEMER
ROBOTpin:
-> 26 aderige flat cable -> POSITIEOPNEMER
1 Links boven: Zelf aangebrachte ref.schakelaar as 1(na inverter naar pin no. C23)
2 Rechts boven: Zelf aangebrachte referentieschakelaareerste vrijheidsgraad (Aarde)
13 Door ASEA aangebrachte Referentieschakelaar(Na inverter naar pin no. C23)
14 Door ASEA aangebrachte Referentieschakelaar (aarde)15 Tachogenerator (signaal)16 Tachogenerator (aarde)
RDe:
19 Rotorspoel Resolver20 Rotorspoel Resolver22 Statorspoel 1 Resolver23 Statorspoel 1 Resolver24 statorspoel 2 Resolver25 statorspoel 2 Resolver26 Rechts onder (vooraanzicht robotconnector)
91
R-LR-HS4SiS3S2
Bijlage 3.1. UNIX SHELL SCRIPTS
List de huidige directory met informatie over eigenaar, beveiliging en grootte van de file.List de inhoud van de file met de naam die achtercat staat.Laat de inhoud van een file met de naam die erachter staat gepagineerd zien. Na iedere pagina kanmet de spatie naar de volgende pagina gegaan worden. Evt. andere kommando's in more zijn te ziendoor de h toets in te drukken.Change directory.- Niets erachter: Naar de directory van de
gebruiker.- cd / : Naar de root (evt. ook meer erachter) .- cd .. /file : Een directory naar boven en ver-
volgens onder deze directory defile met de naam file.
Print working directorycp <filel> <file2>. Kopieer filel naar file2.mv <fl> <f2>. Move fl to f2 (verander de naam ofplaats een file onder een andere directory).verwijder de file met de naam achter rm.Bij een code-file of binaire file kan de codeoctaal gedisplayd worden. Als dit hexadecimaal moetgebeuren moet er ,-x' achter.Print de inhoud van de file die erachter staat ofals er niets achter staat datgene wat op hetbeeldscherm verschijnt.Met number kan een gedeelte van een file gedisplaydworden. Gebruik number <filenaam> +<eerste regelnummer> #<laatste regelnummer>. Om tevens een gedeelte van een file uit te printen een pipe naarlpr gebruiken: number <filenaam> +no #no I lpr.Make directory met de naam die erachter staat enonder de huidige dir.Remove directory.- rmdir
- rm- od
- mkdir
- lpr
- number
- cd
- pwd- cp- mv
Enkele veel gebruikte commando's (shell scripts) in UNIXzijn:- 11
- more
- cat
92
Bijlage 3.2. COMMANDO'S IN DE EDITOR e
Save de file onder de huidige directory.Verlaat de editor.Help mogelijkheid (evt met commandoerachter) .Geef het regelnummer van de huidigeregel.Verwijder regel rl t/m r2. Alleen d:huidige regel.Verplaats regel(s) rl [t/m r2] achterhuidige regel [r3].Kopieer regel(s) rl [t/m r2] achterhuidige regel [r3]Vervang naaml in de huidige regel doornaam2. Eventueel kan men voor de s (een)regelnummer(s) zetten. De substitutiewordt in een regel slechts 1 keer uitgevoerd. Met een g achter de laatste slashwordt bij een match doorgezocht en evt.gesubstitueerd.Verbindt de huidige en de volgende regel.Regular expression. Zoek vooruit naar eenregel waarin het woord naam voorkomt enals een match gevonden is, maak dan hetregelnummer gelijk aan het regelnummerwaar de match gevonden is.Terug zoeken naar 'naam'.- ?naam?
- j- /naam/
- n
- s/naaml/naam2/
- [rl [ , r2 ] ] d
- rl[,r2] m [r3]
- rl[,r2] t [r3]
In de edit-command mode kunnen de volgende commando'sgegeven worden:- w- q- h[commando]
Een regelnummer bij een command kan een getal z1Jn, leeg(huidige regel), een $ voor de laatste regel of relatiefbv. :- .+2
- .-2- n+m- $-n
2-de regel vanaf huidige regel (. betekent huidigeregel) .Twee regels terug.m regels verder dan n.n regels terug van de laatste regel.
Een regular expression is een expressie tussen 2 slashes of2 vraagtekens. Een regular expression kan bevatten:- <tekst> Gewoon zoeken naar een match op tekst.- A<tekst> Zoeken naar tekst aan het begin van de regel- $ Komt overeen met het einde van een regel.- [ab12] Zoeken naar het karakter a of b of 1 of 2.- * De voorgaande regular expressie 0 of meer
keer herhaald.- \. Een backslash ontdoet het volgende karakter
van een speciale betekenis, dus hier zoekennaar een echte punt.
- /A$/ Een lege regel.- /[0-9][0-9]*/ Zoeken naar een getal.
93
Bijlage 3.3. COMMANDO'S IN DE DEBUGGER deb8085
- MAP [beginadres] [eindadres]
- LOAD [naam programma]
- RUN [startadres]
- HALT
- STEP [adres]
- CON [TRO of TR1] A= [adres]
- TRA [-254 0]
- MEM [beginadres] [eindadres]
- MEM [adres] = hex-getal
- REG- QUIT
94
temt/lp' 'ROM'/'RAM'Verdeling van geheugen naarprototype (p) of emulator(em). Tevens aangeven of geheugengedeelte ROM of RAM is.Laadt het geassembleerdeprogramma in geheugen.Het uitvoeren van het programma dat in het geheugen isopgeslagen.stop het programma, en laatde inhoud van de registerszien.1 Instructie uitvoeren (evt.het adres erbij).Breakpoint zetten op een bepaald adres. Als gestoptwordt, worden de registersgedisplayd. Met alleen CONworden de ingestelde waardenzichtbaar. Ipv. A (adres) ookD (data) mogelijk.Laat de inhoud van het tracegeheugen zien. In het tracegeheugen worden de laatste254 machinecycli van deprocessor opgeslagen.Lees het geheugen uit. Met"di" wordt tevens eendisassemle gemaakt.Verander de inhoud van eenadres.Display inhoud van registers.Verlaat de debugger: terugnaar UNIX
Bijlage 3.4. AANSLUITING VAN PMDS NAAR THE-NET EN DECPRINTER
AANSLUITING PRINTER
DOMESTIC COMPUTER PMDSLP connector (female) :
--> RS-232 --> DEC-printer IIILinkse connector aan achterzijde
1 Protective Ground 12 Transmit Data (TXD) 37 Signal Ground 7
25 Busy Detect -->--> INVERTER --> 19 Secondary Request to Send (SRTS)
Als de schakelaar aan de voorzijde van de printer naar linksgeschakeld is, dan is de printer verbonden met de PMDS. Alsde schakelaar naar rechts is geschakeld, dan is de printerverbonden met het LSI-11-systeem.
INSTELLING PRINTER
Door de toets SET-UP in te houden kan de instelling van deprinter veranderd worden. Als de printer aangesloten wordtop het PMDS-syteem moet de baudrate gelijk zijn aan 9600baud, terwijl SECondary CHANnel in de Restraint mode moetstaan (1). Als de printer aangesloten is op het LSI-11systeem moet een baudrate gebruikt worden van 1200 baud,terwijl de Restraint mode op Speed Control moet staan (0).
SCHEMA INVERTER
IN 19
( v~n CANCJ.IcOl"lnt:ctor I
95
AANSLUITING TERMINAL OF THE-NET
TERM COMP 0 (PMDS) --> RS-232 --> Terminal of THE-netConnector TO of Tl no:
1234568
207
Protective GroundTransmit Data (TXD)Receive Data (RXD)Request to Send (RTS)Clear to Send (CTS)Data Set Ready (DSR)Receive Line Signal Detector (RLSD)Data Terminal Ready (DTR)Signal Ground
---
132
Moeten aanPMDS-zijdeverbondenworden !
7
INSTELLING TERMINALS
De file /etc/ttys:1 c console (instelling van standaard aangesloten terminal)o r ttyOO (terminal aangesloten bij connector TO)o s tty01 (terminal of THE-net: aangesloten bij Tl)
- c/r/s verwijst naar terminal in de file /etc/gettytable- 1 betekent, dat een terminal met gebruiker aangesloten is.- 0 betekent, dat de betreffende poort een I/O lijn is.In de file /etc/gettytable stellen de laatste 2 cijfers debaudrate voor (12=4800 baud, 13=9600 baud). Deze files zijndoor de systeembeheerder (root) te wijzigen.Met het commando /usr/support/kermit clb /dev/tty01 baudrateis het mogelijk om een verbinding te krijgen met het THEnet. Meer uitleg over kermit in de directory/usr/marius/kermit.
96
Bijlage 4.1. GEHEUGEN EN ILO ADRESSEN VAN DE EWMC
OOOO-OFFF: EPROM met monitorprogramma1000-lFFF: EPROM, die programma voor asregelaar bevat.
2400-33FF: Statusgeheugen in emulatorgeheugen van PMDS.
2000-23FF en3400-3FFF: RAM EWMC-processorkaart:
- 3EOO-3E68: variabelen.3EBO-3EDF: FIFO-setpointbuffer.3EE2-3EFF: 3 bytes-variabelen.
-3FDF: stack.3FEO-3FFF: interrupt jump tabIe.
- 3FEC: sprongadres 10 ms int.- 3FF4: sprongadres 80 ms int.
4000 en 4010: USART's (seriele poorten) :- 40xO: data-adres.- 40x1: status- en control-adres.
4020 en 4030: 8255-Parallelle ILO interfaces:- 40xO: poort A.- 40x1: poort B.- 40x2: poort C.- 40x3: besturingsregister.
4040: 8259 ProgrammabIe Interrupt controller:- 4040: Dataregister.- 4041: Interrupt-mask register.
4050:
4060:
8253 ProgrammabIe Interval Timer/Counter:- 4050: timer/counter O.- 4051: timer/counter 1.- 4052: timer/counter 2.- 4053: moderegister.
8279 Keyboard/Display controller.
97
Bijlage 4.2. PROCEDURE-NAMEN MET VERKLARING
Labelnaam,(beginadresprocedure): Section: Functie:
BEGIN INIT
GOREF REFlSTART HFDHPIN SB5ERROR INIT
Aangeroepen vanuitGETDE SB8POFVR SB2
GETPOS SBlCHKPOS SBlBVSETP SB2PREGEL SB7BVMOM SB2BEPENT SB2VREGEL SB3ADD3BA SB8OVERSH SB8ADDSVF SB8MAXVEL SB8STOSTR SB8
Aangeroepen vanuitPOLPNT SB8PUTDE SB8
Begin van programma na reset &Initialisatie van EWMC processorkaart.Ga naar de referentiepositie.10 ms Interruptroutine.80 ms Interruptroutine.Errorprocedure.
10 ms interruptroutine:10 ms setpoint uit buffer halen.Keuze of positieregelaar een trajectvolgt of op positie moet afregelen.Lees positie en sla deze op in NPOS.Controleer op geoorloofde positie.Bepaal snelheidssetpoint.Positieregelaar.Bepaal gefilterde snelheid.Bepaal snelheidsfout.Snelheidsregelaar (bepaalt DAC-input).Absolute positiefout wordt aangepast.Pas max. positieovershoot aan indien nodig.Absolute snelheidsfout aanpassen.Max. snelheidsovershoot aanpassen.Sla regelparameters op in statusgeheugen.
80 ms interruptroutine:Interpoleer het HP-80 ms setpoint.Sla geinterpoleerde 10 ms setpoint op.
INTSPI SB8 Regeling interactief opstàrten metsetpoint.
GETRES REFlDELlSO REFlTEXT SBlDSPPOS SBlDSPSTA SBlDSP3BY SBlDSP2BY SBlBYTECO SBlCASCII SBlINTMAA SBlBTRAJ SBl
HMIND2 SBlSHIFT SB2
Bepaal positie van motor.150 ms vertraging.Textstring op beeldscherm plaatsen.Positie weergeven op beeldscherm.Status weergeven op beeldscherm.3-Bytes variabele weergeven.2-Bytes variabele weergeven.I-Byte variabele weergeven.4 l.s. bits omzetten naar ascii code.Interactieve motor aansturing (demo).DCB = 3 bytes variabele in adres DE
- 3 bytes variabele in adres HL.HL = HL - DE.A = BC DIV 8.
98
HLDIV2HLDIV4VRSUBSHDESHLDEADD8ADD16INVDE2ADD24AHLP24ADDHBYHEXGETSTOIBYST02BYST03BYABSDCBADDBDINRHLD
SB2SB2SB4SB4SB4SB4SB4SB4SB6SB6SB8SB8SB8SB8SB8SB8SB8SB8
HL = HL DIV 2.HL = HL DIV 4.HL = DE * B.CSchuif reg. paar DE 1 bit naar rechts.Schuif reg. paar DE 1 bit naar links.A = A + B in 2-complement.HL = HL + DE.DE = -DE (2-complement)Optellen van 2 24-bits variabelen.Zelfde, maar zonder check op overflow.2 Halve bytes (nibbles) samenvoegen.Controle of ascii-waarde in (O-9,A-F).Sla een byte statusinformatie op.Sla 2 bytes op in statusgeheugen.Sla 3 bytes op in statusgeheugen.Bepaal absolute waarde in reg. DCB.Hoog B met 1 op als decimaal getal.Hoog HL met 1 op als decimaal getal.
99
Bijlage 4.3. VARIABELEN MET BETEKENIS
NAAM: BETEKENIS:
J1(2-16)J1(18-32)J2(2-16)J1(34-48)J2(34-48)J2(18-32)
LijnLijnLijnLijnLijnLijn
4021,4022,4031,4020,4030,4032,
Data van 8255-0 poort B: adresData van 8255-0 poort C: adresData van 8255-1 poort B: adresData van 8255-0 poort A: adresData van 8255-1 poort A: adresData van 8255-1 poort C: adres80 ms HP-verplaatsingssetpointSPTHP DIV 8 (DSPOL1 = (SPTHP DIV 8) + 1)SPTHP MOD 8Aantal vrije plaatsen in setpointbuffer.Adres waar PUTDE geinterpoleerd setpoint inplaatst.Aantal setpoints in setpoint-buffer.Adres waar GETDE setpoint leest.Geinterpoleerd setpoint uitgebreid tot 3 bytes.Positiesetpoint van digitale regelaar.Oude positiesetpoint.Grenswaarde pos. regelaar (traject of afregelen)=0: traject volgen, =1: afregelen op positie.Positie (3 bytes)Oude positie.Ondergrens geoorloofde positieinterval (bit 13-20).Bovengrens geoorloofde positieinterval (bit 13-20).positiefout op tijdstip nT (=SPPNTR - NPOS) .Oude positiefout.PENT * Kp(PENT - PENTMT) * Kd{ (PENT + PENTMT) * Ki } DIV 2PIRES(nT) = DPIRES(nT) + PIRES(nT-T)Snelheidssetpoint (= PPRES + PDRES + PIRES).Snelheid (= NPOS - ~pOS) .Laatste 4 snelheden opgeteld.De gefilterde snelheidsterugkoppeling (DPOS4 DIV 4)2 bytes snelheidsfout (VSETP2 - VMOM4) .Snelheidsfout (1 byte: ENT2 DIV 32).Oude Snelheidsfout.ENT * Kp(ENT - ENTMT) * Kd{ (ENT + ENTMT) * Ki } DIV 2VIRES(nT) = VIRES(nT-T) + DVIRES(nT)Uitgang van digitale regelaar (VPRES+VDRES+VIRES)Input van de DAC (VSRES + 80 hex na aanpassing).Som van absolute positiefout PENT.Maximale waarde van positie NPOS.Maximale waarde van snelheid DPOS.Som van absolute snelheidsfout ENT.Aantal 10 ros samples verstreken (decimale notatie)Samplenummer met maximale positiewaarde.Samplenummer met maximale snelheidswaarde.Adres waar status opgeslagen wordt (2400 - 33FF)
IN1IN2IN3OUT1OUT2OUT3SPTHPDSPOLNOlNSPACENEXTWANITEMSNEXTRATUSSPSPPNTRSPTMTPPGRPPIDNPOSOPOSOGPOSBGPOSPENTPENTMTPPRESPDRESDPIRESPIRESVSETP2DPOSDPOS4VMOM4ENT2ENTENTMTVPRESVDRESDVIRESVIRESVSRESDACBUSPFOUTMAXPOSVMAXSVFOUTNORNOOVSMNOVMAXSTASTA
100
Bijlage 5.1. OPTIMALISATIE VAN DE PI-SNELHEIDSREGELAAR
GEKOZENAs 1:
As 2+3:
REGELPARAMETERSPFAKV = Ba, DECPP = 2 dwz. : Kp = 2.75IFAKV = 28, DECPI = 2 dwz. : Ki = 0.625PFAKV = 70, DECPP = 2 dwz.: Kp = 1. 75IFAKV = 20, DECPI = 2 dwz. : Ki = 0.50
MEETRESULTATEN VAN STAPRESPONSIES MET SNELHEIDSSETPOINT
+ ---l-
• ::>;;;
. -E~-t- ..~- --- ~ -----i
t
PARAMETERS VAN HET GEREGELDE SYSTEEM
AS no.: 1 2 3----------------------------------------------------------Tijdconstante van het geregelde systeem in msOvershoot in %Eindfout in %
lal
60 70 703.510 20 10
BIJLAGE 5.2. OPTIMALISATIE VAN P-POSITIEREGELAAR
GEKOZEN REGELPARAMETERS
As 1As 2 + 3
PFAKP ~ 24, PDECPP = 0PFAKP = 15, PDECPP = 0
dwz.: Kp = 0.141dwz.: Kp = 0.082
De I-faktor, die ingeschakeld wordt als op een positie moetworden afgeregeld, is steeds zo klein mogelijk:
IFAKPP = 1, PDECPI = 0 dwz.: Ki = 0.004
MEETRESULTATEN VAN STAPRESPONSIES BIJ POSITIESETPOINT
'---f'---
:===:-
i==- ----
",","j--- _.'-__ cl_
4-,-: l:=,,t,,"--=-:c~
j:.:~
t
I1I
! I ti I l-
U!
i ii 1
,i
j,! i,
ii !r
I, i1 !,-, i lj!
t T; c.~p SrD~t! h ,I hq. __ !I !. tI! I l J' r1 V ,--;- -~ ~ i f ! -I -- '- ' :
.~ III i 1 'i I
r .~-r i I I ~1 V· 1 -~ l~ 1 I' - i! ; l r 1
- f- I f - r - ~ ,I I I I !
t Motorspo.V\~~q H=-1--- r==:= --- -- - : f)' -, I f -- I - ~
__ _ - ~+-- - i-::--! - - {----- -re - I 1
10 V = ----::----- - - f-~r----~,'V- ;f-; - --=:-- -- - -! 1---~ - - - -: -+r-c----H-- -- h - !
_~ 1 I ---- " -tij1- =t,__ =,-_-:~~_~~-_=,----l :::: L- --- ,--
I, I-J,-r, :::~::~-:;:-'~~-=-I - -- ----
CKARD
:c - _
--,- ..- - -.:::'-\
- --
,- '--
---
f-- - ,1---'I---- ---
'''---+-1-- -: ,,_:- : - -
- --,
- ----I---
-- ----:-
----1---1---
-1---
PARAMETERS VAN HET GEREGELDE SYSTEEM
As no.: 1 2 3-----------------------------------------------------------Tijdconstante van het geregelde systeem in msMaximale overshoot in %Piektijd in msEindfout in %settling time in ms
120 1905.72003.8 4.4
1801.95501.1490
102
t
Bijlage 5.3. OPTIMALISATIE VAN DE PD-POSITIEREGELAAR
GEKOZEN REGELPARAMETERS
As 1 PFAKP = 8, PDECPP = 3 dwz. : Kp = 0.25DFAKP = 1E, PDECPD = 3 dwz. : Kd = 0.938
As 2 PFAKP = C, PDECPP = 3 dwz.: Kp = 0.375DFAKP = 20, PDECPD = 3 dwz. : Kd = 1.00
As 3 PFAKP = 54, PDECPP = 0 dwz. : Kp = 0.328DFAKP = 24, PDECPD = 3 dwz. : Kd = 1.125
Ki zal bij iedere as gelijk zijn aan 0.004 als op eenpositie moet worden afgeregeld.
MEETRESULTATEN VAN STAPRESPONSIES MET POSITIESETPOINT
tV
"c, :-8-~ - d
- _-'-::f-'-c:. _'~~
--~: :_',,'~,+-'I, -~
: -, '1---,'
'ACKARD
, "
1111
PARAMETERS VAN HET GEREGELDE SYSTEEM
As no.: 1 2 3------------------------------------------------------------Tijdconstante van het geregelde systeem in ms 80Maximale overshoot in % 1.2Piektijd in ms 240Eindfout in % 0.4Settling time 330
103
70 704.8 1.1100 1001.8 1.4280 270
Bijlage 6. LISTING C-PROGRAMMA OM INTELHEX-CODE TE GENEREREN
t lncludo <stdio.h>
ruainCarSc,arSv) /* intelhex zet :m file om in intel-hex format code*/int arSc;cha1' *arsv[];
{
FILE *fin,*fout,*fopen();int print;
prwt=O;if (a1'sc<3) I I (arSc>4»
{ printf("? sebruik intelhex <fileinname> <fileoutname> Ct?]\n");e::i t( 1);
-, ,.r,Ir (lfin=fopen(*++arSy,'r"» == NULL )
{ printf("intelnex: can't open Is \n",*arSv);e~<i t ( 1) ;
if «fout=fopen(*++arSv,"w"» == NULL ){ printfC"trc: can't open Is \n",*arSv);
ed t( 1);}f
if (arsc=:::4) {if ( (H+ar9v)[O] -{ if ( (*a1'sv)[l]
pf'int=l ;-, .f', ,
f'
il' (print == 1){printf("intelhexfo1'mat: tussen haakjes het aantal bytes \n");
printfC"':- aantal databytes (1) 1 startadres (2) I data(=OO) ofend(=Ol)record (1) I data I checksum (1) \n");
};
Q~zetproc(fin,fout,print);
fcloSi~(fin);if ( (6r-:::h"'~~'3) I! (arsc==2) ) fclose(fol.JtH
}
104
1*---------------------------------------------------------------------*/!* om~etprac zet :m file ~egenereerd door convpmds om ininLel-he~ format code en plaatst dit vervolgens in fout */
ft Een record in een :m file ziet er als volgt uit:~ b~tes,waarvan de waarde het aantal bytes voorstelt dat nog yolgt1 bste : 00 is start record inhoud onbekend
01 ~eeft aan wat het startadres yan de data is02 geeft aan dat data volgt03 geeft aan dat de laatste record volgt
:3 b':;ltes !lIet nullen2 b~te5' W~drYan de waarde het startadres van de record aangeeftdaL<3oYt,:!';,
cnl::.c'tr·j·!JI~· (fin,. fOIJt)
lrit !.:.:,cl1c2~
i~t b~testotake,close;
'i: il t. ~ (, ( c lose !;:: 1 ){
cl:=3el.c( fill);c:2=setc(fin);bstestotake = (256*cll + c2;c=setclfin); b~testotake--;
jf «(==2),"].<;e i f (c=:=3)
else
, ,i" Y
{mdatarecord(fin,fout,bytestotake); }{close=l; /* laatste record in :m file (geen data) */putintelhexrecord(fin,fout,O,Ox3f,Oxff);
/*3fff:einde ram*/while ( (c=getc(fin» != EOF );
}
{while (bytestotake>O){jetc(fin)ibytestotake--;};
ö,.'J ,
'i Leest een t2ccrd l~ de :m flle: zet de data om 1n lntel-he:: formst en zetdeze data ook wes in dit format
,I, i<1'1
mdatarecurdCfinlfQutlmrecardlenjte)Fli..E Hin'»:'f'J,..:tiirlt ml~e~Qr:jlerl~te;
int i~ d;l~b~tes, bstestcPlace;:'~har 2drr-:lè:.:crlt
105
i ' ,!oû)
'*3 nullen en 2 b~tes 3dres eraf tII*rrleest Slsn. byte varl startadres varl ;m recard#."!tmlnst SlSn, bste 11.*1
{bstestoplace = 16;datab~te5 = d2tab~tes - 16;
Jdr': ~ adrl + tstestotl~l~~
"..
/1 putintelhexrecord */1* plaats een intel-hex record in de outputfilei het format is als vol~t:
dubbele punt (ascii 3a hex)Î geeft besin van record aan.1 b~te, dat het aantal b~tes in het record ~oorstelt
2 bytes waarvan de waarde het startadres van de record voorstelt1 byte: 00 geeft aan dat een datarecord kOlhtJ
01 geeft aan dat het het laatste record in de file isdatab':stes1 b~te dat de checks~m aangeeft (som van record is nul)
De checksum wordt bepaald dcor .alle bytes na de dubbele punt OP tetellen en vervolgens de parity weg te laten. Van deze waarde wordthet 2-complement ~enomen (alle bits seinverteerd en 1 opseteld).
putintelhexrecsrd(fin,foutrdataradrh,adrl)FILE .fin,.fout;int data;cMar' adrh, ."3dr 17
{
:l f':t C 7iril.. chec+' ~IJ~d
~~tb~te(datd~fQutl; checksum=checksum+dataiputb~te(adrhrfcut)i checksum=checksum+adrhi~utb~te(ddrl,fout); checksum=checksum+adrli
106
if (data -- 0)
else
{putbyte(l,fout);checksum=checksum+l;
} I*laatste record in file *1{putbyte(O,fout);while ( (data> 0) U «c=setc(fin» != EOF ) )
{~utbyte(c,fout);
'dah--;checksum =checksum + ei
};
while (checksum > 255)checksum : checksum - 256; /*Sooi carry wes: 8 bits overhouden*1
c = checkSIJl!l7
c = ("c) +H?utbste(c,fout);putc('\n',fout); /* linefeed als afsluitins van intelhex-record */}
/* Deel een byte OP in 2 nibbles: een voor de 4 meest siSnificante bits (hn)en een voor de 4 minst sign. bits (In).De ascii code van de waarde (een he>: Setal O-F) van zo'n nibble wordt toe5evoeSd aan de outputfile fout
*/
putbyte(byte,fout)irlt b'"teiFILE *fout;{
Ijn·~.i.3ned hndn;
hn = (byte » 4) &OxOfip'Jtn ibble (:,n ,fout) ;In = b~ta &OxOf;p~lnibble (ln,fout);}
!* De ascii code van de waarde van een nibble n (4 bits) toevoegen aan deout?IJtfi Ie fOIJt.
*/
putnibbIe(n,fout)int niFILE *fOIJt;,'I.
H:t ;;:;
c = n i- '0' iif Cc (= '9') {?utc(c,fout);}else { c = n -OxOa + 'A';
pute( c ,f01Jt) ;
107