Für dieses Forum muß Javascript im Browser aktiviert werden!
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 ! > > > Ach schöner Mist ... irgendwie war noch der falsche Titel drin. > > > > > > Wie dem auch sei, ich habe vll eine Lösung: > > > > > > In dem Modul wo sich auch die Threads befinden deklariere ich meine Variablen (int sleep1_1, sleep1_2;) > > > In meinem Thread steht somit "sleep sleep1_1;" > > > > > > In meinem Hauptmodul schreibe ich in meine Funktion bevor der Thread gestartet wird "modul.sleep1_1 = 1000;" > > > > > > Scheint soweit zu klappen. > > > > Hallo DCTH, > > sorry aber aus deinen beiden Posting's werde ich nicht schlau... > > Vielleicht beschreibst du dein Problem noch einmal anders.. > > > > > > nitraM > > Habe ja schon eine Lösung gefunden, aber ich versuchs nochmal zu beschreiben, der vollständigkeit wegen für andere Benutzer: > > 1. Ich benötige eine einfache Ablaufsteuerung: Es sollen 7 baugleiche Geräte à 2 Ventile (also 14) an die Ausgänge der Station > angeschlossen werden. > Eins der beiden Ventile an einem Gerät wird nur für 30ms "immer mal wieder" geöffnet. > Das zweite Ventil wird für 500-1000ms vor dem ersten Ventil geöffnet, > schließt dann aber sofort (es sind NIE beide Ventile an einem Gerät gleichzeitig geöffnet). > 2. Alle Geräte arbeiten nicht synchron zueinander ... es kann also sein, dass Gerät 1 alle 5sec den unter 1 beschriebenen Vorgang > durchführt, Gerät 2 alle zwei sec, Gerät .... usw. > 3. Die Zeiten zwischen den Geräten sind ebenfalls wichtig. Also Gerät 2 soll immer zB 1,4sec nach Gerät 1 seinen Vorgang starten. > > Meine erste Lösung war also eine reines Ablaufprogramm wo alle 14 Ventile nach entsprechender Zeit (sleep) angesteuert wurde. > Dies funktioniert, ist auch relativ einfach, aber nicht schön und sehr unvariabel (will man die Takt-Zeit für nur ein Gerät ändern, > muss man andere Zeiten anpassen.) > Hier ein Beispiel: > blas.stuetz_x_ein/aus() - öffnet/schließt Ventil 1 an Gerät x > blas.blas_x_ein/aus() - öffnet/schließt Ventil 2 an Gerät x > Jedes Gerät öffnet Ventil 2 alle 2,8sec für eine Dauer von 30ms. Ventil 1 öffnet 1s bevor Ventil 2 öffnet. > Alle 0,4sec (2,8sec geteilt durch 7 Geräte) wird ein Ventil 2 geöffnet. > > <code>//////////////ABLAUF 3////////////// > function ablauf_3() //Ablauf: 1-2-3-4-5-6-7 > { > for i = 1...5 > { > blas.stuetz_1_ein(); > blas.stuetz_2_ein(); > blas.stuetz_3_ein(); > sleep 200; > blas.blas_1_ein(); > sleep 30; > blas.blas_1_aus(); > sleep 170; > blas.stuetz_4_ein(); > sleep 200; > blas.blas_2_ein(); > sleep 30; > blas.blas_2_aus(); > sleep 170; > blas.stuetz_5_ein(); > sleep 200; > blas.blas_3_ein(); > sleep 30; > blas.blas_3_aus(); > sleep 170; > blas.stuetz_6_ein(); > sleep 200; > blas.blas_4_ein(); > sleep 30; > blas.blas_4_aus(); > sleep 170; > blas.stuetz_7_ein(); > sleep 200; > blas.blas_5_ein(); > sleep 30; > blas.blas_5_aus(); > sleep 170; > blas.stuetz_1_ein(); > sleep 200; > blas.blas_6_ein(); > sleep 30; > blas.blas_6_aus(); > sleep 170; > blas.stuetz_2_ein(); > sleep 200; > blas.blas_7_ein(); > sleep 30; > blas.blas_7_aus(); > sleep 170; > } > blas.stuetz_aus(); > blas.blas_aus(); > }</code> > > Eine schönere Lösung wäre also jedem Gerät einen eigenen Thread zuweisen, > so dass ich die Zeiten pro Gerät einfach ändern kann. > > Also habe ich nun 7 Threads erstellt und diese in ein eigenes Modul gesteckt. > <code> > thread blas_1 > { > blas.stuetz_1_ein(); > sleep s1_1; > blas.blas_1_ein(); > blas.stuetz_1_aus(); > sleep 30; > blas.blas_1_aus(); > sleep s1_2-30; > }</code> > > sleep s1_1 und s1_2 sind die Zeiten um die Taktrate eines Gerätes zu beeinflussen. Die sleep 30 sind fest vorgegeben. > Und damit ich nicht in den Modulen nach den Zeiten suchen muss und auch, dass ich einfach in meinem Hauptmodul > mehrere unterschiedliche > Abläufe/Taktraten vorbereiten kann, wollte ich die Zeiten s1_1, s1_2 in mein Modul verlinkt/übertragen haben: > > Dies macht genau das selbe wie das Programm oben, allerdings sind die Zeiten viel ersichtlicher und ich kann jedes > Geräte schneller/langsamer > laufen lassen, ohne mir Gedanken um die anderen Zeiten machen zu müssen. > <code> > //////////////ABLAUF 7////////////// > function ablauf_7() > { > blas.s1_1 = 500; > blas.s1_2 = 2300; > blas.s2_1 = 500; > blas.s2_2 = 2300; > blas.s3_1 = 500; > blas.s3_2 = 2300; > blas.s4_1 = 500; > blas.s4_2 = 2300; > blas.s5_1 = 500; > blas.s5_2 = 2300; > blas.s6_1 = 500; > blas.s6_2 = 2300; > blas.s7_1 = 500; > blas.s7_2 = 2300; > > sleep 0; > run blas.blas_1; > sleep 400; > run blas.blas_2; > sleep 400; > run blas.blas_3; > sleep 400; > run blas.blas_4; > sleep 400; > run blas.blas_5; > sleep 400; > run blas.blas_6; > sleep 400; > run blas.blas_7; > }</code> > > > ps: Das ist ja schrecklich mit dem Forum und den geforderten Zeilenumbrüchen ... geht sowas nicht inzwischen automatisch? > Läuft das Forum auf ner C-Control? ^^