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}"); } } } } }