3. 康复设备系统架构风格与模式

康复设备系统通常同时包含实时控制、信号采集、治疗流程管理、患者数据管理、远程运维与第三方扩展等多类职责。把这些职责全部塞进一个“大泥球”式程序,短期能跑,长期必然在安全、升级、认证和扩展上付出代价。架构风格与模式,本质上就是对这些职责的“切分方式”和“连接方式”做出可复用的选择。本节围绕四种常见风格——分层架构、微服务架构、事件驱动架构、插件化架构——说明它们各自解决什么问题、在康复设备中如何落地,以及如何按场景选型。

一、分层架构:把“安全相关”和“业务相关”隔开

分层架构是最贴近康复设备工程现实的一种风格。典型做法是自下而上分为:硬件抽象层(HAL)、实时控制层、设备服务层、业务应用层、人机交互层。层与层之间只允许上层调用下层,禁止反向依赖和跨层直连。这样做的核心价值不是“好看”,而是让安全相关代码(如电刺激电流闭环、电机力矩限制、急停响应)与易变的业务代码(如治疗处方、界面、报表)解耦。

以一台带助力训练和电刺激的上下肢康复机器人为例:HAL 封装编码器、力矩传感器、电流采样 ADC、PWM 输出;实时控制层以 1 kHz 周期执行电流环与速度环,并做力矩上限钳位;设备服务层把“设置助力等级 3”“启动电刺激通道 A”翻译成控制层可执行的指令;业务应用层管理治疗会话、处方参数和患者档案;交互层负责触摸屏与语音提示。若把急停逻辑写在业务层,一旦界面卡顿,安全响应就会被拖累,这正是分层要避免的。

分层的代价是:跨层新增功能需要逐层透传,容易产生“层层转发”的样板代码;对高频数据流(如 1 kHz 力矩采样)不宜层层封装,通常让实时层直接对接采集驱动,仅把降采样后的状态上报给上层。

二、微服务架构:适合“多设备、多院区、多团队”的平台侧

微服务架构把系统拆成独立部署、独立扩缩的服务,通过 HTTP/REST 或 gRPC 通信。它并不适合直接放进设备实时控制回路——网络抖动和进程间通信延迟会破坏确定性。但在康复设备的平台侧,微服务非常合适:患者管理服务、治疗记录服务、设备台账服务、远程升级服务、报表分析服务各自独立,某个服务升级不影响正在治疗的其他设备。

例如,某康复中心有 40 台设备分布在 3 个院区。若采用单体后端,一次报表模块升级需要停机窗口;改为微服务后,报表服务可灰度发布,设备侧只依赖稳定的“治疗记录写入”接口。选型时要重点评估:团队是否有独立部署与可观测性能力(日志、指标、链路追踪),以及是否真的存在独立扩缩需求。若只有 2~3 台设备、1 个团队,微服务带来的运维复杂度往往超过收益。

三、事件驱动架构:让状态变化“广播”而不是“轮询”

事件驱动架构(EDA)中,组件不直接调用彼此,而是发布/订阅事件。康复设备里大量场景天然是事件:治疗开始、治疗暂停、达到目标角度、电流超限、传感器断线、急停触发、治疗结束。采用事件总线后,报警服务、记录服务、界面提示、远程通知可以各自订阅,互不阻塞。

一个典型链路是:实时控制层检测到“力矩持续 200 ms 超过安全阈值”,发布 TorqueLimitExceeded 事件;安全服务订阅后立即执行降功率并置位故障;记录服务写入带时间戳的事件日志;交互层弹出提示并语音播报。这里的关键工程约束是:安全相关事件不能只依赖“最终一致”,必须有本地快速路径兜底,事件总线用于通知与记录,而不是替代硬实时保护。

四、插件化架构:把“疗法扩展”和“第三方算法”变成可插拔模块

插件化架构定义稳定的宿主接口(如 ITrainingMode、IStimulationPattern),具体疗法或算法以插件形式加载。宿主负责生命周期、资源分配和安全边界,插件只实现约定接口。这样,新增一种“镜像疗法训练”或“基于表面肌电的触发式电刺激”时,不必改动核心控制代码,只需按接口实现并注册。

