TubeAngleController.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #pragma once
  2. #include "ITubeAngleController.h"
  3. #include "DiosBoardCtrlParams.h"
  4. namespace DIOS::Dev::Detail::MachineryECOM
  5. {
  6. struct RS232_PARAM;
  7. class TubeAngleController : public ITubeAngleController
  8. {
  9. public:
  10. TubeAngleController();
  11. ~TubeAngleController();
  12. public:
  13. static std::string CLASSID();
  14. public:
  15. virtual void Initialize(const std::string &name) override;
  16. virtual void AttachServoDrive(IServoDrive *servodrive) override;
  17. virtual void SetPulseOneCircle(unsigned short pulseonecircle) override;
  18. virtual void SetPulseDutyCycle(float dutyCycle) override;
  19. virtual void OnCommunicationEstablished(ICommunicateEntity *communicate) override;
  20. virtual void StopRotation() override;
  21. virtual void Rotate(int direction, int steps, DWORD pwmperiod, float pulseDutyCycle = 0.0f) override;
  22. virtual void SetRotateOrientation(bool clockWise) override;
  23. virtual void ClearSignal() override;
  24. virtual void AppendPWM(int steps, int period,float pulseDutyCycle = 0.0f) override;
  25. virtual void ClearServoDriveWarning() override;
  26. virtual void SetServoStatus(int svostatus) override;
  27. protected:
  28. virtual void InitializeServo();
  29. private:
  30. void ActivePWMMode();
  31. void ServoOn(BOOL servoon);
  32. void DoWrite485(RS232_PARAM &param);
  33. bool IsBrakeOpening();
  34. private:
  35. ICommunicateEntity *m_communicate;
  36. int m_driveNumber;
  37. float m_pulseDutyCycle;
  38. IServoDrive *m_servo;
  39. };
  40. }