PROGRAM PRG_Transportband_1 VAR MOT1RUN AT %QX0.0 : BOOL; MOT1DIR AT %QX0.1 : BOOL; BLINKLED AT %QX0.7 : BOOL; START AT %IX0.0 : BOOL; SENSORLINKS AT %IX0.1 : BOOL; SENSORRECHTS AT %IX0.2 : BOOL; END_VAR VAR STATE : INT := 0; TMR_MOTOR : TON; TMR_BLINK : TON; TMR_READY : BOOL := FALSE; TMR_BLINK_ET : TIME; TMR_MOTOR_ET : TIME; END_VAR (* Programm Transportband *) (* LED blinken lassen *) TMR_BLINK(IN:= NOT TMR_BLINK.Q,PT:=T#200ms,Q=>TMR_READY,ET=>TMR_BLINK_ET); IF TMR_READY THEN BLINKLED:=NOT BLINKLED; END_IF; (* State Machine fuer das Transportband *) (* Wenn der START Taster und der Kontakt SensorLinks *) (* betaetigt werden startet das Transportband nach rechts *) (* wenn die rechte Position erreicht ist stoppt das Band *) (* und wartet 5 Sekunden *) (* Dann faehrt es wieder nach links bis SensorLinks betÃĪtigt wird *) CASE STATE OF (* Startbedingung *) 0: IF (START AND SENSORLINKS) THEN STATE:=10; END_IF; (* Rechte Position erreicht *) 10: IF SENSORRECHTS THEN STATE:=20; END_IF; (* 5 Sekunden warten dann nach links *) 20:TMR_MOTOR(IN:= NOT TMR_MOTOR.Q,PT:=T#5S,ET=>TMR_MOTOR_ET); IF TMR_MOTOR.Q THEN STATE:=30; END_IF; (* Motor wieder nach links *) 30: IF SENSORLINKS THEN STATE:=0; END_IF; END_CASE; (* Schalten der Motor Leitungen *) CASE STATE OF 0:MOT1RUN:=FALSE; 10:MOT1RUN:=TRUE; MOT1DIR:=TRUE; 20:MOT1RUN:=FALSE; 30:MOT1RUN:=TRUE; MOT1DIR:=FALSE; END_CASE; END_PROGRAM CONFIGURATION Config0 RESOURCE Res0 ON PLC TASK TaskMain(INTERVAL := T#10ms,PRIORITY := 0); PROGRAM instance0 WITH TaskMain : PRG_Transportband_1; END_RESOURCE END_CONFIGURATION