From febcd0c73b51b17f484ff9a9a189b1f85130c2f7 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期二, 17 三月 2026 13:52:06 +0800
Subject: [PATCH] 更新自动门,新增切卷卷绕缓存架

---
 wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/AGV/AgvAndEquiWork_JLM.cs |  167 ++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 127 insertions(+), 40 deletions(-)

diff --git a/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/AGV/AgvAndEquiWork_JLM.cs b/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/AGV/AgvAndEquiWork_JLM.cs
index d6554dc..07afd84 100644
--- a/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/AGV/AgvAndEquiWork_JLM.cs
+++ b/wcs-server-hbf/WIDESEA_WCS/SchedulerExecute/AGV/AgvAndEquiWork_JLM.cs
@@ -20,6 +20,7 @@
         {
             PLCClient agvjrplc = WCSService.Clients.Find(v => v.PLCName == "缁勮AGV璋冨害");
             PLCClient oiplc1F = WCSService.Clients.Find(v => v.PLCName == PLCConst.PLCName1FLKHCJ);
+            PLCClient oiplcJR = WCSService.Clients.Find(v => v.PLCName == PLCConst.PLCNameJR);
 
             #region 鏃犵嚎io妯″潡 104鍗风粫涓帶 寮�闂ㄤ俊鍙蜂紶閫�
             int comErr = 0;//鑷姩闂ㄦ帀绾�  "鎷嗗寘闂村嵎甯橀棬139", "娑傚竷姝h礋鏋佸嵎甯橀棬142",
@@ -44,37 +45,95 @@
                     OperateResult<bool> R_comErr = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB1004." + doorOpen);
                     if (!R_comErr.IsSuccess)
                     {
+                        comErr += 30;
+                        doorCode += 30;
+                        doorState += 30;
+                        doorOpen += 30;
                         continue;
+                    }
+                    
+                    string doorStart = "";//寮�闂�
+                    string doorOff = "";//鍏抽棬
+                    string doorStarted = "";//寮�闂ㄥ埌浣�
+                    string doorOffed = "";//鍏抽棬鍒颁綅
+                    switch (item)
+                    {
+
+                        case "璐熸瀬搴撳墠闂�":
+                            doorStart = "s=2;11";
+                            doorOff = "s=2;12";
+                            doorStarted = "x=2;14";
+                            doorOffed = "x=2;15";
+                            break;
+                        case "璐熸瀬搴撳悗闂�":
+                            doorStart = "s=2;27";
+                            doorOff = "s=2;28";
+                            doorStarted = "x=2;30";
+                            doorOffed = "x=2;31";
+                            break;
+                        case "姝f瀬搴撳悗闂�":
+                            doorStart = "s=2;19";
+                            doorOff = "s=2;20";
+                            doorStarted = "x=2;22";
+                            doorOffed = "x=2;23";
+                            break;
                     }
                     //AGV璇锋眰寮�闂�
                     if (R_comErr.Content)
                     {
-                        Dictionary<string, string> Doorsignal = new Dictionary<string, string>();
-                        Doorsignal.Add("R_comErr", R_comErr.Content.ToString());//true
-                        Doorsignal.Add("DoorName", item.ToString());//item.ToString()
-                        string wificont = WIFIAPIInvoke.Doorsignal(Doorsignal);
-                        WebResponseContent wificontent = JsonConvert.DeserializeObject<WebResponseContent>(wificont);
-                        //if (item == "缁勮椋庨搩闂ㄥ墠闂�")
-                        //{
-                        //    Console.WriteLine(wificontent.Status);
-                        //}
-                        if (wificontent.Status)
+                        if ((item == "璐熸瀬搴撳墠闂�" || item == "璐熸瀬搴撳悗闂�" || item == "姝f瀬搴撳悗闂�") && oiplcJR != null)//
                         {
-                            //if (item == "缁勮椋庨搩闂ㄥ墠闂�")
-                            //{
-                            //    Console.WriteLine(Convert.ToUInt16(wificontent.Data) );
-                            //}
-                            if (Convert.ToBoolean(wificontent.Data) == false)//鑷姩闂ㄦ帀绾�
+                            OperateResult JROpenJLM1 = oiplcJR.ModbusPLCClient.ModbusTcpNetClient.Write(doorStart, true);
+                            OperateResult JROpenJLM2 = oiplcJR.ModbusPLCClient.ModbusTcpNetClient.Write(doorStart, true);
+                            OperateResult JROpenJLM3 = oiplcJR.ModbusPLCClient.ModbusTcpNetClient.Write(doorOff, false);
+                            OperateResult JROpenJLM4 = oiplcJR.ModbusPLCClient.ModbusTcpNetClient.Write(doorOff, false);
+                            if (JROpenJLM1.IsSuccess || JROpenJLM2.IsSuccess || JROpenJLM3.IsSuccess || JROpenJLM4.IsSuccess)
+                            {
+                                OperateResult<bool> JRJLMOpen1 = oiplcJR.ModbusPLCClient.ModbusTcpNetClient.ReadBool(doorStarted);
+                                OperateResult<bool> JRJLMOpen2 = oiplcJR.ModbusPLCClient.ModbusTcpNetClient.ReadBool(doorStarted);
+                                if (JRJLMOpen1.Content || JRJLMOpen2.Content)//寮�闂ㄥ埌浣�
+                                {
+                                    OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(2));
+                                }
+                                else//闂ㄦ湭鍒颁綅
+                                {
+                                    OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(3));
+                                }
+                            }
+                            else
                             {
                                 OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (comErr), true);
                             }
