首页 理论教育 功能块实例的声明与命名空间规范

功能块实例的声明与命名空间规范

时间:2023-06-27 理论教育 版权反馈
【摘要】:功能块实例的范围对于在其中已将该功能块实例POU应是局部的,除非在全局变量声明段声明是全局的。功能块实体程序是一组操作的集合。10)除了VAR_TEMP声明段外,其他功能块、类和面向对象功能块的实例可在所有变量段声明。11)功能块类型内声明的功能块实例名不能以相同名称作为同一命名空间的函数名,以避免模棱两可。表1-54是功能块变量声明的应用示例。

功能块实例的声明与命名空间规范

功能块(Function Block,FB)是在执行时能够产生一个或多个值的程序组织单元(POU)。它用于模块化并构建程序的明确定义的部分。功能块概念通过功能块类型和功能块实例实现。

功能块类型可由下列成分组成:

1)划分为输入、输出和内部变量数据结构的定义。

2)当调用功能块实例时,数据结构的元素执行的一组操作集合。

功能块实例的说明如下:

1)一个功能块类型的多个命名的实例。

2)每个实例有一个相应的标识符(实例名)和一个包含静态输入、输出和内部变量的数据结构。静态变量是在功能块的一次执行到下一次执行时保持其值的变量,因此,用同样的输入参数,功能块实例的调用结果会有不同的输出值,即功能块具有记忆属性。

功能块实例的范围对于在其中已将该功能块实例POU应是局部的,除非在全局变量声明段声明是全局的。

标准的功能块实际是某种控制算法或子程序。例如,RS功能块用于实现复位优先的起保停控制。

与函数类似,POU的公用性能可以用于功能块。

IEC61131-3第三版将功能块扩展到面向对象的功能块,即扩展面向对象的性能集合。因此,面向对象的功能块也是类的一个超集。有关面向对象的功能块内容在下面介绍。

1.功能块类型的声明

可采用与函数类似的方法,对功能块类型(Function block type)进行声明。

功能块类型的声明由表1-53所示的部分组成。

1)从关键字FUNCTION_BLOCK开始,然后是需声明的功能块名的特定标识符。

2)其后是功能块内变量的声明段和功能块实体程序部分。功能块实体程序是一组操作的集合。

3)用END_FUNCTION_BLOCK结束,即功能块类型的声明格式如下:

FUNCTION_BLOCK 功能块名

功能块类型内变量的声明段

功能块本体程序

END_FUNCTION_BLOCK

1-53 功能块类型的声明

978-7-111-59695-0-Chapter01-125.jpg

(续)

978-7-111-59695-0-Chapter01-126.jpg

注:本表的性能1~3与表1-29的函数等效。

2.功能块变量的声明

功能块类型中变量声明时应注意下列事项:

1)如果需要,VAR_INPUT、VAR_OUTPUT和VAR_IN_OUT变量声明段应规定其变量名和类型。

2)VAR_EXTERNAL声明的变量,其值可从功能块内部修改。但VAR_EXTERNAL CONSTANT声明段声明的变量,其值不能从功能块内部修改。

3)与函数声明类似,可变长度数组变量可作为VAR_INPUT、VAR_OUTPUT和VAR_IN_OUT变量使用。

4)与函数的声明类似,EN/ENO输入和输出可像输入和输出变量一样进行声明。

5)与函数的声明类似,输入、输出和静态变量可被初始化

功能块类型中变量声明有下列不同于函数的特殊性能:

1)VAR…END_VAR结构和VAR_TEMP…END_VAR结构一样,作为内部变量使用。如果需要,规定功能块内部变量的名称和类型。与函数比较,在功能块类型的VAR…END_VAR声明段声明的变量是静态变量。

2)VAR…END_VAR变量段声明的变量,可声明其存取属性PUBLIC(公用)或PRIVATE(私用),默认的存取是PRIVATE。公用属性可用类似存取功能块输出的语法,从功能块外部存取。

