今天,我们来讲解一下正运动技术运动控制卡应用开发教程之VC6.0。

  在正式学习之前,我们先了解一下正运动技术的运动控制卡ECI2418和ECI2618。这两款产品分别是4轴,6轴运动控制卡。

  

  

  

  ECI2418支持4轴脉冲输入与编码器反馈,板载24点输入,16点输出,2AD,2DA,支持手轮接口,其中特定输出支持高速PWM控制。

  

  

  

  ECI2618支持6轴脉冲输入与编码器反馈,板载24点输入,16点输出,2AD,2DA,支持手轮接口,其中特定输出支持高速PWM控制。

  

  

  

  ECI2418,ECI2618均使用同一套API函数,均支持C、C++、C#、LabView、Python、Delphi等开发语言,支持VC6.0、VB6.0、Qt、.Net等平台,支持Windows、Linux、WinCE、iMac等操作系统。

  

   一、运动控制卡VC6.0开发流程

  

  1、打开 VC++6.0,新建一个工程。

  

  

  

  2、选择“ MFC APPWizard(exe)”,选择 工程保存路径,设置 工程名,选择 确定。

  

  

  

  3、在应用程序类型 选择基本对话框,完成项目新建。

  

  

  

  4、将产品配套光盘“ ..\函数库\dll”文件夹中的 动态链接库“ zmotion.dll、zauxdll.dll”、 头文件“ zauxdll2.h”和 lib文件“ zauxdll.lib”复制到工程文件夹中。

  

  

  

  5、选择“Project”菜单下的“Settings…”菜单项。

  6、切换到“Link”标签页,在“Object\library modules”栏中输入lib文件名:zauxdll.lib。

  

  

  

  7、在应用程序文件中加入函数库头文件的声明,如:#include “zauxdll2.h”,

  

  

  

  8、至此,用户就可以在VC6.0中调用函数库中的任何函数,开始编写应用程序, 具体函数的用法的功能可以参考光盘资料里面的:ZMotion PC函数库编程手册。

  

  

  

  9、参考ZMotion PC函数库编程手册的链接控制器的函数说明,在 ECIDlg:OnInitDialog()函数中添加链接控制器代码 ZAux_OpenEth(“192.168.0.11”,&g_handle);即可链接控制器。

  

  

  

  

  10、通过MOVE按钮,控制控制器进行插补运动。

  (1)右键MOVE按钮,选择属性,设置按钮ID。

  

  

  

  (2)右键MOVE按钮选择事件。

  

  

  

  (3)新建相关事件。

  

  

  

  4)在事件处理函数中添加插补运动函数。

  

  

  

  11、编译运行就可以通过PC控制控制器了。

  

  如果编译报错:无法打开预编译的头文件:没有这样的文件或目录。

  请选择“Project”菜单下的“Settings…”菜单项,然后选择c/c++进行如下设置。

  

  

  

   二、VC6.0例程讲解

  

  1、在我们的光盘资料里有很多VC6.0的例程,通过这些历程可以更容易的上手我们的控制器。

  

  

  

  2、单轴运动例程

  a、通过以太网链接到指定IP的控制器;

  b、设置运动轴参数;

  c、选择运动轴对象;

  d、选择运动方式,实现持续运动和寸动;

  

  

  

  3、实现步骤

  

   (1)搜索IP,链接控制器。

  A、先将相关控件拖拽到UI界面,并设置对应的事件处理函数。

  

  

  

  B、下拉框事件处理函数,实现自动搜索IP。

  先根据ZMotion PC 编程手册,在下拉框事件处理函数添加控制器IP搜索函数“ZAux_SearchEthlist()”,然后将获取到的IP字符串进行解析,具体解析方法请参考例程。

  

  

