コード例 #1
0
 public static void resetAll()
 {
     mrState = ConveyorMRState.Stop;
     for (int t = 0; t < ChNum; t++)
     {
         ChStatus[t] = ConveyorChState.Down;
     }
     for (int t = 0; t < CrNum; t++)
     {
         CrStatus[t] = ConveyorCrState.Stop;
     }
     for (int t = 0; t < StNum; t++)
     {
         StStatus[t] = ConveyorStState.Down;
     }
 }
コード例 #2
0
        static void setOutput()
        {
            if (Output[(int)ConveyorOutputDevice.EmergencyStop])
            {
                if (Input[(int)ConveyorInputDevice.EmergencyStopReset])
                {
                    Output[(int)ConveyorOutputDevice.EmergencyStop] = false;
                    Console.WriteLine("{0} Emergency Reset: Button Reset was pressed", DateTime.Now);
                }
                return;
            }
            if (!(Input[(int)ConveyorInputDevice.EmergencyStop1] && Input[(int)ConveyorInputDevice.EmergencyStop2] && input[(int)ConveyorInputDevice.EmergencyStop3] && Input[(int)ConveyorInputDevice.EmergencyStop4]))
            {
                for (int t = 0; t < BitNum; t++)
                {
                    Output[t] = false;
                }
                mrState = ConveyorMRState.Stop;
                for (int t = 0; t < ChStatus.Length; t++)
                {
                    ChStatus[t] = ConveyorChState.Down;
                }
                for (int t = 0; t < CrStatus.Length; t++)
                {
                    CrStatus[t] = ConveyorCrState.Stop;
                }
                for (int t = 0; t < StStatus.Length; t++)
                {
                    StStatus[t] = ConveyorStState.Down;
                }
                Output[28] = true;
                Console.WriteLine("{0} Emergency Stop: Button ES{1} was pressed", DateTime.Now, !Input[(int)ConveyorInputDevice.EmergencyStop1] ? 1 : !Input[(int)ConveyorInputDevice.EmergencyStop2] ? 2 : !Input[(int)ConveyorInputDevice.EmergencyStop3] ? 3 : 4);
                return;
            }
            switch (mrState)
            {
            case ConveyorMRState.Stop:
                Output[(int)ConveyorOutputDevice.MainRollerClockwise]     = false;
                Output[(int)ConveyorOutputDevice.MainRollerAnticlockwise] = false;
                break;

            case ConveyorMRState.Clockwise:
                Output[(int)ConveyorOutputDevice.MainRollerClockwise]     = true;
                Output[(int)ConveyorOutputDevice.MainRollerAnticlockwise] = false;
                break;

            case ConveyorMRState.Anticlockwise:
                Output[(int)ConveyorOutputDevice.MainRollerClockwise]     = false;
                Output[(int)ConveyorOutputDevice.MainRollerAnticlockwise] = true;
                break;
            }
            for (int t = 0; t < ChNum; t++)
            {
                switch (ChStatus[t] & (ConveyorChState)0x00000001)
                {
                case ConveyorChState.Down:
                    Output[12 + t] = false;
                    break;

                case ConveyorChState.Up:
                    Output[12 + t] = true;
                    break;
                }
                switch (ChStatus[t] & unchecked ((ConveyorChState)0xFFFFFFFE))
                {
                case ConveyorChState.Down:
                    Output[4 + t] = false;
                    Output[8 + t] = false;
                    break;

                case ConveyorChState.Forward:
                    Output[4 + t] = t >= 2;
                    Output[8 + t] = t <= 1;
                    break;

                case ConveyorChState.Backward:
                    Output[4 + t] = t <= 1;
                    Output[8 + t] = t >= 2;
                    break;
                }
            }
            for (int t = 0; t < CrNum; t++)
            {
                switch (CrStatus[t])
                {
                case ConveyorCrState.Stop:
                    Output[0 + t] = false;
                    Output[2 + t] = false;
                    break;

                case ConveyorCrState.Forward:
                    Output[0 + t * 2 + t] = true;
                    Output[2 - t * 2 + t] = false;
                    break;

                case ConveyorCrState.Backward:
                    Output[0 + t * 2 + t] = false;
                    Output[2 - t * 2 + t] = true;
                    break;
                }
            }
            for (int t = 0; t < StNum; t++)
            {
                switch (StStatus[t])
                {
                case ConveyorStState.Down:
                    Output[16 + t] = false;
                    break;

                case ConveyorStState.Up:
                    Output[16 + t] = true;
                    break;
                }
            }
        }
コード例 #3
0
 /// <summary>
 /// mainRollerStop
 /// </summary>
 public static void mrS(int n)
 {
     mrState = ConveyorMRState.Stop;
 }
コード例 #4
0
 /// <summary>
 /// mainRollerClockwise
 /// </summary>
 public static void mrC(int n)
 {
     mrState = ConveyorMRState.Clockwise;
 }
コード例 #5
0
 /// <summary>
 /// mainRollerAnticlockwise
 /// </summary>
 public static void mrA(int n)
 {
     mrState = ConveyorMRState.Anticlockwise;
 }
 public static void waitForMainRoller(ConveyorMRState state, int waitingTime)
 {
     WaitingAction.Add(new DelayAction(DelayActionWaitingDevice.MainRollerState, 0, state, waitingTime, Thread.CurrentThread));
     wait();
 }