1
czw
2025-06-21 b0ee051fc769193f851c1b6fa49f2161462e52c5
2025Äê6ÔÂ12ÈÕ/AuxAllWCS/Build/Project/´úÂë/VS×Ô¶¨ÒåÀà/AutoThread.cs
@@ -12,6 +12,8 @@
using GZ.DB.IRepository.OIDATABASE;
using GZ.DB.Repository.OIDATABASE;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using System.Windows.Interop;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.TextBox;
namespace GZ.Projects.AuxAllWCS
{
@@ -675,58 +677,79 @@
                        LogHelper.Info($"{task1.S_TASK_NO}> end å†™ 125");
                        Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
                    }
                    else //1有任务  2 æ²¡ä»»åŠ¡ã€‚
                    else //1有任务  2 æ²¡ä»»åŠ¡ã€‚
                    {
                        LogHelper.Info($"查看RGV1 æœ‰ä»»åŠ¡{task1.S_TASK_NO},工位2 æ²¡ä»»åŠ¡ã€‚ æ‰¾åŒä¾§å–货任务。");
                        //1 å¦‚果有同侧取货任务。就取。没有
                        var leftSide = new List<string> { "1023", "1020" };
                        var RightSide = new List<string> { "1002", "1008", "1010", "1016" };
                        bool creT2 = false;
                        if (leftSide.Contains(task1.S_START_LOC))
                        // 2号 ä¼˜å…ˆç»™ 1020  1008  1016
                        var t2 = tklist.OrderBy(x => x.T_CREATE).ToList().Find(x => x.S_START_LOC == "1020" || x.S_START_LOC == "1008" || x.S_START_LOC == "1016");
                        if (t2 != null)
                        {
                            leftSide.Remove(task1.S_START_LOC);
                            var lsde = leftSide.FirstOrDefault();
                            var t2 = tklist.Find(x => x.S_START_LOC == lsde && x.S_END_LOC != "1017");
                            if (t2 != null) //同侧取货任务。
                            {
                                LogHelper.Info($"查看RGV1 æœ‰ä»»åŠ¡{task1.S_TASK_NO},工位2 æ²¡ä»»åŠ¡ã€‚ æ‰¾åŒä¾§å–货任务{t2.S_TASK_NO}。");
                                tag.RGV.workMod = 2;
                                tag.RGV.taskmod = 1;
                                tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));
                                tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);
                                t2.S_B_STATE = "已推送";
                                taskservice.Update(t2);
                                creT2 = true;
                                System.Threading.Thread.Sleep(750);
                                LogHelper.Info($"{t2.S_TASK_NO}> bit2taskOver_LAST å†™ 0");
                                RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg);
                                LogHelper.Info($"{t2.S_TASK_NO}> end å†™ 125");
                                Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
                            }
                            LogHelper.Info($"查看RGV1 æœ‰ä»»åŠ¡{task1.S_TASK_NO},工位2 æ²¡ä»»åŠ¡ã€‚ æ‰¾1020  1008  1016取货任务{t2.S_TASK_NO}。");
                            tag.RGV.workMod = 2;
                            tag.RGV.taskmod = 1;
                            tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));
                            tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);
                            t2.S_B_STATE = "已推送";
                            taskservice.Update(t2);
                            creT2 = true;
                            System.Threading.Thread.Sleep(750);
                            LogHelper.Info($"{t2.S_TASK_NO}> bit2taskOver_LAST å†™ 0");
                            RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg);
                            LogHelper.Info($"{t2.S_TASK_NO}> end å†™ 125");
                            Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
                        }
                        else if (RightSide.Contains(task1.S_START_LOC))
                        {
                            RightSide.Remove(task1.S_START_LOC);
                            var t2 = tklist.Find(x => RightSide.Contains(x.S_START_LOC) && x.S_END_LOC != "1017");
                            if (t2 != null) //同侧取货任务。
                            {
                                LogHelper.Info($"查看RGV1 æœ‰ä»»åŠ¡{task1.S_TASK_NO},工位2 æ²¡ä»»åŠ¡ã€‚ æ‰¾åŒä¾§å–货任务{t2.S_TASK_NO}。");
                                tag.RGV.workMod = 2;
                                tag.RGV.taskmod = 1;
                                tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));
                                tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);
                                t2.S_B_STATE = "已推送";
                                taskservice.Update(t2);
                                creT2 = true;
                                System.Threading.Thread.Sleep(750);
                                LogHelper.Info($"{t2.S_TASK_NO}> bit2taskOver_LAST å†™ 125");
                                RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg);
                                LogHelper.Info($"{t2.S_TASK_NO}> end å†™ 125");
                                Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
                            }
                        }
                        //else //1 ç›´æŽ¥å¸è´§ã€‚
                        if (!creT2)
                        ////2 å¦‚果有同侧取货任务。就取。没有
                        //else if (leftSide.Contains(task1.S_START_LOC))
                        //{
                        //    leftSide.Remove(task1.S_START_LOC);
                        //    var lsde = leftSide.FirstOrDefault();
                        //    t2 = tklist.Find(x => x.S_START_LOC == lsde && x.S_END_LOC != "1017");
                        //    if (t2 != null) //同侧取货任务。
                        //    {
                        //        LogHelper.Info($"查看RGV1 æœ‰ä»»åŠ¡{task1.S_TASK_NO},工位2 æ²¡ä»»åŠ¡ã€‚ æ‰¾åŒä¾§å–货任务{t2.S_TASK_NO}。");
                        //        tag.RGV.workMod = 2;
                        //        tag.RGV.taskmod = 1;
                        //        tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));
                        //        tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);
                        //        t2.S_B_STATE = "已推送";
                        //        taskservice.Update(t2);
                        //        creT2 = true;
                        //        System.Threading.Thread.Sleep(750);
                        //        LogHelper.Info($"{t2.S_TASK_NO}> bit2taskOver_LAST å†™ 0");
                        //        RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg);
                        //        LogHelper.Info($"{t2.S_TASK_NO}> end å†™ 125");
                        //        Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
                        //    }
                        //}
                        //else if (RightSide.Contains(task1.S_START_LOC))
                        //{
                        //    RightSide.Remove(task1.S_START_LOC);
                        //    t2 = tklist.Find(x => RightSide.Contains(x.S_START_LOC) && x.S_END_LOC != "1017");
                        //    if (t2 != null) //同侧取货任务。
                        //    {
                        //        LogHelper.Info($"查看RGV1 æœ‰ä»»åŠ¡{task1.S_TASK_NO},工位2 æ²¡ä»»åŠ¡ã€‚ æ‰¾åŒä¾§ 1002,1010 å–货任务{t2.S_TASK_NO}。");
                        //        tag.RGV.workMod = 2;
                        //        tag.RGV.taskmod = 1;
                        //        tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));
                        //        tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);
                        //        t2.S_B_STATE = "已推送";
                        //        taskservice.Update(t2);
                        //        creT2 = true;
                        //        System.Threading.Thread.Sleep(750);
                        //        LogHelper.Info($"{t2.S_TASK_NO}> bit2taskOver_LAST å†™ 125");
                        //        RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg);
                        //        LogHelper.Info($"{t2.S_TASK_NO}> end å†™ 125");
                        //        Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
                        //    }
                        //}
                        else //1 ç›´æŽ¥å¸è´§ã€‚
                        //if (!creT2)
                        {
                            LogHelper.Info($"查看RGV1 æœ‰ä»»åŠ¡{task1.S_TASK_NO},工位2 æ²¡ä»»åŠ¡ã€‚ æ²¡æœ‰åŒä¾§å–货任务 1工位卸货。");
                            tag.RGV.workMod = 1;
@@ -758,19 +781,19 @@
                        LogHelper.Info($"{task2.S_TASK_NO}> taskend å†™125");
                        Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
                    }
                    else //1mei ä»»åŠ¡  2 æ²¡ä»»åŠ¡ã€‚
                    else if (tklist.Any()) //1mei ä»»åŠ¡  2 æ²¡ä»»åŠ¡ã€‚
                    {
                        LogHelper.Info($"查看RGV 1工位没任务,工位2 ä¹Ÿæ²¡ä»»åŠ¡ã€‚ä¼˜å…ˆ1工位终点1017任务。。");
                        //、下 1017任务 ç»™1号工位。
                        var lss = tklist.Take(2).ToList();
                        var e1017first = lss.Find(x => x.S_END_LOC == "1017");
                        if (e1017first == null)
                        {
                            e1017first = lss.FirstOrDefault();
                        }
                        //var lss = tklist.Take(2).ToList();
                        var e1017first = tklist.Find(x => x.S_START_LOC == "1002" || x.S_START_LOC == "1010" || x.S_START_LOC == "1023");
                        //if (e1017first != null)
                        //{
                        //    e1017first = tklist.FirstOrDefault();
                        //}
                        if (e1017first != null)
                        {
                            LogHelper.Info($"查看RGV 1工位没任务,工位2 ä¹Ÿæ²¡ä»»åŠ¡ã€‚1工位下任务{e1017first.S_TASK_NO}> ç»ˆç‚¹{e1017first.S_END_LOC}。");
                            LogHelper.Info($"查看RGV1 ä»»åŠ¡å·¥ä½2 æ²¡ä»»åŠ¡ã€‚ 1002  1010  1023取货任务{e1017first.S_TASK_NO}。");
                            tag.RGV.workMod = 1;
                            tag.RGV.taskmod = 1;
                            uint tno = Convert.ToUInt32(e1017first.S_TASK_NO.Substring(4));
@@ -787,7 +810,25 @@
                            LogHelper.Info($"{e1017first.S_TASK_NO}> taskend å†™125");
                            //tag.RGV.taskend=125
                            Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
                        }
                        else
                        {
                            var t2 = tklist.OrderBy(x => x.T_CREATE).ToList().Find(x => x.S_START_LOC == "1020" || x.S_START_LOC == "1008" || x.S_START_LOC == "1016");
                            if (tklist != null)
                            {
                                LogHelper.Info($"查看RGV1 æ²¡ä»»åŠ¡å·¥ä½2 æ²¡ä»»åŠ¡ã€‚ æ‰¾1020  1008  1016取货任务{t2.S_TASK_NO}。");
                                tag.RGV.workMod = 2;
                                tag.RGV.taskmod = 1;
                                tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));
                                tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);
                                t2.S_B_STATE = "已推送";
                                taskservice.Update(t2);
                                System.Threading.Thread.Sleep(750);
                                LogHelper.Info($"{t2.S_TASK_NO}> bit2taskOver_LAST å†™ 0");
                                RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg);
                                LogHelper.Info($"{t2.S_TASK_NO}> end å†™ 125");
                                Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
                            }
                        }
                    }
                }
