245 lines
9.5 KiB
C#
245 lines
9.5 KiB
C#
|
|
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);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|