2、实时性基础:什么是实时性?硬实时与软实时的区别
聊工业通讯协议,绕不开一个词——实时性。
很多刚入行的工程师,一听到「实时」两个字,就以为「快」就是实时。其实不是。我见过不少项目,通讯速率跑得飞快,但该丢数据还是丢,该超时还是超时。为什么?因为实时性不等于速度,它说的是另一件事。
2.1 到底什么是实时性?
咱们先把这个概念掰扯清楚。
实时性,说白了就是:系统对外部事件做出响应的时间,必须在某个确定的、可预期的范围内。
注意两个关键词:
- 确定:不是「大多数时候能行」,而是「一定行」。
- 可预期:最坏情况下的响应时间,你得提前算得出来。
举个例子。你按一下电梯按钮,电梯必须在几秒内响应。如果它有时候1秒就来了,有时候等5分钟才来,你会不会觉得这电梯有问题?这就是实时性差的表现。
工业现场也一样。PLC发一个读指令给Modbus从站,从站必须在规定时间内回复。如果它有时候10ms回,有时候500ms才回,那这条产线就没法稳定跑。
核心定义:实时性 = 在规定的截止时间(Deadline)之前,完成规定的任务。
2.2 硬实时 vs 软实时
搞清楚了实时性的定义,接下来就是区分两种类型。我个人习惯把它们分成「命根子」和「面子」两种。
2.2.1 硬实时(Hard Real-Time)
硬实时:错过截止时间,就是系统故障,甚至会造成灾难性后果。
我在项目中遇到过最典型的硬实时场景——安全联锁系统。比如化工装置的压力保护,一旦超压,必须在10ms内切断阀门。晚1ms都不行,晚1ms可能就爆炸了。
硬实时的特点:
- 截止时间必须100%满足
- 违反一次都不允许
- 后果往往是设备损坏、人员伤亡
你想想看,这种场景下,谁敢用「大概率能行」的通讯协议?
2.2.2 软实时(Soft Real-Time)
软实时:偶尔错过截止时间,系统还能工作,只是性能下降或体验变差。
最常见的例子——数据采集系统。你要求每100ms采集一次温度数据,偶尔一次延迟到150ms,数据还能用,只是精度稍微差一点。不会死人,也不会炸设备。
软实时的特点:
- 截止时间可以偶尔违反
- 违反次数多了,系统性能下降
- 后果通常是数据质量变差、用户体验不好
我的经验:很多工程师把Modbus当成「实时协议」来用,其实Modbus本身只定义了通讯格式,并没有保证实时性。能不能做到实时,取决于你的周期设计和网络拓扑。这一点后面会详细讲。
2.3 一张表看懂区别
为了方便对比,我整理了一个表格。嗯,这个表我用了很多年,每次培训都会拿出来讲。
| 对比项 | 硬实时 | 软实时 |
|---|---|---|
| 截止时间违反后果 | 系统故障、灾难 | 性能下降、体验差 |
| 容忍度 | 零容忍 | 可容忍偶尔违反 |
| 典型应用 | 安全联锁、运动控制 | 数据采集、监控报警 |
| 通讯协议要求 | 确定性极高,通常用EtherCAT、Profinet IRT | Modbus TCP、普通Profinet即可 |
| 设计思路 | 最坏情况分析,留足余量 | 统计平均性能,优化即可 |
2.4 为什么搞混这两种实时性会出问题?
我曾经见过一个项目,工程师用Modbus RTU做伺服驱动器的位置控制。他以为「通讯速度够快」就等于「实时性好」。结果呢?产线一跑起来,伺服时不时丢一个脉冲,位置就偏了。最后查出来,是Modbus的轮询周期不稳定,偶尔一次延迟导致伺服没收到指令。
这就是典型的把软实时的需求,用在了硬实时的场景里。
反过来也有问题。有些项目明明只是采集温度,非要上EtherCAT,成本翻了好几倍,性能却用不上。说白了,杀鸡用牛刀。
避坑指南:我曾经在选型阶段吃过亏。当时客户要求「实时通讯」,我没细问,直接上了Profinet IRT。结果现场一看,人家只是要每5秒读一次液位……白白浪费了预算。所以,拿到需求先问一句:错过一次会怎样? 这个问题能帮你快速判断是硬实时还是软实时。
2.5 实时性在Modbus中的体现
回到咱们课程的主题——Modbus。Modbus本身是主从架构,主站轮询从站。这种架构天然决定了它的实时性上限。
为什么?
- 主站必须等从站回复,才能发下一条指令
- 从站数量越多,轮询一圈的时间越长
- 任何一个从站响应慢了,整个周期都被拖累
所以,Modbus的实时性属于软实时范畴。它适合做数据采集、参数设置、监控报警。但如果你要用它做高速运动控制或安全联锁,那就要非常小心了。
我个人的建议是:
- 如果周期要求 > 10ms,Modbus RTU 可以试试
- 如果周期要求 > 1ms,Modbus TCP 可以试试
- 如果周期要求 < 1ms,别折腾Modbus了,换协议吧
记住一句话:实时性不是「快」,而是「稳」。Modbus可以做到「稳」,但前提是你得把周期设计好。下一章,咱们就专门讲这个——Modbus周期优化。
2.6 小结
这一章咱们讲了三个核心点:
- 实时性 = 在截止时间前完成响应,重点是确定性和可预期
- 硬实时 = 错过就完蛋,零容忍
- 软实时 = 偶尔错过还能忍,但别太过分
搞清楚了这些,你再看工业通讯协议,心里就有底了。哪些协议能用在什么场景,哪些协议只是「看起来快」,你都能判断个八九不离十。
好,下一章咱们就进入实操环节——怎么优化Modbus的通讯周期,让它尽可能接近实时。