-                            else if (Convert.ToUInt16(wificontent.Data) == 2)//寮�闂ㄥ埌浣�
+                        }
+                        else
+                        {
+                            Dictionary<string, string> Doorsignal = new Dictionary<string, string>();
+                            Doorsignal.Add("R_comErr", R_comErr.Content.ToString());//true
+                            Doorsignal.Add("DoorName", item.ToString());//item.ToString()
+                            string wificont = WIFIAPIInvoke.Doorsignal(Doorsignal);
+                            WebResponseContent wificontent = JsonConvert.DeserializeObject<WebResponseContent>(wificont);
+                            //if (item == "缁勮椋庨搩闂ㄥ墠闂�")
+                            //{
+                            //    Console.WriteLine(wificontent.Status);
+                            //}
+                            if (wificontent.Status)
                             {
-                                OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent.Data));
-                            }
-                            else if (Convert.ToUInt16(wificontent.Data) == 3)//闂ㄦ湭鍒颁綅
-                            {
-                                OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent.Data));
+                                //if (item == "缁勮椋庨搩闂ㄥ墠闂�")
+                                //{
+                                //    Console.WriteLine(Convert.ToUInt16(wificontent.Data) );
+                                //}
+                                if (Convert.ToBoolean(wificontent.Data) == false)//鑷姩闂ㄦ帀绾�
+                                {
+                                    OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (comErr), true);
+                                }
+                                else if (Convert.ToUInt16(wificontent.Data) == 2)//寮�闂ㄥ埌浣�
+                                {
+                                    OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent.Data));
+                                }
+                                else if (Convert.ToUInt16(wificontent.Data) == 3)//闂ㄦ湭鍒颁綅
+                                {
+                                    OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent.Data));
+                                }
                             }
                         }
                     }
@@ -92,26 +151,54 @@
                         //else
                         //{
                         // WIDESEA_Common.Tools.WriteLog.GetLog("鏂紑寮�闂ㄤ俊鍙�").Write($"Info锛歿item}+{DateTime.Now}", "鏂紑寮�闂ㄤ俊鍙�");
