Skip to content

MC200编程手册(C/C++)

简介

本篇章介绍在使用SDK接入WeconCNC运动控制器的接口api使用,主要头文件是CNCApi以及IOApi目录下的头文件。

源文件组织结构

Text Only
├── 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:接口返回值定义

Bash
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: 机器电源状态

Bash
STATE_ESTOP:急停
STATE_ESTOP_RESET:急停复位
STATE_OFF:电源关闭
STATE_ON:电源打开

INTERP_STATE_E:机器运行状态

Bash
INTERP_IDEL:空闲
INTERP_READING:读取文件中
INTERP_PAUSED:暂停
INTERP_WAITING:等待就绪

OP_MODE_E:机器运行模式

Bash
MODE_MANUAL:手动模式
MODE_AUTO:自动模式
MODE_MDI:指令模式

INI_DISPLAY_E:机器

Bash
DEFAULT_LINEAR_VELOCITY:默认直线运行速度
MAX_LINEAR_VELOCITY:最大直线运行速度

INI_CONFIG_FIELD:配置文件项

Bash
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:多圈绝对值模块配置项

Text Only
ABS_SCALE = 0, 脉冲当量倒数
ABS_LEAD = 1, 导程(即电机旋转一圈走多少个用户单位)
ABS_RR_DEN = 2, 减速比分母
ABS_RR_NUM = 3, 减速比分母
ABS_CW = 4, 坐标取反

IO_CONFIG_FIELD:外部IO模块配置项

Bash
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];

Text Only
**POINT_T**:

```bash:
bool bUpdate; //是否有数据输入
double dValue;  //数据

POSITION_T

Bash
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

Bash
int32_t nAxis;  //轴号
double dMaxVel; //最大速度
double dMaxAcc; //最大加速度
double dMaxLimit; //正限位
double dMinLimit; //负限位
double dFError; //跟随误差
double dMinFError; //最小跟随误差
double dBacklash; //间隙
double dJerk; //加加速度(预留)

CNC_ABS_CONFIG_T

Bash
int32_t nServo; //伺服序号
double dScale; //脉冲当量的倒数
double dLead; //导程
double dRRDen; //减速比分母
double dRRNum; //减速比分子
bool bCw; //坐标取反

CNC_IO_CONFIG_T

Bash
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.hweconcnc::CProxyStatus类提供

getMotionState

定义:WECONCNC_ERROR_E getMotionState(MACHINE_STATE_E &eState);

说明:该接口将读取机器电源状态

参数:【OUT】MACHINE_STATE_E,请参见MACHINE_STATE_E定义

返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E定义

示例:

C++
weconcnc::CProxyStatus mcstatus;
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
MACHINE_STATE_E state;

ret = mcstatus.getMotionState(state);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "get motion state failed!" << std::endl;
    return -1;
}

std::cout << "Motion state: " << state << std::endl;

return 0;

getInterpState

定义:WECONCNC_ERROR_E getInterpState(INTERP_STATE_E &eState);

说明:该接口将读取机器运行状态

参数:【OUT】INTERP_STATE_E,请参见INTERP_STATE_E定义

返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E定义

示例:

C++
weconcnc::CProxyStatus mcstatus;
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
INTERP_STATE_E state;

ret = mcstatus.getInterpState(state);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "get interp state failed!" << std::endl;
    return -1;
}

std::cout << "Interp state: " << state << std::endl;

return 0;

getOpMode

定义:WECONCNC_ERROR_E getOpMode(OP_MODE_E &eMode);

说明:该接口将读取当前操作模式

参数:【OUT】OP_MODE_E,请参见OP_MODE_E定义

返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E定义

示例:

C++
weconcnc::CProxyStatus mcstatus;
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
OP_MODE_E mode;

ret = mcstatus.getOpMode(mode);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "get option mode failed!" << std::endl;
    return -1;
}

std::cout << "Option Mode: " << mode << std::endl;

return 0;

getCoord

定义:WECONCNC_ERROR_E getCoord(COORDINATE_T &stCoord);

说明:该接口将读取当前坐标值

参数:【OUT】COORDINATE_T,请参见COORDINATE_T定义

返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E定义

示例:

C++
weconcnc::CProxyStatus mcstatus;
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
COORDINATE_T coord;

ret = mcstatus.getCoord(coord);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "get coord failed!" << std::endl;
    return -1;
}

std::cout << "Option Mode: " << mode << std::endl;

return 0;

getLine

定义:WECONCNC_ERROR_E getLine(int &nCurrentLine);

说明:该接口将获取当前G代码运行的行数

参数:【OUT】nCurrentLine,当前运行行数

返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E定义

示例:

C++
weconcnc::CProxyStatus mcstatus;
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
int nCurLine;

ret = mcstatus.getLine(nCurLine);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "get coord failed!" << std::endl;
    return -1;
}

std::cout << "Current Run Line: " << nCurLine << std::endl;

return 0;

getError

定义:WECONCNC_ERROR_E getError(std::queue &qErrInfo);

说明:该接口将获取当前系统运行的错误信息

参数:【OUT】std::queue qErrInfo,当前运行错误信息

返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E定义

示例:

C++
weconcnc::CProxyStatus mcstatus;
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
std::queue<std::string> queErrInfo;

ret = mcstatus.getError(queErrInfo);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "get coord failed!" << std::endl;
    return -1;
}

for (auto iter : queErrInfo) {
    std::cout << iter << std::endl;
}

return 0;

运动控制接口

调用以下接口前,请先获取代理运动类的实例

C++
1
2
3
4
5
weconcnc::CCommApi *pComm = new CCommApi();
weconcnc::CProxyEntry *pEntry = new CProxyEntry(pComm);
weconcnc::CProxyMotion *pMotion = pEntry.getProxyMotion();

pComm->connect([IP地址], [端口号]);

setEstop

定义:WECONCNC_ERROR_E setEstop(bool bEnable);

说明:该接口设置当前系统的急停状态

参数:【IN】bool bEnable,想要设置的急停状态,true为急停,false为解除急停。

返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E定义

示例:

C++
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
bool bEnable = true;

ret = pMotion.setEstop(bEnable);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "set estop failed!" << std::endl;
    return -1;
}

return 0;

setEnable

定义:WECONCNC_ERROR_E setEnable(bool bEnable);

说明:该接口设置当前系统的使能状态

参数:【IN】bool bEnable,想要设置的使能状态,true为使能,false为关闭使能。

返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E定义

示例:

C++
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
bool bEnable = true;

ret = pMotion.setEnable(bEnable);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "set enable failed!" << std::endl;
    return -1;
}

return 0;

setOpMode

定义:WECONCNC_ERROR_E setOpMode(OP_MODE_E mode);

说明:该接口设置当前系统的急停状态

参数:【IN】OP_MODE_E,请参见OP_MODE_E定义

返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E定义

示例:

C++
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
OP_MODE_E mode = MODE_MANUAL;

ret = pMotion.setOpMode(mode);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "set optional mode failed!" << std::endl;
    return -1;
}

return 0;

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++
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
int32_t  nAxis = 0;
double dSpeed = 1000;

ret = pMotion.continuousJog(nAxis, 1000);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "continuous jog failed!" << std::endl;
    return -1;
}

return 0;

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++
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
int32_t  nAxis = 0;
double dSpeed = 1000;
double dDistance = 1

ret = pMotion.continuousJog(nAxis, 1000, dDistance);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "increment jog failed!" << std::endl;
    return -1;
}

return 0;

stopJog

定义:WECONCNC_ERROR_E stopJog(int32_t nAxis, int32_t nJogMode = -1);

说明:该接口用于使连续点动停止

参数:【IN】int32_t nAxis,控制的轴号。

返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E定义

示例:

C++
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
int32_t  nAxis = 0;

ret = pMotion.stopJog(nAxis);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "stop jog failed!" << std::endl;
    return -1;
}

return 0;

setFeedOverride

定义:WECONCNC_ERROR_E setFeedOverride(int32_t nFeedOverride);

说明:该接口设置当前系统进给率

参数:【IN】int32_t nFeedOverride,为进给率百分比,例如输入50即为50%的进给率。

返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E定义

示例:

C++
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
int32_t nFeedOverride = 50;

ret = pMotion.setFeedOverride(nFeedOverride);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "set feed override failed!" << std::endl;
    return -1;
}

return 0;

home

定义:WECONCNC_ERROR_E home(int32_t nAxis);

说明:指定轴回零

参数:【IN】int32_t nAxis,轴号。

返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E定义

示例:

C++
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
int32_t nAxis = 0;

ret = pMotion.home(nAxis);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "home failed!" << std::endl;
    return -1;
}

return 0;

execMDI

定义:WECONCNC_ERROR_E execMDI(std::string sMdi);

说明:该接口使用MDI指令进行运动

参数:【IN】std::string sMdi,MDI指令

返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E定义

示例:

C++
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
std::string sMdi = "G0 X0";

ret = pMotion.execMDI(sMdi);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "run mdi failed!" << std::endl;
    return -1;
}

return 0;

resetProgram

定义:WECONCNC_ERROR_E resetProgram();

说明:初始化系统加载文件状态

参数:无

返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E定义

示例:

C++
1
2
3
4
5
6
7
8
9
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;

ret = pMotion.resetProgram();
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "reset program failed!" << std::endl;
    return -1;
}

return 0;

openProgram

定义:WECONCNC_ERROR_E openProgram(std::string sFileName);

说明:该接口设置当前系统要打开的文件。

参数:【IN】std::string sFileName,要加载到系统中打开的文件名

返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E定义

示例:

C++
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
std::string sFileName = "fileName.txt";

ret = pMotion.openProgram(sFileName);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "open program failed!" << std::endl;
    return -1;
}

return 0;

runProgram

定义:WECONCNC_ERROR_E runProgram(int32_t nStartLine);

说明:该接口设置当前系统打开的文件要从第几行开始运行。

参数:【IN】int32_t nStartLine,开始运行的行数

返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E定义

示例:

C++
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
int32_t nStartLine = 0;

ret = pMotion.runProgram(nStartLine);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "run program failed!" << std::endl;
    return -1;
}

return 0;

stopProgram

定义:WECONCNC_ERROR_E stopProgram();

说明:停止当前系统正在运行的程序。

参数:无

返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E定义

示例:

C++
1
2
3
4
5
6
7
8
9
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;

ret = pMotion.stopProgram();
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "stop program failed!" << std::endl;
    return -1;
}

return 0;

pauseProgram

定义:WECONCNC_ERROR_E pauseProgram();

说明:暂停当前系统正在运行的程序。

参数:无

返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E定义

示例:

C++
1
2
3
4
5
6
7
8
9
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;

ret = pMotion.pauseProgram();
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "pause program failed!" << std::endl;
    return -1;
}

return 0;

resumeProgram

定义:WECONCNC_ERROR_E resumeProgram();

说明:恢复运行当前系统暂停中的程序

参数:无

返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E定义

示例:

C++
1
2
3
4
5
6
7
8
9
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;

ret = pMotion.resumeProgram();
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "resume program failed!" << std::endl;
    return -1;
}

return 0;

stepProgram

定义:WECONCNC_ERROR_E stepProgram();

说明:单步运行当前系统加载的程序。

参数:无

返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E定义

示例:

C++
1
2
3
4
5
6
7
8
9
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;

ret = pMotion.stepProgram();
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "step program failed!" << std::endl;
    return -1;
}

return 0;

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++
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
POSITION_T pos;
double dFeed = 1000;
pos.x = 100;
pos.y = 100;

ret = pMotion.moveTo(pos, dFeed);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "execute move cmd failed!" << std::endl;
    return -1;
}

return 0;

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定义

示例:

C++
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
POSITION_T posStart;
POSITION_T posEnd;
double dFeed = 1000;
posStart.x = 100;
posStart.y = 100;
posEnd.x = 200;
posEnd.y = 200;

ret = pMotion.moveLine(posStart, posEnd, dFeed);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "execute move cmd failed!" << std::endl;
    return -1;
}

return 0;

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定义

示例:

C++
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
POSITION_T posStart;
POSITION_T posEnd;
POSITION_T posCenter;
double dFeed = 1000;
bool bCw = true;

posStart.x = 100;
posStart.y = 100;
posEnd.x = 100;
posEnd.y = 100;
posCenter.x = 200;
posCenter.y = 200;

ret = pMotion.moveArc(posStart, posEnd, posCenter, dFeed, bCw);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "execute move cmd failed!" << std::endl;
    return -1;
}

return 0;

downloadGcode

定义:WECONCNC_ERROR_E downloadGcode(const std::string& sFromFile);

说明:下载G代码文件

参数:【IN】string sFromFile,文件所在路径

返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E定义

示例:

C++
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
std::string sFromFile = "C://test.txt";

ret = pMotion.downloadGcode(sFromFile);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "download gcode file failed!" << std::endl;
    return -1;
}

return 0;

系统设置接口

调用以下接口前,请先获取代理系统类的实例

C++
1
2
3
4
5
weconcnc::CCommApi *pComm = new CCommApi();
weconcnc::CProxyEntry *pEntry = new CProxyEntry(pComm);
weconcnc::CProxySys *pSys = pEntry.getProxySys();

pComm->connect([IP地址], [端口号]);

setIniConfig

定义:WECONCNC_ERROR_E setIniConfig(int32_t nAxis, INI_CONFIG_FIELD eField, std::string &sParam);

WECONCNC_ERROR_E setIniConfig(int32_t nAxis, std::vector> &vecIniConfig);

说明:设置单个 /多个ini配置的值。

参数:【IN】int32_t nAxis,轴号

INI_CONFIG_FIELD eField,请参见INI_CONFIG_FIELD定义

std::string sParam,参数的值

std::vector> vecIniConfig 多组期望设置的参数与对应的值。

返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E定义

示例:

C++
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
int32_t nAxis = 0;
INI_CONFIG_FIELD eField = INI_MAX_VEL;
std::string sParam = 2000;

ret = pSys.setIniConfig(nAxis, eField, sParam);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "setting ini config failed!" << std::endl;
    return -1;
}


std::vector<std::pair<INI_CONFIG_FIELD, std::string>> vecIniConfig;

INI_CONFIG_FIELD eField = INI_MAX_VEL;
std::string sParam = 4000;
vecIniConfig.push_back(std::make_pair<weconcnc::INI_CONFIG_FIELD, std::string>(eField, sParam));
INI_CONFIG_FIELD eField = INI_MAX_ACC;
std::string sParam = 4000;
vecIniConfig.push_back(std::make_pair<weconcnc::INI_CONFIG_FIELD, std::string>(eField, sParam));

ret = pSys.setIniConfig(nAxis, vecIniConfig);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "setting multi ini config failed!" << std::endl;
    return -1;
}

return 0;

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定义

示例:

C++
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
int32_t nAxis = 0;
INI_CONFIG_FIELD eField = INI_MAX_VEL;
std::string sParam;

ret = pSys.setIniConfig(nAxis, eField, sParam);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "setting ini config failed!" << std::endl;
    return -1;
}

std::cout << eField << ":" << sParam << std::endl;

CNC_INI_CONFIG_T stIniConfig;

ret = pSys.setIniConfig(nAxis, stIniConfig);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "setting multi ini config failed!" << std::endl;
    return -1;
}


std::cout << "Axis:" << stIniConfig.nAxis << std::endl;
std::cout << "MaxVel:" << stIniConfig.dMaxVel << std::endl;
std::cout << "MaxAcc:" << stIniConfig.dMaxAcc << std::endl;
std::cout << "MaxLimit:" << stIniConfig.dMaxLimit << std::endl;
std::cout << "MinLimit:" << stIniConfig.dMinLimit << std::endl;
std::cout << "FError:" << stIniConfig.dFError << std::endl;
std::cout << "MinFError:" << stIniConfig.dMinFError << std::endl;
std::cout << "Backlash:" << stIniConfig.dBacklash << std::endl;
std::cout << "Jerk:" << stIniConfig.dJerk << std::endl;


return 0;

setAbsConfig

定义:WECONCNC_ERROR_E setAbsConfig(int32_t nServo, ABS_CONFIG_FIELD eField, std::string &sParam);

WECONCNC_ERROR_E setAbsConfig(int32_t nServo, std::vector> &vecAbsConfig);

说明:设置单个 /多个多圈绝对值配置的值。

参数:【IN】int32_t nServo,伺服序号

ABS_CONFIG_FIELD eField,请参见ABS_CONFIG_FIELD定义

std::string sParam,参数的值

std::vector> vecAbsConfig 多组期望设置的参数与对应的值。

返回值: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> &vecIoConfig);

说明:设置单个 /多个外部IO配置的值。

参数:【IN】IO_CONFIG_FIELD eField,请参见IO_CONFIG_FIELD定义

std::string sParam,参数的值

std::vector> &vecIoConfig 多组期望设置的参数与对应的值。

返回值: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++
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
int32_t nServo = 0;

ret = pMotion.resetServoError();
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "resetServoError failed!" << std::endl;
    return -1;
}

return 0;

resetServoAbs

定义:WECONCNC_ERROR_E resetServoAbs(int32_t nServo);

说明:伺服多圈绝对值清零

参数:【IN】int32_t nServo,伺服序号

返回值:WECONCNC_ERROR_E,请参见WECONCNC_ERROR_E定义

示例:

C++
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
int32_t nServo = 0;

ret = pSys.resetServoAbs();
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "resetServoAbs failed!" << std::endl;
    return -1;
}

return 0;

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++
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
int32_t nServo = 0;
int32_t nMotorRevo = 131072;

ret = pSys.setMotorRevo(nServo, nMotorRevo);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "setMotorRevo failed!" << std::endl;
    return -1;
}

return 0;

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++
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;

int32_t nServo = 0;
int32_t nMotorRevo;

ret = pSys.getMotorRevo(nServo, nMotorRevo);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "getMotorRevo failed!" << std::endl;
    return -1;
}

std::cout << "motor revo:" << nShaftRevo << std::endl;

return 0;

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++
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
int32_t nServo = 0;
int32_t nShaftRevo = 10000;

ret = pSys.setShaftRevo(nServo, nShaftRevo);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "setShaftRevo failed!" << std::endl;
    return -1;
}

return 0;

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++
WECONCNC_ERROR_E ret = WECONCNC_ERROR_SUCCESS;
int32_t nServo = 0;
int32_t nShaftRevo;

ret = pSys.getShaftRevo(nServo, nShaftRevo);
if (WECONCNC_ERROR_SUCCESS != ret) {
    std::cout << "getShaftRevo failed!" << std::endl;
    return -1;
}

std::cout << "shaft revo:" << nShaftRevo << std::endl;

return 0;