插件化的风险在于接口一旦发布就难以更改,且插件质量参差。工程上通常要求:插件运行在受限沙箱或独立进程;对插件可调用的电流、力矩、时长参数设置硬上限;插件必须通过回归测试集才能上机。插件化最适合“疗法种类多、迭代快、需要第三方生态”的产品线。

康复设备四类架构风格:职责切分与连接方式对比 分层架构 人机交互层 触摸屏 / 语音 / 提示 业务应用层 治疗会话 / 处方 / 档案 设备服务层 助力等级 / 通道指令 实时控制层 电流环 / 速度环 / 钳位 硬件抽象层 HAL 编码器 / 力矩 / ADC / PWM 安全相关代码下沉 急停 / 力矩上限 / 电流钳位 不依赖上层调度 适用:单机设备、强实时 安全认证、职责清晰 代价:跨层透传、样板代码 微服务架构 患者管理服务 治疗记录服务 设备台账服务 远程升级服务 报表分析服务 API 网关 / gRPC 独立部署 · 灰度发布 不进入实时控制回路 网络抖动破坏确定性 适用:多院区平台侧 多团队独立迭代 代价:运维与可观测性成本 事件驱动架构 实时控制层 检测力矩超限 事件总线 发布 / 订阅 安全服务 降功率 记录服务 写日志 交互层 弹窗语音 远程通知 推送告警 安全事件需本地快速路径 总线用于通知与记录 适用:报警 / 状态广播 多订阅者解耦 代价:一致性需额外设计 插件化架构 宿主核心 生命周期 / 资源 / 安全边界 ITrainingMode 接口 IStimulationPattern 接口 镜像疗法 插件 A 肌电触发 插件 B 第三方算法插件 沙箱 / 独立进程 参数硬上限 + 回归测试 电流 / 力矩 / 时长受限 适用:疗法多、迭代快 第三方生态扩展 代价:接口冻结、质量管控

五、选型:先看“实时与安全边界”,再看“变化频率”

四种风格并非互斥。康复设备的常见组合是:设备内部用分层架构保证实时与安全;平台侧用微服务支撑多院区;设备与平台之间、设备内部模块之间用事件驱动做状态广播;疗法与算法用插件化扩展。选型时可按以下顺序判断:

  1. 是否存在硬实时或安全相关回路?有,则实时控制必须落在分层架构的底层,微服务与事件总线不得进入该回路。
  2. 变化频率最高的是哪一层?疗法种类变化快,优先插件化;平台业务变化快且团队独立,优先微服务。
  3. 是否存在多个消费者关心同一状态变化?有,则用事件驱动解耦,但安全动作保留本地快速路径。
  4. 团队规模与运维能力是否匹配?小团队、少设备时,分层 + 插件化通常比微服务更务实。
一个可操作的判断口径:如果某模块的故障会直接导致患者伤害,它就不应跨网络、跨进程边界去依赖另一个服务的可用性;如果某模块的变更频率远高于其他模块,且变更不影响安全,就应优先考虑插件化或微服务隔离。

六、选型对照示例

场景 首选风格 关键理由 需规避
单机上下肢康复机器人,含电刺激 分层 + 插件化 实时控制与安全需确定性;疗法需快速扩展 把急停逻辑放在业务层或网络侧
多院区康复设备管理平台 微服务 + 事件驱动 服务独立部署、灰度发布;状态变化多订阅者 让平台服务参与设备实时控制
肌电触发式电刺激研究样机 分层 + 事件驱动 信号链实时处理;触发事件广播给记录与提示 用事件总线替代硬实时触发路径
第三方算法接入的评估系统 插件化 + 微服务 算法沙箱隔离;评估服务独立扩缩 插件直接访问底层执行器

选型的最终判据不是“哪种架构更先进”,而是“哪种切分方式能让安全边界清晰、让变化被隔离在最小范围内”。在康复设备中,安全与实时永远是第一约束,扩展性与迭代速度是在此约束下的第二目标。把这两条顺序摆正,四种风格就能各归其位、组合使用。