程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

西门子PLC数据类型——浮点数

balukai 2025-01-09 10:35:40 文章精选 7 ℃

浮点数

PLC中的浮点数是指既包含小数又包含整数的数据类型

REAL

说明

数据类型 REAL 的操作数长度为 32 位,用于表示浮点数。数据类型 REAL 的操作数由以下三部分组成:

  • 符号:该符号由第 31 位的信号状态确定。第 31 位的值可以是“0”(正数)或“1”(负数)。
  • 以 2 为底的 8 位指数:该指数按常数增加(基值 +127),因此其范围为 0 ~ 255。
  • 23 位尾数:仅显示尾数的小数部分。尾数为标准化的浮点数,其整数部分始终为 1,且不会保存。

处理 REAL 数据类型时会精确到 6 位数。

下图显示了数据类型 REAL 的结构:

说明

使用浮点数时,将只保存由 IEEE754 标准定义的精度。另外指定的小数位数将根据 IEEE754 进行四舍五入。

小数位的位数可能会因频繁的嵌套算术计算而减少。

如果指定的小数位数多于该数据类型可存储的小数位数,则该数字会舍入到该值范围允许的精度所对应的值。

下表列出了数据类型 REAL 的属性:

长度(位)

格式

取值范围

输入值示例

32

符合 IEEE754 标准的浮点数

-3.402823e+38 到 -1.175495e-38

±0.0

+1.175495e-38 到 +3.402823e+38

1.0e-5; REAL#1.0e-5

浮点数

1.0; REAL#1.0

LREAL


说明

数据类型 LREAL 的操作数长度为 64 位,用于表示浮点数。数据类型 LREAL 的操作数由以下三部分组成:

  • 符号:该符号由第 63 位的信号状态确定。第 63 位的值可以是“0”(正数)或“1”(负数)。
  • 以 2 为底的 11 位指数:该指数按常数增加(基值 +1023),因此其范围为 0 ~ 2047。
  • 52 位尾数:仅显示尾数的小数部分。尾数为标准化的浮点数,其整数部分始终为 1,且不会保存。

处理 LREAL 数据类型时会精确到 15 位数。

下图显示了数据类型 LREAL 的结构:

下表列出了数据类型 LREAL 的属性:

长度(位)

格式

取值范围

输入值示例

64

符合 IEEE754 标准的浮点数

-1.7976931348623157e+308 到 -2.2250738585072014e-308

±0.0

+2.2250738585072014e-308 到 +1.7976931348623157e+308

1.0e-5; LREAL#1.0e-5

浮点数

1.0; LREAL#1.0

说明

使用浮点数时,将只保存由 IEEE754 标准定义的精度。另外指定的小数位数将根据 IEEE754 进行四舍五入。

小数位的位数可能会因频繁的嵌套算术计算而减少。

如果指定的小数位数比数据类型可保存的位数要多,那么将根据该值范围所允许的精度值对该值进行四舍五入。

无效浮点数

说明

可以区分数据类型 REAL 和 LREAL 的 4 位数字范围:

  • 以最高精度存储的标准数字
  • 不是以最高精度存储的非标准数字
  • 无穷数: +Inf/-Inf(无穷)
  • 无效数: NaN(非数字)

说明

浮点数将按照 IEEE754 标准进行保存。 转换结果或带有非规范化、无限或 NaN(非数字)浮点数的算术函数的结果取决于 CPU。

如果在数学函数中没有使用标准浮点数进行运算,那么显示的结果将因所用 CPU 系列不同而存在很大差异。

CPU 无法计算非标准浮点数,但 S7-300 和 S7-400 系列的一些较旧 CPU 版本除外。 非标准化数字的位模式以零表示。 如果计算结果在此范围内,则继续显示为零;并置位状态位 OV 和 OS(数值范围下冲)。

即使数学函数中无效浮点数值的显示精度有一定限制,但在 TIA Portal 中可监视指数为 -39 的数值(如 2.4408e-039),而不会显示错误结果。 这意味着浮点数值可超出有效的数字值范围内。

说明

以下内容适用于 S7-1200 V1、V2 和 V3 系列的 CPU:

比较运算“等于”使用无效浮点数的位模式。 如果比较具有相同位模式的 2 个“NaN 数值”,则“等于”运算的输出将返回结果 TRUE。

说明

以下各项适用于 S7-1200 V4 和 S7-1500 系列的 CPU:

如果比较两个无效数值 (NaN),则结果将始终为 FALSE,而与无效数值的位模式及比较关系 (>, >, ...) 无关。

说明

比较非标准浮点数

要对两个非标准浮点数执行“等于”比较运算,S7-300/400 系列 CPU 的输出信号状态将置位为“0”,而 S7-1200/1500 系列 CPU 的输出信号状态则将置位为“1”。

如果算术函数的输入变量表示无效浮点数,那么无效浮点数也将作为结果输出。

可通过以下选项判断由无效浮点数引起的可能错误:

  • 在 LAD/FBD 和 SCL 中,可查询使能输入 ENO 是否为 FALSE
  • 在 STL 中,可对状态位 OV 进行判断
最近发表
标签列表