REGIST -- 锁存

类型

位置锁存指令

描述

REGIST指令用来锁存轴的测量反馈位置。

 

支持编码器轴、总线轴锁存,不同型号的控制器支持锁存的轴类型不同,4系列及以上控制器最新固件支持虚拟轴、脉冲轴锁存。

EtherCAT支持驱动器锁存,此时使用驱动器IO点实现锁存,具体模式查看指令语法。

Rtex只支持控制器锁存。

4系列及以上控制器支持4锁存通道。

4个通道指MARKMARKBMARKCMARKD,通过REG_INPUTS 指定锁存输入口对应的锁存通道。

锁存输入口4322个,432N4个,4128个。

支持EtherCAT驱动器锁存与控制器锁存同时使用,需要有4锁存通道功能。

 

当锁存产生时,轴状态MARK会被设置为ON,同时锁存到的位置会被存储在参数REG_POS内。

每个轴有输入信号R0R1EZ信号可以使用锁存功能。当使用两个信号锁存时,第二个信号锁存使用MARKBREG_POSB

R0R1输入一般对应到输入口01,详细请查看控制器的硬件手册中通用输入章节。

语法

语法一

REGIST(mode)

mode:锁存方式

上升下降沿是以控制器内部状态而言。如果设置成上升沿触发,则锁存会在外部输入口由导通状态进入截止状态的一瞬间触发;如果设置成下降沿触发,则锁存会在外部输入口由截止状态进入导通状态的一瞬间触发;具体要设置成上升沿还是下降沿触发,要根据外部输入口信号跳变的实际需求。

脉冲轴类型一般采用R0R1Z脉冲这三种锁存;总线轴类型采R2R3锁存。

描述

1

Z脉冲上升沿时的绝对位置送到REG_POS

2

Z脉冲下降沿时的绝对位置送到REG_POS

3

当输入信号R0上升沿的绝对位置送到REG_POS

4

当输入信号R0下降沿的绝对位置送到REG_POS

6

输入信号R0上升沿时的绝对位置送到REG_POSZ信号上升沿时的绝对位置送到REG_POSB

7

输入信号R0上升沿时的绝对位置送到REG_POSZ信号下降沿时的绝对位置送到REG_POSB

8

输入信号R0下降沿时的绝对位置送到REG_POSZ信号上升沿时的绝对位置送到REG_POSB

9

输入信号R0下降沿时的绝对位置送到REG_POSZ信号下降沿时的绝对位置送到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

 

语法二

REGIST(100+mode, tableindex, numes)

mode:锁存方式

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

numes:占用的table个数

 

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

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

ECI20150829以上固件支持。

4系列控制器:20170523以上固件支持。

 

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

描述

1

Z脉冲上升沿时的绝对位置送到REG_POS

2

Z脉冲下降沿时的绝对位置送到REG_POS

3

当输入信号R0上升沿的绝对位置送到REG_POS

4

当输入信号R0下降沿的绝对位置送到REG_POS

14

输入信号R1上升沿时的绝对位置送到REG_POSB

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

23

当输入信号R0上升沿的绝对位置送到REG_POSB

24

当输入信号R0下降沿的绝对位置送到REG_POSB

33

当输入信号R0上升沿的绝对位置送到REG_POS,下一次切换下降沿,轮流切换。

34

当输入信号R0下降沿的绝对位置送到REG_POS,下一次切换上升沿,轮流切换。

35

当输入信号R1上升沿的绝对位置送到REG_POSB,下一次切换下降沿,轮流切换。下一次切换下降沿,轮流切换。

36

当输入信号R1下降沿的绝对位置送到REG_POSB,下一次切换上升沿,轮流切换。

适用控制器

有锁存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锁存,24V0V的时刻

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

相关指令

MARKMARKBREG_POSREG_POSB