什么?!学会FC与FB程序块就能加工资!
在西门子系列PLC中,从S7-1200PLC开始就有FC和FB程序块了,但在使用的时候,一些初学者还是不好理解,以至于不知道该如何选择。,我们就用大白话的方式给大家讲解FC与FB的功能。
如图1所示(餐馆、厨师与食材图),有一家餐馆,餐馆家有厨师、设备等。厨师只要把“食材”买好,然后做饭菜,做好了之后就有“美味佳肴”享用了。那么软件中的FC和FB功能与这个“餐馆”非常类似。我们把“输入数据”给到FC或者FC程序块,然后程序块将数据加工,得到了“输出数据”。这个过程我们把“输入数据”比作“食材”,把“代码”比作“厨师”,把“输出数据”比作“美味佳肴”。
图1:FC与FB的作用
既然我们把FC和FB都比作餐馆的话,那它们的区别在哪里呢?我们看图2,分别有“A餐馆”和“B餐馆”,A餐馆没有储藏室,所以A餐馆的厨师要把食材从储藏室拿出来进行加工,当加工完了,成为了“美味佳肴”之后,把这道“美味佳肴”放到“储藏室”去,然后当做菜量比较大,一旦多了起来,每次取食材,端菜放进储藏室要来回折返好多次,这就比较麻烦了。并且这个储藏室也是大家公用的,B餐馆也可以采用类似的方法进行菜品加工。储藏室就是“共享DB或者位存储器”。
B餐馆的话,有专门的储藏室,所以它就不需要折返去公用的储藏室去拿食材了。并且每新开一家B餐馆都自带储藏室,这样话就非常的方便了。B储藏室就类似于程序中的“背景DB”。
图2:FC与FB
FC是什么呢?函数 (FC) 是不含存储区的代码块。通过函数可在用户程序中传送参数。FB或FC在使用时,都可以使用带形式参数与不带形式参数的FB/FC,带参数的FB/FC可以实现重复调用。
带形式参数与不带形式参数的程序块有什么区别呢?我们还是以餐馆的形式举例。不带形式参数的FC:如图3所示,有两家“FC餐馆”,它们每天做的菜只能是固定的,不能根据不同的菜单而做菜。如果要做出不同的菜的话,只能再开一家餐馆,这种就是不带参数的FC程序。这种方式和我们在OB1主程序块中编程基本上一样(使用的都是全局变量),如图4所示。但是这种不带参数的FC编程的话,需要注意是一些状态数据的值,否则可能会造成数据错误。
比如程序,如图5,当“FC1风机控制”程序块中的“Q0.4”自锁了,然后断开“OB1块”中的“M0.0”,这个时候的Q0.4是不会为“0”的,它还保持为“1”的状态。这个就是相当于我们厨师做好了菜,然后把门关了,菜仍然是在那里。如果是先把“Q0.4”断开了,再把“M0.0”断开,这个时候的“Q0.4”就是为“0”了。
图3:FC编程
图4:FC编程
图5:OB1调用FC程序
既然我们说了不带参数的FC就是不能根据菜单来做菜就很不方便,所以就用带参数的FC来解决这个问题。带参数的FC如图6所示。其中个FC3程序中的“I0.0” “I0.1” “IQ0.0”和第二FC3程序“I0.2”“I0.3”“Q0.1”这些就是不同的菜单,根据不同的输入菜单就可以很方便的做好菜。
图6:带参数的FC程序
要编写带参数的FC程序,需要先定义一些接口数据。其中接口类型主要分为5种,如图7所示。
图7:带参数的FC接口
1)Input接口类型:类似于餐馆往餐馆里送食材,只负责给进去,不需要拿出来。
2)Output接口类型:类似于餐馆里做好了菜,然后通过只负责Output接口往外送出来。
3)Inout接口类型:类似于往餐馆里送食材,然后还立即有人给你回复。
4)Temp接口类型:类似于小餐馆里写好的小单子(上面写了每桌客人需要做的菜送到厨房),只起中间过渡作用,然后后面的客人的菜单把前面人的菜单覆盖。
5)Constant接口类型:是常量,可以用符号代替数值。
①带参数的FC编程示例(起保停程序)如图8:
图8:带参数的FC程序
②使用带参数FC编写星三角启动程序,如图9和图10:
图9