Logix 的 ROTL/ROTR 属于过渡型指令(Transitional):只在梯级条件 OFF→ON 上升沿执行 1 次移位;梯级持续接通不会反复移位!
不能直接拿 TON.DN 驱动 ROTL;DN 是持续 ON;必须用【ONS 单脉冲指令】把定时器完成信号转为一个扫描周期的脉冲,再给到 ROTL。
应用场景:普洛菲斯管道水流动画;DINT 标签
Flow_Data作为移位寄存器,HMI 读取它的各个 bit。
标签定义
表格
| 标签名 | 类型 | 含义 |
|---|---|---|
| Pump_Run | BOOL | 水泵运行;TRUE 启动水流动画 |
| Timer_Flow | TON | 定时定时器;预设 120ms(120);调节水流速度;范围 80‑200ms |
| Pulse_OneShot | ONS | 单次触发指令的存储标签(ONS 需要一个 BOOL 存储位) |
| Flow_Data | DINT | 32 位移位寄存器;HMI 读取 Flow_Data.0 ~ Flow_Data.7 八个 bit 做流动圆点 |
| Init_Flag | BOOL | 上电初始化标志 |
Timer_Flow.PRE = 120;时基固定 1ms;120 就是 120ms 移位一次。
梯级逻辑(一共 3 段梯形图逻辑)
RUNG1:上电初始化,给移位寄存器赋初始值 1
[S:FS] 系统第一扫描位(首次扫描)
──| |──MOV Source:=1 Dest:=Flow_Data
上电 Flow_Data = 1;二进制
0000‑0001;bit0=ON;保证第一个流动点是亮的;不初始化全部 0 移位就看不到点。
如果水泵停止,希望所有水流点全部消失:再加一条:
──|/|──Pump_Run──MOV Source:=0 Dest:=Flow_DataPump_Run 为 FALSE,直接清零 Flow_Data,所有 bit 全部关闭。
RUNG2:定时器产生定时周期(Pump_Run=ON 才计时)
──| |──Pump_Run──(TON Timer_Flow, PRE:=120)
当 Pump_Run 接通,TON 开始计时;每 120ms Timer_Flow.DN 变成 TRUE; DN 会一直保持 ON,不会自动生成窄脉冲,必须 ONS 来截取上升沿。
RUNG3:ONS 截取 DN 上升沿 →驱动 ROTL 循环左移
──| |──Timer_Flow.DN ──ONS Pulse_OneShot
──(ROTL Source:=Flow_Data, N:=1, Dest:=Flow_Data)
解释:
Timer_Flow.DN 从 False→True 的时候,ONS 输出仅一个扫描周期 TRUE;
这一个扫描周期的上升沿触发 ROTL;执行一次循环左移 1 位;最高位移出来的 bit 自动补回最低位;
下一个扫描周期 ONS 就关闭;ROTL 不再动作;定时器自己会重新开始下一轮计时。
如果需要反向水流,把 ROTL(循环左移)换成 ROTR(循环右移,N:=1)即可。
结构化文本 ST 写法
//上电初始化
IF S:FS THEN
Flow_data:= 1;
END_IF;
//定时器
TON(Timer_Flow, Pump_Run, 120);
//检测定时器DN上升沿
IF Timer_Flow.DN AND NOT Pulse_oneShot THEN
Flow_data:= ROTL(Flow_Data,1);
Pulse_oneShot := TRUE;
ELSIF NOT Timer_Flow.DN THEN
Pulse_oneShot := FALSE;
END_IF;
IF NOT Pump_Run THEN
Flow_data:= 0;
END_IF;
HMI 普洛菲斯侧设置
HMI 通讯读取标签
Flow_Data;在管道内部放置 8 个蓝色小圆;
每个小圆设置【显示 / 隐藏动画】
圆点 1:
Flow_Data.0ON 显示圆点 2:
Flow_Data.1ON 显示 ……圆点 8:
Flow_Data.7ON 显示
常见踩坑点
直接 Timer_Flow.DN 长通驱动 ROTL:只会移位 1 次,之后不动!ROTL 只识别梯级从 OFF→ON 的跳变;DN 一直为 TRUE 就不会再触发第二次移位。必须加 ONS 单脉冲!
忘记上电 MOV 赋值 Flow_data:=1;寄存器全部是 0,移位之后永远没有点亮的点,HMI 看不到流动。
定时器 PRE 不要设置过小,小于 50ms,HMI 画面刷新跟不上,圆点闪烁严重;建议 80‑200ms 区间。
停止逻辑:水泵 Pump_Run 断开,直接 MOV 清零 Flow_Data,所有流动圆点立刻消失;也可以不清零,水流直接停留在当前位置。
补充对比其它 PLC:
安川 MP:ROTL 本身边沿触发;用定时器脉冲;
三菱 FX:ROR/ROR 是线圈长通,需要脉冲驱动;
AB Logix:ROTL 过渡指令,一定要 ONS 截取上升沿,是 AB 这边独有的重点。


