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

Thread mehrmals starten Kategorie: Programmierung (von DCTH - 20.04.2012 10:27)
Ich nutze:
C-Control II Station, original OS
Hallo!

Ich muss eine kleine Ablaufsteuerung programmieren.

Insgesamt 14 Ventile sind anzusteuern. Funktionen, welche die enstsprechenden Ausgänge
ansteuern, sind schon erstellt (zB ventil_1_ein() , ventil_1_aus() ).
Wäre mit 0 und 1 übergeben vielleicht schöner gewesen, aber so geht es ja auch.

Jeweils 2 Ventile "arbeiten" zusammen:
ZB wird Ventil 1 für 1000ms bevor Ventil 2 einen kurzen (30ms) Impuls gibt eingeschaltet.

Also:

funktion ablauf_1()
{
thread blas_1
{
blas.stuetz_1_ein();
sleep 1000;
blas.blas_1_ein();
blas.blas_1_aus();
sleep 30;
blas.blas_1_aus();
sleep 500;
}

thread blas_2
{
blas.stuetz_1_ein();
sleep 700;
blas.blas_1_ein();
blas.blas_1_aus();
sleep 30;
blas.blas_1_aus();
sleep 800;
}
}

thread main
{
loop {
if station_io.getkey() == 1 ablauf_1(); //warten auf Taste 1 zum Start von ablauf_1
}
}


Bei drücken der Taste 1 wird also die Funktion ablauf_1 aufgerufen, welche die beiden Threads
zur Ventilsteuerung aufruft.

Nun sollen weitere (zB 2) Abläufe (Funktionen) hinzu kommen, jeweils mit unterschiedlichen Sleep-Zeiten
für jedes Ventil-Paar.

Bei 3 unterschiedlichen Abläufen und 7 Ventil-Paaren wären das also 21 Threads ... übersichtlich ist das
nicht.

Ich würde also gerne die Threads in ein eigenes Modul (also aufrufbar über modul.blas_2) und im
Hauptmodul lediglich meine Funktionen haben, welche die Threads aufrufen und die Sleep-Zeiten über-
tragen.

In etwa so (Wunsch-code):

funktion ablauf_1()
{
run thread blas_1(1000, 500);
run thread blas_2(700, 800);
}

funktion ablauf_2()
{
run thread blas_1(400, 100);
run thread blas_2(300, 2500);
}



thread main
{
loop {
if station_io.getkey() == 1 ablauf_1(); //warten auf Taste 1 zum Start von ablauf_1
if station_io.getkey() == 2 ablauf_2(); //warten auf Taste 2 zum Start von ablauf_2
}
}


So funktioniert das natürlich nicht ... geht das irgendwie anderst?




    Antwort schreiben


Antworten:

Re: Werte in Thread übergeben (von DCTH - 20.04.2012 11:28)
    Re: Werte in Thread übergeben (von nitraM - 23.04.2012 11:01)
        Re: Werte in Thread übergeben (von DCTH - 24.04.2012 10:00)