CoDeSys入门实战一起学习(十二):读懂程序组织单元(POU)的核心概念与结构
在PLC编程领域,尤其是基于CoDeSys平台的开发中,程序组织单元(POU)是构建用户程序的基础模块,相当于传统编程中的“块”。掌握POU的核心概念、分类与结构,是入门PLC高级编程的关键。本文将从基础定义出发,带大家逐步拆解POU的核心逻辑,为后续实操打下基础。一、POU是什么?核心定义与作用
程序组织单元(Program Organization Unit,简称POU)是用户程序的最小软件单元,由声明区和代码区两部分组成,所有PLC逻辑都需依托POU实现。其核心作用的是将复杂程序拆解为独立、可复用的模块,降低编程难度、提升代码可读性与维护性,同时支持多语言混合编程,适配不同工艺场景的需求。
从适用范围来看,POU的管理场景分为两类:
[*]“POU窗口”管理的对象:全局有效,可被工程中所有应用通过任务配置调用(实例化);
[*]“设备窗口”管理的对象:仅对本应用及子应用有效,无法跨应用调用。
POU的来源也分为两种:一是德国3S公司或PLC制造商提供的标准POU(集成在库文件中),二是用户根据逻辑需求自定义的POU,可灵活调用与扩展。
二、POU的三大分类:函数(FUN)、功能块(FB)、程序(PRG)
按功能划分,POU主要分为三类,各自承担不同的编程角色,核心区别可先通过下表快速梳理:
类型
核心特征
核心用途
函数(FUN)
无静态变量、无内部状态,仅1个返回值,相同输入必获相同输出
基础算法运算(如数学运算、数据转换)
功能块(FB)
有内部变量(状态)、需实例化,支持多输出,相同输入可能获不同输出
反复使用的复杂逻辑(如PID控制、计数器)
程序(PRG)
最大POU单元,可调用FUN、FB及其他PRG,需绑定任务执行
构建主程序、子程序,整合全局逻辑
三、POU的完整结构:三大组成部分
无论哪种POU,其完整结构都包含三部分,且均遵循IEC 61131-3标准,确保兼容性与规范性:
1. POU类型及命名
明确POU的类型(FUN/FB/PRG),命名需遵循核心原则:无空格、不与其他POU或数据类型重名,同一POU内动作名称唯一。规范的命名可大幅提升代码可读性,例如“F_iScaleOutput”表示“模数转换函数”,“FB_PT1Filter”表示“PT1低通滤波功能块”。
2. 变量声明部分(声明区)
用于指定变量的名称、类型、初始值及作用域,支持文本编辑器或表格编辑器编辑,变量类型包括:输入变量(VAR_INPUT)、输出变量(VAR_OUTPUT)、输入/输出变量(VAR_IN_OUT)、本地变量(VAR)、常量等。
核心注意事项:
[*]函数(FUN)仅支持多输入、1个返回值(返回值即函数名),无内部存储变量;
[*]功能块(FB)可声明内部变量,支持RETAIN属性(保持功能),建议用VAR_IN_OUT替代VAR_INPUT/VAR_OUTPUT减少内存占用;
[*]程序(PRG)可声明全局变量、硬件地址映射变量,支持分级寻址。
3. 代码指令部分(POU主体)
实现具体逻辑功能的核心区域,CoDeSys支持6种编程语言,可按需选择:
[*]文本语言:指令表(IL)、结构化文本(ST),适合复杂算法;
[*]图形化语言:功能块图(FBD)、梯形图(LD)、顺序功能图(SFC)、连续功能图(CFC),适合直观展示控制逻辑(如电气回路、流程步骤)。
四、实操步骤:添加POU的基础流程
掌握基础概念后,我们通过CoDeSys平台实操添加一个POU,步骤如下:
[*]打开CoDeSys项目,在左侧项目设备树中,右键目标项目/应用,选择“添加对象”→“程序组织单元”;
[*]弹出配置对话框,选择需添加的POU类型(程序/功能块/函数),从下拉菜单中选定编程语言(如ST、LD);
[*]输入POU名称(遵循命名原则),点击“确定”完成添加;
[*]在左侧项目设备树中,可查看新增POU,括号内会标注属性(FB/FUN/PRG),双击即可进入编辑界面,分别编辑声明区变量与代码区逻辑。
至此,我们已掌握POU的核心概念、结构与基础添加流程。下一篇博客将聚焦“函数(FUN)”,深入讲解其属性、自定义方法与实操案例,帮助大家快速上手函数编程。
页:
[1]