1
czw
1 天以前 1cd9ee1a2b74a47e48c637482555388e20bb4eab
2025Äê6ÔÂ12ÈÕ/AuxAllWCS/Build/Project/´úÂë/VS×Ô¶¨ÒåÀà/AutoThread.cs
@@ -137,35 +137,35 @@
            {
                try
                {
                    foreach (var ip in new List<string> {
                    device1.p发那科1下线.Config.IP,
                    device1.p发那科2下线.Config.IP,
                    device1.D定子1号机械手.Config.IP,
                    device1.D定子2号机械手.Config.IP,
                    device1.Js捷顺1.Config.IP,
                    device1.Js捷顺2.Config.IP,
                    device1.维希尔抓臂1.Config.IP,
                    device1.维希尔抓臂2.Config.IP,
                    device1.RGV.Config.IP,
                    device1.S1002Read.Config.IP,
                    device1.S2001Read.Config.IP,
                    device1.S3001Read.Config.IP
                })
                    {
                        string pattern = @"\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b";
                    //    foreach (var ip in new List<string> {
                    //    device1.p发那科1下线.Config.IP,
                    //    device1.p发那科2下线.Config.IP,
                    //    device1.D定子1号机械手.Config.IP,
                    //    device1.D定子2号机械手.Config.IP,
                    //    device1.Js捷顺1.Config.IP,
                    //    device1.Js捷顺2.Config.IP,
                    //    device1.维希尔抓臂1.Config.IP,
                    //    device1.维希尔抓臂2.Config.IP,
                    //    device1.RGV.Config.IP,
                    //    device1.S1002Read.Config.IP,
                    //    device1.S2001Read.Config.IP,
                    //    device1.S3001Read.Config.IP
                    //})
                    //    {
                    //        string pattern = @"\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b";
                        var matches = Regex.Match(ip, pattern);
                        if (matches.Success)
                        {
                            var b = IsMachineOnline(matches.Value);
                            if (!Iponlines.ContainsKey(ip))
                            {
                                Iponlines.TryAdd(ip, b);
                            }
                            else
                                Iponlines[ip] = b;
                        }
                    }
                    //        var matches = Regex.Match(ip, pattern);
                    //        if (matches.Success)
                    //        {
                    //            var b = IsMachineOnline(matches.Value);
                    //            if (!Iponlines.ContainsKey(ip))
                    //            {
                    //                Iponlines.TryAdd(ip, b);
                    //            }
                    //            else
                    //                Iponlines[ip] = b;
                    //        }
                    //    }
                }
                catch (Exception ex)
                {
@@ -175,7 +175,7 @@
            }, tag, device, 3000));
            tasks.Add(GetTask(ThreadMXC3, tag, 3000));
            tasks.Add(GetTask(ThreadMXC4, tag, 3000));
            tasks.Add(GetTask(ResetGats, tag, 3000));
            //tasks.Add(GetTask(ResetGats, tag, 3000));
            tasks.Add(GetTask(sa1022, tag, 3000));
            tasks.Add(GetTask(sa1025, tag, 3000));
@@ -183,13 +183,10 @@
            tasks.Add(GetTask(sa2001, tag, 3000));
            tasks.Add(GetTask(sa2030, tag, 3000));
            tasks.Add(GetTask(sa2008, tag, 3000));
            tasks.Add(GetTask(sa3001, tag, 3000));
            tasks.Add(GetTask(sa3005, tag, 3000));
            tasks.Add(GetTask(sa3006, tag, 3000));
            tasks.Add(GetTask(sa3010, tag, 3000));
            //tasks.Add(GetTask(sa3001, tag, 3000));
            //tasks.Add(GetTask(sa3005, tag, 3000));
            //tasks.Add(GetTask(sa3006, tag, 3000));
            //tasks.Add(GetTask(sa3010, tag, 3000));
            Task.WaitAll(tasks.ToArray());
        }
