HÅRDVARULABORATION 4-6 i LR1230 System- och reglerteknik

Relevanta dokument
PROJEKTLABORATION 1-3 i LR1230 System- och reglerteknik

PROJKTLABORATION i System- och reglerteknik

Lösningsförslag till tentamen i TSRT19 Reglerteknik Tentamensdatum: Svante Gunnarsson

SIMULINK. Introduktion till. Grunderna...2. Tidskontinuerliga Reglersystem. 6. Uppgift Appendix A. Symboler 14

Lösningar till tentamen i Reglerteknik

TENTAMEN: DEL B Reglerteknik I 5hp

SIMULINK. Grunderna. Introduktion till

Föreläsning 7: Stabilitetsmarginaler. Föreläsning 7. Stabilitet är viktigt! Förra veckan. Stabilitetsmarginaler. Extra fördröjning i loopen?

REGLERTEKNIK. Formelsamling

Massa, densitet och hastighet

Implementering av ett magnetlager MADELEINE YMERSON

Laborationsinstruktion för Elektromagnetiska sensorer

TSRT09 Reglerteori. Sammanfattning av Föreläsning 4. Sammanfattning av Föreläsning 4, forts. Sammanfattning av Föreläsning 4, forts.

Tentamen: Lösningsförslag

Reglerteknik 5. Kapitel 9. Köp bok och övningshäfte på kårbokhandeln. William Sandqvist

Styr- och Reglerteknik för U3/EI2

LAB 4. ORDINÄRA DIFFERENTIALEKVATIONER. 1 Inledning. 2 Eulers metod och Runge-Kuttas metod

ÖVN 15 - DIFFTRANS - DEL2 - SF Nyckelord och innehåll. Inofficiella mål

Lunds Tekniska Högskola Avdelningen för industriell elektroteknik och automation

Lösningar till tentamen i styr- och reglerteknik (Med fet stil!)

Optimering Linjär programmering

Läs i vågläraboken om interferens (sid 59-71), dopplereffekt (sid 81-84), elektromagnetiska vågor (sid ) och dikroism (sid ).

Processbeskrivning Övervakning inom Operation Center

Processbeskrivning Kvalitetsstyrning

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Tentamen i Programmering C, Fri, Kväll,

Webbhandel med Matsäljarna.

Läs i vågläraboken om interferens (sid 59-71), dopplereffekt (sid 81-84), elektromagnetiska vågor (sid ) och dikroism (sid ).

Reglerteknik för D2/E2/Mek2

Så här beställer du varor från Serveras webbutik.

Styr- och Reglerteknik för U3/EI2

Digital signalbehandling Sampling och vikning

SIMULINK. En kort introduktion till. Polplacerad regulator sid 8 Appendix Symboler/block sid 10. Institutionen för Tillämpad Fysik och elektronik

Institutionen för Tillämpad Fysik och elektronik Umeå Universitet BE. Introduktion till verktyget SIMULINK. Grunderna...2

Föreläsning 11 Reglerteknik AK

Föreläsning 11. Reglerteknik AK. c Bo Wahlberg. 8 oktober Avdelningen för reglerteknik Skolan för elektro- och systemteknik

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Kalibrering. Dagens föreläsning. När behöver man inte kalibrera? Varför kalibrera? Ex på kalibrering. Linjär regression (komp 5)

Industriella styrsystem, TSIU06. Föreläsning 2

4. Laplacetransformmetoder

1. Använd Laplacetransformen för att lösa differentialekvationen (5p) y (t) + 3y (t) + 2y(t) = 1, t > 0 y(0) = 1, y (0) = 1

1. Använd Laplacetransformen för att lösa differentialekvationen (5p) y (t) y(t) = sin 2t, t > 0 y(0) = 1

ω L[cos(ωt)](s) = s 2 +ω 2 L[sin(ωt)](s) =

Läran om återkopplade automatiska system och handlar om hur mätningar från givare kan användas för att automatisk göra förändringar i processen.

TDIU01 - Programmering i C++, grundkurs

Informationsteknologi

Figure 1: Blockdiagram. V (s) + G C (s)y ref (s) 1 + G O (s)

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Omtentamen i Programmering C, Fri, Kväll,

Så här beställer du varor från bunkra.se

Teori Se din kursbok under avsnitt PID-reglering, Ziegler-Nichols metod och olinjära system (avsnitt 7.7 i Modern Reglerteknik av Bertil Thomas).

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Grundläggande programmering med C# 7,5 högskolepoäng

Reglerteknik AK Tentamen

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

2. Optimering Linjär programmering

