1. 呼吸机系统概述:呼吸机的基本工作原理、呼吸机的主要通信需求、为什么需要CAN和以太网
1.1 呼吸机到底在干什么?
说实话,很多人一听到呼吸机,就觉得是个很神秘的东西。其实没那么复杂。你想想看,呼吸机本质上就是个「智能打气筒」。
病人自己呼吸不了,或者呼吸不够,机器就帮他把气送进肺里。等气送够了,再让病人自己呼出来。就这么个循环。
我在项目中遇到过不少刚入行的工程师,一上来就盯着复杂的算法看,结果连最基本的通气模式都没搞明白。我个人习惯是,先搞清楚物理过程,再谈代码。
呼吸机的基本工作流程,说白了就三步:
- 吸气阶段:涡轮或者压缩机产生正压,把气体通过管路送进病人肺部
- 呼气阶段:呼气阀打开,病人靠肺的弹性回缩力把气排出来
- 切换判断:机器根据设定的参数(时间、压力、流量等)判断什么时候该切换
嗯,这里要注意,不同品牌、不同型号的呼吸机,实现方式差别很大。但核心逻辑万变不离其宗。
1.2 呼吸机内部到底要传什么数据?
搞清楚了工作原理,咱们再来看看通信需求。一台呼吸机内部,可不是一个单片机就能搞定的。
我记得有一次拆解一台进口呼吸机,里面光传感器就有十几个:压力传感器、流量传感器、氧浓度传感器、温度传感器……每个传感器都要把数据传给主控板。
呼吸机的主要通信需求,我归纳为以下几类:
| 通信类型 | 典型数据 | 实时性要求 |
|---|---|---|
| 传感器数据采集 | 气道压力、流量、氧浓度 | 1ms以内 |
| 执行器控制 | 涡轮转速、呼气阀开度 | 5ms以内 |
| 人机交互 | 触摸屏参数、报警信息 | 50-100ms |
| 外部通信 | 护士站联网、电子病历上传 | 秒级 |
| 内部状态同步 | 主控板与呼吸阀板之间的心跳 | 10ms以内 |
你想想看,如果压力传感器采集的数据延迟了10ms,那在高速通气模式下,波形可能就完全走样了。病人吸气的时机一旦错过,后果很严重。
1.3 为什么非得用CAN和以太网?
好,问题来了。既然有这么多数据要传,为什么偏偏选CAN和以太网?用串口不行吗?用I2C不行吗?
我一个个说。
1.3.1 为什么需要CAN?
CAN总线,说白了就是为「实时控制」而生的。它有几个特点,特别适合呼吸机:
- 实时性高:CAN的仲裁机制是硬件级别的,优先级高的报文永远不会被阻塞。我在项目中实测过,115kbps的CAN总线,最坏情况下的延迟也就几十微秒。
- 抗干扰强:呼吸机内部有涡轮电机、电磁阀,电磁环境很恶劣。CAN是差分信号,共模抑制能力强,不容易被干扰。
- 多主通信:传感器板、控制板、显示板,谁都可以主动发数据,不需要主机轮询。这大大降低了软件复杂度。
- 错误检测:CAN有CRC校验、帧格式检查、应答确认等机制。一旦发现错误,硬件自动重发。这对医疗设备来说,太重要了。
我个人习惯:在呼吸机内部,所有需要「毫秒级响应」的数据,全部走CAN总线。比如压力控制环路、流量控制环路、安全阀的紧急触发信号。这些数据一旦丢了或者晚了,病人可能就危险了。
1.3.2 为什么需要以太网?
那以太网呢?以太网的优势在于「带宽大、距离远、生态好」。
你想想看,呼吸机不是孤立工作的。它要连到护士站,要连到医院的信息系统,要上传波形数据、报警记录、治疗参数。这些数据量有多大?
- 一个呼吸波形,每秒采样100次,每次包含压力、流量、容量三个值,一天下来就是几十兆字节
- 报警日志、事件记录、配置参数,这些都需要长期存储和追溯
- 远程会诊、远程调试,需要通过网络传输实时数据
CAN总线的带宽最多也就1Mbps,传这些数据,根本不够用。以太网就不一样了,100Mbps甚至千兆,绰绰有余。
而且,以太网的协议栈非常成熟。TCP/IP、HTTP、MQTT、HL7(医疗行业标准协议),拿来就能用。不需要自己从头造轮子。
1.4 一个典型的呼吸机通信架构
说了这么多理论,咱们来看看实际项目中是怎么搭的。我画一个典型的架构图给你看:
┌─────────────────────────────────────────────────────┐
│ 以太网(100Mbps) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 主控板 │ │ 显示板 │ │ 通信板 │ │
│ │ (ARM) │ │ (Linux) │ │ (网关) │ │
│ └────┬─────┘ └──────────┘ └────┬─────┘ │
│ │ │ │
│ └────────── CAN (250kbps) ───────┘ │
│ │ │ │
│ ┌────┴─────┐ ┌──────┴──────┐ │
│ │ 传感器板 │ │ 执行器板 │ │
│ │ (STM32) │ │ (STM32) │ │
│ └──────────┘ └─────────────┘ │
│ │ │ │
│ ┌────┴─────┐ ┌──────┴──────┐ │
│ │ 压力传感器│ │ 涡轮电机 │ │
│ │ 流量传感器│ │ 呼气阀 │ │
│ │ 氧传感器 │ │ 安全阀 │ │
│ └──────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────┘
这个架构,我在多个项目中验证过,稳定可靠。主控板通过CAN总线,以1ms的周期采集传感器数据,同时以5ms的周期控制执行器。显示板和通信板则通过以太网,负责图形界面和外部联网。
嗯,这里要注意,CAN总线的节点数不能太多。我一般控制在8个以内,再多的话,总线负载率会上升,实时性就保不住了。
1.5 总结一下
呼吸机这个系统,说复杂也复杂,说简单也简单。核心就是:
- 工作原理:吸气、呼气、切换,循环往复
- 通信需求:传感器数据、执行器控制、人机交互、外部联网,各有各的实时性要求
- 为什么选CAN和以太网:CAN负责实时控制,以太网负责大数据交互。两者配合,才能做出一个既安全又智能的呼吸机
我记得刚入行那会儿,总觉得通信协议是件小事,随便选个串口就能搞定。后来吃过亏才明白,通信架构选错了,后面改起来,成本高得吓人。所以,从一开始就把CAN和以太网规划好,是呼吸机开发的第一步。
下一章,咱们就深入CAN协议,看看它的帧格式、仲裁机制、位时序这些底层细节。准备好了吗?