1.功能(FC)简介
1)功能(FC)是用户编写的程序块。功能是一种“不带内存”的逻辑块。属于FC的临时变量保存在本地数据堆栈中。执行FC时,该数据将丢失。为永久保存该数据,FC也可使用共享数据块。由于FC本身没有内存,因此,必须始终给它指定实际参数。不能给FC的本地数据分配初始值。
2)FC里有一个局域变量表和块参数。局域变量表里有:IN(输入参数)、OUT(输出参数)、IN_OUT(输入/输出参数)、TEMP(临时数据)、RETURN(返回值RET_VAL)。IN(输入参数)将数据传递到被调用的块中进行处理。OUT(输出参数)是将结果传递到调用的块中。IN_OUT(输入/输出参数)将数据传递到被调用的块中,在被调用的块中处理数据后,再将被调用的块中发送的结果存储在相同的变量中。TEMP(临时数据)是块的本地数据,并且在处理块时将其存储在本地数据堆栈。关闭并完成处理后,临时数据就变得不再可访问。RETURN包含返回值RET_VAL。
2.功能(FC)的应用
功能(FC)类似于VB语言中的子程序,用户可以将具有相同控制过程的程序编写在FC中,然后在主程序OB1中调用。创建功能的过程步骤是:先建立一个项目,再在SIMAT-IC管理器界面中选中“块”,单击菜单栏的“插入”→“S7块”→“功能”,即可插入一个空的功能。以下用三个例题讲解功能(FC)的应用。
【例5-1】用功能实现电动机的起停控制。
解:
1)新建一个项目,本例为“起停控制”。选中“块”,接着单击菜单栏的“插入”→“S7块”→“功能”,即可插入一个空的功能,如图5-2所示。
2)如图5-3所示,在“属性-功能”界面中,输入功能的名称,再单击“确定”按钮。再双击“FC1”,打开功能,如图5-4所示。
图5-2 插入功能
图5-3 “属性-功能”界面
3)在“程序编辑器”中输入如图5-5所示的程序,此程序能实现起停控制,再保存程序。
图5-4 打开功能
图5-5 功能中的程序
4)在SIMATIC管理器界面,双击“OB1”,打开主程序块“OB1”,如图5-6所示。
5)将功能“FC1”拖入程序段1,如图5-7所示。如果将整个项目下载到PLC中,即可实现“起停控制”。
图5-6 打开主程序块
图5-7 在主程序中调用功能
在例5-1中,只能用I0.0实现起动,而用I0.1实现停止,这种功能调用方式是绝对调用,显然灵活性不够,例5-2将用参数调用。
【例5-2】用功能实现电动机的起停控制。
解:本例的1)、2)步与例5-1相同,在此不再重复讲解。(www.xing528.com)
3)在SIMATIC管理器中,双击功能块“FC1”,打开功能,弹出“程序编辑器”界面,先选中IN(输入参数)新建参数“Start”和“Sto”,数据类型为“BOOL”,如图5-8所示。再选中OUT(输出参数),新建参数“Motor”,数据类型为“BOOL”,如图5-9所示。最后在程序段1中输入程序,如图5-9所示,注意参数前都要加“#”。
图5-8 新建输入参数
4)在SIMATIC管理器界面,双击“OB1”,打开主程序块“OB1”,将功能“FC1”拖入程序段1,如图5-10所示。如果将整个项目下载到PLC中,就可以实现“起停控制”。这个程序的功能“FC1”的调用比较灵活,与例5-1不同,起动不只限于I0.0,停止不只限于I0.1,在编写程序时,可以灵活分配应用。
图5-9 功能FC1
图5-10 在OB1中调用功能FC1
【例5-3】某系统采集一路模拟量(温度),温度的范围是0~200℃,要求对温度值进行数字滤波,算法是:将最近的三次采样数值相加,取平均值,即是最终温度值。
解:
1)数字滤波的程序是功能FC1先创建一个空的功能,打开功能,并创建输入参数“GatherV”,如图5-11所示,就是采样输入值;创建输出参数“Result1”,如图5-12所示,就是数字滤波的结果;创建输入/输出参数“LastV”(前一个数值)、“LastestV”(最前一个数值)和“EarlyV”(当前数值),如图5-13所示,输入/输出参数既可以在方框的输入端,也可以在方框的输出端,应用比较灵活;创建临时变量参数“temp1”和“temp2”,如图5-14所示,临时变量参数既可以在方框的输入端,也可以在方框的输出端,应用也比较灵活。
图5-11 输入参数
图5-12 输出参数
图5-13 输入输出参数
图5-14 临时参数
2)在FC1中,编写滤波梯形图程序如图5-15所示。
图5-15 FC1中的梯形图
3)在OB1中,编写梯形图程序如图5-16所示。
图5-16 OB1中的梯形图
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。