功能
功能是一种可以赋予参数,但没有静态变量的程序组织单元。有些书籍或文献也称功能为函数。当用相同的输入参数调用某一功能时,该功能总能够生成相同的结果作为其功能值。功能有多个输入变量,没有输出变量,但有一个功能值作为该功能的返回值。功能由功能名和一个表达式组成。
功能分为标准功能和用户定义功能(衍生功能)。
1.标准功能
IEC 61131-3标准定义了8类标准功能。
(1)类型转换功能——用于数据类型的转换。例如,整数数据类型转换为实数的功能INT_TO_REAL。在进行数据类型转换时,可能引起误差。
(2)数值类功能——用于对数值变量进行数学运算。该功能的图形表示是将数值功能的名称填写在功能图形符号内,并连接有关的输入和输出变量。
(3)算术类功能——用于计算多个输入变量的算术功能,包括ADD(加)、SUB(减)、MUL(乘)、DIV(除)、MOD(模除)、SQRT(平方根)、SIN(正弦)、COS(余弦)、MIN(最小)、MAX(最大)等。
(4)位串类功能——包括串移位运算和位串的按位布尔功能。
(5)选择和比较类功能——用于根据条件来选择输入信号作为输出返回值。选择的条件包括单路选择,或输入信号本身的最大、最小、限值和多路选择等。
(6)字符串类功能——用于对输入的字符串进行处理,例如,确定字符串的长度、对输入的字符串进行截取、处理后的新字符串作为该功能的返回值。
(7)时间数据类功能——时间数据类功能是当数据类型是时间数据类型时,上述有关功能的扩展。例如,时间数据类型的转换、时间数据的算术运算等。
(8)枚举数据类型的功能——在选择和比较类型功能中,可以看到,SEL和MUX的输入变量是ANY类型,因此,它适用于衍生数据类型。当用于枚举数据时,输入和输出的枚举数据个数应相同。枚举数据类型也适用于比较类功能的EQ和NE功能。
2.用户定义功能
用户定义功能是用户自行定义的功能,一旦做了定义,则该功能就可反复使用。
下面举一个用户定义功能的例子,定义一个功能(A*B/C)2,功能名是SIMPLE_FUN,功能主体用ST语言写。
FUNCTION SIMPLE_FUN:REAL VAR_INPUT A,B:REAL; C:REAL:=1.0; END_VAR SIMPLE_FUN:=(A*B/C)**2; END FUNCTION
功能块
功能块是在执行时能够产生一个或多个值的程序组织单元。
变量的实例化是编程人员在变量说明部分用指定变量名和相应数据类型来建立变量的过程。同样,功能块实例化是编程人员在功能块说明部分用指定功能块名和相应的功能块类型来建立功能块的过程。
每个功能块实例有它的功能块名、内部变量、输出变量及可能的输入变量数据结构。该数据结构的输出变量和必要的内部变量的值能够从这次执行保护到下一次执行。功能块实例的外部只有输入和输出变量是可存取的。功能块内部变量对用户来说是隐藏的。功能块的图形表示如图所示。
图 功能块的图形表示
功能块包括标准功能块、衍生功能块和用户定义功能块。衍生功能块是利用标准功能块创造的新功能块。IEC 61131-3允许用户利用已有的功能块和功能生成新的功能块。任意功能块均可采用便于管理且功能更简单的功能和/或功能块进行编程。
功能块有两个主要特征。
定义一组输入/输出参数,用来与其他功能块或内部变量交换数据。
每一个功能块均有其特定的算法,通过对输入参数值和内部变量值的处理,生成相应的输出。就是说,功能块具有完善定义的输入和输出界面及隐含的内部结构。软件设计人员可以定义、修改功能块,而软件维护人员只能使用功能块。
功能块一旦被定义,就可反复使用。功能块可以用任意一种IEC 61131-3的编程语言来编写,但在大多数情况下是用结构化文本语言编写。
功能和功能块的主要区别在于,相同输入参数调用时,功能总是产生相同的结果(功能值),功能没有“记忆”特性。程序代表PLC用户的最高层,能存取PLC的I/O口,并能使它们能为其他程序组织单元所存取。IEC 61131-3标准使用变量以存储信息。但是,它们的存储位置不再需要由用户自行定义,而是由编程系统自行进行管理,每个变量具有固定的数据类型。IEC 61131-3规定若干数据类型,这些数据类型在位数量和符号的使用方面有所不同。
功能块段的文字形式可以表示如下。
FUNCTION_BLOCK 功能块名 功能块声明 功能块体 END_FUNCTION_BLOCK
IEC 61131-3中定义了5种标准功能块。
(1)双稳元素功能块——双稳元素
(Bitstable Element)功能块有两个稳态,根据两个输入变量都为1时,输出稳态值的不同,可分为置位优先(SR)和复位优先(RS)两类。
(2)边缘检测功能块——边缘检测
(Edge Detection)功能块用于对输入信号的上升沿和下降沿进行检测。因此,分为上升沿检测(R_TRIG)功能块和下降沿(F_TRIG)检测功能块两类。
(3)计数器功能块——计数器
(Counter)功能块有3种基本类型。它们是加计数器、减计数器和加、减计数器,用于计数器的变量是整数类型。
(4)定时器功能块——定时器
(Timer)功能块是用定时器实现接通延时、断开延时和定时脉冲。
(5)通信功能块——通信功能
块详见IEC 61131-5的定义。它为可编程控制器提供远程寻址、设备检测、轮询数据的采集、编程数据采集、参数控制、互锁控制、编程报警报告及连接管理和保护。除了远程寻址是功能,其他都是功能块。