0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

科技观察员 来源:allaboutcircuits 作者:大卫 ·彼得森 2022-04-29 16:20 次阅读

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。

pYYBAGJrn7OAIrqcAAAbz0CxMK4169.png

poYBAGJrn5-AWZS7AAD5WrNe86U957.png

浮点数的限制

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

pYYBAGJrn9yAeqcrAABHhnQgaS4382.jpg

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

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

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

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

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

    关注

    4975

    文章

    12254

    浏览量

    454910
  • 浮点数
    +关注

    关注

    0

    文章

    58

    浏览量

    15792
收藏 人收藏

    评论

    相关推荐

    一文带你秒懂IEEE 754浮点数

    一、简介1、常见的浮点数表示方式是IEEE754标准,它规定了浮点数的存储格式和运算规则,这个标准定义了两种浮点数表示:单精度和双精度。2、任何一个浮点数的二进制数可以写为:NUM
    的头像 发表于 03-18 08:09 898次阅读
    一文带你秒懂IEEE 754<b class='flag-5'>浮点数</b>

    modbus浮点数怎么读取

    Modbus是一种通信协议,常用于工业自动化系统中的设备之间的通信。它支持多种数据类型,包括整数、浮点数、字符串等。浮点数在工业领域中广泛应用,因此了解如何读取和处理Modbus浮点数是非
    的头像 发表于 12-28 14:38 1672次阅读

    单精度和双精度浮点数的区别

    单精度和双精度是计算机中表示浮点数的两种不同的精度。在计算机中,浮点数用来表示带有小数部分的实数,而单精度和双精度用来表示浮点数的精确程度不同。在以下文章中,我将详细介绍单精度和双精度浮点数
    的头像 发表于 12-15 10:25 2581次阅读

    单精度和双精度浮点数的区别

    在计算机科学和数值计算中,浮点数是一种用于表示实数的数据类型。浮点数有两种精度级别:单精度和双精度。这两种精度级别在表示范围、精度和存储空间等方面都有所不同。本文将详细介绍单精度和双精度浮点数的区别
    的头像 发表于 12-13 10:55 1494次阅读

    缝缝补补的浮点数进制转换器

    [浮点数]()在计算机科学中是一种重要的数据类型,用于表示实数。其中,FP32和FP16是两种常见的浮点数格式,分别占用32位和16位。
    的头像 发表于 12-04 14:00 437次阅读
    缝缝补补的<b class='flag-5'>浮点数</b>进制转换器

    请问ADSP-21469的汇编指令集ISA/VISA中有没有专门用来进行浮点数和定点数转换的指令?

    得到的ADC数据需要进行定点数浮点数的转换,为了节省开销,想使用汇编程序进行定点和浮点之间的转换。请问ADSP-21469的汇编指令集ISA/VISA中有没有专门用来进行
    发表于 11-29 08:03

    西门子PLC浮点数程序案例分享

    64位浮点数保存于VB0开始的存储区中,转换得出的32位浮点数保存于VD100中。
    发表于 10-27 17:07 1432次阅读
    西门子<b class='flag-5'>PLC</b><b class='flag-5'>浮点数</b>程序案例分享

    浮点数的运算怎么转换成整数运算?

    浮点数的运算怎么转换成整数运算
    发表于 10-12 06:31

    MCU双精度浮点数是用什么格式存储的?

    MCU双精度浮点数是用什么格式存储的
    发表于 10-11 06:24

    点数浮点数的概念 浮点数二进制序列与指数表达式之间的转化

    的缺点:由于小数点位置固定不变,定点数所表示的数的范围非常有限,不能同时表达特别大或特别小的数,所以才出现了浮点数,以此来扩充数的范围,同时浮点数也广泛应用于精度要求高的场合。简单的理解浮点数
    的头像 发表于 08-22 16:06 3147次阅读
    定<b class='flag-5'>点数</b>和<b class='flag-5'>浮点数</b>的概念 <b class='flag-5'>浮点数</b>二进制序列与指数表达式之间的转化

    单精度浮点数和十六进制相互转换例程(基于LV)

    十六进制字符转成普通字符十六进制字符转成浮点数浮点数转成十六进制字符应用于上位机和PLC通讯的数据转换
    发表于 08-07 15:12 18次下载

    C浮点数与字符转换工具

    C浮点数与字符转换工具免费下载。
    发表于 06-19 18:17 0次下载

    FPGA浮点数表示及计算机数值表示规则

    点数硬件实现简单,但表示的范围有限,且部分的小数运算IP核只支持浮点数运算,因此这里还需要提到浮点数的相关内容。
    发表于 06-16 15:41 990次阅读
    FPGA<b class='flag-5'>浮点数</b>表示及计算机数值表示规则

    西门子PLC读取的仪表数据(浮点数)如何转换为整数

    看到一个网友的问题,西门子200PLC采用MODBUS RTU协议采集多功能仪表的数据,接收的数据均是32位的单精度浮点数,我怎么在PLC程序里面实现单精度浮点数与十进制之间的转换?且
    的头像 发表于 06-01 10:18 3325次阅读
    西门子<b class='flag-5'>PLC</b>读取的仪表数据(<b class='flag-5'>浮点数</b>)如何转换为整数

    在SCL中使用浮点数REAL和LREAL进行计算

    例如,数据类型 REAL 在程序中以 6 位小数的精度进行指定和计算。在计算浮点数(REAL和 LREAL)时,请注意此精度通常应用于每个计算步骤。
    的头像 发表于 05-30 09:40 961次阅读
    在SCL中使用<b class='flag-5'>浮点数</b>REAL和LREAL进行计算