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(); } }
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; } }