0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C++调用API函数库接口实现手轮配置

伺服与运动控制 来源:伺服与运动控制 2023-05-29 15:01 次阅读

本文以正运动技术具备专用手轮接口的运动控制器ZMC408CE为例,介绍手轮、手轮的作用及原理、控制器手轮接口接线以及手轮程序配置。

上节讲解了使用正运动basic语言进行手轮应用配置,本节主要讲解C++调用API函数库接口实现手轮配置。

01 手轮作用及原理 手轮也称手摇脉冲发生器,主要用于数控机床、立体加工中心、卧式加工中心、龙门加工中心等数控设备。当手轮旋转时,编码器产生与手轮运动相对应的信号,通过数控系统选定座标并对座标进行定位。 手动脉冲发生器它中心有轴的光电码盘,其上有环形通、暗的刻线,摇动手轮后,由光电发射和接收器件读取,获得2组正弦波信号HA、HB,每个正弦波相差90度相位差。由于HA、HB两信号相差90度,可通过A相在前还是B相在前,给出正转脉冲或反转脉冲去控制伺服电机正转或反转。 46e5385e-fc8d-11ed-90ce-dac502259ad0.png       02 手轮介绍

1.通过手轮上的“轴选择旋钮”选择需要移动的坐标轴;

2.通过“倍率选择旋钮”选择合适的移动倍(×1/×10/×100);

3.旋转“手轮摇柄”移动坐标轴。顺时针旋转为正向移动,逆时针旋转为负向移动,旋转速度快慢可以控制坐标轴的运动速度;

4.按钮“急停”,紧急停止手轮运动;

5.控制器手轮接口为双排标准DB15母头,需要手轮接头为双排标准DB15公头。

46f252f0-fc8d-11ed-90ce-dac502259ad0.png

03 控制器手轮接口接线

1.硬件介绍

案例采用ZMC408CE运动控制器,具备专用的手轮接口。

471bad94-fc8d-11ed-90ce-dac502259ad0.png

ZMC408CE是正运动技术推出的一款高性能EtherCAT总线运动控制器,核心技术采用了先进的FPGA技术,实现硬件位置比较输出、精准输出功能,保证连续轨迹加工的出色性能和稳定性,以及动态数据捕获的实时性,从而实现更加精准控制和提高生产效率和品质。

ZMC408CE支持EtherCAT总线轴 + 脉冲轴混合插补,可脱机或联机运行,可控电机轴数8轴,特殊型号提供16或32轴可选,支持ZDevelop + 多种高级上位机混合编程,可以实现点位运动、电子凸轮、直线插补、圆弧插补、连续轨迹加工和30+种机器人模型的控制。 ZMC408CE产品亮点 1.高性能处理器,提升运算速度、响应时间和扫描周期等;

2.一维/二维/三维、多通道视觉飞拍,高速高精;

3.位置同步输出PSO,连续轨迹加工中对精密点胶胶量控制和激光能量控制等;

4.多轴同步控制,多坐标系独立控制等;

5.EtherCAT同步周期可快至125us;

6.EtherCAT总线和脉冲轴混合插补;

7.直线插补、任意空间圆弧插补、螺旋插补、样条插补等;

8.应用灵活,可PC上位机开发,也可脱机独立运行;

ZMC408CE视频介绍

2.控制器手轮接口MPG定义

接口 引脚号 信号 说明
473198ca-fc8d-11ed-90ce-dac502259ad0.png 1 H-5V 5V电源输出正极,专为手轮供电
2 HA- 编码器A相信号(IN40)
3 HB- 编码器B相信号(IN41)
4 HEMGN 紧急停止信号(IN51)
5 NC 悬空
6 HX1 选择X1倍率(IN42)
7 HX10 选择X10倍率(IN43)
8 HX100 选择X100倍率(IN44)
9 HSU 轴选3(IN48)
10 HSV 轴选4(IN49)
11 EGND 5V电源输出负极,信号公共端
12 HSW 轴选5(IN50)
13 HSZ 轴选2(IN47)
14 HSY 轴选1(IN46)
15 HSX 轴选0(IN45)
注意:
1.5V电源输出仅为手轮供电,切勿为其他设备供电。
2.该接口中的所有信号均为数字输入信号,编号为IN(40-51)。

