在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