From 8dfba1cab2ea59fca7b2c9cfad2da68e9f49b440 Mon Sep 17 00:00:00 2001
From: czw <selecti@yeah.net>
Date: 星期三, 09 七月 2025 16:39:40 +0800
Subject: [PATCH] 1

---
 2025年6月12日/AuxAllWCS/Scripts/Custom.json                   |    2 
 2025年6月12日/AuxAllWCS/RunTime/Code/变量数据库.cs                 |  117 ++++
 2025年6月12日/AuxAllWCS/Build/Project/代码/自定义类.cs              |   23 
 2025年6月12日/AuxAllWCS/RunTime/Code/设备通信.cs                  |   17 
 2025年6月12日/AuxAllWCS/Build/Project/代码/界面事件.cs              |   15 
 2025年6月12日/AuxAllWCS/Devices/PlcConfig                     |  155 ++++++
 2025年6月12日/AuxAllWCS/Build/Project/代码/VS自定义类/AutoThread.cs |  932 ++++++++++++++++++++++++++++++++----
 2025年6月12日/AuxAllWCS/Variable/变量数据库.json                   |  164 ++++++
 2025年6月12日/AuxAllWCS/Devices.rar                           |    0 
 2025年6月12日/AuxAllWCS/Net/Conn.json                         |    2 
 2025年6月12日/AuxAllWCS/Scripts/Script.json                   |   12 
 2025年6月12日/AuxAllWCS/Devices/设备通信.json                     |    2 
 12 files changed, 1,293 insertions(+), 148 deletions(-)

diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/VS\350\207\252\345\256\232\344\271\211\347\261\273/AutoThread.cs" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/VS\350\207\252\345\256\232\344\271\211\347\261\273/AutoThread.cs"
index eb835b9..10d44fc 100644
--- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/VS\350\207\252\345\256\232\344\271\211\347\261\273/AutoThread.cs"
+++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/VS\350\207\252\345\256\232\344\271\211\347\261\273/AutoThread.cs"
@@ -28,6 +28,8 @@
 using System.IO;
 using GZ.Device.Agv;
 using System.Net.NetworkInformation;
+using System.Windows.Documents;
+using System.Text.RegularExpressions;
 
 namespace GZ.Projects.AuxAllWCS
 {
@@ -128,38 +130,86 @@
         }
 
 
-        public void ThreaTotal(Tag tag)
+        public void ThreaTotal(Tag tag, Device device)
         {
             List<Task> tasks = new List<Task>();
+            tasks.Add(GetTask(delegate (Tag tag1, Device device1)
+            {
+                try
+                {
+                    foreach (var ip in new List<string> {
+                    device1.p鍙戦偅绉�涓嬬嚎.Config.IP,
+                    device1.p鍙戦偅绉�涓嬬嚎.Config.IP,
+                    device1.D瀹氬瓙1鍙锋満姊版墜.Config.IP,
+                    device1.D瀹氬瓙2鍙锋満姊版墜.Config.IP,
+                    device1.Js鎹烽『1.Config.IP,
+                    device1.Js鎹烽『2.Config.IP,
+                    device1.缁村笇灏旀姄鑷�.Config.IP,
+                    device1.缁村笇灏旀姄鑷�.Config.IP,
+                    device1.RGV.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)
+                            IsMachineOnline(matches.Value);
+                    }
+                }
+                catch (Exception ex)
+                {
+                    LogHelper.Error(ex.Message, ex);
+                }
+
+            }, tag, device, 3000));
             tasks.Add(GetTask(ThreadMXC3, tag, 3000));
             tasks.Add(GetTask(ThreadMXC4, tag, 3000));
             tasks.Add(GetTask(ResetGats, tag, 3000));
-            
+
+            tasks.Add(GetTask(sa1022, tag, 3000));
+            tasks.Add(GetTask(sa1025, tag, 3000));
+            tasks.Add(GetTask(sa1030, tag, 3000));
+            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));
 
 
 
 
             Task.WaitAll(tasks.ToArray());
         }
-        public static bool IsMachineOnline(string hostNameOrIp, int timeout = 1000)
+
+        public bool IsMachineOnline(string hostNameOrIp, int timeout = 1000)
         {
+            //device.p鍙戦偅绉�涓嬬嚎.Config.IP
+            LogHelper.Info("妫�祴ip:>" + hostNameOrIp, "IP鍦ㄧ嚎妫�祴");
+            bool res = false;
             try
             {
                 using (var ping = new Ping())
                 {
                     var reply = ping.Send(hostNameOrIp, timeout);
-                    return reply.Status == IPStatus.Success;
+                    res = reply.Status == IPStatus.Success;
                 }
             }
             catch (PingException)
             {
-                return false;
+                res = false;
             }
             catch (Exception)
             {
                 // 鍏朵粬寮傚父澶勭悊
-                return false;
+                res = false;
             }
+            finally
+            {
+                LogHelper.Info("妫�祴ip:>" + hostNameOrIp + " 缁撴灉锛� + (res ? "閫� : "涓嶉�"), "IP鍦ㄧ嚎妫�祴");
+            }
+            return res;
         }
 
         private Task GetTask(Action<Tag> action, Tag tag, int i = 2500)
@@ -182,6 +232,25 @@
             return task;
         }
 
