在Micro PLC上的浮点数学:PID、模拟缩放及何时真正需要它

让我从一个数字开始:214-219。这是V6.2.2手册中浮点块所在的页面范围。你可能会认为供应商把它们埋在那里,因为没有人使用它们。错了。他们把它们埋在那里是因为整数数学适用于90%的工作——而最后10%才是真正的机器所在。

一个微型PLC执行SIN、COS、TAN、LN、EXP、SQRT、实数比较和实数移动。十年前,这句话会是个笑话。今天,它以低于一个体面示波器探头的价格发货,装在一个35mm DIN导轨模块中。

当整数数学对你撒谎时

这里是陷阱。用整数数学缩放0-10V模拟输入是有效的——直到你进行除法。6V进入0-1000范围:整数除法会丢弃余数,突然间你的水平读数每次扫描都会漂移一个单位。经过一个班次,漂移会累积。经过一周,你的水箱会溢出,因为PLC认为水位正常。

浮点数解决了这个问题。一个缩放块,实数端到端,舍入噪声消失。这不是奢侈。这是保持你的泵干燥和客户冷静的关键。

具体案例:使用真实数学的PID温度控制

在PR-18上设置一个PID循环:模拟输入通过0-10V变送器读取PT100,PID块用实数增益进行计算,输出驱动加热器的PWM通道。浮点引擎保持积分项稳定。在仅支持整数的硬件上,同样的循环需要手动增益调度,并且在低误差时仍然会振荡。

我看着一个调试工程师在一个整数PID上追逐0.4度的振荡两天。换成浮点模型的CPU,一个小时内调试完成。硬件成本差异可笑。工程时间差异却不小。

你将真正使用的块

老实说:你会使用ADD-R、SUB-R、MUL-R、DIV-R和SQRT。也许在将值传递给HMI时会用ROUND和TRUNC。三角函数是为那些真正奇怪的项目而准备的——流量计算、从水位计算罐体积、输送带角度补偿。当那个奇怪的请求出现时,你不想解释你的PLC不能计算余弦。

字符串转换比听起来更重要。实数转字符串,整数转ASCII——这就是如何在没有HMI脚本语言的情况下构建可读的报警消息和数据日志。

它的成本

一旦选择了正确的CPU,没什么额外的。浮点块是当前手册修订版标准库的一部分,软件是免费的。唯一真正的成本是习惯的改变:停止用整数思考,开始用工程单位思考。

正确的缩放

缩放是浮点数发挥作用的地方,也是大多数缩放错误存在的地方。经典错误:用整数数学缩放原始值,并在每次除法时丢失余数。经典解决方案:用实数进行计算,并在边界处转换一次,HMI或SCADA期望一个整数。一个缩放块,实数端到端,舍入噪声消失。

把缩放常数写下来,让下一个工程师可以找到它们。一个读取0-10 bar的4-20mA变送器:公式、原始范围、工程范围——所有这些都应该在缩放块的注释中。这个值“看起来正确”几个月,直到它不再正确,而调试它的人需要常数,而不是选择它们的人的记忆。

在调试时测试边界:最小值、最大值和中间点。一个在50%时正确但在0%时错误的缩放块会通过随意的检查,但会在实际过程中失败。三个测试点,五分钟,缩放就完成了。

仅支持整数的谬论

有一种观点认为,Micro PLC应该保持仅支持整数,因为这就是小型控制器的做法。从成本的角度来看,这是一个可以辩护的立场,但从工程的角度来看,一旦你的过程涉及到除法、比率或任何类似实际单位的东西,这个立场就无法辩护。在这个平台上,浮点硬件没有额外成本;这个能力在块库中,而不是一个高级层级。

仅支持整数思维的真正成本在维护中显现:变通方法——缩放整数、移位小数、手动固定点数学——正是六个月后没有人理解的代码。浮点数就像过程一样:温度以度为单位,水位以米为单位,流量以升每分钟为单位。可读的代码是可维护的代码,而可维护的代码是保持服务合同盈利的关键。

在合适的工具中使用整数——计数器、标志、索引值。在过程发生的地方使用浮点数。平台同时提供这两者;选择的原则是按信号选择,而不是按宗教选择。

HMI中的实数

HMI和SCADA屏幕应该显示工程单位,而不是原始整数——缩放发生在PLC端。一次转换,在一个缩放块中,显示器到处读取度、巴和升每分钟。替代方案——在每个屏幕、每个标签、每个报告中进行缩放——是一个等待发生的公式错误。每个信号一个转换点,在块注释中记录,整个系统讲述操作员的语言。

这就是转变。硬件已经完成了。你的编程风格是升级的最后一块拼图。