减 (SUB)
此信息适用于 CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370、GuardLogix 5570、Compact GuardLogix 5380、CompactLogix 5380、ControlLogix 5580、GuardLogix 5580 和 ControlLogix 5590 控制器。在适用的情况下会注明控制器的差异。
使能后,SUB 指令和运算符“-”用于将 Source A 减 Source B。
可用语言
梯形图

功能块图
功能块图支持以下元素:
FBD 块

FBD 函数
小贴士:
FBD 函数仅适用于 CompactLogix 5380、ControlLogix 5580、Compact GuardLogix 5380、GuardLogix 5580 和 ControlLogix 5590 控制器。

结构化文本
此指令不可用于结构化文本中。
小贴士:
在表达式中使用“-”运算符可以计算出相同的结果。有关结构化文本中表达式和赋值语法的信息,请参见结构化文本语法部分。
操作数
重要提示:
以下情况下会导致运行出现意外:
- 输出标签操作数被覆盖。
- 结构操作数的成员被覆盖。
- 除非另外指定,否则结构操作数由多条指令共用。
指令中混用数据类型时,需遵从相关的数据转换规则。请参阅数据转换“数据转换”部分。
梯形图
操作数 | 数据类型 CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370 和 GuardLogix 5570 控制器 | 数据类型 CompactLogix 5380、ControlLogix 5580、Compact GuardLogix 5380、GuardLogix 5580 和 ControlLogix 5590 控制器 | 格式 | 说明 |
|---|---|---|---|---|
Source A | SINT INT DINT REAL | SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL LTIME* TIME* TIME32* LDT* DT* | 立即数 标签 | 用来减去 Source B 的值。 |
Source B | SINT INT DINT REAL | SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL LTIME* TIME* TIME32* LDT* DT* | 立即数 标签 | Source A 要减去的值。 |
Dest | SINT INT DINT REAL | SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL LTIME* TIME* TIME32* LDT* DT* | 标签 | 用于存储指令结果的标签。 |
小贴士:
*在 SUB 指令中使用相对时间(LTIME、TIME32、TIME)和绝对时间(LDT、DT)数据类型时,请牢记以下注意事项:
- 如果 Source A 和 Source B 均为相对时间,则 Dest 必须为相对时间。
- 如果 Source A 为相对时间,Source B 为绝对时间,反之亦然,则 Dest 必须为绝对时间。
- 在 ADD 指令中,Source A 和 Source B 不能同时为绝对时间。
有关相对时间(LTIME、TIME 和 TIME32)和绝对时间(LDT 和 DT)数据类型的完整说明,请参见时间和日期数据类型。
功能块图
FBD 块
操作数 | 数据类型 | 格式 | 说明 |
|---|---|---|---|
SUB | FBD_MATH | 标签 | SUB 结构 |
FBD_MATH 结构
输入成员 | 数据类型 | 说明 |
|---|---|---|
EnableIn | BOOL | 启用输入。如果为假,指令不会执行,也不会更新输出。 默认值为真。 |
SourceA | REAL | 用来减去 SourceB 的值。 |
SourceB | REAL | SourceA 要减去的值。 |
输出成员 | 数据类型 | 说明 |
|---|---|---|
EnableOut | BOOL | 指示指令使能后是否无故障执行。 |
Dest | REAL | 指令结果。 |
FBD 函数
小贴士:
FBD 函数仅适用于 CompactLogix 5380、ControlLogix 5580、Compact GuardLogix 5380、GuardLogix 5580 和 ControlLogix 5590 控制器。
输入操作数(左侧引脚) | 数据类型 仅 CompactLogix 5380、ControlLogix 5580、Compact GuardLogix 5380、GuardLogix 5580 和 ControlLogix 5590 控制器 | 说明 |
|---|---|---|
SourceA(上方) | SINT USINT INT UINT DINT UDINT LINT ULINT REAL LREAL TIME TIME32 LTIME DT LDT | 用来减去 SourceB 的值。 |
SourceB (bottom) | SINT USINT INT UINT DINT UDINT LINT ULINT REAL LREAL TIME TIME32 LTIME DT LDT | SourceA 要减去的值。 |
输出操作数 (右侧引脚) | 数据类型 仅 CompactLogix 5380、ControlLogix 5580、Compact GuardLogix 5380、GuardLogix 5580 和 ControlLogix 5590 控制器 | 说明 |
|---|---|---|
Dest | DINT UDINT LINT ULINT REAL LREAL TIME TIME32 LTIME DT LDT | 函数的结果。 |
请参阅 FBD 函数。
影响数学状态标志
控制器 | 影响数学状态标志 |
|---|---|
CompactLogix 5380、ControlLogix 5580、Compact GuardLogix 5380、GuardLogix 5580 和 ControlLogix 5590 控制器 | 在一定条件下影响 |
CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370 和 GuardLogix 5570 控制器 | 是 |
请参见数学状态标志部分。
严重/轻微故障
没有特定于此指令的故障。请参见“数组索引编制”通过数组建立索引,了解关于数组索引故障的信息。
执行
梯形图
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 不适用 |
梯级输入条件为假 | 将梯级输出条件设置为梯级输入条件 |
梯级输入条件为真 | 将梯级输出条件设置为梯级输入条件 Dest = Source A - Source B |
后扫描 | 不适用 |
功能块图
FBD 块
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 不适用 |
EnableIn 为假 | 将 EnableOut 设为 EnableIn |
EnableIn 为真 | Dest = SourceA - SourceB 如果发生溢出 将 EnableOut 设置为假 否则 将 EnableOut 设置为真 |
指令首次运行 | 不适用 |
指令首次扫描 | 不适用 |
后扫描 | 不适用 |
FBD 函数
小贴士:
FBD 函数仅适用于 CompactLogix 5380、ControlLogix 5580、Compact GuardLogix 5380、GuardLogix 5580 和 ControlLogix 5590 控制器。
条件/状态 | 执行的操作 |
|---|---|
预扫描 | 不适用 |
普通扫描 | Dest = SourceA - SourceB |
指令首次运行 | 不适用 |
指令首次扫描 | 不适用 |
后扫描 | 不适用 |
示例
梯形图

功能块图
FBD 块

FBD 函数

结构化文本
DINT_dest := DINT_srcA - DINT_srcB;
提供反馈