+        private Task GetTask(Action<Tag, Device> action, Tag tag, Device dev, int i = 2500)
+        {
+            var task = Task.Run(() =>
+            {
+                while (true)
+                {
+                    try
+                    {
+                        action(tag, dev);
+                    }
+                    catch (Exception ex)
+                    {
+                        LogHelper.Error(ex.Message, ex);
+                    }
+                    Thread.Sleep(i);
+                }
+            });
+            return task;
+        }
         public string WriteLine(string value = "")
         {
 
@@ -1113,28 +1182,93 @@
                     //杞﹁蛋浜� 寮�厜鏍�                     if (!goin)
                     {
-                        if (dev.deviceType == 1)
+                        if (dev.deviceType == 4)
                         {
-                            LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 寮�惎鍏夋爡澶勭悊 =================> ");
-                            LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆� + string.Format("{0}{1}{2}", dev.deviceName + "." + (V ? "R02" : "R04"), "true", dev.deviceName + "Queue"));
-                            Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "R02" : "R04"), "true", dev.deviceName + "Queue", false);
+                            LogHelper.Info($"杞︾寮�緭閫佺嚎浜や簰>  {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} SSX AGV 浜や簰銆傘�銆�);
+                            switch (loc)
+                            {
+                                case "1019":
+                                    {
+                                        SetRedistoPlc("A1019鍙栬揣浜や簰.SOver", "true", "A1019鍙栬揣浜や簰Queue", "agv 鍙栬揣瀹屾垚鍐欏畬鎴愪氦浜�);
+                                    }
+                                    break;
+                                case "1030":
+                                    {
+                                        SetRedistoPlc("A1030鍙栬揣浜や簰.SOver", "true", "A1030鍙栬揣浜や簰Queue", "agv 鍙栬揣瀹屾垚鍐欏畬鎴愪氦浜�);
+                                    }
+                                    break;
+                                case "2030":
+                                    {
+                                        SetRedistoPlc("A2030鍙栬揣浜や簰.SOver", "true", "A2030鍙栬揣浜や簰Queue", "agv 鍙栬揣瀹屾垚鍐欏畬鎴愪氦浜�);
+                                    }
+                                    break;
+                                case "3005":
+                                    {
+                                        SetRedistoPlc("A3005鍙栬揣浜や簰.SOver", "true", "A3005鍙栬揣浜や簰Queue", "agv 鍙栬揣瀹屾垚鍐欏畬鎴愪氦浜�);
+                                    }
+                                    break;
+                                case "3010":
+                                    {
+                                        SetRedistoPlc("A3010鍙栬揣浜や簰.SOver", "true", "A3010鍙栬揣浜や簰Queue", "agv 鍙栬揣瀹屾垚鍐欏畬鎴愪氦浜�);
+                                    }
+                                    break;
+                                //}
+                                //switch (loc)
+                                //{
+                                case "1022":
+                                    {
+                                        SetRedistoPlc("A1022鏀捐揣浜や簰.SOver", "true", "A1022鏀捐揣浜や簰Queue", "agv 鏀捐揣瀹屾垚鍐欏畬鎴愪氦浜�);
+                                    }
+                                    break;
+                                case "1025":
+                                    {
+                                        SetRedistoPlc("A1025鏀捐揣浜や簰.SOver", "true", "A1025鏀捐揣浜や簰Queue", "agv 鏀捐揣瀹屾垚鍐欏畬鎴愪氦浜�);
+                                    }
+                                    break;
+                                case "2001":
+                                    {
+                                        SetRedistoPlc("A2001鏀捐揣浜や簰.SOver", "true", "A2001鏀捐揣浜や簰Queue", "agv 鏀捐揣瀹屾垚鍐欏畬鎴愪氦浜�);
+                                        tag.SA2001.wTaskNo = 20012007;
+                                        tag.SA2001.wEbit = 2007;
+                                        tag.SA2001.w鎵樼洏鐮�= TaskProcess.GenerateTaskNo("铏氭嫙鎵樼洏鍙�).Substring(3);
+                                    }
+                                    break;
+                                case "3001":
+                                    {
+                                        SetRedistoPlc("A3001鏀捐揣浜や簰.SOver", "true", "A3001鏀捐揣浜や簰Queue", "agv 鏀捐揣瀹屾垚鍐欏畬鎴愪氦浜�);
+                                    }
+                                    break;
+                                case "3006":
+                                    {
+                                        SetRedistoPlc("A3006鏀捐揣浜や簰.SOver", "true", "A3006鏀捐揣浜や簰Queue", "agv 鏀捐揣瀹屾垚鍐欏畬鎴愪氦浜�);
+                                    }
+                                    break;
+                            }
                         }
-                        else if (dev.deviceType == 2)
+                        else
                         {
-                            LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 寮�惎鍏夋爡澶勭悊 =================> ");
-                            LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆� + string.Format("{0}{1}{2}", dev.deviceName + "." + (V ? "D1222" : "D1223"), "1", dev.deviceName + "Queue"));
+                            if (dev.deviceType == 1)
+                            {
+                                LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 寮�惎鍏夋爡澶勭悊 =================> ");
+                                LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆� + string.Format("{0}{1}{2}", dev.deviceName + "." + (V ? "R02" : "R04"), "true", dev.deviceName + "Queue"));
+                                Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "R02" : "R04"), "true", dev.deviceName + "Queue", false);
+                            }
+                            else if (dev.deviceType == 2)
+                            {
+                                LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 寮�惎鍏夋爡澶勭悊 =================> ");
+                                LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆� + string.Format("{0}{1}{2}", dev.deviceName + "." + (V ? "D1222" : "D1223"), "1", dev.deviceName + "Queue"));
 
-                            Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D1220" : "D1221"), "0", dev.deviceName + "Queue");
-                            Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D1222" : "D1223"), "1", dev.deviceName + "Queue");
+                                Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D1220" : "D1221"), "0", dev.deviceName + "Queue");
+                                Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D1222" : "D1223"), "1", dev.deviceName + "Queue");
+                            }
+                            else if (dev.deviceType == 5)
+                            {
+                                LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 寮�惎鍏夋爡澶勭悊 =================> ");
+                                Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D2211" : "D2216"), "1", dev.deviceName + "Queue");
+                                Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D2212" : "D2217"), "0", dev.deviceName + "Queue");
+                            }
+                            LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 寮�惎鍏夋爡澶勭悊瀹屾垚 =================> ");
                         }
-                        else if (dev.deviceType == 5)
-                        {
-                            LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 寮�惎鍏夋爡澶勭悊 =================> ");
-                            Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D2211" : "D2216"), "1", dev.deviceName + "Queue");
-                            Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D2212" : "D2217"), "0", dev.deviceName + "Queue");
-                        }
-                        LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 寮�惎鍏夋爡澶勭悊瀹屾垚 =================> ");
-
                         item.N_CREATEMETHOD = 1;
                         item.S_REVIEW_COMMENT = $"鍏夋爡寮�惎瀹屾垚";
                         taskActRepository.Update(item);
@@ -1144,8 +1278,124 @@
                     {
                         if (dev.deviceType == 4)
                         {
-                            LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} SSX AGV 浜や簰銆傘�銆�);
+                            LogHelper.Info($"杞﹁姹傝緭閫佺嚎浜や簰> {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} SSX AGV 浜や簰銆傘�銆�);
                             //tag.SA1019.Sagverr
+                            switch (loc)
+                            {
+                                case "1019":
+                                    {
+                                        if (tag.SA1019.SreadCan)
+                                        {
+                                            LogHelper.Info($"1019 璇诲埌杈撻�绾垮厑璁搞�");
+                                            continuuuuu = true;
+                                        }
+                                        else
+                                            SetRedistoPlc("A1019鍙栬揣浜や簰.Ssetreq", "true", "A1019鍙栬揣浜や簰Queue", "鍐橝GV鐢宠");
+                                    }
+                                    break;
+                                case "1030":
+                                    {
+                                        if (tag.SA1030.SreadCan)
+                                        {
+                                            LogHelper.Info($"1030 璇诲埌杈撻�绾垮厑璁搞�");
+                                            continuuuuu = true;
+                                        }
+                                        else
+                                            SetRedistoPlc("A1030鍙栬揣浜や簰.Ssetreq", "true", "A1030鍙栬揣浜や簰Queue", "鍐橝GV鐢宠");
+                                    }
+                                    break;
+                                case "2030":
+                                    {
+                                        if (tag.SA2030.SreadCan)
+                                        {
+                                            LogHelper.Info($"2030 璇诲埌杈撻�绾垮厑璁搞�");
+                                            continuuuuu = true;
+                                        }
+                                        else
+                                            SetRedistoPlc("A2030鍙栬揣浜や簰.Ssetreq", "true", "A2030鍙栬揣浜や簰Queue", "鍐橝GV鐢宠");
+                                    }
+                                    break;
+                                case "3005":
+                                    {
+                                        if (tag.ssx杈撻�绾�s3005.SreadCan)
+                                        {
+                                            LogHelper.Info($"3005 璇诲埌杈撻�绾垮厑璁搞�");
+                                            continuuuuu = true;
+                                        }
+                                        else
+                                            SetRedistoPlc("A3005鍙栬揣浜や簰.Ssetreq", "true", "A3005鍙栬揣浜や簰Queue", "鍐橝GV鐢宠");
+                                    }
+                                    break;
+                                case "3010":
+                                    {
+                                        if (tag.ssx杈撻�绾�s3010.SreadCan)
+                                        {
+                                            LogHelper.Info($"3010 璇诲埌杈撻�绾垮厑璁搞�");
+                                            continuuuuu = true;
+                                        }
+                                        else
+                                            SetRedistoPlc("A3010鍙栬揣浜や簰.Ssetreq", "true", "A3010鍙栬揣浜や簰Queue", "鍐橝GV鐢宠");
+                                    }
+                                    break;
+                                //}
+                                //switch (loc)
+                                //{
+                                case "1022":
+                                    {
+                                        if (tag.SA1022.SreadCan)
+                                        {
+                                            LogHelper.Info($"1022 璇诲埌杈撻�绾垮厑璁搞�");
+                                            continuuuuu = true;
+                                        }
+                                        else
+                                            SetRedistoPlc("A1022鏀捐揣浜や簰.Ssetreq", "true", "A1022鏀捐揣浜や簰Queue", "鍐橝GV鐢宠");
+                                    }
+                                    break;
+                                case "1025":
+                                    {
+                                        if (tag.SA1025.SreadCan)
+                                        {
+                                            LogHelper.Info($"1025 璇诲埌杈撻�绾垮厑璁搞�");
+                                            continuuuuu = true;
+                                        }
+                                        else
+                                            SetRedistoPlc("A1025鏀捐揣浜や簰.Ssetreq", "true", "A1025鏀捐揣浜や簰Queue", "鍐橝GV鐢宠");
+                                    }
+                                    break;
+                                case "2001":
+                                    {
+                                        if (tag.SA2001.SreadCan)
+                                        {
+                                            LogHelper.Info($"2001 璇诲埌杈撻�绾垮厑璁搞�");
+                                            continuuuuu = true;
+                                        }
+                                        else
+                                            SetRedistoPlc("A2001鏀捐揣浜や簰.Ssetreq", "true", "A2001鏀捐揣浜や簰Queue", "鍐橝GV鐢宠");
+                                    }
+                                    break;
+                                case "3001":
+                                    {
+                                        if (tag.ssx杈撻�绾�s3001.SreadCan)
+                                        {
+                                            LogHelper.Info($"3001 璇诲埌杈撻�绾垮厑璁搞�");
+                                            continuuuuu = true;
+                                        }
+                                        else
+                                            SetRedistoPlc("A3001鏀捐揣浜や簰.Ssetreq", "true", "A3001鏀捐揣浜や簰Queue", "鍐橝GV鐢宠");
+                                    }
+                                    break;
+                                case "3006":
+                                    {
+                                        if (tag.ssx杈撻�绾�s3006.SreadCan)
+                                        {
+                                            LogHelper.Info($"3006 璇诲埌杈撻�绾垮厑璁搞�");
+                                            continuuuuu = true;
+                                        }
+                                        else
+                                            SetRedistoPlc("A3006鏀捐揣浜や簰.Ssetreq", "true", "A3006鏀捐揣浜や簰Queue", "鍐橝GV鐢宠");
+                                    }
+                                    break;
+                            }
                         }
                         else
                         {
@@ -1186,7 +1436,7 @@
                                     LogHelper.Info($"ThreadGrats 鍐檣(dev.deviceName + "." + (V ? "D1220" : "D1221"))}涓�1 锛�鍚庤{d12201}");
                                 }
                             }
-                            else if (dev.deviceType == 3)
+                            else if (dev.deviceType == 5)
                             {
 
                                 var close = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue(dev.deviceName + "." + (V ? "D2220" : "D2225")), typeof(System.UInt16));
@@ -1255,15 +1505,24 @@
             LogHelper.Info($"ThreadGrats deviceType5鍏夋爡鍐欏叆浣嶉噸缃�=================> ");
             //閲嶇疆淇″彿
             //foreach (var dev in Settings.deviceInfos.FindAll(x => x.deviceType == 5))
+
             {
-                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.DZ2.D2211 == 1 && tag.DZ2.D2220 == 1)
-                    tag.DZ2.D2211 = 0;
-                if (tag.DZ2.D2216 == 1 && tag.DZ2.D2225 == 1)
-                    tag.DZ2.D2216 = 0;
+                //涓�嚎鍦板潃锛�0.221.55.181     绔彛锛�000
+                //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;
+                }
+                //浜岀嚎鍦板潃锛�0.221.55.179     绔彛锛�000
+                //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;
+                }
             }
             LogHelper.Info($"ThreadGrats deviceType5鍏夋爡鍐欏叆浣嶉噸缃畬鎴愩� =================> ");
         }
@@ -1496,6 +1755,7 @@
         public void Thread涓嬫枡浣嶆娴�Tag tag)
         {
             Console.WriteLine($"Thread涓嬫枡浣嶆娴�   =====>");
+            var lsi = new List<string>();
             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));
