using HslCommunication; using System; using System.Collections.Generic; using System.Linq; using WIDESEA_Core.EFDbContext; using WIDESEA_Entity.DomainModels; using WIDESEA_Services.IRepositories; using WIDESEA_Services.Repositories; using WIDESEA_WCS.WCSClient; namespace WIDESEA_WCS.SchedulerExecute.AGV { public partial class AGVSchedulerExecute { /// /// 传递AGV与正极提升机动作流对接信号 /// public static void HCJ_XHCD() { VOLContext Context = new VOLContext(); Ibase_ware_locationRepository locRepository = new base_ware_locationRepository(Context); PLCClient agvzjplc = WCSService.Clients.Find(v => v.PLCName == "正极AGV调度"); PLCClient agvzzplc = WCSService.Clients.Find(v => v.PLCName == "组装AGV调度"); PLCClient agvfjplc = WCSService.Clients.Find(v => v.PLCName == "负极AGV调度"); double comErr_zz = 0.0;//是否掉线 double doorCode_zz = 2.0;//缓存架ID double doorState_zz = 24.0;//缓存架物料状态(1:空位,2:空托盘,3:满托盘) double gdState_zz = 26.0;//预留 double comErr_zj = 0.0; double doorCode_zj = 2.0; double doorState_zj = 24.0; double comErr_fj = 0.0; double doorCode_fj = 2.0; double doorState_fj = 24.0; try { List base_Ware_Locations_zz = locRepository.Find(t => t.upper_code.Contains("JK") || t.upper_code.Contains("QJ") || t.upper_code.Contains("GFHCJ")).OrderBy(t => t.order_num).ToList(); List base_Ware_Locations_zj = locRepository.Find(t => t.upper_code.Contains("ZJ-BC") || t.upper_code.Contains("ZJ-TB")).OrderBy(t => t.order_num).ToList(); List base_Ware_Locations_fj = locRepository.Find(t => t.upper_code.Contains("FJ-BC") || t.upper_code.Contains("FJ-TB")).OrderBy(t => t.order_num).ToList(); foreach (var item in base_Ware_Locations_zz)//组装车间 { if (agvzzplc == null) { break; } if (item.upper_code.Contains("GFHCJ")) { if (item.location_state == "LocationState_Close" || item.tpgd == -1) { bool R_HCJ_ComErr_zz = true; for (int i = 1; i < 5; i++) { if (i == 4) { string code = item.upper_code.Replace("-4", "").ToString() + "-" + i.ToString(); OperateResult W_HCJ_StationCode = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorCode_zz, code); OperateResult W_HCJ_ComErr = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + comErr_zz, R_HCJ_ComErr_zz); //OperateResult W_HCJ_TPXH = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + gdState_zz, item.tpgd); } else { string code = item.upper_code.Replace("-4", "").ToString() + "-" + i.ToString(); OperateResult W_HCJ_StationCode = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorCode_zz, code); OperateResult W_HCJ_ComErr = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + comErr_zz, R_HCJ_ComErr_zz); } comErr_zz += 30; doorCode_zz += 30; doorState_zz += 30; gdState_zz += 30; } } else { bool R_HCJ_ComErr_zz = false;//是否掉线 //List gd_list = new List(); //gd_list.Add(int.Parse(item.gd1.ToString())); //gd_list.Add(int.Parse(item.gd2.ToString())); //gd_list.Add(int.Parse(item.gd3.ToString())); //gd_list.Add(int.Parse(item.gd4.ToString())); //gd_list.Add(int.Parse(item.tpgd.ToString())); for (int i = 1; i < 5; i++) { if (i == 4) { string code = item.upper_code.Replace("-4", "").ToString() + "-" + i.ToString(); OperateResult W_HCJ_StationCode = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorCode_zz, code); OperateResult W_HCJ_ComErr = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + comErr_zz, R_HCJ_ComErr_zz); if (item.tpgd == 0) { OperateResult W_HCJ_TPXH = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + gdState_zz, false); } else if (item.tpgd == 1) { OperateResult W_HCJ_TPXH = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + gdState_zz, true); } if (item.gd3 == 0) { OperateResult W_HCJ_FullState = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorState_zz, Convert.ToInt16(1)); } else if (item.gd3 == 1) { OperateResult W_HCJ_FullState = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorState_zz, Convert.ToInt16(3)); } } else { string code = item.upper_code.Replace("-4", "").ToString() + "-" + i.ToString(); OperateResult W_HCJ_StationCode = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorCode_zz, code); OperateResult W_HCJ_ComErr = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + comErr_zz, R_HCJ_ComErr_zz); if (i == 1) { if (item.gd2 == 0) { OperateResult W_HCJ_FullState = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorState_zz, Convert.ToInt16(1)); } else if (item.gd2 == 1) { OperateResult W_HCJ_FullState = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorState_zz, Convert.ToInt16(3)); } } else if (i == 2) { if (item.gd1 == 0) { OperateResult W_HCJ_FullState = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorState_zz, Convert.ToInt16(1)); } else if (item.gd1 == 1) { OperateResult W_HCJ_FullState = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorState_zz, Convert.ToInt16(3)); } } else if (i == 3) { if (item.gd4 == 0) { OperateResult W_HCJ_FullState = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorState_zz, Convert.ToInt16(1)); } else if (item.gd4 == 1) { OperateResult W_HCJ_FullState = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorState_zz, Convert.ToInt16(3)); } } } comErr_zz += 30; doorCode_zz += 30; doorState_zz += 30; gdState_zz += 30; } } } else { bool R_HCJ_ComErr_zz = false; if (item.location_state == "LocationState_Close" || item.tpgd == -1) { R_HCJ_ComErr_zz = true; } if (item.tpgd == 0) { OperateResult W_HCJ_FullState = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorState_zz, Convert.ToInt16(1)); } else if (item.tpgd == 1) { OperateResult W_HCJ_FullState = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorState_zz, Convert.ToInt16(3)); } else if (item.tpgd == -1) { OperateResult W_HCJ_FullState = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorState_zz, Convert.ToInt16(-1)); } OperateResult W_HCJ_StationCode = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorCode_zz, item.upper_code.ToString()); OperateResult W_HCJ_ComErr = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + comErr_zz, R_HCJ_ComErr_zz); comErr_zz += 30; doorCode_zz += 30; doorState_zz += 30; gdState_zz = 26.0; } } foreach (var item in base_Ware_Locations_zj)//正极车间 { if (agvzjplc == null) { break; } bool R_HCJ_ComErr_zj = false;//是否掉线 if (item.location_state == "LocationState_Close") { R_HCJ_ComErr_zj = true; } if (item.tpgd == 0) { OperateResult W_HCJ_FullState = agvzjplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorState_zj, Convert.ToInt16(1)); } else if (item.tpgd == 1) { OperateResult W_HCJ_FullState = agvzjplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorState_zj, Convert.ToInt16(3)); } else if (item.tpgd == -1) { OperateResult W_HCJ_FullState = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorState_zj, Convert.ToInt16(-1)); } OperateResult W_HCJ_StationCode = agvzjplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorCode_zj, item.upper_code.ToString()); OperateResult W_HCJ_ComErr = agvzjplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + comErr_zj, R_HCJ_ComErr_zj); comErr_zj += 30; doorCode_zj += 30; doorState_zj += 30; } foreach (var item in base_Ware_Locations_fj)//负极车间 { if (agvfjplc == null) { break; } bool R_HCJ_ComErr_fj = false;//是否掉线 if (item.location_state == "LocationState_Close") { R_HCJ_ComErr_fj = true; } if (item.tpgd == 0) { OperateResult W_HCJ_FullState = agvfjplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorState_fj, Convert.ToInt16(1)); } else if (item.tpgd == 1) { OperateResult W_HCJ_FullState = agvfjplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorState_fj, Convert.ToInt16(3)); } else if (item.tpgd == -1) { OperateResult W_HCJ_FullState = agvzzplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorState_fj, Convert.ToInt16(-1)); } OperateResult W_HCJ_StationCode = agvfjplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + doorCode_fj, item.upper_code.ToString()); OperateResult W_HCJ_ComErr = agvfjplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1003." + comErr_fj, R_HCJ_ComErr_fj); comErr_fj += 30; doorCode_fj += 30; doorState_fj += 30; } // WIDESEA_Common.Tools.WriteLog.GetLog("信号传递").Write($"Info:{DateTime.Now}", "信号传递"); } catch (Exception) { } } } }