3)RETAIN和NON_RETAIN属性可用于作为功能块输入、输出和内部变量,见表1-53序号4和5。

4)文本格式声明时,变量的R_EDGE和F_EDGE属性用于表示对布尔输入变量的边沿检测函数,它是R_TRIG和F_TRIG边沿检测功能块的隐式声明,用于使功能块执行所需边沿检测,见表1-53的序号6。

5)图形格式声明时,上升沿和下降沿边沿检测属性是用“greater than”或“>”和“less than”或“<”字符在功能块的边沿线表示,见表1-53序号7。

6)星号“*”被用于一个功能块中内部待定变量的声明,见表1-20序号11。

7)标准功能块可以过载,也可以具有可扩展的输入和输出。功能块具有记忆功能。

8)若标准功能块输入和输出的数据类型声明中使用一般数据类型,则该功能块类型输出的实际数据类型的推断规则是功能块类型定义的一部分。以文本格式调用该功能块时,对变量输出赋值应直接在调用语句中给出(使用=>操作符)。

9)在功能块内,允许使用VAR、VAR_INPUT、VAR_IN_OUT、VAR_OUTPUT、VAR_EXTERNAL变量,不允许使用VAR_GLOBAL、VAR_ACCESS等变量。

10)除了VAR_TEMP声明段外,其他功能块、类和面向对象功能块的实例可在所有变量段声明。

11)功能块类型内声明的功能块实例名不能以相同名称作为同一命名空间的函数名,以避免模棱两可。

表1-54是功能块变量声明的应用示例。

1-54 功能块变量声明的应用示例

978-7-111-59695-0-Chapter01-127.jpg

(续)

978-7-111-59695-0-Chapter01-128.jpg

功能块中变量名和赋值的注意事项如下:

1)一般不允许对功能块输出变量赋值。只有当输入变量作为功能块的调用部分时,才允许对功能块输入变量赋值。

2)为确保功能块不依赖于硬件,在功能块变量声明时,不允许将具有固定赋值的PLC硬件地址变量(即直接表示变量,例如%IX1.1、%IW4、%QM25)作为局部变量,但在VAR_EXTERNAL变量中可使用PLC硬件地址变量作为全局变量。功能块中不允许对VAR_ACCESS变量类型或VAR_GLOBAL变量的存取路径进行声明,但可用VAR_EXTERNAL变量间接存取路径来存取全局变量。

3)功能块实例中的一些输出变量(形式参数)可以不被连接到其他变量。它表示这些输出是用户不需要了解的。功能块实例的输入变量不赋值或不连接表示将保持它们的初始值或最近调用的值。

4)功能块可调用函数和功能块,当调用功能块时,采用功能块实例,因此,可将该功能块实例名作为该功能块的变量名来声明。

5)只能用功能块、程序的POU接口,将参数和外部数据传递到功能块实例。

6)经VAR_IN_OUT或VAR_EXTERNAL结构传递功能块实例名,能够在功能块内调用。函数或功能块输出不能用这种结构传递,因此,它能防止这些输出被无意中修改。

7)功能块内部可使用EN和ENO附加属性,EN和ENO可在功能块中使用任一个、或两者或都不使用。附加的EN和ENO属性用于控制执行过程的进行与否。使能输入和使能输出的应用原则与函数的使能输入和使能输出的应用原则相同。

3.功能块实例的声明

功能块实例用类似结构变量的描述的方法进行声明。

当一个功能块实例被声明时,输入、输出或功能块实例中公用变量的初始值在如表1-55序号2所示的功能块类型标识符(实例名)和赋值符后的圆括号内声明。

未在上述初始化列表内声明初始值的元素具有功能块声明中这些元素声明的默认初始值,见表1-55中的序号1。

1-55 功能块实例声明的示例

978-7-111-59695-0-Chapter01-129.jpg

函数和功能块实例的区别如下:

1)函数的调用只有一个结果。

2)调用一个函数的结果可被用作表达式或赋值语句中的值,但不能被用作赋值操作的目标。

