欧姆龙 PLC 的移位指令是工业控制中用于数据位移动或寄存器数据移位的核心指令,广泛应用于状态监测、计数、数据传输等场景。根据移位对象和方向的不同,主要分为位移位指令和字移位指令两大类,不同系列 PLC(如 CP1E、CP1H、CJ2M 等)的指令格式基本一致,但需注意部分指令的细微差异。
一、核心移位指令分类及功能
欧姆龙移位指令的核心逻辑是 “按指定方向、指定位数移动数据”,关键参数包括移位方向(左 / 右) 、移位触发条件、移位对象(位 / 字) 及进位 / 借位处理。以下是常用指令的详细说明:
1. 位移位指令(Bit Shift)
针对单个位地址(如 I/O 点、内部继电器 IR、保持继电器 HR 等) 组成的 “位串” 进行移位,常用于状态链的传递(如流水线工位状态、故障连锁信号)。
指令名称 | 助记符 | 功能描述 | 关键参数 | 典型应用 |
---|---|---|---|---|
左移位指令 | SFTL | 将指定 “位串” 向左移动 1 位,空位补 0,最左侧位移入进位位(CY) | - 移位触发端(EN):触发信号上升沿执行移位 - 位串起始地址(S):如 IR000.00 - 位串长度(n):如 8(表示 S~S+n-1 共 8 位) | 8 工位流水线状态传递,每个触发信号(如工位完成)使状态左移 |
右移位指令 | SFTR | 将指定 “位串” 向右移动 1 位,空位补 0,最右侧位移入进位位(CY) | 同 SFTL,仅方向相反 | 逆向状态监测(如物料退回信号链) |
循环左移位 | ROL | 将 “位串” 向左循环移位,最左侧位同时移入空位和进位位(CY) | 无 “空位补 0”,移位后数据闭环循环 | 环形工位状态切换(如转盘式设备的位置循环) |
循环右移位 | ROR | 将 “位串” 向右循环移位,最右侧位同时移入空位和进位位(CY) | 同 ROL,仅方向相反 | 环形数据的逆向循环 |
位移位指令示例(SFTL)
假设需实现 “3 个工位状态左移”,具体配置如下:
2. 字移位指令(Word Shift)
针对16 位 / 32 位寄存器(如数据寄存器 DT、链接寄存器 LD 等) 中的数值进行移位,常用于多字节数据的传输、计数累加等场景。
指令名称 | 助记符 | 功能描述 | 关键参数 | 典型应用 |
---|---|---|---|---|
字左移指令 | WSFL | 将指定 “寄存器组” 向左移动 1 个字(16 位),空位补 0,最左侧字移入进位寄存器(CY) | - 触发端(EN):上升沿触发 - 寄存器组起始地址(S):如 DT0 - 寄存器数量(n):如 4(DT0~DT3 共 4 个寄存器) | 4 个传感器的数值按顺序传递(如温度值队列) |
字右移指令 | WSFR | 将指定 “寄存器组” 向右移动 1 个字(16 位),空位补 0,最右侧字移入进位寄存器(CY) | 同 WSFL,仅方向相反 | 逆向数据队列(如数据回传) |
双字左移 | DWSFL | 针对 32 位数据(2 个连续寄存器)左移 1 个双字,空位补 0,进位存入 CY | 移位对象为 32 位数据(如 DT0+DT1=1 个双字) | 高精度数值(如重量、长度)的移位处理 |
双字右移 | DWSFR | 针对 32 位数据右移 1 个双字,空位补 0,进位存入 CY | 同 DWSFL,仅方向相反 | 32 位数据的逆向传递 |
字移位指令示例(WSFR)
假设需实现 “4 个温度值向右移位”,具体配置如下:
二、移位指令的关键共性规则
三、常见问题与注意事项
四、实操步骤(以 CX-Programmer 为例)
通过掌握以上移位指令的功能和规则,可灵活实现工业场景中的数据传递、状态监测等需求,尤其适合流水线、装配线等需 “顺序控制” 的设备。