@@ -920,7 +961,6 @@
            }
        }
        /// <summary>
        /// 1020  1023空框下线
        /// </summary>
@@ -928,14 +968,23 @@
        public void ThreadEdown(Tag tag)
        {
            Console.WriteLine($"ThreadEdown 20 23 = ç©ºä¸‹æ£€æµ‹ =================> ");
            TaskRepository taskRepository = new TaskRepository();
            foreach (var Bssx in new string[] { "1020", "1023" })
            {
                var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($"S{Bssx}Read.RtaskState"), typeof(System.UInt16));
                var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($"S{Bssx}Read.RtaskState_LAST"), typeof(System.UInt16));
                var R托盘码 = (System.String)System.Convert.ChangeType(Conn.默认Redis.GetValue($"S{Bssx}Read.R托盘码"), typeof(System.String));
                Console.WriteLine($"{Bssx} ç©ºä¸‹æ£€æµ‹ï¼šä»»åŠ¡ç”³è¯·ï¼š{RtaskState}- æ˜¯å¦å·²å¤„理:{RtaskState_LAST}- æ‰˜ç›˜ç ï¼š{R托盘码}");
                Console.WriteLine($"{Bssx} ç©ºä¸‹æ£€æµ‹ï¼šä»»åŠ¡ç”³è¯·ï¼š{RtaskState}- æ˜¯å¦å·²å¤„理:{RtaskState_LAST}- æ‰˜ç›˜ç ï¼š{R托盘码}  ");
                if (RtaskState == 3 && RtaskState_LAST == 0)
                {
                    var task = taskRepository.FindEntity(x => x.S_START_LOC == Bssx && x.S_B_STATE != "完成" && x.S_B_STATE != "取消");
                    string msg = "";
                    if (task != null)
                    {
                        Console.WriteLine($"{Bssx} æœ‰æ­£åœ¨ [{task.S_B_STATE}] ä¸­çš„{task.S_TASK_NO}任务");
                        LogHelper.Info($"{Bssx} æœ‰æ­£åœ¨ [{task.S_B_STATE}] ä¸­çš„{task.S_TASK_NO}任务");
                        continue;
                    }
                    try
                    {
                        var listtep = new List<string>();
@@ -966,22 +1015,31 @@
                        {
                            var R5 = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($"S{item}Read.R5空闲"), typeof(System.UInt16));
                            var R5空闲_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($"S{item}Read.R5空闲_LAST"), typeof(System.UInt16));
                            if (R5 == 5 && R5空闲_LAST == 0)
                            if (R5 == 5 && R5空闲_LAST == 0 && task == null)
                            {
                                task = taskRepository.FindEntity(x => x.S_END_LOC == item && x.S_B_STATE != "完成" && x.S_B_STATE != "取消");
                                msg = "";
                                if (task != null)
                                {
                                    Console.WriteLine($" {item}有正在 [{task.S_B_STATE}] ä¸­çš„{task.S_TASK_NO}任务");
                                    LogHelper.Info($" {item}有正在 [{task.S_B_STATE}] ä¸­çš„{task.S_TASK_NO}任务");
                                    continue;
                                }
                                var b = TaskProcess.CreateTask("", Bssx, item, "空上RGV", 5, new List<string> { R托盘码 }, "RGV");
                                if (b)
                                {
                                    LogHelper.Debug($"输送线RGV空托任务 from:{Bssx}>to {item}开始创建成功");
                                    RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "1", out string msg);
                                    RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "1", out msg);
                                    //Conn.默认Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "1", $"S{Bssx}ReadQueue");
                                    RedisHelper.Add($"S{item}Read.R5空闲_LAST", "1", out string msg1);
                                    RedisHelper.Add($"S{item}Read.R5空闲_LAST", "1", out msg);
                                    //Conn.默认Redis.SetValue($"S{item}Read.R5空闲_LAST", "1", $"S{item}ReadQueue");
                                    break;
                                }
                            }
                            else if (R5 != 5 && R5空闲_LAST == 1)
                            {
                                RedisHelper.Add($"S{item}Read.R5空闲_LAST", "0", out string msg);
                                RedisHelper.Add($"S{item}Read.R5空闲_LAST", "0", out msg);
                                //Conn.默认Redis.SetValue($"S{item}Read.R5空闲_LAST", "0", $"S{item}ReadQueue");
                            }
                        }
