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

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

3天内不再提示

讲解矢量比较两种模式:等距周期比较输出与固定时间周期比较输出

伺服与运动控制 来源:正运动小助手 2023-03-06 15:29 次阅读

01 硬件介绍

ZMC408CE是正运动推出的一款多轴高性能EtherCAT总线运动控制器,具有EtherCAT、EtherNETRS232CAN和U盘等通讯接口,ZMC系列运动控制器可应用于各种需要脱机或联机运行的场合。

9d1b8e32-bbd6-11ed-bfe3-dac502259ad0.png

ZMC408CE支持8轴运动控制,最多可扩展至32轴,支持直线插补、任意圆弧插补、空间圆弧、螺旋插补、电子凸轮、电子齿轮、同步跟随等功能。 ZMC408CE支持8轴运动控制,可采用脉冲轴(带编码器反馈)或EtherCAT总线轴,通用IO包含24个输入口和16个输出口,部分IO为高速IO,EtherCAT最快100us的刷新周期。

ZMC408CE支持8个通道的硬件比较输出、硬件定时器、运动中精准输出,还支持8通道PWM输出,对应的输出口为OUT0-7,支持8个通道同时触发硬件比较输出,用于多通道的视觉飞拍场合等。 ZMC408CE支持PLC、Basic、HMI组态三种编程方式。PC上位机API编程支持C#C++LabVIEWMatlab、Qt、Linux、VB.Net、Python等接口。

ZMC408CE内置高精度PSO位置同步输出功能,在加工圆角与曲线时即使进行有减速调整,在高速加工的场合中也能控制激光输出的等间距输出。

02 PSO技术介绍

PSO(position synchronized output)即位置同步输出,本质是通过采集实时的编码器反馈位置(无编码器可使用输出的脉冲位置)与比较模式设定的位置进行比较,控制OP高速同步输出信号,PSO示意图如下。

9d5328ce-bbd6-11ed-bfe3-dac502259ad0.png

PSO一般与激光器(或点胶喷射阀等设备)同步输出信号进行相位同步,在运动轨迹的所有阶段以恒定的空间(或恒定时间)间隔触发输出开关,包括加速、减速和匀速段,从而实现脉冲能量均匀地作用在被加工物体上。

PSO功能的特点是能高速且稳定的输出信号,因为输出精度足够高,所以能够在整个运动轨迹中以固定的距离触发输出信号而不用考虑总体速度,即在直线部分以很快的速度运动,而在圆角部分减速的同时也能保证输出间距恒定。 通常圆角加工部分在整个加工过程中占有比较小的部分,这样在保证加工效果的同时,就可以最大限度地提高产能。

9d6a5c42-bbd6-11ed-bfe3-dac502259ad0.png

正运动的PSO功能调用ZAux_Direct_HwPswitch2函数接口实现,该函数采用硬件实现IO的高速比较输出,响应速度达到微秒级别,故名硬件比较输出。

03 C++语言MFC进行运动控制项目的开发

(一)新建MFC项目并添加函数库

注:本例程在VS2010编译环境下,基于.NET Framework 4.0框架创建的MFC窗体应用程序。

1.工具栏菜单“文件”→“新建”→“项目”,启动创建项目向导。

9d81e8e4-bbd6-11ed-bfe3-dac502259ad0.png

2.选择开发语言为“Visual C++”和.NET Framework 4以及MFC应用程序,填写好程序名以及选择好程序存放路径,点击确定。

9da3a010-bbd6-11ed-bfe3-dac502259ad0.png

3.点击下一步。

9db52ede-bbd6-11ed-bfe3-dac502259ad0.png

4.选择类型为“基于对话框”,点击下一步或者完成即可。

9dc99e82-bbd6-11ed-bfe3-dac502259ad0.png

(二)找到厂家提供的C++函数库文件

1.进入厂商提供的光盘资料,找到“8.PC函数”文件夹,并点击进入,找到C++函数库,路径如下(64位库为例)。

9dda4872-bbd6-11ed-bfe3-dac502259ad0.png

2.选择“函数库

2.1”文件夹。

