MC200编程手册(C/C++)¶
简介¶
本篇章介绍在使用SDK接入WeconCNC运动控制器的接口api使用,主要头文件是CNCApi以及IOApi目录下的头文件。
源文件组织结构¶
├── include
│ ├── CNCApi
│ │ ├── CncDef.h
│ │ ├── CommDef.h
│ │ ├── CommApi.h
│ │ ├── ProxyEntry.h
│ │ ├── ProxyMotion.h
│ │ ├── ProxyStatus.h
│ │ └── ProxySys.h
│ ├── IOApi
│ │ └── IoControl.h
├── lib
│ ├── x64
│ │ ├── CNCApi.lib
│ │ └── CNCApid.lib
│ ├── arm
│ │ ├── libCNCApi.so
│ │ ├── libCNCApi.so.1
│ │ └── libCNCApi.so.1.0.0
│ ├── arm64
│ │ ├── libCNCApi.so
│ │ ├── libCNCApi.so.1
│ │ └── libCNCApi.so.1.0.0
准备工作¶
Windows¶
下载SDK压缩包,解压到你的工程目录或者其余任意目录 检查目录中是否包含上述内容
Linux¶
下载SDK压缩包,解压到你的工程目录或者其余任意目录 检查目录中是否包含上述内容
SDK说明¶
WeconCNC SDK使用统一的命名空间weconcnc
类型定义¶
CncDef.h
以及CommDef.h
中是SDK中使用的数据类型的定义
WECONCNC_ERROR_E:接口返回值定义
WECONCNC_ERROR_SUCCESS:没有错误
WECONCNC_ERROR_LINK_FAILED:连接错误
WECONCNC_ERROR_EXEC_CMD_FAILED:执行指令错误
WECONCNC_ERROR_UPLOAD_FILE_FAILED:上传文件出错
WECONCNC_ERROR_DOWNLOAD_FILE_FAILED:下载文件出错
MACHINE_STATE_E: 机器电源状态
INTERP_STATE_E:机器运行状态
OP_MODE_E:机器运行模式
INI_DISPLAY_E:机器
INI_CONFIG_FIELD:配置文件项
INI_MAX_VEL = 0, //最大速度(mm/s)
INI_MAX_ACC = 1, //最大加速度(mm/s^2)
INI_MAX_LIMIT = 2, //正限位
INI_MIN_LIMIT = 3, //负限位
INI_FERROR = 4, //跟随误差
INI_MIN_FERROR = 5, //最小跟随误差
INI_BACKLASH = 6, //间隙
INI_JERK = 7, //加加速度(预留,暂时无用)
ABS_CONFIG_FIELD:多圈绝对值模块配置项
ABS_SCALE = 0, 脉冲当量倒数
ABS_LEAD = 1, 导程(即电机旋转一圈走多少个用户单位)
ABS_RR_DEN = 2, 减速比分母
ABS_RR_NUM = 3, 减速比分母
ABS_CW = 4, 坐标取反
IO_CONFIG_FIELD:外部IO模块配置项
IO_SPEED = 0, 外部io速度
IO_X_MIN_LIMIT = 1, 外部IO对x负限位
IO_X_MAX_LIMIT = 2, 外部IO对X正限位
IO_FLAP_X = 3, 翻板坐标X
IO_FLAP_Y = 4, 翻板坐标Y
IO_LIMIT_Z = 5, 外部IO对XY移动进行限制的Z轴位置
IO_FLAP_TIME = 6, 翻板上时间(秒)
IO_FLAP_DOWN_TIME = 7, 翻板下保压时间(秒)
COORDINATE_T:
```bash: double pos[6];
POSITION_T:
POINT_T x; //点的x坐标
POINT_T y; //点的y坐标
POINT_T z; //点的z坐标
POINT_T a; //点的a坐标
POINT_T b; //点的b坐标
POINT_T c; //点的c坐标
POINT_T u; //点的u坐标
POINT_T v; //点的v坐标
POINT_T w; //点的w坐标
CNC_INI_CONFIG_T:
int32_t nAxis; //轴号
double dMaxVel; //最大速度
double dMaxAcc; //最大加速度
double dMaxLimit; //正限位
double dMinLimit; //负限位
double dFError; //跟随误差
double dMinFError; //最小跟随误差
double dBacklash; //间隙
double dJerk; //加加速度(预留)
CNC_ABS_CONFIG_T:
int32_t nServo; //伺服序号
double dScale; //脉冲当量的倒数
double dLead; //导程
double dRRDen; //减速比分母
double dRRNum; //减速比分子
bool bCw; //坐标取反
CNC_IO_CONFIG_T:
int32_t dSpeed; //外部IO速度
double dXMinLimit; //外部IO对x负限位
double dXMaxLimit; //外部IO对X正限位
double dFlapX; //翻板坐标X
double dFlapY; //翻板坐标Y
double dLimitZ; //外部IO对XY移动进行限制的Z轴位置
int32_t nFlapTime; //翻板上时间(秒)
int32_t nFlapDownTime; //翻板下保压时间(秒)
状态获取接口¶
WeconCNC SDK提供了对运动控制器的状态获取接口
通过ProxyStatus.h
的weconcnc::CProxyStatus
类提供
getMotionState¶
定义:WECONCNC_ERROR_E getMotionState(MACHINE_STATE_E &eState);
说明:该接口将读取机器电源状态
参数:【OUT】MACHINE_STATE_E,请参见MACHINE_STATE_E
定义
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
getInterpState¶
定义:WECONCNC_ERROR_E getInterpState(INTERP_STATE_E &eState);
说明:该接口将读取机器运行状态
参数:【OUT】INTERP_STATE_E,请参见INTERP_STATE_E
定义
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
getOpMode¶
定义:WECONCNC_ERROR_E getOpMode(OP_MODE_E &eMode);
说明:该接口将读取当前操作模式
参数:【OUT】OP_MODE_E,请参见OP_MODE_E
定义
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
getCoord¶
定义:WECONCNC_ERROR_E getCoord(COORDINATE_T &stCoord);
说明:该接口将读取当前坐标值
参数:【OUT】COORDINATE_T,请参见COORDINATE_T
定义
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
getLine¶
定义:WECONCNC_ERROR_E getLine(int &nCurrentLine);
说明:该接口将获取当前G代码运行的行数
参数:【OUT】nCurrentLine,当前运行行数
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
getError¶
定义:WECONCNC_ERROR_E getError(std::queue
说明:该接口将获取当前系统运行的错误信息
参数:【OUT】std::queue
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
运动控制接口¶
调用以下接口前,请先获取代理运动类的实例
C++ | |
---|---|
setEstop¶
定义:WECONCNC_ERROR_E setEstop(bool bEnable);
说明:该接口设置当前系统的急停状态
参数:【IN】bool bEnable,想要设置的急停状态,true为急停,false为解除急停。
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
setEnable¶
定义:WECONCNC_ERROR_E setEnable(bool bEnable);
说明:该接口设置当前系统的使能状态
参数:【IN】bool bEnable,想要设置的使能状态,true为使能,false为关闭使能。
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
setOpMode¶
定义:WECONCNC_ERROR_E setOpMode(OP_MODE_E mode);
说明:该接口设置当前系统的急停状态
参数:【IN】OP_MODE_E,请参见OP_MODE_E
定义
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
continuousJog¶
定义:WECONCNC_ERROR_E continuousJog(int32_t nAxis, double dSpeed, int32_t nJogMode = -1);
说明:连续点动控制
参数:【IN】int32_t nAxis,控制的轴号。
double dSpeed, 速度(mm/min).
nt32_t nJogMode 点动模式,0: JOGTELEOP, 1: JOGJOINT。
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
incrementJog¶
定义:WECONCNC_ERROR_E incrementJog(int32_t nAxis, double dSpeed, double dDistance, int32_t nJogMode = -1);
说明:增量点动控制
参数:【IN】int32_t nAxis,控制的轴号。
double dSpeed, 速度(mm/min)。
double dDistance,增量移动的距离。
int32_t nJogMode 点动模式,0,1。
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
stopJog¶
定义:WECONCNC_ERROR_E stopJog(int32_t nAxis, int32_t nJogMode = -1);
说明:该接口用于使连续点动停止
参数:【IN】int32_t nAxis,控制的轴号。
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
setFeedOverride¶
定义:WECONCNC_ERROR_E setFeedOverride(int32_t nFeedOverride);
说明:该接口设置当前系统进给率
参数:【IN】int32_t nFeedOverride,为进给率百分比,例如输入50即为50%的进给率。
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
home¶
定义:WECONCNC_ERROR_E home(int32_t nAxis);
说明:指定轴回零
参数:【IN】int32_t nAxis,轴号。
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
execMDI¶
定义:WECONCNC_ERROR_E execMDI(std::string sMdi);
说明:该接口使用MDI指令进行运动
参数:【IN】std::string sMdi,MDI指令
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
resetProgram¶
定义:WECONCNC_ERROR_E resetProgram();
说明:初始化系统加载文件状态
参数:无
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
openProgram¶
定义:WECONCNC_ERROR_E openProgram(std::string sFileName);
说明:该接口设置当前系统要打开的文件。
参数:【IN】std::string sFileName,要加载到系统中打开的文件名
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
runProgram¶
定义:WECONCNC_ERROR_E runProgram(int32_t nStartLine);
说明:该接口设置当前系统打开的文件要从第几行开始运行。
参数:【IN】int32_t nStartLine,开始运行的行数
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
stopProgram¶
定义:WECONCNC_ERROR_E stopProgram();
说明:停止当前系统正在运行的程序。
参数:无
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
pauseProgram¶
定义:WECONCNC_ERROR_E pauseProgram();
说明:暂停当前系统正在运行的程序。
参数:无
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
resumeProgram¶
定义:WECONCNC_ERROR_E resumeProgram();
说明:恢复运行当前系统暂停中的程序
参数:无
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
stepProgram¶
定义:WECONCNC_ERROR_E stepProgram();
说明:单步运行当前系统加载的程序。
参数:无
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
moveTo¶
定义:WECONCNC_ERROR_E moveTo(POSITION_T pos, double dFeed);
说明:移动至当前指定位置
参数:【IN】POSITION_T pos,希望要移动到的位置
double dFeed, 速率(mm/min)
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
moveLine¶
定义:WECONCNC_ERROR_E moveLine(POSITION_T posStart, POSITION_T posEnd, double dFeed);
说明:先移动至线段起点,随后移动至线段终点。
参数:【IN】POSITION_T posStart,希望要移动到的线段起点
POSITION_T posEnd,希望要移动到的线段终点
double dFeed, 速率(mm/min)
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
moveArc¶
定义:WECONCNC_ERROR_E moveArc(POSITION_T posStart, POSITION_T posEnd, POSITION_T posCenter, double dFeed, bool bCw);
说明:先直线移动至弧线起点,随后以圆弧运动至弧线终点
参数:【IN】POSITION_T posStart,弧线的起点
POSITION_T posEnd,弧线的终点
POSITION_T posCenter, 弧线的圆心
double dFeed, 速率(mm/min)
bool bCw,旋转方向,true:顺时针,false: 逆时针。
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
downloadGcode¶
定义:WECONCNC_ERROR_E downloadGcode(const std::string& sFromFile);
说明:下载G代码文件
参数:【IN】string sFromFile,文件所在路径
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
系统设置接口¶
调用以下接口前,请先获取代理系统类的实例
C++ | |
---|---|
setIniConfig¶
定义:WECONCNC_ERROR_E setIniConfig(int32_t nAxis, INI_CONFIG_FIELD eField, std::string &sParam);
WECONCNC_ERROR_E setIniConfig(int32_t nAxis, std::vector
说明:设置单个 /多个ini配置的值。
参数:【IN】int32_t nAxis,轴号
INI_CONFIG_FIELD eField,请参见INI_CONFIG_FIELD
定义
std::string sParam,参数的值
std::vector
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
getIniConfig¶
定义:WECONCNC_ERROR_E getIniConfig(int32_t nAxis, INI_CONFIG_FIELD eField, std::string &sParam);
WECONCNC_ERROR_E getIniConfig(int32_t nAxis, CNC_INI_CONFIG_T &stIniConfig);
说明:获取指定/全部的ini设置数据。
参数: 【IN】int32_t nAxis,轴号
INI_CONFIG_FIELD eField,请参见INI_CONFIG_FIELD
定义
【OUT】std::string sParam,参数的值
CNC_INI_CONFIG_T stIniConfig,请参见CNC_INI_CONFIG_T
定义。
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
setAbsConfig¶
定义:WECONCNC_ERROR_E setAbsConfig(int32_t nServo, ABS_CONFIG_FIELD eField, std::string &sParam);
WECONCNC_ERROR_E setAbsConfig(int32_t nServo, std::vector
说明:设置单个 /多个多圈绝对值配置的值。
参数:【IN】int32_t nServo,伺服序号
ABS_CONFIG_FIELD eField,请参见ABS_CONFIG_FIELD
定义
std::string sParam,参数的值
std::vector
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:参考setIniConfig示例,与其类似。
getAbsConfig¶
定义:WECONCNC_ERROR_E getAbsConfig(int32_t nServo, ABS_CONFIG_FIELD eField, std::string &sParam);
WECONCNC_ERROR_E getAbsConfig(int32_t nServo, CNC_ABS_CONFIG_T &stAbsConfig);
说明:获取指定/全部的多圈绝对值设置数据。
参数:【IN】【IN】int32_t nServo,轴号
ABS_CONFIG_FIELD eField,请参见ABS_CONFIG_FIELD
定义
【OUT】std::string sParam,参数的值
CNC_ABS_CONFIG_T stIniConfig,请参见CNC_ABS_CONFIG_T
定义。
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:参考getIniConfig示例,与其类似。
setIoConfig¶
定义: WECONCNC_ERROR_E setIoConfig(IO_CONFIG_FIELD eField, std::string &sParam);
WECONCNC_ERROR_E setIoConfig(std::vector
说明:设置单个 /多个外部IO配置的值。
参数:【IN】IO_CONFIG_FIELD eField,请参见IO_CONFIG_FIELD
定义
std::string sParam,参数的值
std::vector
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:参考setIniConfig示例,与其类似。
getIoConfig¶
定义: WECONCNC_ERROR_E getIoConfig(IO_CONFIG_FIELD eField, std::string &sParam);
WECONCNC_ERROR_E getIoConfig(CNC_IO_CONFIG_T &stIoConfig);
说明:获取指定/全部当前外部IO设置数据
参数:【IN】【IN】int32_t nServo,轴号
IO_CONFIG_FIELD eField,请参见IO_CONFIG_FIELD
定义
【OUT】std::string sParam,参数的值
CNC_IO_CONFIG_T stIniConfig,请参见CNC_IO_CONFIG_T
定义。
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:参考getIniConfig示例,与其类似。
resetServoError¶
定义:WECONCNC_ERROR_E resetServoError(int32_t nServo);
说明:清除指定伺服报错
参数:【IN】int32_t nServo,伺服序号
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
resetServoAbs¶
定义:WECONCNC_ERROR_E resetServoAbs(int32_t nServo);
说明:伺服多圈绝对值清零
参数:【IN】int32_t nServo,伺服序号
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
setMotorRevo¶
定义:WECONCNC_ERROR_E setMotorRevo(int32_t nServo, int32_t nMotorRevo);
说明:设置伺服电子齿轮比分子
参数:【IN】int32_t nServo,伺服序号
int32_t nMotorRevo,电子齿轮比分子的值
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
getMotorRevo¶
定义: WECONCNC_ERROR_E getMotorRevo(int32_t nServo, int32_t &nMotorRevo);
说明:获取伺服电子齿轮比分子
参数:【IN】int32_t nServo,伺服序号
int32_t nMotorRevo,电子齿轮比分子的值
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
setShaftRevo¶
定义:WECONCNC_ERROR_E setShaftRevo(int32_t nServo, int32_t nShaftRevo);
说明:设置伺服电子齿轮比分母
参数:【IN】int32_t nServo,伺服序号
int32_t nShaftRevo,电子齿轮比分母的值
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|
getShaftRevo¶
定义:WECONCNC_ERROR_E getShaftRevo(int32_t nServo, int32_t &nShaftRevo);
说明:获取伺服电子齿轮比分子
参数:【IN】int32_t nServo,伺服序号
int32_t nShaftRevo,电子齿轮比分母的值
返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E
定义
示例:
C++ | |
---|---|