使用SCL编写FIFO功能块
一、 导读
前几天一位搞电气的朋友问S7-1200中如何做个先入先出的功能,说原来用S7-200SMART的时候有填表指令和FIFO指令可以实现该功能,现在S7-1200中找了一圈都没有找到相关的指令。 其实要实现这个功能可直接使用SCL的编程方法编写一个这样的功能块就可以了,(在文章的结尾会为大家提供参考示例程序和SCL相关的学习资料,供有需要的朋友下载学习)。
二、FIFO功能的条件分析
1)设置一个堆栈的缓存区,大小可自由指定,如指定大小为10个字的存储空间。 2)设置一个入栈条件变量和一个出栈条件的变量,数据类型为BOOL。 3)设置一个需要入栈的数据地址,该地址使用和缓存区指定的相同的数据类型。 4)设置一个出栈后数据存放的地址,该地址使用和缓存区指定的相同的数据类型。 5)设置一个指针,用来指示缓冲区中的地址 6)入栈时把需要入栈的数据放入到通过指针指定的缓存区的地址中,数据放完后指针加1,指向下一个地址。 7)出栈的时候,把缓冲区中的第一地址数据独处到出栈数据存储的地址,然后原缓冲器中的数据每个数据都往前移动。
三、FIFO程序块编写
新建一个FB块并对该FB块命名为”FB_FIFO”,该块的编程语言选着SCL编程语言,在该FB块的接口区中建立如下图所示的接口区变量。
接口区定义完成后,使用SCL编写对应的程序,通过REGION指令把程序范围入栈操作和出栈操作两段。
在OB块中调用该功能块,并新建一个DB块,按在FB块接口区中定义的变量建立相关的变量。
四、结语
在西门子PLC中很多没有的指令或是功能块我们可根据要求自行搭建,这对应后续使用来说会很方便,在搭建功能块或是指令时SCL编程语言的应用就极为重要了,所以对于SCL编程语言的学习 ,个人认为是每一位PLC工程师都应该去学习掌握的。