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

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

3天内不再提示

分享一下运动控制器位置锁存功能的应用

伺服与运动控制 来源:正运动小助手 作者:正运动技术 2022-11-14 11:18 次阅读

今天,正运动小助手给大家分享一下运动控制器位置锁存功能的应用,以ZMC408CE运动控制器为例,介绍多种锁存模式的用法,用户可根据自身需求灵活选择。

01 锁存功能

锁存功能的作用就是当外部io信号触发时,立即响应,锁定当前的电机/编码器的位置,通常用来锁定流水线上碰到光纤传感器时的产品位置、锁定包装材料上色标的位置等。

2223dede-6279-11ed-8abf-dac502259ad0.png

一、锁存功能的特点:

1.支持编码器轴、总线轴、脉冲轴和虚拟轴锁存(不同型号的控制器支持锁存的轴类型不同);

2.支持单次锁存和高速连续锁存模式;

3.支持4通道同时锁存,分别为R0、R1、R2、R3四个锁存通道,最多支持8个锁存口同时锁存,锁存响应速度快;

4.带编码器反馈时锁存MPOS的值,没有带编码器反馈时锁存DPOS的值。

不同型号的控制器支持的锁存通道数不同,是否支持锁存功能与锁存对应的输入口参见硬件手册。

本文例子基于ZMC408CE控制器测试,此型号支持4个锁存通道,硬件接口为IN0-IN3。

通讯接口包含RS232RS485EtherNET以太网CAN总线、EtherCAT总线和U盘接口,板载8路差分脉冲输出接口(包含编码器输入),1个专用手轮接口,还提供了AD/DA模拟量接口。

ZMC408CE支持EtherCAT总线连接,支持最快500μs的刷新周期,支持最多达32轴运动控制(8脉冲轴+EtherCAT轴/编码器轴/虚拟轴),支持直线插补、任意圆弧插补、空间圆弧、螺旋插补、电子凸轮、电子齿轮、同步跟随、虚拟轴设置等;采用优化的网络通讯协议可以实现实时的运动控制。

ZMC408CE还支持8通道PWM输出,支持硬件比较输出、硬件定时器、运动中精准输出等。

225a5978-6279-11ed-8abf-dac502259ad0.png

二、实现锁存的步骤

1.锁存功能使用方法

(1)确定当前硬件条件是否满足锁存需求,需要确定锁存位置的轴,IO信号接入支持锁存的输入口IN;

(2)设置锁存输入映射口REG_INPUT,作用是将锁存的通道R0/R1/R2/R3对应到物理输入口IN,需要输入口支持锁存功能;

(3)设置锁存模式REGIST,需根据锁存的轴类型选择;

(4)等待锁存触发MARK / MARKB / MARKC / MARKD,锁存触发了变为真;

(5)锁存完成打印锁存位置信息REG_POS / REG_POSB / REG_POSC / REG_POSD

(6)可读取锁存位置起始坐标和结束坐标,锁存位置可被其他指令调用。

2.锁存相关指令

锁存相关指令一览表:

指 令 说 明 用 法
REGIST 设置锁存模式 REGIST(模式值)
REG_INPUTS 锁存通道映射到输入口 REG_INPUTS=$输入口编号
MARK 判断锁存是否触发 WAIT UNTIL MARK
MARKB 判断第二个锁存是否触发 WAIT UNTIL MARKB
MARKC 判断第三个锁存是否触发 WAIT UNTIL MARKC
MARKD 判断第四个锁存是否触发 WAIT UNTIL MARKD
REG_POS 保存锁存的测量反馈位置 读取/打印REG_POS
REG_POSB 返回锁存2的测量反馈位置 读取/打印REG_POSB
REG_POSC 返回锁存3的测量反馈位置 读取/打印REG_POSC
REG_POSD 返回锁存4的测量反馈位置 读取/打印REG_POSD
OPEN_WIN 锁存触发的开始坐标范围点 OPEN_WIN=POS
CLOSE_WIN 锁存触发的结束坐标范围点 CLOSE_WIN=POS

