|
|
#pragma once
|
|
|
#ifndef _INCLUDE_MOTOR_GUGAO_AXIS_H
|
|
|
#define _INCLUDE_MOTOR_GUGAO_AXIS_H
|
|
|
#include "CardService.h"
|
|
|
|
|
|
enum EHomeType
|
|
|
{//回原方式
|
|
|
EHOME_CAPTURE = 0, //硬件捕获回原
|
|
|
EHOME_ECAPTURE, //伺服捕获回原
|
|
|
EHOME_NORMAL, //普通回原
|
|
|
EHOME_EINDEX, //INDEX捕获回原
|
|
|
};
|
|
|
|
|
|
class CAxis
|
|
|
{
|
|
|
public:
|
|
|
CAxis(ushort cardIndex, ushort axisIndex);
|
|
|
~CAxis();
|
|
|
|
|
|
void SetArrive(bool bcheck) { m_bCheckArrive = bcheck; }
|
|
|
|
|
|
int Init();
|
|
|
int On();
|
|
|
int Off();
|
|
|
int Reset();
|
|
|
int Home(ushort homeType, long pos, long offset, double vel); //回原
|
|
|
int SetZeroPos(); //清除位置信息;(清零规划位置和实际位置,设置机械原点)
|
|
|
int SetSpeed(double vel, int bchange = 0); //设置单轴速度
|
|
|
int SetPos(long pos); //设置目标位置并运动
|
|
|
int MovePos(long pos, double vel, double acc, double dec); //移动到指定位置,运动中可更换指令
|
|
|
int MoveOffset(long offset, double vel, double acc, double dec); //移动相对位置
|
|
|
int MoveJog(int dir, double vel, double acc, double dec); //连续移动
|
|
|
|
|
|
double GetCurPos(EMPosType postype); //获取当前位置
|
|
|
|
|
|
int IsMoving();
|
|
|
|
|
|
int Stop(int type = 0); //停止运动, 包括回原
|
|
|
|
|
|
ushort GetCardIndex() { return m_cardIndex; }
|
|
|
ushort GetAxisIndex() { return m_axisIndex; }
|
|
|
|
|
|
int GearMove(CAxis* pAxis, int iGearType, double ratio, long masterSlope = 0);
|
|
|
|
|
|
protected:
|
|
|
|
|
|
void StopAndWait(int type = 0); //停止并等待停稳
|
|
|
int StopMove(int type = 0); //停止运动
|
|
|
|
|
|
int homeSts(ushort *pStatus); //获取回原点状态
|
|
|
int ClearStatus(); // 清除轴状态
|
|
|
int isRealMoving(); //判断实际是否在运动中
|
|
|
int HomeAsCapture(long homePos, long offset, double vel, int type = 0); //捕获回原
|
|
|
int HomeAsIndex(long homePos, long offset, long doffset);
|
|
|
int HomeAsNormal(long homePos, long offset, double vel); //正常回原
|
|
|
|
|
|
bool WaitExitMoveSign(int iWait); //等待运动退出信号,若返回true,则说明有退出信号
|
|
|
|
|
|
private:
|
|
|
|
|
|
Handle m_hQuitEvt; //退出回原句柄
|
|
|
Handle m_hHomeFinishedEvt; //回原函数退出事件
|
|
|
bool m_bInit; //是否使能
|
|
|
bool m_bCheckArrive; //是否检测到位信号
|
|
|
|
|
|
ushort m_cardIndex;
|
|
|
ushort m_axisIndex;
|
|
|
};
|
|
|
|
|
|
|
|
|
#endif //防止重复包含
|