@@ -1716,31 +1976,167 @@
 
         public void Thread1019Down(Tag tag)
         {
-            Console.WriteLine($"1019浠诲姟鐘舵�锛�  =====>");
-            Console.WriteLine($"1019浠诲姟鐘舵�锛歿tag.SA1019.RtaskState}- barcode:{tag.SA1019.R鎵樼洏鐮亇- 绌洪棽{tag.SA1019.R5绌洪棽}");
+            var taggg = tag.SA1019;
+            string vqu = "A1019鍙栬揣浜や簰";
+            Console.WriteLine($"1019浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
+            if (tag.SA1019.SOver && tag.SA1019.SreadSsxOver)
+            {
+                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "鍐橝GV鐢宠");
+                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "鍐橝GV鐢宠");
+            }
+            //Console.WriteLine($"1019浠诲姟鐘舵�锛�  =====>");
+            //Console.WriteLine($"1019浠诲姟鐘舵�锛歿tag.SA1019.RtaskState}- barcode:{tag.SA1019.R鎵樼洏鐮亇- 绌洪棽{tag.SA1019.R5绌洪棽}");
         }
+
+        private void sa2008(Tag tag)
+        {
+            var rdisTcode = RedisHelper.Get<string>($"Arrive{2008}BarcodeLast", out string msg);
+            //if(tag.ssx杈撻�绾�s2008)
+        }
+
+        private void sa2030(Tag tag)
+        {
+            var taggg = tag.SA2030;
+            string vqu = "A2030鍙栬揣浜や簰";
+            Console.WriteLine($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
+            if (tag.SA1019.SOver && tag.SA1019.SreadSsxOver)
+            {
+                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "鍐橝GV鐢宠");
+                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "鍐橝GV鐢宠");
+            }
+        }
+
+        private void sa2001(Tag tag)
+        {
+            var taggg = tag.SA2001;
+            string vqu = "A2001鏀捐揣浜や簰";
+            Console.WriteLine($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
+            if (tag.SA1019.SOver && tag.SA1019.SreadSsxOver)
+            {
+                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "鍐橝GV鐢宠");
+                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "鍐橝GV鐢宠");
+            }
+        }
+
+        private void sa1030(Tag tag)
+        {
+            var taggg = tag.SA1030;
+            string vqu = "A1030鍙栬揣浜や簰";
+            Console.WriteLine($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
+            if (tag.SA1019.SOver && tag.SA1019.SreadSsxOver)
+            {
+                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "鍐橝GV鐢宠");
+                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "鍐橝GV鐢宠");
+            }
+        }
+
+        private void sa1025(Tag tag)
+        {
+            var taggg = tag.SA1025;
+            string vqu = "A1025鏀捐揣浜や簰";
+            Console.WriteLine($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
+            if (tag.SA1019.SOver && tag.SA1019.SreadSsxOver)
+            {
+                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "鍐橝GV鐢宠");
+                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "鍐橝GV鐢宠");
+            }
+        }
+
+        private void sa1022(Tag tag)
+        {
+            var taggg = tag.SA1022;
+            string vqu = "A1022鏀捐揣浜や簰";
+            Console.WriteLine($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
+            if (tag.SA1019.SOver && tag.SA1019.SreadSsxOver)
+            {
+                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "鍐橝GV鐢宠");
+                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "鍐橝GV鐢宠");
+            }
+        }
+
+        private void sa3010(Tag tag)
+        {
+            var taggg = tag.ssx杈撻�绾�s3010;
+            string vqu = "A3010鍙栬揣浜や簰";
+            Console.WriteLine($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
+            if (tag.SA1019.SOver && tag.SA1019.SreadSsxOver)
+            {
+                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "鍐橝GV鐢宠");
+                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "鍐橝GV鐢宠");
+            }
+        }
+
+        private void sa3006(Tag tag)
+        {
+            var taggg = tag.ssx杈撻�绾�s3006;
+            string vqu = "A3006鏀捐揣浜や簰";
+            Console.WriteLine($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
+            if (tag.SA1019.SOver && tag.SA1019.SreadSsxOver)
+            {
+                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "鍐橝GV鐢宠");
+                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "鍐橝GV鐢宠");
+            }
+        }
+
+        private void sa3005(Tag tag)
+        {
+            var taggg = tag.ssx杈撻�绾�s3005;
+            string vqu = "A3005鍙栬揣浜や簰";
+            Console.WriteLine($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
+            if (tag.SA1019.SOver && tag.SA1019.SreadSsxOver)
+            {
+                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "鍐橝GV鐢宠");
+                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "鍐橝GV鐢宠");
+            }
+        }
+
+        private void sa3001(Tag tag)
+        {
+            var taggg = tag.ssx杈撻�绾�s3010;
+            string vqu = "A3001鏀捐揣浜や簰";
+            Console.WriteLine($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
+            if (tag.SA1019.SOver && tag.SA1019.SreadSsxOver)
+            {
+                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "鍐橝GV鐢宠");
+                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "鍐橝GV鐢宠");
+            }
+        }
+
         public void Thread1025Up(Tag tag)
         {
-            Console.WriteLine($"SA1025 浠诲姟鐘舵�锛�  =====>");
-            Console.WriteLine($"SA1025 浠诲姟鐘舵�锛歿tag.SA1025.RtaskState}- 绌洪棽{tag.SA1025.R5绌洪棽}");
+            //if (tag.SA1019.SOver && tag.SA1019.SreadSsxOver)
+            //{
+            //    SetRedistoPlc("A1019鍙栬揣浜や簰.Ssetreq", "false", "A1019鍙栬揣浜や簰Queue", "鍐橝GV鐢宠");
+            //    SetRedistoPlc("A1019鍙栬揣浜や簰.SOver", "false", "A1019鍙栬揣浜や簰Queue", "鍐橝GV鐢宠");
+            //}
+            //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绌洪棽}");
+            //if (tag.SA1019.SOver && tag.SA1019.SreadSsxOver)
+            //{
+            //    SetRedistoPlc("A1019鍙栬揣浜や簰.Ssetreq", "false", "A1019鍙栬揣浜や簰Queue", "娓呯悊");
+            //    SetRedistoPlc("A1019鍙栬揣浜や簰.SOver", "false", "A1019鍙栬揣浜や簰Queue", "娓呯悊");
+            //}
+            //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绌洪棽}");
+            //Console.WriteLine($"SA1030 浠诲姟鐘舵�锛�  =====>agv瀹屾垚SOver{tag.SA1030.SOver}");
+            //if (tag.SA1019.SOver && tag.SA1019.SreadSsxOver)
+            //{
+            //    SetRedistoPlc("A1022鏀捐揣浜や簰.Ssetreq", "false", "A1022鏀捐揣浜や簰Queue", "娓呯悊");
+            //    SetRedistoPlc("A1022鏀捐揣浜や簰.SOver", "false", "A1022鏀捐揣浜や簰Queue", "娓呯悊");
+            //}
+            //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鎵樼洏鐮亇");
-
-
+            //Console.WriteLine($"SA2030 浠诲姟鐘舵�锛�  =====>");
+            //Console.WriteLine($"SA2030 浠诲姟鐘舵�锛歿tag.SA2030.RtaskState}- 绌洪棽{tag.SA2030.R5绌洪棽} - barcode:{tag.SA2030.R鎵樼洏鐮亇");
 
         }
 
