Interruptbehandlung + PID-Regler Kategorie: Programmierung (von Erich - 19.04.2006 12:14) | ||
| ||
Guten Tag, zu meinem alten Thread hat ja noch keiner was gesagt, deswegen schieb ich gleich noch einen nach ;) man betrachte erstmal meinen - noch unfertigen - Quältext: //------------ thread main //------------ { lcdext.init(); int timBrt0, timBrt1, timBrt2, timPer, RAbstand, RBreite, VWickel, LWickel, Hoehe[3], Hoehesoll, p0i, p1i, p2i, tTor; long timerPuls, timerTor, tA, tAvgl, port0cnt, port1cnt[3], port2cnt[3]; ports.deact(8); ports.deact(9); ports.deact(10); ports.set(0, 1); ports.set(1, 1); ports.set(2, 1); timPer = 100; timBrt0 = 0; timBrt1 = 0; timBrt2 = 50; port0cnt = 0; port1cnt = 0; port2cnt = 0; timerPuls = system.timer(); tAvgl = system.timer(); timerTor = system.timer (); tTor = 1500; tA = 500; // nur, damit mal was als Abtastzeitkonstante drinsteht... Hoehesoll = 500; // dito loop { // verstehe ich nicht - die Zahlen habe ich einfach so mal reingeschrieben, // damit ich keine Fehlermeldungen bekomme system.hook(system.EVENT_P1H0, 1, 1,2); p0i = p0i + 1; system.hook(system.EVENT_P1H1, 1, 1,2); p1i = p1i + 1; system.hook(system.EVENT_P1H2, 1, 1,2); p2i = p2i + 1; wait (system.timer()-timBrt0) == timerPuls; { ports.toggle(0); } wait (system.timer()-timBrt1) == timerPuls; { ports.toggle(1); } wait (system.timer()-timBrt2) == timerPuls; { ports.toggle(2); } wait (system.timer()-timPer) == timerPuls; { ports.toggle(0); ports.toggle(1); ports.toggle(2); timerPuls = system.timer(); } //Steuerung der gebenden Trommel abhängig von derHöhe des Abstandsmessers wait (system.timer()-tA) == tAvgl; { Hoehe[0] = ports.adc(0); p0i = 0; //-------------------------- /* hier Regelalgorithmus für die Kraft (PID) als Basis wird diese digitale �bertragungsfunktion verwendet: v[k] = v[k-2] - a*u[k] + b*u[k-1] + c*u[k-2] wobei a = (R1*R2*C1*C2 + 2*R1*C1*tA + 2*R2*C2*tA)/(2*R0*C2*tA) b = (R1*R2*C1*C2)/(2*R0*C2*tA) c = (4*R1*R2*C1*C2 - 2*R1*C1*tA - 2*R2*C2*tA)/(2*R0*C2*tA) die Schaltung, aus der ich diese Algorithmen per bilinearer/Tustin- Transformation zusammengestöpselt habe, sind auf dem Link ganz unten zu ersehen */ //-------------------------- //Achtung: Reihenfolge Hoehe[2] = Hoehe[1]; Hoehe[1] = Hoehe[0]; tAvgl = system.timer(); } // Abtasten - Encoder der "Zugtrommel". Steuerung der Wickelführung // abhängig von der Faserstärke. Vergleich mit Encoderwert der Wickelführung wait (system.timer()-tTor) == timerTor; { port1cnt[0] = p1i; // port1cnt = port0cnt*x/y ... x ist abhängig von der Faserstärke, // y ist ein noch zu ermittelnder WErt abhängig von der Schneckensteigung port0cnt = p0i; p0i = 0; p1i = 0; //-------------------------- // hier "standard"Regelalgorithmus (PID) //-------------------------- //Achtung: Reihenfolge! port1cnt[2] = port1cnt[1]; port1cnt[1] = port1cnt[0]; timerTor = system.timer(); } // Abtasten des "Selbstbau-Encoders" an der Führungsrolle. // Steuerung der Zugtrommel wait (system.timer()-tTor) == timerTor; { port2cnt[0] = p2i; p2i = 0; //-------------------------- // hier "standard"-Regelalgorithmus (PID) //-------------------------- //Achtung: Reihenfolge! port2cnt[2] = port2cnt[1]; port2cnt[1] = port2cnt[0]; timerTor = system.timer(); } } halt; } hier der Link: http://www.uni-stuttgart.de/ilr/dateien/rt2/ueb/Aufgabe10_doppel.pdf verwendet wird natürlich die Schaltung von Bild 5. Es gilt noch zu beachten, dass die Sache noch nicht fertig und längst nicht erprobt ist, ich mich aber über Tipps zum PID (v.a. von krassos, dem sowas Spa� macht) und zum Interrupt freuen würde zu den von André genannten "fast interrupt"-Geschichten etc. habe ich im Handbuch leider nichts gefunden. Vielen Dank! Erich | ||
Antwort schreiben Antworten: jemand da? (von Erich - 21.04.2006 21:23) hmm.... gibts vielleicht noch ein CC2-Forum im Internet? (von Erich - 24.04.2006 15:53) Re: hmm.... gibts vielleicht noch ein CC2-Forum im Internet? (von Sascha - 24.04.2006 22:02) Re: hmm.... gibts vielleicht noch ein CC2-Forum im Internet? (von Holger - 24.04.2006 22:23) Re: hmm.... gibts vielleicht noch ein CC2-Forum im Internet? (von Erich - 24.04.2006 22:45) Re: hmm.... gibts vielleicht noch ein CC2-Forum im Internet? (von ingo - 30.04.2006 9:46) Re: hmm.... gibts vielleicht noch ein CC2-Forum im Internet? (von Erich - 2.05.2006 9:09) |