-                        //AGV涓嶇粰寮�闂ㄤ俊鍙风殑鏃跺�� 鏂紑寮�闂ㄤ俊鍙�
-                        Dictionary<string, string> Doorsigna1 = new Dictionary<string, string>();
-                        Doorsigna1.Add("R_comErr", R_comErr.Content.ToString());
-                        Doorsigna1.Add("DoorName", item.ToString());
-                        string wificont = WIFIAPIInvoke.Doorsignal(Doorsigna1);
-                        WebResponseContent wificontent2 = JsonConvert.DeserializeObject<WebResponseContent>(wificont);
-                        if (wificontent2.Status)
+                        if ((item == "璐熸瀬搴撳墠闂�" || item == "璐熸瀬搴撳悗闂�" || item == "姝f瀬搴撳悗闂�") && oiplcJR != null)
                         {
-                            if (Convert.ToBoolean(wificontent2.Data) == false)//鑷姩闂ㄦ帀绾�
+                            //AGV涓嶇粰寮�闂ㄤ俊鍙风殑鏃跺�� 鏂紑寮�闂ㄤ俊鍙�
+                            OperateResult JROpenJLM1 = oiplcJR.ModbusPLCClient.ModbusTcpNetClient.Write(doorStart, false);
+                            OperateResult JROpenJLM2 = oiplcJR.ModbusPLCClient.ModbusTcpNetClient.Write(doorStart, false);
+                            //OperateResult JROpenJLM3 = oiplcJR.ModbusPLCClient.ModbusTcpNetClient.Write(doorOff, true);
+                            //OperateResult JROpenJLM4 = oiplcJR.ModbusPLCClient.ModbusTcpNetClient.Write(doorOff, true);
+                            if (JROpenJLM1.IsSuccess || JROpenJLM2.IsSuccess)
+                            {
+                                OperateResult<bool> JRJLMOpen1 = oiplcJR.ModbusPLCClient.ModbusTcpNetClient.ReadBool(doorOffed);
+                                OperateResult<bool> JRJLMOpen2 = oiplcJR.ModbusPLCClient.ModbusTcpNetClient.ReadBool(doorOffed);
+                                if (JRJLMOpen1.Content || JRJLMOpen2.Content)//鍏抽棬鍒颁綅
+                                {
+                                    OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(1));
+                                }
+                                else//闂ㄦ湭鍒颁綅
+                                {
+                                    OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(3));
+                                }
+                            }
+                            else
                             {
                                 OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (comErr), true);
                             }
-                            ////else if (Convert.ToUInt16(wificontent2.Data) == 1)//鍏抽棬鍒颁綅
-                            ////{
-                            ////    OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent2.Data));
-                            ////}
-                            else
+                        }
+                        else
+                        {
+                            //AGV涓嶇粰寮�闂ㄤ俊鍙风殑鏃跺�� 鏂紑寮�闂ㄤ俊鍙�
+                            Dictionary<string, string> Doorsigna1 = new Dictionary<string, string>();
+                            Doorsigna1.Add("R_comErr", R_comErr.Content.ToString());
+                            Doorsigna1.Add("DoorName", item.ToString());
+                            string wificont = WIFIAPIInvoke.Doorsignal(Doorsigna1);
+                            WebResponseContent wificontent2 = JsonConvert.DeserializeObject<WebResponseContent>(wificont);
+                            if (wificontent2.Status)
                             {
-                                //鍏抽棬鏈埌浣�
-                                OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent2.Data));
+                                if (Convert.ToBoolean(wificontent2.Data) == false)//鑷姩闂ㄦ帀绾�
+                                {
+                                    OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (comErr), true);
+                                }
+                                ////else if (Convert.ToUInt16(wificontent2.Data) == 1)//鍏抽棬鍒颁綅
+                                ////{
+                                ////    OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent2.Data));
+                                ////}
+                                else
+                                {
+                                    //鍏抽棬鏈埌浣�
+                                    OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent2.Data));
+                                }
                             }
                         }
                         //}
@@ -136,11 +223,11 @@
                         OperateResult<bool> JLMOpen = oiplc1F.ModbusPLCClient.ModbusTcpNetClient.ReadBool("x=2;8612");
                         if (JLMOpen.Content)//寮�闂ㄥ埌浣�
                         {
-                            OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKState), 2);
+                            OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKState), Convert.ToUInt16(2));
                         }
                         else//闂ㄦ湭鍒颁綅
                         {
-                            OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKState), 3);
+                            OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKState), Convert.ToUInt16(3));
                         }
                     }
                     else
@@ -157,11 +244,11 @@
                         OperateResult<bool> JLMOpen = oiplc1F.ModbusPLCClient.ModbusTcpNetClient.ReadBool("x=2;8613");
                         if (JLMOpen.Content)//鍏抽棬鍒颁綅
                         {
-                            OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKState), 1);
+                            OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKState), Convert.ToUInt16(1));
                         }
                         else//闂ㄦ湭鍒颁綅
                         {
-                            OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKState), 3);
+                            OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (RKState), Convert.ToUInt16(3));
                         }
                     }
                     else

--
Gitblit v1.9.3