三菱一、变址寄存器Z的核心功能
地址动态修改
变址寄存器(V/Z)通过数值偏移动态修改软元件地址,简化批量操作编程。
16位模式:V/Z独立使用(如
D10Z
表示D(10+Z的值)
)。32位模式:合并V(高位)和Z(低位)使用(如
[D10Z]
表示32位地址,需用DMOV等指令同时修改V/Z)。软元件类型支持
位元件:X/Y/M/S(八进制加法,如
Z=8
时X0Z
变为X10
)。字元件:D/T/C(十进制加法,如
Z=5
时D0Z
变为D5
)。常数修饰:直接修改常数(如
K30Z
,Z=8时实际为K38
)。典型应用场景
批量数据处理:通过循环修改Z值,遍历数组(如
D0Z
到D9Z
)。多工位控制:动态切换I/O地址(如
Y0Z
控制不同工位的电磁阀)。复杂逻辑简化:替代多个跳转指令,减少程序步数。
二、循环移位SFTLP指令详解
指令特性
Mn
:源数据输入(如X0)。Yn
:目标寄存器(如M0)。Kn1
:目标总位数(如K8表示8位)。Kn2
:每次左移位数(如K1表示每次移1位)。脉冲执行:上升沿触发,仅执行一次左移(与连续执行的SFTL区分)。
格式:
SFTLP [Mn] [Yn] [Kn1] [Kn2]
关键规则
Kn2=0
:不执行移位。Kn2>1
:每次左移Kn2位,并从Mn读取Kn2位数据填入低位。必须满足:
Kn2 ≤ Kn1
(如K8总位数下,Kn2最大为8)。Kn2限制:
数据丢失:高位移出后直接丢失,无需额外处理。
触发信号:必须为上升沿,避免持续ON导致重复触发。
应用案例
效果:每触发一次,两台电机同时启动/停止,形成顺序控制。
效果:每次触发时,LED灯顺序左移一位。
流水灯控制:
ladderSFTLP X0 M0 K8 K1 // X0触发时,M0~M7左移1位,X0状态填入M0
电机顺序启动:
ladderSFTLP M10 Y0 K4 K2 // M10触发时,Y0~Y3左移2位,M10状态填入Y0
三、变址Z与SFTLP的协同应用
动态移位控制
通过修改Z值,动态调整移位目标地址。例如:
ladderMOV K5 Z0 // 设置Z0=5SFTLP X0 D10Z0 K8 K1 // 实际移位目标为D15(D10+5)
应用场景:多组相同结构的移位操作(如多条流水线状态监控)。
跨系列兼容性注意
Q系列PLC:需使用ROLP指令替代SFTLP,行为可能不同。
32位地址:若目标为32位寄存器(如D),需合并V/Z并使用32位指令(如DMOV)。
四、常见问题与解决
移位数据异常
原因:Kn2设置错误或触发信号非上升沿。
解决:检查Kn2≤Kn1,并确保触发信号为脉冲信号(如使用PLS指令生成上升沿)。
变址地址越界
原因:Z值过大导致地址超出寄存器范围(如D1000+Z=D2000,但D2000未定义)。
解决:在程序中限制Z的最大值(如通过CMP指令比较)。
32位指令错误
原因:仅修改Z未修改V,导致高位残留旧值。
解决:使用32位指令(如DMOV)同时修改V/Z。