关于S7-300的表指令

在S7-300中,有填表指令、先进先出的表指令,不知是否有可以删除表中数据的指令,例如,如果原来的表是
                DB1.DBW0       5
                 DB1.DBW2       1
                 DB1.DBW4       2
                 DB1.DBW6       3
                 DB1.DBW8       4
                 DB1.DBW10     5
执行表中删除数据的指令后,例如要删除DB1.DBW6的数据,表的数据变为
                DB1.DBW0         4
                 DB1.DBW2         1
                 DB1.DBW4         2
                 DB1.DBW6         4
                 DB1.DBW8         5
                 DB1.DBW10       0
如果没有这样的指令,编写程序应该如何编?

问题补充:
我认为用fifo指令没有用,如果只是删除第一个数据,用一次fifo指令就可以,如果是删除第二个数据,用两次fifo指令肯定不对,因为这样表中的第一个数据也删除了,而且显示表格中已输入的条目数也不对。按理我只是删除一个数据,这样执行两次操作后,表格中已输入的条目数实际是减了2,所得到的表格与自己想要得到的表格不对.

最佳答案

最好用语句表来编程,指定几个形参,一个是删除的位置,一个是总长度,然后用指针的方式来实现编程。如:

in:delwz: int
      long:int

l delwz
slw 4
lar1
opn db1
l long
l delwz
-i
a1:t mw10
    l w[ar1,p#2.0]
    t w[ar1,p#0.0]
    +ar1 p#2.0
loop a1
通过以上程序实现控制删除,也就是根据要删除的位置,将后面的数据直接向前移动一次就可以了。

提问者对于答案的评价:
谢谢回答

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc231589.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日
下一篇 2018年12月1日

相关推荐