CalibrationModel.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #pragma once
  2. #include "IMotionModel.h"
  3. namespace DIOS::Dev::Detail::MachineryECOM
  4. {
  5. class CalibrationStageArgs;
  6. class ITubeAngleController;
  7. class ITubeHeightController;
  8. class ISensorADController;
  9. class ISensorEncoderController;
  10. class IOutputController;
  11. class CalibrationModel : public IMotionModel
  12. {
  13. public:
  14. CalibrationModel();
  15. ~CalibrationModel();
  16. public:
  17. virtual void ChangeStage(const std::string &stageName) override;
  18. virtual std::string GetStageName() override;
  19. virtual IMotionStageArgs *GetStageArgs() override;
  20. public:
  21. virtual void Initialize(IMachineryManager *machineryManager, IPositionManager *coordinates) override;
  22. virtual void LoadMachineryParams(ResDataObject &params) override;
  23. virtual void LoadModelParams(ResDataObject &params) override;
  24. virtual void SetTechnicalParams(ResDataObject &params) override;
  25. virtual void OnFeedbackMotionParams(ResDataObject &params) override;
  26. virtual BOOL GetMotionParams(ResDataObject &params) override;
  27. virtual void SwitchScanningComponents(int nSwitch) override;
  28. virtual void SwitchWorkstation(string ws) override;
  29. private:
  30. void OnMotionStage(const std::string &name);
  31. void OnStageMoveTubeHeight();
  32. void OnStageRotateTubeAngle();
  33. void OnStageGetTubeAngleAD();
  34. void OnStageGetTubeHeightAD();
  35. void OnStageGetDetectorHeightAD();
  36. void OnStageGetTubeAngleEncoder();
  37. void OnStageGetTubeHeightEncoder();
  38. void OnStageGetDetectorHeightEncoder();
  39. void OnStageActiveTubeAngleZAxisClear();
  40. void OnStageCancelTubeAngleZAxisClear();
  41. void OnStageActiveTubeHeightZAxisClear();
  42. void OnStageCancelTubeHeightZAxisClear();
  43. void OnStageRotateTubeAngleToZAxis();
  44. void OnStageMoveTubeHeightToZAxis();
  45. void OnStageStopTubeAngleAtZxis();
  46. void OnStageStopTubeHeightAtZAxis();
  47. void OnStageMoveTubeHeightAsPhysical();
  48. void OnStageRotateTubeAngleAsPhysical();
  49. void OnStageSwitchSvoStatus();
  50. void OnStageAutoCalibrationADStart();
  51. void OnStageAutoCalibrationADNext();
  52. void OnStageAutoCalibrationADEnd();
  53. int GetAD(int dof);
  54. void MoveMech(int dof,float current, float target);
  55. void RotateTubeAngle(float current,float target);
  56. void MoveTubeHeight(float current, float target);
  57. int JudgeDirectionInTubeHeightAxis(float current, float target);
  58. int JudgeDirectionInTubeAngleAxis(float current, float target);
  59. void OnStageMoveTubeHorizontal();
  60. void OnStageGetTubeHorizontalAD();
  61. void OnStageGetTubeHorizontalEncoder();
  62. void OnStageGetDetectorHorizontalAD();
  63. private:
  64. std::string m_StageName;
  65. CalibrationStageArgs *m_stageArgs;
  66. IPositionManager *m_coordinates;
  67. ITubeAngleController *m_tubeAngle;
  68. ITubeHeightController *m_tubeHeight;
  69. ISensorADController *m_tubeHeightAD;
  70. ISensorADController *m_tubeAngleAD;
  71. ISensorADController *m_detectorAD;
  72. ISensorEncoderController *m_tubeHeightEncoder;
  73. ISensorEncoderController *m_tubeAngleEncoder;
  74. ISensorEncoderController *m_detectorHeightEncoder;
  75. ITubeHeightController* m_motorTubeHorizontal;
  76. ISensorADController* m_adTubeHorizontal;
  77. ISensorEncoderController* m_encoderTubeHorizontal;
  78. IOutputController* m_tubeLineMotionSwitch;
  79. ISensorADController* m_detectorHorizontalAD;
  80. ISensorEncoderController* m_detectorHorizontalEncoder;
  81. int m_tubeHeightMotionPeriod;
  82. int m_tubeAngleMotionPeriod;
  83. int m_tubeRotateLandmarkDirection;
  84. int m_tubeHeightLandmarkDirection;
  85. int m_tubeHeightAxisPositiveDirection;
  86. int m_tubeRotateAxisPositiveDirection;
  87. float m_autoCalADPhysicalEachStep;
  88. int m_tubeHorizontalMotionPeriod;
  89. int m_tubeHorizontalLandmarkDirection;
  90. int m_tubeHorizontalAxisPositiveDirection;
  91. };
  92. }