コード例 #1
0
        public void StackerReset(int devID)
        {
            if (devID == 1001)
            {
                Array.Clear(Stacker1001.DB2, 0, Stacker1001.DB2.Count());

                Stacker1001.DevStatusCommit();
            }
            else if (devID == 1002)
            {
                Array.Clear(Stacker1002.DB2, 0, Stacker1001.DB2.Count());

                Stacker1002.DevStatusCommit();
            }
        }
コード例 #2
0
        private void ExeStacker1001Business()
        {
            if (TransPort2002.DB1[0] == 1)
            {
                //任务已经生成
                TransPort2002.DB2[0] = 0;
            }
            if (TransPort2004.DB1[0] == 1)
            {
                TransPort2004.DB2[0] = 0;
            }
            //if (TransPort2003.DB1[0] == 1)
            //{
            //    TransPort2003.DB2[0] = 0;
            //}
            //if (TransPort2005.DB1[0] == 1)
            //{
            //    TransPort2005.DB2[0] = 0;
            //}
            switch (currentTaskPhaseA1)
            {
            case 0:
            {
                exeTaskCounterA1 = 0;
                if (Stacker1001.DB1[1] == 1)
                {
                    //信号置位:允许接收

                    Stacker1001.DB2[2] = 1;
                    if (Stacker1001.DevStatusCommit())
                    {
                        currentTaskPhaseA1++;
                    }
                }
                break;
            }

            case 1:
            {
                //PC写入数据完成
                if (Stacker1001.DB1[2] == 1)
                {
                    //信号复位:允许接收
                    Stacker1001.DB2[2] = 0;

                    if (Stacker1001.DevStatusCommit())
                    {
                        currentTaskPhaseA1++;
                    }
                }
                break;
            }

            case 2:
            {
                //开始取数据,取完后信号置位:取数据完成
                currentTaskA1          = new HouseInOutTask();
                currentTaskA1.TaskType = Stacker1001.DB1[4];
                currentTaskA1.TaskCode = (Int16)(Stacker1001.DB1[5] + (Stacker1001.DB1[6] << 8));
                currentTaskA1.CellX    = Stacker1001.DB1[7];
                currentTaskA1.CellY    = Stacker1001.DB1[8];
                currentTaskA1.CellZ    = Stacker1001.DB1[9];
                AddLog("成功接收任务,参数已保存,任务类型码:" + currentTaskA1.TaskType.ToString());
                Stacker1001.DB2[3] = 1;
                Stacker1001.DB2[1] = 2;         //设备处于工作状态
                if (Stacker1001.DevStatusCommit())
                {
                    currentTaskPhaseA1++;
                }


                break;
            }

            case 3:
            {
                if (Stacker1001.DB1[2] == 0)
                {
                    //信号复位:取数据完成信号
                    Stacker1001.DB2[3] = 0;
                    if (Stacker1001.DevStatusCommit())
                    {
                        currentTaskPhaseA1++;
                    }
                }
                exeTaskCounterA1++;
                AddLog("任务类型号" + currentTaskA1.TaskType.ToString() + ",任务执行中,执行到第 " + exeTaskCounterA1 + " 步");

                break;
            }

            case 4:
            {
                if (exeTaskCounterA1 > 5)
                {
                    exeTaskCounterA1 = 0;
                    currentTaskPhaseA1++;
                }
                else
                {
                    exeTaskCounterA1++;
                    AddLog("任务执行中,执行到第 " + exeTaskCounterA1 + " 步");
                }
                break;
            }

            case 5:
            {
                Stacker1001.DB2[5] = (byte)(currentTaskA1.TaskCode & 0xff);
                Stacker1001.DB2[6] = (byte)(currentTaskA1.TaskCode >> 8);
                if (Stacker1001.DevStatusCommit())
                {
                    currentTaskPhaseA1++;
                    AddLog("任务完成,返回任务号:" + currentTaskA1.TaskCode);
                }
                break;
            }

            case 6:
            {
                //PLC任务完成
                Stacker1001.DB2[4] = 1;
                if (Stacker1001.DevStatusCommit())
                {
                    currentTaskPhaseA1++;
                }
                break;
            }

            case 7:
            {
                if (Stacker1001.DB1[3] == 1)
                {
                    Array.Clear(Stacker1001.DB2, 0, Stacker1001.DB2.Count());
                    Stacker1001.DB2[1] = 1;         //空闲
                    if (Stacker1001.DevStatusCommit())
                    {
                        currentTaskPhaseA1++;
                    }
                }
                break;
            }

            case 8:
            {
                AddLog("任务" + currentTaskA1.TaskCode + "通信结束");
                currentTaskA1      = null;
                currentTaskPhaseA1 = 0;
                break;
            }

            default:
                break;
            }
        }