首先,我们以IEC61131来阐述一下FB与FC的不同:
在61131标准中:
1、FB具有独立的存储空间,而FC不具备。
2、FB允许使用静态变量,而FC不允许。
3、FB允许使用输入输出变量,而FC仅具有输入或者输出变量。
4、FC中不允许读写全局变量。
嗯,大致也就是以上4点。
这是针对于IEC61131标准而言,但是西门子虽然号称支持IEC61131标准,但不是一个听话的孩子。
1、FB具有背景数据块DI,FC没有,但是,FC可以通过独享的共享数据块(DB)来达到类似的功能。在其他厂牌的PLC中,FB具有的专属空间有PLC的操作系统进行内存分配,而在西门子中,这个工作是通过用户建立数据块来实现自我分配。
2、在西门子中,FC与FB均具有静态变量的能力。
3、FB通过读写DI来实现对变量的读写,而FC则通过读写共享数据块来实现。
4、共享数据块也可以理解为全局变量,因此,在西门子中,FC可以读写全局变量。
西门子在FB,FC的编写中给予了用户极大的灵活性,但是也同时增加了编程出错的几率,另一方面,由于编程中的灵活而导致程序上使用的不规范,从而使得在西门子PLC编写的程序向其他品牌PLC编写的程序移植困难。这对于用户来说,其为西门子编写的FB,FC,当使用其他品牌时,不得不重新编写。
而对于SFC,SFB来说,只不过这些功能块由西门子提供并固化在PLC的ROM中,因此,其根本区别与FB,FC的区别相同。
以上仅表示个人见解。
Good Luck~