REG_INPUTS映射锁存输入、REGIST设置锁存的模式、MARK / MARKB / MARKC / MARKD判读锁存是否触发、REG_POS / REG_POSB / REG_POSC / REG_POSD成功锁存之后位置存储。

当锁存产生时,对应锁存通道的MARK / MARKB / MARKC / MARKD会被设置为ON,同时锁存到的位置会被存储在参数REG_POS / REG_POSB / REG_POSC / REG_POSD内。

三、REG_INPUTS映射说明

REG_INPUTS映射规则如下,REGIST锁存模式的设置需配合REG_INPUTS而设置。

229241ee-6279-11ed-8abf-dac502259ad0.png

例如:

REG_INPUTS = $3210,则表示R3,R2,R1,R0分别对应输入口3,2,1,0

REG_INPUTS = $1023,则表示R3,R2,R1,R0分别对应输入口1,0,2,3

REG_INPUTS = $1000,则表示R3,R2,R1,R0分别对应输入口1,0,0,0 之所以这样设置是因为REGIST模式匹配R0、R1、R2、R3信号虽然不是物理的IO通道,却能带来最大的灵活性。 输出信号R0实际可以对应设备上的IN(0)...IN(7)中的任意一个(可选的输入通道必须是硬件手册指定的锁存通道),或者R0和R3都对应同一个输入口。

四、REG_POS锁存位置说明

使用的本地IO,可以通过REG_INPUTS来锁存通道的映射,不同的锁存信号通道锁存的数据存储的位置不同,如下表,详情参见REGIST指令说明。

R信号 锁存状态 锁存数值
R0 Mark Reg_Pos
R1 MarkB Reg_PosB
R2 MarkC Reg_PosC
R3 MarkD Reg_PosD
Z 不定 不定

02 REGIST锁存模式

REGIST设置锁存模式,根据要锁存的轴类型选择合适的锁存模式,锁存模式参见下文,有单次锁存和连续锁存两种。

不同的锁存方式,锁存信号的触发标志不同,锁存位置数据存储的位置也不同。

不同轴类型支持的锁存通道:

(1)编码器轴、带反馈的脉冲轴类型一般采用R0,R1,Z脉冲这三种锁存;

(2)无反馈的脉冲轴和虚拟轴采用R0,R1锁存;

(3)EtherCAT或RTEX总线轴类型采用R2,R3锁存;

(4)另外EtherCAT总线可以使用驱动器自身的锁存模式,详情参见驱动器手册说明。

语法一:单次锁存

REGIST(mode)

mode:锁存方式如下表。

描 述
1 当Z脉冲上升沿时的绝对位置送到REG_POS
2 当Z脉冲下降沿时的绝对位置送到REG_POS
3 当输入信号R0上升沿的绝对位置送到REG_POS
4 当输入信号R0下降沿的绝对位置送到REG_POS
6 输入信号R0上升沿时的绝对位置送到REG_POS,Z信号上升沿时的绝对位置送到REG_POSB
7 输入信号R0上升沿时的绝对位置送到REG_POS,Z信号下降沿时的绝对位置送到REG_POSB
8 输入信号R0下降沿时的绝对位置送到REG_POS,Z信号上升沿时的绝对位置送到REG_POSB
9 输入信号R0下降沿时的绝对位置送到REG_POS,Z信号下降沿时的绝对位置送到REG_POSB
10 输入信号R0上升沿时的绝对位置送到REG_POS,输入信号R1上升沿时的绝对位置送到REG_POSB
11 输入信号R0上升沿时的绝对位置送到REG_POS,输入信号R1下降沿时的绝对位置送到REG_POSB
12 输入信号R0下降沿时的绝对位置送到REG_POS,输入信号R1上升沿时的绝对位置送到REG_POSB
13 输入信号R0下降沿时的绝对位置送到REG_POS,输入信号R1下降沿时的绝对位置送到REG_POSB
14 输入信号R1上升沿时的绝对位置送到REG_POSB(14以后150804以后版本支持,每个锁存通道独立,支持4通道锁存)
15 输入信号R1下降沿时的绝对位置送到REG_POSB
16 Z信号上升沿时的绝对位置送到REG_POSB
17 Z信号下降沿时的绝对位置送到REG_POSB
18 输入信号R2上升沿时的绝对位置送到REG_POSC
19 输入信号R2下降沿时的绝对位置送到REG_POSC
20 输入信号R3上升沿时的绝对位置送到REG_POSD
21 输入信号R3下降沿时的绝对位置送到REG_POSD

