【跟着我一起来学习s7-200】33表指令2015-05-13除了通信指令外,前面我们已经基本把所有指令讲完了,就只剩下表指令了,那么今天我们就学习最后一部分指令,表指令。我们的表指令有后进先出LIFO指令、先进先出FIFO指令、填表指令AD_T_TBL、存储区填充指令FILL_N和查表指令TBL_FIND。那么什么是表呢,表它其实就是一段存储区域。一个表最多只能有100条数据,每个数据都是16位的。如果表溢出了,SM1.4会被置为1。我们要注意的是一个表中,首地址表示的是这个表的最大数据条数,第二个地址表示的是当前数据条数,从第三个地址往下,才是实际数据。我们要注意的是要建立表格,首先要为表的最大条目数建立一个条目。如果没有这样做,那么是无法在表格中建立任何条目的。下面我们先看一下后进先出LIFO指令的使用。所以,LIFO指令是将表格中的最后一个条目移至输出内存地址,每次执行指令时,表格中的条目数减1。下面我们再看一下先进先出FIFO指令的使用。所以,FIFO指令是将表格中的第一个条目移至输出内存地址,表格中的所有其他条目均向上移动一个位置。每次执行指令时,表格中的条目数减1。下面我们再看一下填表指令AD_T_TBL的使用。所以,填表指令AD_T_TBL指令是向表格(TBL)中加入字值(DATA),新数据被增加至表格中的最后一个条目,每次向表格中增加新数据后,条目计数加1。我们要注意的是表格最多只可以有100个条目,不包括指定最大条目数和实际条目数这两个条目。如果过度填充表格的话,SM1.4会被置为1。下面我们再看一下存储区填充指令FILL_N的使用。FILL指令是把包含在地址IN中的数据写入到从地址OUT开始N个连续字地址中。要注意的是数据类型是为字的,且N的范围是1至255。那么以上的程序其实就是把VW0、VW2、VW4……VW20清零。下面我们再看一下查表指令TBL_FIND的使用。TBL_FIND指令是在表格(TBL)中搜索符合一定规则的数据。从INDX开始搜索表,寻找符合PTN和CMD的数据。CMD被指定一个1至4的数值,分别代表=、、、。如果找到符合条件的数据,那么INDX指向表格中该数的位置。以上程序就是当I0.0接通时,在表格中搜索等于3130的十六进制数。那么今天主要就学习了这个表指令。对于表指令也是比较少会用到,我们有个了解就可以了。