@@ -1761,71 +2157,360 @@
                 LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} {(sx == null ? "闈� : "鏄�)}鎬昏鏈哄櫒浜轰换鍔�);
                 if (sx == null)
                 {
+                gotoOOOOOOOOO:
                     if (string.IsNullOrEmpty(task.S_CNTRS) && !string.IsNullOrEmpty(task.S_INDEX))
                     {
                         // 鍙枡浠诲姟銆�鎸囧畾鐗╂枡涓嶆寚瀹氭墭鐩橈紝闇�鍑哄簱
-                        switch (task.S_START_LOC)
-                        {
-                            case "2030":
-                                if (!string.IsNullOrEmpty(tag.SA2030.R鎵樼洏鐮�)
-                                {
-                                    var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
+                        var ssagv = Settings.deviceInfos.Find(x => x.deviceType == 4);
+                        if (ssagv.location.Contains(task.S_START_LOC))
+                            switch (task.S_START_LOC)
+                            {
+                                case "2030":
+                                    if (!string.IsNullOrEmpty(tag.SA2030.R鎵樼洏鐮�)
                                     {
-                                        cntrCode = tag.SA2030.R鎵樼洏鐮�
-                                        type = 1
-                                    }));
-                                    var strr = JsonConvert.DeserializeObject<MES2234>(str);
-                                    if (strr.success && strr.data.materialCode == task.S_INDEX)
-                                    {
-                                        task.S_CNTRS = tag.SA2030.R鎵樼洏鐮�
-                                        taskservice.Update(task);
+                                        LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 2030 鍑哄彛鎵樼洏鍙穥tag.SA2030.R鎵樼洏鐮亇 鍖归厤鏍¢獙銆�);
+                                        var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
+                                        {
+                                            cntrCode = tag.SA2030.R鎵樼洏鐮�
+                                            type = 1
+                                        }));
+                                        var strr = JsonConvert.DeserializeObject<MES2234>(str);
+                                        if (strr.success && strr.data.materialCode == task.S_INDEX)
+                                        {
+                                            task.S_CNTRS = tag.SA2030.R鎵樼洏鐮�
+                                            taskservice.Update(task);
+                                            goto gotoOOOOOOOOO;
+                                        }
+                                        else
+                                        {
+                                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鐗╂枡{task.S_INDEX} 涓�2030 鍑哄彛鐨勬墭鐩樼墿鏂檣strr.data.materialCode}涓嶇鍚�);
+                                        }
                                     }
                                     else
                                     {
-                                        LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 2030 鍑哄彛鐨勬墭鐩樼墿鏂欎笉绗﹀悎");
+                                        //2027  2220   2013.. 璇嗗埆涓�笅锛屽紑濮嬪簱
+                                        //1 鐪�7 20 13 鏄惁鏈変换鍔°� 鏈夊垯涓嶅嚭浜嗐� 绛夊嚭鍙e垽鏂尮閰嶃�
+                                        //2  閮芥病鏈変换鍔★紝閫愪釜鍖归厤鏄惁绗﹀悎锛屽垯鍑哄簱銆�+                                        //LogHelper.Info($"");
+                                        {
+                                            var t20132027 = tag.ssx杈撻�绾�s2027;
+                                            LogHelper.Info($"璇嗗埆2027浠诲姟 鎵樼洏鍙凤細{t20132027.R鎵樼洏鐮亇 RTaskNo>{t20132027.RTaskNo} REbit>{t20132027.REbit} wTaskNo>{t20132027.wTaskNo} wEbit>{t20132027.wEbit}");
+                                            if ((t20132027.RTaskNo > 0 && t20132027.REbit == 2030) || (t20132027.wTaskNo > 0 && t20132027.wEbit == 2030))
+                                            {
+                                                LogHelper.Info($"2027浠诲姟 浠诲姟缁堢偣鏄�030 锛岀粓姝�);
+                                                continue;
+                                            }
+                                        }
+                                        {
+                                            var t20132027 = tag.ssx杈撻�绾�s2020;
+                                            LogHelper.Info($"璇嗗埆2027浠诲姟 鎵樼洏鍙凤細{t20132027.R鎵樼洏鐮亇 RTaskNo>{t20132027.RTaskNo} REbit>{t20132027.REbit} wTaskNo>{t20132027.wTaskNo} wEbit>{t20132027.wEbit}");
+                                            if ((t20132027.RTaskNo > 0 && t20132027.REbit == 2030) || (t20132027.wTaskNo > 0 && t20132027.wEbit == 2030))
+                                            {
+                                                LogHelper.Info($"2020浠诲姟 浠诲姟缁堢偣鏄�030 锛岀粓姝�);
+                                                continue;
+                                            }
+                                        }
+                                        {
+                                            var t20132027 = tag.ssx杈撻�绾�s2013;
+                                            LogHelper.Info($"璇嗗埆2027浠诲姟 鎵樼洏鍙凤細{t20132027.R鎵樼洏鐮亇 RTaskNo>{t20132027.RTaskNo} REbit>{t20132027.REbit} wTaskNo>{t20132027.wTaskNo} wEbit>{t20132027.wEbit}");
+                                            if ((t20132027.RTaskNo > 0 && t20132027.REbit == 2030) || (t20132027.wTaskNo > 0 && t20132027.wEbit == 2030))
+                                            {
+                                                LogHelper.Info($"2013浠诲姟 浠诲姟缁堢偣鏄�030 锛岀粓姝�);
+                                                continue;
+                                            }
+                                        }
+                                        if (!string.IsNullOrEmpty(tag.ssx杈撻�绾�s2027.R鎵樼洏鐮�)
+                                        {
+                                            var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
+                                            {
+                                                cntrCode = tag.ssx杈撻�绾�s2027.R鎵樼洏鐮�
+                                                type = 1
+                                            }));
+                                            var strr = JsonConvert.DeserializeObject<MES2234>(str);
+                                            if (strr.success && strr.data.materialCode == task.S_INDEX)
+                                            {
+                                                LogHelper.Info($"2027 璇诲埌鎵樼洏{tag.ssx杈撻�绾�s2027.R鎵樼洏鐮亇 鍖归厤鎴愬姛锛屽啓浠诲姟鍙凤細20272030锛岀粓鐐癸細2030 鍜屾墭鐩樼爜鍚岃");
+                                                tag.ssx杈撻�绾�s2027.wTaskNo = 20272030;
+                                                tag.ssx杈撻�绾�s2027.wEbit = 2030;
+                                                tag.ssx杈撻�绾�s2027.w鎵樼洏鐮�= tag.ssx杈撻�绾�s2027.R鎵樼洏鐮�
+                                                LogHelper.Info($"2027 > 2030  SSX浠诲姟涓嬪彂瀹屾垚銆�);
+                                                continue;
+                                            }
+                                        }
+                                        if (!string.IsNullOrEmpty(tag.ssx杈撻�绾�s2020.R鎵樼洏鐮�)
+                                        {
+                                            var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
+                                            {
+                                                cntrCode = tag.ssx杈撻�绾�s2020.R鎵樼洏鐮�
+                                                type = 1
+                                            }));
+                                            var strr = JsonConvert.DeserializeObject<MES2234>(str);
+                                            if (strr.success && strr.data.materialCode == task.S_INDEX)
+                                            {
+                                                LogHelper.Info($"2020 璇诲埌鎵樼洏{tag.ssx杈撻�绾�s2020.R鎵樼洏鐮亇 鍖归厤鎴愬姛锛屽啓浠诲姟鍙凤細20202030锛岀粓鐐癸細2030 鍜屾墭鐩樼爜鍚岃");
+                                                tag.ssx杈撻�绾�s2020.wTaskNo = 20202030;
+                                                tag.ssx杈撻�绾�s2020.wEbit = 2030;
+                                                tag.ssx杈撻�绾�s2020.w鎵樼洏鐮�= tag.ssx杈撻�绾�s2020.R鎵樼洏鐮�
+                                                LogHelper.Info($"2020 > 2030  SSX浠诲姟涓嬪彂瀹屾垚銆�);
+                                                continue;
+                                            }
+                                        }
+                                        if (!string.IsNullOrEmpty(tag.ssx杈撻�绾�s2013.R鎵樼洏鐮�)
+                                        {
+                                            var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
+                                            {
+                                                cntrCode = tag.ssx杈撻�绾�s2013.R鎵樼洏鐮�
+                                                type = 1
+                                            }));
+                                            var strr = JsonConvert.DeserializeObject<MES2234>(str);
+                                            if (strr.success && strr.data.materialCode == task.S_INDEX)
+                                            {
+                                                LogHelper.Info($"2013 璇诲埌鎵樼洏{tag.ssx杈撻�绾�s2013.R鎵樼洏鐮亇 鍖归厤鎴愬姛锛屽啓浠诲姟鍙凤細20132030锛岀粓鐐癸細2030 鍜屾墭鐩樼爜鍚岃");
+                                                tag.ssx杈撻�绾�s2013.wTaskNo = 20132030;
+                                                tag.ssx杈撻�绾�s2013.wEbit = 2030;
+                                                tag.ssx杈撻�绾�s2013.w鎵樼洏鐮�= tag.ssx杈撻�绾�s2013.R鎵樼洏鐮�
+                                                LogHelper.Info($"2013 > 2030  SSX浠诲姟涓嬪彂瀹屾垚銆�);
+                                                continue;
+                                            }
+                                        }
+                                        LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鏃ュ織鑳借窇鍒拌繖锛岃鏄庢病鐗╂枡锛屾垨鑰呴兘涓嶇鍚�鏃犳硶鍘�030");
                                     }
-                                }
-                                else
-                                {
-                                    //TODO------------------2027  2220   2013.. 璇嗗埆涓�笅锛屽紑濮嬪簱
-                                }
-                                break;
-                            case "1019":
-                                if (!string.IsNullOrEmpty(tag.SA1019.R鎵樼洏鐮�)
-                                {
-                                    var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
+                                    break;
+                                case "1019":
+                                    if (!string.IsNullOrEmpty(tag.SA1019.R鎵樼洏鐮�)
                                     {
-                                        cntrCode = tag.SA1019.R鎵樼洏鐮�
-                                        type = 2
-                                    }));
-                                    var strr = JsonConvert.DeserializeObject<MES2234>(str);
-                                    if (strr.success && strr.data.materialCode == task.S_INDEX)
-                                    {
-                                        task.S_CNTRS = tag.SA2030.R鎵樼洏鐮�
-                                        taskservice.Update(task);
+                                        var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
+                                        {
+                                            cntrCode = tag.SA1019.R鎵樼洏鐮�
+                                            type = 2
+                                        }));
+                                        var strr = JsonConvert.DeserializeObject<MES2234>(str);
+                                        if (strr.success && strr.data.materialCode == task.S_INDEX)
+                                        {
+                                            task.S_CNTRS = tag.SA2030.R鎵樼洏鐮�
+                                            taskservice.Update(task);
+                                            goto gotoOOOOOOOOO;
+                                        }
+                                        else
+                                        {
+                                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鐗╂枡{task.S_INDEX} 涓�1019 鍑哄彛鐨勬墭鐩樼墿鏂檣strr.data.materialCode}涓嶇鍚�);
+                                        }
                                     }
-                                    else
+                                    break;
+                                //case "1030":
+                                //    {
+
+                                //    }
+                                //break;
+                                case "3005":
                                     {
-                                        LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 1019 鍑哄彛鐨勬墭鐩樼墿鏂欎笉绗﹀悎");
+                                        if (!string.IsNullOrEmpty(tag.ssx杈撻�绾�s3005.R鎵樼洏鐮�)
+                                        {
+                                            var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
+                                            {
+                                                cntrCode = tag.ssx杈撻�绾�s3005.R鎵樼洏鐮�
+                                                type = 2
+                                            }));
+                                            var strr = JsonConvert.DeserializeObject<MES2234>(str);
+                                            if (strr.success && strr.data.materialCode == task.S_INDEX)
+                                            {
+                                                task.S_CNTRS = tag.ssx杈撻�绾�s3005.R鎵樼洏鐮�
+                                                taskservice.Update(task);
+                                                goto gotoOOOOOOOOO;
+                                            }
+                                            else
+                                            {
+                                                LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鐗╂枡{task.S_INDEX} 涓�3010 鍑哄彛鐨勬墭鐩樼墿鏂檣strr.data.materialCode}涓嶇鍚�);
+                                            }
+                                        }
                                     }
