// Motor_8134.h: interface for the CMotor_8134 class. // ////////////////////////////////////////////////////////////////////// #pragma once #include "MotorAdlinkBase.h" class CMotor_8134 : public CMotorAdlinkBase { public: CMotor_8134(const CMtrProfile& mtrProfile, double* dpPos, CMotionControllerBase* pBaseController); virtual ~CMotor_8134(); // ************************************************************** // Methods declaration // ************************************************************** // method to close the axis void CloseAxis() override; // method to initialize and configure the axis void ConstructMotor() override; // method to On/Off motor bool OnMotor() override; bool OffMotor() override; // method to stop motor with decceleration bool DecelStop() override; // method to trigger Emergency stop the motor bool EmergStop() override; // method to get commanded position bool GetMotorCommandedPosition(int iMtrNo, double& dRaw) override; // method to get other motor axis IO status int GetMotionIOStatus(const CMtrProfile& mtrProfile) override; // method to get Other axis motor ready status BOOL IsMotorReady(const CMtrProfile& mtrProfile) override; // method to get Other axis Motor On status bool IsMtrOn(const CMtrProfile& mtrProfile) override; // method to get other motor axis current position bool GetMotorPosition(const CMtrProfile& mtrProfile, double& dRawPosition) override; // method to get motor axis current position error bool GetMotorPositionError(double& dRawPositionError) override; // method to do homing by limit sensor // BOOL HomingByLimit() override; // method to process interrupt to decode what happen to the motor void ProcessInt(int nIntCode = 0) override; // method to set the commanded position register bool SetMotorCommandedPosition(double dPosition) override; // method to set the mechanical coversion factor bool RefreshMotorConversionFactor() override; // method to set homing modes bool SetMotorHomeMode(int iHomeMode) override; // method to force set the current position bool SetMotorPosition(double dPosition) override; bool SetupAbsoluteSimultaneousMove(int nNoOfAxis, short* sAxis, double* dPosition, double* dStartVel, double* dMaxVel, double* dAcc, double* dDec) override; bool SetupRelativeSimultaneousMove(int nNoOfAxis, short* sAxis, double* dPosition, double* dStartVel, double* dMaxVel, double* dAcc, double* dDec) override; bool StartSimultaneousMove(const std::vector& vecAxis) override; bool StopSimultaneousMove(int nFirstAxisNo) override; // ************************************************************** // Methods declaration applicable to // ADLINK 8134, 8164 ONLY - starts // ************************************************************** // method to set the motor type and encoder input type bool SetMotorType(int iMtrType) override; // method to set the motor alarm signal logic bool SetMotorAlarmLogic(int iALM) override; // method to set the home sensor signal logic bool SetMotorHomeSensorLogic(int iORGI) override; // method to set the encoder Index signal logic bool SetMotorIndexLogic(int iIndexLogic) override; // method to set the in position signal logic bool SetMotorINPLogic(int iINP) override; // method to set clk type, out/dir or cw/ccw bool SetMotorClk(int iClk) override; bool StartHomeMove(double dStartSpeed, double dMaxSpeed, double dAcc) override; bool StartContinuousMove(double dStartSpeed, double dMaxSpeed, double dAcc) override; bool StartSContinuousMove(double dStartSpeed, double dMaxSpeed, double dAcc, double dSAcc) override; bool StartAbsoluteMove(double dPosition, double dStartSpeed, double dMaxSpeed, double dAcc, double dDec) override; bool StartSAbsoluteMove(double dPosition, double dStartSpeed, double dMaxSpeed, double dAcc, double dDec, double dSAcc, double dSDec) override; bool StartRelativeMove(double dPosition, double dStartSpeed, double dMaxSpeed, double dAcc, double dDec) override; bool StartSRelativeMove(double dPosition, double dStartSpeed, double dMaxSpeed, double dAcc, double dDec, double dSAcc, double dSDec) override; bool SetFixSpdRange(double dMaxVel, bool bRealWorldUnit = false); bool UnFixSpdRange(); bool ResetMotorPositionError(); bool IsSimultaneousMoveSupported(void) override; // LERP - Linear Interpolation bool StartXYRelMoveLinear(double dDistX, double dDistY, double dStartVel, double dMaxVel, double dAcc, double dDec) override; bool StartZURelMoveLinear(double dDistZ, double dDistU, double dStartVel, double dMaxVel, double dAcc, double dDec) override; bool StartXYSRelMoveLinear(double dDistX, double dDistY, double dStartVel, double dMaxVel, double dAcc, double dDec, double dSAcc, double dSDec) override; bool StartZUSRelMoveLinear(double dDistZ, double dDistU, double dStartVel, double dMaxVel, double dAcc, double dDec, double dSAcc, double dSDec) override; // ************************************************************** // Methods declaration applicable to // ADLINK 8134, 8164 ONLY - ends // ************************************************************** private: short m_sMtrNo; bool FindLimit(HOME_DIR homeDir, MOTION_SPEED speed); bool EnableLimitInterrupt(); bool DisableLimitInterrupt(); bool GetCurrentPosition(int nMtrNo, double& dPosition); bool GetCurrentPosition(double& dPosition); bool SetHomingResetPosition(bool bEnable); };