存在噪声的模块每秒可能发出数十个脉冲。链路中的每个环节都按各自的速度推进:当进入的数量多于流出的数量时,队列便会累积。本页说明这些队列所处的位置、它们的已知上限,以及应用程序所采用的保护机制。
关键数值
数值 | 含义 |
|---|---|
一次一个 | 平板电脑处理脉冲的方式,每台机器一个队列 |
100 / 20 秒 | 默认向平台同步的批量,即每秒最多 5 个条目 |
15 000 | 平板电脑上的待处理任务数:切断蓝牙 |
500 | 剩余任务数:重新连接模块 |
链路的各个环节
三个缓冲区依次相连。只要进入的速率不长期超过流出的速率,每个缓冲区都能吸收波动。

已存储的脉冲(橙色)等待处理;蓝色条目等待发送。红色箭头表示下文所述的保护机制。标记 1 和 2 指出两个已知的瓶颈。图中文字为法语:capteur = 传感器,signal bruité = 噪声信号,mémoire interne = 内部存储,vide sa mémoire = 清空其存储,file de traitement = 处理队列,une à la fois = 一次一个,file de synchronisation = 同步队列,plateforme / serveur = 平台/服务器,au-delà de 15 000 en attente : la tablette coupe le Bluetooth = 待处理超过 15 000 个时,平板电脑切断蓝牙。
模块存储
模块记录每个脉冲及其时间戳。处于连接状态时,模块将脉冲传送至平板电脑。处于断开状态时,模块保留脉冲,并在重新连接后立即清空存储。它是缓冲区,而非瓶颈。
1. 平板电脑上的处理
每个脉冲先写入数据库,再用于生成 perflog,每台机器一次仅处理一个。处理速率取决于平板电脑及其负载,并非固定值。
2. 向平台同步
每 20 秒发送一批 100 个条目,即每秒最多 5 个。
当噪声超过同步能力时
在默认设置下,同步每秒最多传输 5 个条目。超出该阈值的部分会逐小时累加到平台的延迟中,即使平板电脑能够处理该数据流也是如此。

蓝色表示随到随发的数据量;橙色表示在同步队列中累积的数据量。这些数值为数量级估算,按每个脉冲对应一个待同步条目计算。只有当数据流回落到每秒 5 个脉冲以下时,延迟才会消解;增大批量或缩短间隔可提高该上限。图中文字为法语:impulsions/s reçues = 每秒接收的脉冲数,retard ajouté par heure = 每小时新增的延迟,capacité de synchronisation = 同步能力。
保护机制:临时断开连接
当平板电脑无法跟上数据流时,其处理队列会不断变长。为避免饱和,应用程序会切断蓝牙,改由模块代为存储,以便平板电脑消解延迟。

该图以持续不断的噪声为例;时间刻度仅供参考。队列的纵向刻度按实际比例绘制,因此 500 这一阈值看起来接近于零。图中文字为法语:connecté = 已连接,coupé = 已切断,File de traitement = 处理队列,Mémoire du module = 模块存储,niveau relatif = 相对水平,15 000 : coupure = 15 000:切断,500 : reconnexion = 500:重新连接,temps = 时间。
噪声填充队列的速度快于平板电脑清空队列的速度。
当待处理任务达到 15 000 个(该平板电脑所连接的全部机器合计)时,应用程序断开全部模块的连接。
模块继续计数,并将脉冲保留在其存储中。
当队列回落至 500 时,应用程序重新连接,模块一次性清空其存储。
如果噪声持续,这一突发数据会使队列重新升至 15 000,新的循环由此开始。
💡 采用两个相距较远的阈值而非单一阈值,是为了避免应用程序因少量任务的差异而反复切断和重连。
四种情形
按噪声速率及其持续时间,从最轻微到最严重排列。
情形 | 条件 | 平板电脑 | 平台 | 蓝牙 |
|---|---|---|---|---|
噪声被吸收 | 每秒少于 5 个脉冲 | 数据最新 | 数据最新 | 已连接 |
平台滞后 | 每秒超过 5 个脉冲,平板电脑跟得上数据流 | 数据最新 | 滞后 | 已连接 |
平板电脑饱和,噪声为一次性 | 脉冲数量超过平板电脑的处理能力 | 滞后 | 滞后 | 临时切断 |
平板电脑饱和,噪声持续 | 噪声不停止 | 延迟不断增加 | 延迟不断增加 | 反复切断 |
噪声被吸收 — 无可见影响。队列随到随清。
平台滞后 — 平板电脑保持实时状态。平台数据出现滞后,噪声平息后即可补上。
平板电脑饱和,噪声为一次性 — 机器不再处于实时状态:需要实时状态的操作(例如更换产品)将被拒绝。必要时在 15 000 处切断,在 500 处重新连接。之后情况恢复正常。
平板电脑饱和,噪声持续 — 每次重新连接都会引发新的饱和。只要噪声源未得到处理,应用程序就无法消解其延迟。
避免此类情形
根据噪声是被动承受还是可控,可采取两类措施。
从源头切断
噪声完全不会进入模块存储。
将模块断电

模块不再记录任何脉冲,在重新通电之前,平板电脑将其视为已断开连接。
拔下传感器

模块保持通电并处于连接状态,但噪声无法再到达模块:不会记录任何脉冲。
让应用程序忽略脉冲
此方案适用于可控且持续时间已知的噪声。模块仍继续传输,但平板电脑在脉冲到达时即将其丢弃:既不记录,也不处理,更不同步。
启动一项任务

以清洁任务为例:该时间段被定性,脉冲在任务结束前一直被忽略。启动该任务可能需要实时状态,因此必须在噪声出现之前启动,而不是在饱和期间。
忽略脉冲

“忽略模块脉冲”选项:主界面上的一个滑动按钮。操作完成后必须重新启用监听。
⚠️ 在任何情况下,该期间的实际产量都不会被计入:必须在恢复生产之前还原标准配置。切断蓝牙或关闭应用程序均无效,模块会继续记录噪声,并在重新连接时将其回传。
用户所见内容
显示内容 | 出现时机 | 内容 |
|---|---|---|
操作被拒绝 | 处理队列不为空 | “需处于实时状态 — 待处理脉冲数:N” |
操作被拒绝 | 模块在重新连接后正在清空存储 | “需处于实时状态 — 正在获取模块数据” |
警告窗口 | 切断期间;重新连接时自动关闭 | “已从模块接收到大量消息。应用程序已临时断开连接以处理这些消息,随后将重新连接。” |
蓝牙图标呈绿橙色 | 切断期间;点击该图标时显示 | “待处理脉冲较多,已临时与模块断开连接” |
要点
在模块存储容量允许的范围内,切断不会导致任何脉冲丢失:模块会保留脉冲,平板电脑在处理之前先将其写入数据库。
时间戳来自模块:perflog 在时间上始终准确。出现滞后的只是显示界面和平台。
15 000 这一阈值由整台平板电脑共用,切断作用于其全部模块:一台产生噪声的机器会拖累同一平板电脑上的其他机器。
解决办法在于噪声源。调整同步只能加快平台,而无法加快平板电脑。