Programmeringsteknik med C och Matlab

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad.

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl 13. Omtentamen i Programmering C, 5p, A1, D1, PA1, Fri,

Processbeskrivning Driftsättning

En översikt av Kap 7. Tillbakablick, återkoppling Informationsteknologi Reglering av vätskenivån i en tank. Framkoppling. Informationsteknologi

Föreläsning 3. Programmering, C och programmeringsmiljö

Instruktion för I/O-Kort, med USB-anslutning.

REGLERTEKNIK Laboration 5

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

tentamensdags och lab 3

Lösningsförslag till tentamen i Reglerteknik (TSRT19)

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

Reglerteknik 7. Kapitel 11. Köp bok och övningshäfte på kårbokhandeln. William Sandqvist

Innehåll. Vad är MATLAB? Grunderna i MATLAB. Informationsteknologi. Informationsteknologi.

En kort text om programmering i C.

Simulering och reglerteknik för kemister

övningstentamen I DYNAMISKA SYSTEM OCH REGLERING

TENTAMEN I TSRT07 INDUSTRIELL REGLERTEKNIK

Laborationsanvisning laboration 2

Introduktion till Matlab

Automationsteknik Implementering av diskret PID-regulator 1(9)

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

För att få ett effektiv driftsätt kan det ibland behövas avancerad styrning.

AB2.9: Heavisides stegfunktion. Diracs deltafunktion

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

Tentamen del 2 i kursen Elinstallation, begränsad behörighet ET

Tentamen OOP

REGLERTEKNIK Laboration 3

MMA132: Laboration 2 Matriser i MATLAB

Introduktion. Torsionspendel

Reglerteknik 7. Kapitel 11. Köp bok och övningshäfte på kårbokhandeln. William Sandqvist

Styr- och Reglerteknik för U3/EI2

Föreläsning 1 & 2 INTRODUKTION

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

Implementering av PID-regulatorer med dator

Tentamen *:58/ID100V Programmering i C Exempel 3

REPETITION (OCH LITE NYTT) AV REGLERTEKNIKEN

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

Beräkningsvetenskap och Matlab. Vad är MATLAB? Vad är MATLAB? Användningsområden. Vad är MATLAB? Grunderna i Matlab. Beräkningsvetenskap == Matlab?

TDIU01 - Programmering i C++, grundkurs

TSIU61: Reglerteknik. Sammanfattning från föreläsning 3 (2/4) ˆ PID-reglering. ˆ Specifikationer. ˆ Sammanfattning av föreläsning 3.

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

TSIU61: Reglerteknik. PID-reglering Specifikationer. Gustaf Hendeby.

Transkript:

Programvara för A/D - D/A - kort Till kortet hör en programvara. Denna betår av ett antal filer vilka du behöver flytta till ditt eget h:\. MÄLARDALENS HÖGSOLA Intitutionen för elektronik HÅRDVARULABORATION 4-6 i LR130 Sytem- och reglerteknik Dea laborationer avluta med att ni ka reglera reella fyikalika proceer. Meningen är att vi nu ka gå från imulering till hårdvaruimplementering. Du ka få träning i att programmera och förtå hur en regulator kan dikretiera. Vi kall reglera nedantående proceer. 1. retproce med överföringfunktionen G ( ) (eller G ( ) ( + 1) omkopplare tyr ordningen på proceen.). Vinkelervo med överföringfunktionen G( ) mätning. Då τ << 1 och << 1 e m 4 ( 1+τ )( 1+ ) e τ m 4 + ( 1) 3 τ kan proceen approximera med ( ). En, där betäm utifrån G. 3. En baneproce med både ett vinkelervo och en approximerad överföringfunktion G ( ), e nedan. I laborationen kommer vi att använda ett A/D-D/A-kort. Nedan en kort bekrivning av detta. A/D - D/A - kort Detta kort är ett intickkort för PC. ortet har 16 analoga ingångar (kanaler, ingle ended), amt analoga utgångar (kanaler). Vi kommer att maximalt använda t analoga ingångar och 1 analog utgång. Alla kanaler finn utdragna till ett plintkort om finn på repektive labbänk. Se bilagan it i denna laborationhandledningen. Titta igenom kelettfilen daq.cpp. Se peciellt följande: Samplingen tyr av en leepfunktion, vilket innebär att vi behöver underöka vilken amplingtiden är vid varje ny omprogrammering (mer kod betyder att leepen måte minka i amma grad). Ob att argumentet i leepfunktion är i milliekunder. I kontantdefinieringen (NUM) betäm hur många ampel ka ta in (d v den betämmer alltå totala exekveringtiden). Programavnittet // Spar Matlabfil, par alla intreanta variabler i en fil med namnet data.m. Detta för att vi i MATLAB kall kunna viualiera våra variabler. ompilering kommer att preentera vid laborationtillfället. Tetning av A/D - D/A kort, amt kalibrering Signalerna in och ut från A/D-D/A kortet finn på de må plintarna vid datorn, analog input rep. analog output. Obervera att input är kanal 0-15 (A/D 0-15 i cpp-programmet) och att output är kanal 1- (D/A 0-1 i cpp-programmet). oppla upp ignalgeneratorn med inu ca V topp till topp och 1 Hz till A/D-15 och Tektronix-ocillokopet till D/A-0. Se till att följande rader finn med i cpp-filen. (Raderna kan placera där vi är anviade att kriva regulatorkod.) yad(15); // Anropar AD-funktionen i daq.cpp DA(y,1); // Lägger ut y på DACen ompilera och kör programmet (tar ca 0 ek). Om ditt ytem fungerar kall du att e inuignalen på ocillokopet. alibrering av kortet måte vi göra mjukvarumäigt då intickkortet i datorn är oåtkomligt. Offet få både på in och ut (gör gärna en papperki). Vi löer detta genom att läa in (A/D) amt kriva ut (D/A) en lågfrekvent fyrkantignal. Använd frekvengeneratorn och fyrkantvåg ca Fil: Reglab1--3 Joop Lundqvit IEl 003-10-07 1 Fil: Reglab1--3 Joop Lundqvit IEl 003-10-07

