交换字节 (SWPB)
此信息适用于
CompactLogix
5370、ControlLogix
5570、Compact GuardLogix
5370、GuardLogix
5570、Compact GuardLogix
5380、CompactLogix
5380、ControlLogix
5580、GuardLogix
5580 和 ControlLogix 5590 控制器。SWPB 指令可重新排列 Source 的字节顺序。然后将结果放入 Destination 中。
可用语言
梯形图

功能块
此指令不可用于功能块中。
结构化文本
SWPB(Source, Order Mode, Dest);
操作数
重要提示:
以下情况下会导致运行出现意外:
- 输出标签操作数被覆盖。
- 结构操作数的成员被覆盖。
- 除非另外指定,否则结构操作数由多条指令共用。
指令中混用数据类型时,需遵从相关的数据转换规则。请参见“数据转换”。
梯形图和结构化文本
操作数 | 数据类型 | 格式 | 说明 |
|---|---|---|---|
Source | INT DINT | 标签 | 包含要重新排序的字节的标签。 |
Order Mode | 列表项 | 此操作数用于指定重新排序的方式。请参见 Order Mode 表。 | |
Dest | INT DINT | 标签 | 要按新顺序存储字节的标签。请参见 Dest 表。 |
如果选择 HIGH/LOW 顺序模式,可输入 HIGHLOW(不含斜线)。有关结构化文本中表达式语法的详细信息,请参见结构化文本语法部分。
Order Mode
如果 Source 为 | 并且要将字节更改为此模式(每个字母代表一个不同的字节) | 则选择 |
|---|---|---|
INT | AB => BA | 任意选项 |
DINT | ABCD => DCBA | REVERSE |
ABCD =>CDAB | WORD | |
ABCD => BADC | HIGH/LOW |
Dest
如果 Source 为 | 则 Destination 必须为 |
|---|---|
INT | INT、DINT 如果目标值为 DINT 型,则需在进行字节换位后将结果进行符号扩展。 |
DINT | DINT |
影响数学状态标志
否
严重/轻微故障
没有特定于此指令的故障。请参见“数组索引编制”通过数组建立索引,了解关于数组索引故障的信息。
执行
梯形图
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 不适用 |
梯级输入条件为假 | 不适用 |
梯级输入条件为真 | 该指令可将指定字节重新排列。 |
后扫描 | 不适用 |
结构化文本
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 请参阅“梯形图”表中的“预扫描”行。 |
正常执行 | 请参见“梯形图”表中的“梯级输入条件为真”行。 |
后扫描 | 请参见“梯形图”表中的“后扫描”行。 |
示例
示例 1 - DINT 标签的字节换位
这三条 SWPB 指令将按不同顺序模式将 DINT_1 的字节重新排序。显示样式为 ASCII,每个字符代表一个字节。每条指令将字节按新顺序放入不同的 Destination 中。
梯形图

示例 2 - 将数组所有元素中的字节换位
梯形图

![SWPB_LD_ex2_#2_[index]_v31](/content/dam/dita/zh/studio-5000-logix-designer/38-00/help/clinset/move-logical/graphics/l5k_swpb_ld_ex2_2_v31.png/_jcr_content/renditions/original)

示例 3:结构化文本表示的 SWPB
结构化文本
index := 0;
SIZE (array[0],0,array_length);
REPEAT
SWPB(array[index],REVERSE,array_bytes_reverse[index]);
index := index + 1;
UNTIL(index >= array_length)END_REPEAT;
提供反馈