西门子S7-400中央处理单元CPU416-3
西门子S7-400中央处理单元CPU416-3
西门子S7-400中央处理单元CPU416-3
西门子PLC中FB和FC块的区别
在PLC的学习过程中,尤其是初学者更多的会遇到这样的问题,那就是FC和FB到底有什么样的区别?那么今天小文老师你就和大家用这一篇文章,让你直接明白FC和FB的区别到底是什么!!
带背景数据块的功能块
FC - function,相当于函数FB,FC块相当于子程序,可以被其他FB、FC块或者OB、FB、FC块调用。
主要区别是:
FB使用后台数据块作为存储区域,FC没有独立的存储区域,使用全局DB或M区域的FB局部变量有STAT和TEMP,FC没有STAT是因为没有自己的存储区域,TEMP本身无法设置初始值。本质上,FB和FC达到了同样的目的;无论什么逻辑要求,FB和FC都可以实现。只是实现效率不同,这也和工程师个人的编程习惯有关。
*也可以理解为:FC使用共享数据块,FB使用后台数据块
FB块的优点:
1.便于携带。对于控制逻辑相同、参数不同的被控对象,只要使用不同的背景DB,相同的FB块就方便了。
2.多背景,减少重复劳动,提高效率。
3.多次调用时,方便修改参数。
4.有一个独立的储物区。
FC块的优点:
1.小巧灵活,更容易理解不被多次调用的程序。
2.没有占用额外的存储资源。
PLC知识,西门子PLC知识
局部变量(Local variables)指在程序中只在特定过程或函数中可以访问的变量。局部变量是相对于全局变量而言的。在PLC中局部变量应用不是很多,西门子PLC 则引入局部变量,成为PLC中独具特色的功能。
TEMP(临时变量)为暂时保存在局部数据区中的变量。只有在执行该POU时,定义的临时变量才被使用,POU执行完后,不再使用临时变量的数值。在主程序或中断程序中,局部变量表只包含TEMP变量。子程序的局部变量表中还有三种变量:IN(输入变量)、OUT(输出变量)、IN_OUT(输入/输出变量)。
在局部变量表中赋值时,只需指定声明局部变量的类型(TEMP、IN、IN_OUT或OUT)和数据类型(参见SIMATIC和IEC1131-3的数据类型),但不指定存储器地址,程序编辑器自动地在L存储区中为所有局部变量指定存储器位置。起始地址为LO,每字节8位,能访问到位。字节、字和双字在局部存储器中按字节顺序分配,例如LBx、LWx或LDx。
局部变量作为参数向子程序传递时,在该子程序的局部变量表中指定的数据类型必须与调用POU中的数据类型值匹配。例如,在主程序OB1中调用子程序SBR0,使用名为INPUT1的全局符号作为子程序的输入参数。在SBR0的局部变量表中,已经定义了一个名为FIRST的局部变量作为该输入参数。当OB1调用SBRO时,INPUT1的数值被传入FIRST,INPUT1和FIRST的数据类型必须匹配。
在程序中使用符号名时,程序编辑器首先检查有关POU的局部变量表,然后检查符号表/全局变量表。如果某符号名在两处都没有定义,程序编辑器则将其视为全局符号,程序编辑器指定一条绿色波浪状下划线,并将名称括在双引号中,例如“UndefinedLocalVar”(未定义的局部变量)。如果后来对该符号名赋了值,则程序编辑器不会自动再次读取局部变量表并修改它。为了将该符号名作为局部变量使用,必须手工删除程序代码中的引号,并在符号名前插入#号,例如改为#UndefinedLocalVar。
各子程序*多可调用16个输入/输出参数,如果超出16个,将返回错误。选择希望的变量类型所在的行,并在名称域中键入变量名称,在数据类型域中键入数据类型。不需在局部变量表中的变量名称前加#号,#号只在程序代码中的局部变量名之前使用。
局部变量名可包含数字、字母和下划线(_),也可以包含扩展字符(ASCII128~255)。第一个字符必须是字母或扩展字符,关键字不能作为符号名。
局部变量表中的变量名被下载和存储在CPU存储器中,使用较长的变量名将占用较多的存储空间。