Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> 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: > > <code> > //------------ > 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; > } > </code> > > 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
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB