using HslCommunication;
|
using OfficeOpenXml.FormulaParsing.Excel.Functions.Numeric;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using WIDESEA_Common.Tools;
|
using WIDESEA_Core.EFDbContext;
|
using WIDESEA_Entity.DomainModels;
|
using WIDESEA_Services.IRepositories;
|
using WIDESEA_Services.Repositories;
|
using WIDESEA_WCS.WCSClient;
|
using static System.Collections.Specialized.BitVector32;
|
|
namespace WIDESEA_WCS.SchedulerExecute.AGV
|
{
|
public partial class AGVSchedulerExecute
|
{
|
/// <summary>
|
/// 传递AGV与正极提升机动作流对接信号
|
/// </summary>
|
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_location> 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_location> 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_location> 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<int> gd_list = new List<int>();
|
|
//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)
|
{
|
}
|
|
}
|
|
|
}
|
}
|