TU Wien:Betriebssysteme VO (Puschner)/Prüfung 2008-10-22 - Beispiel 01

Aus VoWi
Zur Navigation springen Zur Suche springen

Mein Lösungsvorschlag:

Init:
initS(schliesser_frei, 1);
initS(flasche_verschlussbereit, 0);
initS(flasche_verschlossen, 0);
initS(wagen1_beladebereit, 3);
initS(wagen2_beladebereit, 2);
initS(wagen1_voll, 0);
initS(wagen2_voll, 0);

Schliesser:
do forever(){
	P(flasche_verschlussbereit);
	close();
	V(flasche_verschlossen);
}

Roboterarm RA1:
do forever(){
	get();
	P(schliesser_frei);
	turn(120);
	V(flasche_verschlussbereit);
	P(flasche_verschlossen);
	turn(120);
	V(schliesser_frei);
	P(wagen1_beladebereit);
	put();
	V(wagen1_voll);
	turn(120);
}

Roboterarm RA2:
do forever(){
	get();
	P(schliesser_frei);
	turn(240);
	V(flasche_verschlussbereit);
	P(flasche_verschlossen);
	turn(240);
	V(schliesser_frei);
	P(wagen2_beladebereit);
	put();
	V(wagen2_voll);
	P(schliesser_frei);
	turn(240);
	V(schliesser_frei);
}

Wagen1:
do forever{
	P(wagen1_voll);
	P(wagen1_voll);
	P(wagen1_voll);
	deliver();
	V(wagen1_beladebereit);
        V(wagen1_beladebereit);
        V(wagen1_beladebereit);
}

Wagen2:
do forever{
	P(wagen2_voll);
	P(wagen2_voll);
	deliver();
	V(wagen2_beladebereit);
        V(wagen2_beladebereit);
}

Edit (18.02.2015): in Wagen1 und Wagen2 muss man das Signal von wagenx_beladebereit mehrmals ausgeführt werden (3 bzw. 2 mal). --> Ausgebessert!