SRDInitializeRoutine.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. using Aitex.Core.RT.Device;
  2. using Aitex.Core.RT.Log;
  3. using Aitex.Core.RT.Routine;
  4. using MECF.Framework.Common.Equipment;
  5. using MECF.Framework.Common.Routine;
  6. using MECF.Framework.Common.Utilities;
  7. using PunkHPX8_Core;
  8. using PunkHPX8_RT.Devices.AXIS;
  9. using PunkHPX8_RT.Devices.Facilities;
  10. using PunkHPX8_RT.Devices.SRD;
  11. using System;
  12. using System.Collections.Generic;
  13. using System.Linq;
  14. using System.Text;
  15. using System.Threading.Tasks;
  16. namespace PunkHPX8_RT.Modules.Transporter
  17. {
  18. public class SRDInitializeRoutine : RoutineBase, IRoutine
  19. {
  20. private enum InitializeStep
  21. {
  22. CheckSafety,
  23. CheckFacilities,
  24. End
  25. }
  26. #region 内部变量
  27. #endregion
  28. #region 属性
  29. /// <summary>
  30. /// 当前子状态机
  31. /// </summary>
  32. public string CurrentStateMachine
  33. {
  34. get { return Runner.CurrentStep.ToString(); }
  35. }
  36. #endregion
  37. /// <summary>
  38. /// 构造函数
  39. /// </summary>
  40. /// <param name="module"></param>
  41. public SRDInitializeRoutine(string module) : base(module)
  42. {
  43. }
  44. public void Abort()
  45. {
  46. Runner.Stop("Manual Abort");
  47. }
  48. public RState Monitor()
  49. {
  50. Runner.Run(InitializeStep.CheckSafety, CheckSafety,NullFun,_delay_1ms)
  51. .Run(InitializeStep.CheckFacilities, CheckFacilities, NullFun, _delay_1ms)
  52. .End(InitializeStep.End,NullFun);
  53. return Runner.Status;
  54. }
  55. /// <summary>
  56. /// 检验Safety
  57. /// </summary>
  58. /// <returns></returns>
  59. private bool CheckSafety()
  60. {
  61. return true;
  62. }
  63. /// <summary>
  64. /// 检验Facilties
  65. /// </summary>
  66. /// <returns></returns>
  67. private bool CheckFacilities()
  68. {
  69. SystemFacilities systemFacilities = DEVICE.GetDevice<SystemFacilities>("System.Facilities");
  70. var result = systemFacilities.CheckCDAN2();
  71. if (!result.result)
  72. {
  73. LOG.WriteLog(eEvent.ERR_SRD, Module, $"CDA or N2 is not enabled");
  74. return false;
  75. }
  76. return true;
  77. }
  78. /// <summary>
  79. /// 启动
  80. /// </summary>
  81. /// <param name="objs"></param>
  82. /// <returns></returns>
  83. public RState Start(params object[] objs)
  84. {
  85. return Runner.Start(Module, "Initialize");
  86. }
  87. }
  88. }