-                                }
-                                break;
-                        }
+                                    break;
+                                case "3010":
+                                    {
+                                        if (!string.IsNullOrEmpty(tag.ssx杈撻�绾�s3010.R鎵樼洏鐮�)
+                                        {
+                                            var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
+                                            {
+                                                cntrCode = tag.ssx杈撻�绾�s3010.R鎵樼洏鐮�
+                                                type = 2
+                                            }));
+                                            var strr = JsonConvert.DeserializeObject<MES2234>(str);
+                                            if (strr.success && strr.data.materialCode == task.S_INDEX)
+                                            {
+                                                task.S_CNTRS = tag.ssx杈撻�绾�s3010.R鎵樼洏鐮�
+                                                taskservice.Update(task);
+                                                goto gotoOOOOOOOOO;
+                                            }
+                                            else
+                                            {
+                                                LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鐗╂枡{task.S_INDEX} 涓�3010 鍑哄彛鐨勬墭鐩樼墿鏂檣strr.data.materialCode}涓嶇鍚�);
+                                            }
+                                        }
+                                    }
+                                    break;
+                            }
+                        //else if (ssagv.location.Contains(task.S_END_LOC))
+                        //    switch (task.S_END_LOC)
+                        //    {
+                        //        case "1022":
+                        //            {
+                        //                if (tag.SA1022.R5绌洪棽 != 1)
+                        //                {
+                        //                    LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣1022 闈炵┖闂诧紝涓嶆帹閫�);
+                        //                    continue;
+                        //                }
+                        //            }
+                        //            break;
+                        //        case "1025":
+                        //            {
+                        //                if (tag.SA1025.R5绌洪棽 != 1)
+                        //                {
+                        //                    LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣 1025 闈炵┖闂诧紝涓嶆帹閫�);
+                        //                    continue;
+                        //                }
+                        //            }
+                        //            break;
+                        //        case "2001":
+                        //            {
+                        //                if (tag.SA2001.R5绌洪棽 != 1)
+                        //                {
+                        //                    LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣 2001 闈炵┖闂诧紝涓嶆帹閫�);
+                        //                    continue;
+                        //                }
+                        //            }
+                        //            break;
+                        //        case "3001":
+                        //            {
+                        //                if (tag.ssx杈撻�绾�s3001.R5绌洪棽 != 1)
+                        //                {
+                        //                    LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣 3001 闈炵┖闂诧紝涓嶆帹閫�);
+                        //                    continue;
+                        //                }
+                        //            }
+                        //            break;
+                        //        case "3006":
+                        //            {
+                        //                if (tag.ssx杈撻�绾�s3006.R5绌洪棽 != 1)
+                        //                {
+                        //                    LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣 3006 闈炵┖闂诧紝涓嶆帹閫�);
+                        //                    continue;
+                        //                }
+                        //            }
+                        //            break;
+                        //    }
                     }
                     else
                     {
+                        //if (new List<string> { "2001", "1022", "1025", "3001", "3006" }.Contains(task.S_END_LOC))
+                        //{
+                        //}
+                        //if (new List<string> { "1019"/*, "1030"*/, "2030", "3005", "3010" }.Contains(task.S_START_LOC))  //1030 鏄富鍔ㄧ敵璇凤紝 涓嶇敤鍒ゆ柇銆�+                        //{
+                        //    //鐗╂枡鍖归厤鍒ゆ柇銆傚拰 2030鍒ゆ柇
+                        //}
+                        string type = "";
+                        if (new List<string> { "1019"/*, "1030"*/, "2030", "3005", "3010" }.Contains(task.S_START_LOC))
+                            switch (task.S_START_LOC)
+                            {
+                                case "1019":
+                                    {
+                                        type = "A009";
+                                        if (tag.SA1019.RtaskState != 4)
+                                        {
+                                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 璧风偣 1019 RtaskState>{tag.SA1019.RtaskState} 鏈敵璇稲GV浠诲姟锛屼笉鎺ㄩ�");
+                                            continue;
+                                        }
+                                    }
+                                    break;
+                                case "2030":
+                                    {
+                                        type = "A007";
+                                        if (tag.SA2030.RtaskState != 4)
+                                        {
+                                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 璧风偣 2030 RtaskState>{tag.SA2030.RtaskState} 鏈敵璇稲GV浠诲姟锛屼笉鎺ㄩ�");
+                                            continue;
+                                        }
+                                    }
+                                    break;
+                                case "3005":
+                                    {
+                                        type = "A010";
+                                        if (tag.ssx杈撻�绾�s3005.RtaskState != 4)
+                                        {
+                                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 璧风偣 3005 RtaskState>{tag.ssx杈撻�绾�s3005.RtaskState} 鏈敵璇稲GV浠诲姟锛屼笉鎺ㄩ�");
+                                            continue;
+                                        }
+                                    }
+                                    break;
+                                case "3010":
+                                    {
+                                        type = "A010";
+                                        if (tag.ssx杈撻�绾�s3010.RtaskState != 4)
+                                        {
+                                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 璧风偣 3010 RtaskState>{tag.ssx杈撻�绾�s3010.RtaskState} 鏈敵璇稲GV浠诲姟锛屼笉鎺ㄩ�");
+                                            continue;
+                                        }
+                                    }
+                                    break;
+                            }
                         if (new List<string> { "2001", "1022", "1025", "3001", "3006" }.Contains(task.S_END_LOC))
-                        {
-                            //------------------
-                        }
-                        else if (new List<string> { "1019"/*, "1030"*/, "2030", "3005", "3010" }.Contains(task.S_START_LOC))  //1030 鏄富鍔ㄧ敵璇凤紝 涓嶇敤鍒ゆ柇銆�-                        {
-
-                        }
+                            switch (task.S_END_LOC)
+                            {
+                                case "1022":
+                                    {
+                                        type = "A008";
+                                        if (tag.SA1022.R5绌洪棽 != 1)
+                                        {
+                                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣1022 闈炵┖闂诧紝涓嶆帹閫�);
+                                            continue;
+                                        }
+                                    }
+                                    break;
+                                case "1025":
+                                    {
+                                        type = "A007";
+                                        if (tag.SA1025.R5绌洪棽 != 1)
+                                        {
+                                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣 1025 闈炵┖闂诧紝涓嶆帹閫�);
+                                            continue;
+                                        }
+                                    }
+                                    break;
+                                case "2001":
+                                    {
+                                        type = "A007";
+                                        if (tag.SA2001.R5绌洪棽 != 1)
+                                        {
+                                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣 2001 闈炵┖闂诧紝涓嶆帹閫�);
+                                            continue;
+                                        }
+                                    }
+                                    break;
+                                case "3001":
+                                    {
+                                        type = "A010";
+                                        if (tag.ssx杈撻�绾�s3001.R5绌洪棽 != 1)
+                                        {
+                                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣 3001 闈炵┖闂诧紝涓嶆帹閫�);
+                                            continue;
+                                        }
+                                    }
+                                    break;
+                                case "3006":
+                                    {
+                                        type = "A010";
+                                        if (tag.ssx杈撻�绾�s3006.R5绌洪棽 != 1)
+                                        {
+                                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣 3006 闈炵┖闂诧紝涓嶆帹閫�);
+                                            continue;
+                                        }
+                                    }
+                                    break;
+                            }
 
                         LogHelper.Info($"瑙i噴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>());
+                        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);
 
                         LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鐩存帴鐢熸垚瀵瑰簲浠诲姟 缁撴灉锛歿res}");
                         if (res)
@@ -1968,7 +2653,18 @@
             }
         }
 
-
+        public string procNo()
+        {
+            return TaskProcess.GenerateTaskNo("鏃ュ織娴佹按鍙�);
+        }
+        public bool SetRedistoPlc(string key, string value, string queue, string desc)
+        {
+            var vnc = procNo();
+            LogHelper.Info($"{vnc}>>Redis.SetValue鍐檖lc 鎻忚堪锛歿desc} tagName:{key},value:{value},queue:{queue}");
+            var v = Conn.榛樿Redis.SetValue(key, value, queue);
+            LogHelper.Info($"{vnc}>> 鍐欏叆缁撴灉{v}");
+            return v;
+        }
         public HkReturnResult OperateHKTaskStatus(HaiKangOrderInfo model)
         {
             // 鏌ヨ浠诲姟锛氭牴鎹换鍔″彿
@@ -2037,6 +2733,16 @@
                                     //    Conn.榛樿Redis.SetValue(device.deviceName + "." + V, "0", device.deviceName + "Queue");
                                     //});
                                 }
+                                else
+                                    switch (device.deviceType)
+                                    {
+                                        case 4:
+                                            {
+
+                                            }
+                                            break;
+
+                                    }
                             }
                             //LocationHelper.UnLockLoc(wcsTask.S_START_LOC);
                             break;
@@ -2131,31 +2837,29 @@
                                         LogHelper.Info($"{ssloc}鐢宠mes浠诲姟缁撴灉{str}");
                                     }
                                 }
-                                switch (device2.deviceType)
-                                {
-                                    case 4:
-                                        {
-                                            if (wcsTask.S_END_LOC == "2001")
+                                else
+                                    switch (device2.deviceType)
+                                    {
+                                        case 4:
                                             {
 
                                             }
-                                        }
-                                        break;
-                                    case 5:
-                                        {
-                                            var inde = device2.location.ToList().FindIndex(x => x == wcsTask.S_END_LOC) == 0;
-                                            string V = inde ? "D2210" : "D2215";
-                                            Conn.榛樿Redis.SetValue(device2.deviceName + "." + V, "1", device2.deviceName + "Queue");
-                                        }
-                                        break;
-                                    case 6:
-                                        {
-                                            //var inde = device2.location.ToList().FindIndex(x => x == wcsTask.S_END_LOC) == 0;
-                                            //string V = inde ? "D2210" : "D2215";
-                                            //Conn.榛樿Redis.SetValue(device2.deviceName + "." + V, "1", device2.deviceName + "Queue");
-                                        }
-                                        break;
-                                }
+                                            break;
+                                        case 5:
+                                            {
+                                                var inde = device2.location.ToList().FindIndex(x => x == wcsTask.S_END_LOC) == 0;
+                                                string V = inde ? "D2210" : "D2215";
+                                                Conn.榛樿Redis.SetValue(device2.deviceName + "." + V, "1", device2.deviceName + "Queue");
+                                            }
+                                            break;
+                                        case 6:
+                                            {
+                                                //var inde = device2.location.ToList().FindIndex(x => x == wcsTask.S_END_LOC) == 0;
+                                                //string V = inde ? "D2210" : "D2215";
+                                                //Conn.榛樿Redis.SetValue(device2.deviceName + "." + V, "1", device2.deviceName + "Queue");
+                                            }
+                                            break;
+                                    }
                             }
 
                             //LocationMethod.JudgeLocation(wcsTask);
diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/\347\225\214\351\235\242\344\272\213\344\273\266.cs" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/\347\225\214\351\235\242\344\272\213\344\273\266.cs"
index c49a6e7..277fb05 100644
--- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/\347\225\214\351\235\242\344\272\213\344\273\266.cs"
+++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/\347\225\214\351\235\242\344\272\213\344\273\266.cs"
@@ -63,6 +63,7 @@
             }
             View1_Init(sender, e);
 
+
             /// <summary>
             /// 绋嬪簭鐗囨:鍒濆鍖栭厤缃�             /// 鎻忚堪:
@@ -810,16 +811,8 @@
                     {
                         #region    [鑴氭湰][20250323151832119][涓氬姟閫昏緫.Ipping]
 
-                        //LogHelper.Info($"<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>");
-                        //LogHelper.Info($"<<<<<<<<<<<<<<<<<绋嬪簭路鍚姩>>>>>>>>>>>>>>");
-
-                        //// 浣跨敤鎷︽埅鍣�-                        //var interceptor = new ConsoleInterceptor();
-                        //Console.SetOut(interceptor);
-
-                        //LogHelper.Info($"<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>");
-                        //AnsiConsole.Markup("[underline red]Hello[/] World!");
-                        // AnsiConsole.Markup("[underline red]Hello[/] World!");
+                        //var hkr = AutoThread.InvokeMethod(AutoThread.Instance, "IsMachineOnline", new object[] { "192.168.1.103", 1000 });
+                        //Console.WriteLine("192.168.1.103 > " + hkr.ToString());
                         #endregion [鑴氭湰][20250323151832119][涓氬姟閫昏緫.Ipping]
                     }
                     catch (Exception ex)
@@ -848,7 +841,7 @@
                     try
                     {
                         #region    [鑴氭湰][20250708095248653][涓氬姟閫昏緫.鏂扮嚎绋嬫�绾縘
-                        AutoThread.InvokeMethod(AutoThread.Instance, "ThreaTotal", new object[] { tag });
+                        AutoThread.InvokeMethod(AutoThread.Instance, "ThreaTotal", new object[] { tag, Device });
                         #endregion [鑴氭湰][20250708095248653][涓氬姟閫昏緫.鏂扮嚎绋嬫�绾縘
                     }
                     catch (Exception ex)
diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/\350\207\252\345\256\232\344\271\211\347\261\273.cs" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/\350\207\252\345\256\232\344\271\211\347\261\273.cs"
index 9159ff1..51db9f9 100644
--- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/\350\207\252\345\256\232\344\271\211\347\261\273.cs"
+++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/\350\207\252\345\256\232\344\271\211\347\261\273.cs"
@@ -143,7 +143,7 @@
         /// </summary>
         static LogFactory()
         {
-            var loggerNames = new List<string>() { "HosttoagvTask", "HosttoagvCar", "NDC", "鏉ゥ" };
+            var loggerNames = new List<string>() { "HosttoagvTask", "HosttoagvCar", "NDC", "鏉ゥ","IP鍦ㄧ嚎妫�祴" };
             LogManager.Configuration = DefaultConfig(loggerNames);
         }
         public static ILogger CreateLogger(string name)
@@ -522,15 +522,13 @@
     {
         #region    [鑷畾涔夌被][20250325131633664][SYSHelper]
         private static object locker = new object();
-        internal static int GetSerialNumber(string snType, string prefix, string Vend = "0")
+        internal static int GetSerialNumber(string snType, string prefix)
         {
-            if (Vend == "1")
-                Vend = DateTime.Now.ToString("yyMMdd");
             int result = 0;
             lock (locker)
             {
                 SYSRepository sysservice = new SYSRepository();
-                var sId = sysservice.FindEntity(a => a.CN_S_TYPE.Trim() == snType && a.CN_S_PRE.Trim() == prefix + Vend);
+                var sId = sysservice.FindEntity(a => a.CN_S_TYPE.Trim() == snType && a.CN_S_PRE.Trim() == prefix);
 
                 if (sId != null)
                 {
@@ -552,7 +550,7 @@
                 }
                 else
                 {
-                    sId = new SYSEntity { CN_S_TYPE = snType, CN_T_LAST = DateTime.Now, CN_S_PRE = prefix + Vend, CN_N_MAX = 0, CN_S_APP_TYPE = "WCS" };
+                    sId = new SYSEntity { CN_S_TYPE = snType, CN_T_LAST = DateTime.Now, CN_S_PRE = prefix , CN_N_MAX = 0, CN_S_APP_TYPE = "WCS" };
                     sysservice.Insert(sId);
                 }
             }
@@ -563,7 +561,7 @@
     public class TaskProcess
     {
         #region    [鑷畾涔夌被][20250325152141671][TaskProcess]
-        internal static bool CreateTask(string no, string from, string to, string taskType, int pri, List<string> cntrs, string workMode = "AGV", int cntrCount = 1, int startLayer = 1, int endLayer = 1)
+        internal static bool CreateTask(string no, string from, string to, string taskType, int pri, List<string> cntrs, string workMode = "AGV", string S_INDEX = "", int cntrCount = 1, int startLayer = 1, int endLayer = 1)
         {
 
             LogHelper.Info($"鍒涘缓浠诲姟 from:{from}>to {to}寮�鍒涘缓>");
@@ -572,11 +570,12 @@
             var fromLoc = locc.FindEntity(x => x.S_LOC_CODE == from);
             var endLoc = locc.FindEntity(x => x.S_LOC_CODE == to);
 
-            var s = Settings.deviceInfos.Find(x => x.location.Contains(from)) != null;
-            var e = Settings.deviceInfos.Find(x => x.location.Contains(to)) != null;
             string t = "";
-            if (workMode == "AGV")
+            if (workMode == "AGV" && string.IsNullOrEmpty(S_INDEX))
             {
+                var s = Settings.deviceInfos.Find(x => x.location.Contains(from)) != null;
+                var e = Settings.deviceInfos.Find(x => x.location.Contains(to)) != null;
+
                 t = "F01";
                 if (s && !e) t = "A002";
                 if (!s && e) t = "A003";
@@ -652,10 +651,10 @@
             taskserice.Insert(action);
         }
 
-        public static System.String GenerateTaskNo()
+        public static System.String GenerateTaskNo(string snType = "浠诲姟鍙�)
         {
-            var id = SYSHelper.GetSerialNumber("浠诲姟鍙�, "TN", "1");
             var date = DateTime.Now.ToString("yyMMdd");
+            var id = SYSHelper.GetSerialNumber(snType, date);
             return $"TN{date}{id.ToString().PadLeft(4, '0')}";
         }
         #endregion [鑷畾涔夌被][20250325152141671][TaskProcess]
diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices.rar" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices.rar"
new file mode 100644
index 0000000..86b22f6
--- /dev/null
+++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices.rar"
Binary files differ
diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices/PlcConfig" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices/PlcConfig"
index 6dbb349..e69ff57 100644
--- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices/PlcConfig"
+++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices/PlcConfig"
@@ -9367,8 +9367,161 @@
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
+    },
+    {
+      "ParamList": [
+        {
+          "Id": "20250709163122958",
+          "Order": 1,
+          "Name": "RTaskNo",
+          "FullName": "S2008Read.RTaskNo",
+          "DataType": "System.UInt32",
+          "DataValue": "",
+          "SetValue": "",
+          "Address": "DB100.562",
+          "AddrType": "",
+          "Length": 2,
+          "Desc": "鎵ц浠诲姟鍙�,
+          "Trigger": false,
+          "Reserve1": "",
+          "Reserve2": "",
+          "Reserve3": ""
+        },
+        {
+          "Id": "20250709163122973",
+          "Order": 2,
+          "Name": "RSbit",
+          "FullName": "S2008Read.RSbit",
+          "DataType": "System.UInt16",
+          "DataValue": "",
+          "SetValue": "",
+          "Address": "DB100.566",
+          "AddrType": "",
+          "Length": 1,
+          "Desc": "璧峰鍦板潃",
+          "Trigger": false,
+          "Reserve1": "",
+          "Reserve2": "",
+          "Reserve3": ""
+        },
+        {
+          "Id": "20250709163122989",
+          "Order": 3,
+          "Name": "REbit",
+          "FullName": "S2008Read.REbit",
+          "DataType": "System.UInt16",
+          "DataValue": "",
+          "SetValue": "",
+          "Address": "DB100.568",
+          "AddrType": "",
+          "Length": 1,
+          "Desc": "鐩爣鍦板潃",
+          "Trigger": false,
+          "Reserve1": "",
+          "Reserve2": "",
+          "Reserve3": ""
+        },
+        {
+          "Id": "20250709163123005",
+          "Order": 4,
+          "Name": "RworkMode",
+          "FullName": "S2008Read.RworkMode",
+          "DataType": "System.UInt16",
+          "DataValue": "",
+          "SetValue": "",
+          "Address": "DB100.570",
+          "AddrType": "",
+          "Length": 1,
+          "Desc": "宸ヤ綔妯″紡 0-鏃犳晥,1-鎵嬪姩,2-鑱旀満,3-鑴辨満   ",
+          "Trigger": false,
+          "Reserve1": "",
+          "Reserve2": "",
+          "Reserve3": ""
+        },
+        {
+          "Id": "20250709163123019",
+          "Order": 5,
+          "Name": "Rstate",
+          "FullName": "S2008Read.Rstate",
+          "DataType": "System.UInt16",
+          "DataValue": "",
+          "SetValue": "",
+          "Address": "DB100.572",
+          "AddrType": "",
+          "Length": 1,
+          "Desc": "鐘舵�鏍囧織",
+          "Trigger": false,
+          "Reserve1": "",
+          "Reserve2": "",
+          "Reserve3": ""
+        },
+        {
+          "Id": "20250709163123036",
+          "Order": 6,
+          "Name": "RtaskState",
+          "FullName": "S2008Read.RtaskState",
+          "DataType": "System.UInt16",
+          "DataValue": "",
+          "SetValue": "",
+          "Address": "DB100.574",
+          "AddrType": "",
+          "Length": 1,
+          "Desc": "0-鏃犳晥,1-浠诲姟鐢宠,2-浠诲姟鎺ユ敹瀹屾垚,3-鐢宠RGV浠诲姟 4-鐢宠agv浠诲姟",
+          "Trigger": true,
+          "Reserve1": "",
+          "Reserve2": "",
+          "Reserve3": ""
+        },
+        {
+          "Id": "20250709163123051",
+          "Order": 7,
+          "Name": "R5绌洪棽",
+          "FullName": "S2008Read.R5绌洪棽",
+          "DataType": "System.UInt16",
+          "DataValue": "",
+          "SetValue": "",
+          "Address": "DB100.600",
+          "AddrType": "",
+          "Length": 1,
+          "Desc": "0-鏃犳晥锛�-绌洪棽鐘舵�",
+          "Trigger": false,
+          "Reserve1": "",
+          "Reserve2": "",
+          "Reserve3": ""
+        },
+        {
+          "Id": "20250709163123066",
+          "Order": 8,
+          "Name": "R鎵樼洏鐮�,
+          "FullName": "S2008Read.R鎵樼洏鐮�,
+          "DataType": "System.String",
+          "DataValue": "",
+          "SetValue": "",
+          "Address": "DB100.602",
+          "AddrType": "",
+          "Length": 10,
+          "Desc": "鎵樼洏鐮�,
+          "Trigger": false,
+          "Reserve1": "",
+          "Reserve2": "",
+          "Reserve3": ""
+        }
+      ],
+      "GroupList": [],
+      "Id": "1000050",
+      "Name": "S2008Read",
+      "Desc": "",
+      "Brand": "Siemens",
+      "Model": "S7_1500",
+      "Comm": "S7Net",
+      "IP": "10.221.55.150:102[0,1][v1.0]",
+      "RedisQueueName": "S2008ReadQueue",
+      "IsSimulate": false,
+      "Reserve1": "",
+      "Reserve2": "",
+      "Reserve3": ""
     }
   ],
   "CreationTime": "2025-02-26 15:31:23",
-  "LastWriteTime": "2025-07-09 09:42:51"
+  "LastWriteTime": "2025-07-09 16:33:01"
 }
\ No newline at end of file
diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices/\350\256\276\345\244\207\351\200\232\344\277\241.json" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices/\350\256\276\345\244\207\351\200\232\344\277\241.json"
index effa7ab..f763782 100644
--- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices/\350\256\276\345\244\207\351\200\232\344\277\241.json"
+++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices/\350\256\276\345\244\207\351\200\232\344\277\241.json"
@@ -2,5 +2,5 @@
   "ProjectSn": "1",
   "DeviceList": [],
   "CreationTime": "2025-02-26 15:31:23",
-  "LastWriteTime": "2025-07-09 09:42:51"
+  "LastWriteTime": "2025-07-09 16:33:10"
 }
\ No newline at end of file
diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Net/Conn.json" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Net/Conn.json"
index bd48f57..3c1c18c 100644
--- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Net/Conn.json"
+++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Net/Conn.json"
@@ -340,5 +340,5 @@
     }
   ],
   "CreationTime": "2025-02-26 15:31:23",