3.手轮接线参考

473f092e-fc8d-11ed-90ce-dac502259ad0.png

4.注意事项

手轮编码器轴接口接线原理如上图所示,手轮厂家的设计多种多样,请先查看手轮内部的设计图后与运动控制器确认正确后谨慎接线;请使用双绞屏蔽线,尤其是环境恶劣的场合,务必使屏蔽层充分接地。

04 函数接口指令说明 使用ZAux_Direct_Connect命令,将手轮连接到运动轴,指令说明如下表。

指令119 ZAux_Direct_Connect
指令原型 int32 __stdcall ZAux_Direct_Connect(ZMC_HANDLE handle,floatratio,int link_axis,int move axis)
指令说明 同步运动。电子齿轮,将当前轴的目标位置与idring_axis轴的插补矢量长度通过电子齿轮连接。
输入参数
参数名 描述
handle 连接句柄
ratio 比率,可正可负,注意是脉冲个数的比例
link_axis 连接轴的轴号(主轴)
move_axis 运动轴的轴号
输出参数 /
返回值 成功返回值为0,非0详见错误码说明
指令示例 同步运动
详细说明 1.连接的是脉冲个数,要考虑不同轴 UNITS 的比例。取消连接时用CANCEL。
2.假设连接轴0的 UNIST 为100,被连接轴1的 UNITS 为10。
3.使用 ZAux_Direct_Connect连接,比例 ratio 为1,当轴0运动s1=100时,轴1运动=s1*UNITS(0)*ratio/UNITS(1),此时运动1000。
4.比率可以通过重复调用指令动态变化。
5.常用于手轮使用。

05 C++程序配置

1.配置步骤

(1)参考以上手轮接线示意图正确连接手轮和控制器; (2)扫描文章末尾二维码,下载例程,使用Visual Studio 2022,打开C++手轮运动例程,运行之后根据型号选择EtherNET、串口、PCI、LOCAL任意一种接口连接控制器。 (3)配置轴号;不同控制器型号,手轮轴号,倍率和轴选择IN编号不一样,详情请参考控制器用户手册,本例程使用控制器型号为ZMC408CE,手轮接口轴号为8,该控制器手轮接口无可用默认AXIS轴号,必须进行映射才可以使用,映射避开脉冲轴号,此例程是将手轮映射到轴10。 (4)配置IO;根据需要赋予轴选(HSX,HSY,HSZ,HSU)和倍率(HX1,HX10,HX100)以及紧急停止 (HEMGN)功能;这些信号本质为数字输入信号,有固定的编号,但无固定的功能,需要ZDevelop开发;其名称为推荐配置的功能,轴选即为connect同步运动的被连接轴,倍率即connect比率。

(5)完成以上配置即可开始使用手轮。

2.程序运行界面

程序运行成功后会显示以下界面,未连接控制器之前,轴坐标和手轮轴坐标默认为0,手轮状态为“未连接”,手轮轴号为10,链接倍率为1,手轮轴脉冲方式为“脉冲+方向”,链接轴为“未选择”。

474f753e-fc8d-11ed-90ce-dac502259ad0.jpg

3.控制器链接 选择IP、串口,链接到控制器ZMC408CE,链接成功,手轮测试则会变成“已连接”,若失败则会有弹窗“链接失败”点击确定关闭弹窗,检查IP地址或串口地址重新链接。

475e946a-fc8d-11ed-90ce-dac502259ad0.png

(链接成功)

476b068c-fc8d-11ed-90ce-dac502259ad0.png (链接失败)

4.手轮轴操作

