图5-24 输入表格的最大填表数
确定表格的最大填表数后,可用表功能指令在表中存取字型数据。表功能指令包括填表指令,表取数指令,表查找指令,字填充指令。所有的表格读取和表格写入指令必须用边缘触发指令激活。
5.3.1 填表指令
表填表(ATT)指令:向表格(TBL)中增加一个字(DATA)。如图5-25所示。 说明: (1) DATA为数据输入端,其操作数为:VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量, *VD, *LD, *AC;数据类型为:整数。
(2)TBL为表格的首地址,其操作数为:VW, IW, QW, MW, SW, SMW, LW, T, C, *VD, , *LD *AC;数据类型为:字。
(3)指令执行后,新填入的数据放在表格中最后一个数据的后面,EC的值自动加1。 (4)使ENO = 0的错误条件:0006(间接地址),0091(操作数超出范围),SM1.4(表溢出),SM4.3(运行时间)。
(5)填表指令影响特殊标志位:SM1.4(填入表的数据超出表的最大长度,SM1.4=1)。 【例5-16】填表指令应用举例。将VW100中的数据1111,填入首地址是VW200的数据表中(图5-23)。程序及运行结果如图5-26所示。
LD I0.0
ATT VW100, VW200
图5-26 例5-16题图
5.3.2 表取数指令
从数据表中取数有先进先出(FIFO)和后进先出(LIFO)两种。执行表取数指令后,实际填表数EC值自动减1。
先进先出指令(FIFO):移出表格(TBL)中的第一个数(数据0),并将该数值移至DATA指定存储单元,表格中的其他数据依次向上移动一个位置。
后进先出指令(LIFO):将表格(TBL)中的最后一个数据移至输出端DATA指定的存储单元,表格中的其他数据位置不变。
表取数指令格式如表5-20所示。
表5-20 表取数指令格式
LAD STL 说明 操作数及数据类型 FIFO TBL,DATA LIFO TBL,DATA 输入端TBL为数据表的首地址,输出端DATA为存放取出数值的存储单元 TBL:VW, IW, QW, MW, SW, SMW, LW, T, C, *VD, *LD, *AC。数据类型:字。 DATA:VW, IW, QW, MW, SW, SMW, LW, AC, T, C, AQW, *VD, *LD, *AC。 数据类型:整数。 使ENO = 0的错误条件:0006(间接地址),0091(操作数超出范围),SM1.5(空表)SM4.3(运行
时间)。
对特殊标志位的影
响:SM1.5(试图从空表中取数,SM1.5=1)。
【例5-17】表取数指令应用举例。从图5-26 的数据表中,用FIFO,LIFO指令取数,将取出的数值分别放入VW300,VW400中,程
序及运行结果如图5-27所示。
LD I0.1
FIFO VW200, VW300 LIFO VW200, VW400
图5-27 例5-17题图
5.3.3 表查找指令
表格查找(TBL-FIND)指令在表格(TBL)中搜索符合条件的数据在表中的位置(用数据编号表示,
编号范围为0~99)。其指令格式如图5-28所示。
(1)梯形图中各输入端的介绍
TBL:为表格的实际填表数对应的地址(第二个字地址),即高于对应的“增加至表格”、“后入先出”或“先入先出”指令TBL操作数的一个字地址(两个字节)。TBL操作数:VW, IW, QW, MW, SW, SMW, LW,
T, C, *VD, *LD, *AC 。数据类型:字。
图5-29 例5-18题图TN:是用来描述查表条件时进行比较的数据。
PTN操作数:VW, IW, QW,
MW, SW, SMW, AIW, LW, T, C, AC, 常量, *VD, *LD, *AC。数据类型:整数。
INDX:搜索指针,即从INDX所指的数据编号开始查找,并将搜索到的符合条件的数据的编号放入INDX所指定的存储器。INDX操作数:VW, IW, QW, MW, SW, SMW, LW, T, C, AC, *VD, *LD, *AC。数据类型:字。
CMD:比较运算符,其操作数为常量1~4,分别代表 =、<>、<, >。数据类型:字节 。 (2)功能说明
表格查找”指令搜索表格时,从INDX指定的数据编号开始,寻找与数据PTN的关系满足CMD比较条件的数据。参数如果找到符合条件的数据,则INDX的值为该数据的编号。要查找下一个符合条件的数据,再次使用“表格查找”指令之前须将INDX加1。如果没有找到符合条件的数据,INDX的数值等于实际填表数EC。一个表格最多可有100数据,数据编号范围:0~99。将INDX的值设为0,则从表格的顶端开始搜索。
(3)使ENO = 0的错误条件:SM4.3(运行时间),0006(间接地址),0091(操作数超出范围)。 【例5-18】查表指令应用举例。从EC地址为VW202的表中查找等于16#2222的数。程序及数据表如图5-29所示。
为了从表格的顶端开始搜索,AC1的初始值=0,查表指令执行后AC1=1,找到符合条件的数据1。继续向下查找,先将AC1加1,再激活表查找指令,从表中符合条件的数据1的下一个数据开始查找,第二次执行查表指令后,AC1=4,找到符合条件的数据4。继续向下查找,将AC1再加1,再激活表查找指令,从表中符合条件的数据4的下一个数据开始查找,第三次执行表查找指令后,没有找到符合条件的数据,AC1=6(实际填表数)。
5.3.4 字填充指令
字填充(FILL)指令用输入IN存储器中的字值写入输出OUT开始N个连续的字存储单元中。N的
数据范围:1~255。其指令格
式如图5-30所示。说明如下:
(1)IN为字型数据输入端,操作数为:VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量, *VD, *LD, *AC;数据类型为:整数。
N的操作数为:VB, IB, QB, MB, SB, SMB, LB, AC, 常量, *VD, 图5-31 例5-19题图
*LD, *AC; 数据类型:字节。
OUT的操作数为:VW, IW, QW, MW, SW, SMW, LW, T, C, AQW, *VD, *LD, *AC;数据类型:整数。 (2)使ENO = 0的错误条件:SM4.3(运行时间),0006(间接地址),0091(操作数超出范围)。 【例5-19】将0填入VW0~VW18(10个字)。程序及运行结果如图5-31所示。
从图5-31中可以看出程序运行结果将从VW0开始的10个字(20个字节)的存储单元清零。
5.4 习题
1. 已知VB10=18,VB20=30,VB21=33,VB32=98。将VB10,VB30,VB31,VB32中的数据分别送到AC1,VB200,VB201,VB202中。写出梯形图及语句表程序。
2. 用传送指令控制输出的变化,要求控制Q0.0~Q0.7对应的8个指示灯,在I0.0接通时,使输出隔位接通,在I0.1接通时,输出取反后隔位接通。上机调试程序,记录结果。如果改变传送的数值,输出的状态如何变化,从而学会设置输出的初始状态。
3. 编制检测上升沿变化的程序。每当I0.0接通一次,使存储单元VW0的值加1,如果计数达到5,输出Q0.0接通显示,用I0.1使Q0.0复位。
4. 用数据类型转换指令实现将厘米转换为英寸。已知1英寸=2.54厘米。 5. 编写输出字符8的七段显示码程序。
6. 编程实现下列控制功能,假设有8个指示灯,从右到左以0.5s的速度依次点亮,任意时刻只有一个指示灯亮,到达最左端,再从右到左依次点亮。
7. 舞台灯光的模拟控制。控制要求:L1、L2、L9→L1、L5、L8→L1、L4、L7→L1、L3、L6→L1→L2、L3、L4、L5→L6、L7、L8、L9→L1、L2、L6→L1、L3、L7→L1、L4、L8→L1、L5、L9→L1→L2、L3、L4、L5→L6、L7、L8、L9→L1、L2、L9→L1、L5、L8……循环下去。
按下面的I/O分配编写程序。
输入 输出
起动按钮:I0.0 L1:Q0.0 L6:Q0.5 停止按钮:I0.1 L2:Q0.1 L7:Q0.6
L3:Q0.2 L8:Q0.7
L4:Q0.3 L9:Q1.0 L5:Q0.4
8. 用算术运算指令完成下列的运算。
1)53 2)求COS30°
9. 将VW100开始的20个字的数据送到VW200开始的存储区。 10. 读程序,给程序加注释。
?第6章 特殊功能指令
本章要点
? ???????? 立即类指令的功能
? ???????? 中断指令的功能应用举例及实训
? ???????? 高速计数器指令、高速脉冲输出指令功能应用举例及实训 ? PID指令的原理及PID控制功能的应用 ? ????????? 时钟指令
6.1 立即类指令
立即类指令是指执行指令时不受S7-200循环扫描工作方式的影响,而对实际的I/O点立即进行读写操作。分为立即读指令和立即输出指令两大类。
立即读指令用于输入I接点,立即读指令读取实际输入点的状态时,并不更新该输入点对应的输入映像寄存器的值。如:当实际输入点(位)是1时,其对应的立即触点立即接通;当实际输入点(位)是0时,其对应的立即触点立即断开。
立即输出指令用于输出Q线圈,执行指令时,立即将新值写入实际输出点和对应的输出映像寄存器。 立即类指令与非立即类指令不同,非立即指令仅将新值读或写入输入/输出映像寄存器。 立即类指令的格式及说明如表6-1所示。
表6-1 立即类指令的格式及说明
LAD STL LDI bit AI bit OI bit 常开立即触点可以 LDNI bit ANI bit ONI bit 常闭立即触点可以 =I bit SI bit,N RI bit,N 说明 装载,串联,并联。 装载,串联,并联。 Bit:I 数据类型:BOOL 立即输出 立即置位 Bit:Q,数据类型:布尔 立即复位 操作数及数据类型 Bit:Q 数据类型:BOOL N: VB, IB, QB, MB, SMB, SB, LB, AC, 常量, *VD, *AC, *LD 数据类型:字节 6.2 中断指令
S7-200设置了中断功能,用于实时控制、高速处理、通信和网络等复杂和特殊的控制任务。中断就是终止当前正在运行的程序,去执行为立即响应的信号而编制的中断服务程序,执行完毕再返回原先被终止的程序并继续运行。
6.2.1 中断源
1. 中断源的类型
中断源即发出中断请求的事件,又叫中断事件。为了便于识别,系统给每个中断源都分配一个编号,称为中断事件号。S7-200系列可编程控制器最多有34个中断源,分为三大类:通信中断、输入/输出中断和时基中断。
(1)通信中断
在自由口通信模式下,用户可通过编程来设置波特率、奇偶校验和通信协议等参数。用户通过编程控制通讯端口的事件为通信中断。
(2)I/O中断
I/O中断包括外部输入上升/下降沿中断、高速计数器中断和高速脉冲输出中断。S7-200用输入(I0.0、I0.1、I0.2或I0.3)上升/下降沿产生中断。这些输入点用于捕获在发生时必须立即处理的事件。高速计数器中断指对高速计数器运行时产生的事件实时响应,包括当前值等于预设值时产生的中断,计数方向的改变时产生的中断或计数器外部复位产生的中断。脉冲输出中断是指预定数目脉冲输出完成而产生的中断。
(3)时基中断
时基中断包括定时中断和定时器T32/T96中断。定时中断用于支持一个周期性的活动。周期时间从1毫秒至255毫秒,时基是1毫秒。使用定时中断0,必须在SMB34中写入周期时间;使用定时中断1,必须在SMB35中写入周期时间。将中断程序连接在定时中断事件上,若定时中断被允许,则计时开始,每当达到定时时间值,执行中断程序。定时中断可以用来对模拟量输入进行采样或定期执行PID回路。定时器T32/T96中断指允许对定时间间隔产生中断。这类中断只能用时基为1ms的定时器T32/T96构成。当中断被启用后,当前值等于预置值时,在S7-200执行的正常1毫秒定时器更新的过程中,执行连接的中断程序。
2. 中断优先级和排对等候
优先级是指多个中断事件同时发出中断请求时,CPU对中断事件响应的优先次序。S7-200规定的中断优先由高到低依次是:通信中断、I/O中断和定时中断。每类中断中不同的中断事件又有不同的优先权,如表6-2所示。
一个程序中总共可有128个中断。S7-200在各自的优先级组内按照先来先服务的原则为中断提供服务。在任何时刻,只能执行一个中断程序。一旦一个中断程序开始执行,则一直执行至完成。不能被另一个中断程序打断,即使是更高优先级的中断程序。中断程序执行中,新的中断请求按优先级排队等候。中断队列能保存的中断个数有限,若超出,则会产生溢出。中断队列的最多中断个数和溢出标志位如表6-3所示。
表6-2中断事件及优先级
优先级分组 组内优先级 中断事件号 中断事件说明 0 通信中断 0 0 8 9 23 通信口0:接收字符 通信口0:发送完成 通信口0:接收信息完成 通信口0 中断事件类别