@@ -285,6 +282,7 @@
            if (VERX != null)
            {
                LogHelper.Info($"{VERX.deviceName}时间戳 {RedisHelper.Get<string>("Js捷顺1#Timestamp", out string mg)} D1212>{tag.Js1.D1212} å·¦æ»¡ä¿¡å·:{TcpServer.GetBitdata(tag.Js1.D1212, 2)} D1212_LAST>{tag.Js1.D1212_LAST} å³æ»¡ä¿¡å·>{TcpServer.GetBitdata(tag.Js1.D1212, 3)} D1213_LAST>{tag.Js1.D1213_LAST}");
                if (tag.Js1.D1212_LAST == 0 && TcpServer.GetBitdata(tag.Js1.D1212, 2) == 1)
                {
                    var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
@@ -303,8 +301,9 @@
                if (tag.Js1.D1212_LAST == 1 && TcpServer.GetBitdata(tag.Js1.D1212, 2) == 0)
                {
                    //tag.Js1.D1212_LAST = 0; 
                    tag.Js1.D1224 = 0;
                    RedisHelper.Add($"Js捷顺1.D1202_LAST", "0", out string msg);
                    //Conn.默认Redis.SetValue(VERX.deviceName + ".D1224", "0", VERX.deviceName + "Queue");
                    //Conn.默认Redis.SetValue("Js捷顺1.D1224", "0", VERX.deviceName + "Queue");
                }
                if (tag.Js1.D1213_LAST == 0 && TcpServer.GetBitdata(tag.Js1.D1212, 3) == 1)
@@ -325,8 +324,8 @@
                if (tag.Js1.D1213_LAST == 1 && TcpServer.GetBitdata(tag.Js1.D1212, 3) == 0)
                {
                    //tag.Js1.D1213_LAST = 0;
                    tag.Js1.D1225 = 0;
                    RedisHelper.Add($"Js捷顺1.D1203_LAST", "0", out string msg);
                    //Conn.默认Redis.SetValue(VERX.deviceName + ".D1225", "0", VERX.deviceName + "Queue");
                }
            }
        }
@@ -341,6 +340,8 @@
            if (VERX != null)
            {
                LogHelper.Info($"{VERX.deviceName} æ—¶é—´æˆ³ {RedisHelper.Get<string>("Js捷顺2#Timestamp", out string mg)} D1212>{tag.Js2.D1212} å·¦æ»¡ä¿¡å·:{TcpServer.GetBitdata(tag.Js2.D1212, 2)} D1212_LAST>{tag.Js2.D1212_LAST} å³æ»¡ä¿¡å·>{TcpServer.GetBitdata(tag.Js2.D1212, 2)} D1213_LAST>{tag.Js2.D1213_LAST}");
                if (tag.Js2.D1212_LAST == 0 && TcpServer.GetBitdata(tag.Js2.D1212, 2) == 1)
                {
                    var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
@@ -358,7 +359,7 @@
                if (tag.Js2.D1212_LAST == 1 && TcpServer.GetBitdata(tag.Js2.D1212, 2) == 0)
                {
                    //tag.Js2.D1212_LAST = 0;
                    tag.Js2.D1224 = 0;
                    RedisHelper.Add($"Js捷顺2.D1202_LAST", "0", out string msg);
                }
                if (tag.Js2.D1213_LAST == 0 && TcpServer.GetBitdata(tag.Js2.D1212, 3) == 1)
@@ -379,7 +380,7 @@
                if (tag.Js2.D1213_LAST == 1 && TcpServer.GetBitdata(tag.Js2.D1213, 2) == 0)
                {
                    //tag.Js2.D1213_LAST = 0;
                    tag.Js2.D1225 = 0;
                    RedisHelper.Add($"Js捷顺2.D1203_LAST", "0", out string msg);
                }
            }
@@ -480,7 +481,7 @@
            if (VERX != null)
            {
                if (tag.wxr1.R46)
                    LogHelper.Info($"{VERX.deviceName} R44>{tag.wxr1.R46} R44LAST>{tag.wxr1.R46_LAST} R10>{tag.wxr1.R11}");
                    LogHelper.Info($"{VERX.deviceName} R46>{tag.wxr1.R46} R46LAST>{tag.wxr1.R46_LAST} R11>{tag.wxr1.R11}");
                if (tag.wxr1.R46 && !tag.wxr1.R46_LAST && tag.wxr1.R11)
                {
                    if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode) && !string.IsNullOrEmpty(traycode.Trim()))
@@ -645,7 +646,7 @@
            if (VERX != null)
            {
                if (tag.wxr2.R46)
                    LogHelper.Info($"{VERX.deviceName} R44>{tag.wxr2.R46} R44LAST>{tag.wxr2.R46_LAST} R10>{tag.wxr2.R11}");
                    LogHelper.Info($"{VERX.deviceName} R46>{tag.wxr2.R46} R46LAST>{tag.wxr2.R46_LAST} R11>{tag.wxr2.R11}");
                if (tag.wxr2.R46 && !tag.wxr2.R46_LAST && tag.wxr2.R11)
                {
                    if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode) && !string.IsNullOrEmpty(traycode.Trim()))
@@ -667,7 +668,7 @@
                    }
                    else
                    {
                        TcpServer.TcpServerSend(VERX.deviceNo[2], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E"));
                        TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E"));
                    }
                }
                else
@@ -780,15 +781,25 @@
                LogHelper.Info($"查看RGV ç”µé‡ï¼šã€{tag.RGV.R当前电量}】 å……电状态:【{tag.RGV.R充电状态}】 æ•…障代码:【{tag.RGV.RgvrunError}】 æ‰‹åЍ1自动2【{tag.RGV.R手动1自动2}】");
                if (tag.RGV.R充电状态 == 1)
                {
                    LogHelper.Info($"RGV å……电模式,不用管。");
                    return;
                }
                if (tag.RGV.R手动1自动2 == 1)
                {
                    LogHelper.Info($"RGV æ‰‹åŠ¨æ¨¡å¼ï¼Œä¸ç”¨ç®¡ã€‚");
                    return;
                }
                if (tag.RGV.RgvrunError > 0)
                {
                    LogHelper.Info($"RGV æ•…障,不用管。");
                    return;
                }
                LogHelper.Info($"RGV125命令查看 Rgv任务数据 å†™ workmode:{tag.RGV.workMod} taskmod{tag.RGV.taskmod}  t1No:{tag.RGV.taskno1} t1do:{tag.RGV.task1do}  t2No:{tag.RGV.taskno2} t2do:{tag.RGV.task2do} taskend:{tag.RGV.taskend} ");
                if (tag.RGV.taskend == 125)
                {
                    LogHelper.Info($"RGV æœ‰125命令未执行。 ");
                    LogHelper.Info($"RGV125命令未执行 ä»»åŠ¡æ•°æ® workmode:{tag.RGV.workMod}\n taskmod{tag.RGV.taskmod} \n t1No:{tag.RGV.taskno1}\n t1do:{tag.RGV.task1do} \n t2No:{tag.RGV.taskno2}\n t2do:{tag.RGV.task2do}\n taskend:{tag.RGV.taskend} ");
                    if (tag.RGV.workMod == 0 && tag.RGV.taskmod == 0 && tag.RGV.taskno1 == tag.RGV.ReadTask1No && tag.RGV.taskno2 == tag.RGV.ReadTask2No)
                    {
@@ -798,28 +809,28 @@
                    System.Threading.Thread.Sleep(3000);
                    return;
                }
                LogHelper.Info($"任务下发 Rgv ä»»åŠ¡ è¿›å…¥ Rgv信息 W1状态{tag.RGV.w1status} ReadTask1No>{tag.RGV.ReadTask1No} 1工位条码:{tag.RGV.bit1Code} bit1taskOver>{tag.RGV.bit1taskOver} W2状态{tag.RGV.w2status} ReadTask2No>{tag.RGV.ReadTask2No} 2工位条码:{tag.RGV.bit2Code} bit2taskOver>{tag.RGV.bit2taskOver}");
                LogHelper.Info($"任务下发 Rgv任务数据 è¯» W1状态{tag.RGV.w1status} ReadTask1No>{tag.RGV.ReadTask1No} 1工位条码:{tag.RGV.bit1Code} bit1taskOver>{tag.RGV.bit1taskOver} W2状态{tag.RGV.w2status} ReadTask2No>{tag.RGV.ReadTask2No} 2工位条码:{tag.RGV.bit2Code} bit2taskOver>{tag.RGV.bit2taskOver}");
                TaskEntity task1 = null;
                TaskEntity task2 = null;
                var task1Isrun = false;
                if (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver != 1)
                {
                    var taskno = tag.RGV.ReadTask1No;
                    string tno = "TN" + (DateTime.Now.ToString("yy")) + ((taskno.ToString()).PadLeft(8, '0'));
                    task1 = taskservice.FindEntity(x => x.S_TASK_NO == tno);
                    if (task1 != null && task1.S_B_STATE != "完成")
                        task1Isrun = true;
                    //var taskno = tag.RGV.ReadTask1No;
                    //string tno = "TN" + (DateTime.Now.ToString("yy")) + ((taskno.ToString()).PadLeft(8, '0'));
                    //task1 = taskservice.FindEntity(x => x.S_TASK_NO == tno);
                    //if (task1 != null && task1.S_B_STATE != "完成")
                    task1Isrun = true;
                    //if (tag.RGV.bit1taskOver_LAST == 1)
                    //    RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg);
                }
                var task2Isrun = false;
                if (tag.RGV.ReadTask2No > 0 && tag.RGV.bit2taskOver != 1)
                {
                    var taskno = tag.RGV.ReadTask2No;
                    string tno = "TN" + (DateTime.Now.ToString("yy")) + ((taskno.ToString()).PadLeft(8, '0'));
                    task2 = taskservice.FindEntity(x => x.S_TASK_NO == tno);
                    if (task2 != null && task2.S_B_STATE != "完成")
                        task2Isrun = true;
                    //var taskno = tag.RGV.ReadTask2No;
                    //string tno = "TN" + (DateTime.Now.ToString("yy")) + ((taskno.ToString()).PadLeft(8, '0'));
                    //task2 = taskservice.FindEntity(x => x.S_TASK_NO == tno);
                    //if (task2 != null && task2.S_B_STATE != "完成")
                    task2Isrun = true;
                    //if (tag.RGV.bit2taskOver_LAST == 1)
                    //    RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg);
                }
@@ -928,9 +939,22 @@
                //        var b = RedisHelper.Remove("RGVQueue", out rev);
                //    }
                //}
                var tklistall = taskservice.FindList(x => x.S_B_STATE != "完成" && x.S_B_STATE != "取消" && x.S_WORK_MODE == "RGV").OrderBy(x => x.T_CREATE).ToList();
                var tklist = tklistall.FindAll(x => x.S_B_STATE == "未执行");
                var tkunNormal = tklistall.Except(tklist);
                if (tkunNormal.Any())
                    foreach (var tk in tkunNormal)
                    {
                        if (tk.S_TASK_NO != task1?.S_TASK_NO && tk.S_TASK_NO != task2?.S_TASK_NO)
                        {
                            tk.S_B_STATE = "取消";
                            tk.S_NOTE = "不在执行队列中,取消";
                            taskservice.Update(tk);
                        }
                    }
                ///1 æœ‰è´§  å°±2 å–。  1 æ²¡è´§ å°±2 å¸è´§ï¼Œ éƒ½æœ‰è´§  å°±1卸货。 éƒ½æ²¡è´§ å°±1卸
                var tklist = taskservice.FindList(x => x.S_B_STATE == "未执行" && x.S_WORK_MODE == "RGV").OrderBy(x => x.T_CREATE).ToList();
                // taskservice.FindList(x => x.S_B_STATE == "未执行" && x.S_WORK_MODE == "RGV").OrderBy(x => x.T_CREATE).ToList();
                if (task1 != null && task1.S_B_STATE != "完成") //1有任务
                {
                    if (task2 != null && task2.S_B_STATE != "完成")// 1 æœ‰ä»»åŠ¡  2 æœ‰ä»»åŠ¡ã€‚ 
@@ -1143,8 +1167,8 @@
            var taskCOdes = new List<string> { "Sarrive", "Srelease", "Earrive", "Erelease" };
            TaskActRepository taskActRepository = new TaskActRepository();
            TaskRepository taskRepository = new TaskRepository();
            var requires = taskActRepository.FindList(x => taskCOdes.Contains(x.S_ACTION_CODE) && x.N_CREATEMETHOD == 0).OrderBy(x => x.T_CREATE).ToList();
            var timeMorhours = requires.FindAll(x => DateTime.Now.Subtract(x.T_CREATE).TotalHours > 1);
            var requires1 = taskActRepository.FindList(x => taskCOdes.Contains(x.S_ACTION_CODE) && x.N_CREATEMETHOD == 0).OrderBy(x => x.T_CREATE).ToList();
            var timeMorhours = requires1.FindAll(x => DateTime.Now.Subtract(x.T_CREATE).TotalHours > 1);
            if (timeMorhours.Any())
            {
                foreach (var mor in timeMorhours)
@@ -1153,10 +1177,23 @@
                    mor.S_REVIEW_COMMENT = "超时不处理";
                    taskActRepository.Update(mor);
                }
                requires = requires.Except(timeMorhours).ToList();
                requires1 = requires1.Except(timeMorhours).ToList();
            }
            foreach (var item in requires)
            foreach (var requires in requires1.GroupBy(x => x.S_TASK_NO))
            //foreach (var item in requires)
            {
                var rsss = requires.ToList();
                var item = rsss.OrderBy(x => x.S_ACTION_CODE.Contains("release") ? 0 : 1).LastOrDefault();
                if (rsss.Count > 1)
                {
                    rsss.Remove(item);
                    foreach (var mor in rsss)
                    {
                        mor.N_CREATEMETHOD = 3;
                        mor.S_REVIEW_COMMENT = "多余不处理";
                        taskActRepository.Update(mor);
                    }
                }
                LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE}光栅处理 =================> ");
                var tin = taskCOdes.IndexOf(item.S_ACTION_CODE);
                if (tin == -1)
@@ -1302,7 +1339,10 @@
                                            continuuuuu = true;
                                        }
                                        else
                                        {
                                            SetRedistoPlc("A1019取货交互.Ssetreq", "true", "A1019取货交互Queue", "写AGV申请");
                                            tag.SA1019.StaskMode = 1;
                                        }
                                    }
                                    break;
                                case "1030":
@@ -1313,7 +1353,10 @@
                                            continuuuuu = true;
                                        }
                                        else
                                        {
                                            SetRedistoPlc("A1030取货交互.Ssetreq", "true", "A1030取货交互Queue", "写AGV申请");
                                            tag.SA1030.StaskMode = 1;
                                        }
                                    }
                                    break;
                                case "2030":
