RADMotionModel.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #pragma once
  2. #include "IMotionModel.h"
  3. namespace DIOS::Dev::Detail::MachineryECOM
  4. {
  5. class RADMotionStageArgs;
  6. class ITubeAngleController;
  7. class ITubeHeightController;
  8. class ISensorADController;
  9. class ISensorEncoderController;
  10. class ITubeHorizontalController;
  11. class IOutputController;
  12. class RADMotionModel : public IMotionModel
  13. {
  14. public:
  15. RADMotionModel();
  16. ~RADMotionModel();
  17. public:
  18. virtual void ChangeStage(const std::string &stageName) override;
  19. virtual std::string GetStageName() override;
  20. virtual IMotionStageArgs *GetStageArgs() override;
  21. public:
  22. virtual void Initialize(IMachineryManager *machineryManager, IPositionManager *coordinates) override;
  23. virtual void LoadMachineryParams(ResDataObject &params) override;
  24. virtual void LoadModelParams(ResDataObject &params) override;
  25. virtual void SetTechnicalParams(ResDataObject &params) override;
  26. virtual void OnFeedbackMotionParams(ResDataObject &params) override;
  27. virtual BOOL GetMotionParams(ResDataObject &params) override;
  28. virtual void SwitchScanningComponents(int nSwitch) override;
  29. virtual void SwitchWorkstation(string ws) override;
  30. private:
  31. void OnMotionStage(const std::string &name);
  32. void OnStageClearParams();
  33. void OnStageStopMove();
  34. void OnStageCenterAdjust();
  35. void OnMotionStageMoveTubeHeight();
  36. void OnMotionStageMoveTubeHorizontal();
  37. void OnMotionStageMoveTubeRotation();
  38. void AlignTubeHeightToDetector();
  39. void RotateTubeToExposure();
  40. float GetExposureAngle();
  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. int JudgeDirectionInTubeHorizontalAxis(float current, float target);
  46. void MoveTubeHorizontal(int direction, float offset);
  47. void OnMotionStageMove2SID(string ws);
  48. private:
  49. std::string m_StageName;
  50. RADMotionStageArgs *m_stageArgs;
  51. IPositionManager *m_coordinates;
  52. ITubeAngleController *m_motorTubeAngle;
  53. ITubeHeightController *m_motorTubeHeight;
  54. ISensorADController *m_adDetectorHeight;
  55. ISensorEncoderController *m_encoderTubeAngle;
  56. ISensorEncoderController *m_encoderTubeHeight;
  57. ResDataObject m_MachineryParams;
  58. ResDataObject m_technicalParams;
  59. //ITubeHorizontalController* m_motorTubeHorizontal;
  60. ITubeHeightController* m_motorTubeHorizontal;
  61. ISensorADController* m_adTubeHorizontal;
  62. ISensorEncoderController* m_encoderTubeHorizontal;
  63. IOutputController* m_tubeLineMotionSwitch;
  64. };
  65. }