Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "第五章 高速计数器控制指令."— Presentation transcript:

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

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

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

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

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

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

7 1. 高速计数器的计数模式 (1) 递增计数模式 高频脉冲由PLC的00000输入点输入,在输入计数脉冲的前沿,高速计数器的当前值加1。
(1) 递增计数模式 高频脉冲由PLC的00000输入点输入,在输入计数脉冲的前沿,高速计数器的当前值加1。 最高计数频率是5 KHz,计数范围是0~65535( ~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 2.高速计数器的复位方式 高速计数器复位时,其当前值为0。 (1) Z信号 + 软件复位
① 若高速计数器的复位标志位25200先ON时,在复位Z信号ON的前沿时刻,高速计数器复位; ②若复位Z信号先ON时,在25200 ON后一个扫描周期时,高速计数器复位。 Ts是扫描周期。 25200 复位 Z信号 00002 Ts 复位

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

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

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

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

14 5.高速计数器的当前值存储区 对CPM1A系列PLC,高速计数器的当前值存放在SR248和SR249中。

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

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

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

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

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

20 000:启动CTBL定义的比较表(P1固定为000)。 001:停止CTBL定义的比较表(P1固定为000)。
操作模式控制指令 INI (61) P C P1 @ INI (61) INI(61) @INI(61) 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 读出的当前值低4位放在D, 高4位放在D+1中。
读出当前值指令 PRV (62) P C D @ PRV (62) @PRV(62) P:端口定义(000) C:控制数据(000) D:目的首通道 读出的当前值低4位放在D, 高4位放在D+1中。 配合上述各指令,可以编写使用高速计数器的程序。

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

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

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

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

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

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

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

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

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

31 脉冲输出控制指令

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

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

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

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

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

37 脉冲输出功能的应用

38 中断控制指令

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

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

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

42 4. 外部输入中断子程序的编号 中断输入0 (输入点00003): 子程序号为000 中断输入1 (输入点00004): 子程序号为001
中断输入点 存放计数器设定值 存放计数器(当前值–1) 输入点0003 SR240 SR 244 输入点0004 SR241 SR 245 输入点0005 SR242 SR 246 输入点0006 SR243 SR 247 4. 外部输入中断子程序的编号 中断输入0 (输入点00003): 子程序号为000 中断输入1 (输入点00004): 子程序号为001 中断输入2 (输入点00005): 子程序号为002 中断输入3 (输入点00006): 子程序号为003 当不使用中断时,000~003可作为普通子程序号.

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

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

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

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

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

48 D CC= 001 清除/不清除输入中断记忆 输入点 ( 0:不清除 :清除 ) 输入点 ( 0:不清除 :清除 ) 输入点 ( 0:不清除 :清除 ) 输入点 ( 0:不清除 :清除 ) D CC= 002 读出中断输入点当前状态 输入点 ( 0:不屏蔽 :屏蔽) 输入点 ( 0:不屏蔽 :屏蔽) 输入点 ( 0:不屏蔽 :屏蔽) 输入点 ( 0:不屏蔽 :屏蔽)

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

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

51 外部输入计数中断举例 设DM6628为0010,即00004为中断输入点。 程序分析
01000 20000 SBN(92) 001 MOV(21) # 00FA 241 25315 # 000D INT(89) 003 TIM000 # 0050 25313 RET(93) 传送计数器设定值 程序分析 计数器设定值更新 在PLC上电后的第一个扫描周期,执行一次MOV指令,将#00FA(十进制250)传送到241通道(存放00004中断输入点计数设定值)。 固定设置 00004为更新 D(1101) 子程序001

52 执行一次INT指令,设置输入中断1为计数中断模式,设定00004输入点为非屏蔽。
外部输入计数中断举例(续) 执行一次INT指令,设置输入中断1为计数中断模式,设定00004输入点为非屏蔽。 固定设置 子程序001 计数器设定值更新 00004为更新 传送计数器设定值 D(1101) 000 01000 20000 SBN(92) 001 MOV(21) # 00FA 241 25315 # 000D INT(89) 003 TIM000 # 0050 25313 RET(93) 当00004输入点接通250次时产生中断,停止执行主程序、并转去执行子程序001。 执行子程序001,使20000 ON。返回主程序使TIM000开始定时。经过5秒TIM000 ON、使01000 ON。

53 2. 间隔定时器中断控制指令 功能:当执行条件为ON时,根据C1的内容执行4种功能中的一种。 (1) C1=000 启动单次中断模式
STEM(69) C1 C2 C3 @ STEM(69) STEM(69) @STEM(69) C1 :控制码 C2 、C3:设定值(C2 、C3的值取决于C1 ) 功能:当执行条件为ON时,根据C1的内容执行4种功能中的一种。 (1) C1=000 启动单次中断模式 ① C2若为常数(BCD 0000~9999)时,则为定时器的设定值。时间间隔固定为1ms 。 实际定时时间即为该常数值,单位为毫秒。 C3为子程序号。

54 时间间隔由C2+1的内容(BCD 0005~0320,对应0.5~32ms)确定,实际定时时间为:
STEM(69) C1 C2 C3 @ STEM(69) STEM(69) @STEM(69) ② C2若为通道号,则其内容(BCD 0000~9999)为 定时器的设定值。 时间间隔由C2+1的内容(BCD 0005~0320,对应0.5~32ms)确定,实际定时时间为: [C2的内容×(C2+1)的内容]×0.1ms,故实际定时时间的范围是0.5~ ms。 C3为子程序号。

55 可读出计数器减1的次数、时间间隔和从上一次减1到当前时刻的时间。
STEM(69) C1 C2 C3 @ STEM(69) STEM(69) @STEM(69) (2) C1= 启动重复中断模式 C2、C2+1、C3的意义及定时时间的计算同上. (3) C1=006 读出定时器的当前值 可读出计数器减1的次数、时间间隔和从上一次减1到当前时刻的时间。 读出的数据分别放在C2、C2+1、C3中,由此计算出定时开始到当前时刻的时间为: [C2的内容×(C2+1)的内容+C3的内容]×0.1ms

56 使用指令STEM时比较烦琐,必须认真核对指令的操作数设置是否正确。
C1 C2 C3 @ STEM(69) STEM(69) @STEM(69) (4) C1=010 停止间隔定时器工作 此时C2、C3固定为000。 使用指令STEM时比较烦琐,必须认真核对指令的操作数设置是否正确。

57 间隔定时器单次中断举例 程序分析 PLC上电即传送间隔定时器的设定值。 间隔定时器的定时设定值为200×10×0.1=200ms。
20000 01000 00000 # 0010 STIM(69) 000 DM0000 TIM 000 # 0050 RET(93) TIM000 25313 MOV # 0200 25315 MOV(21) DM0001 RESET 20000 SBN(92) 010 传送间隔定时器设定值 程序分析 PLC上电即传送间隔定时器的设定值。 单次中断 设定值 子程序号 间隔定时器的定时设定值为200×10×0.1=200ms。 子程序号为010。 子程序 010

58 间隔定时器单次中断举例(续) 在00000为ON时执行指令STIM,确定中断模式(单次),并启动间隔定时器开始定时。
设定值 子程序号 单次中断 传送间隔定时器设定值 子程序 010 20000 01000 00000 # 0010 STIM(69) 000 DM0000 TIM 000 # 0050 RET(93) TIM000 25313 MOV # 0200 25315 MOV(21) DM0001 RESET 20000 SBN(92) 010 在00000为ON时执行指令STIM,确定中断模式(单次),并启动间隔定时器开始定时。 当达到设定时间200ms时,产生中断并转去执行010号子程序,使20000 ON。

59 间隔定时器单次中断举例(续) 返回去执行主程序使01000 ON、并使TIM000开始定时,5秒后01000 OFF。
设定值 子程序号 单次中断 传送间隔定时器设定值 子程序 010 20000 01000 00000 # 0010 STIM(69) 000 DM0000 TIM 000 # 0050 RET(93) TIM000 25313 MOV # 0200 25315 MOV(21) DM0001 RESET 20000 SBN(92) 010 返回去执行主程序使01000 ON、并使TIM000开始定时,5秒后01000 OFF。 欲再次实现单次中断,需要再令触点00000OFF→ON一次。

60 间隔定时器重复中断举例 25315 # 0005 STIM(69) 003 # 0050 01000 20000 01001 20001 SBN(92) 005 RET(93) 重复中断 程序分析 设定值(ms) 子程序号 PLC上电后执行STIM指令,确定间隔定时器为重复中断模式,间隔定时器的定时值为50ms,子程序号为005。 子程序 005

61 间隔定时器重复中断举例(续) 当间隔定时器达到设定时间50ms时,产生中断并转去执行005号子程序,同时定时器的当前值又恢复为设定值并重新开始定时。 设定值(ms) 重复中断 子程序 005 25315 # 0005 STIM(69) 003 # 0050 01000 20000 01001 20001 SBN(92) 005 RET(93) 子程序号 再过50 ms时又产生一次中断。

62 间隔定时器重复中断举例(续) 第一次中断执行子程序使20001 ON、20000 OFF,返回去执行主程序使01001 ON 50ms、01000 OFF 50ms 。 设定值(ms) 重复中断 子程序 005 25315 # 0005 STIM(69) 003 # 0050 01000 20000 01001 20001 SBN(92) 005 RET(93) 子程序号 第二次中断执行子程序时20000 ON、20001 OFF,所以01000 ON 50ms、01001 OFF 50ms 。

63 间隔定时器重复中断举例(续) 可见该段程序的功能是: 01000和01001均能产生0.1S的脉冲, 直到间隔定时器停止计数为止。
设定值(ms) 重复中断 子程序 005 25315 # 0005 STIM(69) 003 # 0050 01000 20000 01001 20001 SBN(92) 005 RET(93) 子程序号 间隔定时器的定时时间最小可达0.5ms,所以用间隔定时器可实现高精度的定时控制。

64 STIM指令的各种设定举例 读出定时器当前值 RET(93) 20000 25313 00001 DM0002 @STIM(69) 006
00002 000 STIM(69) 010 SBN(92) 002 RESET20000 # 0002 STIM(69) 003 # 0400 CNT 000 20000 CNT000 25500 00000 25315 存放当前值首通道 启动重复中断 间隔时间400ms 存放当前值末通道 子程序号 停止定时器的定时

65 程序分析 STIM指令的设定举例(续) ① 自00000OFF →ON后,过400ms产生中断,转去执行子程序002,使20000 ON。
启动重复中断 间隔时间400ms 子程序号 读出定时器当前值 存放当前值首通道 存放当前值末通道 停止定时器的定时 RESET20000 # 0002 STIM(69) 003 # 0400 CNT 000 20000 CNT000 25500 00000 25315 RET(93) 25313 00001 DM0002 @STIM(69) 006 DM0000 00002 010 SBN(92) 002 ① 自00000OFF →ON后,过400ms产生中断,转去执行子程序002,使20000 ON。

66 STIM指令各种设定举例(续) ② 20000 ON,执行主程序使CNT000开始计数(或定时)。 启动重复中断 间隔时间400ms
子程序号 读出定时器当前值 存放当前值首通道 存放当前值末通道 停止定时器的定时 RESET20000 # 0002 STIM(69) 003 # 0400 CNT 000 20000 CNT000 25500 00000 25315 RET(93) 25313 00001 DM0002 @STIM(69) 006 DM0000 00002 010 SBN(92) 002 ② ON,执行主程序使CNT000开始计数(或定时)。

67 STIM指令的各种设定举例(续) 启动重复中断 间隔时间400ms 子程序号 读出定时器当前值 存放当前值首通道 存放当前值末通道 停止定时器的定时 RESET20000 # 0002 STIM(69) 003 # 0400 CNT 000 20000 CNT000 25500 00000 25315 RET(93) 25313 00001 DM0002 @STIM(69) 006 DM0000 00002 010 SBN(92) 002 ③ 经过200 ms CNT000 ON→CNT000和20000复位。自此再过200 ms产生第二次中断,计数器CNT000重复上述定时过程。

68 STIM指令的各种设定举例(续) 可见从第一次响应中断之后,每过200 ms ,CNT000 ON一次。 启动重复中断 间隔时间400ms
子程序号 读出定时器当前值 存放当前值首通道 存放当前值末通道 停止定时器的定时 RESET20000 # 0002 STIM(69) 003 # 0400 CNT 000 20000 CNT000 25500 00000 25315 RET(93) 25313 00001 DM0002 @STIM(69) 006 DM0000 00002 010 SBN(92) 002 可见从第一次响应中断之后,每过200 ms ,CNT000 ON一次。

69 STIM指令的各种设定举例(续) 启动重复中断 间隔时间400ms 子程序号 读出定时器当前值 存放当前值首通道 存放当前值末通道 停止定时器的定时 RESET20000 # 0002 STIM(69) 003 # 0400 CNT 000 20000 CNT000 25500 00000 25315 RET(93) 25313 00001 DM0002 @STIM(69) 006 DM0000 00002 010 SBN(92) 002 ④ 当00001OFF →ON时执行第二个STIM指令。可从屏幕上看到DM0000~DM0002的内容,据此可以计算定时器的当前值。

70 STIM指令的各种设定举例(续) 启动重复中断 间隔时间400ms 子程序号 读出定时器当前值 存放当前值首通道 存放当前值末通道 停止定时器的定时 RESET20000 # 0002 STIM(69) 003 # 0400 CNT 000 20000 CNT000 25500 00000 25315 RET(93) 25313 00001 DM0002 @STIM(69) 006 DM0000 00002 010 SBN(92) 002 ⑤ 当00002ON时执行第三个STIM指令。这时停止间隔定时器的定时。在断开00002后,间隔定时器可恢复工作。

71 中断控制指令小结 1. 普通子程序调用与中断功能子程序的区别 (1) 两种子程序的相同点 ①子程序都必须由指令SBN和RET来定义。
(1) 两种子程序的相同点 ①子程序都必须由指令SBN和RET来定义。 ②子程序都要放在主程序之后、END之前。 ③ 当SBS指令的执行条件不满足时、或没产生中断信号时,CPU都不扫描子程序。

72 (2) 两种子程序调用上的区别 ① 在子程序调用的控制方式上的区别。
(2) 两种子程序调用上的区别 ① 在子程序调用的控制方式上的区别。 普通子程序的调用是受程序的控制,即必须在主程序中安排SBS指令,当CPU扫描到SBS指令、且其执行条件满足时调用子程序。 中断处理子程序的调用不是由程序直接控制的,在中断控制指令设定之后,是否调用子程序取决于有无中断请求信号。而且,对外部输入中断,若中断被屏蔽,即使有中断请求信号也不能立即执行中断子程序。

73 ② 两种子程序执行完毕返回地址的区别。 用SBS指令调用子程序时,执行完毕返回地址只能是与指令SBS相邻的下一条指令。 中断处理子程序执行完毕也要返回断点处,但其断点地址是随机的。 ③ 响应各子程序的优先级问题。 用指令SBS调用的各子程序没有优先级问题。按扫描顺序执行程序,满足条件的SBS即调用子程序 。 由于各种中断存在优先级,所以各中断处理子程序在执行时有优先顺序。 ④ 外部输入中断处理子程序的编号是固定的。

74 2. 中断控制功能 (1) 关于外部输入中断 ① 使用外部输入中断时要在DM6628中进行必要的设定,否则使用无效。
2. 中断控制功能 (1) 关于外部输入中断 ① 使用外部输入中断时要在DM6628中进行必要的设定,否则使用无效。 ② 使用外部输入中断时要使用指令INT,以确定中断模式、中断输入点的状态等。 (2) 关于间隔定时器中断 ① 使用间隔定时器中断时不必在DM区设定。 ② 使用间隔定时器中断时,要用指令STEM确定间隔定时器的模式、定时器的设定值等。

75 3. 使用中断功能时注意的问题 ① 在中断处理子程序内部不可使用指令SBS,即中断处理子程序不可调用普通子程序。 ② 不可用SBS指令去调用中断处理子程序,即普通子程序不可调用中断处理子程序。 ③ 中断处理子程序内部,不可以调用别的中断处理子程序。

76 步进控制指令

77 步 进 控 制 指 令 步进控制程序的结构 步进控制程序的编程

78 步进控制概述 把一个较大的程序分成若干个程序段(对应实际的某些操作)。一个程序段称为一个步,用指令来控制各步执行的顺序——步进控制程序。
当执行步进程序时,在执行完上一步、启动下一步之前,可将上一步使用的定时器、数据区等复位。这样,在以下各步程序中还可以重复使用这些资源。

79 一、 步进控制指令 SNXT(09) B STEP(08) B SNXT(09)B 功能:当SNXT指令的执行条件为ON时,结束上一步的执行、复位上一步用过的定时器和数据区,并启动以B为控制位的、以STEP B定义的下一个步。 B:步的控制位号 功能:步结束指令。 当所有步都执行完毕时,要安排SNXT(09) B (B是虚控制位、无实际意义)和 STEP指令以结束步程序 。 STEP(08)

80 二、 步进控制程序的结构 1. 步进程序的基本结构
SNXT(09) HR0000 由HR0000控制的步1 STEP(08) HR0000 SNXT(09) HR0001 STEP(08) HR0001 由HR0001控制的步2 SNXT(09) STEP(08) 00000 00001 00002 每一 步都由具有执行条件的SNXT(09) B开始,其后紧随无执行条件的STEP(08) B。 STEP(08) B之后是步的内容 步程序结束时,要安排一个具有执行条件的SNXT(09) B(此B无意义,可是程序中有用过的位号)。 最后安排一个STEP(08)

81 2. 步进控制程序的类型 并 行 分支类 选 择 分支类 顺 序 执行类 步A 步B 步E 条件1 条件2 步C 条件3 条件4 步结束
并 行 分支类 步A 步B 步E 条件1 条件2 步C 条件3 条件4 步结束 步D 条件5 条件4 条件6 选 择 分支类 步A 步B 步E 条件1 条件2 条件3 条件5 步结束 步C 步D 条件7 步1 步2 步3 步结束 条件1 条件2 条件3 条件4 顺 序 执行类

82 (1) 顺序执行类程序中无分支,前一步结束被清除、复位,后一步即被启动并开始执行。
SNXT(09) HR0000 由HR0000控制的步1 STEP(08) HR0000 SNXT(09) HR0001 STEP(08) HR0001 由HR0001控制的步2 SNXT(09) STEP(08) 00000 00001 00002 步1 步2 步3 步结束 条件1 条件2 条件3 条件4 顺 序 执行类 条件1 例如 条件2 条件3 步结束

83 (2) 选择分支类程序有几个分支,每个分支可以有若干个步。每个步要有执行条件。
条件4 条件6 选 择 分支类 步A 步B 步E 条件1 条件2 条件3 条件5 步结束 步C 步D 条件7 在同一时刻只能执行其中的一个分支。编写程序时各分支的执行条件间要互锁。如条件1和条件3。 每个分支执行完毕都要去执行同一个步,如图中步E。

84 (3) 并行分支程序有几个分支,每个分支可能有若干个步。在满足条件时几个分支将同时被启动。
并 行 分支类 步A 步B 步E 条件1 条件2 步C 条件3 条件4 步结束 步D 条件5 几个分支都执行完毕时,又被同一个执行条件所清除、同时进入下一步。 如步B、步D执行完毕,可被条件4复位,并同时进入步E。

85 三、步进控制程序的编程方法 步进控制程序的结构不同,编写出的程序结构也有区别。 要根据实际控制的要求,确定程序的结构。
编写不同结构的步进控制程序的方法是有章可循的,下面举例说明。

86 步进控制程序举例(1) 选择分支步进程序 程序流程图 HR0000~ HR0004是控制位 条件 SNXT(09) HR 0003
STEP(08) HR 0003 00004 25313 01002 步C 01001 步D SNXT(09) HR0004 STEP(08) HR0004 00005 SNXT(09) 00008 STEP(08) 00006 01000 步E HR0000~ HR0004是控制位 STEP(08) HR0000 STEP(08) HR0001 SNXT(09) HR0001 00002 SNXT(09) HR0000 00000 00001 SNXT(09) HR0002 25313 01000 步A 01001 步B HR 0004 00003 STEP(08) HR 0002 程序流程图 00004 00005 步A 步B 步E 00000 00002 00001 00003 步结束 步C 步D 00006 条件

87 00000ON、00001OFF 步开始 步C 启动步A 步A开始 步D 步A 复位步A 启动步B 步B开始 步E开始 步B 步E 复位步B
SNXT(09) HR 0003 STEP(08) HR 0003 00004 25313 01002 步C 01001 步D SNXT(09) HR0004 STEP(08) HR0004 00005 SNXT(09) 00008 STEP(08) 00006 01000 步E STEP(08) HR0000 STEP(08) HR0001 SNXT(09) HR0001 00002 SNXT(09) HR0000 00000 00001 SNXT(09) HR0002 25313 01000 步A 01001 步B HR 0004 00003 STEP(08) HR 0002 步开始 启动步A 步A开始 复位步A 启动步B 步B开始 步E开始 复位步B 启动步E 复位步E 步结束

88 00000 OFF、00001ON 步C 复位步C 步开始 启动步D 启动步C 步D开始 步D 步A 复位步D 启动步E 步E开始 步B
SNXT(09) HR 0003 STEP(08) HR 0003 00004 25313 01002 步C 01001 步D SNXT(09) HR0004 STEP(08) HR0004 00005 SNXT(09) 00008 STEP(08) 00006 01000 步E STEP(08) HR0000 STEP(08) HR0001 SNXT(09) HR0001 00002 SNXT(09) HR0000 00000 00001 SNXT(09) HR0002 25313 01000 步A 01001 步B HR 0004 00003 STEP(08) HR 0002 复位步C 启动步D 步开始 启动步C 步D开始 复位步D 启动步E 步E开始 复位步E 步C开始 步结束

89 步进控制程序举例(2) 并行分支步进程序 程序流程图 步D程序 步A程序 步E程序 步B程序 步C程序 00002
SNXT(09) STEP(08) 00003 步D程序 SNXT(09) 00004 STEP(08) 步E程序 SNXT(09) STEP(08) 00100 SET RESET STEP(08) 20000 SNXT(09) 00003 SNXT(09) 00000 步A程序 00001 SNXT(09) 20001 步B程序 SNXT(09) 20002 步C程序 程序流程图 00004 步A 步B 步E 00000 00002 00001 00003 步结束 步C 步D 普通程序

90 步进控制程序举例(2) (续) 并行分支步进程序 步开始 启动步A 启动步C 步D程序 步E程序 复位步C 启动步D 步A程序 步B程序
00002 SNXT(09) STEP(08) 00003 步D程序 SNXT(09) 00004 STEP(08) 步E程序 SNXT(09) STEP(08) 00100 SET RESET 复位步C 启动步D STEP(08) 20000 SNXT(09) 00003 SNXT(09) 00000 步A程序 00001 SNXT(09) 20001 步B程序 SNXT(09) 20002 步C程序 步D开始 步A开始 步C开始 复位步D 启动步E 复位步B 复位步A 启动步B 步E开始 步B开始 复位步E 步结束

91 步进控制指令小结 1. 步进程序要设置控制位, 各步的控制位必须在同一个区,前后步的控制位最好连续。 2. 步程序内不能使用以下几个指令:
1. 步进程序要设置控制位, 各步的控制位必须在同一个区,前后步的控制位最好连续。 2. 步程序内不能使用以下几个指令: END、IL/ILC、JMP/JME、SBN。 3. 当SNXT(09)B 执行时,将结束步(B-1)的执行,并复位前一步使用的定时器、数据区。 此时,前一步使用的定时器、数据区的状态为:IR、HR、AR、LR为OFF,定时器复位,移位寄存器、计数器及KEEP、SET、RESET指令的输出位保持。

92 6. 下一步开始执行后,若前一步的执行条件再次满足,时,前一步可再次启动。如果不希望前一步再启动,应编写程序予以禁止。
5. 各步必须以前一步的结束为启动条件,即不能先启动中间的步。

93 特殊指令

94 故障诊断指令 信息显示指令 I / O 刷新指令 位 计 数 指令

95 一、故障诊断指令 1. 可继续运行的故障诊断指令FAL/@FAL FAL(06) N1 @FAL(06) N1 功能
当执行条件为ON时,将故障代码N1传送到FAL的输出区SR25300~25307中,同时使主机面板上的ALM指示灯闪烁,程序可继续执行。 当N1为00时,执行FAL(06) 00可以将前一个故障代码清除、将下一个故障代码存入FAL 的输出区

96 2. 停止程序运行的故障诊断指令FALS 功能 FALS(07) N2 N2: 故障代码 N2取值:01~99
当执行条件为ON时,将故障代码N2传送到FAL 的输出区SR25300~25307中,同时主机面板上的ERR灯常亮,RUN灯灭,停止执行程序,所有输出均复位。 清除故障后,将PLC的工作方式转换到编程档,再转回RUN或MONITOR档,可使程序再启动; 或将PLC关机再开机 ,也可使程序再启动。

97 故障诊断指令举例(1) 程序分析 FAL(06) 00 FAL(06) 01 FAL(06) 02 FAL(06) 03 FALS(07) 04 00100 00101 00102 00103 ① 当发生了故障码是01的非严重故障时,00100为ON ,执行指令FAL(06)01后,ALM指示灯闪烁。 ② 排除故障后00100又变为OFF,则执行FAL(06)00后,清除01号故障码、ALM指示灯灭,并存入下一个故障码。 图中设置了3个非严重故障码01、02、03和1个严重故障码04。

98 ③ 当发生了故障码为02或03的非严重故障时,00101或00102为ON,指令执行情况同上。
FAL(06) 00 FAL(06) 01 FAL(06) 02 FAL(06) 03 FALS(07) 04 00100 00101 00102 00103 当发生了故障码为04的严重故障时, 00103为ON,执行FALS(07)04后,ERR指示灯常亮、RUN指示灯灭并停止执行程序。 排除故障后,采用上述两种重新启动程序的方法之一,使ERR指示即灭并重新开始执行程序。

99 二、信息显示指令 功能 MGS(46) FM @MGS(46) FM FM: 存放信息的首通道
当执行条件为ON时,从FM开始的8个通道中读取ASCII码,并显示其对应的字符。 若出现非ASCII码,则该码以后的信息将显示。 执行FAL(06) 00指令时,可清除当前显示的信息。

100 1. 存放ASCII码的顺序 … ASCII码按顺序存放在以FM为首地址的连续通道中。
例如,在以FM为首地址的一个MGS信息的存放: FM 通道 第1个字符 第2个字符 第3个字符 第4个字符 第5个字符 第6个字符 FM+1通道 FM+2通道 第15个字符 第16个字符 FM+7通道 一个MGS信息

101 2. 显示ASCII码的顺序 信息显示缓冲区最多能存放存放三个MGS信息。 显示屏上每次只能显示一个MGS信息。
各信息的优先级,取决于存放该信息的存储区的优先级,其顺序为: ① LR→I/O→IR(除I/O外)→HR→AR→TC→DM/*DM。 ②同区域内地址小的优先,间接寻址DM地址小的优先。 各信息按优先级的高低存入信息缓冲区,优先级高的先存入,按照先进先出的顺序进行显示。

102 3.清除当前显示的MSG信息 欲清除当前显示的MSG信息、而显示下一个信息时, 可通过执行FAL(06)00与MSG(46)来实现。
DM 0100 FAL(06) 00 DM 0000 255313 分析程序 虽然DM0100和DM0000中都有信息码,但只能显示DM0000中的信息。 该程序顺序安排不合理。

103 执行MSG (46)后,显示DM0100~DM0102的内容。
分析程序功能 FAL(06) 00 MSG(46) DM 0100 00000 00001 FAL(06) 01 FALS(07) 02 DM 0000 当发生了非严重故障时,00000为ON 。 执行FAL(06)01后,ALM指示灯闪烁。 执行MSG (46)后,显示DM0100~DM0102的内容。 清除故障后00000为OFF,此时执行指令FAL(06)00,显示信息立即被清除。

104 执行FALS(07)02,ERR指示灯常亮、 RUN指示灯灭、停止执行程序。
分析程序功能(续) FAL(06) 00 MSG(46) DM 0100 00000 00001 FAL(06) 01 FALS(07) 02 DM 0000 当发生了严重故障时, 00001为ON 。 执行FALS(07)02,ERR指示灯常亮、 RUN指示灯灭、停止执行程序。 执行MSG(46),显示DM0000~0002的内容。 排除故障后可重新启动程序,显示的信息也被清除。 DM0000~DM0002中可存放与故障相关的提示性字符。

105 三、I/O刷新指令 功能 IORF(97) St E @ IORF(97) 当执行条件为ON时,刷新St~E之间的全部通道。
PLC在一个扫描周期中只刷新一次I/O点,这种工作方式影响了 I/O响应速度。 执行I/O刷新指令,可以随时刷新指定的通道,从而提高了I/O响应速度。

106 使用指令IORF 举例 分析程序功能 当20000 OFF→ON时,执行一次IORF ,刷新000通道。 执行下面两个语句时,
SET HR0000 00005 RESET HR0001 00006 20000 000 分析程序功能 当20000 OFF→ON时,执行一次IORF ,刷新000通道。 执行下面两个语句时, 其执行条件取决于执行IORF时,通道000的内容。

107 四、位计数指令 功能 BCNT(67) @ BCNT(67) N : 通道数 S:源首通道 D:目的通道
当执行条件为ON时,计算S~S+(N-1)之间所有通道中为ON的位数,结果以BCD码形式存在D中。

108 使用指令BCNT举例 分析程序功能 PLC上电后,每个扫描周期都执行BCNT。
CMP(20) 200 # 0008 BCNT(67) # 0001 HR0000 FALS(07) 01 25313 25505 PLC上电后,每个扫描周期都执行BCNT。 随时统计HR0000通道中为ON的位数,统计结果存在200通道中。 每个扫描周期都执行CMP,当HR0000中ON的位数超过8时,25505 ON。 执行FALS(07) 01,ERR指示灯亮,停止执行程序。


Download ppt "第五章 高速计数器控制指令."

Similar presentations


Ads by Google