我设置FIFO表的起始地址为DB1.DBW0,假设DB1.DBW0=3;DB1.DBW2的数据为2;DB1.DBW4的数据为5;DB1.DBW6的数据为6;执行一次FC85 FIFO指令后,DB1.DBW4中的数据5被取出,此时DB1.DBW2的数据变为1也没问题,此时DB1.DBW4的数据变为6;但是为什么DB1.DBW6的数据还是6啊,它的数据不是已经前移了嘛?不补0吗?
最佳答案
你观察的很仔细,而且执行也是对的。解释
DB1.DBW0=3 表示的是该表格最大的条目数为 3(表格长度)
DB1.DBW2=2 表示的是该表格中已含 2个条目
DB1.DBW4=5 第一个条目的内容为 5
DB1.DBW6=6 第二个条目的内容为 6
执行一次后,第一个条目的值 5 是取出了,并且此时条目数 DB1.DBW2=1,
DB1.DBW6 平移到了 DB1.DBW4,使得 DB1.DBW4此时的值变成了 6。但是会保持DB1.DBW6 原来的值,不会使其清零。
你不用担心,FC85 会根据它最前面的两个字,来寻址表格,不会越界。
参考链接中的 2.4.2. 先进/先出取出表格数据 FC85 ,官方测试的实例结果与你看到的是一样的。
https://support.industry.siemens.com/cs/document/76485433
提问者对于答案的评价:
谢谢 了解了
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc351405.html