-  "LastWriteTime": "2025-07-08 10:35:41"
+  "LastWriteTime": "2025-07-09 11:40:07"
 }
\ No newline at end of file
diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/RunTime/Code/\345\217\230\351\207\217\346\225\260\346\215\256\345\272\223.cs" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/RunTime/Code/\345\217\230\351\207\217\346\225\260\346\215\256\345\272\223.cs"
index 5c630d6..bf1cb02 100644
--- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/RunTime/Code/\345\217\230\351\207\217\346\225\260\346\215\256\345\272\223.cs"
+++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/RunTime/Code/\345\217\230\351\207\217\346\225\260\346\215\256\345\272\223.cs"
@@ -6824,6 +6824,123 @@
 				RaisePropertyChanged("w鎵樼洏鐮�); 
 			}
 		}
+		private System.UInt16 _RtaskState_LAST;
+		public System.UInt16 RtaskState_LAST
+		{
+			get 
+			{
+	return _RtaskState_LAST; 
+			}
+			set 
+			{
+				_RtaskState_LAST = value; 
+				RaisePropertyChanged("RtaskState_LAST"); 
+			}
+		}
+		private System.UInt32 _RTaskNo;
+		public System.UInt32 RTaskNo
+		{
+			get 
+			{
+	return _RTaskNo; 
+			}
+			set 
+			{
+				_RTaskNo = value; 
+				RaisePropertyChanged("RTaskNo"); 
+			}
+		}
+		private System.UInt16 _RSbit;
+		public System.UInt16 RSbit
+		{
+			get 
+			{
+	return _RSbit; 
+			}
+			set 
+			{
+				_RSbit = value; 
+				RaisePropertyChanged("RSbit"); 
+			}
+		}
+		private System.UInt16 _REbit;
+		public System.UInt16 REbit
+		{
+			get 
+			{
+	return _REbit; 
+			}
+			set 
+			{
+				_REbit = value; 
+				RaisePropertyChanged("REbit"); 
+			}
+		}
+		private System.UInt16 _RworkMode;
+		public System.UInt16 RworkMode
+		{
+			get 
+			{
+	return _RworkMode; 
+			}
+			set 
+			{
+				_RworkMode = value; 
+				RaisePropertyChanged("RworkMode"); 
+			}
+		}
+		private System.UInt16 _Rstate;
+		public System.UInt16 Rstate
+		{
+			get 
+			{
+	return _Rstate; 
+			}
+			set 
+			{
+				_Rstate = value; 
+				RaisePropertyChanged("Rstate"); 
+			}
+		}
+		private System.UInt16 _RtaskState;
+		public System.UInt16 RtaskState
+		{
+			get 
+			{
+	return _RtaskState; 
+			}
+			set 
+			{
+				_RtaskState = value; 
+				RaisePropertyChanged("RtaskState"); 
+			}
+		}
+		private System.UInt16 _R5绌洪棽;
+		public System.UInt16 R5绌洪棽
+		{
+			get 
+			{
+	return _R5绌洪棽; 
+			}
+			set 
+			{
+				_R5绌洪棽 = value; 
+				RaisePropertyChanged("R5绌洪棽"); 
+			}
+		}
+		private System.String _R鎵樼洏鐮�
+		public System.String R鎵樼洏鐮�+		{
+			get 
+			{
+	return _R鎵樼洏鐮� 
+			}
+			set 
+			{
+				_R鎵樼洏鐮�= value; 
+				RaisePropertyChanged("R鎵樼洏鐮�); 
+			}
+		}
 		#endregion
 		
 		#region 鍙橀噺缁�diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/RunTime/Code/\350\256\276\345\244\207\351\200\232\344\277\241.cs" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/RunTime/Code/\350\256\276\345\244\207\351\200\232\344\277\241.cs"
index ecd09be..976f44b 100644
--- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/RunTime/Code/\350\256\276\345\244\207\351\200\232\344\277\241.cs"
+++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/RunTime/Code/\350\256\276\345\244\207\351\200\232\344\277\241.cs"
@@ -88,6 +88,7 @@
 		public GZ.Device.PLC.PlcBase A3005鍙栬揣浜や簰=null;
 		public GZ.Device.PLC.PlcBase A3006鏀捐揣浜や簰=null;
 		public GZ.Device.PLC.PlcBase A3010鍙栬揣浜や簰=null;
+		public GZ.Device.PLC.PlcBase S2008Read=null;
 		public Device()
 		{
 			缁村笇灏旀姄鑷� = GZ.Device.PLC.PlcFactory.CreateInstanceByFile
@@ -350,6 +351,11 @@
 				System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Configs", "A3010鍙栬揣浜や簰"),
 				null
 			);
+			S2008Read = GZ.Device.PLC.PlcFactory.CreateInstanceByFile
+			(
+				System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Configs", "S2008Read"),
+				null
+			);
 			if(System.Configuration.ConfigurationManager.AppSettings["AutoRunPLC"]=="1")
 			{
 				if(缁村笇灏旀姄鑷�!=null){缁村笇灏旀姄鑷�.Run();}
@@ -404,6 +410,7 @@
 				if(A3005鍙栬揣浜や簰!=null){A3005鍙栬揣浜や簰.Run();}
 				if(A3006鏀捐揣浜や簰!=null){A3006鏀捐揣浜や簰.Run();}
 				if(A3010鍙栬揣浜や簰!=null){A3010鍙栬揣浜や簰.Run();}
+				if(S2008Read!=null){S2008Read.Run();}
 			}
         }
 	}
@@ -936,6 +943,16 @@
 		}
 		#endregion
 		
+		#region S2008Read
+		public _S2008Read S2008Read = new _S2008Read();
+		/// <summary>
+		/// 
+		/// </summary>		
+		public class _S2008Read
+		{
+		}
+		#endregion
+		
 	}
 
 	#endregion
diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Scripts/Custom.json" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Scripts/Custom.json"
index e70aeaa..798418f 100644
--- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Scripts/Custom.json"
+++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Scripts/Custom.json"
@@ -713,6 +713,6 @@
     }
   ],
   "CreationTime": "2025-02-26 15:31:23",
-  "LastWriteTime": "2025-07-08 09:54:00",
+  "LastWriteTime": "2025-07-09 11:37:29",
   "HasSaved": true
 }
