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)
{
}
}
}
}