9dea488a-bbd6-11ed-bfe3-dac502259ad0.png

3.选择“Windows平台”文件夹。

9dfb896a-bbd6-11ed-bfe3-dac502259ad0.png

4.根据需要选择对应的函数库,这里选择“64位库”。

9e0da53c-bbd6-11ed-bfe3-dac502259ad0.png

5.解压C++压缩包,里面有C++对应的函数库。

9e220036-bbd6-11ed-bfe3-dac502259ad0.png

6.函数库具体路径如下。

9e3756d4-bbd6-11ed-bfe3-dac502259ad0.png

7.将厂商提供的C++库文件以及相关文件复制到新建的项目中。

9e4e5a8c-bbd6-11ed-bfe3-dac502259ad0.png

(三)在项目中添加静态库和相关头文件

静态库:zauxdll.lib, zmotion.lib 相关头文件:zauxdll2.h, zmotion.h 1.先右击头文件,接着依次选择:“添加”→“现有项”。

9e6abc54-bbd6-11ed-bfe3-dac502259ad0.png

2.在弹出的窗口中依次添加静态库和相关头文件。

9e789edc-bbd6-11ed-bfe3-dac502259ad0.png

3.声明用到的头文件和定义控制器连接句柄。

9e8993b8-bbd6-11ed-bfe3-dac502259ad0.png

9e99d278-bbd6-11ed-bfe3-dac502259ad0.png

至此,项目新建完成。

(四)查看PC函数手册

用户需要从PC函数手册中获取运动控制开发使用的函数接口,对照手册说明使用,PC函数手册在光盘资料查看,具体路径如下:“光盘资料8.PC函数函数库2.1Motion函数库编程手册V2.1.pdf”。

9eb42812-bbd6-11ed-bfe3-dac502259ad0.png

(五)控制器网口连接函数接口

PC编程一般使用网口对控制器和工控机进行链接。ZAux_FastOpen();如果链接成功,该接口会返回一个链接句柄。通过操作这个链接句柄可以实现对控制器的控制。 ZAux_OpenEth()接口说明:

指令11 ZAux_FastOpen
指令原型 int32 __stdcall ZAux_FastOpen(int type, char *pconnectstring, uint32 uims ,ZMC_HANDLE * phandle)
指令说明 与控制器建立连接, 可以指定连接的等待时间
输入参数
参数名 描述
type 连接类型
type: 1-COM 2-ETH 4-PCI 5-MotionRT
pconnectstring 连接字符串:
type=1:COM口号
type=2:IP地址
type=4:卡号
type=5:无要求
uims 连接超时时间 uims;单位ms
输出参数
参数名 描述
phandle 控制器连接句柄
返回值 成功返回值为0,非0详见错误码说明
指令示例 1.串口连接:
ZMC_HANDLE phandle;//控制器连接句柄
Char comID[32]= "0";//串口ID
ZAux_FastOpen(1, comID,1000s ,&phandle);
2.网口连接例子:
ZMC_HANDLE phandle;//控制器连接句柄
Char EthID[32]= "192.168.0.11";//网口ID
ZAux_FastOpen(1, EthID,1000s ,&phandle);
详细说明 type设置为5,zmotion.dll版本要在3.8.8.50以上

项目应用截图:

9ec32dbc-bbd6-11ed-bfe3-dac502259ad0.png

(六)硬件比较输出函数接口

使用对下位机寄存器操作的指令操作链接句柄“g_handle”,对控制器进行寄存器内容取值,实时控制下位机相关的指令如下。

实时全局变量指令:ZAux_Direct_HwPswitch2硬件比较输出指令到位置后硬件自动触发op输出信号。