@@ -1324,7 +1367,10 @@
                                            continuuuuu = true;
                                        }
                                        else
                                        {
                                            SetRedistoPlc("A2030取货交互.Ssetreq", "true", "A2030取货交互Queue", "写AGV申请");
                                            tag.SA2030.StaskMode = 1;
                                        }
                                    }
                                    break;
                                case "3005":
@@ -1335,7 +1381,10 @@
                                            continuuuuu = true;
                                        }
                                        else
                                        {
                                            SetRedistoPlc("A3005取货交互.Ssetreq", "true", "A3005取货交互Queue", "写AGV申请");
                                            tag.ssx输送线.s3005.StaskMode = 1;
                                        }
                                    }
                                    break;
                                case "3010":
@@ -1346,7 +1395,10 @@
                                            continuuuuu = true;
                                        }
                                        else
                                        {
                                            SetRedistoPlc("A3010取货交互.Ssetreq", "true", "A3010取货交互Queue", "写AGV申请");
                                            tag.ssx输送线.s3010.StaskMode = 1;
                                        }
                                    }
                                    break;
                                //}
@@ -1360,7 +1412,10 @@
                                            continuuuuu = true;
                                        }
                                        else
                                        {
                                            SetRedistoPlc("A1022放货交互.Ssetreq", "true", "A1022放货交互Queue", "写AGV申请");
                                            tag.SA1022.StaskMode = 2;
                                        }
                                    }
                                    break;
                                case "1025":
