|
类型 |
位置锁存指令 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
描述 |
REGIST指令用来锁存轴的测量反馈位置。
支持编码器轴、总线轴锁存,不同型号的控制器支持锁存的轴类型不同,4系列及以上控制器最新固件支持虚拟轴、脉冲轴锁存。 EtherCAT支持驱动器锁存,此时使用驱动器IO点实现锁存,具体模式查看指令语法。 Rtex只支持控制器锁存。 4系列及以上控制器支持4锁存通道。 4个通道指MARK、MARKB、MARKC、MARKD,通过REG_INPUTS 指定锁存输入口对应的锁存通道。 锁存输入口432:2个,432N:4个,412:8个。 支持EtherCAT驱动器锁存与控制器锁存同时使用,需要有4锁存通道功能。
当锁存产生时,轴状态MARK会被设置为ON,同时锁存到的位置会被存储在参数REG_POS内。 每个轴有输入信号R0、R1、EZ信号可以使用锁存功能。当使用两个信号锁存时,第二个信号锁存使用MARKB和REG_POSB。 R0,R1输入一般对应到输入口0和1,详细请查看控制器的硬件手册中通用输入章节。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
语法 |
REGIST(mode) mode:锁存方式 上升下降沿是以控制器内部状态而言。如果设置成上升沿触发,则锁存会在外部输入口由导通状态进入截止状态的一瞬间触发;如果设置成下降沿触发,则锁存会在外部输入口由截止状态进入导通状态的一瞬间触发;具体要设置成上升沿还是下降沿触发,要根据外部输入口信号跳变的实际需求。 脉冲轴类型一般采用R0,R1,Z脉冲这三种锁存;总线轴类型采R2,R3锁存。
语法二 REGIST(100+mode, tableindex, numes) mode:锁存方式 tableindex:连续锁存的内容存储的table位置,第一个table元素存储锁存的个数,后面存储锁存的坐标,最多保存个数= numes-1,溢出时循环写入 numes:占用的table个数
通过把模式加100来支持连续锁存,锁存结果存储到TABLE里面。 分别对两个通道进行连续锁存,可以实现上下边沿的连续锁存。 ECI:20150829以上固件支持。 4系列控制器:20170523以上固件支持。
100+mode:只能使用单一通道的mode,加100表示使用连续锁存
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
适用控制器 |
有锁存IN口。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
例子 |
以下例程基于ZMC432控制器测试。 例一 锁存脉冲轴0的输入信号R0上跳沿时的位置,并打印。 BASE(0) REG_INPUTS=0 '将R0-R3都对应输入口0 ATYPE=1 '脉冲轴 REGIST(3) '选择R0锁存模式 WAIT UNTIL MARK '等待锁存触发 PRINT REG_POS '打印锁存位置
例二 锁存编码器轴0的输入信号R1上跳沿时的位置,并打印。 BASE(0) REG_INPUTS=0 '将R0-R3都对应输入口0 ATYPE=3 '编码器轴 REGIST(14) '选择R1锁存模式 WAIT UNTIL MARKB '等待锁存触发 PRINT REG_POSB '打印锁存位置
例三 锁存总线轴0的输入信号R2/R3边沿时的位置,并打印。 BASE(0) REG_INPUTS = $1000 '映射锁存通道R3-R0 对应到输入口1,0,0,0 REGIST(imode) IF imode = 18 OR imode = 19 THEN '通道R2锁存 WAIT UNTIL MARKC '探针1 ?"模式",Imode ,"锁存位置 REG_POSC",REG_POSC ELSEIF imode = 20 OR imode = 21 THEN '通道R3锁存 WAIT UNTIL MARKD '等待锁存触发 ?"模式",Imode ,"锁存位置 REG_POSD",REG_POSD ENDIF
例四 PC交互位置锁存,一般用于运动抓拍,通过锁存的位置得知抓拍时的实际位置。 GLOBAL g_start GLOBAL g_posx, g_posy WHILE 1 WAIT UNTIL g_start=1 '等待PC发出启动 REGIST(4) AXIS(0) '输入0锁存,24V变0V的时刻 REGIST(4) AXIS(1) WAIT UNTIL MARK(0) AND MARK(1) g_start=0 g_posx=REG_POS(0) g_posy=REG_POS(1) PRINT g_posx, g_posy WEND
例五 100+mode连续锁存 DIM num num=1 BASE(6) ATYPE=6 REGIST(100+4,0,100) '自动循环,不需要再写入到while循环中,table(0)保存锁存次数,table(1-100)存储每次锁存的数据超过99次后,table(0)清0,重新从table(1)记录数据 WHILE 1 WAIT UNTIL MARK ?reg_pos,TABLE(num),TABLE(0) '打印 IF num=100 THEN num=1 ELSE num=num+1 ENDIF WA 1 '延时1ms,防抖 WEND
例六 总线驱动器锁存,需要配置DRIVE_PROFILE支持带探针的模式 BASE(iaxis) '选择需要锁存位置的轴号 REGIST(imode) '锁存模式 IF imode = 3 OR imode = 4 THEN WAIT UNTIL MARK '探针1 ?"模式",imode ,"锁存位置 REG_POS",REG_POS DELAY(100) ELSEIF imode = 14 OR imode = 15 THEN WAIT UNTIL MARKB '等待锁存触发 ?"模式",imode ,"锁存位置 REG_POSB",REG_POSB DELAY(100) ELSEIF imode = 11 THEN WAIT UNTIL MARK OR MARKB '等待锁存触发 IF MARK THEN ?"模式",Imode ,"锁存位置 REG_POS",REG_POS WAIT UNTIL MARKB ?"锁存位置 REG_POSB",REG_POSB ELSEIF MARKB THEN ?"模式",Imode ,"锁存位置 REG_POSB",REG_POSB WAIT UNTIL MARK ?"锁存位置 REG_POSB",REG_POS ENDIF DELAY(100) ENDIF | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
相关指令 |