Advertisement
Guest User

AutomaticCode

a guest
Feb 19th, 2015
289
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SCL 3.93 KB | None | 0 0
  1. CASE #eAutomatic OF
  2.     #eInitState:  // Statement section case #eInitState
  3.         #q_ArmIn := 1;
  4.         #q_ArmOut := 0;
  5.         #q_Error := 0;
  6.         #q_ErrorState := 0;
  7.         #eErrorState := 0;
  8.         IF #ePackageCount > 0 THEN
  9.             #eAutomatic := #eConveyorOn;
  10.         ELSIF #ePackageCount < 0 THEN
  11.             #ePackageCount := 0;
  12.         ELSE
  13.             #eAutomatic := #eConveyorOff;
  14.         END_IF
  15.         ;
  16.     #eConveyorOff:  // Statement section case #eConveyorOff
  17.         IF #Blink THEN
  18.             #eTimer(IN := NOT #eTimer.Q,
  19.                     PT := T#1000MS);
  20.             IF #eTimer.Q THEN
  21.                 #Blink := 0;
  22.                 #q_ConveyerFront := #Blink;
  23.                 #q_ConveyerBack := #Blink;
  24.             END_IF;
  25.         ELSIF NOT #i_ConveyerInSensor AND #SensorOnOld THEN
  26.             #SensorOn := 1;
  27.             #SensorOnOld := 0;
  28.             #eAutomatic := #eConveyorOn;
  29.         ELSIF #ePackageCount > 0 THEN
  30.             #eAutomatic := #eConveyorOn;
  31.         END_IF
  32.         ;
  33.     #eConveyorOn:  // Statement section case #eConveyorOn
  34.         #q_ConveyerFront := 1;
  35.         #q_ConveyerBack := 0;
  36.         #Blink := 1;
  37.         IF NOT #i_ConveyerInSensor AND #SensorOnOld THEN
  38.             #SensorOn := 1;
  39.             #SensorOnOld := 0;
  40.         ELSIF #i_MetalSensor THEN
  41.             #eAutomatic := #eArmOut;
  42.         ELSIF NOT #i_ConveyerOutsensor AND #SensorOffOld THEN
  43.             #SensorOff := 1;
  44.             #SensorOffOld := 0;
  45.         ELSIF #ePackageCount < 0 THEN
  46.             #ePackageCount := 0;
  47.             #eAutomatic := #eErrorFound;
  48.         END_IF
  49.         ;
  50.     #eArmOut:  // Statement section case #eArmOut
  51.         #q_ArmIn := 0;
  52.         #q_ArmOut := 1;
  53.         IF NOT #i_ConveyerInSensor AND #SensorOnOld THEN
  54.             #SensorOn := 1;
  55.             #SensorOnOld := 0;
  56.         ELSIF NOT #i_BinSensor AND #SensorBinOld THEN
  57.             #SensorBin := 1;
  58.             #SensorBinOld := 0;
  59.             #eAutomatic := #eArmIn;
  60.         ELSIF NOT #i_ConveyerOutsensor THEN
  61.             #eErrorState := #ePuckMissing;
  62.             #eAutomatic := #eErrorFound;
  63.         END_IF
  64.         ;
  65.     #eArmIn:  // Statement section case #eArmIn
  66.         #q_ArmOut := 0;
  67.         #q_ArmIn := 1;
  68.         IF NOT #i_ConveyerInSensor AND #SensorOnOld THEN
  69.             #SensorOn := 1;
  70.             #SensorOnOld := 0;
  71.         ELSIF NOT "SensorBin" AND NOT #Binfull THEN
  72.             #Binfull := 1;
  73.         ELSIF #ePackageCount = 0 THEN
  74.             #eAutomatic := #eConveyorOff;
  75.         ELSIF #ePackageCount > 0 THEN
  76.             #eAutomatic := #eConveyorOn;
  77.         END_IF
  78.         ;
  79.     #eErrorFound:  // Statement section case #eErrorFound
  80.         #eAutomatic := #eInitState;
  81.         #q_Error := 1;
  82.         #q_ErrorState := #eErrorState;
  83.         ;
  84. END_CASE;
  85.  
  86. IF #Binfull THEN
  87.     #eTimer(IN := NOT #eTimer.Q,
  88.             PT := T#1000MS);
  89.    
  90.     IF #eTimer.Q AND NOT #i_BinSensor THEN
  91.         #Binfull := 0;
  92.         #eErrorState := #eBinFull;
  93.         #eAutomatic := #eErrorFound;
  94.     ELSIF #eTimer.Q AND #i_BinSensor THEN
  95.         #Binfull := 0;
  96.         #eAutomatic := #eConveyorOff;
  97.     END_IF;
  98. END_IF;
  99.  
  100. IF #SensorOff AND #i_ConveyerOutsensor THEN
  101.     #ePackageCount := #ePackageCount - 1;
  102.     #SensorOff := 0;
  103.     #SensorOffOld := 1;
  104.     IF #ePackageCount = 0 THEN
  105.         #eAutomatic := #eConveyorOff;
  106.     END_IF;
  107. ELSIF NOT #SensorOff AND NOT #SensorOffOld THEN
  108.     #SensorOff := 0;
  109.     #SensorOffOld := 1;
  110. END_IF;
  111.  
  112. IF #SensorBin AND #i_BinSensor THEN
  113.     #ePackageCount := #ePackageCount - 1;
  114.     #SensorBin := 0;
  115.     #SensorBinOld := 1;
  116. ELSIF NOT #SensorBin AND NOT #SensorBinOld THEN
  117.     #SensorBin := 0;
  118.     #SensorBinOld := 1;
  119. END_IF;
  120.  
  121. IF #SensorOn AND #i_ConveyerInSensor THEN
  122.     #ePackageCount := #ePackageCount + 1;
  123.     #SensorOn := 0;
  124.     #SensorOnOld := 1;
  125. ELSIF NOT #SensorOn AND NOT #SensorOnOld THEN
  126.     #SensorOnOld := 1;
  127.     #Blink := 0;
  128.     #Binfull := 0;
  129. END_IF;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement