文章目录

Codesys软PLC的任务优先级设置

发布于 2026-03-26 00:34:38 · 浏览 6 次 · 评论 0 条

Codesys软PLC的任务优先级设置

在Codesys软PLC控制系统中,合理配置任务优先级是保证程序实时性和稳定性的核心步骤。如果优先级设置错误,可能会导致关键动作响应延迟或系统通讯卡顿。本指南将直接展示如何在Codesys中创建任务、分配优先级,并解释抢占机制。


一、 理解任务优先级的基本逻辑

Codesys遵循“数值越大,优先级越高”的原则。当高优先级任务的条件满足时,CPU会立即中断当前正在执行的低优先级任务,转而去处理高优先级任务,处理完后再返回中断处继续执行。

核心公式如下,表示在单核CPU下,所有任务的单次最大执行时间总和必须小于最低优先级任务的周期,否则会导致系统过载:

$$ T_{Cycle\_Min} \ge \sum_{i=1}^{n} (T_{Exec\_Max\_i} + T_{Overhead\_i}) $$

其中 $T_{Exec\_Max}$ 为程序最大执行时间,$T_{Overhead}$ 为系统调度开销时间。


二、 配置任务优先级的实操步骤

  1. 打开 Codesys项目树。
  2. 双击 Application 下的 任务配置(Task Configuration)选项,打开任务设置窗口。
  3. 右键点击左侧的任务列表区域,选择 添加对象 -> 任务
  4. 输入新任务的名称,例如 FastTask按下回车键确认。
  5. 选中新创建的 FastTask,在右侧属性窗口中找到 优先级(Priority)一栏。
  6. 输入优先级数值。例如,输入 20(通常基准任务优先级设为10左右,数值越高越优先)。
  7. 设置任务类型。在 类型 下拉菜单中选择 循环(Cyclic)或 自由运行(Freewheeling)。
  8. 配置循环时间。点击 间隔 字段,输入时间值(如 1 ms),确保时间单位选择为 ms
  9. 关联程序组织单元(POU)。双击 任务配置 界面下方的 调用配置(Call Configuration)表格区域。
  10. 点击表格中的 <添加调用> 按钮。
  11. 选择需要在该任务下运行的程序(例如 PLC_PRGMotion_Control)。
  12. 保存项目并下载到PLC进行测试。

三、 任务抢占机制演示

为了更直观地理解高优先级任务如何“插队”,下方流程图展示了一个典型的抢占场景。假设低优先级任务正在运行,此时高优先级任务被触发。

sequenceDiagram autonumber participant CPU as "PLC CPU" participant Low as "低优先级任务\n(优先级: 5)" participant High as "高优先级任务\n(优先级: 15)" Low->>CPU: 开始执行周期 Note over Low: 正在运行常规逻辑 High->>CPU: 触发信号到达 (例如: 定时器到时) CPU-->>Low: 暂停当前执行 (保存现场) CPU-->>High: 抢占 CPU 资源 High->>CPU: 执行关键逻辑 (耗时: 0.5ms) High-->>CPU: 执行完毕 CPU-->>Low: 恢复现场 (返回断点) Low->>CPU: 继续执行剩余逻辑 Low->>CPU: 周期结束

四、 推荐的优先级与周期配置

根据不同的工业控制需求,建议按照下表分配任务优先级。请勿盲目将所有任务优先级都设置为最高,这会导致低优先级的通讯或人机界面卡死。

任务类型 推荐优先级 典型周期 适用场景
紧急IO处理 20 - 31 0.1 ms - 1 ms 高速计数器、急停逻辑、精密运动控制
标准控制逻辑 10 - 15 1 ms - 10 ms 主工艺流程、PID调节、基础逻辑
通讯与后台 1 - 8 10 ms - 100 ms Modbus/TCP通讯、数据记录、HMI刷新

五、 看门狗设置与系统保护

设置了高优先级任务后,必须防止因程序死循环或执行时间过长导致系统“假死”。看门狗用于监控任务的实际运行时间是否超时。

  1. 打开 任务配置 界面。
  2. 选中需要监控的任务(如 FastTask)。
  3. 勾选 看门狗(Watchdog)复选框。
  4. 设置 看门狗时间
    • 一般建议设置为任务周期的 $2$ 到 $5$ 倍。
    • 计算公式参考:$T_{Watchdog} = T_{Interval} \times SafetyFactor$。
    • 例如,周期为 $1$ ms,安全系数为 $4$,则输入 4 ms。
  5. 启用 看门狗动作选择 停机(Stop)或 跳过周期(Skip Cycle)。对于关键安全任务,建议选择 停机 以强制设备进入安全状态。

六、 常见问题排查

如果发现PLC运行不正常,请按以下顺序排查:

  1. 检查 资源 选项卡下的 PLC浏览器
  2. 查看 任务运行时间(Task Runtime)统计。
  3. 对比 最大运行时间(Max Runtime)是否接近或超过任务周期。
  4. 确认 低优先级任务的 最大运行时间 是否被高优先级任务频繁打断导致溢出。

如果高优先级任务计算量过大,它会长期独占CPU,造成低优先级任务“饿死”。解决方法是降低高优先级任务的计算复杂度,或减小高优先级任务的调用频率。

评论 (0)

暂无评论,快来抢沙发吧!

扫一扫,手机查看

扫描上方二维码,在手机上查看本文