温度、流量这类模拟量要做浮点运算。本课讲 C 里的浮点处理与标定,避免在整数运算里丢精度。
有些量天生带小数:温度 87.5 度、流量 12.3 升。可 PLC 的 D 寄存器是整数,装不下小数点。整数算乘除还容易丢精度,怎么办?C 里可以上浮点数。
C 里 float 就是带小数的数。用不着额外库,wasm 原生支持。把采样转成 float 再乘除,中间结果都带小数,最后才落回整数,精度高得多。
拿温度变送器举例:采样 0 到 4095,对应 0 到 200 度。换算就是采样乘 200 再除 4095。浮点算完,2048 对应约 100 度,一个公式搞定。
D 区存不下小数,老办法是放大十倍再取整:100.0 度就存 1000,一位小数藏在最后一位。要显示时再除以十。既有小数位,又不碰浮点,工程上很常用。
算出温度就能做判断:超过 150 度就报警。浮点直接跟 150.0 比,干净利落。换成整数就得拿 1500 跟放大的值比,容易看花眼,这就是浮点的好处。
浮点这一课记三点:C 里能直接用 float,采样先转 float 再算,结果放大十倍落回整数。要小数显示就放大,要判断门限就放大后比,套路就这套。