//自动搜索IPvoid CECIDlg::OnDropdownIPList(){/*自动搜索IP地址*/char buffer[10240];int32 iresult;/*搜索当前网段下的 IP 地址 详情请参考:zmotion pc 编程手册*/iresult = ZAux_SearchEthlist(buffer, 10230, 100);if(ERR_OK != iresult){return;}CComboBox *m_pEthList;m_pEthList = (CComboBox *)GetDlgItem(IDC_IPList);if(NULL == m_pEthList){return;}/*从字符串转换成IP*/int ipos =0;const char * pstring;pstring = buffer; for(int j= 0; j< 20;j++){char buffer2[256];buffer2[0] = '\0'; /*跳过空格*/while(' ' == pstring[0]){pstring++;} ipos = sscanf(pstring , "%s", &buffer2);if(EOF == ipos){break;}/*跳过字符*/while((' ' != pstring[0]) && ('\t' != pstring[0]) && ('\0' != pstring[0])){pstring++;}if(CB_ERR != m_pEthList->FindString(0, buffer2)){continue;}if('\0' == buffer2){return;}/*加入*/m_pEthList->AddString(buffer2);}return;}

  

  C、点击链接按钮链接控制器。

  根据ZMotion PC 编程手册,在链接按钮点击事件处理函数中添加网口连接控制器的函数“ZAux_OpenEth()”,即可实现链接控制器的功能。

  

  

  

  D、点击断开按钮断开链接控制器。

  根据ZMotion PC 编程手册,在断开按钮点击事件处理函数中添加断开链接控制器的函数“ZAux_Close()”,即可实现断开链接控制器的功能。

  

  

  

   (2)选择轴,并对所选择的dpos和当前速度以及运动状态进行监控。

  A、先将相关控件拖拽到UI界面,并设置对应的事件处理函数。

  

  

  

  B、通过X、Y、Z、R 4个单选按钮的事件处理函数,实现对轴的选择。

  

  

  

  C、通过定时器实现对轴状态的实时更新。

  

  

  

  (3)实现in0-in7,out0-out7状态的读取。

  

  

  

  使用接口ZAux_GetModbusIn() 和ZAux_GetModbusOut(),对io状态进获取。并封装成一个子函数将该函数添加到定时器超时处理函数中,用于io状态的更新。

  

  

//IO监控

void CECIDlg::IOGet()

{

uint8 in, out, i=0,j=0,k=0;

char  buff[128]={0};

/*获取输入口状态*/

ZAux_GetModbusIn (g_handle, 0, 7, &in);  //获取in0-in7状态

/*十进制转二进制*/

itoa(in, buff, 2);

j=0;

for( i=0; i<8; i++)

{

if((48 == buff[i])||(49 == buff[i]))

{

j++;

}

}

for(i=0 ; i<(8-j); i++)

{

for(k=7; k>0; k--)

{

buff[k] = buff[k-1];

}

buff[0]=48;

}

sprintf(buff, "输入口IN0-7 状态:%c %c %c %c %c %c %c %c", buff[7], buff[6],buff[5],buff[4],buff[3],buff[2],buff[1],buff[0]);

GetDlgItem( IDC_IN )->SetWindowText( buff );

/*获取输出口状态*/

ZAux_GetModbusOut (g_handle, 0, 7, &out);//获取out0-out7状态

/*十进制转二进制*/

itoa(out, buff, 2);

j=0;

for( i=0; i<8; i++)

{

if((48 == buff[i])||(49 == buff[i]))

{

j++;

}

}

for(i=0 ; i<(8-j); i++)

{

for(k=7; k>0; k--)

{

buff[k] = buff[k-1];

}

buff[0]=48;

}

sprintf(buff, "输出口OUT0-7状态:%c %c %c %c %c %c %c %c",buff[7], buff[6],buff[5],buff[4],buff[3],buff[2],buff[1],buff[0]);

GetDlgItem( IDC_OUT )->SetWindowText( buff );

}

  

  (4)对控制器参数进行设置。

  A、先将相关控件拖拽到UI界面,并设置参数生效按钮的事件处理函数。

  

  

  

  B、设置各个编辑框的成员变量,先右键编辑框选择建立类导向,再选择成员变量进行设置。

  

  

  

  C、然后在参数生效按钮的事件处理函数中添加参数设置的相关函数接口,对控制器参数进行设置。

  

  

  

  (5)控制控制器运动。

  A、在UI界面再添加两组单选框、寸动距离编辑框,以及两个按钮。

  

  

  

  B、两组单选框用于运动方向和运动方式的设置,通过他们的事件处理函数对标志位变量m_moveatype和m_movedir进行设置。

  

  

  

  C、通过启动按钮的事件处理函数来启动控制器进行运动。

  

  

  

  D、通过停止按钮的事件处理函数来停止控制器运动。

  

  

  

  (6)编译运行演示。

  A、编译运行示教例程

  

  

  

  B、同时通过ZDevelop软件连接同一个控制器,对运动控制效果进行观察。

  以下是轴参数的显示,IN/OP显示,示波器中 DPOS MSPEED显示。

  

  

  

  今天,正运动技术运动控制卡应用开发教程之VC6.0就分享到这里。更多精彩内容,请关注我们的公众号。 本文由正运动小助手原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。

  

