Beschrijving bij de tweedejaarscasus
Meten en Regelen
M.J.G. van de Molengraft R.J.E. Merry
26 januari 2004
http://www.dct.tue.nl
Het meten aan en regelen van een printerkop
De printer Bij het printen met een inkjet-printer wordt de inkt op het papier gespoten. Om een hoge resolutie te krijgen is het van belang dat de inkt op de juiste plaats op het papier wordt gespoten. Het is van belang dat de printerkop gedurende de tijd dat deze zich binnen de marges van het papier bevindt met constante snelheid beweegt. Ga zelf na waarom het positioneren van een inktdruppel op het papier vertaald kan worden in een doelstelling waarbij de snelheid van de printerkop constant moet zijn. Het versnellen en vertragen dient buiten de marges van het papier te gebeuren. Voor de casus wordt een HP printer gebruikt.
Figuur 1: De printer De printerkop wordt door een gelijkstroommotor aangedreven via een riemoverbrenging. De positie van de printerkop wordt gemeten met behulp van een lineaire incrementele encoder. De encoder-sensor is in de printerkop gemonteerd.
1
Met het TUeDACS-systeem is het mogelijk om metingen aan de opstelling te verrichten en tevens via het notebook de printer aan te sturen.
Doel van de casus Het doel van de casus wordt als volgt geformuleerd: Ontwerp en beproef een regelaar om de printerkop, die langs een rechte lijn heen en weer kan bewegen, met een voorgeschreven snelheid te verplaatsen.
Benodigdheden Software: • Matlab6p1 (R12.1) met Simulink en Real-Time Workshop • Wintarget (versie 3.0 TUeDACS edition voor Win2k/XP) • Simulink model voor de aansturing (PrinterBox software) • Referentie generator (Ref3) Hardware: • HP printer • TUeDACS/1 QAD module: interface tussen computer en printer met PCMCIA-kaart • versterker • kabels De software en informatie over de TUeDACS zijn te vinden op de internetpagina van de casus: www.dct.tue.nl, selecteer ‘Courses’ en ‘Casus meten en regelen’. Op deze pagina vind je verwijzingen naar de Wintarget software, een korte Wintarget tutorial, de PrinterBox software met voorbeeld Simulink-model en de referentiegenerator. Met de referentiegenerator kunnen snel en eenvoudig 3e graads referentie-trajectories worden gemaakt. De complete experimenteer-unit, bestaande uit 1 TUeDACS, 1 versterker en 1 printer, is te lenen in SEL3.
Installatie Voor een goede werking van de opstelling dient eerst de benodigde software ge¨ınstalleerd te worden alvorens de hardware aangesloten wordt. Om met het TUeDACS systeem te kunnen werken is het vereist dat Matlab R12.1 ge¨ınstalleerd is, inclusief Simulink en Real-Time Workshop (RTW). Hieronder wordt stap voor stap de installatieprocedure voor de Wintarget software voor Matlab R12.1 en Win2K/XP beschreven. Wintarget is een real-time target voor Real Time Workshop. Met Wintarget kan een Simulink model worden vertaald in een RealTime-Applicatie (RTA). De volgende stappen dienen gevolgd te worden voor een correcte installatie van de Wintarget software: 2
1. De¨ınstalleer eerdere versies van de TUeDACS driver software, van Wintarget en van QADScope. Maak de work-folder onder c:\matlab6p1 leeg. 2. Start de internetbrowser op en ga naar de internetpagina van de casus. Volg de verwijzing naar de Wintarget pagina. 3. Open de TUeDACS driver versie 3 setup en volg de aanwijzingen op het scherm. Stop nu de TUeDACS PCMCIA-kaart in het notebook en voer de handmatige update van de driver uit zoals beschreven op de Wintargetpagina. 4. Open vervolgens het Wintarget 3.0 setup bestand en volg de aanwijzingen op het scherm. Zorg ervoor dat als installatie-folder c:\matlab6p1 wordt gekozen (aannemend dat Matlab daar is ge¨ınstalleerd!). 5. Op de website staat ook het programma QADScope. In verband met de veilige bediening van de printer is het echter niet toegestaan het programma QADScope te gebruiken in combinatie met de printer. Het aansturen van de printer via QADScope in een open-loop situatie zou snel tot crashes kunnen leiden. Alle experimenten kunnen in Simulink worden ontworpen. Na het installeren van Wintarget kan de rest van de benodigde software voor het doen van experimenten ge¨ınstalleerd worden. 1. Installeer de PrinterBox software via PrinterBoxSetup.exe Na installatie bevat de PrinterBox-folder o.a. het simulink-model printer01.mdl. Dit bestand kan als uitgangspunt worden gebruikt voor de zelf te ontwerpen experimenten. De bestanden met extensie .c en .h mogen onder geen beding gewijzigd worden, omdat dit de veilige aansturing van de printer in gevaar kan brengen. 2. Om de referentie generator te kunnen gebruiken moet het bestand SetupRef3.exe uitgevoerd worden. Na installatie hiervan bevat de folder c:\ref3test het voorbeeldmodel test.mdl. Het Ref3-blok dat hierin gebruikt wordt kan in het printer-experiment worden gebruikt. Hiertoe moet tevens de bestanden ref3.c en r3gbak.mat in de ref3test-folder handmatig naar de PrinterBox-folder worden gecopi¨eerd. De kabels van de hardware dienen bevestigd te worden zoals in tabel 1 staat aangegeven. Verder dienen de versterker en de TUeDACS van voedingskabels Printer motor encoder end switch
Versterker LOAD
0-2.5V IN
TUeDACS/1 QAD
Notebook
QCNT0 DIGITAL I/O DAC0 SERIAL HIGHWAY
PCMCIA slot
Tabel 1: Aansluitingen hardware 3
voorzien te worden. Let op: schakel NOOIT de versterker in voordat de DAC0uitgang door de Wintarget software in een gedefini¨eerde toestand is gebracht; een crash van de printer kan het gevolg zijn.
Gebruik Open Matlab en ga naar de eerder PrinterBox folder. Open het voorbeeld simulink-model via het commando >> printer01. De volgende punten zijn hierbij van belang: • Het simulink-model bevat het Printer Interface Block (zie figuur 2). De ingang van dit blok is de motorspanning in V, de eerste uitgang is de waarde van de encoder counter, de tweede uitgang geeft de status van de printer aan en de derde uitgang geeft een tijdsignaal in s zodra de initialisatie van de printer is voltooid. De gebruiker van de printer krijgt pas toegang tot de printer na de initialisatie (status=3). Het tijdsignaal kan worden gebruikt om het subsysteem met de zelf ontworpen aansturing te triggeren (zie het blok Stuursignaal als voorbeeld). De printer-software bevat een beveiligingslaag om crashes bij instabiele regelaars te voorkomen. De status wordt dan 4 en de gebruiker verliest toegang tot de printer. • Indien gewenst kun je een subsystem maken. Selecteer hiervoor de elementen die in het subsystem moeten komen, kies vervolgens in het menu Edit de optie Create_subsystem. Door het maken van subsystems kan de schermindeling overzichtelijker gemaakt worden. • De belangrijkste instelmogelijkheden vind je in het menu Simulation, submenu Simulation parameters. Kies dan de tab Solver. Hier kun je de Stop time veranderen. Verander de andere instellingen niet. • Een signaal kan bewaard of bezichtigd worden door toevoeging van een element uit de Sinks groep van de Simulink Library Browser. Het opslaan van een signaal voor latere analyse kan ook via z.g. out-ports (zie printer01.mdl). Als het experiment is afgelopen, worden de betreffende signalen opgeslagen in een mat-file met dezelfde naam als de RTA (dus b.v. printer01.mat). Om een experiment te kunnen uitvoeren, moet het Simulink model eerst worden gecompileerd met behulp van RTW om er een RTA van te maken. Het compileren kost enige tijd en kan in het Matlab Command window worden gevolgd. Vervolgens wordt met behulp van Wintarget de RTA aan de QAD’s gekoppeld. De build-procedure en het starten van het experiment wordt hierna beschreven.
Experimenten Het Simulink model (zie figuur 2) voor de aansturing van de robot bevat het Printer Interface Block, dat zorgt voor communicatie met de printer. De ingang van het blok is de spanning naar de motor in V en de eerste uitgang van het 4
blok geeft de getelde encodercounts. Na initialisatie staat de teller op 0.
Figuur 2: Simulink voorbeeldmodel voor experimenten Het builden van de real-time code en het opstarten van het experiment kan in de volgende stappen gebeuren: • Build de real-time code door eenmaal op Ctrl-B te drukken. • Activeer het programma door in het Matlab-window te tikken: >> wt_startup(‘filenaam -w’). • Druk op start in het nu verschenen Wintarget Panel of press ENTER. • Ga naar het Simulink window en druk daar op het symbool naast External. Er wordt nu een connectie tussen het real-time programma en het Simulink window gelegd. • Druk op het play-symbool links naast het vorige symbool om het experiment te starten. • Het experiment kan gestopt worden door op het stop-symbool naast het start-symbool te stoppen, anders stopt het experiment aan het eind van de ingestelde tijd. De hierboven beschreven werkwijze heeft een belangrijk nadeel. De z.g. external mode van Simulink legt een zware belasting op de processor en kan leiden tot een slechte real-time performance van het notebook. In dat geval is het beter om de RTA als stand-alone programma uit te voeren door de optie -w weg te laten. De RTA wacht nu niet op een verbinding met Simulink en signalen kunnen alleen achteraf worden geanalyseerd (via registratie in bestand). Parameters kunnen dan ook niet tijdens het experiment worden veranderd. Referentie generator Voor het ontwerpen van setpoint trajectories is een referentie generator (Ref3) aangeleverd. Met deze generator is het mogelijk om derdegraads trajectories te 5
Figuur 3: Referentie generator ontwerpen. De folder c:\reftest bevat na installatie een bestand test.mdl. Dit bestand bevat het Ref3-blok. Dit blok heeft drie uitgangen: de positie, snelheid en versnelling van de ontworpen trajectorie als functie van de tijd. Het blok kan gecopi¨eerd worden naar een ander simulink model, zoals bijvoorbeeld printer01.mdl, om de trajectorie tijdens het experimenteren te gebruiken. Het ontwerpen van een trajectorie kan in de volgende stappen: • Door op het Ref3-blok dubbel te klikken opent een scherm waarin de positie van de ontworpen trajectorie als functie van de tijd staat weergegeven, zie figuur 3. • Een trajectorie met een constante snelheid kan worden gemaakt met behulp van de knop jogmode. Na het klikken op deze knop verschijnt een scherm waarin de snelheid v, de begintijd t0 en de beginpositie x0 kunnen worden gedefini¨eerd. • Een andere, nieuwe trajectorie kan worden ontworpen door op de knop new en vervolgens add te klikken. In het nu verschenen scherm kan door het specificeren van een begintijd t0 , een beginpositie x0 , een eindpositie xe , een snelheid v, een versnelling a en een ruk jerk een gedeelte van de trajectorie ontworpen worden. Door accept te klikken verschijnt het vorige scherm weer, alleen nu met de ontworpen trajectorie. • De trajectorie kan aangevuld worden met andere stukken met behulp van de knop add. • Ontworpen trajectories kunnen bewaard en geladen worden met de knoppen save en load. • Door het hokje repeat aan te vinken wordt de ontworpen trajectorie 6
herhaald. Let er dan wel op dat de begin- en eindpositie van de trajectorie overeen komen om stappen in de trajectorie te voorkomen. • Door op accept te klikken wordt de trajectorie (tijdelijk) bewaard en kan deze gebruikt worden voor experimenten. • Bij het openen van het eerste scherm wordt de laatst ontworpen trajectorie getoond in de figuur. Wanneer een nieuwe trajectorie wordt ontworpen komt deze in de figuur, de oude wordt verwijderd en gaat verloren, tenzij deze met de knop save bewaard is. • Voor de eerste keer builden moet altijd eerst een trajectorie geopend en accept gekozen worden.
Andere informatie Hieronder volgen nog enkele opmerkingen die nuttig kunnen zijn bij het oplossen van de casus: • De werk-range voor motorcommando’s is -2.5 - +2.5 V, dus bipolair, waarden worden automatisch begrensd. Het label op de versterker klopt dus niet. • Registratie van signalen voor verwerking voor Matlab kan door middel van Sinks zoals To Workspace, dubbelklik erop om de instellingen te veranderen, kies een naam en bij voorkeur Array voor Save format. • Registratie van signalen gebeurt door een sink te verbinden met een pijl komende van het gewenste signaal, aftakkingen maken kan met behulp van de rechtermuisknop. • De klok registreert een tijdvector t. • Als je een idee wilt krijgen van het systeemgedrag van het ongeregelde systeem, kies dan ´e´en of meer geschikte stuursignalen voor de motor en registreer de resulterende uitgang. – Met een sinusvormige ingang (en lineair systeemgedrag) kan een punt van het Bodediagram worden bepaald. Met een aantal van dergelijke ingangen kan dus een compleet diagram worden verkregen. – Eenvoudige ingangen (bijvoorbeeld even constant, daarna nul) kunnen ook relevante informatie leveren. Kijk voor meer informatie over systeemidentificatie eens in het boek: – Feedback Control of Dynamic Systems, Franklin, Powell • Houd rekening met extra faseverlies in de open-loop gain van de ordegrootte van ωT radialen, met sample tijd T in s gelijk aan de Fixed step size uit de simulatie parameters en ω de frequentie [rad/s]. Opvoeren van de open-loop gain resulteert op den duur dus altijd in een instabiel gedrag. • Gebruik dezelfde Fixed step size bij zowel het oplossen van DV’s met discontinu¨ıteiten als tijdens de experimenten. • Opmerking voor Norton Antivirus gebruikers: schakel de virus controle uit, omdat dit in conflict kan komen met de build procedure van Matlab. 7
• Tijdens het uitvoeren van een experiment dient het notebook zo kaal mogelijk te zijn: sluit alle niet-relevante programma’s af inclusief achtergrondprocessen zoals scanners, monitorprogramma’s, cd-brandsoftware etc. Schakel zonodig ook hardware drivers uit voor devices die een hoge interruptactiviteit laten zien, b.v. netwerkadapters, software-modems, geluidskaarten etc. Dit kan via Start, Control Panel, System, Hardware, Device Manager. Ga op de betreffende device staan en klik met de rechtermuisknop, kies Disable. Na de experimenten kan de device via Enable weer worden ingeschakeld. Bij een Fixed step size van 0.001 s (1 kHz) mogen nog geen interrupts gemist worden (zonder external mode).
8