1Hz och amplitud 1- volt. Genom mätning och användning av MATLAB får vi fram ungefärliga offetignaler. ompenera dea offetignaler mjukvarumäigt i din daq.cpp. (t ex DA(r + offet, 0)). Nu till MATLAB. Ställ dig i rätt katalog, dv där du kapat ditt projekt. Skriv kommandot data och du läer in ett antal vektorer. Gör plot([r u y]) eller plot(t,[r u y]). (tidvektorn t får du med kommandot t(0:length(y)-1)*t ); Ser nu grafen okey ut, å börja då att programmera din regulator. Programmering av regulator Den tiddikreta regulatorn lägg in i kelettfilen. Du er var i filen daq.cpp algoritmen kan lägga Nu behöver du använda PI-algoritmen med bakåträkning på idan 159 i kompendiet. Vad blir tigtiden t r, överlängen M p, invängningtiden t amt det tatika felet e o?. 4. IMC -reglering. (OBS, ätt omkopplaren på :a ordningen proce) Pröva nu PID-algoritmen med bakåträkning med en :a ordningen IMC-regulator. Sätt t 1 ek. Tip, kriv en criptfil i MATLAB om beräknar regulatorparametrarna. r Vad blir nu famarginalen? Blir tigtiden t r korrekt? Få något tatikt fel e o?. P- reglering av vinkelervot. (behåll börignalen r). Obervera att alla nya parametrar och variabler måte initiera. Hur en regulator programmera hittar du i kurkompendiet Procereglering på idorna 156-160. Hur den fungerar viar du med näta uppgift. 1. Experimentbaerad regulatordeign för retproceen. Vi kall reglera kretproceen med en experimentbaerad regulator vilken bekriv i Procereglering på idan 13-133. Obervera att omkopplaren kall tå på 3:de ordningen proce. 1. Självvängningexperiment. Hur tort p kräv jälvvängning? Vilken blir periodtiden T o?. P-reglering. Hur tort p kräv för att få famarginalen o ϕ m 45. Låt nu börignalen vara ett teg (d v den börignal om finn i daq.cpp) och regulatorn det framräknade p. Vad blir tigtiden t r, överlängen M p, invängningtiden t amt det tatika felet e o? Reultatet finn i den loggade filen data.m. Stämmer detta? 3. PI-reglering (enligt Åtröm-Hägglund parameterval). Näta proce att reglera blir banan vinkelervo. Obervera att vi kan e ervot om en integrator. Vi måte fört identifiera den tatika förtärkningen i proceen. Hur gör du det? Gör det! 1. P-reglering Betäm Extra! p i en P-regulator å att du får en bandbredd på ca 0 rad/. Låt börignalen vara ett teg. Vad blir tigtiden t r? Här vill labbaiten e hur ni gjort. Programmera en ramp, vilken ka använda om börvärde, d v låt r gå från t ex till + V. Behåll din P-regulator och underök det k hatighetfelet e 1. Få ett ådant fel? Om, hur kommer vi i å fall tillrätta med det?. PI-reglering Betäm nu o ϕ m 60. p och i via lag-kompenering å att vi får en famarginal på mint o 60, Fil: Reglab1--3 Joop Lundqvit IEl 003-10-07 3 Fil: Reglab1--3 Joop Lundqvit IEl 003-10-07 4