@@ -1371,7 +1426,10 @@
                                            continuuuuu = true;
                                        }
                                        else
                                        {
                                            SetRedistoPlc("A1025放货交互.Ssetreq", "true", "A1025放货交互Queue", "写AGV申请");
                                            tag.SA1025.StaskMode = 2;
                                        }
                                    }
                                    break;
                                case "2001":
@@ -1382,7 +1440,10 @@
                                            continuuuuu = true;
                                        }
                                        else
                                        {
                                            SetRedistoPlc("A2001放货交互.Ssetreq", "true", "A2001放货交互Queue", "写AGV申请");
                                            tag.SA2001.StaskMode = 2;
                                        }
                                    }
                                    break;
                                case "3001":
@@ -1393,7 +1454,10 @@
                                            continuuuuu = true;
                                        }
                                        else
                                        {
                                            SetRedistoPlc("A3001放货交互.Ssetreq", "true", "A3001放货交互Queue", "写AGV申请");
                                            tag.ssx输送线.s3001.StaskMode = 2;
                                        }
                                    }
                                    break;
                                case "3006":
@@ -1404,7 +1468,10 @@
                                            continuuuuu = true;
                                        }
                                        else
                                        {
                                            SetRedistoPlc("A3006放货交互.Ssetreq", "true", "A3006放货交互Queue", "写AGV申请");
                                            tag.ssx输送线.s3006.StaskMode = 2;
                                        }
                                    }
                                    break;
                            }
@@ -1452,7 +1519,7 @@
                            {
                                var close = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue(dev.deviceName + "." + (V ? "D2220" : "D2225")), typeof(System.UInt16));
                                if (close == 1)
                                if (close == 0)
                                {
                                    LogHelper.Info($"{dev.deviceName}{(V ? "å·¦" : "右")} å…‰æ …{(goin ? "关闭" : "开启")} ç”³è¯·ã€‚ å·²ç»å…³é—­ï¼");
                                    continuuuuu = true;
@@ -1482,6 +1549,7 @@
                }
            }
            System.Threading.Thread.Sleep(3000);
            //ResetGats(tag);
        }
        public void ResetGats(Tag tag)
        {
@@ -1494,18 +1562,20 @@
                //int int0 = TcpServer.GetBitdata(numm, 0);
                //int int1 = TcpServer.GetBitdata(numm, 1);
                if (TcpServer.GetBitdata(numm, 0) == 0)
                {
                    Conn.默认Redis.SetValue(dev.deviceName + ".D1220", "0", dev.deviceName + "Queue", false);
                    Conn.默认Redis.SetValue(dev.deviceName + ".D1222", "0", dev.deviceName + "Queue", false);
                }
                if (TcpServer.GetBitdata(numm, 1) == 0)
                {
                    Conn.默认Redis.SetValue(dev.deviceName + ".D1221", "0", dev.deviceName + "Queue", false);
                    Conn.默认Redis.SetValue(dev.deviceName + ".D1223", "0", dev.deviceName + "Queue", false);
                }
                //if (TcpServer.GetBitdata(numm, 0) == 0)
                //{
                //    Conn.默认Redis.SetValue(dev.deviceName + ".D1220", "0", dev.deviceName + "Queue", false);
                //    Conn.默认Redis.SetValue(dev.deviceName + ".D1222", "0", dev.deviceName + "Queue", false);
                //}
                //if (TcpServer.GetBitdata(numm, 1) == 0)
                //{
                //    Conn.默认Redis.SetValue(dev.deviceName + ".D1221", "0", dev.deviceName + "Queue", false);
                //    Conn.默认Redis.SetValue(dev.deviceName + ".D1223", "0", dev.deviceName + "Queue", false);
                //}
                if (TcpServer.GetBitdata(numm, 2) == 0)
                {
                    //Conn.默认Redis.GetValue(dev.deviceName + ".D1224");
                    Conn.默认Redis.SetValue(dev.deviceName + ".D1224", "0", dev.deviceName + "Queue", false);
                }
                if (TcpServer.GetBitdata(numm, 3) == 0)
@@ -1522,18 +1592,22 @@
                //一线地址:10.221.55.181     ç«¯å£ï¼š6000
                //if (IsMachineOnline("10.221.55.181"))
                {
                    //if (tag.DZ1.D2211 == 1 && tag.DZ1.D2220 == 1)
                    //    tag.DZ1.D2211 = 0;
                    //if (tag.DZ1.D2216 == 1 && tag.DZ1.D2225 == 1)
                    //    tag.DZ1.D2216 = 0;
                    if (tag.DZ1.D2211 == 1 && tag.DZ1.D2220 == 1)
                        //tag.DZ1.D2211 = 0;
                        Conn.默认Redis.SetValue("D定子1号机械手.D2211", "0", "D定子1号机械手Queue", false);
                    if (tag.DZ1.D2216 == 1 && tag.DZ1.D2225 == 1)
                        //tag.DZ1.D2216 = 0;
                        Conn.默认Redis.SetValue("D定子1号机械手.D2216", "0", "D定子1号机械手Queue", false);
                }
                //二线地址:10.221.55.179     ç«¯å£ï¼š6000
                //if (IsMachineOnline("10.221.55.179"))
                {
                    //if (tag.DZ2.D2211 == 1 && tag.DZ2.D2220 == 1)
                    //    tag.DZ2.D2211 = 0;
                    //if (tag.DZ2.D2216 == 1 && tag.DZ2.D2225 == 1)
                    //    tag.DZ2.D2216 = 0;
                    if (tag.DZ2.D2211 == 1 && tag.DZ2.D2220 == 1)
                        //tag.DZ2.D2211 = 0;
                        Conn.默认Redis.SetValue("D定子2号机械手.D2211", "0", "D定子2号机械手Queue", false);
                    if (tag.DZ2.D2216 == 1 && tag.DZ2.D2225 == 1)
                        //tag.DZ2.D2216 = 0;
                        Conn.默认Redis.SetValue("D定子2号机械手.D2216", "0", "D定子2号机械手Queue", false);
                }
            }
            LogHelper.Info($"ThreadGrats deviceType5光栅写入位重置完成。 =================> ");
