PROGRAM _INIT RTInfo_0(enable:=1); END_PROGRAM PROGRAM _CYCLIC (* ############################################################################################################# ############################# Stopper Tisch 1 ##################################### ############################################################################################################# *) IF gTisch_1.Cmd.Stopper = KMD_AUSFAHREN THEN gTisch_1.Outputs.Stopper_einfahren := FALSE; gTisch_1.Times.Stopper_AusZeit := TRUE; gTisch_1.Times.Stopper_EinZeit := FALSE; gTisch_1.Cmd.Stopper := KMD_FERTIG; gTisch_1.Status.Stopper := STATUS_BUSY; END_IF IF gTisch_1.Cmd.Stopper = KMD_EINFAHREN THEN gTisch_1.Outputs.Stopper_einfahren := TRUE; gTisch_1.Times.Stopper_AusZeit := FALSE; gTisch_1.Times.Stopper_EinZeit := TRUE; gTisch_1.Cmd.Stopper := KMD_FERTIG; gTisch_1.Status.Stopper := STATUS_BUSY; END_IF (* Status, Zylinderposition ausgeben *) IF (gTisch_1.Inputs.Stopper_eingefahren = TRUE) AND (gTisch_1.Inputs.Stopper_ausgefahren = FALSE) THEN gTisch_1.Status.Stopper := STATUS_EINGEFAHREN; ELSIF (gTisch_1.Inputs.Stopper_eingefahren = FALSE) AND (gTisch_1.Inputs.Stopper_ausgefahren = TRUE) THEN gTisch_1.Status.Stopper := STATUS_AUSGEFAHREN; ELSE gTisch_1.Status.Stopper := STATUS_BUSY; END_IF (* Zeitüberwachung Eingefahren*) IF (gTisch_1.Times.Stopper_EinZeit = TRUE AND gTisch_1.Status.Stopper <> STATUS_EINGEFAHREN) OR (gTisch_1.Times.Stopper_AusZeit = TRUE AND gTisch_1.Status.Stopper <> STATUS_AUSGEFAHREN) THEN gTisch_1.Times.Stopper_ZeitRun := gTisch_1.Times.Stopper_ZeitRun + (RTInfo_0.cycle_time/1000); IF (gTisch_1.Times.Stopper_EinZeit = TRUE AND gTisch_1.Status.Stopper = STATUS_EINGEFAHREN) OR (gTisch_1.Times.Stopper_AusZeit = TRUE AND gTisch_1.Status.Stopper = STATUS_AUSGEFAHREN)THEN (* lPortal_Mittelanschlag_EinZeit := FALSE; lPortal_Mittelanschlag_AusZeit := FALSE; *) gTisch_1.Times.Stopper_ZeitRun := 0; END_IF IF gTisch_1.Times.Stopper_ZeitRun >= 5000 THEN gTisch_1.Status.Stopper := STATUS_ERROR; IF gTisch_1.Times.Stopper_EinZeit = TRUE THEN gError[0] := 1; END_IF IF gTisch_1.Times.Stopper_AusZeit = TRUE THEN gError[1] := 1; END_IF END_IF ELSE gTisch_1.Times.Stopper_ZeitRun := 0; END_IF (* ############################################################################################################# ############################# VorStopper Tisch 1 ##################################### ############################################################################################################# *) IF gTisch_1.Cmd.Vorstopper = KMD_AUSFAHREN THEN gTisch_1.Outputs.Vorstopper_einfahren := FALSE; gTisch_1.Times.Vorstopper_AusZeit := TRUE; gTisch_1.Times.Vorstopper_EinZeit := FALSE; gTisch_1.Cmd.Vorstopper := KMD_FERTIG; gTisch_1.Status.Vorstopper := STATUS_BUSY; END_IF IF gTisch_1.Cmd.Vorstopper = KMD_EINFAHREN THEN gTisch_1.Outputs.Vorstopper_einfahren := TRUE; gTisch_1.Times.Vorstopper_AusZeit := FALSE; gTisch_1.Times.Vorstopper_EinZeit := TRUE; gTisch_1.Cmd.Vorstopper := KMD_FERTIG; gTisch_1.Status.Vorstopper := STATUS_BUSY; END_IF (* Status, Zylinderposition ausgeben *) IF (gTisch_1.Inputs.Vorstopper_eingefahren = TRUE) AND (gTisch_1.Inputs.Vorstopper_ausgefahren = FALSE) THEN gTisch_1.Status.Vorstopper := STATUS_EINGEFAHREN; ELSIF (gTisch_1.Inputs.Vorstopper_eingefahren = FALSE) AND (gTisch_1.Inputs.Vorstopper_ausgefahren = TRUE) THEN gTisch_1.Status.Vorstopper := STATUS_AUSGEFAHREN; ELSE gTisch_1.Status.Vorstopper := STATUS_BUSY; END_IF (* Zeitüberwachung Eingefahren*) IF (gTisch_1.Times.Vorstopper_EinZeit = TRUE AND gTisch_1.Status.Vorstopper <> STATUS_EINGEFAHREN) OR (gTisch_1.Times.Vorstopper_AusZeit = TRUE AND gTisch_1.Status.Vorstopper <> STATUS_AUSGEFAHREN) THEN gTisch_1.Times.Vorstopper_ZeitRun := gTisch_1.Times.Vorstopper_ZeitRun + (RTInfo_0.cycle_time/1000); IF (gTisch_1.Times.Vorstopper_EinZeit = TRUE AND gTisch_1.Status.Vorstopper = STATUS_EINGEFAHREN) OR (gTisch_1.Times.Vorstopper_AusZeit = TRUE AND gTisch_1.Status.Vorstopper = STATUS_AUSGEFAHREN)THEN (* lPortal_Mittelanschlag_EinZeit := FALSE; lPortal_Mittelanschlag_AusZeit := FALSE; *) gTisch_1.Times.Vorstopper_ZeitRun := 0; END_IF IF gTisch_1.Times.Vorstopper_ZeitRun >= 5000 THEN gTisch_1.Status.Vorstopper := STATUS_ERROR; IF gTisch_1.Times.Vorstopper_EinZeit = TRUE THEN gError[0] := 1; END_IF IF gTisch_1.Times.Vorstopper_AusZeit = TRUE THEN gError[1] := 1; END_IF END_IF ELSE gTisch_1.Times.Vorstopper_ZeitRun := 0; END_IF END_PROGRAM PROGRAM _EXIT (* Insert code here *) END_PROGRAM