位右移 (BSR)

下表列出了支持此指令的控制器和应用程序。
架构
标准应用程序
安全应用程序
CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370 和 GuardLogix 5570 控制器
CompactLogix 5380、ControlLogix 5580、Compact GuardLogix 5380、GuardLogix 5580 和 ControlLogix 5590 控制器
BSR 指令用于将数组中的指定位右移一位。使能后,指令将数组的位 0 的值卸载到 .UL 位,将其余的位右移一位,并从位地址加载该位。
重要提示: 测试并确认指令对正确数据进行了更改。BSR 指令对连续内存进行操作。如果数组是成员数组,该指令可能会越过该数组的边界,移至其后的其他成员。请务必仔细选择长度,防止出现这种情况。
BSR 指令对连续数据内存进行操作。
如果指令尝试超过数组的末尾(LEN 太大)执行读操作,则指令会将 .ER 位置位并生成严重故障。
可用语言
梯形图
操作数
指令中混用数据类型时,需遵从相关的数据转换规则。请参见“数据转换”数据转换
梯形图
操作数
数据类型
格式
说明
Array
DINT
ARRAY
标签
要修改的数组
指定要移位的第一个元素。
Control
CONTROL
标签
运算的控制结构
Source Bit
BOOL
标签
要加载到空出位置的位。
Length
DINT
立即数
数组中要移位的位数
CONTROL 结构
助记符
数据类型
说明
.EN
BOOL
使能位,指示 BSR 指令是否使能。
.DN
BOOL
完成位,置位时指示各位右移一位。
.UL
BOOL
卸载位,是指令的输出。.UL 位用于存储已移出位范围的位的状态。
.ER
BOOL
错误位,当 .LEN < 0 时置位。
.LEN
DINT
长度,指定要移动的数组位数。
影响数学状态标志
故障条件
下表列出了特定于 BSR 指令的严重故障。
错误代码
类型
说明
20
4
如果第一个指定的位加上要移动的位数超出数组末尾,则会发生严重故障。
执行
梯形图
条件/状态
执行的操作
预扫描
.EN 位设置为假。
.DN 位设置为假。
.ER 位设置为假。
.POS 值清零。
梯级输入条件为假
.EN 位设置为假。
.DN 位设置为假。
.ER 位设置为假。
.POS 值清零。
梯级输入条件为真
请参见下文 BSR 流程图(真)
后扫描
不适用
BSR 流程图(真)
示例
示例 1
使能后,BSR 指令将 array_dint[0].0 的值复制到 .UL 位,将 0-9 右移,并将 input_1 的值加载到 array_dint[0].9。其余的位 (10-31) 将无效,这表示这些位未进行修改。
梯形图
示例 2
使能后,BSR 指令将 array_dint[0].0 的值复制到 .UL 位,将 0-9 右移,并将 input_1 的值加载到 array_dint[1].25。其余的位(dint_array[1] 中的 31-26)将无效,这表示这些位未进行修改。注意将 array_dint[1].0 经过字移位到 array_dint[0].31 的方式。
梯形图
提供反馈
对本文档有问题或反馈吗? 请在这里提交您的反馈
Normal