带目标的位域分配 (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_FBD_avail_v31
结构化文本
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。
BTD value_1 before BTD
步骤 2
SourceBit 和 Length 指定将 Source 中的哪些位复制到 Dest 中。目标起始位由 DestBit 确定,Source 和 Target 保持不变。
BTD Value_1_2 before and after BTD instruction
功能块
BTDT_FBD_ex_v31
结构化文本
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;
提供反馈
对本文档有问题或反馈吗? 请在这里提交您的反馈
Normal