using HslCommunication;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using WIDESEA_Common.Tools;
using WIDESEA_Core.Utilities;
using WIDESEA_Services.Services;
using WIDESEA_WCS.WCSClient;
namespace WIDESEA_WCS.SchedulerExecute.AGV
{
public partial class AGVSchedulerExecute
{
///
/// 传递AGV与卷帘门信号
///
public static void AgvAndEquiWork_JLM()
{
PLCClient agvjrplc = WCSService.Clients.Find(v => v.PLCName == "组装AGV调度");
#region 无线io模块 104卷绕中控 开门信号传递
int comErr = 0;//自动门掉线 "拆包间卷帘门139", "涂布正负极卷帘门142",
double doorCode = 2.0; //自动门ID
double doorState = 24.0;//自动门状态,1门关到位,2 门开到位,3门未到位
double doorOpen = 26.0; //自动门控制开
try
{
if (agvjrplc == null)
{
return;
}
List Door = new List { "负极库前门", "正极库前门", "负极库后门", "正极库后门", "正级库223门", "组装风铃门前门", "组装风铃门后门", "组装226门", "组装227门", "组装228门", "组装229门" };
foreach (var item in Door)
{
OperateResult R_comErr = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB1004." + doorOpen);
if (!R_comErr.IsSuccess)
{
continue;
}
//AGV请求开门
if (R_comErr.Content)
{
Dictionary Doorsignal = new Dictionary();
Doorsignal.Add("R_comErr", R_comErr.Content.ToString());//true
Doorsignal.Add("DoorName", item.ToString());//item.ToString()
string wificont = WIFIAPIInvoke.Doorsignal(Doorsignal);
WebResponseContent wificontent = JsonConvert.DeserializeObject(wificont);
//if (item == "组装风铃门前门")
//{
// Console.WriteLine(wificontent.Status);
//}
if (wificontent.Status)
{
//if (item == "组装风铃门前门")
//{
// Console.WriteLine(Convert.ToUInt16(wificontent.Data) );
//}
if (Convert.ToBoolean(wificontent.Data) == false)//自动门掉线
{
OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (comErr), true);
}
else if (Convert.ToUInt16(wificontent.Data) == 2)//开门到位
{
OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent.Data));
}
else if (Convert.ToUInt16(wificontent.Data) == 3)//门未到位
{
OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent.Data));
}
}
}
else
{
//OperateResult R_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadUInt16("DB1004." + doorState);
//if (R_stationDockSteps.Content == 1)//关门到位
//{
// comErr += 30;
// doorCode += 30;
// doorState += 30;
// doorOpen += 30;
// continue;
//}
//else
//{
// WIDESEA_Common.Tools.WriteLog.GetLog("断开开门信号").Write($"Info:{item}+{DateTime.Now}", "断开开门信号");
//AGV不给开门信号的时候 断开开门信号
Dictionary Doorsigna1 = new Dictionary();
Doorsigna1.Add("R_comErr", R_comErr.Content.ToString());
Doorsigna1.Add("DoorName", item.ToString());
string wificont = WIFIAPIInvoke.Doorsignal(Doorsigna1);
WebResponseContent wificontent2 = JsonConvert.DeserializeObject(wificont);
if (wificontent2.Status)
{
if (Convert.ToBoolean(wificontent2.Data) == false)//自动门掉线
{
OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (comErr), true);
}
////else if (Convert.ToUInt16(wificontent2.Data) == 1)//关门到位
////{
//// OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent2.Data));
////}
else
{
//关门未到位
OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent2.Data));
}
}
//}
}
comErr += 30;
doorCode += 30;
doorState += 30;
doorOpen += 30;
}
}
catch (Exception ex)
{
WriteLog.GetLog().Write("传递组装AGV与卷帘门信号异常" + ex.Message.ToString() + DateTime.Now, "传递组装AGV与卷帘门信号");
}
#endregion
// WIDESEA_Common.Tools.WriteLog.GetLog("信号传递").Write($"Info:{DateTime.Now}", "信号传递");
}
}
}