wangxinhui
2024-11-06 8f392cc88b0768b74efca3b68785cf5aa1c38e70
wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/AGV/SendAGVTask.cs
@@ -23,310 +23,114 @@
        private static string name1 = "";
        public static void SendAGVTask1(PLCClient plcClient)
        {
            if (Interlocked.Exchange(ref _readSendAGVTaskSignalso, 1) == 0)
            try
            {
                try
                if (plcClient == null) { return; }
                VOLContext context = new VOLContext();
                Idt_agvtaskRepository agvtaskRepository = new dt_agvtaskRepository(context);
                Ibase_ware_locationRepository locationRepository = new base_ware_locationRepository(context);
                int TaskInteractive = Convert.ToInt32(plcClient.ReadValue(TaskDBName.taskInteractiveR.ToString()));//1收到
                int TaskInteractiveW = Convert.ToInt32(plcClient.ReadValue(TaskDBName.taskInteractiveW.ToString()));//0初始/1下发/2取消/3更改
                int resetTaskInteractiveW = Convert.ToInt32(plcClient.ReadValue(TaskDBName.resetTaskInteractiveW.ToString()));
                if (TaskInteractive == 0 && TaskInteractiveW == 0)
                {
                    if (plcClient == null) { return; }
                    ////WriteLog.Info($"{plcClient.PLCName}SendAGVTask").Write($"---------------开始记录,时间:{DateTime.Now}------------", $"{plcClient.PLCName}SendAGVTask");
                    VOLContext context = new VOLContext();
                    Idt_agvtaskRepository agvtaskRepository = new dt_agvtaskRepository(context);
                    Ibase_ware_locationRepository locationRepository = new base_ware_locationRepository(context);
                    int TaskInteractive = Convert.ToInt32(plcClient.ReadValue(TaskDBName.taskInteractiveR.ToString()));//1收到
                    int TaskInteractiveW = Convert.ToInt32(plcClient.ReadValue(TaskDBName.taskInteractiveW.ToString()));//0初始/1下发/2取消/3更改
                    int resetTaskInteractiveW = Convert.ToInt32(plcClient.ReadValue(TaskDBName.resetTaskInteractiveW.ToString()));
                    ////WriteLog.Info($"{plcClient.PLCName}SendAGVTask").Write($"读取 { plcClient.PLCName},DB偏移值:DB1000.114,读取值:{TaskInteractive},时间:{DateTime.Now}", $"{plcClient.PLCName}SendAGVTask");
                    ////WriteLog.Info($"{plcClient.PLCName}SendAGVTask").Write($"读取 { plcClient.PLCName},DB偏移值:DB1000.112,读取值:{TaskInteractiveW},时间:{DateTime.Now}", $"{plcClient.PLCName}SendAGVTask");
                    ////WriteLog.Info($"{plcClient.PLCName}SendAGVTask").Write($"读取 { plcClient.PLCName},DB偏移值:DB1000.118,读取值:{resetTaskInteractiveW},时间:{DateTime.Now}", $"{plcClient.PLCName}SendAGVTask");
                    if (isTrue1 && name1 == plcClient.PLCName)
                    dt_agvtask agvTask = agvtaskRepository.Find(r => r.agv_taskstate == "Create" && r.agv_code == plcClient.PLCName && r.agv_tasktype.Contains("TaskType_Outbound")).OrderBy(r => r.agv_createtime).OrderByDescending(r => r.agv_grade).FirstOrDefault();
                    if (null != agvTask)
                    {
                        if (TaskInteractiveW != 0 || resetTaskInteractiveW != 0 || TaskInteractive != 0)
                        {
                            bool fw = plcClient.WriteValue(TaskDBName.resetTaskInteractiveW.ToString(), 1);
                            Task.Delay(2000).Wait();
                            resetTaskInteractiveW = Convert.ToInt32(plcClient.ReadValue(TaskDBName.resetTaskInteractiveW.ToString()));
                            if (resetTaskInteractiveW == 1)
                            {
                                plcClient.WriteValue(TaskDBName.resetTaskInteractiveW.ToString(), 0);
                                plcClient.WriteValue(TaskDBName.taskInteractiveW.ToString(), 0);
                                Task.Delay(2000).Wait();
                            }
                            return;
                        }
                        else
                        {
                            isTrue1 = false;
                            name1 = "";
                        }
                    }
                    else if (resetTaskInteractiveW == 1)
                    {
                        plcClient.WriteValue(TaskDBName.resetTaskInteractiveW.ToString(), 0);
                        plcClient.WriteValue(TaskDBName.taskInteractiveW.ToString(), 0);
                        Task.Delay(2000).Wait();
                        return;
                    }
                    if (TaskInteractive == 0 && TaskInteractiveW == 0)
                    {
                        dt_agvtask agvTask = agvtaskRepository.Find(r => r.agv_taskstate == "Create" && r.agv_code == plcClient.PLCName && r.agv_tasktype.Contains("TaskType_Outbound")).OrderBy(r => r.agv_createtime).OrderByDescending(r => r.agv_grade).FirstOrDefault();
                        if (null != agvTask)
                        {
                            //写入任务信息
                            string rel = AGVBaseInfo.TaskWrite(plcClient, agvTask, AGVJobEnum.newTaskEnum);
                            Thread.Sleep(1000);
                            string taskId = plcClient.ReadValue(TaskDBName.taskID.ToString()).ToString();
                        //写入任务信息
                        string rel = AGVBaseInfo.TaskWrite(plcClient, agvTask, AGVJobEnum.newTaskEnum);
                            if (taskId != agvTask.agv_tasknum)
                        if (string.IsNullOrEmpty(rel))
                        {
                            Thread.Sleep(500);
                            for (int i = 0; i < 5; i++)
                            {
                                isTrue1 = true;
                                name1 = plcClient.PLCName;
                                ////WriteLog.Info($"{plcClient.PLCName}SendAGVTask").Write($"读取 给AGV写入任务失败,读取AGV的taskid:{agvTask.agv_tasknum}, AGV任务队列中不存在,时间:{ DateTime.Now}", $"{plcClient.PLCName}SendAGVTask");
                                ////WriteLog.Info($"{plcClient.PLCName}SendAGVTask").Write($"给AGV写入任务失败,任务号{0},时间:{ DateTime.Now}", $"{plcClient.PLCName}SendAGVTask");
                                ////WriteLog.Info($"{plcClient.PLCName}SendAGVTask").Write($"---------------结束记录,时间:{DateTime.Now}------------ {Environment.NewLine}", $"{plcClient.PLCName}SendAGVTask");
                                return;
                                //throw new Exception(string.Format("给AGV写入任务失败,任务号{0}", agvTask.agv_tasknum));
                            }
                            if (string.IsNullOrEmpty(rel))
                            {
                                //写入任务确认1
                                bool taskInteractiveW = plcClient.WriteValue(TaskDBName.taskInteractiveW.ToString(), 1);
                                Thread.Sleep(1000);
                                ////WriteLog.Info($"{plcClient.PLCName}SendAGVTask").Write($"写入 任务号:{agvTask.agv_tasknum},偏移值:DB1000.112,写入AGV信号:1,写入反馈结果:{taskInteractiveW}", $"{plcClient.PLCName}SendAGVTask");
                                //读取AGV信号
                                int ReadTask_1_OK = Convert.ToInt32(plcClient.ReadValue(TaskDBName.taskInteractiveR.ToString()));
                                ////WriteLog.Info($"{plcClient.PLCName}SendAGVTask").Write($"读取 任务号:{agvTask.agv_tasknum},偏移值:DB1000.114,读取AGV信号:{ReadTask_1_OK},读取反馈结果:{Convert.ToBoolean(ReadTask_1_OK)}", $"{plcClient.PLCName}SendAGVTask");
                                if (ReadTask_1_OK == 1)
                                Thread.Sleep(200);
                                string taskId = plcClient.ReadValue(TaskDBName.taskID.ToString()).ToString();
                                if (taskId != agvTask.agv_tasknum)
                                {
                                    //写入WCS确认信号0
                                    bool taskInteractiveW2 = plcClient.WriteValue(TaskDBName.taskInteractiveW.ToString(), 0);
                                    Thread.Sleep(2000);
                                    ////WriteLog.Info($"{plcClient.PLCName}SendAGVTask").Write($"任务号:{agvTask.agv_tasknum},偏移值:DB1000.112,写入AGV信号:0,写入反馈结果:{taskInteractiveW2}", $"{plcClient.PLCName}SendAGVTask");
                                    //读取AGV信号是否为0
                                    int ReadTask_0_OK = Convert.ToInt32(plcClient.ReadValue(TaskDBName.taskInteractiveR.ToString()));
                                    ////WriteLog.Info($"{plcClient.PLCName}SendAGVTask").Write($"任务号:{agvTask.agv_tasknum},偏移值:DB1000.114,读取AGV信号:{ReadTask_0_OK},读取反馈结果:{Convert.ToBoolean(ReadTask_0_OK)}", $"{plcClient.PLCName}SendAGVTask");
                                    if (ReadTask_0_OK == 0)
                                    {
                                        agvTask.agv_taskstate = AGVTaskStateEnum.SendOut.ToString();
                                        agvTask.agv_realesstime = DateTime.Now;
                                        int agvtsask = agvtaskRepository.Update(agvTask, true);
                                        //if (agvtsask!=1)
                                        //{
                                        //    ////WriteLog.Info($"{plcClient.PLCName}SendAGVTask").Write($"任务号:{agvTask.agv_tasknum},内容:任务修改失败,反馈值:{agvtsask}", $"{plcClient.PLCName}SendAGVTask");
                                        //    ////WriteLog.Info($"{plcClient.PLCName}SendAGVTask").Write($"---------------结束记录,时间:{DateTime.Now}------------ {Environment.NewLine}", $"{plcClient.PLCName}SendAGVTask");
                                        //    return;
                                        //}
                                        //else
                                        //{
                                        //    ////WriteLog.Info($"{plcClient.PLCName}SendAGVTask").Write($"任务号:{agvTask.agv_tasknum},内容:货位状态已修改未【已下发】状态,任务修改成功,反馈值:{agvtsask}", $"{plcClient.PLCName}SendAGVTask");
                                        //}
                                    }
                                    if (i < 4)
                                        AGVBaseInfo.TaskWrite(plcClient, agvTask, AGVJobEnum.newTaskEnum);
                                    else
                                    {
                                        isTrue1 = true;
                                        name1 = plcClient.PLCName;
                                        ////WriteLog.Info($"{plcClient.PLCName}SendAGVTask").Write($"给AGV写入任务确认0失败 任务号{agvTask.agv_tasknum}" + DateTime.Now, $"{plcClient.PLCName}SendAGVTask");
                                        ////WriteLog.Info($"{plcClient.PLCName}SendAGVTask").Write($"---------------结束记录,时间:{DateTime.Now}------------ {Environment.NewLine}", $"{plcClient.PLCName}SendAGVTask");
                                        return;
                                        //throw new Exception(string.Format("给AGV写入任务确认0失败,任务号{0}", agvTask.agv_tasknum));
                                    }
                                }
                                else if (ReadTask_1_OK == 11)
                                {
                                    plcClient.WriteValue(TaskDBName.taskInteractiveW.ToString(), 0);
                                    Thread.Sleep(2000);
                                    int ReadTask_0_Error = Convert.ToInt32(plcClient.ReadValue(TaskDBName.taskInteractiveR.ToString()));
                                    if (ReadTask_0_Error == 0)
                                    {
                                        agvTask.agv_taskstate = AGVTaskStateEnum.SendOut.ToString();
                                        agvTask.agv_realesstime = DateTime.Now;
                                        agvtaskRepository.Update(agvTask, true);
                                    }
                                    else
                                    {
                                        isTrue1 = true;
                                        name1 = plcClient.PLCName;
                                        throw new Exception(string.Format("给AGV写入任务异常确认0失败,任务号{0}", agvTask.agv_tasknum));
                                    }
                                }
                                else
                                {
                                    isTrue1 = true;
                                    name1 = plcClient.PLCName;
                                    throw new Exception(string.Format("给AGV写入任务确认1失败,任务号{0}", agvTask.agv_tasknum));
                                    break;
                                }
                            }
                            else
                            //写入任务确认1
                            bool taskInteractiveW = plcClient.WriteValue(TaskDBName.taskInteractiveW.ToString(), 1);
                            for (int i = 0; i < 5; i++)
                            {
                                isTrue1 = true;
                                name1 = plcClient.PLCName;
                                throw new Exception(string.Format("给AGV写入任务失败,任务号{0}" + "," + rel, agvTask.agv_tasknum));
                                Thread.Sleep(200);
                                object readValue = plcClient.ReadValue(TaskDBName.taskInteractiveW.ToString());
                                if (readValue != null && readValue.ToString() == "1")
                                {
                                    break;
                                }
                                else
                                {
                                    plcClient.WriteValue(TaskDBName.taskInteractiveW.ToString(), 1);
                                }
                            }
                        }
                    }
                }
                else if (TaskInteractive == 11 && TaskInteractiveW == 1)
                {
                    plcClient.WriteValue(TaskDBName.taskInteractiveW.ToString(), 0);
                    for (int i = 0; i < 5; i++)
                    {
                        Thread.Sleep(200);
                        object readValue = plcClient.ReadValue(TaskDBName.taskInteractiveW.ToString());
                        if (readValue != null && readValue.ToString() == "0")
                        {
                            break;
                        }
                        else
                        {
                            ////WriteLog.Info($"{plcClient.PLCName}SendAGVTask").Write($"---------------结束记录,时间:{DateTime.Now}------------ {Environment.NewLine}", $"{plcClient.PLCName}SendAGVTask");
                            ////WriteLog.Info($"{plcClient.PLCName}AGV取消未执行任务").Write($"---------------开始记录,时间:{DateTime.Now}------------", $"{plcClient.PLCName}AGV取消未执行任务");
                            ////var ddd = plcClient.SiemensPLCClient.SiemensS7NetClient.ReadString("DB1000.320", 30).Content;
                            OperateResult<string> TaskID = plcClient.SiemensPLCClient.SiemensS7NetClient.ReadString("DB1000.320", 30);
                            if (TaskID.IsSuccess)
                            plcClient.WriteValue(TaskDBName.taskInteractiveW.ToString(), 0);
                        }
                    }
                }
                else if (1 == TaskInteractive && TaskInteractiveW == 1)
                {
                    string taskId = plcClient.ReadValue(TaskDBName.taskID.ToString()).ToString();
                    var agvTask = agvtaskRepository.FindFirst(x => x.agv_tasknum == taskId);
                    if (agvTask != null)
                    {
                        if (agvTask.agv_taskstate != AGVTaskStateEnum.SendOut.ToString())
                            agvTask.agv_taskstate = AGVTaskStateEnum.SendOut.ToString();
                        agvTask.agv_realesstime = DateTime.Now;
                        agvtaskRepository.Update(agvTask, true);
                        plcClient.WriteValue(TaskDBName.taskInteractiveW.ToString(), 0);
                        for (int i = 0; i < 5; i++)
                        {
                            Thread.Sleep(200);
                            object readValue = plcClient.ReadValue(TaskDBName.taskInteractiveW.ToString());
                            if (readValue != null && readValue.ToString() == "0")
                            {
                                TaskID.Content = TaskID.Content?.Replace("\b", "")?.Replace("\\", "")?.Replace("\0", "")?.Replace("\u0004", "")?.Replace("\u0003", "")?.Replace("\u0014", "")?.Replace("\u001e", "")?.Replace("\u0006", "")?.Replace("emptyID", "")?.Replace("mptyID", "")?.Replace("ptyID", "")?.Replace("tyID", "")?.Replace("yID", "")?.Replace("ID", "")?.Replace("\a", "")?.Replace("5-3:20:54:402025123", "");
                                string result = TaskID.Content == null ? "" : TaskID.Content.Trim();
                                ////WriteLog.Info($"{plcClient.PLCName}AGV取消未执行任务").Write($"读取  { plcClient.PLCName},DB偏移值:DB1000.320,读取值:{result},时间:{DateTime.Now}", $"{plcClient.PLCName}AGV取消未执行任务");
                                if (result != "")
                                {
                                    Idt_agvtask_htyRepository agvtask_HtyRepository = new dt_agvtask_htyRepository(context);
                                    dt_agvtask aTask = agvtaskRepository.FindFirst(d => d.agv_tasknum == result);
                                    if (aTask != null)
                                    {
                                        //agvTask.agv_worktype = 2;
                                        string rel = AGVBaseInfo.TaskWrite(plcClient, aTask, AGVJobEnum.cancelTaskEnum);
                                        Thread.Sleep(1000);
                                        string taskId = plcClient.ReadValue(TaskDBName.taskID.ToString()).ToString();
                                        if (taskId != aTask.agv_tasknum)
                                        {
                                            isTrue1 = true;
                                            name1 = plcClient.PLCName;
                                            ////WriteLog.Info($"{plcClient.PLCName}AGV取消未执行任务").Write("给AGV写入任务失败,读取AGV的taskid" + aTask.agv_tasknum + "AGV任务队列中不存在" + DateTime.Now, $"{plcClient.PLCName}AGV取消未执行任务");
                                            ////WriteLog.Info($"{plcClient.PLCName}AGV取消未执行任务").Write($"---------------结束记录,时间:{DateTime.Now}------------ {Environment.NewLine}", $"{plcClient.PLCName}AGV取消未执行任务");
                                            return;
                                        }
                                        if (string.IsNullOrEmpty(rel))
                                        {
                                            ////WriteLog.Info($"{plcClient.PLCName}AGV取消未执行任务").Write($"任务号:{aTask.agv_tasknum},给AGV写入取消任务成功, 时间:{ DateTime.Now}", $"{plcClient.PLCName}AGV取消未执行任务");
                                            //写入任务确认1
                                            bool taskInteractiveW = plcClient.WriteValue(TaskDBName.taskInteractiveW.ToString(), 2);
                                            Thread.Sleep(1000);
                                            ////WriteLog.Info($"{plcClient.PLCName}AGV取消未执行任务").Write($"任务号:{aTask.agv_tasknum},偏移值:DB1000.112,写入AGV信号:2,写入反馈结果:{taskInteractiveW}", $"{plcClient.PLCName}AGV取消未执行任务");
                                            //读取AGV信号
                                            int ReadTask_1_OK = Convert.ToInt32(plcClient.ReadValue(TaskDBName.taskInteractiveR.ToString()));
                                            ////WriteLog.Info($"{plcClient.PLCName}AGV取消未执行任务").Write($"任务号:{aTask.agv_tasknum},偏移值:DB1000.114,读取AGV信号:{ReadTask_1_OK},读取反馈结果:{Convert.ToBoolean(ReadTask_1_OK)}", $"{plcClient.PLCName}AGV取消未执行任务");
                                            if (ReadTask_1_OK == 1)
                                            {
                                                //写入WCS确认信号0
                                                bool taskInteractiveW2 = plcClient.WriteValue(TaskDBName.taskInteractiveW.ToString(), 0);
                                                Thread.Sleep(2000);
                                                ////WriteLog.Info($"{plcClient.PLCName}AGV取消未执行任务").Write($"任务号:{aTask.agv_tasknum},偏移值:DB1000.112,写入AGV信号:0,写入反馈结果:{taskInteractiveW2}", $"{plcClient.PLCName}AGV取消未执行任务");
                                                //读取AGV信号是否为0
                                                int ReadTask_0_OK = Convert.ToInt32(plcClient.ReadValue(TaskDBName.taskInteractiveR.ToString()));
                                                ////WriteLog.Info($"{plcClient.PLCName}AGV取消未执行任务").Write($"任务号:{aTask.agv_tasknum},偏移值:DB1000.114,读取AGV信号:{ReadTask_0_OK},读取反馈结果:{Convert.ToBoolean(ReadTask_0_OK)}", $"{plcClient.PLCName}AGV取消未执行任务");
                                                if (ReadTask_0_OK == 0)
                                                {
                                                    //代表反馈AGV清楚任务成功
                                                    updateloction(aTask, locationRepository, agvtaskRepository);
                                                    string Operate = "AGV取消2";
                                                    agvtask_HtyRepository.AddTaskHistory(aTask, Operate);
                                                    agvtaskRepository.Delete(aTask, true);
                                                    ////WriteLog.Info($"{plcClient.PLCName}AGV取消未执行任务").Write($"任务号:{aTask.agv_tasknum},成功删除添加历史记录", $"{plcClient.PLCName}AGV取消未执行任务");
                                                    ////WriteLog.Info($"{plcClient.PLCName}AGV取消未执行任务").Write($"---------------结束记录,时间:{DateTime.Now}------------ {Environment.NewLine}", $"{plcClient.PLCName}AGV取消未执行任务");
                                                    return;
                                                }
                                                else
                                                {
                                                    isTrue1 = true;
                                                    name1 = plcClient.PLCName;
                                                    ////WriteLog.Info($"{plcClient.PLCName}AGV取消未执行任务").Write($"给AGV写入任务确认0失败 任务号{aTask.agv_tasknum}" + DateTime.Now, $"{plcClient.PLCName}AGV取消未执行任务");
                                                    ////WriteLog.Info($"{plcClient.PLCName}AGV取消未执行任务").Write($"---------------结束记录,时间:{DateTime.Now}------------ {Environment.NewLine}", $"{plcClient.PLCName}AGV取消未执行任务");
                                                    return;
                                                }
                                            }
                                            else if (ReadTask_1_OK == 11)
                                            {
                                                ////WriteLog.Info($"{plcClient.PLCName}AGV取消未执行任务").Write($"AGV反馈任务11的异常 任务号{aTask.agv_tasknum}" + DateTime.Now, $"{plcClient.PLCName}AGV取消未执行任务");
                                                plcClient.WriteValue(TaskDBName.taskInteractiveW.ToString(), 0);
                                                Thread.Sleep(2000);
                                                int ReadTask_0_Error = Convert.ToInt32(plcClient.ReadValue(TaskDBName.taskInteractiveR.ToString()));
                                                if (ReadTask_0_Error == 0)
                                                {
                                                    updateloction(aTask, locationRepository, agvtaskRepository);
                                                    string Operate = "AGV取消11";
                                                    agvtask_HtyRepository.AddTaskHistory(aTask, Operate);
                                                    agvtaskRepository.Delete(aTask, true);
                                                }
                                                else
                                                {
                                                    isTrue1 = true;
                                                    name1 = plcClient.PLCName;
                                                    ////WriteLog.Info($"{plcClient.PLCName}AGV取消未执行任务").Write($"给AGV写入任务异常确认0失败,任务号{0},时间:" + DateTime.Now, $"{plcClient.PLCName}AGV取消未执行任务");
                                                    ////WriteLog.Info($"{plcClient.PLCName}AGV取消未执行任务").Write($"---------------结束记录,时间:{DateTime.Now}------------ {Environment.NewLine}", $"{plcClient.PLCName}AGV取消未执行任务");
                                                    return;
                                                    // throw new Exception(string.Format("给AGV写入任务异常确认0失败,任务号{0}", agvTask.agv_tasknum));
                                                }
                                            }
                                            else
                                            {
                                                isTrue1 = true;
                                                name1 = plcClient.PLCName;
                                                ////WriteLog.Info($"{plcClient.PLCName}AGV取消未执行任务").Write($"给AGV写入任务确认1失败,任务号{0},时间:" + DateTime.Now, $"{plcClient.PLCName}AGV取消未执行任务");
                                                ////WriteLog.Info($"{plcClient.PLCName}AGV取消未执行任务").Write($"---------------结束记录,时间:{DateTime.Now}------------ {Environment.NewLine}", $"{plcClient.PLCName}AGV取消未执行任务");
                                                return;
                                            }
                                        }
                                    }
                                    else
                                    {
                                        ////WriteLog.Info($"{plcClient.PLCName}AGV取消未执行任务").Write("AGV反馈的任务号" + result + "AGV任务队列中不存在,时间:" + DateTime.Now, $"{plcClient.PLCName}AGV取消未执行任务");
                                        ////WriteLog.Info($"{plcClient.PLCName}AGV取消未执行任务").Write($"---------------结束记录,时间:{DateTime.Now}------------{Environment.NewLine}", $"{plcClient.PLCName}AGV取消未执行任务");
                                        return;
                                    }
                                }
                                break;
                            }
                            else
                            {
                                ////WriteLog.Info($"{plcClient.PLCName}AGV取消未执行任务").Write($"---------------{plcClient.PLCName}断开连接  时间:{DateTime.Now}  -------------- {Environment.NewLine}", $"{plcClient.PLCName}AGV取消未执行任务");
                                ////WriteLog.Info($"{plcClient.PLCName}AGV取消未执行任务").Write($"---------------结束记录,时间:{DateTime.Now}------------ {Environment.NewLine}", $"{plcClient.PLCName}AGV取消未执行任务");
                                return;
                                plcClient.WriteValue(TaskDBName.taskInteractiveW.ToString(), 0);
                            }
                        }
                    }
                    else
                    {
                        bool taskInteractiveW2 = plcClient.WriteValue(TaskDBName.taskInteractiveW.ToString(), 0);
                    }
                    if (TaskInteractive == 11)
                    {
                        plcClient.WriteValue(TaskDBName.taskInteractiveW.ToString(), 0);
                        plcClient.WriteValue(TaskDBName.resetTaskInteractiveW.ToString(), 0);
                    }
                    //else  if ( TaskInteractive==1 && TaskInteractiveW == 1)
                    //  {
                    //  isTrue1 = true;
                    //  name1 = plcClient.PLCName;
                    //  //写入WCS确认信号0
                    //  //bool taskInteractiveW=  plcClient.WriteValue(TaskDBName.taskInteractiveW.ToString(), 0);
                    //      ////WriteLog.Info($"{plcClient.PLCName}SendAGVTask").Write($"写入 ,偏移值:DB1000.112,写入AGV信号:0,写入反馈结果:{taskInteractiveW},时间:{ DateTime.Now}", $"{plcClient.PLCName}SendAGVTask");
                    //      ////WriteLog.Info($"{plcClient.PLCName}SendAGVTask").Write($"---------------结束记录,时间:{DateTime.Now}------------ {Environment.NewLine}", $"{plcClient.PLCName}SendAGVTask");
                    //      return;
                    //  }
                    //else if (TaskInteractive == 1 && TaskInteractiveW == 2)
                    //  {
                    //  isTrue1 = true;
                    //  name1 = plcClient.PLCName;
                    //  //写入WCS确认信号0
                    //  //bool taskInteractiveW = plcClient.WriteValue(TaskDBName.taskInteractiveW.ToString(), 0);
                }
                    //      return;
                    //  }
                }
                catch (Exception ex)
                {
                    ////WriteLog.Info($"{plcClient.PLCName}SendAGVTask").Write(ex.Message, $"{plcClient.PLCName}SendAGVTask");
                }
                finally
                {
                    Interlocked.Exchange(ref _readSendAGVTaskSignalso, 0);
                }
            }
            catch (Exception ex)
            {
                //throw new Exception(ex.Message);
                WriteLog.Info($"{plcClient.PLCName}SendAGVTask").Write(ex.Message, $"{plcClient.PLCName}SendAGVTask");
            }
        }
        private static void updateloction(dt_agvtask aTask, Ibase_ware_locationRepository locationRepository, Idt_agvtaskRepository agvtaskRepository)