在通讯或者工艺要求有较多的数据存取中,还是经常需要用到表指令的,因此各个厂家的PLC中基本都有表指令,今天测试了三菱FX5UPLC中的先进先出读取指令,可以说这个指令稍微有点费解,因此记录一下!
三菱PLC中的先进先出指令中SFRD(P)是用于先入先出控制的数据读取指令,SFWR(P)是用于先入先出以及先入后出控制的数据写入指令!---这是其手册上的官方表述,今天先来说一下这个SFRD指令!
我简单做了一段程序:
![15d55768542b7936b165f387c48fe4dd.png](https://i-blog.csdnimg.cn/blog_migrate/ade9ed005dde69944c2f6828e44afcb9.jpeg)
用来测试读取指令的程序
还是直接来看程序的监控动态图吧:
![dc9f4cece01f46059003ca52981ee252.gif](https://i-blog.csdnimg.cn/blog_migrate/7fd3b0cd4e3ca6c7c8827e7eda4b5a4c.gif)
先入先出读取指令监控动态图
我简单介绍一下这个程序,SM402是FX5U PLC中的一个特殊点,就是CPU运行后为1一次,用来做初始化,可以看到我给了D0一个初始值10,给了D1开始的字符串'ABCDEFGHIJKLMN'这样几个字符,其实就是D1中存着AB,D2中存在CD,D3存EF,D4存GH,D5存IJ,依次类推!---也就是说第一行程序就是用来给初始值的!
第二行程序就M1这个点,我在画面上人为的让其接通和断开,来让SFRDP指令执行。
从动态图可以看到:'ABCDEFGHILMN'被写入D1-D7中,在使用SFRD一次指令后,D1的内容被先读取出来,送到D30中,而后相当于D1空了,D2-D5中的内容前移,D5又空了把D6中的内容复制到D5中去!D6中的内容始终不变!
结合三菱的手册中的说法,这段SFRD D0 D30 K7,就可以理解为是依次将D1中的内容读取出来传送到D30中,读取的内容有(7-1)个字,也就是最终实现对D1-D6中的内容读取,但是总是从D1这个字读取,下边的整体上移,上移后的空位用D6中的内容去补充!当D0为0,则程序不再执行,D30中的值就会停止变化!
就简单记录到这里,虽然这个指令表述起来有点不好表述,但是配合动态图来看,理解起来还是很容易的!