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
|
{
|
/// <summary>
|
/// 传递AGV与卷帘门信号
|
/// </summary>
|
public static void AgvAndEquiWork_JLM_ZJ()
|
{
|
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;
|
}
|
for (int i = 1; i <= 5; i++)
|
{
|
OperateResult<bool> R_comErr = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB1004." + doorOpen);
|
if (i == 1)//一号门
|
{
|
PLCClient client_TB1 = WCSService.Clients.Find(t => t.PLCName == "涂布机正极1");
|
if (client_TB1 == null)
|
{
|
comErr += 30;
|
doorCode += 30;
|
doorState += 30;
|
doorOpen += 30;
|
continue;
|
}
|
if (R_comErr.Content)
|
{
|
// WIDESEA_Common.Tools.WriteLog.GetLog("开门信号").Write($"Info:{"正极箔材库自动门"}+{DateTime.Now}", "开门信号");
|
Dictionary<string, string> Doorsignal = new Dictionary<string, string>();
|
Doorsignal.Add("R_comErr", R_comErr.Content.ToString());//true
|
Doorsignal.Add("DoorName", "正极箔材库自动门");//item.ToString()
|
string wificont = WIFIAPIInvoke.Doorsignal(Doorsignal);
|
|
OperateResult W_TB1_OpenDoor = client_TB1.OmronPLCClient.OmronFinsNetClient.Write("D11192.04", true);//请求涂布机开门
|
WebResponseContent wificontent = JsonConvert.DeserializeObject<WebResponseContent>(wificont);//请求缓存架程序开门
|
|
if (wificontent.Status && W_TB1_OpenDoor.IsSuccess)
|
{
|
OperateResult<bool> R_TB_IsOpen = client_TB1.OmronPLCClient.OmronFinsNetClient.ReadBool("D11092.04");//涂布机开门完成信号
|
if (Convert.ToBoolean(wificontent.Data) == false)
|
{
|
OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (comErr), true);
|
}
|
else if (Convert.ToUInt16(wificontent.Data) == 2 && R_TB_IsOpen.Content)//开门到位
|
{
|
OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent.Data));
|
}
|
else if (Convert.ToUInt16(wificontent.Data) == 3 || !R_TB_IsOpen.Content)//门未到位
|
{
|
OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(wificontent.Data));
|
}
|
}
|
}
|
else
|
{
|
OperateResult<UInt16> 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:{"正极箔材库自动门"}+{DateTime.Now}", "断开开门信号");
|
//AGV不给开门信号的时候 断开开门信号
|
Dictionary<string, string> Doorsigna1 = new Dictionary<string, string>();
|
Doorsigna1.Add("R_comErr", R_comErr.Content.ToString());
|
Doorsigna1.Add("DoorName", "正极箔材库自动门");
|
string wificont = WIFIAPIInvoke.Doorsignal(Doorsigna1);
|
|
OperateResult W_TB1_OpenDoor = client_TB1.OmronPLCClient.OmronFinsNetClient.Write("D11192.04", false);//请求涂布机关门
|
|
WebResponseContent wificontent2 = JsonConvert.DeserializeObject<WebResponseContent>(wificont);
|
if (wificontent2.Status && W_TB1_OpenDoor.IsSuccess)
|
{
|
OperateResult<bool> R_TB_IsOpen = client_TB1.OmronPLCClient.OmronFinsNetClient.ReadBool("D11092.04");//涂布机关门完成信号
|
if (Convert.ToBoolean(wificontent2.Data) == false)
|
{
|
OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (comErr), true);
|
}
|
else if (Convert.ToUInt16(wificontent2.Data) == 1 && R_TB_IsOpen.Content)//关门到位
|
{
|
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));
|
}
|
}
|
|
}
|
|
}
|
}
|
else if (i == 2)//一号门
|
{
|
PLCClient client_TB1 = WCSService.Clients.Find(t => t.PLCName == "涂布机正极1");
|
if (client_TB1 == null)
|
{
|
comErr += 30;
|
doorCode += 30;
|
doorState += 30;
|
doorOpen += 30;
|
continue;
|
|
}
|
if (R_comErr.Content)
|
{
|
OperateResult W_TB1_OpenDoor = client_TB1.OmronPLCClient.OmronFinsNetClient.Write("D11192.04", true);//请求涂布机开门
|
|
|
if (W_TB1_OpenDoor.IsSuccess)
|
{
|
OperateResult<bool> R_TB_IsOpen = client_TB1.OmronPLCClient.OmronFinsNetClient.ReadBool("D11092.04");//涂布机开门完成信号
|
|
if (R_TB_IsOpen.Content)//开门到位
|
{
|
OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(2));
|
}
|
else if (!R_TB_IsOpen.Content)//门未到位
|
{
|
OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(1));
|
}
|
}
|
}
|
else
|
{
|
OperateResult<UInt16> R_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadUInt16("DB1004." + doorState);
|
if (R_stationDockSteps.Content == 1)//已关门到位,继续下一次循环
|
{
|
comErr += 30;
|
doorCode += 30;
|
doorState += 30;
|
doorOpen += 30;
|
continue;
|
}
|
else//未关门则请求关门
|
{
|
OperateResult W_TB1_OpenDoor = client_TB1.OmronPLCClient.OmronFinsNetClient.Write("D11192.04", false);//请求涂布机关门
|
|
|
if (!W_TB1_OpenDoor.IsSuccess)
|
{
|
OperateResult<bool> R_TB_IsOpen = client_TB1.OmronPLCClient.OmronFinsNetClient.ReadBool("D11092.04");//涂布机关门完成信号
|
|
if (!R_TB_IsOpen.Content)//关门到位
|
{
|
OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(1));
|
}
|
else
|
{
|
OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(3));
|
}
|
}
|
|
}
|
|
}
|
}
|
else if (i == 3)
|
{
|
PLCClient client_TB1 = WCSService.Clients.Find(t => t.PLCName == "涂布机正极2");
|
if (client_TB1 == null)
|
{
|
comErr += 30;
|
doorCode += 30;
|
doorState += 30;
|
doorOpen += 30;
|
continue;
|
}
|
if (R_comErr.Content)
|
{
|
OperateResult W_TB1_OpenDoor = client_TB1.OmronPLCClient.OmronFinsNetClient.Write("D11192.04", true);//请求涂布机开门
|
if (W_TB1_OpenDoor.IsSuccess)
|
{
|
OperateResult<bool> R_TB_IsOpen = client_TB1.OmronPLCClient.OmronFinsNetClient.ReadBool("D11092.04");//涂布机开门完成信号
|
|
if (R_TB_IsOpen.Content)//开门到位
|
{
|
OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(2));
|
}
|
else if (!R_TB_IsOpen.Content)//门未到位
|
{
|
OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(1));
|
}
|
}
|
}
|
else
|
{
|
OperateResult<UInt16> R_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadUInt16("DB1004." + doorState);
|
if (R_stationDockSteps.Content == 1)//已关门到位,继续下一次循环
|
{
|
comErr += 30;
|
doorCode += 30;
|
doorState += 30;
|
doorOpen += 30;
|
continue;
|
}
|
else//未关门则请求关门
|
{
|
|
OperateResult W_TB1_OpenDoor = client_TB1.OmronPLCClient.OmronFinsNetClient.Write("D11192.04", false);//请求涂布机关门
|
|
|
if (!W_TB1_OpenDoor.IsSuccess)
|
{
|
OperateResult<bool> R_TB_IsOpen = client_TB1.OmronPLCClient.OmronFinsNetClient.ReadBool("D11092.04");//涂布机关门完成信号
|
|
if (!R_TB_IsOpen.Content)//关门到位
|
{
|
OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(1));
|
}
|
else
|
{
|
OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(3));
|
}
|
}
|
|
}
|
|
}
|
}
|
else if (i == 4)
|
{
|
PLCClient client_TB1 = WCSService.Clients.Find(t => t.PLCName == "涂布机正极3");
|
PLCClient client_TB2 = WCSService.Clients.Find(t => t.PLCName == "涂布机正极4");
|
if (client_TB1 == null)
|
{
|
comErr += 30;
|
doorCode += 30;
|
doorState += 30;
|
doorOpen += 30;
|
continue;
|
}
|
if (client_TB2 == null)
|
{
|
comErr += 30;
|
doorCode += 30;
|
doorState += 30;
|
doorOpen += 30;
|
continue;
|
}
|
if (R_comErr.Content)
|
{
|
OperateResult W_TB1_OpenDoor = client_TB1.OmronPLCClient.OmronFinsNetClient.Write("D11192.04", true);//请求涂布机开门
|
OperateResult W_TB1_OpenDoor2 = client_TB2.OmronPLCClient.OmronFinsNetClient.Write("D11192.04", true);//请求涂布机开门
|
if (W_TB1_OpenDoor.IsSuccess && W_TB1_OpenDoor2.IsSuccess)
|
{
|
|
OperateResult<bool> R_TB_IsOpen = client_TB1.OmronPLCClient.OmronFinsNetClient.ReadBool("D11092.04");//涂布机开门完成信号
|
OperateResult<bool> R_TB_IsOpen2 = client_TB2.OmronPLCClient.OmronFinsNetClient.ReadBool("D11092.04");//涂布机开门完成信号
|
if (R_TB_IsOpen.Content && R_TB_IsOpen2.Content)//开门到位
|
{
|
OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(2));
|
|
}
|
else if (!R_TB_IsOpen.Content && !R_TB_IsOpen2.Content)//门未到位
|
{
|
OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(1));
|
}
|
}
|
}
|
else
|
{
|
OperateResult<UInt16> R_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.ReadUInt16("DB1004." + doorState);
|
if (R_stationDockSteps.Content == 1)//已关门到位,继续下一次循环
|
{
|
comErr += 30;
|
doorCode += 30;
|
doorState += 30;
|
doorOpen += 30;
|
continue;
|
}
|
else//未关门则请求关门
|
{
|
|
OperateResult W_TB1_OpenDoor = client_TB1.OmronPLCClient.OmronFinsNetClient.Write("D11192.04", false);//请求涂布机关门
|
OperateResult W_TB1_OpenDoor2 = client_TB2.OmronPLCClient.OmronFinsNetClient.Write("D11192.04", false);//请求涂布机关门
|
|
if (W_TB1_OpenDoor.IsSuccess && W_TB1_OpenDoor.IsSuccess)
|
{
|
OperateResult<bool> R_TB_IsOpen = client_TB1.OmronPLCClient.OmronFinsNetClient.ReadBool("D11092.04");//涂布机关门完成信号
|
OperateResult<bool> R_TB_IsOpen2 = client_TB2.OmronPLCClient.OmronFinsNetClient.ReadBool("D11092.04");//涂布机关门完成信号
|
if (!R_TB_IsOpen.Content && !R_TB_IsOpen2.Content)//关门到位
|
{
|
OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(1));
|
|
}
|
else
|
{
|
OperateResult W_stationDockSteps = agvjrplc.SiemensPLCClient.SiemensS7NetClient.Write("DB1004." + (doorState), Convert.ToUInt16(3));
|
}
|
}
|
|
}
|
|
}
|
}
|
else if (i == 5)
|
{
|
if (R_comErr.Content)
|
{
|
// WIDESEA_Common.Tools.WriteLog.GetLog("开门信号").Write($"Info:{"正极涂布-辊分自动门"}+{DateTime.Now}", "开门信号");
|
Dictionary<string, string> Doorsignal = new Dictionary<string, string>();
|
Doorsignal.Add("R_comErr", R_comErr.Content.ToString());//true
|
Doorsignal.Add("DoorName", "正极涂布-辊分自动门");//item.ToString()
|
string wificont = WIFIAPIInvoke.Doorsignal(Doorsignal);
|
|
WebResponseContent wificontent = JsonConvert.DeserializeObject<WebResponseContent>(wificont);//请求缓存架程序开门
|
|
if (wificontent.Status)
|
{
|
|
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<UInt16> 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:{"正极涂布-辊分自动门"}+{DateTime.Now}", "断开开门信号");
|
//AGV不给开门信号的时候 断开开门信号
|
Dictionary<string, string> Doorsigna1 = new Dictionary<string, string>();
|
Doorsigna1.Add("R_comErr", R_comErr.Content.ToString());
|
Doorsigna1.Add("DoorName", "正极涂布-辊分自动门");
|
string wificont = WIFIAPIInvoke.Doorsignal(Doorsigna1);
|
|
WebResponseContent wificontent2 = JsonConvert.DeserializeObject<WebResponseContent>(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}", "信号传递");
|
|
}
|
|
|
}
|
}
|