无心飞扬 发表于 2024-8-5 13:56:36

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

  CODESYS提供符合IEC61131-3标准的编程开发环境。IEC 61131-3是PLC编程开发的国际标准,这个标准将程序的基本单位称为程序组织单元( Program Organisation Unit,POU),并定义了三种程序组织单元:函数(FC)、函数块(FB)和程序(PROG)。今天这篇文章,我们就来详细介绍下程序组织单元。  IEC 61131-3定义了三种程序组织单元,分别是:
  函数(FC):可以有输入/输出参数,但是没有静态变量。使用相同的参数调用函数时,总会产生相同的输出结果。另外,定义函数时,必须指定返回值类型;
  函数块(FB):也被称为“功能块”,可以有输入/输出参数,并且可以有静态变量。使用相同的参数调用函数块时,由于静态变量的保持性,可能产生不同的输出结果;
  程序(Prog):类似于C语言的Main函数。程序内部调用函数或函数块,外部被任务(Task)调用而执行;
  在CODESYS开发环境中,右键单击【应用(Application)】,选择【添加对象】-【POU】,会弹出【添加POU】的界面,如下图所示:  每个程序组织单元都包括:名称、变量声明区和代码区三部分。比如下图的motorControl函数块(FB):  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)。
页: [1]
查看完整版本: 基于CODESYS打造树莓派工业控制器(3)——理解程序组织单元(...