模块饱和

28天前更新

存在噪声的模块每秒可能发出数十个脉冲。链路中的每个环节都按各自的速度推进:当进入的数量多于流出的数量时,队列便会累积。本页说明这些队列所处的位置、它们的已知上限,以及应用程序所采用的保护机制。

关键数值

数值

含义

一次一个

平板电脑处理脉冲的方式,每台机器一个队列

100 / 20 秒

默认向平台同步的批量,即每秒最多 5 个条目

15 000

平板电脑上的待处理任务数:切断蓝牙

500

剩余任务数:重新连接模块

链路的各个环节

三个缓冲区依次相连。只要进入的速率不长期超过流出的速率,每个缓冲区都能吸收波动。

存在噪声的传感器向模块发送脉冲,模块将其存入内部存储,并通过蓝牙传送至平板电脑。平板电脑一次处理一个脉冲,随后将其放入同步队列,每 20 秒以 100 个为一批发送至平台。待处理任务超过 15 000 个时,平板电脑切断蓝牙。

已存储的脉冲(橙色)等待处理;蓝色条目等待发送。红色箭头表示下文所述的保护机制。标记 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 个条目。超出该阈值的部分会逐小时累加到平台的延迟中,即使平板电脑能够处理该数据流也是如此。

每秒 10 个脉冲时,同步延迟每小时增加 18 000 个条目;每秒 30 个时增加 90 000 个;每秒 50 个时增加 162 000 个。每秒仅发送 5 个脉冲。

蓝色表示随到随发的数据量;橙色表示在同步队列中累积的数据量。这些数值为数量级估算,按每个脉冲对应一个待同步条目计算。只有当数据流回落到每秒 5 个脉冲以下时,延迟才会消解;增大批量或缩短间隔可提高该上限。图中文字为法语:impulsions/s reçues = 每秒接收的脉冲数,retard ajouté par heure = 每小时新增的延迟,capacité de synchronisation = 同步能力。

保护机制:临时断开连接

当平板电脑无法跟上数据流时,其处理队列会不断变长。为避免饱和,应用程序会切断蓝牙,改由模块代为存储,以便平板电脑消解延迟。

在噪声持续的情况下,平板电脑的处理队列达到 15 000 个任务,蓝牙被切断,队列回落至 500,与此同时模块存储被逐渐填满。重新连接时,模块一次性清空其存储,队列随即重新升至 15 000:循环重新开始。

该图以持续不断的噪声为例;时间刻度仅供参考。队列的纵向刻度按实际比例绘制,因此 500 这一阈值看起来接近于零。图中文字为法语:connecté = 已连接,coupé = 已切断,File de traitement = 处理队列,Mémoire du module = 模块存储,niveau relatif = 相对水平,15 000 : coupure = 15 000:切断,500 : reconnexion = 500:重新连接,temps = 时间。

  1. 噪声填充队列的速度快于平板电脑清空队列的速度。

  2. 当待处理任务达到 15 000 个(该平板电脑所连接的全部机器合计)时,应用程序断开全部模块的连接。

  3. 模块继续计数,并将脉冲保留在其存储中。

  4. 当队列回落至 500 时,应用程序重新连接,模块一次性清空其存储。

  5. 如果噪声持续,这一突发数据会使队列重新升至 15 000,新的循环由此开始。

💡 采用两个相距较远的阈值而非单一阈值,是为了避免应用程序因少量任务的差异而反复切断和重连。

四种情形

按噪声速率及其持续时间,从最轻微到最严重排列。

情形

条件

平板电脑

平台

蓝牙

噪声被吸收

每秒少于 5 个脉冲

数据最新

数据最新

已连接

平台滞后

每秒超过 5 个脉冲,平板电脑跟得上数据流

数据最新

滞后

已连接

平板电脑饱和,噪声为一次性

脉冲数量超过平板电脑的处理能力

滞后

滞后

临时切断

平板电脑饱和,噪声持续

噪声不停止

延迟不断增加

延迟不断增加

反复切断

  • 噪声被吸收 — 无可见影响。队列随到随清。

  • 平台滞后 — 平板电脑保持实时状态。平台数据出现滞后,噪声平息后即可补上。

  • 平板电脑饱和,噪声为一次性 — 机器不再处于实时状态:需要实时状态的操作(例如更换产品)将被拒绝。必要时在 15 000 处切断,在 500 处重新连接。之后情况恢复正常。

  • 平板电脑饱和,噪声持续 — 每次重新连接都会引发新的饱和。只要噪声源未得到处理,应用程序就无法消解其延迟。

避免此类情形

根据噪声是被动承受还是可控,可采取两类措施。

从源头切断

噪声完全不会进入模块存储。

将模块断电

模块已断电:传感器和平板电脑均无法与其通信。

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

拔下传感器

传感器已拔下:传感器与模块之间的连接被切断,模块仍与平板电脑保持连接。

模块保持通电并处于连接状态,但噪声无法再到达模块:不会记录任何脉冲。

让应用程序忽略脉冲

此方案适用于可控且持续时间已知的噪声。模块仍继续传输,但平板电脑在脉冲到达时即将其丢弃:既不记录,也不处理,更不同步。

启动一项任务

任务进行中:模块仍在传输,平板电脑在脉冲到达时即将其丢弃。

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

忽略脉冲

脉冲被忽略:模块仍在传输,平板电脑在脉冲到达时即将其丢弃。

“忽略模块脉冲”选项:主界面上的一个滑动按钮。操作完成后必须重新启用监听。

⚠️ 在任何情况下,该期间的实际产量都不会被计入:必须在恢复生产之前还原标准配置。切断蓝牙或关闭应用程序均无效,模块会继续记录噪声,并在重新连接时将其回传。

用户所见内容

显示内容

出现时机

内容

操作被拒绝

处理队列不为空

“需处于实时状态 — 待处理脉冲数:N”

操作被拒绝

模块在重新连接后正在清空存储

“需处于实时状态 — 正在获取模块数据”

警告窗口

切断期间;重新连接时自动关闭

“已从模块接收到大量消息。应用程序已临时断开连接以处理这些消息,随后将重新连接。”

蓝牙图标呈绿橙色

切断期间;点击该图标时显示

“待处理脉冲较多,已临时与模块断开连接”

要点

  • 在模块存储容量允许的范围内,切断不会导致任何脉冲丢失:模块会保留脉冲,平板电脑在处理之前先将其写入数据库。

  • 时间戳来自模块:perflog 在时间上始终准确。出现滞后的只是显示界面和平台。

  • 15 000 这一阈值由整台平板电脑共用,切断作用于其全部模块:一台产生噪声的机器会拖累同一平板电脑上的其他机器。

  • 解决办法在于噪声源。调整同步只能加快平台,而无法加快平板电脑。