![PLC编程及案例手册](https://wfqqreader-1252317822.image.myqcloud.com/cover/804/41806804/b_41806804.jpg)
4.11 表功能指令
4.11.1 填表指令
(1)填表指令格式和功能
填表指令格式和功能如表4-66所示。
表4-66 填表指令格式和功能
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/b4-66.jpg?sign=1739019998-z7CZtYc3Hb3pSgN29I8hWRVrG1M3mQya-0-a85247ecd266a2ca924bb0e231982fd9)
(2)例说填表指令
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/Section0029.jpg?sign=1739019998-qDKUmp7Gx4Gkj4VoP9TfCEZMmiPW7yqS-0-f5152b1d6a1b89be370aa49eb51827c2)
如图4-84所示:
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/4d84.jpg?sign=1739019998-VQr8ZcGKtekfnXWSLUaQzrP02zWxt4mC-0-2916745faa738e9c871093c796561cde)
图4-84 填表指令
① 第一次扫描时,将最大填表数5装载到VW100,说明此表格最多可容纳5个条目,不包括VW100和VW102。
② 假设在填表指令执行之前表格中已经有两个数据“5432”和“8956”,所以存放实际填表数(EC)的单元VW102中数据为“0002”。
③ 当I0.0接通时,执行填表指令,将VW50中数值“1234”添加到VW100表格中数据0和数据1的下面,同时,实际填表数EC加1(0003)。
4.11.2 取表指令
(1)取表指令格式和功能
取表指令格式和功能如表4-67所示。
表4-67 取表指令格式和功能
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/b4-67.jpg?sign=1739019998-IiNazb2BVjTycTocdk6ptVK5KIp8PPZj-0-dc4a93448879f1dffa57666aa24b9202)
(2)例说先进先出指令
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/Section0029.jpg?sign=1739019998-qDKUmp7Gx4Gkj4VoP9TfCEZMmiPW7yqS-0-f5152b1d6a1b89be370aa49eb51827c2)
① TBL指定的地址为VW100,说明表格的首地址为VW100。在取表指令执行之前表中共存放3个数据,所以实际填表数EC为“0003”,如图4-85所示。
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/4d85.jpg?sign=1739019998-o0eJYvzu3N1ijiN0ko4BRYbWZoHdfP6m-0-f8315d7b0ac64f78c46ccc1a2ae3ee84)
图4-85 先进先出指令
② 当I0.2闭合时,执行先进先出指令(FIFO)。将表格(TBL)中的第一个条目“5432”移出,并将其存入DATA指定的地址(VW200)中。同时,表格中的其他数据均向上移动一个地址。表格实际填表数减1。
(3)例说后进先出指令
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/Section0029.jpg?sign=1739019998-qDKUmp7Gx4Gkj4VoP9TfCEZMmiPW7yqS-0-f5152b1d6a1b89be370aa49eb51827c2)
① TBL指定的地址为VW100,说明表格的首地址为VW100。在取表指令执行之前表中共存放3个数据,所以实际填表数EC为“0003”,如图4-86所示。
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/4d86.jpg?sign=1739019998-grkkBp0KPWPhSuww5NZjKxIPCP1cb9xz-0-3d1e089f7c8aa657ec6f41a42f6367c5)
图4-86 后进先出指令
② 当I0.1闭合时,执行后进先出指令(LIFO)。将表格(TBL)中的最后一个条目“2321”移出,并将其存入DATA指定的地址(VW200)中。同时,表格实际填表数减1。
4.11.3 查表指令
(1)查表指令格式和功能
查表指令格式和功能如表4-68所示。
表4-68 查表指令格式和功能
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/b4-68.jpg?sign=1739019998-K7XfeR9rZM9LHA0zStUWlxJveQVq9zBk-0-0ffa97facb7b91ae6b7f586b95565b5e)
说明:查表指令与填表指令、后进先出取表指令和先进先出取表指令生成的表格配合使用时,实际填表数和数据条目数直接对应。
填表指令、后进先出取表指令和先进先出取表指令需要表示最大填表数的字,而查表指令不需要表示最大填表数的字。其差别如图4-87所示。
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/4d87.jpg?sign=1739019998-kwRByg4SCL294dX09rfRPHZDJcMAq6kA-0-b0a4d6943f3cbbd1b238ba01025a6764)
图4-87 表指令生成的表格比较
因此,应将查表指令的TBL操作数的地址设置得比相应的填表指令、后进先出取表指令和先进先出取表指令的TBL操作数高一个字(两个字节)。例如,填表指令创建的表格首地址为VW100,查表指令的TBL则为VW102。
(2)例说查表指令
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/Section0029.jpg?sign=1739019998-qDKUmp7Gx4Gkj4VoP9TfCEZMmiPW7yqS-0-f5152b1d6a1b89be370aa49eb51827c2)
① 命令参数(CMD)的取值为1~4的常数,分别代表=、<>、<和>。
② 先将表格条目AC1设为0,当I0.1接通时,使表格从顶端开始查找一个等于16#2002的数据,查到数据2时,满足条件,则AC1为2。
③ 如果还要接着查找下一个匹配条目,则在再次调用查表指令之前,必须先使INDX增加1。查找到数据4为匹配的数据,则AC1为4。
④ 同样,如果还要接着查找,必须先使INDX再增加1。如果未找到匹配条目,则INDX值等于实际填表。一个表格最多可有100个数据条目。数据条目(搜索区域)编号为0~99(最大值)。
⑤ 如果要重新搜索,则要令INDX为0,从头开始。如图4-88所示。
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/4d88.jpg?sign=1739019998-4Wa5rziOHuQhuODxiw9y5tNIHWyHWzwa-0-d731a2902aee438fe2e2dfcd5e1dfa66)
图4-88 查表指令
4.11.4 存储器填充指令
(1)存储器填充指令格式和功能
存储器填充指令格式和功能如表4-69所示。
表4-69 存储器填充指令格式和功能
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/b4-69.jpg?sign=1739019998-PAvUuVcmchLpAeZzOkCYcSuZecxYJUDi-0-522bc59713c005ff1d040d02b4cbb713)
(2)例说存储器填充指令
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/Section0029.jpg?sign=1739019998-qDKUmp7Gx4Gkj4VoP9TfCEZMmiPW7yqS-0-f5152b1d6a1b89be370aa49eb51827c2)
如图4-89所示,当I2.1接通时,该指令将从地址VW200开始的10个连续字地址,即VW200~VW218用0进行填充。
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/4d89.jpg?sign=1739019998-96Q2xCKXy1ar087gmMxdMSOPNZsOaHgX-0-5d79bb485bff1a2ad0c2f15f0ba3ed6e)
图4-89 存储器填充指令