返回主站|会员中心|保存桌面

欧姆龙服务商    

欧姆龙PLC

新闻分类
  • 暂无分类
站内搜索
 
友情链接
  • 暂无链接
首页 > 新闻中心 > 欧姆龙移位指令!
新闻中心
欧姆龙移位指令!
发布时间:2025-09-10        浏览次数:2        返回列表

欧姆龙 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 个工位状态左移”,具体配置如下:


  • 触发端(EN):I000.00(工位 1 完成信号,上升沿触发)

  • 位串起始(S):IR001.00(工位 1 状态位)

  • 位串长度(n):3(IR001.00 = 工位 1、IR001.01 = 工位 2、IR001.02 = 工位 3)

  • 执行逻辑

    • IR001.00 的 1 移入 IR001.01,IR001.01 的 0 移入 IR001.02;

    • IR001.02 的 0 移入进位位(CY),IR001.00 空位补 0;

    1. 初始状态:IR001.00=1(工位 1 有物料),IR001.01=0、IR001.02=0;

    2. 当 I000.00 触发(上升沿),SFTL 执行:

    3. 最终状态:IR001.00=0、IR001.01=1、IR001.02=0(状态左移 1 位)。

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 个温度值向右移位”,具体配置如下:


  • 触发端(EN):I000.01(新温度采集完成信号)

  • 寄存器起始(S):DT0(存储第 1 个温度值)

  • 寄存器数量(n):4(DT0 = 温度 1、DT1 = 温度 2、DT2 = 温度 3、DT3 = 温度 4)

  • 执行逻辑

    • DT3 的 28℃移入 CY,DT2 的 27℃移入 DT3,DT1 的 26℃移入 DT2,DT0 的 25℃移入 DT1;

    • DT0 空位补 0;

    1. 初始值:DT0=25℃、DT1=26℃、DT2=27℃、DT3=28℃;

    2. 当 I000.01 触发,WSFR 执行:

    3. 最终值:DT0=0、DT1=25℃、DT2=26℃、DT3=27℃,CY=28℃。

二、移位指令的关键共性规则

  1. 触发方式:所有移位指令均为上升沿触发(仅当触发端 EN 从 OFF→ON 时执行 1 次移位),若 EN 持续 ON,仅首次上升沿有效(避免连续移位)。

  2. 进位 / 借位(CY):移位时,“被移出的位 / 字” 会存入进位位(CY),可通过读取 CY 判断是否有数据溢出(如 SFTL 的最左侧位、WSFR 的最右侧字)。

  3. 空位填充:普通移位指令(SFTL/SFTR/WSFL/WSFR)的空位默认补0;循环移位指令(ROL/ROR)无空位,移出的位直接补到另一侧(闭环循环)。

  4. 数据长度限制

    • 位移位的 “位串长度(n)” 最大为 64(如 IR001.00~IR001.15 仅 16 位,需跨寄存器时需注意地址连续性);

    • 字移位的 “寄存器数量(n)” 最大为 128(需确保寄存器地址不超出 PLC 的内存范围,如 CP1E 的 DT 寄存器范围为 DT0~DT1999)。

三、常见问题与注意事项

  1. 移位后数据丢失:若未读取进位位(CY),被移出的 “位 / 字” 会直接丢失,需根据需求判断是否需要保存 CY 的值(如通过 MOV 指令将 CY 存入指定位 / 寄存器)。

  2. 地址越界:配置 “位串起始地址(S)” 和 “长度(n)” 时,需确保最终地址不超出 PLC 的地址范围(如 IR 寄存器最大为 IR255.15,若 S=IR255.14、n=3,则 IR255.16 超出范围,会报错)。

  3. 循环移位与普通移位的区别:循环移位(ROL/ROR)无数据丢失,适合 “环形状态”;普通移位(SFTL/SFTR)有空位补 0,适合 “线性状态传递”(如流水线从左到右依次完成)。

  4. 多触发信号的处理:若需连续移位(如每秒移位 1 次),需通过定时器(TIM)生成周期性触发信号,避免触发端(EN)持续 ON 导致仅移位 1 次。

四、实操步骤(以 CX-Programmer 为例)

  1. 打开 CX-Programmer,新建项目并选择对应 PLC 型号(如 CP1E-E40SDR-A);

  2. 在程序编辑区右键→“指令”→“移位指令”,选择目标指令(如 SFTL);

  3. 双击指令图标,配置参数:

    • EN:选择触发信号(如 I000.00);

    • S:输入位串 / 寄存器起始地址(如 IR001.00);

    • n:输入长度(如 3);

  4. 点击 “确定”,指令自动生成(如SFTL I000.00 IR001.00 K3,K3 表示长度为 3);

  5. 下载程序到 PLC,触发 EN 信号,通过 “在线监控” 观察移位过程及 CY 的值。


通过掌握以上移位指令的功能和规则,可灵活实现工业场景中的数据传递、状态监测等需求,尤其适合流水线、装配线等需 “顺序控制” 的设备。

收缩
  • QQ咨询

  • 电话咨询

  • 18576370666
  • 添加微信客服