@@ -1545,6 +1619,11 @@
        public void ThreadEdown(Tag tag)
        {
            Console.WriteLine($"ThreadEdown 20 23 = ç©ºä¸‹æ£€æµ‹ =================> ");
            if (tag.RGV.R充电状态 == 1 || tag.RGV.R手动1自动2 == 1 || tag.RGV.RgvrunError > 0)
            {
                LogHelper.Info($"RGV æ‰‹åЍ||故障||充电,空下检测终止。");
                return;
            }
            TaskRepository taskRepository = new TaskRepository();
            foreach (var Bssx in new string[] { "1020", "1023" })
            {
@@ -1651,7 +1730,12 @@
        public void ThreadDdown(Tag tag)
        {
            Console.WriteLine($"ThreadDdown 08 10 ==================> 1026");
            Console.WriteLine($"ThreadDdown 08 16==================> 1026");
            if (tag.RGV.R充电状态 == 1 || tag.RGV.R手动1自动2 == 1 || tag.RGV.RgvrunError > 0)
            {
                LogHelper.Info($"RGV æ‰‹åЍ||故障||充电,08 16 > 1026终止。");
                return;
            }
            TaskRepository taskRepository = new TaskRepository();
            foreach (var Bssx in new string[] { "1008", "1016" })
            {
@@ -1723,6 +1807,11 @@
        public void Thread0210Down(Tag tag)
        {
            Console.WriteLine($"Thread0210Down ==================>");
            if (tag.RGV.R充电状态 == 1 || tag.RGV.R手动1自动2 == 1 || tag.RGV.RgvrunError > 0)
            {
                LogHelper.Info($"RGV æ‰‹åЍ||故障||充电,02 10 > 1017终止。");
                return;
            }
            TaskRepository taskRepository = new TaskRepository();
            foreach (var Bssx in new string[] { "1002", "1010" })
            {
@@ -1807,6 +1896,7 @@
                            {
                                LogHelper.Info($"ssx == 1003 && tag.SF下料位.WRelease1003:{tag.SF下料位.WRelease1003}  å†™f1 2210=1,Arrive{ssx}BarcodeLast={RtrayCode}");
                                tag.FNK1.D2210 = 1;
                                //Conn.默认Redis.SetValue($"p发那科1下线.D2210", "1", $"p发那科1下线Queue",false);
                            }
                            break;
                        case "1005":
@@ -1847,33 +1937,33 @@
                if (WRelease == 1 && rReleaseOver == 1)
                {
                    switch (ssx)
                    {
                        case "1003":
                            {
                                LogHelper.Info($"读{ssx} WRelease=1&& rReleaseOver=1  è¯»FNK1.D2213{tag.FNK1.D2213}=1? å¹¶å†™0");
                                tag.FNK1.D2213 = 0;
                            }
                            break;
                        case "1005":
                            {
                                LogHelper.Info($"读{ssx} WRelease=1&& rReleaseOver=1  è¯»FNK1.D2218{tag.FNK1.D2218}=1? å¹¶å†™0");
                                tag.FNK1.D2218 = 0;
                            }
                            break;
                        case "1011":
                            {
                                LogHelper.Info($"读{ssx} WRelease=1&& rReleaseOver=1  è¯»FNK2.D2213{tag.FNK1.D2213}=1? å¹¶å†™0");
                                tag.FNK2.D2213 = 0;
                            }
                            break;
                        case "1013":
                            {
                                LogHelper.Info($"读{ssx} WRelease=1&& rReleaseOver=1  è¯»FNK2.D2218{tag.FNK2.D2218}=1?  å¹¶å†™0");
                                tag.FNK2.D2218 = 0;
                            }
                            break;
                    }
                    //switch (ssx)
                    //{
                    //    case "1003":
                    //        {
                    //            LogHelper.Info($"读{ssx} WRelease=1&& rReleaseOver=1  è¯»FNK1.D2213{tag.FNK1.D2213}=1? å¹¶å†™0");
                    //            tag.FNK1.D2213 = 0;
                    //        }
                    //        break;
                    //    case "1005":
                    //        {
                    //            LogHelper.Info($"读{ssx} WRelease=1&& rReleaseOver=1  è¯»FNK1.D2218{tag.FNK1.D2218}=1? å¹¶å†™0");
                    //            tag.FNK1.D2218 = 0;
                    //        }
                    //        break;
                    //    case "1011":
                    //        {
                    //            LogHelper.Info($"读{ssx} WRelease=1&& rReleaseOver=1  è¯»FNK2.D2213{tag.FNK1.D2213}=1? å¹¶å†™0");
                    //            tag.FNK2.D2213 = 0;
                    //        }
                    //        break;
                    //    case "1013":
                    //        {
                    //            LogHelper.Info($"读{ssx} WRelease=1&& rReleaseOver=1  è¯»FNK2.D2218{tag.FNK2.D2218}=1?  å¹¶å†™0");
                    //            tag.FNK2.D2218 = 0;
                    //        }
                    //        break;
                    //}
                    LogHelper.Info($"读{ssx} WRelease=1&& rReleaseOver=1  WRelease å†™0");
                    Conn.默认Redis.SetValue($"FNK1003051113.WRelease{ssx}", "0", $"FNK1003051113Queue");
                }
@@ -1884,12 +1974,13 @@
        public void ThreadFNK1Over(Tag tag)
        {
            Console.WriteLine($"ThreadFNK1Over    =====>");
            LogHelper.Info($" FN1 æ—¶é—´æˆ³ {RedisHelper.Get<string>("p发那科1下线#Timestamp", out string mg)}");
            LogHelper.Info($" FN1 D2217>{tag.FNK1.D2217} D2217LAST>{tag.FNK1.D2217_LAST} D2215>{tag.FNK1.D2215} D2216>{tag.FNK1.D2216} D2218>{tag.FNK1.D2218}");
            //LogHelper.Info($" FN1 .D2217=1,2217_LAST=0 å†™ 2215=0,D2217_LAST=1,WRelease1005=1 RArrive1005_LAST=0");
            if (tag.FNK1.D2217 == 1 && tag.FNK1.D2217_LAST == 0)
            {
                //tag.FNK1.D2215 = 0;
                tag.FNK1.D2218 = 1;
                //tag.FNK1.D2218 = 1;
                //tag.FNK1.D2212_LAST = 1;
                RedisHelper.Add($"p发那科1下线.D2217_LAST", "1", out string msg);
@@ -1916,7 +2007,7 @@
            LogHelper.Info($" FN1 D2212>{tag.FNK1.D2212} D2212LAST>{tag.FNK1.D2212_LAST} D2210>{tag.FNK1.D2210} D2211>{tag.FNK1.D2211} D2213>{tag.FNK1.D2213}");
            if (tag.FNK1.D2212 == 1 && tag.FNK1.D2212_LAST == 0)
            {
                tag.FNK1.D2213 = 1;
                //tag.FNK1.D2213 = 1;
                //tag.FNK1.D2210 = 0;
                //tag.FNK1.D2217_LAST = 1;
                RedisHelper.Add($"p发那科1下线.D2212_LAST", "1", out string msg);
@@ -1947,11 +2038,12 @@
        public void ThreadFNK2Over(Tag tag)
        {
            Console.WriteLine($"ThreadFNK2Over    =====>");
            LogHelper.Info($" FN2 æ—¶é—´æˆ³ {RedisHelper.Get<string>("p发那科2下线#Timestamp", out string mg)}");
            LogHelper.Info($" FN2 D2217>{tag.FNK2.D2217} D2217LAST>{tag.FNK2.D2217_LAST} D2215>{tag.FNK2.D2215} D2216>{tag.FNK2.D2216} D2218>{tag.FNK2.D2218}");
            if (tag.FNK2.D2217 == 1 && tag.FNK2.D2217_LAST == 0)
            {
                //tag.FNK2.D2215 = 0;
                tag.FNK2.D2218 = 1;
                //tag.FNK2.D2218 = 1;
                //tag.FNK2.D2212_LAST = 1;
                RedisHelper.Add($"p发那科2下线.D2217_LAST", "1", out string msg);
@@ -1980,7 +2072,7 @@
            if (tag.FNK2.D2212 == 1 && tag.FNK2.D2212_LAST == 0)
            {
                //tag.FNK2.D2210 = 0;
                tag.FNK2.D2213 = 1;
                //tag.FNK2.D2213 = 1;
                //tag.FNK2.D2217_LAST = 1;
                RedisHelper.Add($"p发那科2下线.D2212_LAST", "1", out string msg);
@@ -2010,8 +2102,8 @@
        {
            var taggg = tag.SA1019;
            string vqu = "A1019取货交互";
            Console.WriteLine($"1019任务状态:   =====>任务申请:{taggg.Ssetreq},输送线允许:{taggg.SreadCan} ä»»åŠ¡å®Œæˆï¼š{taggg.SOver} è¾“送线收到完成:{taggg.SreadAgvover}");
            if (taggg.SOver && taggg.SreadSsxOver)
            LogHelper.Info($"1019任务状态:   =====>任务申请:{taggg.Ssetreq},输送线允许:{taggg.SreadCan} ä»»åŠ¡å®Œæˆï¼š{taggg.SOver} è¾“送线收到完成:{taggg.SreadAgvover}");
            if (taggg.SOver && taggg.SreadAgvover)
            {
                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "写AGV申请");
                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "写AGV申请");
@@ -2049,11 +2141,12 @@
        {
            var taggg = tag.SA2030;
            string vqu = "A2030取货交互";
            Console.WriteLine($"{vqu}任务状态:   =====>任务申请:{taggg.Ssetreq},输送线允许:{taggg.SreadCan} ä»»åŠ¡å®Œæˆï¼š{taggg.SOver} è¾“送线收到完成:{taggg.SreadAgvover}");
            if (taggg.SOver && taggg.SreadSsxOver)
            LogHelper.Info($"{vqu}任务状态:   =====>任务申请:{taggg.Ssetreq},输送线允许:{taggg.SreadCan} ä»»åŠ¡å®Œæˆï¼š{taggg.SOver} è¾“送线收到完成:{taggg.SreadAgvover}");
            if (taggg.SOver && taggg.SreadAgvover)
            {
                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "写AGV申请");
                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "写AGV申请");
                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "清AGV申请");
                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "清AGV申请");
                SetRedistoPlc(vqu + ".StaskMode", "0", vqu + "Queue", "清AGV申请");
            }
        }
@@ -2061,11 +2154,12 @@
        {
            var taggg = tag.SA2001;
            string vqu = "A2001放货交互";
            Console.WriteLine($"{vqu}任务状态:   =====>任务申请:{taggg.Ssetreq},输送线允许:{taggg.SreadCan} ä»»åŠ¡å®Œæˆï¼š{taggg.SOver} è¾“送线收到完成:{taggg.SreadAgvover}");
            if (taggg.SOver && taggg.SreadSsxOver)
            LogHelper.Info($"{vqu}任务状态:   =====>任务申请:{taggg.Ssetreq},输送线允许:{taggg.SreadCan} ä»»åŠ¡å®Œæˆï¼š{taggg.SOver} è¾“送线收到完成:{taggg.SreadAgvover}");
            if (taggg.SOver && taggg.SreadAgvover)
            {
                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "写AGV申请");
                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "写AGV申请");
                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "清AGV申请");
                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "清AGV申请");
                SetRedistoPlc(vqu + ".StaskMode", "0", vqu + "Queue", "清AGV申请");
            }
        }
@@ -2073,11 +2167,12 @@
        {
            var taggg = tag.SA1030;
            string vqu = "A1030取货交互";
            Console.WriteLine($"{vqu}任务状态:   =====>任务申请:{taggg.Ssetreq},输送线允许:{taggg.SreadCan} ä»»åŠ¡å®Œæˆï¼š{taggg.SOver} è¾“送线收到完成:{taggg.SreadAgvover}");
            LogHelper.Info($"{vqu}任务状态:   =====>任务申请:{taggg.Ssetreq},输送线允许:{taggg.SreadCan} ä»»åŠ¡å®Œæˆï¼š{taggg.SOver} è¾“送线收到完成:{taggg.SreadAgvover}");
            if (taggg.SOver && taggg.SreadAgvover)
            {
                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "写AGV申请");
                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "写AGV申请");
                SetRedistoPlc(vqu + ".StaskMode", "0", vqu + "Queue", "写AGV申请");
            }
        }
@@ -2085,11 +2180,12 @@
        {
            var taggg = tag.SA1025;
            string vqu = "A1025放货交互";
            Console.WriteLine($"{vqu}任务状态:   =====>任务申请:{taggg.Ssetreq},输送线允许:{taggg.SreadCan} ä»»åŠ¡å®Œæˆï¼š{taggg.SOver} è¾“送线收到完成:{taggg.SreadAgvover}");
            LogHelper.Info($"{vqu}任务状态:   =====>任务申请:{taggg.Ssetreq},输送线允许:{taggg.SreadCan} ä»»åŠ¡å®Œæˆï¼š{taggg.SOver} è¾“送线收到完成:{taggg.SreadAgvover}");
            if (taggg.SOver && taggg.SreadAgvover)
            {
                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "写AGV申请");
                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "写AGV申请");
                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "清AGV申请");
                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "清AGV申请");
                SetRedistoPlc(vqu + ".StaskMode", "0", vqu + "Queue", "清AGV申请");
            }
        }
