分享

【跟着我一起来学习s7-200】33表指令

 老黄兄 2015-01-14

除了通信指令外,前面我们已经基本把所有指令讲完了,就只剩下表指令了,那么今天我们就学习最后一部分指令,表指令。我们的表指令有后进先出LIFO指令、先进先出FIFO指令、填表指令AD_T_TBL、存储区填充指令FILL_N和查表指令TBL_FIND。

2014-9-29 09:52 上传

下载附件 (1.19 KB)

那么什么是表呢,表它其实就是一段存储区域。一个表最多只能有100条数据,每个数据都是16位的。如果表溢出了,SM1.4会被置为1。我们要注意的是一个表中,首地址表示的是这个表的最大数据条数,第二个地址表示的是当前数据条数,从第三个地址往下,才是实际数据。

我们要注意的是要建立表格,首先要为表的最大条目数建立一个条目。如果没有这样做,那么是无法在表格中建立任何条目的。

下面我们先看一下后进先出LIFO指令的使用。

2014-9-29 09:52 上传

下载附件 (31.21 KB)

所以,LIFO指令是将表格中的最后一个条目移至输出内存地址,每次执行指令时,表格中的条目数减1。

下面我们再看一下先进先出FIFO指令的使用。

2014-9-29 09:53 上传

下载附件 (29.94 KB)

所以,FIFO指令是将表格中的第一个条目移至输出内存地址,表格中的所有其他条目均向上移动一个位置。每次执行指令时,表格中的条目数减1。

下面我们再看一下填表指令AD_T_TBL的使用。

2014-9-29 09:53 上传

下载附件 (42.73 KB)

所以,填表指令AD_T_TBL指令是向表格(TBL)中加入字值(DATA),新数据被增加至表格中的最后一个条目,每次向表格中增加新数据后,条目计数加1。我们要注意的是表格最多只可以有100个条目,不包括指定最大条目数和实际条目数这两个条目。如果过度填充表格的话,SM1.4会被置为1。

下面我们再看一下存储区填充指令FILL_N的使用。FILL指令是把包含在地址IN中的数据写入到从地址OUT开始N个连续字地址中。要注意的是数据类型是为字的,且N的范围是1至255。

2014-9-29 09:54 上传

下载附件 (1.41 KB)

那么以上的程序其实就是把VW0、VW2、VW4……VW20清零。

下面我们再看一下查表指令TBL_FIND的使用。TBL_FIND指令是在表格(TBL)中搜索符合一定规则的数据。从INDX开始搜索表,寻找符合PTN和CMD的数据。CMD被指定一个1至4的数值,分别代表 =、<>、<、>。如果找到符合条件的数据,那么INDX指向表格中该数的位置。

2014-9-29 09:54 上传

下载附件 (22.7 KB)

以上程序就是当I0.0接通时,在表格中搜索等于3130的十六进制数。

那么今天主要就学习了这个表指令。对于表指令也是比较少会用到,我们有个了解就可以了。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多