CArmResetMotionModel.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #pragma once
  2. #include "IMotionModel.h"
  3. namespace DiosCtrlBox
  4. {
  5. class ResetMotionStageArgs;
  6. class ICircularController;
  7. class ISwingController;
  8. class ISensorEncoderController;
  9. class ILandmarkController;
  10. class CArmResetMotionModel : public IMotionModel
  11. {
  12. public:
  13. CArmResetMotionModel();
  14. ~CArmResetMotionModel();
  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 OnMotionStageStopMove();
  29. void OnMotionStageFindSwingLandmark();
  30. void OnMotionStageFindCircularLandmark();
  31. void OnMotionStageAttachSwingZAxis();
  32. void OnMotionStageDetachSwingZAxis();
  33. void OnMotionStageAttachCircularZAxis();
  34. void OnMotionStageDetachCircularZAxis();
  35. void OnMotionStageSwingFinish();
  36. void OnMotionStageCircularFinish();
  37. void OnMotionStageSwingStopAtLandmark();
  38. void OnMotionStageCircularStopAtLandmark();
  39. BOOL IsTubeSwingAtResetLandmark();
  40. int JudgeTubeSwingLandmarkDirection();
  41. BOOL IsTubeCircularAtResetLandmark();
  42. int JudgeTubeCircularLandmarkDirection();
  43. float GetTubeSwingResetPosition();
  44. int JudgeSwingDirection(float current,float target);
  45. float GetTubeCircularResetPosition();
  46. int JudgeCircularDirection(float current, float target);
  47. private:
  48. std::string m_StageName;
  49. ResetMotionStageArgs *m_stageArgs;
  50. IPositionManager *m_coordinates;
  51. ICircularController *m_circular;
  52. ISwingController *m_swing;
  53. ISensorEncoderController *m_circularencoder;
  54. ISensorEncoderController *m_swingencoder;
  55. ILandmarkController *m_landmark;
  56. DWORD m_resetSwingPeriod;
  57. DWORD m_resetCircularPeriod;
  58. int m_tubeSwingLandmarkDirection;
  59. int m_tubeCircularLandmarkDirection;
  60. float m_tubeSwingResetAngle;
  61. float m_tubeCircularResetAngle;
  62. int m_tubeCircularAxisPositiveDirection;
  63. int m_tubeSwingAxisPositiveDirection;
  64. };
  65. }