123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- using Aitex.Core.RT.Log;
- using Aitex.Core.RT.OperationCenter;
- using Aitex.Core.RT.SCCore;
- using Aitex.Core.Util;
- using MECF.Framework.Common.Beckhoff.ModuleIO;
- using MECF.Framework.Common.CommonData.Reservoir;
- using MECF.Framework.Common.Equipment;
- using MECF.Framework.Common.TwinCat;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace PunkHPX8_RT.Devices.Reservoir
- {
- public class DMReservoirDevice : ReservoirDevice
- {
- #region 常量
- private const string AN_PUMP = "ANPump";
- #endregion
- #region 内部变量
- /// <summary>
- /// 默认泵速
- /// </summary>
- private double _anPumpSpeed = 5000;
- #endregion
- #region Trigger
- /// <summary>
- /// low WaterLevel trigger
- /// </summary>
- private R_TRIG _anWaterLevelLowerTrigger = new R_TRIG();
- /// <summary>
- /// low WaterLevel trigger
- /// </summary>
- private R_TRIG _anWaterLevelHighTrigger = new R_TRIG();
- #endregion
- /// <summary>
- /// 构造函数
- /// </summary>
- /// <param name="moduleName"></param>
- public DMReservoirDevice(string moduleName) : base(moduleName)
- {
- }
- /// <summary>
- /// 订阅变量
- /// </summary>
- protected override void SubscribeValueAction()
- {
- base.SubscribeValueAction();
- IoSubscribeUpdateVariable(AN_DI_REPLEN);
- IoSubscribeUpdateVariable(AN_FLOW);
- IoSubscribeUpdateVariable(AN_PUMP_ENABLE);
- IoSubscribeUpdateVariable(AN_PUMP_SPEED);
- IoSubscribeUpdateVariable(DEGAS_ENABLE);
- }
- /// <summary>
- /// 订阅Operation
- /// </summary>
- protected override void InitializeOperation()
- {
- base.InitializeOperation();
- OP.Subscribe($"{Module}.ANPumpEnable", AnPumpOnOperation);
- OP.Subscribe($"{Module}.ANPumpSpeed", ANPumpSpeedOperation);
- OP.Subscribe($"{Module}.ANPumpDisable", AnPumpOffOperation);
- }
- #region AnPump
- /// <summary>
- /// AN Pump调速
- /// </summary>
- /// <param name="cmd"></param>
- /// <param name="args"></param>
- /// <returns></returns>
- private bool ANPumpSpeedOperation(string cmd, object[] args)
- {
- double anMaxPumpSpeed = 0;
- if (SC.ContainsItem("Reservoir.ANMaxPumpSpeed"))
- {
- anMaxPumpSpeed = SC.GetValue<double>("Reservoir.ANMaxPumpSpeed");
- }
- if (double.TryParse(args[0].ToString(), out double speed))
- {
- _anPumpSpeed = speed;
- if (_anPumpSpeed > anMaxPumpSpeed)
- {
- LOG.WriteLog(eEvent.WARN_RESERVOIR, Module, $"AN pump speed:{_anPumpSpeed} is over AN max pump speed {anMaxPumpSpeed}!");
- return false;
- }
- return AnPumpSpeed(_anPumpSpeed);
- }
- else
- {
- LOG.WriteLog(eEvent.ERR_RESERVOIR, Module, $"{args[0]} is nor invalid speed");
- return false;
- }
- }
- /// <summary>
- /// 设置AN泵速
- /// </summary>
- /// <param name="caPumpSpeed"></param>
- /// <returns></returns>
- public bool AnPumpSpeed(double anPumpSpeed)
- {
- string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{AN_PUMP_SPEED}");
- return BeckhoffIOManager.Instance.WriteIoValue(ioName, anPumpSpeed);
- }
- /// <summary>
- /// 阳极Pump On
- /// </summary>
- /// <param name="cmd"></param>
- /// <param name="args"></param>
- /// <returns></returns>
- private bool AnPumpOnOperation(string cmd, object[] args)
- {
- double caPumpSpeed = SC.GetValue<double>("Reservoir.ANDefaultPumpSpeed");
- bool result = AnPumpSpeed(caPumpSpeed);
- if (result)
- {
- string enableIOName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{AN_PUMP_ENABLE}");
- return BeckhoffIOManager.Instance.WriteIoValue(enableIOName, true);
- }
- else
- {
- return false;
- }
- }
- /// <summary>
- /// 阳极Pump Off
- /// </summary>
- /// <param name="cmd"></param>
- /// <param name="args"></param>
- /// <returns></returns>
- private bool AnPumpOffOperation(string cmd, object[] args)
- {
- return AnPumpOff();
- }
- /// <summary>
- /// 关闭阳极Pump
- /// </summary>
- /// <returns></returns>
- public bool AnPumpOff()
- {
- string ioName = BeckhoffModuleIOManager.Instance.GetIoNameByInnerModuleName($"{Module}.{AN_PUMP_ENABLE}");
- return BeckhoffIOManager.Instance.WriteIoValue(ioName, false);
- }
- #endregion
- /// <summary>
- /// 水位监控
- /// </summary>
- protected override void WaterLevelMonitor()
- {
- base.WaterLevelMonitor();
- }
- /// <summary>
- /// 补水监控
- /// </summary>
- protected override void AutoDireplenMonitor()
- {
- base.AutoDireplenMonitor();
- }
- /// <summary>
- /// 阳极补水
- /// </summary>
- private void AnDireplenMonitor()
- {
-
- }
- }
- }
|