ReservoirDevice.cs 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. using Aitex.Core.RT.Device;
  2. using Aitex.Core.RT.Log;
  3. using Aitex.Core.RT.OperationCenter;
  4. using Aitex.Core.Util;
  5. using MECF.Framework.Common.Persistent.Reservoirs;
  6. using PunkHPX8_RT.Modules;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. namespace PunkHPX8_RT.Devices.Reservoir
  13. {
  14. public class ReservoirDevice : BaseDevice, IDevice
  15. {
  16. #region 常量
  17. private const string AUTO = "Auto";
  18. private const string MANUAL = "Manual";
  19. private const string DISABLE = "Disable";
  20. #endregion
  21. #region 内部变量
  22. /// <summary>
  23. /// Prewet 持久性数值对象
  24. /// </summary>
  25. private ReservoirsPersistentValue _persistentValue;
  26. /// <summary>
  27. /// 定时器
  28. /// </summary>
  29. private PeriodicJob _periodicJob;
  30. #endregion
  31. #region 属性
  32. /// <summary>
  33. /// 操作模式
  34. /// </summary>
  35. public string OperationMode { get { return _persistentValue.OperatingMode; } }
  36. /// <summary>
  37. /// 工程模式
  38. /// </summary>
  39. public string EngineerMode { get { return _persistentValue.RecipeOperatingMode; } }
  40. /// <summary>
  41. /// 是否自动
  42. /// </summary>
  43. public bool IsAuto { get { return _persistentValue.OperatingMode == AUTO; } }
  44. #endregion
  45. /// <summary>
  46. /// 构造函数
  47. /// </summary>
  48. /// <param name="moduleName"></param>
  49. /// <param name="name"></param>
  50. public ReservoirDevice(string moduleName) : base(moduleName, moduleName, moduleName, moduleName)
  51. {
  52. }
  53. /// <summary>
  54. /// 初始化
  55. /// </summary>
  56. /// <returns></returns>
  57. public bool Initialize()
  58. {
  59. InitializeParameter();
  60. InitializeRoutine();
  61. SubscribeData();
  62. InitializeOperation();
  63. SubscribeValueAction();
  64. _periodicJob = new PeriodicJob(200, OnTimer, $"{Module}.Timer", true, true);
  65. return true;
  66. }
  67. /// <summary>
  68. /// 初始化参数
  69. /// </summary>
  70. private void InitializeParameter()
  71. {
  72. _persistentValue = ReservoirsPersistentManager.Instance.GetReservoirsPersistentValue(Module.ToString());
  73. if (_persistentValue == null)
  74. {
  75. LOG.WriteLog(eEvent.ERR_RESERVOIR, Module.ToString(), "Persistent Value Object is not exist");
  76. }
  77. }
  78. /// <summary>
  79. /// 初始化Routine
  80. /// </summary>
  81. private void InitializeRoutine()
  82. {
  83. }
  84. /// <summary>
  85. /// 订阅数据
  86. /// </summary>
  87. private void SubscribeData()
  88. {
  89. }
  90. /// <summary>
  91. /// 初始化Operation
  92. /// </summary>
  93. private void InitializeOperation()
  94. {
  95. OP.Subscribe($"{Module}.DisabledAction", DisabledOperation);
  96. OP.Subscribe($"{Module}.ManualAction", ManualOperation);
  97. OP.Subscribe($"{Module}.AutoAction", AutoOperation);
  98. OP.Subscribe($"{Module}.EngineeringModeAction", EngineeringModeOperation);
  99. OP.Subscribe($"{Module}.ProductionModeAction", ProductionModeOperation);
  100. }
  101. /// <summary>
  102. /// 订阅变量数值发生变化
  103. /// </summary>
  104. protected virtual void SubscribeValueAction()
  105. {
  106. }
  107. /// <summary>
  108. /// 定时器
  109. /// </summary>
  110. /// <returns></returns>
  111. protected virtual bool OnTimer()
  112. {
  113. return true;
  114. }
  115. #region Mode switch
  116. /// <summary>
  117. /// DisabledAction
  118. /// </summary>
  119. /// <param name="cmd"></param>
  120. /// <param name="param"></param>
  121. /// <returns></returns>
  122. private bool DisabledOperation(string cmd, object[] args)
  123. {
  124. string currentOperation = "Disabled";
  125. string preOperation = _persistentValue.OperatingMode;
  126. _persistentValue.OperatingMode = currentOperation;
  127. LOG.WriteLog(eEvent.INFO_RESERVOIR, Module, $"Operating mode is switched from {preOperation} to {currentOperation}");
  128. ReservoirsPersistentManager.Instance.UpdatePersistentValue(Module);
  129. return true;
  130. }
  131. /// <summary>
  132. /// ManualAction
  133. /// </summary>
  134. /// <param name="cmd"></param>
  135. /// <param name="param"></param>
  136. /// <returns></returns>
  137. private bool ManualOperation(string cmd, object[] args)
  138. {
  139. string currentOperation = "Manual";
  140. string preOperation = _persistentValue.OperatingMode;
  141. _persistentValue.OperatingMode = currentOperation;
  142. LOG.WriteLog(eEvent.INFO_RESERVOIR, Module, $"Operating mode is switched from {preOperation} to {currentOperation}");
  143. ReservoirsPersistentManager.Instance.UpdatePersistentValue(Module);
  144. return true;
  145. }
  146. /// <summary>
  147. /// AutoAction
  148. /// </summary>
  149. /// <param name="cmd"></param>
  150. /// <param name="param"></param>
  151. /// <returns></returns>
  152. private bool AutoOperation(string cmd, object[] args)
  153. {
  154. string currentOperation = "Auto";
  155. string preOperation = _persistentValue.OperatingMode;
  156. _persistentValue.OperatingMode = currentOperation;
  157. LOG.WriteLog(eEvent.INFO_RESERVOIR, Module, $"Operating mode is switched from {preOperation} to {currentOperation}");
  158. ReservoirsPersistentManager.Instance.UpdatePersistentValue(Module);
  159. return true;
  160. }
  161. /// <summary>
  162. /// EngineeringModeAction
  163. /// </summary>
  164. /// <param name="cmd"></param>
  165. /// <param name="param"></param>
  166. /// <returns></returns>
  167. private bool EngineeringModeOperation(string cmd, object[] args)
  168. {
  169. string currentRecipeOperation = "Engineering";
  170. if (_persistentValue != null)
  171. {
  172. _persistentValue.RecipeOperatingMode = currentRecipeOperation;
  173. }
  174. ReservoirsPersistentManager.Instance.UpdatePersistentValue(Module);
  175. return true;
  176. }
  177. /// <summary>
  178. /// ProductionAction
  179. /// </summary>
  180. /// <param name="cmd"></param>
  181. /// <param name="param"></param>
  182. /// <returns></returns>
  183. private bool ProductionModeOperation(string cmd, object[] args)
  184. {
  185. string currentRecipeOperation = "Production";
  186. if (_persistentValue != null)
  187. {
  188. _persistentValue.RecipeOperatingMode = currentRecipeOperation;
  189. }
  190. ReservoirsPersistentManager.Instance.UpdatePersistentValue(Module);
  191. return true;
  192. }
  193. #endregion
  194. /// <summary>
  195. /// 监控
  196. /// </summary>
  197. public void Monitor()
  198. {
  199. }
  200. public void Reset()
  201. {
  202. }
  203. public void Terminate()
  204. {
  205. }
  206. }
  207. }