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;
}
}
}