@@ -1016,6 +1074,7 @@
        public void ThreadDdown(Tag tag)
        {
            Console.WriteLine($"ThreadDdown 08 10 ==================> 1026");
            TaskRepository taskRepository = new TaskRepository();
            foreach (var Bssx in new string[] { "1008", "1016" })
            {
                var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($"S{Bssx}Read.RtaskState"), typeof(System.UInt16));
@@ -1024,15 +1083,32 @@
                Console.WriteLine($"{Bssx} æ»¡ä¸‹æ£€æµ‹ï¼šä»»åŠ¡ç”³è¯·ï¼š{RtaskState}- æ˜¯å¦å·²å¤„理:{RtaskState_LAST}- æ‰˜ç›˜ç ï¼š{R托盘码}");
                if (RtaskState == 3 && RtaskState_LAST == 0)
                {
                    var task = taskRepository.FindEntity(x => x.S_START_LOC == Bssx && x.S_B_STATE != "完成" && x.S_B_STATE != "取消");
                    string msg = "";
                    if (task != null)
                    {
                        Console.WriteLine($"{Bssx} æœ‰æ­£åœ¨ [{task.S_B_STATE}] ä¸­çš„{task.S_TASK_NO}任务");
                        LogHelper.Info($"{Bssx} æœ‰æ­£åœ¨ [{task.S_B_STATE}] ä¸­çš„{task.S_TASK_NO}任务");
                        continue;
                    }
                    var item = "1026";
                    var R5 = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($"S{item}Read.R5空闲"), typeof(System.UInt16));
                    var R5空闲_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($"S{item}Read.R5空闲_LAST"), typeof(System.UInt16));
                    if (R5 == 5 && R5空闲_LAST == 0)
                    {
                        task = taskRepository.FindEntity(x => x.S_END_LOC == item && x.S_B_STATE != "完成" && x.S_B_STATE != "取消");
                        msg = "";
                        if (task != null)
                        {
                            Console.WriteLine($"{item} æœ‰æ­£åœ¨ [{task.S_B_STATE}] ä¸­çš„{task.S_TASK_NO}任务");
                            LogHelper.Info($"{item} æœ‰æ­£åœ¨ [{task.S_B_STATE}] ä¸­çš„{task.S_TASK_NO}任务");
                            continue;
                        }
                        var b = TaskProcess.CreateTask("", Bssx, item, "满转1026", 5, new List<string> { R托盘码 }, "RGV");
                        if (b)
                        {
                            RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "1", out string msg);
                            RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "1", out msg);
                            RedisHelper.Add($"S{item}Read.R5空闲_LAST", "1", out string msg2);
                            //Conn.默认Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "1", $"S{Bssx}ReadQueue");
                            //Conn.默认Redis.SetValue($"S{item}Read.R5空闲_LAST", "1", $"S{item}ReadQueue");
