系统的表格存储格式:一个表由表地址(表的首地址)指明。 表地址和第二个字地址 所对应的单元分别存放两个表参数(最大填表数 TL 和实际填表数 EC )。之后是最多 100 个存表数据。
表只对字型数据存储,表的格式例如表4.21 所示。
表 4.21 数据表格式
单元地址 单元内容 说明
VW100 0006 TL=6,最多可填 6 个数,VW100 为表地址 VW102 0004 EC=4,实际在表中存有 4 个数据
VW104 1203 数据 0 VW106 4467 数据 1 VW108 9086 数据 2 VW110 3592 数据 3 VW112 **** 无效数据 VW114 **** 无效数据
4.4.1 表存数指令 ATT,表存数指令。
该指令在梯形图中有 2 个数据输入端:DATA 为数值输入,指出将被存储的字型数据或 其地址;TBL 表格的首地址,用以指明被访问的表格。当使能输入有效时,将输入字型数据
120 可编程序控制器应用教程(第二版)
添加到指定的表格中。
表存数特点:
表存数时,新存的数据添加在表中最后一个数据的后面。每 向表中存一个数据,实际填表数EC 会自动加 1。
表存数指令影响的特殊存储器位:SM1.4(溢出)。
使能流输出ENO 断开的出错条件:SM4.3(运行时间)、0006
(间接寻址)、0091(操作数超界)。
指令格式: ATT DATA, TBL 例: ATT VW200, VW100
如果仍是对表 4.21 存取,指令执行前 VW200 中的内容为 2222,则指令执行情况如表 4.22 所示。
表 4.22 指令 ATT 执行结果
操作数 单元地址 执行前内容 执行后内容 说明 DATA VW200 2222 2222 被填表数据及地址
VW100 0006 0006 TL=6,最大填表数为 6,不变化 VW102 0004 0005 EC 实际存表数由 4 加 1 变为 5 VW104 1203 1203 数据 0
VW106 4467 4467 数据 1 VW108 9086 9086 数据 2 VW110 3592 3592 数据 3
VW112 **** 2222 将 VW200 中的数据填入表中 TBL
VW114 **** **** 无效数据 4.4.2 表取数指令
从表中移出一个字型数据可有两种方式:先进先出式和后进先出式。一个数据从表中取 出之后,表的实际表数EC 值减 1。两种方式指令在梯形图中都有两个数据端:输入端 TBL 表格的首地址,用以指明被访问的表格;输出端DATA 指明数值取出后要存放的目标单元。
如果指令试图从空表中取走一个数值,则特殊标志寄存器位SM1.5 置位。
表取数指令影响的特殊存储器位:SM1.5(表空)。
使能流输出 ENO 断开的出错条件:SM4.3(运行时间)、0006(间接寻址)、0091(操 作数超界)。
1.FIFO,先进先出指令
当使能输入有效时,从 TBL 指明的表中移出第一个字型数据并将其输出到 DATA 所指 定的字单元。
FIFO 表取数特点:
取数时,移出的数据总是最先进入表中的数据。每次从表中移 出一个数据,剩余数据依次上移一个字单元位置,同时实际填表数
EC 会自动减 1。
指令格式: FIFO TBL, DATA 例: FIFO VW100, AC0
如果仍是对表4.21 存取,则指令执行情况如表 4.23 所示。
表 4.23 指令 FIFO 执行结果
操作数 单元地址 执行前内容 执行后内容 说明
DATA AC0 空 1203 从表中取走的数据及输出
TBL VW100 0006 0006 TL=6,最大填表数为 6,不变化 VW102 0004 0003 EC 实际存表数由 4 减 1 变为 3 VW104 1203 4467 数据0,剩余数据依次上移一格 VW106 4467 9086 数据1
VW108 9086 3592 数据2 VW110 3592 **** 无效数据 VW112 **** **** 无效数据 VW114 **** **** 无效数据 2.LIFO,后进先出指令
当使能输入有效时,从 TBL 指明的表中移出最后一个字型数据并将其输出到 DATA 所 指定的字单元。
LIFO 表取数特点:
取数时,移出的数据是最后进入表中的数据。每次从表中取出 一个数据,剩余数据位置保持不变,实际填表数EC 会自动减 1。
指令格式: LIFO TBL, DATA 例: LIFO VW100, AC0
如果仍是对表4.21 存取,则指令执行情况如表 4.24 所示。
表 4.24 指令 LIFO 执行结果
操作数 单元地址 执行前内容 执行后内容 说明
DATA AC0 空 1203 从表中取走的数据输出到AC0 VW100 0006 0006 TL=6,最大填表数为 6,不变化 VW102 0004 0003 EC 实际存表数由 4 减 1 变为 3 VW104 1203 1203 数据0,剩余数据不移动 VW106 4467 4467 数据1
VW108 9086 9086 数据2 VW110 3592 **** 无效数据 VW112 **** **** 无效数据 TBL
VW114 **** **** 无效数据
122 可编程序控制器应用教程(第二版)
4.4.3 表查指令
FND?,表查指令。通过表查指令可以从字型数表中找出符合条件的数据所在的表中数 据编号,编号范围为0~99。
在梯形图中有 4 个数据输入端:TBL 表格的首地址,用以指明被 访问的表格;PTN 是用来描述查表条件时进行比较的数据;CMD 是比 较运算符“?”的编码,它是一个 1~4 的数值,分别代表=、<>、<
和>运算符;INDX 用来指定表中符合查找条件的数据的地址。
由 PTN 和 CMD 就可以决定对表的查找条件。例如,PTN 为 16#2555,CMD 为 3,则查找条件为“<2555(16 进制)”。
表查指令执行之前,应先对INDX 的内容清 0。当使能输入有效时,从 INDX 开始搜索表 TBL,寻找符合由 PTN 和 CMD 所决定的条件的数据,如果没有发现符合条件的数据,则 INDX 的值等于 EC。如果找到一个符合条件的数据,则将该数据的表中地址装入 INDX 中。
表查指令执行完成,找到一个符合条件的数据,如果想继续向下查找,必须先对 INDX 加1,以重新激活表查找指令。
查表指令不影响特殊存储器位。使能流输出 ENO 断开的出错条件:SM4.3(运行时 间);0006(间接寻址);0091(操作数超界)。
在语句表中运算符直接表示,而不用各自的编码。
指令格式: FND= TBL, PTN, INDX (查找条件:=PTN)
FND<> TBL, PTN, INDX (查找条件:<>PTN)
FND< TBL, PTN, INDX (查找条件:<PTN)
FND> TBL, PTN, INDX (查找条件:>PTN)
例: FND> VW100, VW300, AC0
如果仍是对表4.21 进行操作,指令的执行结果如表 4.25 所示。
表 4.25 表查指令执行结果
操作数 单元地址 执行前内容 执行后内容 说明
PTN VW300 2000 5000 用来比较的数据
INDX AC0 0 2 符合查表条件的单元地址
CMD 无 4 4 4 表示为>
VW100 0006 0006 TL=6,最大填表数,不需要 VW102 0004 0004 EC 实际存表数
VW104 1203 1203 数据0 TBL
VW106 4467 4467 数据1 VW108 9086 9086 数据2 VW110 3592 3592 数据3 VW112 **** **** 无效数据 TBL
VW114 **** **** 无效数据