3)函数不具有以前历次调用作用的专用存储区,因此,每次相同输入的函数调用有相同结果。

4)函数名的范围,如函数类型范围是全局的,而功能块实例名地方范围是局部的。

4.功能块的调用

一个功能块实例的调用可用文本格式或图形格式。功能块调用的性能(包括格式和非格式调用)类似于带下列扩展函数的性能:

1)功能块的文本格式调用由功能块实例名和参数列表组成。

2)图形格式调用时,功能块的实例名位于功能块框外的上面。

3)一个功能块实例的输入变量和输出变量被存储和表示为结构数据类型的元素。因此,一个功能块的输入的赋值和输出的存取可以是:

①直接来自功能块调用。

②从调用中分离,这些分离的赋值在该功能块下次调用时有效。

③功能块未被赋值或未连接的输入保持它们初始值,或如果有的话,来自最近的一次调用所得到的值。

一个输入-输出变量或者一个功能块实例(作为另一功能块实例的输入变量)可能有未被指定的实际参数。但是,一个被存储的有效值应被提供给该实例。例如,功能块(本体)或方法调用前,通过初始化或格式调用获得,否则将导致运行错误

功能块调用遵循下列规则:

1)当EN=0时,如果调用一个功能块实例,则实施者应规定是否在实例中需设置输入和输入-输出变量。

2)如果在VAR_INPUT声明中功能块实例名被声明为输入变量,则该功能块实例名可用于作为一个功能块实例的输入变量。如果在VAR_IN_OUT声明中功能块实例名被声明为输入-输出变量,则该功能块实例名作为一个功能块实例的输入-输出变量。

3)不同功能块实例的输出值,它的名称可通过VAR_INPUT、VAR_IN_OUT或VAR_EXTERNAL结构传递到功能块,则它们就可被存取,但不能从功能块内部被修改。

4)功能块实例名通过VAR_IN_OUT或VAR_EXTERNAL结构传递到功能块,则它能够从功能块内部进行调用。

5)只有变量或功能块实例名能够通过VAR_IN_OUT结构传递到功能块。VAR_IN_OUT结构允许串联连接。

功能块实例化是编程人员在功能块声明段用指定功能块名和相应的功能块类型来建立功能块的过程。功能块本体(或实体)程序中的变量称为形式参数或形参。具体应用时,要用实际参数(称为实际参数或实参)代替形式参数,才能调用该功能块执行,该过程是功能块的实例化。

功能块实例的外部只有输入和输出变量是可存取的。功能块的内部变量对用户来说是隐含的。因此,一个功能模块实例是保持在由功能模块类型定义的结构中特定数据类型的集合。它是一个数据结构,并有一个在功能模块类型内被定义的有关算法。

表1-56是功能块实例调用的示例。

1-56 功能块实例调用的示例

978-7-111-59695-0-Chapter01-130.jpg

(续)

978-7-111-59695-0-Chapter01-131.jpg

(续)

978-7-111-59695-0-Chapter01-132.jpg

5.功能块调用时输入和输出变量的用法

功能块的输入和输入-输出变量赋值后,这些数值必须在该功能块实例的下一次调用时才有效。表1-57是功能块调用时输入和输出参数的用法。图1-22是功能块调用时输入、输出变量用法的图形描述。

1-57 功能块调用时输入和输出变量的用法

978-7-111-59695-0-Chapter01-133.jpg

注:1.本表列出的这些不允许用法可能导致实施者规定的不可预知的副作用。

2.一个功能块输入、输出参数和内部变量的读和写(赋值)可以通过IEC 61131-1定义的“通信功能”、“操作员界面功能”或“编程、测试和监视功能”执行。

3.功能块在输入-输出变量声明段声明的一个变量允许被修改。

图1-22中,×表示不允许的操作。它在表1-57中用删除线表示。功能块调用时输入和输入-输出变量的赋值,应注意下列不允许的赋值情况:

1)不允许将功能块的输入参数赋值给其连接的外部变量,见图中1b。