运动控制卡应用开发教程之VC6.0相关推荐

  1. Linux qt 运动控制卡,运动控制卡应用开发教程之VB6.0

    我们主要从VB6.0的项目新建.函数库引用和PC函数使用方面讲起,最后通过项目实战--总线初始化例程讲解,来让大家熟悉它的项目开发. 在正式学习之前,我们先了解一下正运动技术的运动控制卡ECI2418 ...

  2. 运动控制卡应用开发教程之VB6.0

    今天,正运动小助手为大家分析一下应用VB6.0开发一个总线初始化的运动控制应用. 我们主要从VB6.0的项目新建.函数库引用和PC函数使用方面讲起,最后通过项目实战--总线初始化例程讲解,来让大家熟悉 ...

  3. wince 开发_正运动技术运动控制卡应用开发教程之Python

    众所周知,Python作为一门面向对象的新兴开发语言,具有完善的基础代码库,实用性与代码可读性强,被越来越多的人应用于智能装备的运动控制. 今天正运动技术与大家分享一下运动控制卡应用开发教程之Pyth ...

  4. python 运动控制卡_运动控制卡应用开发教程之Linux

    今天,正运动技术为大家分享一下运动控制卡应用开发教程之Linux.我们将从新建Qt项目,添加函数库讲起,再详细讲解函数的用法,最后通过一个连续插补例程讲解来了解项目实操. 在正式学习之前,我们先了解一 ...

  5. 运动控制卡的函数库与Linux,运动控制卡应用开发教程之ROS(下)

    在正式学习之前,我们先了解一下正运动技术的运动控制卡ECI2418和ECI2618.这两款产品分别是4轴,6轴运动控制卡. ECI2418支持4轴脉冲输入与编码器反馈,板载24点输入,16点输出,2A ...

  6. 运动控制卡应用开发教程之LabVIEW

    今天,我们来讲解一下正运动技术运动控制卡应用开发教程之LabVIEW. 在正式学习之前,我们先了解一下正运动技术的运动控制卡ECI2418和ECI2618.这两款产品分别是4轴,6轴运动控制卡. EC ...

  7. 运动控制卡应用开发教程之MATLAB

    今天,正运动小助手给大家分享一下运动控制卡应用开发教程之MATLAB.  一 ECI2828硬件介绍 ECI2828系列运动控制卡支持多达16 轴直线插补.任意圆弧插补.空间圆弧.螺旋插补.电子凸轮. ...

  8. 运动控制卡应用开发教程之C++

    今天,正运动技术为大家分享一下应用C++开发一个多段连续插补的运动控制应用. 我们主要从新建MFC项目,添加函数库讲起,再了解PC函数用法,最后通过项目实战--连续插补运动例程讲解,来让大家熟悉C++ ...

  9. EtherCAT运动控制卡开发教程之python

    众所周知,Python作为一门面向对象的新兴开发语言,具有非常完善的基础代码库,更注重实用,同时代码可读极强,编写完程序即可直接运行,被越来越多的人广泛将它用于机器视觉和自动化控制. 今天正运动技术与 ...

最新文章

  1. php mysql网站导航跳转_PHP微信公众平台跳转网页实现定位思路 By:阿尚
  2. 【Git】cannot create directory invalid argument
  3. 15_torch.sigmoid,torch.nn.Sigmoid之间的区别
  4. 进程资源限制(rlimit)
  5. 元素在父元素内垂直居中的思路
  6. 编译 php mysql 依赖包_MySQL 5.5.15源码包编译安装
  7. linux CentOS7 erlang安装
  8. 浙江大学PTA 数据结构 习题2.2 数组循环左移 (20 分)
  9. layer模态窗简单使用
  10. php web表格导出,javascript将web表格导出成excel
  11. 安全云服务的定义和特征
  12. 详解web容器 - Jetty与Tomcat孰强孰弱
  13. 玩转大麦盒子airplay
  14. 读书笔记 ---《偷影子的人》
  15. 出口退税的操作明细流程
  16. php session fixation,Session Fixation 攻防实战(图)
  17. 进销存设计与分析_库存汇总表(13)
  18. 2021互联网秋招,有哪些值得投的好公司?
  19. 注册用户数破亿 平安金管家APP成全球寿险首个过亿应用
  20. 正则化,岭回归Shrinkage,lasso稀疏性推导和论文总结

热门文章

  1. python ffmpeg pipe_Python子进程中的ffmpeg – 无法为’pipe:’找到合适的输出格式
  2. 关于为什么EXCEL单元格输入文字,但文字框显示出来是空白的
  3. 英国推荐信在申请留学中的作用
  4. 虚拟化管理平台的选择:开源软件 or 商业软件?
  5. Sumati GameFi生态纵览,神奇世界中的元素设计
  6. C语言-简单的学生成绩统计输入输出
  7. Thinkphp5汉字转拼音
  8. 我是如何建立一个Google代理搜索服务(GuSou)的
  9. 单片机毕设 自动晾衣架设计与实现(源码+硬件+论文)
  10. 中国这家企业实力太强,新能源汽车巨头特斯拉都必须选择它