跳转至

多圈绝对值模块配置案例

1.新建项目并附加函数库

(1)在VS2017菜单“文件”→“新建”→ “项目”,启动创建项目向导。

image1

  1. 选择开发语言为“Visual C++”和程序类型“空项目”。
    image2

  2. 找到厂家提供的SDK库,路径如下(64位release库为例)。
    image3

    image4

函数库具体路径如下

image5

image6

  1. 复制【cnc_sdk】到项目目录。

image7

为了保证可以在VS调试器中运行,将相关平台的dll库复制到代码目录(如,项目名称为CncSdkDemo,则放在【{你的工程目录}\CncSdkDemo\CncSdkDemo】目录下),这里以64位平台为例

(将【{你的工程目录}\CncSdkDemo\CncSdkDemo\cnc_sdk\lib\x64】下的“CncApi.dll”和“CncApid.dll”复制到【{你的工程目录}\CncSdkDemo\CncSdkDemo\

image8

(5)进入项目的属性页面。

image9 在【VC++目录】选项中配置【包含目录】、【库目录】
image10 image11 image12 在【链接器】-【输入】中配置【附加依赖项】,需要用到CncApi.lib

image13 【确认】并【应用】
image14 2.编程

(1)【源文件】新建一个main.cpp
image15 image16 (2)查看函数手册,熟悉相关函数接口

image17 连接控制器接口:

函数名 功能
connect 连接控制器

配置相关接口函数:

函数名 功能
getAbsConfig 获取指定/全部的多圈绝对值设置数据
setAbsConfig 设置单个 /多个多圈绝对值配置的值

3.多圈绝对值设置操作

  1. 连接控制器
    void connect()
    {
        weconcnc::CCommApi *commApi = new weconcnc::CCommApi();
        std::string ipAddress = "192.168.54.98";
        uint16_t port = 9995;
        weconcnc::WECONCNC_ERROR_E result = commApi->connect(ipAddress, port);
    }
    
  2. 单个多圈绝对值配置方法:
    void setAbsConfig()
    {
        weconcnc::CProxySys *pSys = weconcnc::CProxySys::getInstance(commApi);
        weconcnc::ABS_CONFIG_FIELD eField = weconcnc::ABS_SCALE;
        std::string sParam = "";
        weconcnc::WECONCNC_ERROR_E ret = pSys->getAbsConfig(0, eField, sParam);
        if(weconcnc::WECONCNC_ERROR_SUCCESS != ret) {
            std::cout << "get abs config failed!" << std::endl;
        }
        else {
            std::cout << "abs config value is " << sParam << std::endl;
        }
    
        sParam = "0.00012";
        ret = pSys->setAbsConfig(0,eField,sParam);
        if (weconcnc::WECONCNC_ERROR_SUCCESS != ret) {
            std::cout << "set abs config failed!" << std::endl;
        }
        else {
            std::cout << "set abs config success!" << std::endl;
        }
    }
    
  3. 多个多圈绝对值配置:
    void setAbsConfigs()
    {
        weconcnc::CProxySys *pSys = weconcnc::CProxySys::getInstance(commApi);
        weconcnc::WECONCNC_ERROR_E ret = pSys->setAbsConfig(0, vecAbsConfig);
        if(ret != weconcnc::WECONCNC_ERROR_SUCCESS) {
            std::cout << "set abs config failed!" << std::endl;
        }
        else {
            std::cout << "set abs config success!" << std::endl;
        }
        weconcnc::CNC_ABS_CONFIG_T stCfg;
        ret = pSys->getAbsConfig(0, stCfg);
        if(ret != weconcnc::WECONCNC_ERROR_SUCCESS) {
            std::cout << "get abs config failed!" << std::endl;
        }
        else {
            std::cout << "Servo " << stCfg.nServo
            << " Scale=" << stCfg.dScale
            << " Lead=" << stCfg.dLead
            << " RR=" << stCfg.dRRNum << "/" << stCfg.dRRDen
            << " CW=" << stCfg.bCw << std::endl;
        }
    }