CalibrationModel.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #pragma once
  2. #include "IMotionModel.h"
  3. namespace DiosCtrlBox
  4. {
  5. class CalibrationStageArgs;
  6. class ITubeAngleController;
  7. class ITubeHeightController;
  8. class ISensorADController;
  9. class ISensorEncoderController;
  10. class CalibrationModel : public IMotionModel
  11. {
  12. public:
  13. CalibrationModel();
  14. ~CalibrationModel();
  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. private:
  27. void OnMotionStage(const std::string &name);
  28. void OnStageMoveTubeHeight();
  29. void OnStageRotateTubeAngle();
  30. void OnStageGetTubeAngleAD();
  31. void OnStageGetTubeHeightAD();
  32. void OnStageGetDetectorHeightAD();
  33. void OnStageGetTubeAngleEncoder();
  34. void OnStageGetTubeHeightEncoder();
  35. void OnStageGetDetectorHeightEncoder();
  36. void OnStageActiveTubeAngleZAxisClear();
  37. void OnStageCancelTubeAngleZAxisClear();
  38. void OnStageActiveTubeHeightZAxisClear();
  39. void OnStageCancelTubeHeightZAxisClear();
  40. void OnStageRotateTubeAngleToZAxis();
  41. void OnStageMoveTubeHeightToZAxis();
  42. void OnStageStopTubeAngleAtZxis();
  43. void OnStageStopTubeHeightAtZAxis();
  44. void OnStageMoveTubeHeightAsPhysical();
  45. void OnStageRotateTubeAngleAsPhysical();
  46. void OnStageSwitchSvoStatus();
  47. void OnStageAutoCalibrationADStart();
  48. void OnStageAutoCalibrationADNext();
  49. void OnStageAutoCalibrationADEnd();
  50. int GetAD(int dof);
  51. void MoveMech(int dof,float current, float target);
  52. void RotateTubeAngle(float current,float target);
  53. void MoveTubeHeight(float current, float target);
  54. int JudgeDirectionInTubeHeightAxis(float current, float target);
  55. int JudgeDirectionInTubeAngleAxis(float current, float target);
  56. private:
  57. std::string m_StageName;
  58. CalibrationStageArgs *m_stageArgs;
  59. IPositionManager *m_coordinates;
  60. ITubeAngleController *m_tubeAngle;
  61. ITubeHeightController *m_tubeHeight;
  62. ISensorADController *m_tubeHeightAD;
  63. ISensorADController *m_tubeAngleAD;
  64. ISensorADController *m_detectorAD;
  65. ISensorEncoderController *m_tubeHeightEncoder;
  66. ISensorEncoderController *m_tubeAngleEncoder;
  67. ISensorEncoderController *m_detectorHeightEncoder;
  68. int m_tubeHeightMotionPeriod;
  69. int m_tubeAngleMotionPeriod;
  70. int m_tubeRotateLandmarkDirection;
  71. int m_tubeHeightLandmarkDirection;
  72. int m_tubeHeightAxisPositiveDirection;
  73. int m_tubeRotateAxisPositiveDirection;
  74. float m_autoCalADPhysicalEachStep;
  75. };
  76. }