@@ -2097,11 +2193,12 @@
        {
            var taggg = tag.SA1022;
            string vqu = "A1022放货交互";
            Console.WriteLine($"{vqu}任务状态:   =====>任务申请:{taggg.Ssetreq},输送线允许:{taggg.SreadCan} ä»»åŠ¡å®Œæˆï¼š{taggg.SOver} è¾“送线收到完成:{taggg.SreadAgvover}");
            LogHelper.Info($"{vqu}任务状态:   =====>任务申请:{taggg.Ssetreq},输送线允许:{taggg.SreadCan} ä»»åŠ¡å®Œæˆï¼š{taggg.SOver} è¾“送线收到完成:{taggg.SreadAgvover}");
            if (taggg.SOver && taggg.SreadAgvover)
            {
                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "写AGV申请");
                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "写AGV申请");
                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "清AGV申请");
                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "清AGV申请");
                SetRedistoPlc(vqu + ".StaskMode", "0", vqu + "Queue", "清AGV申请");
            }
        }
@@ -2109,11 +2206,12 @@
        {
            var taggg = tag.ssx输送线.s3010;
            string vqu = "A3010取货交互";
            Console.WriteLine($"{vqu}任务状态:   =====>任务申请:{taggg.Ssetreq},输送线允许:{taggg.SreadCan} ä»»åŠ¡å®Œæˆï¼š{taggg.SOver} è¾“送线收到完成:{taggg.SreadAgvover}");
            LogHelper.Info($"{vqu}任务状态:   =====>任务申请:{taggg.Ssetreq},输送线允许:{taggg.SreadCan} ä»»åŠ¡å®Œæˆï¼š{taggg.SOver} è¾“送线收到完成:{taggg.SreadAgvover}");
            if (taggg.SOver && taggg.SreadAgvover)
            {
                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "写AGV申请");
                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "写AGV申请");
                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "清AGV申请");
                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "清AGV申请");
                SetRedistoPlc(vqu + ".StaskMode", "0", vqu + "Queue", "清AGV申请");
            }
        }
