位左移 (BSL)
下表列出了支持此指令的控制器和应用程序。
架构 | 标准应用程序 | 安全应用程序 |
|---|---|---|
CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370 和 GuardLogix 5570 控制器 | 是 | 否 |
CompactLogix 5380、ControlLogix 5580、Compact GuardLogix 5380、GuardLogix 5580 和 ControlLogix 5590 控制器 | 是 | 是 |
BSL 指令用于将数组中的指定位左移一位。
使能后,指令将指定位的最高位卸载到 .UL 位,将其余的位左移一位,并将位地址加载到 Array 的位 0。
重要提示:
必须进行测试并确认指令不会更改用户不希望更改的数据。
BSL 指令对连续数据内存进行操作。数据受到指定成员的约束。
在此跳变指令中,继电器梯形图将梯级输入条件由假切换为真时,指令执行。
可用语言
梯形图

操作数
梯形图
操作数 | 类型 | 格式 | 说明 |
|---|---|---|---|
Array | DINT ARRAY | 标签 | 要修改的数组 指定要从其处开始移位的第一个元素 |
Control | CONTROL | 标签 | 运算的控制结构 |
Source Bit | BOOL | 标签 | 要移至空出位置的位。 |
Length | DINT | 立即数 | 数组中要移位的位数 |
CONTROL 结构
助记符 | 数据类型 | 说明 |
|---|---|---|
.EN | BOOL | 使能位,指示 BSL 指令是否使能。 |
.DN | BOOL | 完成位,置位时指示各位左移一位。 |
.UL | BOOL | 卸载位,是指令的输出。.UL 位用于存储已移出位范围的位的状态。 |
.ER | BOOL | 错误位,当 .LEN < 0 时置位。 |
.LEN | DINT | 长度,指定要移动的数组位数。 |
影响数学状态标志
否
严重/轻微故障
在以下情况下发生严重故障 | 故障类型 | 故障代码 |
|---|---|---|
LEN 超过数组的大小 | 4 | 20 |
有关操作数相关的故障,请参阅 常用属性。
执行
梯形图
条件/状态 | 执行的操作 |
|---|---|
预扫描 | .EN 位设置为假。 .DN 位设置为假。 .ER 位设置为假。 .POS 值清零 |
梯级输入条件为假 | .EN 位设置为假。 .DN 位设置为假。 .ER 位设置为假。 .POS 值清零。 |
梯级输入条件为真 | 请参见“BSL 流程图(真)” |
后扫描 | 不适用 |
BSL 流程图(真)

示例
示例 1
使能后,BSL 指令从 array_dint[0] 中的位 0 开始执行。指令将 array_dint[0].9 的值卸载到 .UL 位,将其余的位移位,并将 input_1 的值加载到 array_dint[0].0 中。其余的位 (10-31) 将无效。
梯形图


示例 2:
使能后,BSL 指令从 array_dint[0] 中的位 0 开始执行。指令将 array_dint[1].25 的值卸载到 .UL 位,将其余的位移位,并将 input_1 的值加载到 array_dint[0].0 中。其余的位(array_dint[1] 中的 31-26)将无效。


提供反馈