2)不允许将功能块内部存储的数据赋值给功能块的输入参数,见图中2a。

3)不允许将外部变量赋值给功能块的输出参数,见图中4b。

4)不允许将外部变量赋值给功能块的输入-输出变量,见图中5b。

5)不允许将功能块的输入-输出变量赋值给外部的输入变量,见图中6b。

IEC 61131-3第三版扩展了功能块实例名的使用,功能块实例名可作为参数和外部变量使用,而这是上述规则所不允许的。

978-7-111-59695-0-Chapter01-134.jpg

图1-22 功能块输入、输出变量用法(规则的说明)

6.标准功能块

标准功能块是为PLC常见编程语言定义的公共功能块。实施者可以提供额外的标准功能块,例如,PID控制功能块等。

标准功能块可以过载,也可以具有可扩展的输入和输出。IEC 61131-3第三版增加了标准功能块的输入-输出参数的长变量名的定义,例如RESET1、SET1等;删除了计数器功能块的长变量名,例如LOAD、RESET等,见下述。

(1)双稳元素功能块(www.xing528.com)

双稳元素(Bitstable element)功能块有两个稳态,根据两个输入变量都为1时,输出稳态值的不同可分为置位优先(SR)和复位优先(RS)两类。表1-58显示双稳元素功能块的图形格式、文字格式和功能块本体结构。图1-23是双稳元素功能块的信号时序图。

1-58 标准双稳元素功能块的性能

978-7-111-59695-0-Chapter01-135.jpg

注:输出变量Q1的初始状态应是布尔变量的正常默认的零值。

978-7-111-59695-0-Chapter01-136.jpg

图1-23 双稳元素功能块的信号时序图

a)置位优先 b) 复位优先

使用双稳元素功能块时注意下列事项:

1)双稳元素功能块有两个输入变量,S是置位端,R是复位端。双稳元素功能块类型名中,S在前表示置位优先,即SR表示置位优先双稳元素功能块。R在前表示复位优先,即RS表示复位优先双稳元素功能块。同样,输入变量名中,添加1表示该变量是优先的。因此,S1表示置位优先的S端,R1表示复位优先的R端。IEC 61131-3第三版提供了长变量输入名,则S写为SET,R写为RESET。双稳元素功能块输出变量均为Q1。

2)当两个输入变量都为1时,双稳元素功能块的输出Q1为1,称为置位优先。当两个输入变量都为1时,双稳元素功能块的输出Q1为0,称为复位优先。

3)与常规的梯形图程序比较。双稳元素功能块的两个输入变量都是常开触点,常规梯形图程序的启动信号是常开触点,停止信号是常闭触点。双稳元素功能块对应的梯形图程序如图1-24所示。

978-7-111-59695-0-Chapter01-137.jpg

图1-24 双稳元素功能块对应的梯形图程序

a)SR功能块对应的梯形图程序 b)RS功能块对应的梯形图程序

4)双稳元素功能块具有记忆功能。例如,对RS功能块,当输入变量S从1变到0后,输出能够对功能块的状态记忆,其输出Q1变到1,并能够保持到输入变量R1为1,一旦R1从1变回到0,输出Q1仍能够保持其输出为0。

5)根据标准规定,双稳元素功能块输入变量和输出变量的数据类型是布尔数据类型,只能用于单台电动机等设备的起保停控制。当用于多个电动机等设备控制时,需要编写用户功能块。梯形图程序可方便地将输入和输出变量设置为字节、字等数据类型,实现多台设备的控制,简化程序。

(2)边沿检测功能块

标准的上升沿边沿和下降沿边沿检测(Edge detection)功能块的图形表示见表1-59。

1-59 标准边沿检测功能块的图形格式和文本格式

978-7-111-59695-0-Chapter01-138.jpg

注:在第一次执行“冷启动”后,当R_TRIG类型的实例输入CLK被连接到BOOL#1,它的输出Q将保持在BOOL#1,当其所有后续的顺序执行中,Q保持在BOOL#0。这同样适用于F_TRIG实例,在它的CLK输入被连接或断开连接到FALSE时。

