12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #pragma once
- #include "IMotionModel.h"
- namespace DIOS::Dev::Detail::MachineryECOM
- {
- class CBCTMotionStageArgs;
- class ICircularController;
- class ISwingController;
- class ISensorEncoderController;
- class IExposureController;
- class IOutputController;
- class CBCTMotionModel : public IMotionModel
- {
- public:
- CBCTMotionModel();
- ~CBCTMotionModel();
- public:
- virtual void ChangeStage(const std::string &stageName) override;
- virtual std::string GetStageName() override;
- virtual IMotionStageArgs *GetStageArgs() override;
- public:
- virtual void Initialize(IMachineryManager *machineryManager, IPositionManager *coordinates) override;
- virtual void LoadMachineryParams(ResDataObject ¶ms) override;
- virtual void LoadModelParams(ResDataObject ¶ms) override;
- virtual void SetTechnicalParams(ResDataObject ¶ms) override;
- virtual void OnFeedbackMotionParams(ResDataObject ¶ms) override;
- virtual BOOL GetMotionParams(ResDataObject ¶ms) override;
- virtual void SwitchScanningComponents(int nSwitch) override;
- virtual void SwitchWorkstation(string ws) override;
- private:
- void OnMotionStage(const std::string &stageName);
- void MotionStageClearParams();
- void MotionStageCalculateParams();
- void MotionStageSetCBCTMotionSlice();
- void MotionStageMovetoEndPos();
- void MotionStageMovetoStartPos();
- void MotionStageErrorStop();
- void MotionStageErrorRecover();
- void TubeSwingToStartPostion();
- void TubeCircularToStartPosition();
- int JudgeDirectionInTubeSwingAxis(float current, float target);
- void RotateTubeSwing(int direction, float offset, float spd = 0.0f);
- int JudgeDirectionInTubeHeightAxis(float current, float target);
- void MoveTubeCircular(int direction, float offset, float spd = 0.0f);
- void OnStartExposure();
- void OnStopExposure();
- private:
- std::string m_StageName;
- CBCTMotionStageArgs *m_stageArgs;
- IPositionManager *m_coordinates;
- IMachineryManager *m_machineryManager;
- ICircularController *m_circular;
- ISwingController *m_swing;
- ISensorEncoderController *m_circularencoder;
- ISensorEncoderController *m_swingencoder;
- IExposureController *m_exposure;
- IOutputController* m_fluoroSwitch;
- ResDataObject m_MachineryParams;
- ResDataObject m_ModelParams;
- ResDataObject m_TechnicalParams;
- float m_startPos;
- float m_endPos;
- std::vector<float> m_exposureTriggerSlice;
- std::vector<int> m_FeedbackTubeCircularEncoders;
- bool m_bUseCARMRotationScanning; //false:滑轨滑动扫描 true:轴向转动扫描
- };
- }
|