Files
6098/Cowain.Bake.Main/Common/CmdFactories.cs

245 lines
9.5 KiB
C#
Raw Normal View History

using Cowain.Bake.BLL;
using Cowain.Bake.Common.Core;
using Cowain.Bake.Common.Enums;
using Cowain.Bake.Communication.Interface;
using Cowain.Bake.Model;
using Cowain.Bake.Model.Models;
using HslCommunication;
using System.Linq;
using Unity;
namespace Cowain.Bake.Main.Common
{
public class CmdFactories
{
IUnityContainer _unityContainer { get; set; }
//IPLCDevice agv = null;
public CmdFactories(IUnityContainer unityContainer)
{
_unityContainer = unityContainer;
}
public bool StartBaking(IPLCDevice plc, int stationId, bool[] bakeEanble, bool manual = false)
{
if (!Write<bool[]>(plc, EStoveSignal.HeatEnableStep.ToString(), stationId, 1, bakeEanble).IsSuccess)
{
LogHelper.Instance.Error($"<22><><EFBFBD>ʹ<E6BFBE><CAB9>ʧ<EFBFBD>ܣ<EFBFBD>plc:{plc.Name}", true);
return false;
}
if (!Write<bool>(plc, EStoveSignal.BakingStart.ToString(), stationId, 1, true).IsSuccess)
{
LogHelper.Instance.GetCurrentClassError($"<22>·<EFBFBD><C2B7><EFBFBD>ʼ<EFBFBD>濾ʧ<E6BFBE>ܣ<EFBFBD>plc:{plc.Name}", true);
return false;
}
if (manual)
{
LogHelper.Instance.Info($"<22>·<EFBFBD><C2B7><EFBFBD>ʼ<EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>", true);
}
return true;
}
//public bool EndBaking(int stationId)
//{
// TDeviceConfig conf = _unityContainer.Resolve<DeviceConfigService>().GetConfig(stationId);
// IPLCDevice plc = _unityContainer.Resolve<IPLCDevice>(conf.Name);
// if (plc == null || !plc.IsConnect)
// {
// LogHelper.Instance.GetCurrentClassError($"<22><><EFBFBD><EFBFBD>PLCʧ<43>ܣ<EFBFBD>plc:{plc.Name}", true);
// return false;
// }
// if (!Write<bool>(plc, EStoveSignal.BakingEnd.ToString(), stationId, true).IsSuccess)
// {
// LogHelper.Instance.GetCurrentClassError($"<22>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>濾ʧ<E6BFBE>ܣ<EFBFBD>plc:{plc.Name}", true);
// return false;
// }
// LogHelper.Instance.Info($"<22>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>", true);
// return true;
//}
//<2F><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>
public bool ResetEndBaking(int machineId)
{
TDeviceConfig conf = _unityContainer.Resolve<DeviceConfigService>().GetConfig(machineId);
IPLCDevice plc = _unityContainer.Resolve<IPLCDevice>(conf.Name);
if (plc == null || !plc.IsConnect)
{
LogHelper.Instance.GetCurrentClassError($"<22><><EFBFBD><EFBFBD>PLCʧ<43>ܣ<EFBFBD>plc:{plc.Name}", true);
return false;
}
if (!Write<bool>(plc, EStoveSignal.BakingMark.ToString(), machineId, 1, false).IsSuccess)
{
LogHelper.Instance.GetCurrentClassError($"<22>·<EFBFBD><C2B7><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>濾ʧ<E6BFBE>ܣ<EFBFBD>plc:{plc.Name}", true);
return false;
}
return true;
}
public bool OpenDoor(int stationId, int layer)
{
TDeviceConfig fromDev = _unityContainer.Resolve<DeviceConfigService>().GetConfig(stationId);
IPLCDevice plc = _unityContainer.Resolve<IPLCDevice>(fromDev.Name);
if (plc == null || !plc.IsConnect)
{
LogHelper.Instance.GetCurrentClassError($"<22><><EFBFBD><EFBFBD>PLCʧ<43>ܣ<EFBFBD>plc:{plc.Name},layer:{layer}", true);
return false;
}
if (!CommonFun.Instance.IsStoveQualified(plc, stationId, layer, false, true)) //<2F><><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD><EFBFBD>
{
return false;
}
if (Write<bool>(plc, EStoveSignal.OpenDoor.ToString(), stationId,1, true).IsSuccess)
{
HandyControl.Controls.MessageBox.Show($@"<22>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ");
return false;
}
else
{
HandyControl.Controls.MessageBox.Error($@"<22>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ʧ<EFBFBD>ܡ<EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ");
LogHelper.Instance.GetCurrentClassError($"<22>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ʧ<EFBFBD>ܣ<EFBFBD>plc:{plc.Name},layer:{layer}");
}
return true;
}
public bool CloseDoor(int machineId, int layer)
{
TDeviceConfig fromDev = _unityContainer.Resolve<DeviceConfigService>().GetConfig(machineId);
IPLCDevice plc = _unityContainer.Resolve<IPLCDevice>(fromDev.Name);
if (plc == null || !plc.IsConnect)
{
LogHelper.Instance.GetCurrentClassError($"<22><><EFBFBD><EFBFBD>PLCʧ<43>ܣ<EFBFBD>plc:{plc.Name},layer:{layer}", true);
return false;
}
if (!CommonFun.Instance.IsStoveQualified(plc, machineId, layer, false, true)) //<2F><><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD><EFBFBD>
{
return false;
}
if (Write<bool>(plc, EStoveSignal.CloseDoor.ToString(), machineId, 1, true).IsSuccess)
{
HandyControl.Controls.MessageBox.Show($@"<22>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ");
return true;
}
else
{
HandyControl.Controls.MessageBox.Error($@"<22>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ʧ<EFBFBD>ܡ<EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ");
LogHelper.Instance.GetCurrentClassError($"<22>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ʧ<EFBFBD>ܣ<EFBFBD>plc:{plc.Name},layer:{layer}");
return false;
}
}
public bool InitStove(int stationId, int layer)
{
TDeviceConfig dev = _unityContainer.Resolve<DeviceConfigService>().GetConfig(stationId);
IPLCDevice plc = _unityContainer.Resolve<IPLCDevice>(dev.Name);
if (plc == null || !plc.IsConnect)
{
LogHelper.Instance.GetCurrentClassError($"<22><><EFBFBD><EFBFBD>PLCʧ<43>ܣ<EFBFBD>plc:{plc.Name}");
return false;
}
if (!CommonFun.Instance.IsStoveQualified(plc, stationId, layer, false, true)) //<2F><><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD><EFBFBD>
{
return false;
}
if (Write<bool>(plc, EStoveSignal.Initial.ToString(), stationId, 1, true).IsSuccess)
{
HandyControl.Controls.MessageBox.Show($@"<22>·<EFBFBD><C2B7><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ");
return true;
}
else
{
HandyControl.Controls.MessageBox.Error($@"<22>·<EFBFBD><C2B7><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ʧ<EFBFBD>ܡ<EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ");
LogHelper.Instance.GetCurrentClassError($"<22>·<EFBFBD><C2B7><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ʧ<EFBFBD>ܣ<EFBFBD>plc:{plc.Name}");
return false;
}
}
//public bool NotifyPLCHavePallet(int machineId, int layer, int number)
//{
// TDeviceConfig dev = _unityContainer.Resolve<DeviceConfigService>().GetConfig(machineId);
// IPLCDevice plc = _unityContainer.Resolve<IPLCDevice>(dev.Name);
// if (plc == null || !plc.IsConnect)
// {
// LogHelper.Instance.GetCurrentClassError($"<22><><EFBFBD><EFBFBD>PLCʧ<43>ܣ<EFBFBD>plc:{plc.Name},layer:{layer}");
// return false;
// }
// if (!CommonFun.Instance.IsStoveQualified(plc, machineId, layer))
// {
// return false;
// }
// string Tray = number == 1 ? EStoveSignal.Tray1.ToString() : EStoveSignal.Tray2.ToString();
// if (Write<bool>(plc, Tray, machineId,layer,true).IsSuccess)
// {
// HandyControl.Controls.MessageBox.Show($@"<22>·<EFBFBD><C2B7><EFBFBD><EFBFBD>̼<EFBFBD><CCBC><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ");
// return true;
// }
// else
// {
// HandyControl.Controls.MessageBox.Error($@"<22>·<EFBFBD><C2B7><EFBFBD><EFBFBD>̼<EFBFBD><CCBC><EFBFBD>ʧ<EFBFBD>ܡ<EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ");
// LogHelper.Instance.GetCurrentClassError($"<22>·<EFBFBD><C2B7><EFBFBD><EFBFBD>̼<EFBFBD><CCBC><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>plc:{plc.Name},layer:{layer}");
// return false;
// }
//}
//public bool NotifyPLCDontHavePallet(int machineId, int layer, int number)
//{
// TDeviceConfig dev = _unityContainer.Resolve<DeviceConfigService>().GetConfig(machineId);
// IPLCDevice plc = _unityContainer.Resolve<IPLCDevice>(dev.Name);
// if (plc == null || !plc.IsConnect)
// {
// LogHelper.Instance.GetCurrentClassError($"<22><><EFBFBD><EFBFBD>PLCʧ<43>ܣ<EFBFBD>plc:{plc.Name},layer:{layer}");
// return false;
// }
// if (!CommonFun.Instance.IsStoveQualified(plc, machineId, layer))
// {
// return false;
// }
// string Tray = number == 1 ? EStoveSignal.Tray1.ToString() : EStoveSignal.Tray2.ToString();
// if (Write<bool>(plc, Tray, machineId, layer, false).IsSuccess)
// {
// HandyControl.Controls.MessageBox.Show($@"<22>·<EFBFBD><C2B7><EFBFBD><EFBFBD>̼<EFBFBD><CCBC><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ");
// return true;
// }
// else
// {
// HandyControl.Controls.MessageBox.Error($@"<22>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̼<EFBFBD><CCBC><EFBFBD>ʧ<EFBFBD>ܡ<EFBFBD>", "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ");
// LogHelper.Instance.GetCurrentClassError($"<22>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̼<EFBFBD><CCBC><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>plc:{plc.Name},layer:{layer}");
// return false;
// }
//}
public OperateResult Write<T>(IPLCDevice plc, string paramName, int machineId, int layer, T data)
{
string nodeAddr = "";
OperateResult result = new OperateResult()
{
IsSuccess = false,
};
Variable node = null;
node = (from storage in plc.Storages
from item in storage.VariableList
where storage.StationId == machineId && item.ParamName == paramName && item.Number == layer
select item).FirstOrDefault();
if (null == node)
{
return result;
}
nodeAddr = $"{node.Address}{node.VarName}";
return plc.Write<T>(nodeAddr, data);
}
}
}