[汇川] 编程概念-POU和任务配置

[复制链接]
查看62 | 回复0 | 2025-3-29 08:03:38 | 显示全部楼层 |阅读模式
>
任务配置是将用户程序按执行要求,分成若干个任务组,每个任务组可以设置不同的执行触发条件、执行时间间隔、优先级等。
IFA中的任务配置,目前我没有添加任何可执行程序,main程序是空白,这就是为什么我上一篇说理论上可以自动运行,实际上没配置任务,无法运行;
这里Ecat任务优先级0,main任务优先级1级,0是最高级,31是最低级。其中0~15级为基于优先级的抢占式调度策略,16~31级为基于时间片的轮训调度策略。

中型 PLC 常见 的任务有:EtherCAT 任务、CANopen 任务、HSIO高速中断任务、主循环main任务等,其中,运动控制相关的用户程序主体,是安排在 EtherCAT 任务下执行。

其中的 EtherCAT 任务,在中型 PLC 中是一个最为重要的任务,运动控制功能的实时处理,都是在这个任务中完成的,它是一个执行时间间隔短、优先级最高的一个时钟中断型的任务,一旦满足时间条件,它可以无条件地中断其他的任务,开始执行 EtherCAT 任务,直到该任务配置下所有的 POU 执行完毕,才会退出。

每个任务中,都可以指定执行多个用户程序单元(即 POU),这些 POU 会被逐个依次序被执行,该次序就是在任务配置中的顺序,如下图:


图中,三个 POU 的执行顺序依次是 PLC_PRG、POU_ipo、POU2,有全局变量更新操作和判断的情况时,需要注意安排合适的顺序。

图中还有 ETHERCAT.EtherCAT_Task 的“POU”项目,默认就是首先被执行,可以理解为进入 EtherCAT 任务时系统进行的总线通信任务默认处理,包括主站与所有从站的 PDO 发送接收、各伺服轴数据结构的更新处理等。

不同执行周期的处理程序,应放在不同的 POU 中编写。比如按 EtherCAT 周期执行的 POU、外部中断程序POU、按 20ms 时间处理的程序 POU,就必须分成独立的 POU 来编写;

为提高程序的可读性,按不同控制工艺段、不同的操作对象、不同的物理结构部件等,分别用不同的 POU 来处理,每个 POU 分别命名为易于理解的名称;如同 C 语言编程,将一个反复调用的处理程序做成一个独立的 POU,方便本工程调用;甚至还方便其他工程沿用;

多人合作编程时,每个编程人员各自编写调试自己负责的工艺段的 POU,最后合成为一个用户程序项目;

POU 最常见的含义是 Program Organization Unit(程序组织单元)

POU 的三种类型

  1. 函数(Function)

    • 无状态的代码块,接受输入参数并返回一个确定的输出。
    • 示例
      :数学运算(如加法)、逻辑判断等。
    • 特点:每次调用结果仅取决于输入,不保留历史状态。
  2. 功能块(Function Block)

    • 有状态的代码块,可以存储内部变量(如计数器、定时器)。
    • 示例
      :电机控制、PID 调节器等。
    • 特点:每次调用可能产生不同的结果(因内部状态变化),需实例化后使用。
  3. 程序(Program)

    • 顶层执行单元,用于协调多个函数和功能块,通常对应 PLC 的主循环程序。
    • 示例
      :自动化产线的主控制逻辑。

POU 的作用

  • 模块化设计
    :将复杂逻辑拆分为独立单元,便于开发和维护。
  • 代码重用
    :函数和功能块可跨项目重复使用,减少冗余代码。
  • 标准化
    :符合 IEC 61131-3 标准,确保不同厂商 PLC 的兼容性。
  • 分层结构
    :程序 → 功能块 → 函数,形成清晰的层级关系。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则