截断 (TRUNC)
下表列出了支持此指令的控制器和应用程序。
架构 | 标准应用程序 | 安全应用程序 |
|---|---|---|
CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370 和 GuardLogix 5570 控制器 | 是 | 否 |
CompactLogix 5380、ControlLogix 5580、Compact GuardLogix 5380、GuardLogix 5580 和 ControlLogix 5590 控制器 | 是 | 是 |
启用后,TRUNC 指令移除(截断)源的小数部分,并将结果存储在目标中。
小贴士:
在 Logix Designer 版本 36 中,此指令的助记符从 TRN 更改为 TRUNC。
可用语言
梯形图

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

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

结构化文本
此指令不可用于结构化文本中。
小贴士:
在表达式中使用 TRUNC 运算符可以计算出相同的结果。有关结构化文本中表达式和赋值语法的信息,请参见部分。
操作数
重要提示:
以下情况下会导致运行出现意外:
- 输出标签操作数被覆盖。
- 结构操作数的成员被覆盖。
- 除非另外指定,否则结构操作数由多条指令共用。
指令中混用数据类型时,需遵从相关的数据转换规则。请参阅 数据转换。
梯形图
操作数 | 数据类型 CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370 和 GuardLogix 5570 控制器 | 数据类型 CompactLogix 5380、ControlLogix 5580、Compact GuardLogix 5380、GuardLogix 5580 和 ControlLogix 5590 控制器 | 格式 | 说明 |
Source | REAL | REAL LREAL | 立即数 标签 | 要截断的值。 |
Destination | SINT INT DINT REAL | SINT INT DINT LINT USINT UINT UDINT ULINT REAL LREAL | 标签 | 用于存储指令结果的标签。 |
功能块图
FBD 块
操作数 | 类型 | 格式 | 说明 |
TRUNC | FBD_TRUNCATE | 标签 | TRN 结构 |
FBD 函数
输入操作数(左侧引脚) | 数据类型 CompactLogix 5380、ControlLogix 5580、Compact GuardLogix 5380、GuardLogix 5580 和 ControlLogix 5590 控制器 | 说明 |
Source | REAL LREAL | 要截断的值 |
输出操作数(右侧引脚) | 数据类型 CompactLogix 5380、ControlLogix 5580、Compact GuardLogix 5380、GuardLogix 5580 和 ControlLogix 5590 控制器 | 说明 |
Dest | LINT | 函数的结果。 |
请参阅 。
FBD_TRUNCATE 结构
输入成员 | 数据类型 | 说明 |
EnableIn | BOOL | 启用输入。如果为假,指令不会执行,也不会更新输出。 默认值为真。 |
Source | REAL | 转换指令的输入。 输入还可以通过输入标签获取 SINT、INT、DINT、LINT、USINT、UINT、UDINT、ULINT 和 LREAL。但是整型类型将首先转换为 REAL 类型。 将 SINT、INT、USINT 或 UINT 转换为 REAL 类型时,不会损失数据精度。 将 32 位类型(DINT、UDINT)转换为 REAL 类型时,可能会损失数据精度。两种数据类型都是以 32 位存储数据,但 REAL 类型 32 位中的一些位用于存储指数值。如果精度出现损失,控制器从 32 位类型(DINT、UDINT)的最低有效位获取数据。 将 64 位类型(LINT、ULINT 和 LREAL)转换为 REAL 类型时,可能会损失数据精度。 |
输出成员 | 数据类型 | 说明 |
EnableOut | BOOL | 指示指令使能后是否无故障执行。 |
Dest | DINT | 指令结果。 |
说明
截断并不是对值进行舍入;而是无论小数部分的值为何,非小数部分均保持不变。
影响数学状态标志
控制器 | 是否影响数学状态标志 |
CompactLogix 5380、ControlLogix 5580、Compact GuardLogix 5380、GuardLogix 5580 和 ControlLogix 5590 控制器 | 有一定条件下影响,请参阅 。 |
CompactLogix 5370、ControlLogix 5570、Compact GuardLogix 5370 和 GuardLogix 5570 控制器 | 是 |
严重/轻微故障
没有特定于此指令的故障。请参阅以了解数组索引错误。
执行
梯形图
条件/状态 | 执行的操作 |
预扫描 | 不适用。 |
梯级输入条件为假 | 将梯级输出条件设置为梯级输入条件。 |
梯级输入条件为真 | 将梯级输出条件设置为梯级输入条件。 Dest = Source 的截断值。 |
后扫描 | 不适用。 |
功能块图
FBD 块
条件/状态 | 执行的操作 |
预扫描 | 不适用 |
EnableIn 为假 | 将 EnableOut 设为 EnableIn。 |
EnableIn 为真 | Dest = Source 的截断值。 如果发生溢出 将 EnableOut 设置为假。 否则 将 EnableOut 设置为真。 |
指令首次扫描 | 不适用 |
指令首次运行 | 不适用 |
后扫描 | 不适用 |
FBD 函数
条件/状态 | 执行的操作 |
预扫描 | 不适用 |
普通扫描 | Dest = Source 的截断值。 |
指令首次运行 | 不适用 |
指令首次扫描 | 不适用 |
后扫描 | 不适用 |
示例
梯形图

功能块图
FBD 块

FBD 函数

结构化文本
REAL_dest := TRUNC(REAL_src);
提供反馈