BSR(向右移动位)

BSR 指令将数组元素中的位向右移动。
支持的语言︰功能块图、梯形图和结构化文本。
该指令适用于 L20E、L50E 和 L70E 控制器。
操作详细信息︰
BSR 指令是 false-true 梯级转换时的即时进程,并同步更新输出。当 Execution 为 TRUE 时,将最右侧位(元素的第 0 位,通过 Src + SrcOffset 寻址)复制到 Unload 位,并且数组或非数组中的所有位向右移一位。考虑 Length 和 16 位边界,BOOL 数据类型除外。然后,外部位移动到第一个元素的 0 位 (Src + SrcOffset)。
对于环绕操作,将 BitAddr 的位置设置为最后一个位或 Unload 位。BSL 指令的一种可能使用情况是通过容器生产线跟踪容器(其中每个位表示一个容器)。
BSR
BSR
BSR 参数
参数
参数类型
数据类型
描述
Execute
输入
BOOL
启用指令。
  • TRUE: 检测到上升沿,将位向右移动一个位置。
  • FALSE:未检测到上升沿,不启用 BSR 操作。
Scr
输入
ANY_ELEMENTARY
要移动的 Src(位)的地址。支持的数据类型:BOOL、DWORD、INT、UINT、WORD、DINT 和 UDINT。
  • 数组:将 Scr 设置为基于变量的地址,如 Source1、Source1[0] 或 Source1[1]。
  • 非数组:将 Scr 设置为变量地址,如 Source1。
SrcOffset
输入
UINT
如果 SrcOffset 为 0,则从第一个元素开始。
  • 数组:将 SrcOffset 设置为 0。如果设置为 Source1[0] 或 Source1[1],则会发生错误“源偏移超出数组大小”。
  • 非数组:将 SrcOffset 设置为 0,否则会发生错误“源偏移超出数组大小”
BitAddr
输入
BOOL
移动到 Src 中的位的位置。
Length
输入
UINT
Length 包含 Src 中要移动的位的数量。支持在数组元素之间移动。
  • 对于 BOOL 数据类型,为数组中要移动的布尔值的数量。
  • 对于 16 位和 32 位数据类型,将以 16 的倍数(如 16、32 和 64)移动位。如果 Length 不是 16 的偶倍数,则移动的位的数量将发送到下一个 16 位边界。
  • Length 基于数据类型的大小。如果 Length 超出范围,会发生错误“源偏移超出数组大小”。Length 值为:
    • BOOL:1
    • 16 位字:1-16
    • 32 位字:1-32
    • 64 位字:1-64
Unload
输出
BOOL
位从 Src 地址移出。
Error
输出
BOOL
当发生故障时,Error 设置为 True。
ErrorID
输出
USINT
当发生故障时,ErrorID 包含错误代码。
Done
输出
BOOL
为 TRUE 时,操作成功完成。为 FALSE 时,操作遇到错误条件。
BSR 错误代码
错误代码
错误描述
01
不支持维度。
02
不支持数据类型。
03
位长度超出 2048。
04
源偏移超出数组大小。
05
位长度超出数组大小。
07
参数无效。

BSR 示例

BSR 功能块图示例
BSR 梯形图示例
BSR 梯形图示例
BSR 结构化文本示例
BSR 结构化文本示例
结果
结果
提供反馈
对本文档有问题或反馈吗? 请在这里提交您的反馈
Normal