LoadRoutine.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. using Aitex.Core.RT.Device;
  2. using Aitex.Core.RT.Routine;
  3. using Aitex.Core.RT.SCCore;
  4. using Aitex.Core.Util;
  5. using MECF.Framework.Common.Equipment;
  6. using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robot;
  7. using MECF.Framework.RT.ModuleLibrary.Commons;
  8. using MECF.Framework.RT.ModuleLibrary.VceModules;
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Linq;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. using Venus_Core;
  15. using Venus_RT.Devices;
  16. using Venus_RT.Devices.VCE;
  17. namespace Venus_RT.Modules.VCE
  18. {
  19. public class LoadRoutine : ModuleRoutineBase, IRoutine
  20. {
  21. public enum LoadStep
  22. {
  23. CloseOutDoor,
  24. Mapping,
  25. ReadMap,
  26. PumpDown,
  27. OpenInnerDoor,
  28. NotifyOver
  29. }
  30. VceModuleBase _vce;
  31. HongHuTM _tm;
  32. int _timeout;
  33. public LoadRoutine(ModuleName module, VceModuleBase vce) : base(module)
  34. {
  35. _vce = vce;
  36. }
  37. public RState Start(params object[] objs)
  38. {
  39. _tm = DEVICE.GetDevice<HongHuTM>("SETM");
  40. _timeout = SC.GetValue<int>("VCE.MotionTimeout");
  41. Reset();
  42. return Runner.Start(Module,"Vce Load Routine");
  43. }
  44. public RState Monitor()
  45. {
  46. Runner.Run(LoadStep.CloseOutDoor, CloseOutDoor, CheckVceIdle, _timeout)
  47. .Run(LoadStep.Mapping, Mapping, CheckVceIdle, _timeout)
  48. .Run(LoadStep.ReadMap, ReadMap, CheckVceIdle, _timeout)
  49. .Run(LoadStep.PumpDown, PumpDown, CheckPumpOver)
  50. .Run(LoadStep.OpenInnerDoor, OpenInnerDoor, CheckInnerDoorOpen)
  51. .End(LoadStep.NotifyOver, NullFun, 100);
  52. return Runner.Status;
  53. }
  54. private bool CheckInnerDoorOpen()
  55. {
  56. return _tm.TurnSlitDoor(Module,true);
  57. }
  58. private bool OpenInnerDoor()
  59. {
  60. return !_tm.VCESlitDoorClosed;
  61. }
  62. //
  63. private bool CheckPumpOver()
  64. {
  65. return true;
  66. }
  67. private bool PumpDown()
  68. {
  69. return true;
  70. }
  71. private bool ReadMap()
  72. {
  73. return _vce.ReadMap();
  74. }
  75. private bool Mapping()
  76. {
  77. return _vce.Map();
  78. }
  79. private bool CloseOutDoor()
  80. {
  81. return _vce.CloseDoor();
  82. }
  83. private bool CheckVceIdle()
  84. {
  85. if (_vce.Status == RState.Failed || _vce.Status == RState.Timeout)
  86. {
  87. Singleton<RouteManager>.Instance.GetVCE(Module).PostMsg(VceMSG.Error);
  88. return false;
  89. }
  90. return _vce.Status == RState.End;
  91. }
  92. public void Abort()
  93. {
  94. }
  95. }
  96. }