使用边沿检测功能块时应注意下列事项:

1)边沿检测功能块对输入变量的变化灵敏,因此,常用于检测输入变量的跳变。

2)上升沿边沿检测R_TRIG功能块的输出Q应随CLK输入从0到1的转换,在功能块的这次执行到下一次执行期间保持布尔值为1,在下一次执行时返回到0。

3)下降沿边沿检测F_TRIG功能块的Q输出应随CLK输入从1到0的转换,在功能块的这次执行到下一次执行期间保持布尔值为1,在下一次执行时返回到0。

边沿检测功能块输出脉冲信号的持续时间是一个扫描周期。图1-25是边沿检测功能块的信号波形。

978-7-111-59695-0-Chapter01-139.jpg

图1-25 边沿检测功能块的信号时序图

a)R_TRIG功能块信号波形 b) F_TRIG功能块信号波形

4)边沿检测功能块也可设置输入变量的边沿检测属性实现,见表1-54序号13。

5)冷启动的第一次执行时,如果R_TRIG实例的CLK输入信号为1或F_TRIG实例的CLK输入信号为0时,则对CLK输入信号的边沿进行检测。

(3)计数器功能块

计数器(Counter)功能块用于对输入信号脉冲进行计数。根据计数的方向分为加计数器、减计数器和加减计数器等三类。计数器有五个要素,即计数脉冲输入CU或CD、计数设定值PV、复位信号R或LD、当前计数值CV和计数到的输出信号Q(或QU和QD)。IEC61131-3第三版取消长输入变量名LOAD和RESET。

标准计数器功能块的图形格式和文本格式见表1-60。

1-60 标准计数器功能块的图形格式和文本格式

978-7-111-59695-0-Chapter01-140.jpg

(续)

978-7-111-59695-0-Chapter01-141.jpg

(续)

978-7-111-59695-0-Chapter01-142.jpg

图1-26是计数器的信号时序图。需指出,图中的CV信号是阶梯信号线,不是直线。

978-7-111-59695-0-Chapter01-143.jpg

图1-26 计数器输入-输出信号波形

a)加计数器的输入-输出信号时序图 b)减计数器输入-输出信号时序图 c) 加减计数器输入-输出信号时序图

加计数器有三个输入变量和两个输出变量。输入变量CU是上升沿触发的计数脉冲,它是边沿触发的脉冲信号,图形格式表示中,可在矩形框该形式参数CU旁用“>”表示是上升沿触发脉冲信号。复位输入R用于将加计数器的计数值恢复到零。加计数器的计数设定值由输入变量PV送入。每次计数脉冲上升沿,加计数器将计数值加1,当计数值CV大于或等于设定值PV时,加计数器输出Q被置1。加计数器的当前计数值由CV输出。

减计数器的工作原理与加计数器类似,三个输入变量中,输入变量CD是上升沿触发的计数脉冲信号,计数器的设定值由PV输入变量送入。复位输入LD用于将减计数器的当前计数值恢复到计数设定值PV。每次计数脉冲上升沿,减计数器将当前计数值CV减1,当CV小于或等于零时,减计数器的输出Q被置1。减计数器的当前计数值由CV输出。

加减计数器有5个输入变量和3个输出变量。输入变量CU是加计数的脉冲信号,输入变量CD是减计数的脉冲信号。复位变量R用于将加减计数器的当前计数值CV置为0,复位变量LD用于将加减计数器的当前计数值CV置为PV。每次CU计数脉冲的上升沿使CV加1,每次CD计数脉冲的上升沿使CV减1。如果计数值CV大于或等于PV,则输出变量QU被置1;如果计数值CV小于或等于零,则输出变量QD被置1。

使用计数器功能块时应注意下列事项:

1)计数器功能块的过载属性是对标准型计数器计数设定值PV数据类型的扩展。当PV变量数据类型是DINT,且当前计数值的数据类型是DINT时,该计数器扩展成为双整数DINT,相应的计数器功能块应在原计数器功能块名后添加“_DINT”。计数器功能块的过载属性可使计数器计数范围大大扩展,并简化程序。CV和PV有相同的数据类型。

