西门子PLC中函数FC的使用方法
来源:电气控制与PLC应用
函数和函数块作为模块化编程的重要组成部分,在PLC 用户程序中有着相当频繁的应用。两者在生成与使用的过程中都有一定的相似,且都不能单独使用。而需要赋予特定的功能,由组织块(OB)直接或者间接进行调用。
函数(FC)是用户程序中不带存储器的代码块,可以视为具有一定功能的独立子程序,可以在OB 中进行调用。其内的程序编写与在 OB 主程序中相同,用户在函数中编写程序,在其他代码块中调用该函数时将执行此程序。函数FC有两个作用:
1)作为子程序使用,即将相互独立的控制设备分成不同的FC编写,统一由OB块调用,这样就实现了对整个程序进行结构化划分,便于程序调试及修改,使整个程序的条理性和易读性增强。
2)可以在程序的不同位置多次调用同一个函数,即函数中通常带有形参,通过多次调用,并对形参赋值不同的实参,可实现对功能类似的设备统一编程和控制。
函数接口区:
每个函数都带有形参接口区,在接口区可以自定义函数的局部变量。FC 接口区的参数表中包括 Input(输入参数)、Output(输出参数)、InOut(输入/输出参数)、Temp(临时变量)、Constant(常数)、Return(返回值),每种形参类型可以定义多个变量,形参接口用于进行数据传递。本地数据包括临时数据及本地常量。函数接口区如图1所示。
•Input(输入参数):只读参数,调用函数时将用户程序的数据传递到函数中,调用的实参可以为常数或 I0.0、IB1 此类具体输入地址。
•Output(输出参数):只写参数,调用函数时将函数执行结果传递到用户程序中,调用的实参只能为 Q0.0、QB1 此类具体输出地址。
•InOut(输入/输出参数):读/写参数,接收数据后进行运算,然后将结果返回。调用的实参不能为常数,可用于函数、函数块。
•Temp(临时变量):用于存储临时中间结果的变量,不参与数据的传递,临时变量在函数调用时生效。应遵循先赋值后使用的原则。
•Constant(常数):在块中使用,且带有声明符号的常量。可用于函数、函数块和组织块。注:局部常量不显示在背景数据块中。
•Return(返回值):返回到调用块的值。

图1 函数接口区
1.无形参函数(子程序功能)
在函数的接口数据区中可以不定义形参变量,即调用程序与函数之间没有数据交换,只是运行函数中的程序,这样的函数可作为子程序调用。使用子程序可将整个控制程序进行结构化划分,清晰明了,便于设备的调试及维护。例如控制三个相互独立的控制设备,可将程序分别编写在三个子程序中,然后在主程序中分别调用各个子程序,实现对设备的控制,程序结构如图2所示。
注意:子程序中也可以带有形参,是否带有形参应根据实际应用而定。
图2 无形参函数FC调用
2.带有形参的函数
在应用中常常遇到对许多相似功能的设备进行编程。例如控制三组电机,每个电机的运行参数相同,如果分别对每一个电机编程,则除输入输出地址不同外,每个电机控制程序基本相同,重复编程的工作量比较大。使用函数可以将一个电机的控制程序作为模板,在程序中多次调用该函数,并赋值不同的参数,即可实现对多个电机的控制。注意:函数的形参只能用符号名寻址,不能用绝对地址。下面以创建的一个例子进行说明。
函数的创建
打开博途软件的项目视图,创建一个新项目。用鼠标双击项目树下的“添加新设备”,添加CPU 1215C,如图3 所示。

图3 添加PLC
单击项目视图下的“PLC_1”,继续单击“程序块”,用鼠标双击下边的“添加新块”,打开“添加新块”对话框后,单击其中的“函数”标志,FC 的默认编号为 1,默认的语言为 LAD(梯形图),单击“确定”按钮。此时返回项目树文件夹,在其“程序块”下可以看到新生成的FC1。FC1 的创建过程如图 4 所示。
图4 函数生成
在接口区可以自定义函数的参数,如图5,6所示。

图5接口参数区

图6 接口参数的定义
双击新建立的 FC,进行程序编写,如图 7 所示,此时的“输出”不是单纯意义上的输出,同时对该变量赋予了一个常开触点,因此需要在 InOut下定义该变量。(Inout既做输入又做输出,在FC中做自锁时,要把这个“输出”放在inout中。因为做自锁时,有需要读入“输出”这个参数的原因,然后形成自锁)

图7 程序编写
在定义变量后,函数(FC)中所使用的参数只以“名称”的形式出现,这些由“名称”给出的参数被称为形参。在调用块中对“名称”所赋予的具体数值或具体地址,如100、I0.0、MB1等,被称为实参。如图8所示。

图8 给形参赋值
在主程序中调用在FC 内部定义的变量时,为各个形参指定对应的实参。然后双击主程序“Main[OB1]”,将项目树下的“块_2”拖到右侧的程序区的水平“导线”上,在程序中可以对函数进行多次调用,并赋予不同的实参,由此对多个变量重复 相同操作,实现模块化编程,极大程度上简化了程序结构。如图9所示。

图9 函数子程序调用
- 9月交付7327台创历史新高 firefly萤火虫领跑高端小车市场
- AIVA ME7巴黎全球首秀 仿生设计落地首款量产车
- 限时售14.99万起 深蓝S07 AI激光版上市 800V平台/续航最高725km
- 全程3605公里! 蔚来丝绸之路换电路线正式贯通
- 奕境X9满配华为乾崑全栈智能 售27.98万元起
- 捷途旅行者7预售14.99万起 燃油/插混动力 纯电续航251km
- 广汽传祺越7上市 权益价16.18万元起
- 选装价1.08万起 蔚来ES8推出揽月套装 22英寸锻造轮圈+曙光金卡钳
- 预售26.98万起 智界RX新增两款车型 搭载81度电池/续航702km
- 双车交出亮眼成绩单 蔚来ES9、全新ES8各自领跑细分市场
- 极氪9X德国市场起售价约93万元 成为欧盟售价最高中国量产车
- 成都丰田普拉多中东版最高降7.8万 欢迎前来试驾
- 高新西皓影新能源价格16.59万起 优惠高达6.00万
- 中创新航合肥研究院正式落地
- UAES-新一代车载充配电单元CharCON5U | 申报2026第八届金辑奖最佳技术实践应用奖
- 用得爽!七部门新政给老百姓的用车红利清单