首次提交:添加src文件夹代码

This commit is contained in:
2026-02-27 14:02:43 +08:00
commit d330cfbca7
4184 changed files with 5546478 additions and 0 deletions

View File

@@ -0,0 +1,244 @@
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($"层烘烤使能失败plc:{plc.Name}", true);
return false;
}
if (!Write<bool>(plc, EStoveSignal.BakingStart.ToString(), stationId, 1, true).IsSuccess)
{
LogHelper.Instance.GetCurrentClassError($"下发开始烘烤失败plc:{plc.Name}", true);
return false;
}
if (manual)
{
LogHelper.Instance.Info($"下发开始烘烤成功!", 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($"连接PLC失败plc:{plc.Name}", true);
// return false;
// }
// if (!Write<bool>(plc, EStoveSignal.BakingEnd.ToString(), stationId, true).IsSuccess)
// {
// LogHelper.Instance.GetCurrentClassError($"下发结束烘烤失败plc:{plc.Name}", true);
// return false;
// }
// LogHelper.Instance.Info($"下发结束烘烤成功!", true);
// return true;
//}
//复位结束烘烤
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($"连接PLC失败plc:{plc.Name}", true);
return false;
}
if (!Write<bool>(plc, EStoveSignal.BakingMark.ToString(), machineId, 1, false).IsSuccess)
{
LogHelper.Instance.GetCurrentClassError($"下发复位结束烘烤失败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($"连接PLC失败plc:{plc.Name},layer:{layer}", true);
return false;
}
if (!CommonFun.Instance.IsStoveQualified(plc, stationId, layer, false, true)) //不在工作中
{
return false;
}
if (Write<bool>(plc, EStoveSignal.OpenDoor.ToString(), stationId,1, true).IsSuccess)
{
HandyControl.Controls.MessageBox.Show($@"下发开门指令成功!", "操作提示");
return false;
}
else
{
HandyControl.Controls.MessageBox.Error($@"下发开门指令失败。", "操作提示");
LogHelper.Instance.GetCurrentClassError($"下发开门指令失败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($"连接PLC失败plc:{plc.Name},layer:{layer}", true);
return false;
}
if (!CommonFun.Instance.IsStoveQualified(plc, machineId, layer, false, true)) //不在工作中
{
return false;
}
if (Write<bool>(plc, EStoveSignal.CloseDoor.ToString(), machineId, 1, true).IsSuccess)
{
HandyControl.Controls.MessageBox.Show($@"下发关门指令成功!", "操作提示");
return true;
}
else
{
HandyControl.Controls.MessageBox.Error($@"下发关门指令失败。", "操作提示");
LogHelper.Instance.GetCurrentClassError($"下发关门指令失败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($"连接PLC失败plc:{plc.Name}");
return false;
}
if (!CommonFun.Instance.IsStoveQualified(plc, stationId, layer, false, true)) //不在工作中
{
return false;
}
if (Write<bool>(plc, EStoveSignal.Initial.ToString(), stationId, 1, true).IsSuccess)
{
HandyControl.Controls.MessageBox.Show($@"下发初始化请求指令成功!", "操作提示");
return true;
}
else
{
HandyControl.Controls.MessageBox.Error($@"下发初始化请求指令失败。", "操作提示");
LogHelper.Instance.GetCurrentClassError($"下发初始化请求指令失败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($"连接PLC失败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($@"下发托盘记忆成功!", "操作提示");
// return true;
// }
// else
// {
// HandyControl.Controls.MessageBox.Error($@"下发托盘记忆失败。", "操作提示");
// LogHelper.Instance.GetCurrentClassError($"下发托盘记忆失败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($"连接PLC失败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($@"下发托盘记忆成功!", "操作提示");
// return true;
// }
// else
// {
// HandyControl.Controls.MessageBox.Error($@"下发清除托盘记忆失败。", "操作提示");
// LogHelper.Instance.GetCurrentClassError($"下发清除托盘记忆失败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);
}
}
}