指令19 ZAux_Direct_HwPswitch2
指令原型 int32 __stdcall ZAux_Direct_HwPswitch2(ZMC_HANDLE handle,int Axisnum,int Mode, int Opnum, int Opstate, float ModeParal, float ModePara2, float Mode Para3 , float ModePara4)
指令说明 硬件位置比较输出2,4系列产品20170513以上版本支持。
ZMC306E/306N支持。
输入参数
参数名 描述
handle 连接标识
Axisnum 比较输出的轴号
Mode 模式5:矢量比较方式周期脉冲模式
ModePara1= 比较点坐标
ModePara2= 重复周期,一个周期内比较两次,先输出有效状态,在输出无效状态
ModePara3= 周期距离,每个这个距离输出Opstate,输出有效状态的距离(ModePara4)后还原为无效状态
ModePara4=输出有效状态的距离,(ModePara1-ModePara4)位无效状态距离
模式6:矢量比较方式周期模式,这种模式与HW_TIMER一起使用
ModePara1 = 比较点坐标
ModePara2 = 重复周期,一个坐标只比较一次
ModePara3= 周期距离,每隔这个距离输出一次
ModePara4 = 预留
Opnum 输出口编号。4系列out 0-为硬件位置比较输出
Opstate 第一个比较点的输出状态。0-关闭 1-打开
ModeParal 多功能参数
ModePara2 多功能参数
ModePara3 多功能参数
ModePara4 多功能参数

(七)硬件定时器函数接口

ZAux_Direct_HwTimer硬件定时器硬件比较输出后一段时间还原电平。

指令21 ZAux_Direct_HwTimer
指令原型 int32 __stdcall ZAux_Direct_HwTimer(ZMC_HANDLE handle,int mode, int cyclonetime, int optime, int reptimes, int opstate, int opnum)
指令说明 硬件定时器用于硬件比较输出后一段时见还原电平-4系列产品支持
输入参数
参数名 描述
handle 连接标识
mode 0停止,2-启动
cyclonetime 周期时间us单位
optime 有效时间us单位
reptime 重复次数
opstate 输出口变为非此状态后开始计时
opnum 必须支持比较输出的口
输出参数 /
返回值 成功返回值为0,非0详见错误码说明
指令示例 //周期调整为2,输出两次
ZAux_Trigger(g_handle);
ZAux_Direct_SetOp(g_handle, 0, 0);
ZAux_Direct_HwTimer(g_handle, 2, 1000000, 500000, 2, 0, 0);//输出口0变为on后,硬件定时器触发开始计时,500ms后切换为off;
ZAux_Direct_SetOp(g_handle, 0, 1);
详细说明 (1)HW_TIMER只有1个,每次调用会强制停止之前的调用。
(2)ZMC420SCAN每个输出口的HW_TIMER功能独立。
(3)ZMC3系列部分、4系列及以上产品支持此功能。
(4)OP和MOVE_OP操作会关闭正在进行的HW_TIMER脉冲,这样可以使用HW_TIMER来实现类似PWM的功能,OP输出打开脉冲输出,下一个OP输出关闭脉冲输出,当使用MOVE_OP精准输出时,可以实现精准的PWM输出无限脉冲功能。

04 MFC程序的运行和读写控制开发

(一)Demo交互界面如下

9ed8fe26-bbd6-11ed-bfe3-dac502259ad0.png

(二)例程功能介绍

1.矢量比较,周期距离脉冲(模式5)

9eeb2bf0-bbd6-11ed-bfe3-dac502259ad0.png

ZAux_Direct_HwPswitch2(ZMC_HANDLEhandle,intAxisnum,intMode,intOpnum,intOpstate,floatModePara1, floatModePara2,floatModePara3,floatModePara4)

(1)handle:控制器连接句柄 (2)Axisnum:比较轴号 (3)Mode:5-启动比较器 (4)Opnum:对应的输出口 (5)Opstate:第一个比较点的输出状态,认为是有效状态,反之认为无效状态 (6)Vectstart:比较点VECTOR_MOVED当前运动距离 (7)Repes:重复周期,一个周期内比较两次,先输出有效状态,再输出无效状态 (8)Cycledis:周期距离,每隔这个距离输出opstate,ondis后还原为无效状态 (9)Ondis:输出有效状态的距离,Cycledis-Ondis为无效状态距离 (10)ModePara1:矢量距离比较点坐标(当前运动距离) (11)ModePara2:重复周期,即有效状态个数 (12)ModePara3:周期距离,每隔一次有效状态距离 (13)ModePara4:有效状态距离(不能大于周期距离) 该模式主要功能为:ModePara1参数将比较点设置好之后,当碰到设置单轴矢量距离比较点,则输出一段设置好的周期距离脉冲。