注意:上升沿和下降沿对应的是控制器内部的硬件状态。对于ZMC系列控制器而言,由于OFF状态有效,故从无信号到有信号是下降沿;对于ECI系列控制器而言,由于ON状态有效,从无信号到有信号是上升沿。

若仍然容易混淆,建议使用前先使用下文例程简单测试一下锁存边沿,再应用于项目中。

语法二:连续锁存

通过把模式加100来支持连续锁存,锁存结果存储到TABLE里面。

REGIST(100+mode, tableindex, numes)

mode:锁存方式。

tableindex:连续锁存的内容存储的table位置,第一个table元素存储锁存的个数,后面存储锁存的坐标,最多保存个数= numes-1,溢出时循环写入。

numes:占用的table个数。

连续锁存模式分别对两个通道进行连续锁存,可以实现上下边沿的连续锁存。

(ECI20150829以上固件支持,4系列控制器20170523以上固件支持)

100+mode:只能使用单一通道的mode,加100表示使用连续锁存。

描述
101 当Z脉冲上升沿时的绝对位置送到REG_POS
102 当Z脉冲下降沿时的绝对位置送到REG_POS
103 当输入信号R0上升沿的绝对位置送到REG_POS
104 当输入信号R0下降沿的绝对位置送到REG_POS
114 输入信号R1上升沿时的绝对位置送到REG_POSB
115 输入信号R1下降沿时的绝对位置送到REG_POSB
116 Z信号上升沿时的绝对位置送到REG_POSB
117 Z信号下降沿时的绝对位置送到REG_POSB
118 输入信号R2上升沿时的绝对位置送到REG_POSC
119 输入信号R2下降沿时的绝对位置送到REG_POSC
120 输入信号R3上升沿时的绝对位置送到REG_POSD
121 输入信号R3下降沿时的绝对位置送到REG_POSD
123 当输入信号R0上升沿的绝对位置送到REG_POSB
124 当输入信号R0下降沿的绝对位置送到REG_POSB
133 当输入信号R0上升沿的绝对位置送到REG_POS,下一次切换下降沿,轮流切换。
134 当输入信号R0下降沿的绝对位置送到REG_POS,下一次切换上升沿,轮流切换。
135 当输入信号R1上升沿的绝对位置送到REG_POSB,下一次切换下降沿,轮流切换。下一次切换下降沿,轮流切换。
136 当输入信号R1下降沿的绝对位置送到REG_POSB,下一次切换上升沿,轮流切换。

03 锁存例程

1.脉冲轴(不带反馈)/虚拟轴锁存

可使用R0或R1通道,脉冲轴ATYPE=1/7,虚拟轴ATYPE=0,锁存MPOS的值(没有反馈时MPOS为假,复制DPOS)。

带反馈的情况锁存真实的编码器反馈的MPOS值,若支持Z信号,则可使用Z信号的模式。

配置参考如下图:

22a3c612-6279-11ed-8abf-dac502259ad0.png

例程如下:

BASE(0)
ATYPE=1 '脉冲轴
UNITS=100
DPOS=0
SPEED=10
ACCEL=100
DECEL=100
REG_INPUTS=0 '将R0-R3都对应输入口0,信号接入IN(0)
REGIST(4) '选择R0锁存模式
TRIGGER '触发示波器
VMOVE(1) '轴运动
WAIT UNTIL MARK '等待锁存触发
PRINT REG_POS '打印锁存位置
END

从示波器采样的波形可以看出,IN(0)有信号触发锁存,REGIST(4)生效锁存此刻的DPOS位置,并存储到REG_POS。

22d92488-6279-11ed-8abf-dac502259ad0.png

上例其他条件不变,锁存模式改为REGIST(3),锁存触发的边沿发生变化。

22eb81b4-6279-11ed-8abf-dac502259ad0.png