\ No newline at end of file
diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Scripts/Script.json" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Scripts/Script.json"
index 2a9948e..6a5aeb3 100644
--- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Scripts/Script.json"
+++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Scripts/Script.json"
@@ -1308,16 +1308,16 @@
         },
         {
           "ID": "20250323151832119",
-          "Name": "Program4",
-          "Desc": "",
+          "Name": "Ipping",
+          "Desc": "妫�祴IP鍦板潃閫氭柇",
           "Content": "\r\n            //LogHelper.Info($\"<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>\");\r\n            //LogHelper.Info($\"<<<<<<<<<<<<<<<<<绋嬪簭路鍚姩>>>>>>>>>>>>>>\");\r\n\r\n            //// 浣跨敤鎷︽埅鍣╘r\n            //var interceptor = new ConsoleInterceptor();\r\n            //Console.SetOut(interceptor);\r\n\r\n            //LogHelper.Info($\"<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>\");\r\n            //AnsiConsole.Markup(\"[underline red]Hello[/] World!\");\r\n                   // AnsiConsole.Markup(\"[underline red]Hello[/] World!\");",
           "ContentCopy": "\r\n            //LogHelper.Info($\"<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>\");\r\n            //LogHelper.Info($\"<<<<<<<<<<<<<<<<<绋嬪簭路鍚姩>>>>>>>>>>>>>>\");\r\n\r\n            //// 浣跨敤鎷︽埅鍣╘r\n            //var interceptor = new ConsoleInterceptor();\r\n            //Console.SetOut(interceptor);\r\n\r\n            //LogHelper.Info($\"<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>\");\r\n            //AnsiConsole.Markup(\"[underline red]Hello[/] World!\");\r\n                   // AnsiConsole.Markup(\"[underline red]Hello[/] World!\");",
           "ParentID": "20250226153120175",
           "Children": [],
           "Type": "Program",
           "Property": {
-            "SyncExec": "True",
-            "RepeatExec": "Count",
+            "SyncExec": "False",
+            "RepeatExec": "Until",
             "ExceCount": 1,
             "ExceInternal": 3000,
             "StartCondition": {
@@ -1341,7 +1341,7 @@
               "HmiEvent": {}
             }
           },
-          "FullName": "涓氬姟閫昏緫.Program4",
+          "FullName": "涓氬姟閫昏緫.Ipping",
           "ParentFullName": "涓氬姟閫昏緫",
           "Enabled": "Enabled"
         },
@@ -1449,6 +1449,6 @@
     }
   ],
   "CreationTime": "2025-02-26 15:31:20",
-  "LastWriteTime": "2025-07-08 09:53:59",
+  "LastWriteTime": "2025-07-09 11:37:29",
   "HasSaved": true
 }
\ No newline at end of file
diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Variable/\345\217\230\351\207\217\346\225\260\346\215\256\345\272\223.json" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Variable/\345\217\230\351\207\217\346\225\260\346\215\256\345\272\223.json"
index 0ecb367..8de618b 100644
--- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Variable/\345\217\230\351\207\217\346\225\260\346\215\256\345\272\223.json"
+++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Variable/\345\217\230\351\207\217\346\225\260\346\215\256\345\272\223.json"
@@ -8556,6 +8556,168 @@
                 "GroupID": "20250709085148618",
                 "GroupFullName": "Tag.ssx杈撻�绾�s2008",
                 "FullName": "Tag.ssx杈撻�绾�s2008.w鎵樼洏鐮�
+              },
+              {
+                "ID": "20250709163440533",
+                "Name": "RtaskState_LAST",
+                "Desc": "",
+                "Type": "System.UInt16",
+                "ShortType": "",
+                "MinVal": "",
+                "MaxVal": "",
+                "DefaultVal": "",
+                "MapDevice": "S2008Read",
+                "MapParam": "RtaskState_LAST",
+                "Map": "S2008Read.RtaskState_LAST",
+                "Queue": "S2008ReadQueue",
+                "Converter": "",
+                "GroupID": "20250709085148618",
+                "GroupFullName": "Tag.ssx杈撻�绾�s2008",
+                "FullName": "Tag.ssx杈撻�绾�s2008.RtaskState_LAST"
+              },
+              {
+                "ID": "20250709163440517",
+                "Name": "RTaskNo",
+                "Desc": "",
+                "Type": "System.UInt32",
+                "ShortType": "",
+                "MinVal": "",
+                "MaxVal": "",
+                "DefaultVal": "",
+                "MapDevice": "S2008Read",
+                "MapParam": "RTaskNo",
+                "Map": "S2008Read.RTaskNo",
+                "Queue": "S2008ReadQueue",
+                "Converter": "",
+                "GroupID": "20250709085148618",
+                "GroupFullName": "Tag.ssx杈撻�绾�s2008",
+                "FullName": "Tag.ssx杈撻�绾�s2008.RTaskNo"
+              },
+              {
+                "ID": "20250709163440502",
+                "Name": "RSbit",
+                "Desc": "",
+                "Type": "System.UInt16",
+                "ShortType": "",
+                "MinVal": "",
+                "MaxVal": "",
+                "DefaultVal": "",
+                "MapDevice": "S2008Read",
+                "MapParam": "RSbit",
+                "Map": "S2008Read.RSbit",
+                "Queue": "S2008ReadQueue",
+                "Converter": "",
+                "GroupID": "20250709085148618",
+                "GroupFullName": "Tag.ssx杈撻�绾�s2008",
+                "FullName": "Tag.ssx杈撻�绾�s2008.RSbit"
+              },
+              {
+                "ID": "20250709163440487",
+                "Name": "REbit",
+                "Desc": "",
+                "Type": "System.UInt16",
+                "ShortType": "",
+                "MinVal": "",
+                "MaxVal": "",
+                "DefaultVal": "",
+                "MapDevice": "S2008Read",
+                "MapParam": "REbit",
+                "Map": "S2008Read.REbit",
+                "Queue": "S2008ReadQueue",
+                "Converter": "",
+                "GroupID": "20250709085148618",
+                "GroupFullName": "Tag.ssx杈撻�绾�s2008",
+                "FullName": "Tag.ssx杈撻�绾�s2008.REbit"
+              },
+              {
+                "ID": "20250709163440471",
+                "Name": "RworkMode",
+                "Desc": "",
+                "Type": "System.UInt16",
+                "ShortType": "",
+                "MinVal": "",
+                "MaxVal": "",
+                "DefaultVal": "",
+                "MapDevice": "S2008Read",
+                "MapParam": "RworkMode",
+                "Map": "S2008Read.RworkMode",
+                "Queue": "S2008ReadQueue",
+                "Converter": "",
+                "GroupID": "20250709085148618",
+                "GroupFullName": "Tag.ssx杈撻�绾�s2008",
+                "FullName": "Tag.ssx杈撻�绾�s2008.RworkMode"
+              },
+              {
+                "ID": "20250709163440455",
+                "Name": "Rstate",
+                "Desc": "",
+                "Type": "System.UInt16",
+                "ShortType": "",
+                "MinVal": "",
+                "MaxVal": "",
+                "DefaultVal": "",
+                "MapDevice": "S2008Read",
+                "MapParam": "Rstate",
+                "Map": "S2008Read.Rstate",
+                "Queue": "S2008ReadQueue",
+                "Converter": "",
+                "GroupID": "20250709085148618",
+                "GroupFullName": "Tag.ssx杈撻�绾�s2008",
+                "FullName": "Tag.ssx杈撻�绾�s2008.Rstate"
+              },
+              {
+                "ID": "20250709163440440",
+                "Name": "RtaskState",
+                "Desc": "",
+                "Type": "System.UInt16",
+                "ShortType": "",
+                "MinVal": "",
+                "MaxVal": "",
+                "DefaultVal": "",
+                "MapDevice": "S2008Read",
+                "MapParam": "RtaskState",
+                "Map": "S2008Read.RtaskState",
+                "Queue": "S2008ReadQueue",
+                "Converter": "",
+                "GroupID": "20250709085148618",
+                "GroupFullName": "Tag.ssx杈撻�绾�s2008",
+                "FullName": "Tag.ssx杈撻�绾�s2008.RtaskState"
+              },
+              {
+                "ID": "20250709163440425",
+                "Name": "R5绌洪棽",
+                "Desc": "",
+                "Type": "System.UInt16",
+                "ShortType": "",
+                "MinVal": "",
+                "MaxVal": "",
+                "DefaultVal": "",
+                "MapDevice": "S2008Read",
+                "MapParam": "R5绌洪棽",
+                "Map": "S2008Read.R5绌洪棽",
+                "Queue": "S2008ReadQueue",
+                "Converter": "",
+                "GroupID": "20250709085148618",
+                "GroupFullName": "Tag.ssx杈撻�绾�s2008",
+                "FullName": "Tag.ssx杈撻�绾�s2008.R5绌洪棽"
+              },
+              {
+                "ID": "20250709163440409",
+                "Name": "R鎵樼洏鐮�,
+                "Desc": "",
+                "Type": "System.String",
+                "ShortType": "",
+                "MinVal": "",
+                "MaxVal": "",
+                "DefaultVal": "",
+                "MapDevice": "S2008Read",
+                "MapParam": "R鎵樼洏鐮�,
+                "Map": "S2008Read.R鎵樼洏鐮�,
+                "Queue": "S2008ReadQueue",
+                "Converter": "",
+                "GroupID": "20250709085148618",
+                "GroupFullName": "Tag.ssx杈撻�绾�s2008",
+                "FullName": "Tag.ssx杈撻�绾�s2008.R鎵樼洏鐮�
               }
             ],
             "Children": []
@@ -10640,7 +10802,7 @@
     ]
   },
   "CreationTime": "2025-02-26 15:31:23",
-  "LastWriteTime": "2025-07-09 09:45:40",
+  "LastWriteTime": "2025-07-09 16:34:43",
   "Sample": {
     "ID": "",
     "Name": "Tag",

--
Gitblit v1.9.1