using HslCommunication; using Newtonsoft.Json; using System; using System.Collections.Generic; using WIDESEA_Core.Utilities; using WIDESEA_Services.Services; using WIDESEA_WCS.WCSClient; namespace WIDESEA_WCS.SchedulerExecute.AGV { public partial class AGVSchedulerExecute { /// /// 传递AGV与卷帘门信号 /// public static void AgvAndEquiWork_JLM_ZJ() { PLCClient agvjrplc = WCSService.Clients.Find(v => v.PLCName == "正极AGV调度"); #region 无线io模块 104卷绕中控 开门信号传递 int comErr = 0;//自动门掉线 "拆包间卷帘门139", "涂布正负极卷帘门142", double doorCode = 2.0; //自动门ID double doorState = 24.0;//自动门状态,1门关到位,2 门开到位,3门未到位 double doorOpen = 26.0; //自动门控制开 try { if (agvjrplc == null) { return; } for (int i = 1; i <= 5; i++) { OperateResult R_comErr = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB1004." + doorOpen); if (i == 1)//一号门 { PLCClient client_TB1 = WCSService.Clients.Find(t => t.PLCName == "涂布机正极1"); if (client_TB1 == null) { comErr += 30; doorCode += 30; doorState += 30; doorOpen += 30; continue; } if (R_comErr.Content) { // WIDESEA_Common.Tools.WriteLog.GetLog("开门信号").Write($"Info:{"正极箔材库自动门"}+{DateTime.Now}", "开门信号"); Dictionary Doorsignal = new Dictionary(); Doorsignal.Add("R_comErr", R_comErr.Content.ToString());//true Doorsignal.Add("DoorName", "正极箔材库自动门");//item.ToString() string wificont = WIFIAPIInvoke.Doorsignal(Doorsignal); OperateResult W_TB1_OpenDoor = client_TB1.OmronPLCClient.OmronFinsNetClient.Write("D11192.04", true);//请求涂布机开门 WebResponseContent wificontent = JsonConvert.DeserializeObject(wificont);//请求缓存架程序开门 if (wificontent.Status && W_TB1_OpenDoor.IsSuccess) { OperateResult R_TB_IsOpen = client_TB1.OmronPLCClient.OmronFinsNetClient.ReadBool("D11092.04");//涂布机开门完成信号 if (Convert.ToBoolean(wificontent.Data) == false) { OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (comErr), true); } else if (Convert.ToUInt16(wificontent.Data) == 2 && R_TB_IsOpen.Content)//开门到位 { OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent.Data)); } else if (Convert.ToUInt16(wificontent.Data) == 3 || !R_TB_IsOpen.Content)//门未到位 { OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent.Data)); } } } else { OperateResult R_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadUInt16("DB1004." + doorState); if (R_stationDockSteps.Content == 1)//已关门到位,继续下一次循环 { comErr += 30; doorCode += 30; doorState += 30; doorOpen += 30; continue; } else//未关门则请求关门 { // WIDESEA_Common.Tools.WriteLog.GetLog("断开开门信号").Write($"Info:{"正极箔材库自动门"}+{DateTime.Now}", "断开开门信号"); //AGV不给开门信号的时候 断开开门信号 Dictionary Doorsigna1 = new Dictionary(); Doorsigna1.Add("R_comErr", R_comErr.Content.ToString()); Doorsigna1.Add("DoorName", "正极箔材库自动门"); string wificont = WIFIAPIInvoke.Doorsignal(Doorsigna1); OperateResult W_TB1_OpenDoor = client_TB1.OmronPLCClient.OmronFinsNetClient.Write("D11192.04", false);//请求涂布机关门 WebResponseContent wificontent2 = JsonConvert.DeserializeObject(wificont); if (wificontent2.Status && W_TB1_OpenDoor.IsSuccess) { OperateResult R_TB_IsOpen = client_TB1.OmronPLCClient.OmronFinsNetClient.ReadBool("D11092.04");//涂布机关门完成信号 if (Convert.ToBoolean(wificontent2.Data) == false) { OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (comErr), true); } else if (Convert.ToUInt16(wificontent2.Data) == 1 && R_TB_IsOpen.Content)//关门到位 { 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)); } } } } } else if (i == 2)//一号门 { PLCClient client_TB1 = WCSService.Clients.Find(t => t.PLCName == "涂布机正极1"); if (client_TB1 == null) { comErr += 30; doorCode += 30; doorState += 30; doorOpen += 30; continue; } if (R_comErr.Content) { OperateResult W_TB1_OpenDoor = client_TB1.OmronPLCClient.OmronFinsNetClient.Write("D11192.04", true);//请求涂布机开门 if (W_TB1_OpenDoor.IsSuccess) { OperateResult R_TB_IsOpen = client_TB1.OmronPLCClient.OmronFinsNetClient.ReadBool("D11092.04");//涂布机开门完成信号 if (R_TB_IsOpen.Content)//开门到位 { OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(2)); } else if (!R_TB_IsOpen.Content)//门未到位 { OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(1)); } } } else { OperateResult R_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadUInt16("DB1004." + doorState); if (R_stationDockSteps.Content == 1)//已关门到位,继续下一次循环 { comErr += 30; doorCode += 30; doorState += 30; doorOpen += 30; continue; } else//未关门则请求关门 { OperateResult W_TB1_OpenDoor = client_TB1.OmronPLCClient.OmronFinsNetClient.Write("D11192.04", false);//请求涂布机关门 if (!W_TB1_OpenDoor.IsSuccess) { OperateResult R_TB_IsOpen = client_TB1.OmronPLCClient.OmronFinsNetClient.ReadBool("D11092.04");//涂布机关门完成信号 if (!R_TB_IsOpen.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 if (i == 3) { PLCClient client_TB1 = WCSService.Clients.Find(t => t.PLCName == "涂布机正极2"); if (client_TB1 == null) { comErr += 30; doorCode += 30; doorState += 30; doorOpen += 30; continue; } if (R_comErr.Content) { OperateResult W_TB1_OpenDoor = client_TB1.OmronPLCClient.OmronFinsNetClient.Write("D11192.04", true);//请求涂布机开门 if (W_TB1_OpenDoor.IsSuccess) { OperateResult R_TB_IsOpen = client_TB1.OmronPLCClient.OmronFinsNetClient.ReadBool("D11092.04");//涂布机开门完成信号 if (R_TB_IsOpen.Content)//开门到位 { OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(2)); } else if (!R_TB_IsOpen.Content)//门未到位 { OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(1)); } } } else { OperateResult R_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadUInt16("DB1004." + doorState); if (R_stationDockSteps.Content == 1)//已关门到位,继续下一次循环 { comErr += 30; doorCode += 30; doorState += 30; doorOpen += 30; continue; } else//未关门则请求关门 { OperateResult W_TB1_OpenDoor = client_TB1.OmronPLCClient.OmronFinsNetClient.Write("D11192.04", false);//请求涂布机关门 if (!W_TB1_OpenDoor.IsSuccess) { OperateResult R_TB_IsOpen = client_TB1.OmronPLCClient.OmronFinsNetClient.ReadBool("D11092.04");//涂布机关门完成信号 if (!R_TB_IsOpen.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 if (i == 4) { PLCClient client_TB1 = WCSService.Clients.Find(t => t.PLCName == "涂布机正极3"); PLCClient client_TB2 = WCSService.Clients.Find(t => t.PLCName == "涂布机正极4"); if (client_TB1 == null) { comErr += 30; doorCode += 30; doorState += 30; doorOpen += 30; continue; } if (client_TB2 == null) { comErr += 30; doorCode += 30; doorState += 30; doorOpen += 30; continue; } if (R_comErr.Content) { OperateResult W_TB1_OpenDoor = client_TB1.OmronPLCClient.OmronFinsNetClient.Write("D11192.04", true);//请求涂布机开门 OperateResult W_TB1_OpenDoor2 = client_TB2.OmronPLCClient.OmronFinsNetClient.Write("D11192.04", true);//请求涂布机开门 if (W_TB1_OpenDoor.IsSuccess && W_TB1_OpenDoor2.IsSuccess) { OperateResult R_TB_IsOpen = client_TB1.OmronPLCClient.OmronFinsNetClient.ReadBool("D11092.04");//涂布机开门完成信号 OperateResult R_TB_IsOpen2 = client_TB2.OmronPLCClient.OmronFinsNetClient.ReadBool("D11092.04");//涂布机开门完成信号 if (R_TB_IsOpen.Content && R_TB_IsOpen2.Content)//开门到位 { OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(2)); } else if (!R_TB_IsOpen.Content && !R_TB_IsOpen2.Content)//门未到位 { OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(1)); } } } else { OperateResult R_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadUInt16("DB1004." + doorState); if (R_stationDockSteps.Content == 1)//已关门到位,继续下一次循环 { comErr += 30; doorCode += 30; doorState += 30; doorOpen += 30; continue; } else//未关门则请求关门 { OperateResult W_TB1_OpenDoor = client_TB1.OmronPLCClient.OmronFinsNetClient.Write("D11192.04", false);//请求涂布机关门 OperateResult W_TB1_OpenDoor2 = client_TB2.OmronPLCClient.OmronFinsNetClient.Write("D11192.04", false);//请求涂布机关门 if (W_TB1_OpenDoor.IsSuccess && W_TB1_OpenDoor.IsSuccess) { OperateResult R_TB_IsOpen = client_TB1.OmronPLCClient.OmronFinsNetClient.ReadBool("D11092.04");//涂布机关门完成信号 OperateResult R_TB_IsOpen2 = client_TB2.OmronPLCClient.OmronFinsNetClient.ReadBool("D11092.04");//涂布机关门完成信号 if (!R_TB_IsOpen.Content && !R_TB_IsOpen2.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 if (i == 5) { if (R_comErr.Content) { // WIDESEA_Common.Tools.WriteLog.GetLog("开门信号").Write($"Info:{"正极涂布-辊分自动门"}+{DateTime.Now}", "开门信号"); Dictionary Doorsignal = new Dictionary(); Doorsignal.Add("R_comErr", R_comErr.Content.ToString());//true Doorsignal.Add("DoorName", "正极涂布-辊分自动门");//item.ToString() string wificont = WIFIAPIInvoke.Doorsignal(Doorsignal); WebResponseContent wificontent = JsonConvert.DeserializeObject(wificont);//请求缓存架程序开门 if (wificontent.Status) { 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)); } } } else { OperateResult R_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadUInt16("DB1004." + doorState); if (R_stationDockSteps.Content == 1)//已关门到位,继续下一次循环 { comErr += 30; doorCode += 30; doorState += 30; doorOpen += 30; continue; } else//未关门则请求关门 { // WIDESEA_Common.Tools.WriteLog.GetLog("断开开门信号").Write($"Info:{"正极涂布-辊分自动门"}+{DateTime.Now}", "断开开门信号"); //AGV不给开门信号的时候 断开开门信号 Dictionary Doorsigna1 = new Dictionary(); Doorsigna1.Add("R_comErr", R_comErr.Content.ToString()); Doorsigna1.Add("DoorName", "正极涂布-辊分自动门"); string wificont = WIFIAPIInvoke.Doorsignal(Doorsigna1); WebResponseContent wificontent2 = JsonConvert.DeserializeObject(wificont); if (wificontent2.Status) { 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)); } } } } } comErr += 30; doorCode += 30; doorState += 30; doorOpen += 30; } } catch (Exception) { throw; } #endregion //WIDESEA_Common.Tools.WriteLog.GetLog("信号传递").Write($"Info:{DateTime.Now}", "信号传递"); } } }