using HslCommunication; using System; using System.Collections.Generic; using System.Linq; using WIDESEA_Common.Tools; using WIDESEA_Core.EFDbContext; 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 AgvAndEquiWork_TSJ3() { VOLContext Context = new VOLContext(); Idt_plcinfodetailRepository plcdetailRep = new dt_plcinfodetailRepository(Context); Idt_plcinfoheadRepository plcheadRep = new dt_plcinfoheadRepository(Context); PLCClient agvjrplc = WCSService.Clients.Find(v => v.PLCName == "组装AGV调度"); #region 组装车间提升机信号传递 List ZZCJ = new List { "提升机3" }; double RuLiaoKo_DJLC = 90.0; double RuLiaoKo_SBBJ = 92.0; int AGV_uplen = 3200; int agv_dowen = 3300; int agv_eupdown = 3400; int agv_endown = 3500; try { foreach (var tsj in ZZCJ) { if (tsj == null) return; PLCClient agv_plc = WCSService.Clients.Find(v => v.PLCName == tsj); if (agv_plc == null) { return; //AGV_uplen += 400; //agv_dowen += 400; //agv_eupdown += 400; //agv_endown += 400; //continue; } #region MyRegion //AGV一楼上二楼 //AGV请求进入风淋室 //AGV一楼上二楼风淋室不需要吹风,所以避开吹风对接,需要知道风淋门的光电检测没有有AGV在里面,AGV请求开一门 //AGV请求进入提升机 //AGV一楼上二楼风淋室不需要吹风,所以避开吹风对接,需要知道风淋门的光电检测有AGV在里面,AGV请求开二门,agv请求进入提升机 //AGV二楼下一楼 //AGV从提升机进入风淋室 //需要知道风淋门的光电检测没有有AGV在里面,AGV请求开二门 //AGV从风淋室往一门出来 风淋室需要吹风,所以做吹风对接 //需要知道风淋门的光电检测AGV在里面,AGV请求开一门,就等待风吹完,吹风完成 //风淋室会自动打开门,WCS获取到开门到位信号代表风吹完了让AGV出去 #endregion #region 一楼上二楼组装提升机信号传递 //读取AGV报警信号入口 OperateResult R_UP_hrea = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB1002." + (agv_dowen + RuLiaoKo_SBBJ)); //写入提升机 OperateResult W_bj_tsj = agv_plc.SiemensPLCClient.SiemensS7NetClient.Write("DB51.192", R_UP_hrea.Content); //--------- //读取AGV对接流程 一楼AGV请求进入提升机 OperateResult R_UP_djlc = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB1002." + (agv_dowen + RuLiaoKo_DJLC)); //写入提升机 OperateResult W_djlc_tsj = agv_plc.SiemensPLCClient.SiemensS7NetClient.Write("DB51.190", R_UP_djlc.Content); //读取提升机报警信号 OperateResult R_bj_tsj = agv_plc.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB51.92"); //写入agv OperateResult W_bj_agv = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1002." + (AGV_uplen + RuLiaoKo_SBBJ), R_bj_tsj.Content); //--------- //读取提升机对接流程 一楼是否允许AGV进入提升机 OperateResult R_UP_TSJ = agv_plc.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB51.90"); //写入AGV OperateResult W_djlc_AGV = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1002." + (AGV_uplen + RuLiaoKo_DJLC), R_UP_TSJ.Content); #endregion #region 二楼下一楼组装提升机信号传递 //读取AGV报警信号出口 OperateResult R_UP_hrea2 = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB1002." + (agv_endown + RuLiaoKo_SBBJ)); //写入提升机 OperateResult W_bj_tsj2 = agv_plc.SiemensPLCClient.SiemensS7NetClient.Write("DB51.392", R_UP_hrea2.Content); //--------- //读取AGV对接流程 二楼AGV请求进入提升机 OperateResult R_UP_djlc2 = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB1002." + (agv_endown + RuLiaoKo_DJLC)); //写入提升机 OperateResult W_djlc_tsj2 = agv_plc.SiemensPLCClient.SiemensS7NetClient.Write("DB51.390", R_UP_djlc2.Content); //读取提升机报警信号 OperateResult R_bj_tsj2 = agv_plc.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB51.292"); //写入agv OperateResult W_bj_agv2 = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1002." + (agv_eupdown + RuLiaoKo_SBBJ), R_bj_tsj2.Content); //--------- //读取提升机对接流程 二楼是否允许AGV进入提升机 OperateResult R_UP_TSJ2 = agv_plc.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB51.290"); //写入AGV OperateResult W_djlc_AGV2 = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1002." + (agv_eupdown + RuLiaoKo_DJLC), R_UP_TSJ2.Content); #endregion } } catch (Exception ex) { WriteLog.GetLog().Write("传递组装AGV与正极提升机动作流对接信号" + ex.Message.ToString() + DateTime.Now, "传递组装AGV与正极提升机动作流对接信号"); } #endregion // WIDESEA_Common.Tools.WriteLog.GetLog("信号传递").Write($"Info:{DateTime.Now}", "信号传递"); } public static byte[] SpiltnotByte_0(byte[] ReadByte) { byte[] Read_94_1byte = new byte[8]; for (int i = 1; i <= ReadByte.Count() - 8; i++) { Read_94_1byte[i - 1] = ReadByte[i - 1]; } return Read_94_1byte; } public static byte[] SpiltnotByte_8(byte[] ReadByte) { byte[] Read_94_8byte = new byte[8]; for (int i = 8; i < ReadByte.Count(); i++) { Read_94_8byte[i - 8] = ReadByte[i]; } return Read_94_8byte; } public static byte[] SpiltByte_0(byte[] ReadByte) { byte[] Read_94_1byte = new byte[8]; for (int i = 1; i <= ReadByte.Count() - 8; i++) { Read_94_1byte[i - 1] = ReadByte[i]; Read_94_1byte[i] = ReadByte[i - 1]; i++; } return Read_94_1byte; } public static byte[] SpiltByte_8(byte[] ReadByte) { byte[] Read_94_8byte = new byte[8]; for (int i = 9; i <= ReadByte.Count(); i++) { Read_94_8byte[i - 9] = ReadByte[i]; Read_94_8byte[i - 8] = ReadByte[i - 1]; i++; } return Read_94_8byte; } } }