该模式使用时需要指定高速输出口,将首个比较点的输出状态和比较轴设置好之后,再设置比较点(矢量距离比较点坐标,当前运动距离),设置好周期距离,重复周期,有效状态距离等。最后启动比较。紧接着驱动轴运动即可。 如下图所示,设置高速比较输出口为0,首个比较点的输出状态为1,设置比较轴为0。比较点为80,重复周期为5,周期距离为100,有效距离为20,即当轴矢量距离运动到80之后,每运动100的距离,就会输出设置好的周期位置脉冲。

9f0195de-bbd6-11ed-bfe3-dac502259ad0.png

示波器波形如图所示:由图可得当轴0与轴1在进行300,400的插补运动时,在矢量位置80,180,280,380,480时会输出设置好的周期位置脉冲。

9f1d4482-bbd6-11ed-bfe3-dac502259ad0.png

2.矢量比较,周期时间脉冲(模式6)

9f37ce24-bbd6-11ed-bfe3-dac502259ad0.png

ZAux_Direct_HwPswitch2(ZMC_HANDLEhandle,intAxisnum,intMode,intOpnum,intOpstate,floatModePara1,floatModePara2,floatModePara3,floatModePara4) (1)handle:控制器连接句柄 (2)Axisnum:比较轴号 (3)Mode:6-启动比较器 (4)Opnum:对应的输出口 (5)Opstate:第一个比较点的输出状态,认为是有效状态,反之认为无效状态 (6)Vectstart:比较点VECTOR_MOVED当前运动距离 (7)Repes:重复周期,一个周期内比较两次,先输出有效状态,再输出无效状态 (8)Cycledis:周期距离,每隔这个距离输出opstate,ondis后还原为无效状态 (9)Ondis:输出有效状态的距离,Cycledis-Ondis为无效状态距离 (10)ModePara1:矢量距离比较点坐标(当前运动距离) (11)ModePara2:重复周期,即有效状态个数 (12)ModePara3:周期距离,每隔一次这个距离输出一次定时器 (13)ModePara4:模式6里面,该参数无意义,填0或其他任意值 该模式主要功能为:ModePara1参数设置好比较点之后,当碰到设置单轴矢量距离比较点之后,则输出一段设置好的定时脉冲。

该模式使用时需要指定高速输出口,设置好首个比较点的输出状态和比较轴,再设置比较点(矢量距离比较点坐标,当前运动距离),设置好周期距离,重复周期,设置好硬件定时参数。最后启动比较。紧接着驱动轴运动即可。 如下图所示,设置高速比较输出口为0,首个比较点的输出状态为1,设置比较轴为0。比较点为50,重复周期为2,周期距离为100,周期时间为40,有效时间为20。即当轴矢量距离运动到50之后,每运动100的距离,就会输出一段设置好的定时脉冲。

9f4de15a-bbd6-11ed-bfe3-dac502259ad0.png

示波器波形如图所示:由图可得输出口OP(0)在矢量距离50,150时会输出一段设置好的定时脉冲。

9f66f3de-bbd6-11ed-bfe3-dac502259ad0.png

本次,正运动技术运动控制器PSO视觉飞拍与精准输出的C++开发(二):多轴PSO等距/周期输出,就分享到这里。






审核编辑:刘清

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

    关注

    31

    文章

    5363

    浏览量

    121041
  • PSO
    PSO
    +关注

    关注

    0

    文章

    49

    浏览量

    12964
  • C++语言
    +关注

    关注

    0

    文章

    147

    浏览量

    7024
  • EtherCAT控制器

    关注

    0

    文章

    17

    浏览量

    601

原文标题:运动控制器PSO视觉飞拍与精准输出的C++开发(二):多轴PSO等距/周期输出

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