2.脉冲轴(带反馈)/编码器轴锁存

可使用R0、R1或Z通道(必须带Z信号的设备才支持),脉冲轴ATYPE=4/5,编码器轴ATYPE=3/6,锁存MPOS的值。

例程如下:

BASE(0) 
ATYPE=4 '脉冲带编码器反馈
UNITS=100
SPEED=10
ACCEL=100
DECEL=100
DPOS=0
MPOS=0
REG_INPUTS=$0 '将R0-R3都对应输入口0 ,信号接入IN(0)
REGIST(15) '选择R1锁存模式
TRIGGER
VMOVE(1) '轴运动
WAIT UNTIL MARKB '等待锁存触发
PRINT REG_POSB '打印锁存位置
END

从示波器采样的波形可以看出,IN(0)有信号触发锁存,锁存此刻的MPOS位置,并存储到REG_POSB。

22ff6634-6279-11ed-8abf-dac502259ad0.png

3.多轴位置锁存

锁存多轴的位置时,需要分别对每个轴设置锁存,下例插补运动中锁存两个轴的位置。

例程如下:

BASE(0,1)
ATYPE=1,1 '脉冲轴
UNITS=100,100
DPOS=0,0
SPEED=10,10
ACCEL=100,100
DECEL=100,100
REG_INPUTS=$0 '将R0-R3都对应输入口0,信号接入IN(0)
REGIST(4) AXIS(0) '轴0选择R0锁存模式
REGIST(4) AXIS(1) '轴1选择R0锁存模式
TRIGGER '触发示波器
MOVE(1000,800) '轴运动
WAIT UNTIL MARK(0) AND MARK(1) '等待锁存触发
PRINT REG_POS(0), REG_POS(1)       '打印轴0,轴1的锁存位置
END

231dfa9a-6279-11ed-8abf-dac502259ad0.png

注意:多轴使用同一个锁存硬件输入口时,需采用相同的锁存R通道(如上例,模式3/4均可),需要使用不同R通道时,则需要映射到不同的硬件输入口上。

4.连续锁存模式

持续锁存信号触发后的位置,以上的轴类型均支持连续锁存模式,建议开单独任务执行连续锁存程序,不干扰其他程序的运行,可通过TABLE寄存器随时读取到锁存的次数和位置数据。

例程如下:

BASE(0)
ATYPE=1 '脉冲轴
UNITS=100
DPOS=0
SPEED=10
ACCEL=100
DECEL=100
REG_INPUTS=$0 '将R0-R3都对应输入口0,信号接入IN(0)
TRIGGER '触发示波器
VMOVE(1) '轴运动
REGIST(100+4,0,100) '连续锁存,R0通道,table(0)保存锁存次数,table(1-100)存储每次锁存的数据,超过99次后,table(0)清0,重新从table(1)记录数据WAIT UNTIL MARK

示波器捕捉连续锁存的位置数据:不需要WHILE循环就能实现连续锁存。

233a7d28-6279-11ed-8abf-dac502259ad0.png

寄存器窗口读取锁存的次数和位置数据。

23552e7a-6279-11ed-8abf-dac502259ad0.png

5.总线驱动器锁存

可使用R2、R3通道,脉冲轴ATYPE=4/5,EtherCAT和RTEX总线均支持,轴类型ATYPE=65/50,锁存MPOS的值。

采用EtherCAT总线驱动器,可使用控制器提供的锁存模式,配置方法与前文类似;也可以使用EtherCAT总线驱动器自带的锁存模式(需参考驱动器手册完成配置)。

采用EtherCAT总线驱动器自带的锁存模式,选择驱动器支持锁存的探针,接入锁存信号;例如下方驱动器,有两个探针信号输入。

236f26cc-6279-11ed-8abf-dac502259ad0.png

注意:驱动器PDO需包含60b8h锁存的数据字典,DRIVE_PROFILE直接选择带锁存的模式测试。

例如:DRIVE_PROFILE=11,PDO配置情况如下,更多模式参见DRIVE_PROFILE指令说明。

2391b0f2-6279-11ed-8abf-dac502259ad0.png

