1 / 108

高速计数器控制指令

第五章. 高速计数器控制指令. 高速计数器控制指令. 高速计数器概述. 高速计数器的计数功能. 高速计数器的中断功能. 高速计数器控制指令. 一、 高速计数器概述. CPM1A 系列 PLC 设置了高频脉冲输入点,配合相关指令及必要的设定,可以对高频脉冲进行处理。. CPM1A 系列 PLC 的高频脉冲输入点是 00000~00002 。. 可以用高速计数器对高频脉冲进行计数。. 可以用高速计数器实现中断处理。. - DC24V +. CPM1A PLC. 旋转编码器. COM. 00000. 00001. 00002. Z 相. A 相.

herve
Download Presentation

高速计数器控制指令

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第五章 高速计数器控制指令

  2. 高速计数器控制指令 高速计数器概述 高速计数器的计数功能 高速计数器的中断功能 高速计数器控制指令

  3. 一、 高速计数器概述 CPM1A系列PLC设置了高频脉冲输入点,配合相关指令及必要的设定,可以对高频脉冲进行处理。 CPM1A系列PLC的高频脉冲输入点是00000~00002。 可以用高速计数器对高频脉冲进行计数。 可以用高速计数器实现中断处理。

  4. -DC24V + CPM1A PLC 旋转编码器 COM 00000 00001 00002 Z相 A相 B相 + DC24V COM - 旋 转 编 码 器 高频脉冲可来源于控制现场,也可由旋转编码器提供。 一种旋转编码器与PLC的连接示意图

  5. A相 B相 1 2 3 4 递减计数脉冲 递增计数脉冲 计数脉冲 各种脉冲信号的波形 单相脉冲 A超前B A滞后B 两相脉冲 1 2 3 4 5 6 7 8 7 6 5 4 3 2 1 0 有的旋转编码器可提供三相脉冲,即A、B、Z相。

  6. 二、高速计数器的计数功能 高速计数器的计数模式 高速计数器的复位方式 使用高速计数器时的设定 高速计数器的溢出 计数器当前值的存储区

  7. 1. 高速计数器的计数模式 (1) 递增计数模式 高频脉冲由PLC的00000输入点输入,在输入计数脉冲的前沿,高速计数器的当前值加1。 最高计数频率是5 KHz,计数范围是0~65535(00000000~0000FFFF)

  8. (2) 增减计数模式 在增减计数时可使用旋转编码器。旋转编码器的A 相脉冲接00000 输入点,B 相脉冲接00001输入点,复位Z信号接在00002输入点。 递增计数:当A相超前B相90°时,在A、B相脉冲的前沿,计数器的当前值加1。 递减计数:当B相超前A相90°时,在A、B相脉冲的前沿,计数器的当前值减1。 增减计数的最高计数频率是2.5 KHz,计数范围是-32767~+32767(F0007FFF~00007FFF,第一位的F表示负数)。

  9. Z信号 00002 25200 Ts 复位 复位 2.高速计数器的复位方式 高速计数器复位时,其当前值为0。 (1)  Z信号 + 软件复位 ① 若高速计数器的复位标志位25200先ON时,在复位Z信号ON的前沿时刻,高速计数器复位; ②若复位Z信号先ON时,在25200 ON后一个扫描周期时,高速计数器复位。 Ts是扫描周期。

  10. 25200 Ts 复位 (2)   软件复位 当25200 ON一个扫描周期后高速计数器复位。 另外,当PLC断电再上电时高速计数器自动复位。

  11. 3.使用高速计数器时的设定 使用高速计数器前必须进行必要的设定,否则使用无效。 对CPM1A系列PLC,设定值写入DM6642中。 用设定值确定高速计数器功能是否使用、复位方式、计数模式等。 不能用程序写入设定值(用编程工具)。

  12. 通道号 各 位 数 字 的 含 义 位号 DM6642 计数模式 ( 4:递增计数 0:增减计数) 00 ~ 03 复位方式设定 ( 0:Z信号 + 软件复位; 1:软件复位) 04 ~ 07 高速计数器使用/不使用 ( 00:不使用;01:使用) 08 ~ 15 高速计数器的设定 例如:DM6642的内容为 # 0114 使用高速计数器 软件复位 递增计数

  13. 4. 高速计数器的溢出 当高速计数器计数时: 若从上限值开始进行递增计数就会发生上溢出,其当前值为0FFF FFFF; 若从下限开始进行递减计数就会发生下溢出,其当前值为FFFF FFFF 。 发生溢出时计数器停止计数。 重新复位高速计数器时,将清除溢出状态。

  14. 5.高速计数器的当前值存储区 对CPM1A系列PLC,高速计数器的当前值存放在SR248和SR249中。 SR248存放低4位, SR249存放高4位。 在高速计数器执行高速计数操作后,可以利用指令从SR248和SR249中读出其当前值,也可以利用指令更改其当前值。

  15. 二、高速计数器的中断功能 高速计数器中断功能有两种模式 目标值比较中断模式 区 域比较中断模式

  16. TB 目标值的个数 目标值比较表 TB+1 目标值1低4位 目标2 目标1 TB+2 目标值1高4位 中断处理子程序号 TB+3 TB+4 目标值2低4位 TB+5 目标值2高4位 TB+6 中断处理子程序号 …… …… 1.高速计数器的目标值比较中断 采取目标值比较中断时,要建立一个目标值比较表 最多放16个目标 表中数据可预先写入 在高速计数器计数过程中,若其当前值与比较表中某个目标值相同时,则停止执行主程序而转去执行与该目标值对应的子程序。 子程序执行完毕,返回到断点处继续执行主程序。

  17. TB 下限值1低4位 区 域比较表 TB+1 下限值1高4位 区域2 区域1 TB+2 上限值1低4位 比较表分8个区域 上限值1高4位 TB+3 TB+4 中断处理子程序号 TB+5 下限值2低4位 TB+6 下限值2高4位 每个区占5个通道 TB+7 上限值2低4位 TB+8 上限值2高4位 TB+9 中断处理子程序号 …… …… 2.高速计数器的区域比较中断 采取区域比较中断时要建立一个区域比较表 表中数据可预先写入 当实际使用的区域不满8个时,要把其余存放上、下限值的通道都置为0,将存放子程序号的通道都置为FFFF。

  18. 区域比较中断的执行过程 若高速计数器的当前值落在比较表中某个区域时(下限值 ≤计数器PV值≤上限值) ,则停止执行主程序而转去执行与该区域对应的中断子程序。子程序执行完毕,返回到断点处继续执行主程序。 执行区域比较中断时,比较结果存放在AR1100~AR1107中。 例如,当计数器的当前值落在比较表的区域1中时,AR1100置为ON,当计数器的当前值落在比较表的区域2中时,AR1101置为ON等。

  19. CTBL (63) @CTBL(63) CTBL (63) P C TB @ CTBL (63) P C TB P P C C TB TB 三、高速计数器控制指令 比较表登录指令 P:端口定义(000) C:控制数据 TB :比较表首通道 C的含义 000:登录一个目标值比较表,并启动比较。 001:登录一个区域比较表,并启动比较。 002:登录一个目标值比较表,用指令INI启动比较 003:登录一个区域比较表, 用指令INI启动比较

  20. INI(61) @INI(61) INI (61) P C P1 @ INI (61) P C P1 P P C C P1 P1 操作模式控制指令 P:端口定义(000) C:控制数据 P1 :设定值首通道 C的含义 000:启动CTBL定义的比较表(P1固定为000)。 001:停止CTBL定义的比较表(P1固定为000)。 002:更新高速计数器的当前值。 将P1+1(高4位)、 P1 (低4位)传送到IR248和249中,作为高速计数器的新当前值。 003:停止脉冲输出(P1固定为000)。

  21. PRV (62) @PRV(62) PRV (62) P C D @ PRV (62) P C D P P C C D D 读出当前值指令 P:端口定义(000) C:控制数据(000) D:目的首通道 读出的当前值低4位放在D, 高4位放在D+1中。 配合上述各指令,可以编写使用高速计数器的程序。

  22. 00002 2个目标值 25315 比较表首地址 软件复位 CTBL(63) 000 000 DM0000 SBN(92) 011 5000 目标值1:5000 25313 0000 @CMP HR 00 HR10 子程序号 0010 0000 目标值2:20000 0002 00100 25200 25505 0011 子程序号 01101 SBN (92) 010 RET (93) 25313 @MOV #5000 HR00 比较表首地址DM0000 END (01) RET (93) 使用高速计数器举例 高速计数器目标值比较中断 登录比较表、启动比较 中断处理子程序也要放在主程序之后、END之前。

  23. 00002 2个目标值 25315 CTBL(63) 000 000 DM0000 SBN(92) 011 5000 目标值1:5000 25313 0000 @CMP HR 00 HR10 子程序号 0010 0000 目标值2:20000 0002 00100 25200 25505 0011 子程序号 01101 SBN (92) 010 RET (93) 25313 @MOV #5000 HR00 比较表首地址DM0000 END (01) RET (93) 设DM6642的内容为#0104——表示使用高速计数器、递增计数、Z信号+软复位。 若高速计数器的当前值等于目标值1时,中断主程序而执行010号中断子程序:把#5000传送到HR00中。子程序执行完毕返回断点处继续执行主程序。

  24. 00002 2个目标值 25315 CTBL(63) 000 000 DM0000 SBN(92) 011 5000 目标值1:5000 25313 0000 @CMP HR 00 HR10 子程序号 0010 0000 目标值2:20000 0002 00100 25200 25505 0011 子程序号 01101 SBN (92) 010 RET (93) 25313 @MOV #5000 HR00 比较表首地址DM0000 END (01) RET (93) 若高速计数器的当前值等于目标值2时,中断主程序而执行011号中断子程序:将HR00与HR10中的内容进行一次比较,若HR00的内容大于HR10时,01101为ON。子程序执行完毕返回断点处继续执行主程序。若00100 ON且有Z信号时,高速计数器复位。

  25. 25315 CTBL (61) 000 003 DM0000 25313 PRV (62) 000 000 LR00 更新当前值 启动比较 读出当前值 比较表首地址 1500 下限1:1500 0000 INI (61) 000 002 HR00 00100 3000 上限1:3000 25200 0000 0000 子程序号 SBN (92) 000 7500 下限2:7500 00005 子程序000 0000 @INI (61) 000 000 000 0000 REN (93) 上限2:10000 0001 SBN (92) 001 0001 子程序号 25313 子程序001 XFER(70) # 0002 248 HR00 没用的区域 RET (93) END (01) 将248、249内容传送到HR00、HR01。 使用高速计数器举例 高速计数器区域比较中断 登录比较表、用INI启动

  26. 25315 CTBL (61) 000 003 DM0000 25313 执行XFER(70)指令,可将高速计数器的当前值248和249中的内容传送到HR00和HR01中。这样,一旦PLC掉电,高速计数器的当前值能被保存在HR00和HR01中。 PRV (62) 000 000 LR00 INI (61) 000 002 HR00 00100 25200 SBN (92) 000 00005 子程序000 @INI (61) 000 000 000 REN (93) 再上电时通过执行第一个INI指令,就可以把掉电前的当前值传送到高速计数器的当前值通道248、249中,作为新当前值。 SBN (92) 001 25313 子程序001 XFER(70) # 0002 248 HR00 RET (93) END (01) 设DM6642 的内容为 0100,表示使用高速计数器、增减计数方式、复位方式是采用Z信号+软复位。

  27. 25315 CTBL (61) 000 003 DM0000 25313 PRV (62) 000 000 LR00 执行当前值读出指令PRV,将248、249中的当前值读到LR00中去。 若00100 ON且有Z信号,则高速计数器复位 INI (61) 000 002 HR00 00100 25200 SBN (92) 000 00005 子程序000 @INI (61) 000 000 000 REN (93) SBN (92) 001 25313 子程序001 XFER(70) # 0002 248 HR00 RET (93) END (01)

  28. 高速计数器控制指令小结 1. 高速计数器的计数功能 (1) 高速计数器的计数模式可分为递增计数和增减计数(可配合使用旋转编码器)两类。 (2) 高速计数器的复位可分为软件复位和Z+软件复位两种方式。Z信号由旋转编码器提供。 (3) 使用高速计数器必须在DM6642中进行设定,以确定使用/不使用高速计数器、计数模式、复位方式 (4) 使用高速计数器时,SR248、249存放计数器当前值,不可另作它用。

  29. 2. 高速计数器的中断功能 (1) 高速计数器的中断分为目标值比较中断和区域比较中断。 (2) 使用两种比较中断时,要用指令CTBL确定一个比较表,以确定启动比较的方式(直接或用INI启动)及子程序号。 (3) 用指令INI可以改变计数器的当前值或停止比较。 (4) 用指令PRV可以读出计数器的当前值。 3. 注意执行各种指令时对标志位的影响。

  30. 脉冲输出控制指令 中断控制指令 步进控制指令 特 殊 指 令

  31. 脉冲输出控制指令

  32. 概 述 CPM1A系列PLC的输出点01000和01001可输出20Hz~2KHz的脉冲信号。 输出的脉冲可设置成两类:独立模式和连续模式。 输出脉冲的模式和频率要用控制指令来设定。 ◎ 同一时刻只能从一个点输出脉冲。 ◎ 正在输出脉冲时,不能用指令改变输出脉冲个数。

  33. PULS(65) @PULS(65) 000 000 000 000 N N @PULS(65) 000 000 N PULS(65) 000 000 N 输出脉冲控制指令 1. 设置脉冲指令 N:存放输出脉冲个数的首通道( N低4位、N+1高4位) 功能:在执行条件为ON时,设定独立模式脉冲输出的脉冲个数。

  34. SPED(64) @SPED(64) P P M M F F @SPED(64) P M F SPED(64) P M F 2. 速度输出指令 P:000→由01000输出 010→由01001输出 M:000→独立模式 001→连续模式 F:取值范围为 0002~0200 →对应20~2000Hz 功能:在执行条件为ON时,设定脉冲的输出点、输出模式及脉冲频率。

  35. 当SPED指令的F设为0000,也可以停止脉冲输出。 00000 @SPED(64) 000 001 # 0150 固定设置 固定设置 00001 @INI(61) 000 003 000 使用脉冲输出指令举例(1) 连续输出模式 从01000输出 连续模式 1500Hz 停止脉冲输出 程序功能 当00000 OFF→ON时,执行@SPED指令,从01000输出1500 Hz的连续脉冲信号。 当00001O FF→ON时,执行@INI指令停止脉冲输出。

  36. 对独立模式,当输出脉冲达到设定个数时,能自动停止脉冲输出。对独立模式,当输出脉冲达到设定个数时,能自动停止脉冲输出。 固定设置 固定设置 00100 @PULS(65) 000 000 DM0000 @SPED(64) 010 000 # 0050 使用脉冲输出指令举例(2) 独立输出模式 存放设置脉冲个数的首通道 从01001输出脉冲 独立模式 脉冲频率500Hz 程序功能 当00100 OFF→ON时,执行@PULS指令设置输出脉冲的个数,执行@SPED指令启动脉冲输出,从01001输出500Hz的脉冲信号。

  37. 脉冲输出功能的应用

  38. 中断控制指令

  39. 外部输入中断功能 间隔定时器中断功能 中 断 的 优 先 级 中 断 控 制 指 令

  40. 一、外部输入中断功能 1. 外部输入中断的输入点 CPM1A系列20、30、40点的主机为00003~00006。 CPM1A系列10点的主机为00003和00004。 中断输入点的编号 00003:中断输入0 00004:中断输入1 00005:中断输入2 00006:中断输入3 2. 外部输入中断的优先级 中断输入0 →中断输入1 →中断输入2 → 中断输入3

  41. 3. 外部输入中断的模式 (1)输入中断模式 在中断输入点非屏蔽时,只要中断输入点接通即产生中断响应;在该点屏蔽时,待解除屏蔽时再响应中断。 (2)计数中断模式 对中断输入点进行高速计数,当达到设定次数时产生中断,且停止计数。计数范围0~65535、最高1KHz。 计数器的设定值和(当前值-1)存放在指定的通道中。

  42. 4. 外部输入中断子程序的编号 中断输入0 (输入点00003): 子程序号为000 中断输入1 (输入点00004): 子程序号为001 中断输入2 (输入点00005): 子程序号为002 中断输入3 (输入点00006): 子程序号为003 当不使用中断时,000~003可作为普通子程序号.

  43. DM6628 03 02 01 00 注意:不论哪种模式的中断,其子程序必须用SBN/RET指令定义,且必须放在主程序之后、END之前。 5. 外部输入中断的设定 输入点00003 ( 0:普通输入点 1:中断输入点 ) 输入点00004 ( 0:普通输入点 1:中断输入点 ) 输入点00005 ( 0:普通输入点 1:中断输入点 ) 输入点00006 ( 0:普通输入点 1:中断输入点 )

  44. 二、间隔定时器中断功能 1. 间隔定时器 当间隔定时器(递减)定时到,可以不受扫描周期影响,停止主程序而转去执行子程序。 间隔定时器可以实现高精度的定时和中断处理。 2. 间隔定时器的中断模式 (1) 单次中断模式 当间隔定时器定时到,停止定时并产生中断信号,但只执行一次中断。

  45. (2) 重复中断模式 间隔定时器每隔一定时间产生一次中断,停止执行主程序而去执行中断子程序。 在执行中断子程序的同时,定时器的当前值又恢复为设定值并重新开始定时,直到定时器停止计数为止。 3. 间隔定时器的中断处理子程序 不论是何种间隔定时器中断模式,子程序号都是由指令STEM来确定的。

  46. 三、中断的优先级 外部输入中断0→外部输入中断1→外部输入中断2→外部输入中断3→间隔定时器中断→ 高速计数器中断. 在执行某中断子程序时,若发生了优先级更高的中断,则立即停止执行当前的中断子程序,而转去执行优先级更高的子程序。 该子程序执行完毕再返回断点处继续执行程序。 同时发生了几个中断请求信号时,先响应优先级最高的中断。

  47. D 03 02 01 00 @INT(89) CC 000 D INT(89) CC 000 D 四、中断控制指令 1. 中断控制指令 功能:当执行条件为ON时,根据CC的内容执行6种功能中的一种。 D:设定输入点屏蔽/非屏蔽 CC:控制码 CC= 000 (屏蔽/不屏蔽输入点) 输入点00003 ( 0:不屏蔽 1:屏蔽 ) 输入点00004 ( 0:不屏蔽 1:屏蔽 ) 输入点00005 ( 0:不屏蔽 1:屏蔽 ) 输入点00006 ( 0:不屏蔽 1:屏蔽 )

  48. D D 03 02 01 00 03 02 01 00 CC= 001 清除/不清除输入中断记忆 输入点00003 ( 0:不清除 1:清除 ) 输入点00004 ( 0:不清除 1:清除 ) 输入点00005 ( 0:不清除 1:清除 ) 输入点00006 ( 0:不清除 1:清除 ) CC= 002 读出中断输入点当前状态 输入点00003 ( 0:不屏蔽 1:屏蔽) 输入点00004 ( 0:不屏蔽 1:屏蔽) 输入点00005 ( 0:不屏蔽 1:屏蔽) 输入点00006 ( 0:不屏蔽 1:屏蔽)

  49. D 03 02 01 00 CC= 003 更新/不更新计数设定值 输入点00003 ( 0:更新 1:不更新 ) 输入点00004 ( 0:更新 1:不更新 ) 输入点00005 ( 0:更新 1:不更新 ) 输入点00006 ( 0:更新 1:不更新 ) CC = 100 (D=000) 屏蔽所有中断输入点 屏蔽所有中断。若有中断信号先记忆,待解除屏蔽时立即响应. CC = 200 (D=000) 解除所有中断屏蔽 解除所有中断屏蔽,恢复到执行‘屏蔽所有中断’之前的状态,但不解除‘单独中断类’的中断。

  50. 25315 INT(89) 000 中断屏蔽设定 000 为固定设置 # 000C 20000 20001 00003、00004 01000 为非屏蔽 SBN(92) 000 25313 子程序 000 20000 RET(93) SBN(92) 001 25313 子程序 001 20001 RET(93) 外部输入中断举例 设DM6628为0011,即00003和00004为中断输入点。 当00003 接通时产生中断,停止执行主程序、转去执行子程序000使20000 ON,返回执行主程序使01000 ON。 C(1100) 当00004接通产生中断时,转去执行子程序001使20001 ON,返回执行主程序使01000 OFF。

More Related