123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- using Aitex.Core.RT.Device;
- using Aitex.Core.RT.Log;
- using PunkHPX8_Core;
- using PunkHPX8_RT.Devices.Reservoir;
- using PunkHPX8_RT.Modules.Reservoir;
- using MECF.Framework.Common.Persistent.Reservoirs;
- using MECF.Framework.Common.Persistent.Temperature;
- using MECF.Framework.Common.RecipeCenter;
- using System;
- using System.Collections.Generic;
- using System.Reflection;
- using static PunkHPX8_RT.Devices.Reservoir.DosingSystemHelper;
- namespace PunkHPX8_RT.Devices.Dose
- {
- public class DosingCommonHelper
- {
- public enum DoseState
- {
- Init,
- Idle,
- Error,
- Initializing
- }
- #region 内部变量
- /// <summary>
- /// ModuleName
- /// </summary>
- private string _moduleName;
- /// <summary>
- /// ReplenID
- /// </summary>
- private int _replenNum;
- /// <summary>
- /// 当前操作
- /// </summary>
- private List<DosingOperation> _currentDosingOperation;
- /// <summary>
- /// Replen Persistent Value
- /// </summary>
- private Dictionary<string, ReplenPersistentValue> _persistentValue = new Dictionary<string, ReplenPersistentValue>();
- /// <summary>
- /// DosingSystem初始化状态
- /// </summary>
- private RState _initializeRState;
- /// <summary>
- /// DosingSystemState
- /// </summary>
- private string _dosingSystemState;
- /// <summary>
- /// DosingSystemInitializeRoutine
- /// </summary>
- private DosingSystemInitializeRoutine _dosingSystemInitializeRoutine;
- /// <summary>
- /// DosingSystem是否已初始化
- /// </summary>
- private bool _isDosingSystemInitialized;
- #endregion
- #region 属性
- /// <summary>
- /// DosingSystem是否已经Initialized
- /// </summary>
- public bool IsDosingSystemInitialized { get { return _isDosingSystemInitialized; } }
- /// <summary>
- /// DosingSystem State
- /// </summary>
- public string DosingSystemState { get { return _dosingSystemState; } }
- /// <summary>
- /// DosingSystem Initialize State
- /// </summary>
- public RState InitializeState { get { return _initializeRState; } }
- #endregion
- /// <summary>
- /// 构造函数
- /// </summary>
- /// <param name="moduleName"></param>
- public DosingCommonHelper(string moduleName, int replenNum)
- {
- _moduleName = moduleName;
- _replenNum = replenNum;
- for (int i = 0; i < _replenNum; i++)
- {
- string replenName = "Replen" + (i + 1).ToString();
- _currentDosingOperation.Add(DosingOperation.None);
- _persistentValue[replenName] = ReplenPersistentManager.Instance.GetReplenPersistentValue(_moduleName, replenName);
- }
- _dosingSystemInitializeRoutine = new DosingSystemInitializeRoutine(_moduleName);
- _dosingSystemState = DoseState.Init.ToString();
- }
- /// <summary>
- /// ManualDose监控
- /// </summary>
- public void ManualDoseSystemMonitor()
- {
- for (int i = 0; i < _replenNum; i++)
- {
- string replenName = "Replen" + (i + 1).ToString();
- if (_currentDosingOperation[i] == DosingOperation.ManualDosing && !_persistentValue[replenName].IsDosingRunning)
- {
- _currentDosingOperation[i] = DosingOperation.None;
- }
- else if (_currentDosingOperation[i] == DosingOperation.ManualDosing && _persistentValue[replenName].IsDosingRunning)
- {
- continue;
- }
- }
- }
- public void CheckDoseOperation()
- {
- for (int i = 0; i < _replenNum; i++)
- {
- if (_currentDosingOperation[i] == DosingOperation.AutoDosing)
- {
- _currentDosingOperation[i] = DosingOperation.None;
- }
- }
- }
- /// <summary>
- /// Dose状态监控
- /// </summary>
- public void DoseStatusMonitor()
- {
- //DosingSystem Initialize监控
- if (_initializeRState == RState.Running)
- {
- DosingInitializingMonitor();
- }
- }
- /// <summary>
- /// 监控DosingSystem初始化
- /// </summary>
- /// <returns></returns>
- public void DosingInitializingMonitor()
- {
- _initializeRState = _dosingSystemInitializeRoutine.Monitor();
- if (_initializeRState == RState.Failed || _initializeRState == RState.Timeout)
- {
- _dosingSystemState = DoseState.Error.ToString();
- }
- if (_initializeRState == RState.End)
- {
- _isDosingSystemInitialized = true;
- _dosingSystemState = DoseState.Idle.ToString();
- }
- }
- /// <summary>
- /// DosingSystem初始化
- /// </summary>
- /// <param name="cmd"></param>
- /// <param name="args"></param>
- /// <returns></returns>
- public bool DosingInitialize()
- {
- _dosingSystemState = DoseState.Initializing.ToString();
- _isDosingSystemInitialized = false;
- _initializeRState = _dosingSystemInitializeRoutine.Start();
- if (_initializeRState == RState.Running) return true;
- return false;
- }
- /// <summary>
- /// Enetr Init State
- /// </summary>
- /// <param name="cmd"></param>
- /// <param name="args"></param>
- /// <returns></returns>
- public bool DosingEnterInit()
- {
- if (_dosingSystemState == DoseState.Idle.ToString())
- {
- _dosingSystemState = DoseState.Init.ToString();
- }
- _isDosingSystemInitialized = false;
- return true;
- }
- }
- }
|