CBCTMotionModel.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #pragma once
  2. #include "IMotionModel.h"
  3. namespace DiosCtrlBox
  4. {
  5. class CBCTMotionStageArgs;
  6. class ICircularController;
  7. class ISwingController;
  8. class ISensorEncoderController;
  9. class IExposureController;
  10. class CBCTMotionModel : public IMotionModel
  11. {
  12. public:
  13. CBCTMotionModel();
  14. ~CBCTMotionModel();
  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 &stageName);
  28. void MotionStageClearParams();
  29. void MotionStageCalculateParams();
  30. void MotionStageSetCBCTMotionSlice();
  31. void MotionStageMovetoEndPos();
  32. void MotionStageMovetoStartPos();
  33. void MotionStageErrorStop();
  34. void MotionStageErrorRecover();
  35. void TubeSwingToStartPostion();
  36. void TubeCircularToStartPosition();
  37. int JudgeDirectionInTubeSwingAxis(float current, float target);
  38. void RotateTubeSwing(int direction, float offset);
  39. int JudgeDirectionInTubeHeightAxis(float current, float target);
  40. void MoveTubeCircular(int direction, float offset, float speed = 0.0f);
  41. private:
  42. std::string m_StageName;
  43. CBCTMotionStageArgs *m_stageArgs;
  44. IPositionManager *m_coordinates;
  45. IMachineryManager *m_machineryManager;
  46. ICircularController *m_circular;
  47. ISwingController *m_swing;
  48. ISensorEncoderController *m_circularencoder;
  49. ISensorEncoderController *m_swingencoder;
  50. IExposureController *m_exposure;
  51. ResDataObject m_MachineryParams;
  52. ResDataObject m_ModelParams;
  53. ResDataObject m_TechnicalParams;
  54. float m_startPos;
  55. float m_endPos;
  56. std::vector<float> m_exposureTriggerSlice;
  57. std::vector<int> m_FeedbackTubeCircularEncoders;
  58. };
  59. }