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
|
{
|
/// <summary>
|
/// 传递AGV与提升机动作流对接信号
|
/// </summary>
|
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<string> ZZCJ = new List<string> { "提升机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<bool> 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<Int16> 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<bool> 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<Int16> 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<bool> 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<Int16> 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<bool> 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<Int16> 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;
|
}
|
}
|
}
|