ParkingModel.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #pragma once
  2. #include "IMotionModel.h"
  3. namespace DIOS::Dev::Detail::MachineryECOM
  4. {
  5. class ParkingMotionStageArgs;
  6. class ITubeAngleController;
  7. class ITubeHeightController;
  8. class ISensorADController;
  9. class ISensorEncoderController;
  10. class ParkingModel : public IMotionModel
  11. {
  12. public:
  13. ParkingModel();
  14. ~ParkingModel();
  15. public:
  16. virtual void ChangeStage(const std::string &stageName) override;
  17. virtual std::string GetStageName() override;
  18. virtual IMotionStageArgs *GetStageArgs() override;
  19. public:
  20. virtual void Initialize(IMachineryManager *machineryManager, IPositionManager *coordinates) override;
  21. virtual void LoadMachineryParams(ResDataObject &params) override;
  22. virtual void LoadModelParams(ResDataObject &params) override;
  23. virtual void SetTechnicalParams(ResDataObject &params) override;
  24. virtual void OnFeedbackMotionParams(ResDataObject &params) override;
  25. virtual BOOL GetMotionParams(ResDataObject &params) override;
  26. virtual void SwitchScanningComponents(int nSwitch) override;
  27. virtual void SwitchWorkstation(string ws) override;
  28. private:
  29. void OnMotionStage(const std::string &name);
  30. void OnMotionStageParkingHorizontal();
  31. void OnMotionStageParkingVertical();
  32. void OnMotionStageParkingTubeAngleLowLimit();
  33. void OnMotionStageParkingTubeHeightLowLimit();
  34. void AlignTubeHeightToDetector();
  35. void RotateTubeToExposure();
  36. void RotateTubeToVertical();
  37. void RotateTubeToLowLimit();
  38. void MoveTubeHeightToLowLimit();
  39. float GetExposureAngle();
  40. float GetVerticalAngle();
  41. int JudgeDirectionInTubeHeightAxis(float current, float target);
  42. int JudgeDirectionInTubeAngleAxis(float current, float target);
  43. void MoveTubeHeight(int direction, float offset);
  44. void RotateTubeAngle(int direction, float offset);
  45. void OnMotionStageStopMove();
  46. private:
  47. std::string m_stageName;
  48. ParkingMotionStageArgs *m_stageArgs;
  49. IPositionManager *m_coordinates;
  50. ITubeAngleController *m_motorTubeAngle;
  51. ITubeHeightController *m_motorTubeHeight;
  52. ResDataObject m_MachineryParams;
  53. };
  54. }