diff --git a/MECF.Framework.RT.EquipmentLibrary/Devices/IoPSU.cs b/MECF.Framework.RT.EquipmentLibrary/Devices/IoPSU.cs index 30d131d..d641008 100644 --- a/MECF.Framework.RT.EquipmentLibrary/Devices/IoPSU.cs +++ b/MECF.Framework.RT.EquipmentLibrary/Devices/IoPSU.cs @@ -1,165 +1,69 @@ using Aitex.Core.RT.DataCenter; -using Aitex.Core.RT.Device; using Aitex.Core.RT.Event; using Aitex.Core.RT.IOCore; using Aitex.Core.RT.Log; using Aitex.Core.RT.OperationCenter; using Aitex.Core.RT.SCCore; using Aitex.Core.Util; -using MECF.Framework.Common.CommonData.DeviceData; -using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Temps.AE; -using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Temps; using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Xml; namespace Aitex.Core.RT.Device.Devices { public class IoPSU : BaseDevice, IDevice { - public float OutputVoltageFeedBack - { - get - { - return _aiOutputVoltage == null ? 0 : (_isFloatAioType ? _aiOutputVoltage.FloatValue : _aiOutputVoltage.Value); - } - } + #region Variables - public float OutputArmsFeedBack - { - get - { - return _aiOutputArms == null ? 0 : (_isFloatAioType ? _aiOutputArms.FloatValue : _aiOutputArms.Value); - } - } - - public double Resistance - { - get - { - return OutputArmsFeedBack == 0 ? 0 : ((int)(OutputVoltageFeedBack / OutputArmsFeedBack * 1000)) / 1000.0; - } - } - - public float OutputPowerFeedBack - { - get - { - return _aiOutputPower == null ? 0 : (_isFloatAioType ? _aiOutputPower.FloatValue : _aiOutputPower.Value); - } - } - - public bool StatusFeedBack - { - get - { - return _diStatus == null ? false : _diStatus.Value; - } - } - - public float SimVoltageFeedBack - { - get - { - return _aiSimVoltage == null ? 0 : (_isFloatAioType ? _aiSimVoltage.FloatValue : _aiSimVoltage.Value); - } - } - - public float SimArmsFeedBack - { - get - { - return _aiSimArms == null ? 0 : (_isFloatAioType ? _aiSimArms.FloatValue : _aiSimArms.Value); - } - } - - public bool AlarmFeedBack - { - get - { - return _diAlarm == null ? false : _diAlarm.Value; - } - } - - - public float ConstantSetPoint - { - get - { - return _aoConstant == null ? 0 : (_isFloatAioType ? _aoConstant.FloatValue : _aoConstant.Value); - } - set - { - if (_isFloatAioType) - { - _aoConstant.FloatValue = value; - } - else - { - _aoConstant.Value = (short)value; - } - } - } - - public bool AllHeatEnable - { - get - { - return _diHeatEnable == null ? false : _diHeatEnable.Value; - } - } - - - - private bool _isFloatAioType = false; - private AIAccessor _aiOutputVoltage = null; - private AIAccessor _aiOutputArms = null; - private AIAccessor _aiOutputPower = null; - private AIAccessor _aiSimVoltage = null; - private AIAccessor _aiSimArms = null; + private readonly bool _isFloatAioType; + private readonly AIAccessor _aiOutputVoltage; + private readonly AIAccessor _aiOutputArms; + private readonly AIAccessor _aiOutputPower; + private readonly AIAccessor _aiSimVoltage; + private readonly AIAccessor _aiSimArms; //private AOAccessor _aoEnable = null; //private AOAccessor _aoReset = null; - private AOAccessor _aoConstant = null; + private readonly AOAccessor _aoConstant; - private DIAccessor _diStatus = null; - private DIAccessor _diAlarm = null; - private DIAccessor _diHeatEnable = null; - private DIAccessor _diCommunicationError = null; + private readonly DIAccessor _diStatus; + private readonly DIAccessor _diAlarm; + private readonly DIAccessor _diHeatEnable; + private DIAccessor _diCommunicationError; - private DOAccessor _doReset; - private DOAccessor _doStatus; - private DOAccessor _doHeatEnable; - private DOAccessor _doRelatedEnable; //每个Enable同时关联的Inner,Middle,Out Enable + private readonly DOAccessor _doReset; + private readonly DOAccessor _doStatus; + private readonly DOAccessor _doHeatEnable; + private readonly DOAccessor _doRelatedEnable; //每个Enable同时关联的Inner,Middle,Out Enable private string _infoText = ""; private string _commInfoText = ""; - private R_TRIG _alarmTrig = new R_TRIG(); - private R_TRIG _commAlarmTrig = new R_TRIG(); - private R_TRIG _enableTrig = new R_TRIG(); - private R_TRIG _enableTrig2 = new R_TRIG(); + private readonly R_TRIG _alarmTrig = new(); + private readonly R_TRIG _commAlarmTrig = new(); + private readonly R_TRIG _enableTrig = new(); + private readonly R_TRIG _enableTrig2 = new(); - private R_TRIG _trigVoltage = new R_TRIG(); - private R_TRIG _trigCurrent = new R_TRIG(); + private readonly R_TRIG _trigVoltage = new(); + private readonly R_TRIG _trigCurrent = new(); - private R_TRIG _trigResistance = new R_TRIG(); + private readonly R_TRIG _trigResistance = new(); - private DeviceTimer _timer = new DeviceTimer(); - private DeviceTimer _timerResistance = new DeviceTimer(); + private readonly DeviceTimer _timer = new(); + private readonly DeviceTimer _timerResistance = new(); public Func FuncCheckInterLock; + #endregion + + #region Constructors + public IoPSU(string module, XmlElement node, string ioModule = "") { var attrModule = node.GetAttribute("module"); - base.Module = string.IsNullOrEmpty(attrModule) ? module : attrModule; - base.Name = node.GetAttribute("id"); - base.Display = node.GetAttribute("display"); - base.DeviceID = node.GetAttribute("schematicId"); + Module = string.IsNullOrEmpty(attrModule) ? module : attrModule; + Name = node.GetAttribute("id"); + Display = node.GetAttribute("display"); + DeviceID = node.GetAttribute("schematicId"); _aiOutputVoltage = ParseAiNode("aiOutputVoltage", node, ioModule); _aiOutputArms = ParseAiNode("aiOutputArms", node, ioModule); @@ -182,10 +86,53 @@ namespace Aitex.Core.RT.Device.Devices _isFloatAioType = !string.IsNullOrEmpty(node.GetAttribute("aioType")) && (node.GetAttribute("aioType") == "float"); - + } - string reason = string.Empty; + #endregion + + #region Properties + + public float OutputVoltageFeedBack => _aiOutputVoltage == null ? 0 : (_isFloatAioType ? _aiOutputVoltage.FloatValue : _aiOutputVoltage.Value); + + public float OutputArmsFeedBack => _aiOutputArms == null ? 0 : (_isFloatAioType ? _aiOutputArms.FloatValue : _aiOutputArms.Value); + + public double Resistance => OutputArmsFeedBack == 0 ? 0 : ((int)(OutputVoltageFeedBack / OutputArmsFeedBack * 1000)) / 1000.0; + + public float OutputPowerFeedBack => _aiOutputPower == null ? 0 : (_isFloatAioType ? _aiOutputPower.FloatValue : _aiOutputPower.Value); + + public bool StatusFeedBack => _diStatus?.Value ?? false; + + public float SimVoltageFeedBack => _aiSimVoltage == null ? 0 : (_isFloatAioType ? _aiSimVoltage.FloatValue : _aiSimVoltage.Value); + + public float SimArmsFeedBack => _aiSimArms == null ? 0 : (_isFloatAioType ? _aiSimArms.FloatValue : _aiSimArms.Value); + + public bool AlarmFeedBack => _diAlarm?.Value ?? false; + + + public float ConstantSetPoint + { + get => _aoConstant == null ? 0 : (_isFloatAioType ? _aoConstant.FloatValue : _aoConstant.Value); + set + { + if (_isFloatAioType) + { + _aoConstant.FloatValue = value; + } + else + { + _aoConstant.Value = (short)value; + } + } + } + + public bool AllHeatEnable => _diHeatEnable?.Value ?? false; + + #endregion + + #region Methods + + public bool Initialize() { DATA.Subscribe($"{Module}.{Name}.OutputVoltageFeedBack", () => OutputVoltageFeedBack); @@ -201,22 +148,22 @@ namespace Aitex.Core.RT.Device.Devices OP.Subscribe($"{Module}.{Name}.SetHeadHeaterEnable", (function, args) => { - bool isTrue = Convert.ToBoolean(args[0]); - SetHeadHeaterEnable(isTrue, out reason); + var isTrue = Convert.ToBoolean(args[0]); + SetHeadHeaterEnable(isTrue, out _); return true; }); OP.Subscribe($"{Module}.{Name}.SetPSUEnable", (function, args) => { - bool isTrue = Convert.ToBoolean(args[0]); - SetPSUEnable(isTrue, out reason); + var isTrue = Convert.ToBoolean(args[0]); + SetPSUEnable(isTrue, out _); return true; }); OP.Subscribe($"{Module}.{Name}.SetPSUReset", (function, args) => { - bool isTrue = Convert.ToBoolean(args[0]); - SetPSUReset(isTrue, out reason); + var isTrue = Convert.ToBoolean(args[0]); + SetPSUReset(isTrue, out _); return true; }); @@ -225,8 +172,6 @@ namespace Aitex.Core.RT.Device.Devices public bool SetPSUEnable(bool setValue, out string reason) { - reason = ""; - if (!_doStatus.Check(setValue, out reason)) { EV.PostWarningLog(Module, reason); @@ -279,8 +224,6 @@ namespace Aitex.Core.RT.Device.Devices public bool SetPSUReset(bool setValue, out string reason) { - reason = ""; - if (!_doReset.Check(setValue, out reason)) { EV.PostWarningLog(Module, reason); @@ -304,7 +247,7 @@ namespace Aitex.Core.RT.Device.Devices { } - public void Monitor() + protected override void HandleMonitor() { try { @@ -342,8 +285,8 @@ namespace Aitex.Core.RT.Device.Devices private void MonitorAlarm() { //检查电阻值是否在合理范围 - double dbResistorMax = SC.GetValue($"PM.{Module}.Heater.{Name}ResistanceMax"); - int timeOut = SC.GetValue($"PM.{Module}.Heater.ResistanceCheckTimeOut"); + var dbResistorMax = SC.GetValue($"PM.{Module}.Heater.{Name}ResistanceMax"); + var timeOut = SC.GetValue($"PM.{Module}.Heater.ResistanceCheckTimeOut"); if (Resistance > dbResistorMax && _timerResistance.IsIdle()) { @@ -364,7 +307,7 @@ namespace Aitex.Core.RT.Device.Devices private void MonitorEnableTimer() { - if (base.Name == "PSU2") + if (Name == "PSU2") { _enableTrig.CLK = !_diHeatEnable.Value; if (_enableTrig.Q) @@ -383,7 +326,7 @@ namespace Aitex.Core.RT.Device.Devices { get { - object temp=new object(); + var temp=new object(); if (SC.GetConfigItem("AETemp.EnableDevice").BoolValue) { temp = DATA.Poll($"{Module}.AETemp.Middle"); @@ -398,5 +341,6 @@ namespace Aitex.Core.RT.Device.Devices } } + #endregion } }