OB、FC、FB、SFC、SFB的区别

发布时间:2024-03-18
s7-300/400plc程序采用结构化程序,把程序分成多个模块,各模块完成相应的功能。结合起来就能实现一个复杂的控制系统。就像高级语言一样,用子程序实现特定的功能,再通过主程序调用各子程序,从而能实现复杂的程序。
在s7-300/400plc中写在ob1模块里和程序就是主程序,子程序写在功能(fc),功能块(fb)。
fc运行是产生临时变量执行结束后数据就丢失-----不具有储存功能
fb运行时需要调用各种参数,于是就产生了背景数据块db。例如用fb41来作pid控制,则它的pid控制参数就要存在db里面。fb具有储存功能
系统功能块(sfb)和系统功能(sfc)也是相当于子程序,只不过sfb和sfc是集成在s7 cpu中的功能块,用户能直接调用不需自已写程序。
sfc与fc不具有储存功能,fb和sfb具有储存功能。
ob模块相当于子程序,负责调用其他模块。如果程序简单只需要ob就可以实现。
用西门子plc编程时,可以用到功能块fb和功能fc(fb、fc都是组织块)资料上说fb与fc都可以作为用户编写的子程序,但是我不明白这两个组织块之间到底有什么区别阿?在应用上到底有什么不同之处吗?
fb--功能块,带背景数据块
fc--功能,相当于函数
他们之间的主要区别是:fc使用的是共享数据块,fb使用的是背景数据块
举个例子,如果您要对3个参数相同的电机进行控制,那么只需要使用fb编程外加3个背景数据块就可以了,但是,如果您使用fc,那么您需要不断的修改共享数据块,否则会导致数据丢失。fb确保了3个电机的参数互不干扰。
fb,fc本质都是一样的,都相当于子程序,可以被其他程序调用(也可以调用其他子程序)。他们的最大区别是,fb与db配合使用,db中保存着fb使用的数据,即使fb退出后也会一直保留。fc就没有一个永久的数据块来存放数据,只在运行期间会被分配一个临时的数据区。
在实际编程中,是使用fb还是fc,要看实际的需要决定。
fb与fc没有太大的差别,fb带有背景数据块,而fc没有。所以fb带上不同的数据块,就可以带上不同的参数值。这样就可以用同一fb和不同的背景数据块,被多个对象调用。
fc和fb像c中的函数,只不过fb可以生成静态变量,在下次函数调用时数据可以保留,而fc的变量只在调用期内有效,下次调用又重新更换。
这是一般的理解;fb需要背景数据块,而fc是没有的;参数的传递方式不同,fb的输入输出对应着背景数据块地址,而fc的输入输出是没有实际地址对应的,只有的程序调用时,才会和实际的地址产生对应关系。fb参数传递的是数据,fc参数传递的是数据的地址。
fb(功能块)的处理方式是围绕着数据块处理数据,他的入口参数和出口参数都是数据块里的数据,以及stat的数据都是数据块里,入口参数和出口参数、stat可以认为是静态数据,这些数据不会因为函数消失而逝去,他会一直保存在数据块里。fb里的变量与他的背景数据块是一一对应的,而他的对应并不是一层不变的。更确切的说,fb里的变量在调用时将根据ar2的值当作偏移量与背景数据块是一一对应。如果一个fb功能块里没有入口参数、出口参数及stat数据,他将不需要背景数据块,这时的fb和没有入口出口参数的fc就没有什么区别了,就只能使用临时变量和全局变量了。用很多人认为,fb的背景数据块必须由fb生成、fb里的第一个变量对应着背景数据块的第一个变量,还有就是由fb生成的数据块只能作为fb的背景数据块使用。其实这些理解是错误的,fb的背景数据块不一定是通过fb生成的,可以像生成共享数据块一样生成fb的背景数据块,换句话说,普通的数据块也可以作为fb的背景数据块,不过这种做法是有一定前提的,就是这个数据块的字节数必须大于等于fb所需的字节数,如果小于fb所需的字节数时,fb访问到超出背景数据块的变量时就会找不到变量的地址,肯定会出错了。fb里的第一个变量对应可以对应数据块字节数减去fb所需背景数据块字节数里的任意位置的变量,我觉得这个比较好理解,在多重背景里不就是这样吗。
上一个:201007J033LT4E,J 2010 0R033现货购买,厚声2010 33mΩ ±5% 3/4W
下一个:学生用的平板电脑多少钱一台,为什么很多人不建议买matebook14

触摸屏触屏笔记本,华为笔记本触摸屏换屏多少钱
如何把word文档的图片保存到电脑的桌面(怎么把word里的图片保存到电脑)
扣件式钢管脚手架搭设有何要求?
拆迁合同签订后什么时候打款,拆迁合同签订时要注意什么
去茶叶店买茶,都有哪些经验让你不被宰?
装修电源线接头注意事项
卖家一直不发货怎么投诉(长时间不发货怎么投诉)
RTT031240BTP现货库存,最新价格
硬盘常见种类,机械硬盘的种类和区别
wp8.1怎么换字体,iphone系统字体怎么换