在工业自动化项目里,「这个平台能不能做实时控制」是一个高频问题,也是一个高频误答的问题。常见的回答只有两种:能,或者不能。前者往往来自一句「我们支持实时」,后者往往来自一次没有拆开分析的现场超时。两种回答都跳过了一个关键动作:把「实时」翻译成可测的周期、抖动与验收判据。
本文给一套工程手册式的方法:先把实时控制拆成可测指标,再按周期与抖动分档,最后给出验收、复测留痕与 TCO 的核对清单。文中的比例与档位是工程判据,不是某一台机器的实测值;具体数值须以整机规格与整机复测记录为准。
一、判据先行:把「支持实时」翻译成可测指标
实时控制的定义,不是「算得快」,而是「每一次都在截止时间之前算完」。这句话可以拆成四个可测的量:
- 周期:控制环多久执行一次,单位通常是毫秒或微秒;
- 最坏执行时间:从触发到输出完成,最慢的一次花了多久;
- 抖动:各次执行时间的离散程度,工程上更关心最坏抖动,而不是标准差;
- 超时次数:在规定的连续运行时间内,有多少次超过了截止时间。
这四个量里,最容易被忽略的是抖动。平均执行时间很漂亮、偶尔飙高一次的链路,在控制环里是不可用的。控制环看的是尾巴,不是均值。所以判据不能写成「平均响应小于多少」,而要写成「最坏抖动不超过周期的多少比例、连续运行超时次数为零」。
「支持实时」这句话之所以不能作为判据,是因为它没有回答三个必要问题:周期多长、最坏抖动多大、超时之后怎么处理。三个都不回答,承诺就无法验收,也无法在不同方案之间比较。工程上更常见的错误,是把「低延迟」当成「实时」:低延迟描述平均响应快,实时描述截止时间可保证,两者不是一回事。
把这四个量写成验收条款,常见的写法是:在规定负载与现场干扰条件下,连续运行足够多的周期,最坏抖动不超过周期的约定比例,超时次数为零。连续周期数与比例由工艺节拍和安全余量决定,不在本文给出统一值;关键是把它写下来,而不是停留在「支持实时」这四个字上。
二、方法:一个控制周期的四段拆解与时间预算
要谈边界,先把一个控制周期拆开。它通常由四段串联而成:
| 段 | 主要承担者 | 关键时延 | 常见问题 |
|---|---|---|---|
| 采样 | 传感器、工业 IO、采集卡 | 刷新周期、AD 转换、滤波 | 刷新周期与环周期不匹配 |
| 计算 | 控制器(实时核或专用硬件) | 最坏执行时间、调度抖动 | 后台任务抢占、缓存与中断影响 |
| 总线传输 | 现场总线主站与从站 | 总线周期、重传、从站处理 | 周期设得过紧、重传累积 |
| 执行器响应 | 驱动器、阀、执行机构 | 闭环带宽、响应时间、死区 | 响应时间未计入整环预算 |
四段是串联的,环的总时间由最长的那一段决定,而不是由最快的那一段。通用工控平台主要承担采样、计算和总线这一段;执行器响应的快慢,很大程度由驱动器本身的闭环决定。
拆开之后,应该做一张时间预算表:每一段写上限值、实测值、余量,再相加看总预算是否小于周期。这张表不需要很精确,但它能把「感觉够快」变成「哪一段还剩多少」。很多争执,在这张表面前会自然停下来。
时间预算表还有两个作用。第一,它把「换更快的平台」这个动作放到正确的位置:如果瓶颈在总线或执行器,换平台对整环的改善有限。第二,它让验收有对照:测试结果超出预算时,能直接定位到哪一段,而不是笼统地说「平台不行」。
拆解时要注意一个常见误区:把「平台的计算时间」当成「整个环的时间」。平台只占四段里的一段,甚至只占一段的一部分。用平台的最坏执行时间去推断整环的周期能力,会系统性高估。反过来,用整环的超时去否定平台,也会让平台背不该背的锅。
三、分档判据:周期、抖动与硬件形态
周期是第一道分水岭,也是最容易达成共识的一档。
毫秒级:1 ms、2 ms、4 ms 这一类周期,通用工控平台配实时核加标准现场总线,通常可以承担。这一档的时间预算相对宽,中断与协议栈的开销还能被吸收,工程上也有成熟的验收方法。
百微秒级:250 µs、125 µs 这一类周期,并且要求微秒级抖动,就不该硬压在通用平台上。应该把环路下沉到运动控制卡、可编程逻辑或专用轴控硬件,让确定性由专用硬件保证,通用平台只做上层协调与数据汇总。
这不是说通用平台「性能不够」,而是它的时间不确定性来源太多:缓存命中、中断合并、总线协议栈、操作系统调度、后台任务。每一样单独看都不大,叠在一起就会在微秒级暴露出来。越往微秒走,这些不确定性越难压住,压住的成本也越高。
第二道判据是抖动占周期的比例。工程上可以按「最坏抖动 ÷ 周期」分三档:
- 一成以内:通用平台加实时核可控,重点放在持续运行的稳定性;
- 一到三成:要逐段查中断分布、总线重传、驱动与固件配置,确认抖动来源;
- 超过三成:说明这个环不适合放在当前平台,应该换架构,而不是继续调参数。
这个比例不用算得很精,先把量级对上是第一步。量级不对,后面调什么都是白费。比如一个环的最坏抖动已经到了周期的四成,再去优化中断合并的几微秒,意义很小;该做的是换硬件或放宽周期。
第三道判据是硬件形态。通用工控平台、运动控制卡、可编程逻辑、专用轴控硬件,不是「谁更高级」的关系,而是「谁更适合这个环」的关系。毫秒级、逻辑复杂、需要数据与配方管理的环,通用平台更合适;百微秒级、要求确定性、逻辑相对固定的环,专用硬件更合适。把两者混在一套配置里,常见的结果是钱花了,边界还是没解决。
分档不是拍脑袋,也不是越保守越好。周期放宽一档,可能省下一套专用硬件;抖动预算放宽一点,可能换来更低的成本。关键是把这个取舍写在纸面上,让工艺、电控、采购都看见,而不是留在某个人的经验里。
四、验收方法:三档测试与三个数
验收是整篇手册里最不能省的一节。不要接受「调一调就好了」的口头承诺,也不要只看空载跑分。至少做三档测试:
| 测试档 | 加载内容 | 目的 | 记录 |
|---|---|---|---|
| 空载 | 仅控制环与必要 IO | 建立基线,确认最小抖动 | 最坏抖动、超时次数 |
| 加载 | 叠加视觉、通信、数据库等后台任务 | 看抖动从哪一步开始变坏 | 最坏抖动、超时次数、加载差值 |
| 现场干扰 | 叠加变频器、伺服、无线设备等干扰源 | 看现场环境对时间分布的影响 | 最坏抖动、超时次数、加载差值 |
每档记录三个数:最坏抖动、超时次数、加载前后差值。三档都过,才算这个环真的落在平台能力之内。
测试顺序也有讲究:先空载确认基线,再逐项加载,把视觉、通信、数据库一样一样压上去,看抖动是哪一步开始变坏的;最后再把现场的干扰源加进来。这样即使结果不达标,也知道该往哪一段查,而不是笼统地说「平台不行」。
测抖动还有方法上的讲究。不要只采一次,也不要在系统刚启动时采;至少覆盖冷启动、稳定运行、满负载三个状态,每个状态连续记录一段时间,取最坏值而不是平均值。记录的位置也要固定,否则两次测试没法比较。
验收至少要覆盖一个完整的连续运行周期,不能只做十分钟抽测。风扇调速、CPU 降频、网卡中断聚合,都会在长时间运行后改变时间分布;空载时的一次漂亮示波器截图,说明不了什么。问题总是在第八个小时出现。
具体数值须以整机实测为准,不同总线、不同驱动器、不同 IO 规模都会改变结果。把这三个数写进验收单,比任何一句「支持实时」都可靠。验收报告不必很长,但必须能复现:测试条件、负载项、干扰源、记录位置写清楚,换一台机器还能按同一套方法复测。
五、安全回路与系统集成:不可省的两条线
急停、安全门、超程、联锁,这些不属于「实时控制」的性能问题,而是安全问题。
它们必须走独立的硬件回路:急停按钮直接切断驱动使能或安全继电器,联锁信号不进通用平台的软件调度。把安全功能挂在通用操作系统上,等于把最后一道防线交给一个会被中断、会被升级、会被误配置的软件层。软件层可以为了实时性做很多优化,但它永远不该成为安全回路的唯一实现。
这一点要在架构图阶段就写清楚,不要等验收时才补。安全回路独立,实时控制的边界才有意义;安全回路不独立,实时性做得再好,也只是把风险藏得更深。
工程上常见的做法是「双通道」:控制通道走通用平台,负责逻辑、配方、数据与协调;安全通道走独立的硬件链路,负责急停、门锁、超程与联锁。两条通道各司其职,边界清楚,验收时也容易分别取证。
系统集成还有两条容易被漏掉的线。第一条是总线与 IO 的刷新周期:如果总线周期是 1 ms、远程 IO 刷新是 10 ms,整环就会被最慢的那一段拖住。第二条是电源与散热:宽压输入、浪涌保护、无风扇热预算,看起来与实时性无关,但温升会改变 CPU 频率与时间分布,长时间运行后表现为「偶发超时」。这两条线要在配置阶段就核,不要留到现场。
六、复测留痕、TCO 与落地清单
实时控制的边界不是一次性的结论,而是一份可以复测的档案。建议每次验收留四样东西:
- 配置基线:控制器型号档位、总线周期、IO 刷新、驱动与固件版本、关键中断设置;
- 测试条件:环境温度、负载项、干扰源、连续运行时长;
- 结果记录:三档测试的最坏抖动、超时次数、加载前后差值;
- 偏差说明:超出预算的项、定位到的段、处置方案与复测结果。
这四样东西的价值,在扩容或换型时会体现出来。没有基线,第二次测试就无法判断「变差」是环境变了、负载变了,还是配置变了。
TCO 也要按整环算,而不是只比平台单价。至少把五类成本拉进来:平台与板卡成本、总线与 IO 成本、驱动与执行器成本、集成与调试成本、复测与停机成本。通用平台单价可能更低,但如果因为抖动不达标而反复调参、返工,集成与停机成本会把差价吃回去;专用硬件单价可能更高,但如果环的要求确实在百微秒级,它省下的是反复试错的时间。
还有一笔隐性成本值得单列:扩容。今天按刚好够用的余量配置,明天加两路相机或两个轴,边界可能就被推过去了。TCO 里留一列「一年后扩容要不要整体换」,比只看今天的报价更接近真实成本。
给一张可以直接用的落地清单:
- 环的周期与最坏抖动预算已经写进需求,不只看平均响应
- 一个控制周期已拆成采样、计算、总线、执行器四段,瓶颈段明确
- 时间预算表已列出每段的上限、实测与余量
- 毫秒级环确认由实时核加标准总线承担,百微秒级环已评估下沉专用硬件
- 最坏抖动占周期比例已实测,且在一成以内或有明确的处置方案
- 急停、安全门、超程、联锁走独立硬件回路,未挂在通用平台软件上
- 总线周期与远程 IO 刷新周期已对齐,未出现最慢段拖整环
- 空载、加载、现场干扰三档都测过,记录了最坏抖动、超时次数与加载差值
- 连续运行与温升工况已覆盖,未只做短时抽测
- 配置基线、测试条件、结果记录与偏差说明已留档
- TCO 按平台、总线 IO、驱动执行器、集成调试、复测停机五类一起算
把这张清单走完,实时控制该放在哪一档,基本就有答案了。剩下的,不是靠一句「支持实时」,而是靠那三个可复核的数:最坏抖动、超时次数、加载前后差值。