5.3 表功能指令
在S7-200 PLC统中,一个表由表地址(表的首址)指明。表地址和第二个字地址所对应的单元分别存放两个表参数(最大填表数TL和实际填表数EC),之后是最多100个填表数据。
表只对字型数据存储,表的格式如表5-19所示。
1.表存数指令,如图5-9所示。
注:图中指令标注“????”为操作数。
图5-9 表存数指令
指令格式
LAD STL
表5-19 数据表格式
ATT DATA,TBL //将DATA的数填写入TBL表中
指令功能:
该指令在梯形图中有2个数据输入端,即DATA为数值输入,指出将被存储的字型数据;TBL为表格的首地址,用以指明被访问的表格。当使能输入有效时,将输入字型数据添加到指定的表格中。
表存数时,新存的数据添加在表中最后一个数据的后面。每向表中存一个数据,实际填表数EC会自动加1。
例如,将VW100中的数存入VW200的表中(VW100=1234)。
2.表取数指令
从表中取出一个字型数据有两种方式:先进先出式和后进先出式。一个数据从表中取出之后,表的实际填表数EC值减少1。两种方式的指令在梯形图中有2个数据端;输入端TB L为表格的首地址,用以指明访问的表格;输出端DATA指明数值取出后要存放的目标单元。如果指令试图从空表中取走一个数值,则特殊标志寄存器位SM1.5置位。
(1)先进先出指令,如图5-10所示。
注:表中指令标注“????”为操作数。
图5-10 先进先出指令
指令格式:
指令功能:
从TBL指定的表中移出第一个字型数据并将其输出到DATA所指定的字存储单元。取数时,移出的数据总是最先进入表中的数据。每次从表中移出一个数据,剩余数据则依次上移一个字单元位置,同时实际填表数EC会自动减1。
例如,在表VW200中取出第一个数据,并存入VW400中,如图5-11所示。
图5-11 例题
(2)后进先出指令,如图5-12所示。
注:表中指令标注“????”为操作数。
图5-12 后进先出指令
指令功能:
从TBL指定的表中取出最后一个字型数据并将其输出到DATA所指定的字存储单元。取数时,移出的数据是最后进入表中的数据。每次从表中取出一个数据,剩余数据位置保持不变,实际填表数EC会自动减1。
例如,在表VW200中取出最后一个数据,并存入VW400中。如图5-13所示。
图5-13 例题
3.查表指令,如表5-20所示。
通过表查找指令可以从数据表中找出符合条件数据的表中编号,编号范围为0~99。
表5-20 查表指令
注:表中指令标注“????”为操作数。
说明:
在梯形图中有4个数据输入端,即TBL为表格的首地址,用以指明被访问的表格;PTN是用来描述查表条件时进行比较的数据;CMD是比较运算符“?”的编码,它是一个1~4的数值,分别代表=、<>、<和>运算符;INDX用来存放表中符合查找条件的数据的地址。
如表为VW200,则TBL-FND表的格式,如表5-21所示。
表5-21 TBL-FND表格式
表查找指令执行之前,应先对INDX的内容清0。当使能输入有效时,从INDX开始搜索表TBL,寻找符合由PTN和CMD所决定的条件的数据,如果没有发现符合条件的数据,则INDX的值等于EC。如果找到一个符合条件的数据,则将该数据的表中地址装入INDX。
数据类型:TBL、INDX为字,PTN为INT,CMD为字节型常数。
表查找指令执行完成,找到一个符合条件的数据,如果想继续向下查找,必须先对INDX加1,然后重新激活表查找指令。
在语句表中运算符直接表示,而不用各自的编码。
例如,在上表中查找等于(CMD=1)16#2345的数,如图5-14所示。
图5-14 例题
为了从头开始查找,AC1的初值为0。查表指令执行后,AC1=1,找到了满足条件的数据1;查表中剩余的数据之前,AC1(INDX)应加1。第二次执行后,AC1=3,找到了满足条件的数据3,将AC1再次加1。第3次执行后,AC1等于表中填入的项数5(EC),表示表已查完,没有找到符合条件的数据。再次查表之前,应将INDX清0。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。