锁存模式采用REGIST提供的模式(需测试哪些模式支持),触发驱动器锁存之后,驱动器自行将锁存位置传到对应的REG_POS / REG_POSB / REG_POSC / REG_POSD,对应MARK变为真,用户无需通过驱动器数据字典获知。

例程如下:

'********************************************************************************************
'总线初始化使能程序,初始化成功方可运行下方锁存程序
'初始化配置驱动器PDO需包含锁存的数据字典,DRIVE_PROFILE选择带锁存的模式测试
'********************************************************************************************
RAPIDSTOP
WAITIDLE
DIM num,AXIS_Max,TEMP
FOR num=0 TO 7 STEP 1
   BASE(num)
   ATYPE(num)=0
   AXIS_ADDRESS(num)=(-1<<16)+num
   ATYPE(num)=0
NEXT
num=0
SLOT_SCAN(0)
IF RETURN THEN
   ?"总线扫描成功","设备连接数:"NODE_COUNT(0)
   'i为槽位号,位轴数
   FOR i=0 to NODE_COUNT(0)-1
      AXIS_Max=NODE_AXIS_COUNT(0,i)'单个设备连接总数
      ?"AXIS_Max="AXIS_Max
      IF AXIS_Max<>0THEN
         FOR j=0 TO AXIS_Max-1
            AXIS_ADDRESS(num)=(i<<16)+num+1
            ATYPE(num)=65        '轴映射最后一步
            'units(num)=2^23/360        '单轴脉冲当量设置
            DRIVE_PROFILE(num)=11    '设置PDO功能
            disable_group(num)      '每轴单独分组
            num=num+1          '当前设备总轴数
         NEXT
      ELSE
         ?"当前设备无轴"
         END
      ENDIF
   NEXT
   ?"轴映射完成!总轴数:"num  
ELSE
   ?"总线扫描失败"
   END
ENDIF
DELAY(100)
SLOT_START(0)
IF RETURN THEN
   ?"总线开启成功"
   DELAY(100)
   DATUM(0)'清除所有轴错误状态
   DELAY(100)
   ?"开始进行轴使能"
   FOR i=0 to num-1
      base(i)
      AXIS_ENABLE=1'单轴使能
   NEXT
   WDOG=1'轴使能总开关开启
   ?"轴使能完成"
ELSE
   ?"总线开启失败"
ENDIF
?"配置完成"
adasda()  '调用锁存函数
END
'********************************************************************************************
'锁存函数
'选择驱动器支持锁存的探针,接入锁存信号
锁存模式采用REGIST提供的模式,触发锁存之后,驱动器将锁存位置传到REG_POS 
'********************************************************************************************
WHILE 1
   IF OP(0) = ON THEN
      OP(0, OFF)
      temp=-1
   ENDIF
      temp=0
WEND
GLOBAL sub adasda()
   dim num, temp
   num=1
   temp=0
   BASE(0)
   REGIST(100+3,0,100)AXIS(0)' 自动循环,不需要再写入到while循环中,table(0)保存锁存次数,table(1-100)存储每次锁存的数据超过99次后,table(0)清0,重新从table(1)记录数据
   'REGIST(3)
   WHILE 1
      ?"*********************************************************"         
      WA 10
      ?"reg_pos="REG_POS,"锁存值TABLE="TABLE(num),"占用TABLE="TABLE(0)       '打印
      ?"驱动器探针模式="NODE_PDOBUFF(0,0,$60B8,0,6)
      ?"驱动器探针状态="NODE_PDOBUFF(0,0,$60B9,0,6)
      ?"驱动器锁存值="NODE_PDOBUFF(0,0,$60BA,0,7)
      IF num=100 THEN
         num=1
      ELSE
         num=num+1
      ENDIF
      WA 100     '延时1ms,防抖
   wend
ENDSUB

采用连续锁存模式REGIST(100+3,0,100),使用TABLE(0)开始的100个空间保存锁存数据,其中TABLE(0)保存的是连续锁存的次数,TABLE(1)- TABLE(99)保存每次锁存的位置。

23bec4f2-6279-11ed-8abf-dac502259ad0.png

