重要区别:三菱、西门子是单循环扫描架构;罗克韦尔 Logix 系列是抢占式多任务架构,不是单一固定扫描循环,任务(Task)是执行调度单元,Task 下面包含 Program(程序),Program 下面包含 Routine(子程序 / 例程)Rockwell A...。
一、三层结构
Task(任务) → Program(程序) → Routine(例程)
Task 任务:决定什么时候执行(连续、周期、事件触发),带优先级;高优先级任务可以打断低优先级任务执行(抢占)。
Program 程序:隶属于任务,一个任务下可以挂多个 Program。
Routine 例程:真正写梯形图、ST、FBD 代码的地方;靠
JSR指令调用其他子例程。
三种任务类型
连续任务 Continuous(默认 MainTask):CPU 空闲就跑,执行完所有程序立刻从头再来,优先级最低,会被周期 / 事件任务打断。
周期任务 Periodic:按设定固定时间间隔执行(如 10ms),优先级可配置,适合 PID、运动规划。
事件任务 Event:硬件输入变化、运动事件触发才执行,异步响应高速事件Rockwell A...。
优先级:事件任务 > 周期任务 > 连续任务,数字越小优先级越高(1 最高,15 最低)。
二、【程序执行阶段】完整流程(以最常用连续任务举例)
Logix 的 IO 刷新和任务执行不完全强绑定:背板 / EtherNet/IP IO 是后台异步刷新,RPI 周期独立于任务扫描周期,这点和日系、西门子差异很大。
连续任务一次扫描完整顺序:
任务被调度,开始程序执行阶段
按任务内 Program 列表顺序,依次执行每一个 Program
每个 Program 优先执行指定主例程;
在梯形图中遇到
JSR指令,跳转调用对应的子 Routine;子例程执行完毕返回断点继续往下执行;梯形图:从上至下,从左到右逐梯级执行;同一标签多次赋值,以本任务扫描内最后一次赋值结果为准。
ST 结构化文本:按代码顺序执行;FBD 功能块由软件自动推导数据流执行顺序,不完全看摆放位置Rockwell A...。
当前 Program 所有逻辑、子例程全部跑完,进入下一个 Program;
如果中途高优先级任务触发:立刻暂停当前连续任务,保存现场,跳转执行高优先级任务;高优先级任务全部执行结束后,回到被打断位置继续往下跑,不是从头重扫(抢占式)。
本任务下全部 Program 执行完毕 → 任务扫描结束;
系统后台做通讯、MSG 消息处理;连续任务立刻重新开始新一轮执行。
关键点:IO 标签(如本地模块、EtherNet/IP 输入输出标签)是后台异步更新,不是在任务执行前统一批量锁存输入映像。 如果程序执行中途 IO 硬件状态发生变化,标签值会被后台随时改写,同一个扫描周期内,同一条输入标签前后读取可能读到不一样的值,这是 Logix 非常容易踩坑的点。 解决办法:任务扫描开头,把 IO 标签复制一份到内部中间标签,本任务全程使用中间标签,模拟传统 PLC 的映像区行为。
三、周期任务的程序执行阶段
系统计时到达设定周期时间;
如果当前正在运行低优先级任务,则抢占打断;
顺序执行本任务下全部 Program/Routine 逻辑;
全部逻辑执行完毕,释放 CPU,等待下一次定时触发;
周期任务执行时间不能大于设定周期,否则会发生任务溢出报错。
四、事件任务的程序执行阶段
硬件输入跳变、运动事件等触发条件到来;
抢占当前低优先级任务;
一次性执行本任务全部逻辑,执行完成退出;
适合高速事件处理,替代传统硬件中断 OB。
五、和西门子 S7‑200SMART、三菱 FX5U 核心差异
表格
| 项目 | S7‑200SMART | FX5U | 罗克韦尔 Logix5000 |
|---|---|---|---|
| 调度模式 | 单循环扫描,无抢占中断任务 | 单循环扫描 | 抢占式多任务,任务可互相打断 |
| IO 刷新 | 扫描开头输入采样,末尾输出刷新;I 映像本周期不变 | 扫描开头 I/O 批量刷新;Y 映像本周期不变 | IO 后台异步 RPI 刷新,与任务不同步,同一周期标签可能变化 |
| 程序执行 | OB1 从上到下跑完,不能中途打断 | 主程序从上到下跑完 | 任务可被高优先级任务打断,断点恢复继续执行,不是从头扫描 |
| 子程序调用 | CALL 调用 | CALL 调用 | JSR 调用 Routine |
六、实操注意点
跨任务共用标签风险:高优先级任务修改标签,低优先级任务执行中途读到被修改的值,引发逻辑异常,需要做数据拷贝 / 互锁处理。
看门狗:每个任务自带看门狗时间(默认 500ms),任务执行超过看门狗时间 CPU 报错停机。
连续任务扫描时间不是固定值,会被周期 / 事件任务挤占 CPU 时间。
想要传统 PLC“输入锁存‑程序执行‑输出刷新” 确定性行为:在任务最开头复制 IO 到内部标签,程序全部使用内部标签,任务结束把内部标签写回输出标签,模拟映像区。