3. Reglering av baneproce. u Regulator Vinkelervo Motor F ( ) ( ) G p ulbaneproceen är ett olinjärt ytem. φ ulbana y r θ Momentekvationen kan då förenkla till d θ F r m g in dt J + r m r m r 5 7 ( φ) r 5 g in( φ) 7 r Vi är nu inte intreerade av vinkelpoitionen θ utan av den aboluta poitionen Ekvationen kan då kriva om på följande ätt: 1 d y 5 g in r dt 7 r d y 5 g in dt 7 ( φ ) ( φ ).. y r θ. θ Om denna ekvation linjäriera kring arbetpunkten φ 0 0, d v horiontalläget, få då med hjälp F m g in φ A F g m g y r θ Nedan ge en härledning av differentialekvationen om bekriver hur an poition y beror av banan vinkelläge φ. Följande beteckningar gäller nedan: φ banan vinkelpoition [rad] θ an vinkelpoition, antalet varv den har rullat [rad]. r radien ho an [m] y r θ an läge på banan [m] F g m g tyngdkraften [N] Följande kraftmomentekvation i punkten A kan tälla upp för an rörele. d ( J r m r) F r + dt θ (vridmomentet), där m J r an tröghetmoment [ kg 5 m φ ] och F m g inφ kraften om ätter an i rörele [N]. φ av MacLaurin-utvecklingen för inu: 3 ( ) d y 5 g φ O φ. dt 7 Den linjärierade ekvationen blir då: d y 5 g φ 7 dt och överföringfunktionen blir G ( ) ( ) Y. φ φ, d v 5 g 7 Av överföringfunktionen er vi att vi har en dubbelintegrator. Om vi integrerar en kraft/acceleration får vi hatigheten, ytterligare en integration ger poitionen. Vinkelervot är nabbare än banedynamiken (e datorövning 4), vilket innebär att approximationen φ ( t) u( t) kan göra. Detta innebär att ( t) u blir vinkelervot referenignal och att utignalen (vinkeln) blir tyrignal för baneproceen. Obervera att vi måte kakadreglera, amt att överföringfunktionen från tyrignal u ( t) till poition ( t) y blir G totl ( ) ( ) Y. U Fil: Reglab1--3 Joop Lundqvit IEl 003-10-07 5 Fil: Reglab1--3 Joop Lundqvit IEl 003-10-07 6

Reglering av banan. 1. P-reglering (obervera kakadreglering!) P-regulator Vinkelervo+ulbana r(t ) + u(t) GP() y(t) F() P Behåll vinkelervot P-regulator. Programmera och provkör banan med en P-regulator. Börja med en låg förtärkning 0. 5, öka på denna gradvi. Vilken typ av ytem får vi?. p. PD-reglering Vi kontruerar nu en PD-regulator (lead-kompenering) enligt kompendiet Procereglering på formen: F ( ) p Td + 1 T + 1 f för att tabiliera banan. Obervera, använd PD-algoritm med bakåträkning Bilaga: Hur man kapar ett projekt i MVC++ 1.) Starta Microoft Viual C++ 6.0.) Menyn File -> New 3.) Dialogflik Project -> Win3 Conole Application 4.) Skriv i location h:\ 5.) Skriv ett namn på projektet i rutan Project name 6.) Tryck O 7.) Välj An empty project 8.) Tryck Finihed 9.) opiera filerna 811PG.dll, 811PG.lib, DLL.h, daq.cpp till katalogen på h:\<projekt namn> (Dea filer kall ligga på L:\IEL\REGLER \REGLAB\) 10.) Lägg till dea filer i projektet genom att välja Project -> Add to Project -> File 11.) Skriv *.* i file name rutan och tryck enter. Markera nu de fyra ovantående filer genom att hålla in CTRL och klicka på filerna. 1.) Tryck O. 13.) lart!! Nedan kelettfilen daq.cpp #include <tdio.h> #include <conio.h> #include <window.h> #include "DLL.h" (Tip, kriv även här en criptfil i MATLAB om beräknar regulatorparametrarna.) Här är de två deignparametrarna önkad kärfrekven ω c och önkad famarginal ϕ m. För att få något vettigt värde på valet av kärfrekven kan vi utgå ifrån proceen egen kärfrekven och prova med värden under ω c och ovanför detta. Teta och pröva igen. #define NUM 000 #define umax 10 #define umin -10 #define BASE 0x0 #define t 8 #define T 0.01 // Styr hur lång tid vi kör programmet // Samplingtid i m // Samplingtid i ek 3. PID-reglering Vi använder PID-regulatorn (lead/lag-kompenering) enligt kompendiet på formen: F ( ) Td + 1 Ti + 1 p T + 1 T för att ockå eliminera kvartående fel. Hur fungerar nu regleringen? Via labbaitenten! För att ha någon törre glädje av att ha reglerat an på banan vill vi att ni doku-menterar de teg ni har gjort för att lycka. Denna dokumentation kan lägga it i den rapport ni gör för Datorövning 4. f i // Här kan du lägga dina regulatorparametrar BOOL mdelay(word cont miliec); double AD(int ch); void DA(double val, int ch); int main(void) // Variabel Deklaration FILE *fp; int i,j 0; double r 0,u 0,y1,y; double rvec[num],uvec[num],yvec[num]; // Initiera ACL81PN kortet W_81_Initial(CARD_1, BASE); Fil: Reglab1--3 Joop Lundqvit IEl 003-10-07 7 Fil: Reglab1--3 Joop Lundqvit IEl 003-10-07 8

