123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- PROGRAM _INIT
-
- Tisch_2 := 0;
- END_PROGRAM
- PROGRAM _CYCLIC
-
- //Cech-Comment: Schauen, ob auf einen Tstendruck gewartet wird, und eine Lampe als Signal eingeschaltet werden soll (output in jeder Station, ich weiß nicht, ob das am Terminal ein Lämpchen ist oder Ä)
- IF (gTisch_2.Inputs.Vor_Stopper = TRUE AND gTisch_2.Inputs.Stausensor = FALSE AND Tisch_2 = 0) OR (gTisch_2.Inputs.Vor_VorStopper = TRUE AND gTisch_2.Inputs.Vor_Stopper = FALSE AND Tisch_2 = 0) THEN
- gTisch_2.Outputs.Lampe_Start := TRUE;
- ELSE
- gTisch_2.Outputs.Lampe_Start := FALSE;
- END_IF
-
- //Cech-Comment: Wenn die Station generell deaktiviert ist, werden alle STopper eingefahren
- IF gTaster_Tisch_2_aus = TRUE THEN
- gTisch_2.Cmd.Stopper := KMD_EINFAHREN;
- gTisch_2.Cmd.Vorstopper := KMD_EINFAHREN;
- gMerker_RFID_Tisch_2_gelesen := TRUE;
- Tisch_2 := 0;
- END_IF
- CASE Tisch_2 OF
- //Cech-Comment: Mit dem grünen TAster werden entsprechend der Konstellation in der Station die Stopper aus und eingefahren und der RFID-Merker wird geschrieben oder gelöscht
- 0:
- //Cech-Comment: Wenn grüne TAste und ein WST in und auch vor der Station, danach frei und der RFID gelesen wurde, dann WST aus der Station entlasse und RFID-VAriable der Station auf ungelesen stellen
- IF gTisch_2.Inputs.Start = TRUE AND gTisch_2.Inputs.Vor_VorStopper = TRUE AND gTisch_2.Inputs.Vor_Stopper = TRUE AND gTisch_2.Inputs.Stausensor = FALSE AND gTaster_Tisch_2_aus = FALSE (*AND gMerker_RFID_Tisch_2_gelesen = TRUE*) THEN
- gTisch_2.Cmd.Stopper := KMD_EINFAHREN;
- gMerker_RFID_Tisch_2_gelesen := FALSE;
- Tisch_2 := 10;
- // Cech-Comment: Wenn grüner TAster und kein WST vor der Station und WST in der Station und keiner nach der Station und RFID gelesen, dann WST entlassen und RFID-Variable der STation auf ungelesen setzen
- ELSIF gTisch_2.Inputs.Start = TRUE AND gTisch_2.Inputs.Vor_VorStopper = FALSE AND gTisch_2.Inputs.Vor_Stopper = TRUE AND gTisch_2.Inputs.Stausensor = FALSE AND gTaster_Tisch_2_aus = FALSE (*AND gMerker_RFID_Tisch_2_gelesen = TRUE*) THEN
- gTisch_2.Cmd.Stopper := KMD_EINFAHREN;
- gMerker_RFID_Tisch_2_gelesen := FALSE;
- Tisch_2 := 70;
- // Cech-Comment: Wenn grüner TAster und WST vor der Station und kein WST in der Station, dann Vorstopper einfahren
- ELSIF gTisch_2.Inputs.Start = TRUE AND gTisch_2.Inputs.Vor_VorStopper = TRUE AND gTisch_2.Inputs.Vor_Stopper = FALSE AND gTaster_Tisch_2_aus = FALSE THEN
- gTisch_2.Cmd.Vorstopper := KMD_EINFAHREN;
- Tisch_2 := 110;
- // Cech-Comment: Wenn Station aktiv und beide Stopper vor der Station und in der Station drinnen, dann beide Stopper ausfahren und Prozess mit "0" wieder von vorne beginnen
- ELSIF gTaster_Tisch_2_aus = FALSE AND gTisch_2.Inputs.Stopper_eingefahren = TRUE AND gTisch_2.Inputs.Vorstopper_eingefahren = TRUE THEN
- gTisch_2.Cmd.Stopper := KMD_AUSFAHREN;
- gTisch_2.Cmd.Vorstopper := KMD_AUSFAHREN;
- Tisch_2 := 0;
- END_IF
-
- // Cech-Comment: Im Block bis exclusive 70 wird ein neuer WST in die Station eingefahren, wenn ein WST die Station verlassen hat und ein anderer beim Vorstopper wartet
- 10: //Cech-Comment: Wenn der WST den Sensor NAchstopper überfahren hat, dann ...
- IF gTisch_2.Inputs.Nach_Stopper = TRUE THEN
- Tisch_2 := 20;
- END_IF
-
- 20: //Cech-Comment: WEnn der WST den Stopper verlassen hat, wird der Stopper ausgefahren und der Vorstopper freigegeben
- IF gTisch_2.Inputs.Nach_Stopper = FALSE THEN
- gTisch_2.Cmd.Stopper := KMD_AUSFAHREN;
- gTisch_2.Cmd.Vorstopper := KMD_EINFAHREN;
- Tisch_2 := 30;
- END_IF
- 30: //WST hat den Vorstopper passiert
- IF gTisch_2.Inputs.Nach_Vorstopper = TRUE THEN
- Tisch_2 := 40;
- END_IF
- 40: //und der Vorstopper wird wieder ausgefahren
- IF gTisch_2.Inputs.Nach_Vorstopper = FALSE THEN
- gTisch_2.Cmd.Vorstopper := KMD_AUSFAHREN;
- Tisch_2 := 50;
- END_IF
- 50: //Prozess wartet, bis der Stausensor hinter der STation anschlägt
- IF gTisch_2.Inputs.Stausensor = TRUE THEN
- Tisch_2 := 60;
- END_IF
- 60: //... und setzt den Prozess wieder auf "0", dann beginnt er wieder oben
- IF gTisch_2.Status.Vorstopper = STATUS_AUSGEFAHREN AND gTisch_2.Status.Stopper = STATUS_AUSGEFAHREN THEN
- Tisch_2 := 0;
- END_IF
- //Cech-Comment: Im Block bis exclusive 110: Prozess, wenn der WST aus der Station entlassen wurde und keiner beim Vortsopper wartet
- 70: //Nachstopper wird überfahren
- IF gTisch_2.Inputs.Nach_Stopper = TRUE THEN
- Tisch_2 := 80;
- END_IF
- 80: //NAchstopper wieder frei --> Stopper wieder ausfahren
- IF gTisch_2.Inputs.Nach_Stopper = FALSE THEN
- gTisch_2.Cmd.Stopper := KMD_AUSFAHREN;
- Tisch_2 := 90;
- END_IF
- 90: //Warten, bis der Stausensor erreicht ist
- IF gTisch_2.Inputs.Stausensor = TRUE THEN
- Tisch_2 := 100;
- END_IF
- 100: // und dann den Prozess wieder auf "0" stellen
- IF gTisch_2.Status.Stopper = STATUS_AUSGEFAHREN THEN
- Tisch_2 := 0;
- END_IF
-
- // Cech-Comment: Prozess wenn ein WST beim Vorstopper angekommen und Vorstopper eingefahren wurde, und in der Station aber kein WST drinnen steht
- 110: //Cech-Comment: WST hat Vorstopper passiert
- IF gTisch_2.Inputs.Nach_Vorstopper = TRUE THEN
- Tisch_2 := 120;
- END_IF
- 120: //Cech-Comment: Vorstopper wird wieder ausgefahren
- IF gTisch_2.Inputs.Nach_Vorstopper = FALSE THEN
- gTisch_2.Cmd.Vorstopper := KMD_AUSFAHREN;
- Tisch_2 := 130;
- END_IF
- 130: //Cech-Comment: Wenn alles stabil ist, denn wird der Prozess mit "0" von vorne begonnen
- IF gTisch_2.Inputs.Vor_Stopper = TRUE AND gTisch_2.Status.Vorstopper = STATUS_AUSGEFAHREN THEN
- Tisch_2 := 0;
- END_IF
- END_CASE
- END_PROGRAM
- PROGRAM _EXIT
- (* Insert code here *)
-
- END_PROGRAM
|