wangxinhui
2026-03-17 febcd0c73b51b17f484ff9a9a189b1f85130c2f7
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", "涂布正负极卷帘门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 "正极库后门":
                            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 == "正极库后门") && 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 == "正极库后门") && 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