北岛夜话
原创工业智能控制领域(PLC、单片机/嵌入式、机器人、通信、机器视觉)的技术及经验分享。
文章545 浏览8640720

基于CODESYS打造树莓派工业控制器(3)——理解程序组织单元(POU)

CODESYS提供符合IEC61131-3标准的编程开发环境。IEC 61131-3是PLC编程开发的国际标准,这个标准将程序的基本单位称为程序组织单元( Program Organisation Unit,POU),并定义了三种程序组织单元:函数(FC)、函数块(FB)和程序(PROG)。今天这篇文章,我们就来详细介绍下程序组织单元。

cover.jpg

IEC 61131-3定义了三种程序组织单元,分别是:

  • 函数(FC):可以有输入/输出参数,但是没有静态变量。使用相同的参数调用函数时,总会产生相同的输出结果。另外,定义函数时,必须指定返回值类型;

  • 函数块(FB):也被称为“功能块”,可以有输入/输出参数,并且可以有静态变量。使用相同的参数调用函数块时,由于静态变量的保持性,可能产生不同的输出结果;

  • 程序(Prog):类似于C语言的Main函数。程序内部调用函数或函数块,外部被任务(Task)调用而执行;

在CODESYS开发环境中,右键单击【应用(Application)】,选择【添加对象】-【POU】,会弹出【添加POU】的界面,如下图所示:

POU.png

每个程序组织单元都包括:名称、变量声明区和代码区三部分。比如下图的motorControl函数块(FB):

POU的组成.png

1、POU的名称

名称是程序组织单元的唯一标识,在同一个应用中不能有重名的情况。POU的名称不区分大小写;如果是函数,还需要定义返回值的类型;

2、POU的变量声明

变量声明区用来声明该POU使用的变量。变量的声明以VAR_*开始(*代表不同的类型),以END_VAR结束。IEC 61131-3定义的变量声明类型包括:

  • VAR:本地局部变量;

  • VAR_INPUT:输入变量;

  • VAR_OUTPUT:输出变量;

  • VAR_IN_OUT:输入/输出变量;

  • VAR_EXTERNAL:外部变量,即导入当前POU中的全局变量;

  • VAR_GLOBAL:全局变量;

  • VAR_TEMP:临时变量;

CODESYS开发环境还对IEC 61131-3标准进行了扩展,包括如下几种:

  • VAR_STAT:静态变量;

  • VAR RETAIN:保持变量;

  • VAR PERSISTENT:持久变量;

三种程序组织单元对不同变量声明的支持如下表所示:

类型
程序(Prog)
函数块(FB)
函数(FC)
VAR
支持
支持
支持
VAR_INPUT
支持
支持
支持
VAR_OUTPUT
支持
支持
支持
VAR_IN_OUT支持
支持
支持
VAR_EXTERNAL
支持
支持
不支持
VAR_GLOBAL
支持
不支持
不支持
VAR_TEMP
支持
支持
不支持
VAR_STAT
支持
支持
不支持
VAR RETAIN支持
支持
不支持
VAR PERSISTENT支持
支持
不支持

3、POU的代码区

程序组织单元的代码区用来编写代码。IEC61131-3推荐五种编程语言:梯形图(LADD)、功能块图(FBD)、顺序功能图(SFC)、指令表(IL)和结构化文本(ST)。CODESYS支持这五种语言,另外还支持连续功能图(CFC)。

好了,关于程序组织单元就先介绍到这里。欢迎扫描下面的二维码关注我的微信公众号。

founderchip.png

取消

感谢您的支持,欢迎常来看看!

扫码支持
一点动力,多少随意

打开支付宝扫一扫,即可进行扫码打赏哦

发表评论