![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=1738891606-FQNbWMQkYtKpcih3iribSKBuyaBkbScN-0-4e08c40a14c056c50126a3fc28cd6158)
(2)例说填表指令
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/Section0029.jpg?sign=1738891606-YVQLCM17yUA04huIo4KN1wnSNjfwYDCR-0-d4e16352bcb4fd9e9da02692681d163d)
如图4-84所示:
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/4d84.jpg?sign=1738891606-UwMSGuRnUP7SFTdIqARLwwvbskxFRi0D-0-75489b51572389680d97d71a008c4561)
图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=1738891606-A4b2JOlas8Sl8omgfwfYL7S1fIQsmh5y-0-78d0430d06a48cad0ca4b341b9a52a64)
(2)例说先进先出指令
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/Section0029.jpg?sign=1738891606-YVQLCM17yUA04huIo4KN1wnSNjfwYDCR-0-d4e16352bcb4fd9e9da02692681d163d)
① TBL指定的地址为VW100,说明表格的首地址为VW100。在取表指令执行之前表中共存放3个数据,所以实际填表数EC为“0003”,如图4-85所示。
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/4d85.jpg?sign=1738891606-vPoX0RsaS0maFHAchxGjtO3EHSl8daku-0-aceb0f8e0ecad280a37ea356766ec674)
图4-85 先进先出指令
② 当I0.2闭合时,执行先进先出指令(FIFO)。将表格(TBL)中的第一个条目“5432”移出,并将其存入DATA指定的地址(VW200)中。同时,表格中的其他数据均向上移动一个地址。表格实际填表数减1。
(3)例说后进先出指令
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/Section0029.jpg?sign=1738891606-YVQLCM17yUA04huIo4KN1wnSNjfwYDCR-0-d4e16352bcb4fd9e9da02692681d163d)
① TBL指定的地址为VW100,说明表格的首地址为VW100。在取表指令执行之前表中共存放3个数据,所以实际填表数EC为“0003”,如图4-86所示。
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/4d86.jpg?sign=1738891606-TfkAisLHdlFG7cXpzWsRz1AKXB7ES0uc-0-2a7c7b71428ea64d4bef58b63ff54686)
图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=1738891606-PoxwmAMRPwIW3uk34mMuL38zwuitkvEs-0-5182ea68300dcb9958380a7e021cea8a)
说明:查表指令与填表指令、后进先出取表指令和先进先出取表指令生成的表格配合使用时,实际填表数和数据条目数直接对应。
填表指令、后进先出取表指令和先进先出取表指令需要表示最大填表数的字,而查表指令不需要表示最大填表数的字。其差别如图4-87所示。
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/4d87.jpg?sign=1738891606-GXnL8QWd4dgpqfqvkukJUFSx5vX3YQaO-0-53b585c93fec9336bff46f2d9e539e60)
图4-87 表指令生成的表格比较
因此,应将查表指令的TBL操作数的地址设置得比相应的填表指令、后进先出取表指令和先进先出取表指令的TBL操作数高一个字(两个字节)。例如,填表指令创建的表格首地址为VW100,查表指令的TBL则为VW102。
(2)例说查表指令
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/Section0029.jpg?sign=1738891606-YVQLCM17yUA04huIo4KN1wnSNjfwYDCR-0-d4e16352bcb4fd9e9da02692681d163d)
① 命令参数(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=1738891606-yEk2Rvlf2WzcPUcffRU9Z0b2l2p2LREJ-0-1b4fafb192a9d1cd14f309ab7a8e1637)
图4-88 查表指令
4.11.4 存储器填充指令
(1)存储器填充指令格式和功能
存储器填充指令格式和功能如表4-69所示。
表4-69 存储器填充指令格式和功能
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/b4-69.jpg?sign=1738891606-aoQ3IYOrmtnV9n0o1pb9tMFztZ3wQe5S-0-deb080f2216facb44f692a3d598bd3e4)
(2)例说存储器填充指令
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/Section0029.jpg?sign=1738891606-YVQLCM17yUA04huIo4KN1wnSNjfwYDCR-0-d4e16352bcb4fd9e9da02692681d163d)
如图4-89所示,当I2.1接通时,该指令将从地址VW200开始的10个连续字地址,即VW200~VW218用0进行填充。
![](https://epubservercos.yuewen.com/95F10D/21838926108253506/epubprivate/OEBPS/Images/4d89.jpg?sign=1738891606-z1tbyZNFU0m09BNV7yDfrGmZWSKQLNgU-0-80f879b582d7954b1519f70e60350229)
图4-89 存储器填充指令