带目标的位域分配 (BTDT)
此信息适用于 CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370、GuardLogix 5570、Compact GuardLogix 5380、CompactLogix 5380、ControlLogix 5580、GuardLogix 5580 和 ControlLogix 5590 控制器。在适用的情况下会注明控制器的差异。
BTDT 指令首先将 Target 复制到 Destination。随后从 Source 中复制指定位,将这些位进行相应移位,再将这些位写入 Destination 中。Target 和 Source 值则保持不变。
可用语言
梯形图
此指令不可用于梯形图中。
功能块

结构化文本
BTDT(BTDT_tag);
操作数
功能块
操作数 | 类型 | 格式 | 说明 |
|---|---|---|---|
BTDT tag | FBD_BIT_FIELD_DISTRIBUTE | 结构 | BTDT 结构 |
结构化文本
输入参数 | 数据类型 | 说明 |
|---|---|---|
EnableIn | BOOL | 如果此参数清零,指令不会执行,也不会更新输出。如果置位,则执行指令。 默认置位。 |
Source | DINT | 输入值,其中包含要移动到 Destination 中的位。 有效值 = 任意整型值 |
SourceBit | DINT | Source 中的位编号(移动起始位的最低位编号)。 有效值 = 0-31 |
Length | DINT | 要移动的位数。 有效值 = 1-32 |
DestBit | DINT | Dest 中的位编号(目标起始位的最低位编号)。 有效值 = 0-31 |
Target | DINT | 在移动 Source 中的位之前要移动到 Dest 中的输入值。 有效值 = 任意整型值 |
输出参数 | 数据类型 | 说明 |
|---|---|---|
EnableOut | BOOL | 指示指令是否处于启用状态。 |
Dest | DINT | 位移动操作的结果。 |
有关结构化文本中表达式语法的信息,请参见
结构化文本语法
部分。说明
当条件为真时,BTDT 指令首先将 Target 复制到 Destination 中,然后将 Source 中的一组位复制到 Destination 中。这组位由 Source bit(位组的最低位编号)和 Length(要复制的位数)确定。Destination bit 用于确定 Destination 中的最低起始位号。Source 和 Target 保持不变。
如果位域的长度超出 Destination 的范围,则该指令不会保存多余的位。任何多余位都不会回绕到下一个字。
影响数学状态标志
控制器 | 受影响的数学状态标志 |
|---|---|
CompactLogix 5380、ControlLogix 5580、Compact GuardLogix 5380、GuardLogix 5580 和 ControlLogix 5590 控制器 | 是 |
CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370 和 GuardLogix 5570 控制器 | 否 |
请参见数学状态标志部分。
严重/轻微故障
没有特定于此指令的故障。有关操作数相关的故障,请参见通用属性部分。
执行
功能块
条件/状态 | 执行的操作 |
|---|---|
预扫描 | EnableIn 和 EnableOut 位设置为假。 |
Tag.EnableIn 为假 | EnableIn 和 EnableOut 位设置为假。 |
Tag.EnableIn 为真 | EnableIn 和 EnableOut 位设置为真。 指令执行。 |
指令首次运行 | 不适用 |
指令首次扫描 | 不适用 |
后扫描 | EnableIn 和 EnableOut 位设置为假。 |
结构化文本
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 请参见“功能块”表中的“预扫描”行。 |
正常执行 | 请参见“功能块”表中的“Tag.EnableIn 为真”行。 |
后扫描 | 请参见“功能块”表中的“后扫描”行。 |
示例
步骤 1
控制器将 Target 复制到 Dest。

步骤 2
SourceBit 和 Length 指定将 Source 中的哪些位复制到 Dest 中。目标起始位由 DestBit 确定,Source 和 Target 保持不变。

功能块

结构化文本
BTDT_01.Source := sourceSTX;
BTDT_01.SourceBit := source_bitSTX;
BTDT_01.Length := LengthSTX;
BTDT_01.DestBit := dest_bitSTX;
BTDT_01.Target := TargetSTX;
BTDT(BTDT_01);
distributed_value := BTDT_01.Dest;
提供反馈