@@ -1056,6 +1132,7 @@
        public void Thread0210Down(Tag tag)
        {
            Console.WriteLine($"Thread0210Down ==================>");
            TaskRepository taskRepository = new TaskRepository();
            foreach (var Bssx in new string[] { "1002", "1010" })
            {
                var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($"S{Bssx}Read.RtaskState"), typeof(System.UInt16));
@@ -1064,15 +1141,31 @@
                Console.WriteLine($"{Bssx} æ»¡ä¸‹æ£€æµ‹ï¼šä»»åŠ¡ç”³è¯·ï¼š{RtaskState}- æ˜¯å¦å·²å¤„理:{RtaskState_LAST}- æ‰˜ç›˜ç ï¼š{R托盘码}");
                if (RtaskState == 3 && RtaskState_LAST == 0)
                {
                    var task = taskRepository.FindEntity(x => x.S_START_LOC == Bssx && x.S_B_STATE != "完成" && x.S_B_STATE != "取消");
                    string msg = "";
                    if (task != null)
                    {
                        Console.WriteLine($"{Bssx} æœ‰æ­£åœ¨ [{task.S_B_STATE}] ä¸­çš„{task.S_TASK_NO}任务");
                        LogHelper.Info($"{Bssx} æœ‰æ­£åœ¨ [{task.S_B_STATE}] ä¸­çš„{task.S_TASK_NO}任务");
                        continue;
                    }
                    var item = "1017";
                    var R5 = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($"S{item}Read.R5空闲"), typeof(System.UInt16));
                    var R5空闲_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($"S{item}Read.R5空闲_LAST"), typeof(System.UInt16));
                    if (R5 == 5 && R5空闲_LAST == 0)
                    {
                        task = taskRepository.FindEntity(x => x.S_END_LOC == item && x.S_B_STATE != "完成" && x.S_B_STATE != "取消");
                        msg = "";
                        if (task != null)
                        {
                            Console.WriteLine($"{item} æœ‰æ­£åœ¨ [{task.S_B_STATE}] ä¸­çš„{task.S_TASK_NO}任务");
                            LogHelper.Info($"{item} æœ‰æ­£åœ¨ [{task.S_B_STATE}] ä¸­çš„{task.S_TASK_NO}任务");
                            continue;
                        }
                        var b = TaskProcess.CreateTask("", Bssx, item, "满转1017", 5, new List<string> { R托盘码 }, "RGV");
                        if (b)
                        {
                            RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "1", out string msg);
                            RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "1", out msg);
                            RedisHelper.Add($"S{item}Read.R5空闲_LAST", "1", out string msg1);
                            //Conn.默认Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "1", $"S{Bssx}ReadQueue");
                            //Conn.默认Redis.SetValue($"S{item}Read.R5空闲_LAST", "1", $"S{item}ReadQueue");