@@ -2121,11 +2219,12 @@
        {
            var taggg = tag.ssx输送线.s3006;
            string vqu = "A3006放货交互";
            Console.WriteLine($"{vqu}任务状态:   =====>任务申请:{taggg.Ssetreq},输送线允许:{taggg.SreadCan} ä»»åŠ¡å®Œæˆï¼š{taggg.SOver} è¾“送线收到完成:{taggg.SreadAgvover}");
            LogHelper.Info($"{vqu}任务状态:   =====>任务申请:{taggg.Ssetreq},输送线允许:{taggg.SreadCan} ä»»åŠ¡å®Œæˆï¼š{taggg.SOver} è¾“送线收到完成:{taggg.SreadAgvover}");
            if (taggg.SOver && taggg.SreadAgvover)
            {
                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "写AGV申请");
                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "写AGV申请");
                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "清AGV申请");
                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "清AGV申请");
                SetRedistoPlc(vqu + ".StaskMode", "0", vqu + "Queue", "清AGV申请");
            }
        }
@@ -2133,11 +2232,12 @@
        {
            var taggg = tag.ssx输送线.s3005;
            string vqu = "A3005取货交互";
            Console.WriteLine($"{vqu}任务状态:   =====>任务申请:{taggg.Ssetreq},输送线允许:{taggg.SreadCan} ä»»åŠ¡å®Œæˆï¼š{taggg.SOver} è¾“送线收到完成:{taggg.SreadAgvover}");
            LogHelper.Info($"{vqu}任务状态:   =====>任务申请:{taggg.Ssetreq},输送线允许:{taggg.SreadCan} ä»»åŠ¡å®Œæˆï¼š{taggg.SOver} è¾“送线收到完成:{taggg.SreadAgvover}");
            if (taggg.SOver && taggg.SreadAgvover)
            {
                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "写AGV申请");
                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "写AGV申请");
                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "清AGV申请");
                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "清AGV申请");
                SetRedistoPlc(vqu + ".StaskMode", "0", vqu + "Queue", "清AGV申请");
            }
        }
@@ -2145,11 +2245,12 @@
        {
            var taggg = tag.ssx输送线.s3010;
            string vqu = "A3001放货交互";
            Console.WriteLine($"{vqu}任务状态:   =====>任务申请:{taggg.Ssetreq},输送线允许:{taggg.SreadCan} ä»»åŠ¡å®Œæˆï¼š{taggg.SOver} è¾“送线收到完成:{taggg.SreadAgvover}");
            LogHelper.Info($"{vqu}任务状态:   =====>任务申请:{taggg.Ssetreq},输送线允许:{taggg.SreadCan} ä»»åŠ¡å®Œæˆï¼š{taggg.SOver} è¾“送线收到完成:{taggg.SreadAgvover}");
            if (taggg.SOver && taggg.SreadAgvover)
            {
                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "写AGV申请");
                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "写AGV申请");
                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "清AGV申请");
                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "清AGV申请");
                SetRedistoPlc(vqu + ".StaskMode", "0", vqu + "Queue", "清AGV申请");
            }
        }
@@ -2175,7 +2276,19 @@
        }
        public void Thread1030Down(Tag tag)
        {
            //Console.WriteLine($"SA1030 ä»»åŠ¡çŠ¶æ€ï¼š   =====>agv完成SOver{tag.SA1030.SOver}");
            Console.WriteLine($"SA1030 ä»»åŠ¡çŠ¶æ€ï¼š   =====>");
            if (tag.SA1030.RtaskState == 4 && tag.SA1030.RtaskState_LAST == 0 && tag.SA2001.R5空闲 == 5)
            {
                var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
                {
                    requestType = 10,
                    startBit = "1030",
                    endBit = "2001",
                }));
                RedisHelper.Add($"S1030Read.RtaskState_LAST", "1", out string msg);
            }
            else if (tag.SA1030.RtaskState != 4 && tag.SA1030.RtaskState_LAST == 1)
                RedisHelper.Add($"S1030Read.RtaskState_LAST", "0", out string msg);
            //if (tag.SA1019.SOver && tag.SA1019.SreadSsxOver)
            //{
            //    SetRedistoPlc("A1022放货交互.Ssetreq", "false", "A1022放货交互Queue", "清理");
@@ -2183,8 +2296,16 @@
            //}
            //Console.WriteLine($"SA1030 ä»»åŠ¡çŠ¶æ€ï¼š{tag.SA1030.RtaskState}- ç©ºé—²{tag.SA1030.R5空闲}-->对应终点2001>空闲5:{tag.SA2001.R5空闲}");
        }
        static int i = 0;
        public void Thread2030Down(Tag tag)
        {
            i++;
            if (i > 2 * 3600 / 3)
            {
                Console.Clear();
                LogHelper.Info($"循环{i}次>> æ¸…空控制台。");
                i = 0;
            }
            //Console.WriteLine($"SA2030 ä»»åŠ¡çŠ¶æ€ï¼š   =====>");
            //Console.WriteLine($"SA2030 ä»»åŠ¡çŠ¶æ€ï¼š{tag.SA2030.RtaskState}- ç©ºé—²{tag.SA2030.R5空闲} - barcode:{tag.SA2030.R托盘码}");
@@ -2510,9 +2631,9 @@
                                case "1022":
                                    {
                                        type = "A008";
                                        if (tag.SA1022.R5空闲 != 1)
                                        if (tag.SA1022.R5空闲 != 5)
                                        {
                                            LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} ç»ˆç‚¹1022 éžç©ºé—²ï¼Œä¸æŽ¨é€");
                                            LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} ç»ˆç‚¹1022 >{tag.SA1022.R5空闲} éžç©ºé—²ï¼Œä¸æŽ¨é€");
                                            continue;
                                        }
                                    }
