SRDInitializeRoutine.cs 2.5 KB

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