BSL(向左移动位)

BSL 指令将数组元素中的位向左移动。
支持的语言︰功能块图、梯形图和结构化文本。
该指令适用于 L20E、L50E 和 L70E 控制器。
操作详细信息︰
BSL 指令是 false-true 梯级转换时的即时进程,并同步更新输出。当 Execution 为 TRUE 时,将最左侧位(Src + SrcOffset 和 Length)复制到 Unload 位,并且数组或非数组中的所有位都向左移一位。考虑 Length 和 16 位边界,BOOL 数据类型除外。然后,外部位移动到第一个元素的 0 位 (Src + SrcOffset)。
对于环绕操作,将 BitAddr 的位置设置为最后一个位或 Unload 位。BSL 指令的一种可能使用情况是通过容器生产线跟踪容器(其中每个位表示一个容器)。
BSL
BSL
BSL 参数
参数
参数类型
数据类型
描述
Execute
输入
BOOL
启用指令。
  • TRUE: 检测到上升沿,将位向左移动一个位置。
    • 首先确认故障条件。
    • 如果 Length = 0,外部位已移动到 Unload 位。未在 Scr 上完成位移动。Error 和 ErrorID 位已复位。Done 位已置位。
    • 如果 Length > 0 并且 Length <= 2,048,Error 和 ErrorID 位已复位。在位移动完成后,Done 位被置位。
    • 如果 Length > 0 并且 Length <= 2,048,最左侧位(通过 Src + SrcOffset 和 Length 寻址)将复制到 Unload 位中,并且数组或非数组中的所有位向左移一位(最多为 Length 位和 16 位边界,BOOL 除外)。外部位移动到第一个元素的 0 位 (Src + SrcOffset)。
  • FALSE:未检测到上升沿,不启用 BSL 操作。
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 时,操作遇到错误条件。
BSL 错误代码
错误代码
错误描述
01
不支持维度。
02
不支持数据类型。
03
位长度超出 2048。
04
源偏移超出数组大小。
05
位长度超出数组大小。
07
参数无效。

BSL 示例

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