123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506 |
- #ifndef JAXIS_H
- #define JAXIS_H
- #define WIN32_LEAN_AND_MEAN
- #include <string>
- #include <map>
- #include "AxisPara.h"
- #include <Windows.h>
- #include <any>
- #define AXIS_CMD_SUCCESS 0
- #define AXIS_CMD_ERROR_INSTRUCTION 1
- #define AXIS_CMD_ERROR_PARAMETER 2
- #define AXIS_CMD_ERROR_MOTION_MODE 3
- #define AXIS_CMD_ERROR_FORBID_STATE 4
- #define AXIS_CMD_ERROR_DRIVE_FAULT 5
- #define AXIS_CMD_ERROR_DRIVE_INHIBIT 6
- #define AXIS_CMD_ERROR_DRIVE_DISABLE 7
- #define AXIS_CMD_ERROR_SOFT_DISABLE 8
- #define AXIS_CMD_ERROR_NOT_HOMED 9
- #define AXIS_CMD_ERROR_HARD_NEG_LIMIT 10
- #define AXIS_CMD_ERROR_HARD_POS_LIMIT 11
- #define AXIS_CMD_ERROR_SOFT_NEG_LIMIT 12
- #define AXIS_CMD_ERROR_SOFT_POS_LIMIT 13
- #define AXIS_CMD_ERROR_AXISTYPE 14
- #define AXIS_CMD_ERROR_TIME_OVER 15
- #define AXIS_CMD_ERROR_MOVING 16
- #define AXIS_CMD_ERROR_NO_MOTION_MODE 17
- #define AXIS_CMD_ERROR_TRACE_LIMIT 18
- #define AXIS_CMD_ERROR_ENC_DIFF 19
- #define AXIS_CMD_ERROR_WRONG_HOME_METHOD 20
- #define AXIS_CMD_ERROR_LACK_AXIS 21
- #define AXIS_CMD_ERROR_WRONG_AXIS 22
- #define AXIS_CMD_ERROR_WRONG_VAR_TYPE 23
- #define AXIS_CMD_ERROR_MSG_FAULT 24
- #define AXIS_HOME_ERROR_NO_HOME 1001
- #define AXIS_HOME_ERROR_NO_INDEX 1002
- #define ELMO_COMPARE_POS1 "ui[1]"
- #define ELMO_FEEDBACK_POS "px"
- #define ELMO_COMPARE_ENABLE "ui[2]"
- #define ELMO_STOP_SIGNAL "ob[2]"
- enum AxisStopMode
- {
- AXIS_SMOOTH_STOP = 0,
- AXIS_ABRUPT_STOP = 1,
- };
- enum AxisMotionMode
- {
- AXIS_MODE_TRAP = 0,
- AXIS_MODE_JOG = 1,
- AXIS_MODE_PT = 2,
- AXIS_MODE_GEAR = 3,
- AXIS_MODE_FOLLOW = 4,
- AXIS_MODE_COORDINATE = 5,
- AXIS_MODE_PVT = 6,
- AXIS_MODE_FORCE = 7,
- };
- struct AxisStatus
- {
- bool bInitOK = false;
- bool bDriveFaulted = false;
- bool bInhibitedFaulted = false;
- bool bTrackError = false;
- bool bPosHardLimitEnable = false;
- bool bNegHardLimitEnable = false;
- bool bPosHardLimit = false;
- bool bNegHardLimit = false;
- bool bNegSoftLimitEnable = false;
- bool bPosSoftLimitEnable = false;
- bool bPosSoftLimit = false;
- bool bNegSoftLimit = false;
- bool bSmoothStop = false;
- bool bAbruptStop = false;
- bool bDriveEnabled = false;
- bool bSoftEnabled = false;
- bool bHomed = false;
- bool bMoving = false;
- bool bArrival = false;
- AxisMotionMode eMotionMode = AXIS_MODE_TRAP;
- AxisStopMode eStopMode = AXIS_SMOOTH_STOP;
- };
- struct MotionStatus
- {
-
- double m_dTargetPos = 0.0;
- double m_dMoveDistance = 0.0;
- double m_dTargetVel = 0.0;
- double m_dTargetAcc = 0.0;
- double m_dTargetDec = 0.0;
- double m_dTargetJerk = 0.0;
- };
- struct AxisIOStatus
- {
- bool bHomeSensorInput = false;
- bool bPosLimitSensorInput = false;
- bool bNegLimitSensorInput = false;
- bool bAxisInhibitedInput = false;
- bool bDriveEnableOutput = false;
- bool bDriveFaultResetOutput = false;
- };
- struct AxisHomeStatus
- {
- bool bHomeRunning = false;
- bool bHomeDone = false;
- bool bHomeError = false;
- int nHomeStage = 0;
- int nErrorCode = 0;
- double dCapturePos = 0.0;
- double dTargetPos = 0.0;
- };
- class JAxis
- {
- public:
- JAxis(){};
- virtual ~JAxis(){};
- public:
-
- virtual int GetAxisId() = 0;
-
- virtual std::string GetAxisName() = 0;
- public:
-
-
- virtual int Init(AxisData* Data/*,int nFormerAxis*/,HANDLE hCtrlComm) = 0;
-
- virtual int AxisOn() = 0;
-
- virtual int AxisOff() = 0;
-
- virtual int ClearStatus() = 0;
-
- virtual int EnableHardLimit(bool bEnableNeg, bool bEnablePos) = 0;
-
- virtual int EnableSoftLimit(bool bEnableNeg, bool bEnablePos) = 0;
-
-
- virtual int EnableArrivalCheck(bool bEnable) = 0;
-
- virtual int SetCurrentProfilePos(double dPos) = 0;
-
- virtual int SetCurrentActualPos(double dPos) = 0;
-
- virtual int SetCurrentPos(double dPos) = 0;
-
- virtual int ZeroCurrentPos() = 0;
-
-
-
-
-
-
-
-
- virtual const AxisData* GetAxisData() const = 0;
-
- virtual int SetAxisData(AxisData* data) = 0;
-
- virtual AxisType GetAxisType() = 0;
-
- virtual int SetArrivalBand(double dErrorBand, double dSettingTime) = 0;
-
- virtual int SetSoftLimit(double dNegLimit, double dPosLimit) = 0;
-
- virtual int GetAxisNo() = 0;
-
- virtual int GetArrivalBand(double& dErrorBand, double& dSettingTime) = 0;
-
- virtual int GetSoftLimit(double& dSoftLimitNeg, double& dSoftLimitPos, double& dSoftTravelRange) = 0;
-
- virtual int GetMaxVelocity(double& dMaxVel) = 0;
-
- virtual int GetMaxAcceleration(double& dMaxAcc, double& dMaxDec) = 0;
-
- virtual int GetMaxJerk(double& dMaxJerk) = 0;
-
- virtual int SetBufferParamF(int nBufferNo,std::string sParamFName,double dDoubleParam)=0;
- virtual int SetBufferParam(int nBufferNo,std::string sParamName,int nIntParam)=0;
- virtual int GetBufferParamF(int nBufferNo,std::string sParamFName,double& dDoubleParam)=0;
- virtual int GetBufferParam(int nBufferNo,std::string sParamName,int& nIntParam )=0;
-
- virtual int RunBuffer(int nBufferNo)=0;
-
-
-
-
-
- virtual int WriteSerialValue(std::string sSerial,std::any tValue)=0;
-
- virtual int WriteSockValue(std::string sSerial,std::any tValue)=0;
-
- virtual int SetAxisSoftEnable(bool bEnable) = 0;
-
- virtual int SetStopDec(double dSmoothStopDec, double dAbruptStopDec) = 0;
- virtual int SetStopDecR(double dSmoothStopRatio,double dAbruptStopRatio) = 0;
-
- virtual int Stop(AxisStopMode eStopMode = AXIS_SMOOTH_STOP) = 0;
-
- virtual int SetMotionMode(AxisMotionMode eMode) = 0;
-
-
- virtual int SetTargetAccDec(double dAcc, double dDec) = 0;
- virtual int SetTargetAccDecR(double dAccRatio,double dDecRatio) = 0;
-
- virtual int SetTargetJerk(double dJerk) = 0;
- virtual int SetTargetJerkR(double dJerkRatio) = 0;
-
- virtual int SetTargetVel(double dVel) = 0;
- virtual int SetTargetVelR(double dVelRatio) = 0;
-
-
- virtual int MoveAbs(double dPos,double dTime = 0) = 0;
- virtual int MoveAbs(double dPos,double dTime,double dPassPos) = 0;
- virtual int MoveAbsR(double dPos,double dVelRatio,double dTime = 0) = 0;
- virtual int MoveAbsR(double dPos,double dVelRatio,double dTime,double dPassPos) = 0;
-
- virtual int MoveRel(double dDist,double dTime = 0) = 0;
- virtual int MoveRel(double dDist,double dTime,double dPassDist) = 0;
- virtual int MoveRelR(double dDist,double dVelRatio,double dTime = 0) = 0;
- virtual int MoveRelR(double dDist,double dVelRatio,double dTime,double dPassDist) = 0;
-
- virtual int Jog(double dVel) = 0;
- virtual int JogR(double dVelRatio) = 0;
-
-
- virtual int MoveForce(int nTorqueRatio,int nReachTime = 50,int nStopTime = 10) = 0;
-
- virtual int MoveGear() = 0;
-
-
- virtual int SetGearRatio(long nMEven,long nSEven,long nMasterSlope = 0 ) = 0;
-
- virtual int SetGearMaster(const JAxis* pMaster) = 0;
-
- virtual int ChangeVel(double dVel) = 0;
- virtual int ChangeVelR(double dRatio) = 0;
-
- virtual int GoHome(double dTime = 0) = 0;
-
-
- virtual int GetMotionMode(AxisMotionMode& axisMotionMode) = 0;
-
- virtual int GetAxisStatus(AxisStatus& axisStatus) = 0;
-
- virtual bool IsInitOK() = 0;
-
- virtual bool IsHardwareFaulted() = 0;
-
- virtual bool IsInhibitedFaulted() = 0;
-
- virtual bool IsDriveEnabled() = 0;
-
- virtual bool IsSoftEnabled() = 0;
-
- virtual bool IsHomed() = 0;
-
- virtual bool IsMoving() = 0;
-
- virtual bool IsArrival() = 0;
-
-
-
- virtual int GetIOStatus(AxisIOStatus& axisIOStatus) = 0;
-
- virtual int GetHomeStatus(AxisHomeStatus& axisHomeStatus) = 0;
-
- virtual int GetHardLimitEnableStatus(bool& bEnabledNeg, bool& bEnabledPos) = 0;
-
- virtual int GetSoftLimitEnableStatus(bool& bEnabledNeg, bool& bEnabledPos) = 0;
-
- virtual int GetArrivalCheckEnableStatus(bool& bEnabled) = 0;
-
-
- virtual int GetTargetPos(double& dTargetPos) = 0;
-
- virtual int GetTargetVel(double& dTargetVel) = 0;
-
- virtual int GetTargetAccDec(double& dTargetAcc, double& dTargetDec) = 0;
-
- virtual int GetTargetJerk(double& dTargetJerk) = 0;
-
- virtual int GetProfilePos(double& dProfilePos) = 0;
-
- virtual int GetProfileVel(double& dProfileVel) = 0;
-
- virtual int GetProfileAcc(double& dProfileAcc) = 0;
-
- virtual int GetProfileTorque(double& dProfileTorque) = 0;
-
- virtual int GetActualPos(double& dActualPos) = 0;
-
- virtual int GetActualVel(double& dActualVel) = 0;
-
- virtual int GetActualAcc(double& dActualAcc) = 0;
-
- virtual int GetPosError(double& dPosError) = 0;
-
- virtual int GetActualTorque(double& dActualTorque) = 0;
-
- virtual bool CrdMotion2PTPMotion(bool bCrd2Single)=0;
-
- virtual std::string ErrCodeTransfer(int nRtn){return "";};
-
- virtual long User2Driver(double um,bool bWithHomeOffset = 0)=0;
-
- virtual double Driver2User(double driverPulse,bool bWithHomeOffset = 0) = 0;
-
- virtual int GetAxisIndex() const= 0;
- protected:
-
-
- virtual int IO2HomeMethod() = 0;
-
- virtual int Home2HomeMethod() = 0;
-
- virtual int Index2HomeMethod() = 0;
-
- virtual int Direct2HomeMethod() = 0;
-
- virtual int NegIndex2HomeMethod() = 0;
-
- virtual int PosIndex2HomeMethod() = 0;
-
- virtual bool CheckHomeSensor() = 0;
- protected:
-
- AxisType m_nAxisType;
-
- AxisIOStatus m_stIOStatus;
- AxisHomeStatus m_stHomeStatus;
- AxisStatus m_stAxisStatus;
- MotionStatus m_stMotionStatus;
-
-
- AxisData* m_stData;
- };
- #endif
|