程序链接上控制器成功之后,会获取轴坐标和手轮轴位置。通过手轮的“轴选择”旋转按钮选择链接轴,如果链接成功,手轮链接状态会变成“已链接”,链接轴也会显示出所链接的轴号和链接倍率。 如果想要切换连接轴和链接倍率,只需要旋转手轮“轴选择”按钮和“倍率选择”按钮即可。点击停止按钮之后,会自动断开链接,此时手轮的“轴选择”和“倍率选择”按钮处于无效状态,只有点击继续后才会重新链接,建议在链接轴之前先选好链接倍率,否则可能会出撞机的危险,点击坐标清零则会将X、Y、Z、手轮的坐标全部清零。

47784dce-fc8d-11ed-90ce-dac502259ad0.png5.手轮轴轴号修改

此例程的手轮轴轴号绑定到轴10,如果要进行修改,可以在手轮设置中的手轮轴号,直接进行更改,手轮脉冲方式也是在此处进行修改。

6.手轮轴号映射

不同控制器的默认手轮轴接口不同,具体需要参考控制器手册,相同点是不管使用哪个型号的控制器都需要重新进行轴映射将手轮轴映射到其他轴号去。

在控制器手册中找到默认手轮接口轴号,使用ZAux_Direct_SetAtype(handle,重映射的轴号,0)将重映射的轴类型设置为0,还原轴设置, ZAux_Direct_SetAtype(handle,要修改的本地脉冲轴号,0)将要修改的本地脉冲轴号轴类型也设置为0,低版本不设置会报错。

使用本地轴映射指令ZAux_Direct_SetAxisAddress{ handle,重映射的轴号,(-1<<16) +要修改的本地脉冲轴号 }。

4782079c-fc8d-11ed-90ce-dac502259ad0.png

7.手轮轴参数配置 轴号映射参数修改完后,接着使用ZAux_Direct_SetAtype(handle,手轮轴轴号,3/6)进行修改手轮轴的类型,ATYPE=3正交编码器,ATYPE=6脉冲方向方式的编码器,设置好之后可在运行主界面进行切换。

使用ZAux_Direct_SetUnits(g_handle,手轮轴号,脉冲当量)根据实际需求修改手轮轴的脉冲当量。

479ab422-fc8d-11ed-90ce-dac502259ad0.png

8.建立手轮链接

查询控制器手册,找到手轮对应轴输入信号、倍率信号、急停信号,使用ZAux_Direct_GetIn(g_handle,输入口编号,&获取输入口的状态值)进行IO信号读取,这里运动轴是X、Y、Z对应控制器的0、1、2轴。

47ae999c-fc8d-11ed-90ce-dac502259ad0.png

通过IO信号的判断使用同步运动指令ZAux_Direct_Connect(g_handle,链接比率,手轮轴,运动轴),进行轴的链接、绑定,使用单轴运动停止指令ZAux_Direct_Single_Cancel(g_handle,运动轴,停止模式),断开轴链接。

47bcfdde-fc8d-11ed-90ce-dac502259ad0.png

9.手轮轴位置获取、清零

建立链接之后,需要使用ZAux_Direct_GetMpos(g_handle,手轮轴号,&showpos[手轮轴号])来获取,手轮轴的当前位置,并显示在界面上。

47d21dae-fc8d-11ed-90ce-dac502259ad0.png

使用ZAux_Direct_SetMpos(g_handle,手轮轴号,0)进行手轮坐标清零。

47e1f670-fc8d-11ed-90ce-dac502259ad0.png

本次,正运动技术EtherCAT运动控制器在数控加工手轮随动中的应用之C++,就分享到这里。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    8562

    浏览量

    150991
  • API
    API
    +关注

    关注

    2

    文章

    1494

    浏览量

    61924
  • 函数
    +关注

    关注

    3

    文章

    4325

    浏览量

    62552
  • C++
    C++
    +关注

    关注

    22

    文章

    2108

    浏览量

    73603

原文标题:EtherCAT运动控制器在数控加工手轮随动中的应用之C++