23f09a04-6279-11ed-8abf-dac502259ad0.png






审核编辑:刘清

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

    关注

    16

    文章

    318

    浏览量

    34868
  • 编码器
    +关注

    关注

    45

    文章

    3679

    浏览量

    135399
  • 运动控制器
    +关注

    关注

    2

    文章

    411

    浏览量

    24825

原文标题:运动控制器位置锁存功能的应用

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

收藏 人收藏

    评论

    相关推荐

    运动控制器PSO位置同步输出():硬件平台与PSO指令简介

    ZMC406和ZMC460N这两款控制器同属高系列,功能强大,能满足多种场合的需求,支持直线插补、连续插补、任意圆弧插补、空间圆弧、螺旋插补、电子凸轮、电子齿轮、位置
    的头像 发表于 07-18 13:55 3156次阅读
    <b class='flag-5'>运动</b><b class='flag-5'>控制器</b>PSO<b class='flag-5'>位置</b>同步输出(<b class='flag-5'>一</b>):硬件平台与PSO指令简介

    的作用

    数码管的动态显示截取了部分程序,使用了74hc573,但是我觉得去掉程序照样可以执行
    发表于 03-11 16:59

    高性能多轴运动控制器DMC2410功能简介

    功能,同时还增加了编码位置位置比较等高级功能
    发表于 09-01 06:26

    请问一下运动控制卡中伺服电机的规划位置与编码位置的区别是什么?

    请问一下运动控制卡中伺服电机的规划位置与编码位置的区别是什么?
    发表于 10-12 11:24

    的相关资料分享

    前言在学习了基本原理后,剩下就是对各个外设以及对单片机寄存的相关学习,如果没有看过之前对
    发表于 12-03 08:05

    简单了解一下74HC573

    简单了解一下74HC57374HC573
    发表于 01-12 06:28

    地址,地址是什么意思

    地址,地址是什么意思   地址
    发表于 03-09 09:49 4908次阅读

    器使用总结

    (Latch)是种对脉冲电平敏感的存储单元电路,它们可以在特定输入脉冲电平作用改变状态。
    发表于 01-31 13:57 1.2w次阅读
    <b class='flag-5'>锁</b><b class='flag-5'>存</b>器使用总结

    分析一下SR的原理

    作为电路设计者,很多场合都会用到,今天和大家分析一下SR
    的头像 发表于 08-20 17:30 6980次阅读
    分析<b class='flag-5'>一下</b>SR<b class='flag-5'>锁</b><b class='flag-5'>存</b><b class='flag-5'>器</b>的原理

    运动控制器位置功能的应用

    今天,正运动小助手给大家分享一下运动控制器位置
    的头像 发表于 11-07 10:57 1291次阅读
    <b class='flag-5'>运动</b><b class='flag-5'>控制器</b><b class='flag-5'>位置</b><b class='flag-5'>锁</b><b class='flag-5'>存</b><b class='flag-5'>功能</b>的应用

    硬件位置比较输出和编码:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(六)

    运动硬件位置比较输出和编码功能介绍。
    的头像 发表于 12-27 14:58 543次阅读
    硬件<b class='flag-5'>位置</b>比较输出和编码<b class='flag-5'>器</b><b class='flag-5'>锁</b><b class='flag-5'>存</b>:EtherCAT超高速实时<b class='flag-5'>运动</b><b class='flag-5'>控制</b>卡XPCIE1032H上位机C#开发(六)

    电路中的中间是什么元件

    电路概述 定义与功能 (Latch)是数
    的头像 发表于 07-23 11:29 447次阅读

    的组成、功能及应用

    (Latch)是种具有记忆功能的数字电路元件,用于存储和保持数字信号的状态。
    的头像 发表于 07-23 11:32 3366次阅读

    d解决了sr的什么问题

    存在些差异,D定程度上解决了SR
    的头像 发表于 08-28 09:16 713次阅读

    SR功能有哪些?

    信号满足定的条件时,SR可以将输入信号存储在内部,并通过输出端将存储的信息传递给其他电路。 保持功能 SR
    的头像 发表于 08-28 10:55 1196次阅读