绍兴西门子PLC代理商
绍兴西门子PLC代理商
绍兴西门子PLC代理商
FC功能块如何使用
如果逻辑块执行完后不需要保存它内部的数据,可以用功能FC来编程。与功能块FB 相比较,FC不需要配套的背景数据块。
1. 生成功能
用鼠标右键点击SIMATIC管理器左边窗口中的“块”,执行出现的快捷菜单中的“插入新对象”→“功能”,生成一个新的功能。在出现的功能属性对话框中,采用系统自动生成的功能的名称FC1,设置梯形图(LAD)为功能默认的编程语言。
2. 功能的局部变量
双击SIMATIC管理器中FC1的图标,打开程序编辑器(见图4-16)。
与功能块的变量声明表(见图4-13)相比,功能没有静态变量(STAT),退出FC后不能保存它的临时局部变量。功能多了一个返回值RET_VAL,它实际上是一个输出参数。返回值的设置与IEC6113-3标准有关,该标准的功能没有输出参数,只有一个返回值。
功能FC1用来控制发动机的风扇,要求在发动机运行信号Engine_On变为1时起动风扇,发动机停车后,用输出的BOOL变量Fan_On控制的风扇继续运行30s后停机。
在FCI中,用延时断开定时器S_OFFDT(见图4-16)来定时。在功能的变量声明表中定义的输入参数Timer_Function是延时断开定时器的编号,数据类型为Timer,在调用FC1 时用它来为不同的发动机*不同的定时器。
3. 功能与功能块的区别
FB和FC均为用户编写的子程序,局部数据均有IN、OUT、IN_OUT和TEMP,临时变量TEMP储存在局部数据堆栈中。
1)FC的返回值RET_VAL实际上是输出参数,因此有无静态变量(STAT)是二者的局部变量的本质区别,功能块的静态变量用背景数据块来保存。如果功能有执行完后需要保存的数据,只能存放在全局变量(I/Q、PI/PQ、M、T、C和共享数据块)中,但是这样会影响功能的可移植性。如果功能或功能块的内部不使用全局变量,只使用局部变量,不需要做任何修改,就可以将块移植到其他项目。如果块的内部使用了全局变量,在移植时需要重新统一分配它们内部使用的全局变量的,以保不会出现冲突。当程序很复杂,子程序和中断程序很多时,这种重新分配全局变量地址的工作量非常大,也很容易出错。如果逻辑块有执行完后需要保存的数据,显然应使用功能块,而不是功能。
2)功能块的输出参数不仅与来自外部的输入参数有关,还与用静态变量保存的内部状态数据有关。功能因为没有静态变量,相同的输入参数产生的执行结果是相同的。
3)功能块有背景数据块,功能没有背景数据块。只能在功能内部访问功能的局部变量,其他逻辑块和人机界面可以访问背景数据块中的变量。
4)不能给功能的局部变量设置初始值,可以给功能块的局部变量(不包括TEMP)设置初始值。在调用功能块时如果没有设置某些输入参数的实参,将使用背景数据块中的初始值,或上一次执行后的值。调用功能时应给所有的形参*实参。
4. 组织块与其他逻辑块的区别
发生事件或故障时,由操作系统调用对应的组织块,其他逻辑块是用户程序调用的。组织块有自动生成的20B临时局部数据,包含了与触发组织块的事件有关的信息。它们是操作系统提供的。组织块中的程序是用户编写的,用户可以自己定义和使用组织块20B 之后的临时局部数据。
浔之漫智控技术(上海)有限公司专注于西门子等