Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CASE #eAutomatic OF
- #eInitState: // Statement section case #eInitState
- #q_ArmIn := 1;
- #q_ArmOut := 0;
- #q_Error := 0;
- #q_ErrorState := 0;
- #eErrorState := 0;
- IF #ePackageCount > 0 THEN
- #eAutomatic := #eConveyorOn;
- ELSIF #ePackageCount < 0 THEN
- #ePackageCount := 0;
- ELSE
- #eAutomatic := #eConveyorOff;
- END_IF
- ;
- #eConveyorOff: // Statement section case #eConveyorOff
- IF #Blink THEN
- #eTimer(IN := NOT #eTimer.Q,
- PT := T#1000MS);
- IF #eTimer.Q THEN
- #Blink := 0;
- #q_ConveyerFront := #Blink;
- #q_ConveyerBack := #Blink;
- END_IF;
- ELSIF NOT #i_ConveyerInSensor AND #SensorOnOld THEN
- #SensorOn := 1;
- #SensorOnOld := 0;
- #eAutomatic := #eConveyorOn;
- ELSIF #ePackageCount > 0 THEN
- #eAutomatic := #eConveyorOn;
- END_IF
- ;
- #eConveyorOn: // Statement section case #eConveyorOn
- #q_ConveyerFront := 1;
- #q_ConveyerBack := 0;
- #Blink := 1;
- IF NOT #i_ConveyerInSensor AND #SensorOnOld THEN
- #SensorOn := 1;
- #SensorOnOld := 0;
- ELSIF #i_MetalSensor THEN
- #eAutomatic := #eArmOut;
- ELSIF NOT #i_ConveyerOutsensor AND #SensorOffOld THEN
- #SensorOff := 1;
- #SensorOffOld := 0;
- ELSIF #ePackageCount < 0 THEN
- #ePackageCount := 0;
- #eAutomatic := #eErrorFound;
- END_IF
- ;
- #eArmOut: // Statement section case #eArmOut
- #q_ArmIn := 0;
- #q_ArmOut := 1;
- IF NOT #i_ConveyerInSensor AND #SensorOnOld THEN
- #SensorOn := 1;
- #SensorOnOld := 0;
- ELSIF NOT #i_BinSensor AND #SensorBinOld THEN
- #SensorBin := 1;
- #SensorBinOld := 0;
- #eAutomatic := #eArmIn;
- ELSIF NOT #i_ConveyerOutsensor THEN
- #eErrorState := #ePuckMissing;
- #eAutomatic := #eErrorFound;
- END_IF
- ;
- #eArmIn: // Statement section case #eArmIn
- #q_ArmOut := 0;
- #q_ArmIn := 1;
- IF NOT #i_ConveyerInSensor AND #SensorOnOld THEN
- #SensorOn := 1;
- #SensorOnOld := 0;
- ELSIF NOT "SensorBin" AND NOT #Binfull THEN
- #Binfull := 1;
- ELSIF #ePackageCount = 0 THEN
- #eAutomatic := #eConveyorOff;
- ELSIF #ePackageCount > 0 THEN
- #eAutomatic := #eConveyorOn;
- END_IF
- ;
- #eErrorFound: // Statement section case #eErrorFound
- #eAutomatic := #eInitState;
- #q_Error := 1;
- #q_ErrorState := #eErrorState;
- ;
- END_CASE;
- IF #Binfull THEN
- #eTimer(IN := NOT #eTimer.Q,
- PT := T#1000MS);
- IF #eTimer.Q AND NOT #i_BinSensor THEN
- #Binfull := 0;
- #eErrorState := #eBinFull;
- #eAutomatic := #eErrorFound;
- ELSIF #eTimer.Q AND #i_BinSensor THEN
- #Binfull := 0;
- #eAutomatic := #eConveyorOff;
- END_IF;
- END_IF;
- IF #SensorOff AND #i_ConveyerOutsensor THEN
- #ePackageCount := #ePackageCount - 1;
- #SensorOff := 0;
- #SensorOffOld := 1;
- IF #ePackageCount = 0 THEN
- #eAutomatic := #eConveyorOff;
- END_IF;
- ELSIF NOT #SensorOff AND NOT #SensorOffOld THEN
- #SensorOff := 0;
- #SensorOffOld := 1;
- END_IF;
- IF #SensorBin AND #i_BinSensor THEN
- #ePackageCount := #ePackageCount - 1;
- #SensorBin := 0;
- #SensorBinOld := 1;
- ELSIF NOT #SensorBin AND NOT #SensorBinOld THEN
- #SensorBin := 0;
- #SensorBinOld := 1;
- END_IF;
- IF #SensorOn AND #i_ConveyerInSensor THEN
- #ePackageCount := #ePackageCount + 1;
- #SensorOn := 0;
- #SensorOnOld := 1;
- ELSIF NOT #SensorOn AND NOT #SensorOnOld THEN
- #SensorOnOld := 1;
- #Blink := 0;
- #Binfull := 0;
- END_IF;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement