1
PLC编程实用指南
1.5.1.3 1.1.3  PLC功能块(Functionblock)
1.1.3 PLC功能块(Function block)

根据PLC编程标准对功能块的定义是,能对若干输入变量进行处理,进而产生输出(一般为多个),或能执行某个特定操作。功能块要用实例(Instance)调用。在程序中,可创建多个实例。每个实例应具有一个相关的标识符(实例名称)和包含其输出和内部变量的一个数据结构,以及与实例有关的输入变量值或输入变量的引用。

功能块与函数不同,它没有返回值。但它的输出被永久保存在功能块的实例中。所以也称有记忆(with memory)的一组指令块。也因此,同样的实例,不同的程序扫描周期其输出可能是不同的。在功能块实例的外部,只有输入和输出变量可存取,而功能块的内部变量对功能块的用户是隐藏的。

图1-2所示为和利时PLC系统提供的一个增计数的功能块。这里的实例命名为C1。

978-7-111-39745-8-Chapter02-10.jpg

图1-2 增计数的功能块

它的功能是实现增计数。与西门子PLC增计数指令的功能相同。该图上方的C1为实例名。图形左边的CU、RESET、PV(使用时的书写为C1.CU、C1.RESET、C1.PV)为功能块的输入端,右边的Q、CV(使用时的书写为C1.Q、C1.CV)为功能块的输出端。当这里的复位端(RESET)OFF,计数输入端(CU)信号每从OFF到ON一次,则计数功能块实例C1的现值加1。计数功能块现值输出(CV)端,输出计数功能块的当前计数值。当计数值大、等于计数设定值(PV)时,计数功能块输出(Q)端ON。当复位端ON时,停止计数,且计数功能块现值复位为0。

一个功能块还可调用另一个功能块。但不能直接、间接地调用自身,即也不允许递归调用。

生成功能块要用到指令或函数。所以,功能块是建立在指令与函数基础之上的。简单的功能块也可看成是指令。如上述计数功能块也可说成是增计数指令。传统的PLC及其他很多PLC也都是这么处理的。所不同的只是计数功能块指定实例的数量多少不受限制。而计数指令要用到PLC内部器件(计数器),其使用数量要受PLC提供的计数器数量限制。

功能块也可只有一个输出。这样的功能块与函数没有什么太大区别。所以,有的PLC,如欧姆龙,就只有功能块,而不用函数。只是函数可在结构化文本语言的表达式的中调用,而功能块则不能。

PLC功能块也分系统功能块与用户功能块,分别集成在相关功能块库中。系统功能块由PLC厂商提供,西门子称SFB。PLC档次越高,厂商提供功能块也越多。用户功能块由用户编写与生成,西门子称自建的功能块为FB。