@@ -1095,48 +1188,49 @@
        public void Thread下料位检测(Tag tag)
        {
            Console.WriteLine($"Thread下料位检测 ä»»åŠ¡çŠ¶æ€ï¼š{tag.FNK1.D2217}- ç©ºé—²{tag.FNK1.D2212}");
            Console.WriteLine($"Thread下料位检测    =====>");
            foreach (var ssx in new string[] { "1003", "1005", "1011", "1013" })
            {
                var RArrive = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($"FNK1003051113.RArrive{ssx}"), typeof(System.UInt16));
                var RArriveLast = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($"FNK1003051113.RArrive{ssx}_LAST"), typeof(System.UInt16));
                if (RArrive == 1 && RArriveLast == 0)
                {
                    if (ssx == "1005")
                    if (ssx == "1005" && tag.SF下料位.WRelease1005 == 0)
                    {
                        tag.FNK1.D2215 = 1;
                        //tag.SF下料位.RArrive1005_LAST = 1;
                        RedisHelper.Add($"FNK1003051113.RArrive1005_LAST", "1", out string msg);
                        tag.SF下料位.WRelease1005 = 0;
                        tag.SF下料位.WSafe0305 = 0;
                        //tag.SF下料位.WRelease1005 = 0;
                        //tag.SF下料位.WSafe0305 = 0;
                    }
                    else if (ssx == "1003")
                    else if (ssx == "1003" && tag.SF下料位.WRelease1003 == 0)
                    {
                        tag.FNK1.D2210 = 1;
                        //tag.SF下料位.RArrive1003_LAST = 1;
                        RedisHelper.Add($"FNK1003051113.RArrive1003_LAST", "1", out string msg);
                        tag.SF下料位.WRelease1003 = 0;
                        tag.SF下料位.WSafe0305 = 0;
                        //tag.SF下料位.WRelease1003 = 0;
                        //tag.SF下料位.WSafe0305 = 0;
                    }
                    else if (ssx == "1013")
                    else if (ssx == "1013" && tag.SF下料位.WRelease1013 == 0)
                    {
                        tag.FNK2.D2215 = 1;
                        //tag.SF下料位.RArrive1013_LAST = 1;
                        RedisHelper.Add($"FNK1003051113.RArrive1013_LAST", "1", out string msg);
                        tag.SF下料位.WRelease1013 = 0;
                        tag.SF下料位.WSafe1113 = 0;
                        //tag.SF下料位.WRelease1013 = 0;
                        //tag.SF下料位.WSafe1113 = 0;
                    }
                    else if (ssx == "1011")
                    else if (ssx == "1011" && tag.SF下料位.WRelease1011 == 0)
                    {
                        tag.FNK2.D2210 = 1;
                        //tag.SF下料位.RArrive1011_LAST = 1;
                        RedisHelper.Add($"FNK1003051113.RArrive1011_LAST", "1", out string msg);
                        tag.SF下料位.WRelease1011 = 0;
                        tag.SF下料位.WSafe1113 = 0;
                        //tag.SF下料位.WRelease1011 = 0;
                        //tag.SF下料位.WSafe1113 = 0;
                    }
                }
                else if (RArrive == 0 && RArriveLast == 1)
