详解西门子PLC 中函数FC与FB的应用与区别
一、功能性预算和功能性预算的区别
1.FB功能块,带后台数据块FC-function,相当于function;
2.FB和FC块都是子程序,可以被其他FB和FC块或者OB、FB和FC块调用。
二。FB和FC的主要区别
1.FB使用后台数据块作为存储区,FC没有独立的存储区,使用全局DB或M区;
2.FB局部变量有STAT和TEMP,FC没有STAT是因为没有自己的存储区,TEMP本身无法设置初始值;
本质上,FB和FC的目的是一样的。无论什么逻辑要求,FB和FC都可以实现,只是实现的效率不同,这也和工程师的个人编程习惯有关。
三。FB块的优点
1.易于携带。对于控制逻辑相同、参数不同的被控对象,只要使用不同的背景DB,相同的FB块就可以很方便;
2.多背景,减少重复工作,提高效率;
3.多次调用时修改参数方便;
4.有独立的存储区;
四。FC块的优势
1、小巧灵活,对于调用次数不多的程序更容易理解;
2、不占用额外的存储资源;
动词 (verb的缩写)FB和FC模块引脚的定义
1.in-变量是外部输入的,只能由这个块读取,不能由这个块写入;
2.OUT——是这个块的输出,可以被这个块读写。其他程序只能读取值,但不能通过引脚写入值;
3.输入输出——输入输出变量。这个程序块和其他程序可以读写这个管脚的值;
4.Temp-temporary变量,顾名思义,是临时存储数据的变量。这些临时数据存储在CPU工作存储区的本地数据堆栈(L stack)中;
5.STAT-它总是在PLC运行期间存储。S7在后台数据块中定义静态变量(仅针对FB,FC和OB没有静态变量)。被调用的块运行时,静态变量可以被读取或修改,被调用的块结束后,静态变量保留在数据块中;
6.为什么定义的FB和FC块反复调用后会混淆?
对于多次调用的程序块,FB block建议更换调用不同的后台DB,而FC需要保证使用的存储地址不重复,即每次调用时,块内调用的地址不重复;
七。为什么带定时器或计数器的FB或FC调用一次ok,调用多次定时器或计数器就混淆了?
对于多次调用的FB和FC,如S7 TIMER和counter,需要在in接口中定义TIMER或Counter。每次调用FB或FC时,都会给它分配一个不同的计时器或计数器编号。对于IEC定时器和计数器,需要在in接口中定义Block_DB。每次调用FB或FC时,都需要为IEC定时器或计数器分配不同的DB模块。
八。临时变量引起的麻烦
临时变量可用于组织快速OB、功能FC和功能块FB。它们用于在执行块时临时存储数据。一旦块执行完成,堆栈的地址将为其他块重新分配。该地址的数据将不会被清除,直到它被其他块赋予新的值。应遵循“先赋值后使用”的原则。
九、导致程序运行异常的常见情况有几种。
1.一个block程序时有时无的运行,偶尔有一个或多个值不正常。
问题是“使用前赋值”必须遵循,否则,在每个扫描周期开始时,TEMP的值没有被显式赋值,这个地址的值将是随机的;
2.多个块使用TEMP,单独使用其中任何一个都是正常的,不能一起使用。
问题是TEMP在使用前未能赋值,block 1的TEMP中的值没有清零,但是CPU运行机制调用这个地址使用或者直接分配给block 2,导致程序混乱。由于内存运行机制没有公开,这个分配过程看起来是随机的,可能导致程序多次正常运行,运行一段时间后出现问题。只要遵循“第一
3.TEMP无法实现自锁。
这个问题就是TEMP的值不能像M点或者Q点一样保持上一个周期的值。TEMP在每个扫描周期都需要有明确的赋值,即先赋值(写),再使用(读写)。解决方案是FB可以使用STAT静态变量,FC可以使用M区或者全局DB地址;
X.摘要
1.不能先用,再分配;
2.不适合自锁线圈;
3.不适用于上升沿和下降沿;
4.遇到上述情况,FC块可以使用M区或者全局DB地址,FB块也可以使用自己后台DB的STAT静态变量。在FB和FC中使用第一次调用的临时变量时,必须先给它赋值,也就是写指令,而不是读指令。
- prev: 数控刀具选用指南之液压刀柄概述
- next: 数控加工螺钉紧固扭矩与轴向力的关系