using Admin.Core.IService.IService_New;
using Admin.Core.Model.Model_New;
using Aucma.Core.HwPLc;
#region << 版 本 注 释 >>
/*--------------------------------------------------------------------
* 版权所有 (c) 2024 WenJY 保留所有权利。
* CLR版本:4.0.30319.42000
* 机器名称:LAPTOP-E0N2L34V
* 命名空间:Aucma.Core.DataCollector.Factory
* 唯一标识:f88ccab0-cc8a-4d6f-8be8-1a0dbc687b9e
*
* 创建者:WenJY
* 电子邮箱:wenjy@mesnac.com
* 创建时间:2024-03-28 11:53:14
* 版本:V1.0.0
* 描述:
*
*--------------------------------------------------------------------
* 修改人:
* 时间:
* 修改说明:
*
* 版本:V1.0.0
*--------------------------------------------------------------------*/
#endregion << 版 本 注 释 >>
namespace Aucma.Core.DataCollector.Factory
{
///
/// 箱壳预装数据采集
///
public class ShellPreassembleFactory : DataCollectorFactory
{
private PlcModel _plc = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("ShellPreassemble"));
public ShellPreassembleFactory(IBaseDeviceParamServices deviceParamServices, IRecordDeviceAlarmInfoServices deviceAlarmInfoServices, IRecordDeviceElectricityServices deviceElectricityServices) : base(deviceParamServices, deviceAlarmInfoServices, deviceElectricityServices)
{
}
public override void CollectDeviceAlarmInfo(out List deviceAlarmInfos)
{
while (true)
{
try
{
if (_plc != null)
{
Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}采集箱壳预装设备报警信息");
var plc = _plc.plc;
var deviceParams = base._deviceParamServices.Query(x => x.DeviceCode == "E00019");
if (deviceParams != null)
{
deviceAlarmInfos = new List();
string batchId = System.Guid.NewGuid().ToString("N");
foreach (var item in deviceParams)
{
base.ReadParamValueByPlc(plc, item.ParamAddress, item.ParamType, out int paramValue);
if (paramValue != 0)
{
deviceAlarmInfos.Add(new Record_DeviceAlarmInfo()
{
BatchId = batchId,
DeviceCode = item.DeviceCode,
DeviceType = "1",
ParamCode = item.ParamCode,
ParamValue = paramValue.ToString(),
AlarmInfo = item.ParamName,
AlarmTime = DateTime.Now,
CreadtedTime = DateTime.Now,
});
}
}
if (deviceAlarmInfos.Count > 0)
{
base._deviceAlarmInfoServices.AddAsync(deviceAlarmInfos);
}
}
Task.Delay(base.AlarmReadTimer).Wait();
}
else
{
Task.Delay(base.AlarmReadTimer).Wait();
_plc = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("ShellPreassemble"));
}
}
catch (Exception ex)
{
base._logger.Error($"采集箱壳预装设备报警信息异常:{ex.Message}");
}
}
}
public override void CollectDeviceElectricity(out List deviceElectricitys)
{
while (true)
{
try
{
if (_plc != null)
{
Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}采集箱壳预装设备用电数据");
var plc = _plc.plc;
deviceElectricitys = new List();
// 地面箱壳预装远程
string[] ground = new string[] { "D7602", "D7604", "D7606", "D7608", "D7610", "D7612", "D7630", "D7634", "D7638", "D7642" };
Record_DeviceElectricity _deviceElectricity_ground = new Record_DeviceElectricity()
{
MonitorId = "E00019_0001"
};
base.ReadDeviceElectricity(ground, plc, ref _deviceElectricity_ground);
if(_deviceElectricity_ground != null)
{
deviceElectricitys.Add(_deviceElectricity_ground);
}
//平台箱壳预装主柜
string[] platform = new string[] { "D7652", "D7664", "D7666", "D7668", "D7660", "D7662", "D7680", "D7684", "D7688", "D7692" };
Record_DeviceElectricity _deviceElectricity_platform = new Record_DeviceElectricity()
{
MonitorId = "E00019_0002"
};
base.ReadDeviceElectricity(platform, plc, ref _deviceElectricity_platform);
if(_deviceElectricity_platform != null)
{
deviceElectricitys.Add(_deviceElectricity_platform);
}
if(deviceElectricitys.Count > 0)
{
var result = base._deviceElectricityServices.AddAsync(deviceElectricitys);
}
else
{
Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}采集箱壳预装设备用电数据失败,数据为空");
}
Task.Delay(base.EleReadTimer).Wait();
}
else
{
Task.Delay(base.EleReadTimer).Wait();
_plc = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("ShellPreassemble"));
}
}
catch (Exception ex)
{
base._logger.Error($"采集箱壳库设备用电数据采集异常:{ex.Message}");
}
}
}
}
}