收藏 人收藏

    评论

    相关推荐

    更改STM32定时周期后的输出疑问分析

    他先将STM32某定时器计数周期设为0xff,单向递增计数模式,OC比较值设为0x7F。 在某时刻将新的计数周期0x7F与
    发表于 05-11 13:56 1482次阅读
    更改STM32<b class='flag-5'>定时</b>器<b class='flag-5'>周期</b>后的<b class='flag-5'>输出</b>疑问分析

    st32的时基和比较输出问题

    我想问一下 为什么时基模式用推挽输出,而比较输出模式就要用复用推挽输出,我知道复用推挽
    发表于 07-18 20:56

    步进电机斜坡曲线使用定时器1输出比较

    RAM中。 (频率范围170 Hz至1.5 KHz)定时器时钟配置为1 MHz频率。输出模式设置为切换模式,极性设置为高电平有效。捕获比较
    发表于 10-25 10:40

    能不能让PWM输出周期比较大的波形?

    LM3S的PWM外设功能丰富,作用电机控制使用起来非常方面不过PWM输出的波形最低频率也是很好。能不能让PWM输出周期比较大的波形,比如2~5s的
    发表于 08-21 13:55

    STM32在一个计数周期无法触发2次比较中断怎么解决?

    在使用STM32G474 定时输出比较模式时,无法在一个计数周期内,发生2次中断,求帮助! 实验目的:使用
    发表于 08-05 07:24

    具有定时输出比较器电路图

    具有定时输出比较器电路图
    发表于 03-25 08:49 805次阅读
    具有<b class='flag-5'>定时</b><b class='flag-5'>输出</b>的<b class='flag-5'>比较</b>器电路图

    单极性SPWM的两种控制方法与过零点输出特性比较

    单极性SPWM的两种控制方法与过零点输出特性比较 摘要:对于采用SPWM的逆变器,其中单极性逆变方式仅用到一对高频开
    发表于 07-11 10:41 1.2w次阅读
    单极性SPWM的<b class='flag-5'>两种</b>控制方法与过零点<b class='flag-5'>输出</b>特性<b class='flag-5'>比较</b>

    两种空间矢量脉宽调制生成方法的分析与比较

    两种空间矢量脉宽调制生成方法的分析与比较
    发表于 03-30 18:24 11次下载

    PIC24F系列参考手册之带专用定时器的输出比较

    PIC24F 器件中的输出比较模块可以根据其工作模式,将定时器寄存器值与一个或比较寄存 器的
    发表于 06-24 07:20 8次下载
    PIC24F系列参考手册之带专用<b class='flag-5'>定时</b>器的<b class='flag-5'>输出</b><b class='flag-5'>比较</b>

    MSP430F5529输入捕获/输出比较

    Register)示例代码输入捕获暂未编写输出比较配置方法和原理当TAxCCTLn中CAP位为0时,此路定时器被选择为比较模式
    发表于 11-20 09:06 27次下载
    MSP430F5529输入捕获/<b class='flag-5'>输出</b><b class='flag-5'>比较</b>

    关于stm32输出比较不同模式的分析

    关于stm32输出比较不同模式的分析输出比较模式总共有6
    发表于 12-05 12:36 8次下载
    关于stm32<b class='flag-5'>输出</b><b class='flag-5'>比较</b>不同<b class='flag-5'>模式</b>的分析

    在滞回比较器中,如何修改电路使比较器的输出电压可变?

    。滞回比较器的输出电压通常是固定的阈值电压之间切换的,但是在某些应用中,我们可能需要使比较器的输出
    的头像 发表于 11-22 16:18 1575次阅读

    比较器输入端和输出端的关系

    产生一个输出信号。比较器通常有个输入端,一个称为非反相输入端(+),另一个称为反相输入端(-)。比较器的输出端通常有
    的头像 发表于 07-10 10:39 2660次阅读

    红石比较器闪烁原理是什么

    工作模式与结构 比较器有个输入端(a与b)和一个输出端(c) 。输入端a和b分别位于比较器的
    的头像 发表于 09-05 09:10 698次阅读

    红石比较两种模式的作用

    红石比较器是Minecraft中的一非常重要的红石元件,它用于比较个红石信号的强度,并根据比较结果
    的头像 发表于 09-05 09:17 628次阅读