@@ -2520,9 +2641,9 @@
                                case "1025":
                                    {
                                        type = "A007";
                                        if (tag.SA1025.R5空闲 != 1)
                                        if (tag.SA1025.R5空闲 != 5)
                                        {
                                            LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} ç»ˆç‚¹ 1025 éžç©ºé—²ï¼Œä¸æŽ¨é€");
                                            LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} ç»ˆç‚¹ 1025 >{tag.SA1025.R5空闲} éžç©ºé—²ï¼Œä¸æŽ¨é€");
                                            continue;
                                        }
                                    }
@@ -2530,9 +2651,9 @@
                                case "2001":
                                    {
                                        type = "A007";
                                        if (tag.SA2001.R5空闲 != 1)
                                        if (tag.SA2001.R5空闲 != 5)
                                        {
                                            LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} ç»ˆç‚¹ 2001 éžç©ºé—²ï¼Œä¸æŽ¨é€");
                                            LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} ç»ˆç‚¹ 2001>{tag.SA2001.R5空闲} éžç©ºé—²ï¼Œä¸æŽ¨é€");
                                            continue;
                                        }
                                    }
@@ -2540,9 +2661,9 @@
                                case "3001":
                                    {
                                        type = "A010";
                                        if (tag.ssx输送线.s3001.R5空闲 != 1)
                                        if (tag.ssx输送线.s3001.R5空闲 != 5)
                                        {
                                            LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} ç»ˆç‚¹ 3001 éžç©ºé—²ï¼Œä¸æŽ¨é€");
                                            LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} ç»ˆç‚¹ 3001>{tag.ssx输送线.s3001.R5空闲} éžç©ºé—²ï¼Œä¸æŽ¨é€");
                                            continue;
                                        }
                                    }
@@ -2550,9 +2671,9 @@
                                case "3006":
                                    {
                                        type = "A010";
                                        if (tag.ssx输送线.s3006.R5空闲 != 1)
                                        if (tag.ssx输送线.s3006.R5空闲 != 5)
                                        {
                                            LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} ç»ˆç‚¹ 3006 éžç©ºé—²ï¼Œä¸æŽ¨é€");
                                            LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} ç»ˆç‚¹ 3006>{tag.ssx输送线.s3001.R5空闲} éžç©ºé—²ï¼Œä¸æŽ¨é€");
                                            continue;
                                        }
                                    }
@@ -2561,7 +2682,7 @@
                        LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} ç›´æŽ¥ç”Ÿæˆå¯¹åº”任务");
                        //直接生成对应任务。
                        var res = TaskProcess.CreateTask(task.S_TASK_NO, task.S_START_LOC, task.S_END_LOC, task.S_TYPE, 6, task.S_CNTRS?.Split(',').ToList() ?? new List<string>(), type);
                        var res = TaskProcess.CreateTask(task.S_TASK_NO, task.S_START_LOC, task.S_END_LOC, task.S_TYPE, 6, task.S_CNTRS?.Split(',').ToList() ?? new List<string>(), "AGV", type);
                        LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} ç›´æŽ¥ç”Ÿæˆå¯¹åº”任务 ç»“果:{res}");
                        if (res)
@@ -2706,7 +2827,7 @@
        public string procNo()
        {
            return TaskProcess.GenerateTaskNo("日志流水号");
            return TaskProcess.GenerateTaskNo("日志流水号", "LOG");
        }
        public bool SetRedistoPlc(string key, string value, string queue, string desc)
        {
@@ -3046,13 +3167,14 @@
                LogHelper.Info("定子1号线 deviceType 5 æ²¡æœ‰é…ç½®ã€‚");
                return;
            }
            LogHelper.Info($" {VERX.deviceName} D2221>{tag.DZ1.D2221} D2221_LAST>{tag.DZ1.D2221_LAST}  D2226>{tag.DZ1.D2226}  D2226_LAST>{tag.DZ1.D2226_LAST}");
            LogHelper.Info($" {VERX.deviceName} æ—¶é—´æˆ³ {RedisHelper.Get<string>("D定子1号机械手#Timestamp", out string mg)} D2221>{tag.DZ1.D2221} D2221_LAST>{tag.DZ1.D2221_LAST}  D2226>{tag.DZ1.D2226}  D2226_LAST>{tag.DZ1.D2226_LAST}");
            if (tag.DZ1.D2221 == 1 && tag.DZ1.D2221_LAST == 0)
            {
                var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
                {
                    requestType = 7,
                    startBit = VERX.location[0],
                    endBit = "1025",
                    unLockStartBitOutbin = true
                }));
                LogHelper.Info($"{VERX.location[0]}申请mes任务结果{str}");
@@ -3076,6 +3198,7 @@
                {
                    requestType = 7,
                    startBit = VERX.location[1],
                    endBit = "1025",
                    unLockStartBitOutbin = true
                }));
                LogHelper.Info($"{VERX.location[0]}申请mes任务结果{str}");
@@ -3105,13 +3228,14 @@
                LogHelper.Info("定子2号线 deviceType 5 æ²¡æœ‰é…ç½®ã€‚");
                return;
            }
            LogHelper.Info($" {VERX.deviceName} D2221>{tag.DZ1.D2221} D2221_LAST>{tag.DZ1.D2221_LAST}  D2226>{tag.DZ1.D2226}  D2226_LAST>{tag.DZ1.D2226_LAST}");
            LogHelper.Info($" {VERX.deviceName} æ—¶é—´æˆ³ {RedisHelper.Get<string>("D定子2号机械手#Timestamp", out string mg)} D2221>{tag.DZ2.D2221} D2221_LAST>{tag.DZ2.D2221_LAST}  D2226>{tag.DZ2.D2226}  D2226_LAST>{tag.DZ2.D2226_LAST}");
            if (tag.DZ2.D2221 == 1 && tag.DZ2.D2221_LAST == 0)
            {
                var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
                {
                    requestType = 7,
                    startBit = VERX.location[0],
                    endBit = "1025",
                    unLockStartBitOutbin = true
                }));
                LogHelper.Info($"{VERX.location[0]}申请mes任务结果{str}");
@@ -3134,6 +3258,7 @@
                {
                    requestType = 7,
                    startBit = VERX.location[1],
                    endBit = "1025",
                    unLockStartBitOutbin = true
                }));
                LogHelper.Info($"{VERX.location[0]}申请mes任务结果{str}");