// Regler / Styrloop // while(!kbhit()) // Här gäller evighetloop for(i 0;i < NUM; i++) // Inaktivera om evighetloop // Att kapa börvärde, t ex /* Börignal teg */ // j++; // if(j 000) // j 0; // if(j < 500) // r 0; /* Förta 5 ek 0 V */ // ele // r 1; /* en 1 V */ // Hämta data från A/D-omvandlaren y1 AD(15); // A/D kanal 15 y AD(1); // A/D kanal 1 /*****************************************************/ // Här kan din Algoritm implementera /*****************************************************/ // Spara vektorer för Matlab rvec[i] r; uvec[i] u; yvec[i] y1; // Lägg ut data på D/A-omvandlaren DA(y1, 0); // D/A kanal 0 DA(y, 1); // D/A kanal 1 // Fördröjning mdelay(t); // Den omtalade "leep"-funktionen // Ta tangentbordtryckningen för evighetloopen // _getch(); // Sätt DA-omvandlarna till noll DA(0, 0); DA(0, 1); printf("\nalgoritm avlutad\n\n"); _getch(); mdelay(1000); // Spara Matlabfil if((fpfopen("data.m","w"))!null) fprintf(fp,"r [\n"); for (j 0; j < i; j++) fprintf(fp,"%f\n",rvec[j]); fprintf(fp,"];\n y [\n"); for (j 0; j < i; j++) fprintf(fp,"%f\n",yvec[j]); fprintf(fp,"];\n u [\n"); for (j 0; j < i; j++) fprintf(fp,"%f\n",uvec[j]); fprintf(fp,"];\n"); fcloe(fp); return 0; BOOL mdelay(word cont miliec) tatic BOOL binit TRUE; tatic LARGE_INTEGER lifreq; LARGE_INTEGER lireference; LARGE_INTEGER licount; DWORD dwreult; if( binit ) if(!queryperformancefrequency(&lifreq) ) return FALSE; ele binit FALSE; QueryPerformanceCounter(&liReference); while(1) QueryPerformanceCounter(&liCount); if( lireference.highpart licount.highpart ) dwreult licount.lowpart - lireference.lowpart; if( ( dwreult * 1000 / lifreq.lowpart ) > miliec ) return TRUE; ele dwreult (0xffffffff - lireference.lowpart) + licount.lowpart; if( ( dwreult * 1000 / lifreq.lowpart ) > miliec ) return TRUE; return TRUE; double AD(int ch) tatic int ad_data_old 0; int ad_data; W_81_AD_Set_Channel(ch); Fil: Reglab1--3 Joop Lundqvit IEl 003-10-07 9 Fil: Reglab1--3 Joop Lundqvit IEl 003-10-07 10

if(w_81_ad_aquire(&ad_data)! ERR_NoError) printf("a/d error.\n"); exit(0); ad_data (ad_data - ad_data_old < -1900)? ad_data + 048: ad_data; ad_data_old ad_data; return(ad_data - 048) / 04.7; void DA(double val, int ch) double val; val val; if(val < -10) val -10; if(val > 10) val 10; W_81_DA(ch, (unigned int) (048 + 04.7 * val)); Fil: Reglab1--3 Joop Lundqvit IEl 003-10-07 11