2)计数器触发的脉冲信号都是上升沿触发脉冲。上升沿触发脉冲信号变量的附加属性是R_EDGE,在变量声明段应予声明。例如,标准型加计数器的输入变量应声明如下:

978-7-111-59695-0-Chapter01-144.jpg

3)加计数器、减计数器和加减计数器的当前计数值都是输出变量CV。设定的计数值都是PV输入。

4)计数器功能块的文本格式中,PVmax和PVmin的值是实施者规定的。实际应用时,通常,PVmax大于设定值PV,PVmin小于0。

(4)定时器功能块

标准定时器(Timers)功能块的图形格式见表1-61。

1-61 标准定时器功能块的图形格式

978-7-111-59695-0-Chapter01-145.jpg

①在文本编程语言中,性能2d和3d不能使用。

②在定时操作过程中,PT输入值的改变,例如,PT设置到T#0S用于对一个TP实例复位操作所造成的影响,是实施者规定的。

IEC 61131-3第三版规定标准定时器功能块可用TIME或LTIME实现过载,或在标准定时器的基本数据类型规定为TIME或LTIME实现过载。

1)接通延迟定时器TON输入-输出信号的时序图如图1-27所示。ET是当前的计时时间。

978-7-111-59695-0-Chapter01-146.jpg

图1-27 接通延迟定时器的时序图

接通延迟定时器的工作过程如下:当输入变量IN为1,定时器开始计时,当前计时值ET作为定时器功能块的输出。当前计时时间ET等于由输入变量PT输入的计时设定值时,定时器功能块才有输出Q为1。当IN为0时,输出Q也回到0。如果在计时过程中(未达到计时设定值PT)输入IN回到0,则当前计时值ET也回到0。

2)断开延迟定时器TOF输入-输出信号的时序图如图1-28所示。

978-7-111-59695-0-Chapter01-147.jpg

图1-28 断开延迟定时器的时序图

断开延迟定时器的工作过程如下:当输入变量IN为1,定时器输出Q立刻为1,当输入变量IN回到0,定时器开始计时,当前计时时间ET作为定时器功能块的输出。当计时时间ET等于由输入变量PT输入的计时设定值时,定时器功能块才使输出Q为0。如在计时过程中(未到计时设定值PT)输入IN变到1,则当前计时值ET回0。

3)定时脉冲定时器TP输入-输出信号的时序图如图1-29所示。

978-7-111-59695-0-Chapter01-148.jpg

图1-29 定时脉冲定时器TP功能的时序图

定时脉冲定时器的工作过程如下:当输入IN变为1时,定时器输出立刻为1,同时,定时器开始计时,当前计时时间ET等于设定时间PT时,定时器输出回到0,即定时器输出Q的脉冲宽度等于设定时间PT。如果计时过程中输入IN回0,或输入IN又为1,不影响计时过程的进行,即计时过程仍继续(如图中的T3),直到计时时间到后,输出Q才回0。

使用定时器功能块时应注意下列事项:

1)定时器的当前计时值由输出ET输出。ET和PT有相同的数据类型。

2)定时器计时过程中,改变计时设定值PT,定时器行为由实施者规定。

3)定时器的计时开始时间是输入IN的上升沿,但不是脉冲,因此,图形格式中,IN前没有“>”符号。

7.用户定义的功能块

用户定义的功能块也称为派生功能块或衍生功能块。它是用户根据应用项目的要求,用标准功能块和标准函数组合或调用导出的功能块。也可以用派生函数和派生功能块编写新的派生功能块。

与标准功能块比较,派生功能块可以不具有记忆功能,即相同输入变量可以有相同输出。它相当于多个函数的组合。

编写派生功能块时应注意下列事项:

1)派生功能块变量声明中变量的数据类型不允许采用一般数据类型。

