程序组织单元及其组成
1.程序组织单元概述
IEC 61131-3标准很重要的一个目的就是限制块的多样性,并同时隐含块类型的含义,统一并简化块的用法。IEC 61131-3引入构成程序和项目的块,即程序组织单元(Program Organization Unit,POU)。程序组织单元由程序组织单元的说明部分和程序组织单元的本体两部分组成,它对应于传统PLC编程领域的程序块、组织块、顺序块和功能块。程序组织单元彼此之间能够带有或不带有参数地相互调用,程序组织单元是用户程序中最小的、独立的软件单元。程序组织单元的标准部分,如标准功能、标准功能块等由PLC制造商提供。用户可以根据程序组织单元的定义设计用户的程序组织单元,并对其进行调用和执行。
IEC 61131-3将PLC制造商的块类型的种类减少为3种统一的基本类型,它们分别是Function(FUN功能)、Function Block(FB功能块)和Program(PROG程序),如图所示,
它们的含义如表所示。根据IEC 61131-3标准,程序、功能和功能块都被称为程序组织单元POU。
在IEC 61131-3中,不允许其他高级语言的子程序调用。这样在对一个POU编程后,其名称及调用接口将为此项目中所有的其他POU所认知,也就是说程序组织单元名称总是全局的。程序组织单元的独立性有利于自动化任务的模块化扩展,以及已实现和已测试的软件单元的重复使用。
2.程序组织单元的组成
程序组织单元由3部分组成,即程序组织单元类型和名称、带有变量声明的声明部分、带有程序组织单元指令的主体,其元素构成如图所示。
图 POU元素构成
1)声明部分
定义程序组织单元内所使用的变量,应注意区别程序组织单元接口变量和程序组织单元局部变量。在程序组织单元的代码部分,使用编程语言对逻辑电路或算法进行编程。在IEC 61131-3中,变量用于初始化、处理和存储用户数据。在每个程序组织单元的开始部分必须声明变量,变量赋予的数据类型必须是已知的。对不同的数据类型,程序组织单元变量的声明部分分为不同的段,每个声明部分对应于一种变量类型,并可以包括一种或多种变量。
2)接口部分
程序组织单元接口,以及在程序组织单元中使用的局部数据区是借助于在声明块中将程序组织单元变量赋予变量类型进行定义的。程序组织单元接口分为以下几个部分。
调用接口:形式参数(输入和输入/输出参数)。
返回值:输出参数或功能返回值。
全局接口:带有全局/外部变量和存取路径。
调用接口的变量也称为形式参数。调用一个程序组织单元时,形式参数为实际参数代替,形式参数被赋予实际值或常数。
3)代码部分
程序组织单元的指令或代码部分紧接声明部分,它包含PLC执行的指令。可以利用IEC 61131-3提供的5种编程语言来编写代码,根据程序要完成的不同的功能要求和任务特点,合理利用这些编程语言来编写代码,从而完成适合于不同的控制任务和应用领域的程序编写。
3.几种程序组织单元类型的相互调用
根据IEC 61131-3标准,3种类型的程序组织单元可以相互调用,如图所示,但在调用时要注意以下几点。
(1)程序可调用功能块和功能,但功能和功能块不能调用程序。
(2)功能块和功能块可以互相调用。
(3)功能块可调用功能,但功能不能
调用功能块。
(4)3种类型的程序组织单元不能直接或间接地调用它自身的一个实例。