深度剖析PLC编程中的浮点数

描述

PLC 必须处理三种主要类型的值:布尔值、整数和浮点数。这些最后的浮点值会给程序员和技术人员带来最大的困惑。

任何包含处理器的数字控制系统都旨在接收输入值,使用这些值计算解决方案,然后使用这些计算向其他设备提供输出。必须仔细选择此过程中每个步骤使用的数字——不仅要足够精确以提供正确的输出值,而且要足够小,以免占用太多有限的可用内存空间。

数字的主要类别

数字数字适合三个主要类别的值:

一位“布尔”数字

多位整数

“浮点小数”数字

一位布尔数字只能保存 0 或 1 的值。这些布尔值非常适合传感器和开关输入以及线圈输出。

多位整数通常是 8、16 或 32 个连续位,并且只能保存整数值。可以使用这些数字存储或计算的最大值受位数限制。较大的数字需要更多的位,但也会消耗更多的内存。

最后一个类别经常出现在表示实际值时,例如温度、速度或压力。这些类型的值不限于整数,因为以某种精度知道值通常至关重要。

例如,测量压力时,了解 15.1 psi 和 15.8 psi 之间的变化可能很重要。如果我们将值限制为整数,它们都将显示为 15 psi,失去该精度。

这种数据类型的名称是“浮点十进制”数字,在编程软件中通常称为“浮点”或“实数”数据类型。

浮点数的结构

通常没有必要理解在实际值和二进制浮点等效值之间进行转换所涉及的每个数学运算。与许多数字转换一样,这是一个复杂的过程,可以根据需要进行研究。但这并不意味着应该忽略整个概念。

在本文中,这些数字将被称为浮点数。但是,如果您是 RSLogix 用户或该术语的任何其他适当头衔,则可以在心理上将其转换为真实的。

浮点数由 PLC 中的 32 位组成。在许多现代计算机处理器中,可能使用 64 位,但对于几乎所有 PLC,32 位是标准。这意味着就内存容量而言,浮点数不会比 32 位整数(例如 double 或 DINT)消耗更多空间。有时,两个 32 位数字可以组合成一个 64 位浮点值。

浮标的一部分

浮点数由三个部分组成,每个部分使用 32 位的一部分。第一位是符号位,用于标识它是正值还是负值。如果将真空表示为仪表值,则温度很容易为负数,压力也可以为负数。速度可能是正的/负的,也可能是使用 CW/CCW 或类似的术语来区分的。第一位标识正面或负面。

下表显示了 32 位浮点数的示例分解。此示例显示可能的最小正值,指数为 1,尾数为 0。

浮点数

 

浮点数

浮点数的限制

与整数值相比,浮点数的主要注意事项可能是计算解的额外时间。在一个具体示例中,根据罗克韦尔自动化针对 ControlLogix 处理器的文档,使用 REAL 数据类型的 ADD 计算的执行时间比 DINT 的相同 ADD 长约 6.5 倍。

浮点数

图 2.数据表摘录比较使用 32 位 DINT 和 32 位 REAL 数据类型的 ADD 指令时间。

有时,浮点数是必要的,但处理指令的额外时间应该是一个坚定的提醒,在合理的情况下考虑使用整数。

某些情况下的另一个潜在问题是无法真正处理绝对精确的值。对于整数,比如数数,你可以数 100 个项目,但你永远不会数到 100.5 个项目。因此,它可以很容易地显示为 100,没有理由显示 100.0000000 个项目。

但是,对于需要非常大精度的值(这意味着尾数非常大),该值可能会被四舍五入。对于许多系统来说这可能不是问题,但是当系统必须定期测量大的模拟值时,舍入误差可能会导致问题。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分