You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
4.6 KiB
C++
99 lines
4.6 KiB
C++
#pragma once
|
|
#include "motorbase.h"
|
|
|
|
class CMotorAdlinkBase :
|
|
public CMotorBase
|
|
{
|
|
public:
|
|
CMotorAdlinkBase(void);
|
|
CMotorAdlinkBase(const char* cpMutexName, CMtrProfile mtrProfile, double *dpPos, CMotionControllerBase *pBaseController);
|
|
~CMotorAdlinkBase(void);
|
|
|
|
protected:
|
|
void ConstructAxis() override;
|
|
virtual void ConstructMotor() = 0;
|
|
|
|
// virtual method to set the motor type and encoder input type
|
|
int SetMtrType(int iMtrType);
|
|
virtual bool SetMotorType(int iMtrType) = 0;
|
|
|
|
// virtual method to set the motor alarm signal logic
|
|
int SetALM(int iALM);
|
|
virtual bool SetMotorAlarmLogic(int iALM) = 0;
|
|
|
|
// virtual method to set the home sensor signal logic
|
|
int SetORGI(int iORGI);
|
|
virtual bool SetMotorHomeSensorLogic(int iORGI) = 0;
|
|
|
|
// virtual method to set the encoder Index signal logic
|
|
int SetIndexLogic(int iIndexLogic);
|
|
virtual bool SetMotorIndexLogic(int iIndexLogic) = 0;
|
|
|
|
// virtual method to set the in position signal logic
|
|
int SetINP(int iINP);
|
|
virtual bool SetMotorINPLogic(int iINP) = 0;
|
|
|
|
// virtual method to set clk type, out/dir or cw/ccw
|
|
int SetClk(int iClk);
|
|
virtual bool SetMotorClk(int iClk) = 0;
|
|
|
|
int SetHomeMode(int iHomeMode) override;
|
|
virtual bool SetMotorHomeMode(int iHomeMode) = 0;
|
|
|
|
virtual void SetMotorProfile(double dValue, motion_profile::PROFILE_TYPE type);
|
|
|
|
// method to do homing by Home Sensor
|
|
virtual BOOL HomeBySensor() override;
|
|
|
|
// method to do homing by index signal
|
|
virtual BOOL HomeByIndex() override;
|
|
|
|
// method to do Homeing by limit
|
|
virtual BOOL HomingByLimit() override;
|
|
|
|
virtual bool SetHomingResetPosition(bool bEnable);
|
|
|
|
bool FindHome(HOME_DIR homeDir, MOTION_SPEED speed, bool bToggleHomeSensor);
|
|
|
|
virtual bool FindLimit(HOME_DIR homeDir, MOTION_SPEED speed);
|
|
|
|
virtual bool EnableLimitInterrupt();
|
|
|
|
virtual bool DisableLimitInterrupt();
|
|
|
|
void SetVirtualPosition(double dPosition);
|
|
|
|
virtual bool StartHomeMove(double dStartSpeed, double dMaxSpeed, double dAcc);
|
|
|
|
// method to move continuously
|
|
int MoveContinuously(bool bCW = true) override;
|
|
int SMoveContinuously(bool bCW = true) override;
|
|
bool ContinuousMove(bool bCW, PROFILE_CURVE curve);
|
|
virtual bool StartContinuousMove(double dStartSpeed, double dMaxSpeed, double dAcc);
|
|
virtual bool StartSContinuousMove(double dStartSpeed, double dMaxSpeed, double dAcc, double dSAcc);
|
|
|
|
bool AbsoluteMove(double dPosition, int nMode, PROFILE_CURVE curve) override;
|
|
virtual bool StartAbsoluteMove(double dPosition, double dStartSpeed, double dMaxSpeed, double dAcc, double dDec);
|
|
virtual bool StartSAbsoluteMove(double dPosition, double dStartSpeed, double dMaxSpeed, double dAcc, double dDec, double dSAcc, double dSDec);
|
|
|
|
bool RelativeMove(double dDistance, PROFILE_CURVE curve) override;
|
|
virtual bool StartRelativeMove(double dPosition, double dStartSpeed, double dMaxSpeed, double dAcc, double dDec);
|
|
virtual bool StartSRelativeMove(double dPosition, double dStartSpeed, double dMaxSpeed, double dAcc, double dDec, double dSAcc, double dSDec);
|
|
|
|
int SimultaneousMove(int nNoOfAxis, CMtrProfile *mtrProfile, double *dPosition, double *dStartVel, double *dMaxVel, double *dAcc, int nMode = 0) override;
|
|
virtual bool GetMotorCommandedPosition(int nNoOfAxis, double *pRaw) = 0;
|
|
|
|
virtual bool SetupSimultaneousMoveOption();
|
|
virtual bool SetupAbsoluteSimultaneousMove(int nNoOfAxis, short *sAxis, double *dPosition, double *dStartVel, double *dMaxVel, double *dAcc, double *dDec);
|
|
virtual bool SetupRelativeSimultaneousMove(int nNoOfAxis, short *sAxis, double *dPosition, double *dStartVel, double *dMaxVel, double *dAcc, double *dDec);
|
|
virtual bool StartSimultaneousMove(int nFirstAxisNo);
|
|
virtual bool IsSimultaneousMoveSupported(void);
|
|
virtual double CovertAccToMtrUnits(double dAcc, double dNumPulsePerMM);
|
|
|
|
// LERP - Linear Interpolation
|
|
virtual bool StartXYRelMoveLinear(double dDistX, double dDistY, double dStartVel, double dMaxVel, double dAcc, double dDec);
|
|
virtual bool StartZURelMoveLinear(double dDistZ, double dDistU, double dStartVel, double dMaxVel, double dAcc, double dDec);
|
|
virtual bool StartXYSRelMoveLinear(double dDistX, double dDistY, double dStartVel, double dMaxVel, double dAcc, double dDec, double dSAcc, double dSDec);
|
|
virtual bool StartZUSRelMoveLinear(double dDistZ, double dDistU, double dStartVel, double dMaxVel, double dAcc, double dDec, double dSAcc, double dSDec);
|
|
};
|