2)派生功能块输入-输出变量(形参)的数据类型和实际连接的实参数据类型应一致。

3)派生功能块中的输出可以根据应用要求不连接有关变量。

4)派生功能块中变量的排列次序与变量声明时的先后次序相同。

例1-43】建立派生功能块PID,用于作为过程控制器。

在控制系统中,常采用PID控制算法实现控制规律。理想PID控制器输出为

978-7-111-59695-0-Chapter01-149.jpg

式中,e是偏差;Ts是采样周期;Kp是增益;Ti是积分时间;Td微分时间;u是控制输出。

理想微分输出是脉冲信号,本示例采用理想微分。

PID功能块仅表示PID控制运算,没有对积分饱和和手自动无扰动切换提供相应手段。可以看到,功能块调用有关函数的计算,例如逻辑比较、选择和类型转换等函数。PID功能块声明如下:

978-7-111-59695-0-Chapter01-150.jpg

978-7-111-59695-0-Chapter01-151.jpg

978-7-111-59695-0-Chapter01-152.jpg

图1-30 PID功能块的本体程序

功能块变量包括手动和自动开关AUTO、过程测量信号PV、设定信号SP、手动输出X0、控制器功能块增益KP、积分时间TI、微分时间TD和采样时间TS。其中,积分和微分时间是用实数表示的以毫秒为单位的时间值。采样时间TS采用时间数据类型,应根据被控过程的时间常数设置。ERR是控制器功能块偏差信号,等于设定SP减去测量PV。OUTI和OUTD分别是偏差积分控制输出和偏差微分控制输出。

功能块体中,用X1表示上一采样时刻的偏差ERR,并用简单差分项近似其微分。

PID功能块控制算法规则如下:

①在手动模式时,如果积分时间大于106,认为没有积分作用,因此,积分输出OUTI被设置为零,控制器输出等于手动输出X0。

②自动模式时,积分输出为偏差的积分。其中,偏差ERR=SP-PV。积分输出用增量式表示为

OUTI=OUTI+ERR*TSR (1-4)式中,采样周期TS用实数数据类型TSR,需将采样周期时间数据类型转换为实数数据类型,因此,程序中用TIME_TO_REAL转换函数。一些软件不提供直接的转换函数,也可用间接转换,例如,用TIME_TO_DINT函数和DINT_TO_REAL函数串联连接。示例中将采样周期的实数值存放在TSR变量内。由于时间数据类型转换为实数数据类型时,以毫秒为基准,因此,转换后,将实数数据除以1000.0,转换为秒。

③自动模式时,微分输出为偏差的微分。因此,程序中用下式计算:

OUTD=(3.0*(ERR-X3)+X1-X2)/10.0/TSR (1-5)式中,X1、X2和X3是前几次的偏差值。因此,微分输出OUTD计算后,需将X2作为上次的偏差X3,X1作为上次的X2,而当前偏差值作为上次的偏差值赋给X1,用于下次微分计算。

④自动模式下,PID功能块的输出OUT可按下式计算:

OUT=KP*(ERR+OUTI/TI+OUTD*TD) (1-6)

建立的派生功能块PID可用于生产过程的控制。例如,图1-31是用于温度控制系统时的程序。其中,TIC_121是该PID功能块的实例名。它的测量信号来自TI_121,即来自PLC的模拟量输入模块的输出信号(实数数据类型)。其输出信号送TV_121,即作为PLC模拟量输出模块的输入信号。其他变量的数据,例如比例增益KP、积分时间TI和微分时间TD、采样周期TS等来自人机界面有关数据库

PID功能块本体程序中,有反馈变量OUTI,第一次运算时,应取其初始值,即系统的默认初始值0.0。

图1-32是PID控制器在阶跃偏差信号输入下的输出响应曲线。

978-7-111-59695-0-Chapter01-153.jpg

图1-31 PID功能块的调用

978-7-111-59695-0-Chapter01-154.jpg

图1-32 派生功能块PID在阶跃偏差下的输出响应曲线

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