HoldTask.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using Aitex.Core.RT.Device;
  2. using Aitex.Core.Util;
  3. using athosRT.Devices.EFEM.ABS;
  4. using athosRT.Modules.EFEMs;
  5. using MECF.Framework.RT.EquipmentLibrary.HardwareUnits.Robots.RobotBase;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. namespace athosRT.Devices.EFEM.Task
  12. {
  13. public class HoldTask : CheckImp, ITask
  14. {
  15. public bool Execute(out string result, params string[] args)
  16. {
  17. string str = "Robot";
  18. if (!this.Check<NoReadyPolicy>(str, out result) || !this.Check<NoInitCompletedPolicy>(str, out result) || !this.Check<NoOriginCompletedPolicy>(str, out result) || !this.Check<EMSPolicy>(str, out result) || !this.Check<ErrorPolicy>(str, out result) || !this.Check<NoMovingPolicy>(str, out result) || !this.Check<HoldPolicy>(str, out result) || !this.Check<MaintenancePolicy>(str, out result) || !this.Check<PowerDownPolicy>(str, out result))
  19. return false;
  20. RobotBaseDevice device = DEVICE.GetDevice<RobotBaseDevice>(str);
  21. if (!device.IsBusy)
  22. {
  23. result = "NOTINMOTION";
  24. return false;
  25. }
  26. if (!device.Stop())
  27. return false;
  28. Singleton<EfemEntity>.Instance.SetSystemHold();
  29. return true;
  30. }
  31. public bool? Monitor(out string result, params string[] args)
  32. {
  33. result = string.Empty;
  34. RobotBaseDevice device = DEVICE.GetDevice<RobotBaseDevice>("Robot");
  35. if (device.IsError)
  36. return new bool?(false);
  37. return device.IsReady() ? new bool?(true) : new bool?();
  38. }
  39. }
  40. }