文章出处:【微信号:伺服与运动控制,微信公众号:伺服与运动控制】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    PS 2接口C 语言通信函数库设计

    深入分析PS/2 接口通信协议,实现C 语言通信函数库,可以方便地应用于PS/2 设备的使用和开发。程序在AVR 单片机上实现并通过检验,
    发表于 05-14 14:37 43次下载

    ZLGCAN接口函数库

    ZLGCAN接口函数库 数据结构VCI 函数库中定义了一些数据结构用于数据交换,在使用VCI 函数前应该先创建这些数据结构。在LabVIEW 中创建这些结构时应该使用
    发表于 03-29 14:01 56次下载

    C++教程之函数的递归调用

    C++教程之函数的递归调用 在执行函数 f 的过程中,又要调用 f 函数本身,称为
    发表于 05-15 18:00 35次下载

    C语言入门教程-函数库

    函数库 C语言本身具备最基本功能,所以C函数库就显得十分重要了。C语言本身甚至不提供从键盘读入和向屏幕输出的I/O
    发表于 07-29 10:40 1114次阅读

    系统调用函数库分析及实例

    作为用户我们极少接触系统调用,但是我们熟悉C 语言,对库函数调用并不陌生。C语言支持一系列库函数
    发表于 06-23 16:46 46次下载
    系统<b class='flag-5'>调用</b><b class='flag-5'>函数库</b>分析及实例

    PIC单片机的C语言应用下的函数库

    PICC编译器下的函数库调用函数库开发,更快更方便,更少的bug
    发表于 12-09 15:29 10次下载

    ARM汇编 C语言 C++ 相互调用

    如果对于C++中含有类的,可以在二次接口函数中生成临时对象来调用对应的功能函数,当然要根据实际
    发表于 01-19 14:06 1329次阅读

    linux_C函数库中文手册

    linux_C函数库中文手册linux_C函数库中文手册
    发表于 03-20 10:42 14次下载

    基于GE运动控制器型号及在函数库中应用

    GE 系列运动控制器提供DOS 下的C 语言函数库和Windows 下的动态链接,若为GUC 运动控制器且内嵌系统为WinCE 系统,运动控制器还会提供对应WinCE 下的动态链接
    发表于 10-11 17:44 33次下载

    标准C函数库的用法

    C标准函数库是所有符合标准的头文件的集合,以及常用的函数库实现程序,例如I/O 输入输出和字符串控制。不像 COBOL、Fortran 和 PL/I等编程语言,在
    的头像 发表于 03-02 11:27 5207次阅读
    标准<b class='flag-5'>C</b><b class='flag-5'>函数库</b>的用法

    C语言编程函数库分类汇总资源下载

    C语言编程函数库分类汇总资源下载
    发表于 04-15 16:40 16次下载
    <b class='flag-5'>C</b>语言编程<b class='flag-5'>函数库</b>分类汇总资源下载

    EE-128:C++中的DSP:从C++调用汇编类成员函数

    EE-128:C++中的DSP:从C++调用汇编类成员函数
    发表于 04-16 17:04 2次下载
    EE-128:<b class='flag-5'>C++</b>中的DSP:从<b class='flag-5'>C++</b><b class='flag-5'>调用</b>汇编类成员<b class='flag-5'>函数</b>

    LiquidCrystal_I2C函数库

    LiquidCrystal_I2C函数库(实用电源技术讲义)-【资源描述】: LiquidCrystal_I2C函数库 
    发表于 09-16 16:05 99次下载
    LiquidCrystal_I2<b class='flag-5'>C</b><b class='flag-5'>函数库</b>

    ZNetAdv配置函数库使用手册

    电子发烧友网站提供《ZNetAdv配置函数库使用手册.pdf》资料免费下载
    发表于 10-17 11:02 0次下载
    ZNetAdv<b class='flag-5'>配置</b><b class='flag-5'>函数库</b>使用手册

    Java调用C/C++动态dll操作串口实

    大家好,今天分享的是使用C/C++编写一个读取串口数据的代码,然后将其编译成Windows下的动态链接(.dll文件),然后写一个简单的java demo来调用
    的头像 发表于 05-23 15:41 906次阅读
    Java<b class='flag-5'>调用</b><b class='flag-5'>C</b>/<b class='flag-5'>C++</b>动态<b class='flag-5'>库</b>dll操作串<b class='flag-5'>口实</b>例