@@ -1149,10 +1243,10 @@
        public void ThreadFNK1Over(Tag tag)
        {
            Console.WriteLine($"ThreadFNK1Over ä»»åŠ¡çŠ¶æ€ï¼š{tag.FNK1.D2217}- ç©ºé—²{tag.FNK1.D2212}");
            Console.WriteLine($"ThreadFNK1Over    =====>");
            if (tag.FNK1.D2217 == 1 && tag.FNK1.D2217_LAST == 0)
            {
                //tag.FNK1.D2215 = 0;
                tag.FNK1.D2215 = 0;
                //tag.FNK1.D2212_LAST = 1;
                RedisHelper.Add($"p发那科1下线.D2217_LAST", "1", out string msg);
@@ -1169,6 +1263,7 @@
            if (tag.FNK1.D2212 == 1 && tag.FNK1.D2212_LAST == 0)
            {
                tag.FNK1.D2210 = 0;
                //tag.FNK1.D2217_LAST = 1;
                RedisHelper.Add($"p发那科1下线.D2212_LAST", "1", out string msg);
                tag.SF下料位.WRelease1003 = 1;
@@ -1189,7 +1284,7 @@
        }
        public void ThreadFNK2Over(Tag tag)
        {
            Console.WriteLine($"ThreadFNK2Over ä»»åŠ¡çŠ¶æ€ï¼š{tag.FNK2.D2217}- ç©ºé—²{tag.FNK2.D2212}");
            Console.WriteLine($"ThreadFNK2Over    =====>");
            if (tag.FNK2.D2217 == 1 && tag.FNK2.D2217_LAST == 0)
            {
                tag.FNK2.D2215 = 0;
@@ -1226,31 +1321,34 @@
            }
            if (tag.FNK2.D2211 == 1)
                tag.FNK2.D2210 = 0;
        }
        public void Thread1019Down(Tag tag)
        {
            Console.WriteLine($"1019任务状态:   =====>");
            Console.WriteLine($"1019任务状态:{tag.SA1019.RtaskState}- barcode:{tag.SA1019.R托盘码}- ç©ºé—²{tag.SA1019.R5空闲}");
        }
        public void Thread1025Up(Tag tag)
        {
            Console.WriteLine($"SA1025 ä»»åŠ¡çŠ¶æ€ï¼š   =====>");
            Console.WriteLine($"SA1025 ä»»åŠ¡çŠ¶æ€ï¼š{tag.SA1025.RtaskState}- ç©ºé—²{tag.SA1025.R5空闲}");
        }
        public void Thread1022Up(Tag tag)
        {
            Console.WriteLine($"SA1022    =====>");
            Console.WriteLine($"SA1022 ä»»åŠ¡çŠ¶æ€ï¼š{tag.SA1022.RtaskState}- ç©ºé—²{tag.SA1022.R5空闲}");
        }
        public void Thread1030Down(Tag tag)
        {
            Console.WriteLine($"SA1030 ä»»åŠ¡çŠ¶æ€ï¼š   =====>");
            Console.WriteLine($"SA1030 ä»»åŠ¡çŠ¶æ€ï¼š{tag.SA1030.RtaskState}- ç©ºé—²{tag.SA1030.R5空闲}-->对应终点2001>空闲5:{tag.SA2001.R5空闲}");
        }
        public void Thread2030Down(Tag tag)
        {
            Console.WriteLine($"SA2030 ä»»åŠ¡çŠ¶æ€ï¼š   =====>");
            Console.WriteLine($"SA2030 ä»»åŠ¡çŠ¶æ€ï¼š{tag.SA2030.RtaskState}- ç©ºé—²{tag.SA2030.R5空闲} - barcode:{tag.SA2030.R托盘码}");
        }
    }