自动调压无创呼吸机软件设计及测试分析
2024-02-27雷豪
雷豪
摘 要:该文主要探究自动调压无创呼吸机软件部分的设计方法,并开展测试观察应用效果。呼吸机采用μc/OS-II实时嵌入式操作系统,呼吸机与上位机之间使用USB接口实现通信。用户佩戴呼吸机面罩后,传感器实时采集压力数据,并根据用户的呼吸动作自动调节输出压力,在呼气时降低压力以减小呼气阻力,在吸气时增加压力以辅助吸气。从测试情况来看,该文设计的自动调压无创呼吸机基本上达到设计要求。
关键词:无创呼吸机;嵌入式操作系統;人机同步;传感器;FSM模型
中图分类号:TH77 文献标志码:A 文章编号:2095-2945(2024)06-0045-04
Abstract: This paper mainly explores the design method of the software part of the automatic pressure regulating non-invasive ventilator, and carries out the test to observe the application effect. The ventilator adopts μc/OS-II real-time embedded operating system, and the USB interface is used to realize the communication between the ventilator and the host computer. After the user wears a ventilator mask, the sensor collects the pressure data in real time, automatically adjusts the output pressure according to the user's breathing action, reduces the pressure when exhaling to reduce expiratory resistance, and increases the pressure when inhaling to assist inhalation. Seen from the angle of the test, the automatic pressure regulating non-invasive ventilator designed in this paper basically meets the design requirements.
Keywords: non-invasive ventilator; embedded operating system; man-machine synchronization; sensor; FSM model
自动调压无创呼吸机在改善呼吸功能、增加肺通气量、提升睡眠质量等方面发挥了突出作用,随着呼吸机技术的成熟和价格的降低,逐渐在呼吸疾病患者群体中得到了普及使用。传统的呼吸机需要用户主动适应呼吸机的输出压力,经常会出现呼吸机的压力调整与用户的呼吸动作不同步的情况。当用户呼气时,呼吸机的输出压力较大,由于呼气阻力较大,使用体验不佳。因此,本文以人机同步作为出发点,对呼吸机软件进行了改良设计,利用精密传感器和高性能CPU准确识别用户的呼吸动作,并灵活调节输出压力,达到人机同步效果,优化了呼吸机的使用效果。
1 自动调压无创呼吸机的软件设计
1.1 嵌入式操作系统的选择
本文设计的呼吸机软件采用嵌入式操作系统,具有实时性强、结构紧凑、稳定性好等特点,常用的嵌入式操作系统有Linux、WinCE、μc/OS-II等。其中,μc/OS-II作为一种基于优先级的抢占式多任务实时操作系统,支持汇编语言和C语言,允许用户最多建立60个任务,并根据任务的优先级自动调整任务的执行顺序,在航天、医疗等领域的工业控制中有着广泛应用,本文将μc/OS-II作为呼吸机操作系统,其结构如图1所示。
μc/OS-II实时操作系统中的CPU采用LPC2387微处理器,可自定义用户管理、普通中断、快速中断等7种工作模式,利用中断向量实现各种模式的切换。寄存器的作用是在指令执行发生异常时,强制指向某一特定地址,并运行服务程序完成指令,从而提高了呼吸机运行的可靠性。
1.2 呼吸机控制软件设计
1.2.1 呼吸机控制流程
本文设计的自动调压无创呼吸机控制系统由人机交互界面显示、风机有限状态机模型控制、呼吸压力协调控制等几部分构成,控制流程如图2所示。
结合图2,呼吸机的控制思路为:①呼吸机上电后,用户在设置界面设定各项参数,如呼吸压力、控制模式等。传感器实时采集呼吸通道的压力值,当实际压力高于设定值(默认为50 Pa)时,呼吸机启动运行。②呼吸机的风机有升压、稳定、漏气报警等多种运行状态,CPU根据用户设定指令控制风机在不同状态之间切换。③设定好风机状态后,CPU会根据实际压力判断呼吸动作,进而调整风机转速。例如,CPU判断用户正在呼气,则降低风机转速,减小用户呼气的阻力;反之,CPU判断用户正在吸气,则增加风机转速,辅助用户完成吸气[1]。
1.2.2 控制任务设计
本文结合自动调压无创呼吸机的运行特点和功能要求,运用μc/OS-II操作系统设计了4项控制任务,分别如下。
1)TaskWander(空闲任务)。呼吸机软件系统运行后自动创建空闲任务,之后根据用户操作需要创建其他3个任务。
2)TaskCtrl(主控制任务)。包括逻辑控制、压力实时监测、压力数据存储。
3)TaskDisp(人机交互任务)。包括按键扫描、显示器驱动、实时压力曲线。
4)TaskCocm(通信任务)。支持呼吸机与PC之间完成双向通信。
调用μc/OS-II操作系统自带的任务创建函数OSTaskCreate()完成上述控制任务的创建,本系统最多支持创建60个任务,并且对任务进行优先级排序,呼吸机按照优先级从高到低的顺序执行任务。
1.3 控制任务的实现
1.3.1 风机驱动任务的实现
有限狀态机(FSM)系统存在多种运行状态,如空闲状态、升压运行状态、漏气补偿状态。但是在任意时刻只会处于其中的一种状态,即多个状态不重叠。在设计呼吸机控制系统时使用FSM模型,保证了控制逻辑清晰[2]。以自动调压无创呼吸机中的风机为例,创建风机运行状态FSM模型,如图3所示。
这里以升压运行状态为例,为了实现对风机的控制,创建了全局变量表(stage),传感器采集风机运行的状态参数后保存到stage表中。呼吸机上电启动后,风机完成初始化并进入空闲状态。此时前端传感器开始按照特定频率采集压力值,并对比实际压力与设定压力。当“实际压力>设定压力(0.5 mm Hg)”时,判断为触发成功。然后系统运行switch程序,把用户设定的压力值发送至CPU,CPU生成指令控制执行器(升压设备)开始升压,从而实现对风机运行状态的控制。
1.3.2 自动调压的实现
自动调压无创呼吸机可以在用户使用设备的过程中,自动判断用户的呼吸动作。在此基础上通过自动调节气流压力,达到辅助用户吸气、减少呼气阻力的效果,优化呼吸机的使用体验。本系统的自动调压实现方式如下。
在用户呼气时,压力随之上升,压力变化率为正(T1);在用户吸气时,压力随之下降,压力变化率为负(T2)。呼吸机启动后,实时采集压力值,并计算动态压力变化率T。如果存在“0
实时采集和反馈压力数据,是呼吸机实现自动调压功能的前提。本文设定的压力信号采集频率为10 Hz,2次信号的采集时间间隔为100 ms。提供Press[10]和Time[10] 2个数组,前者用于存储压力采集数据,后者用于存储压力采集时间[3]。2个数组中的数据一一对应,例如Press[1]压力数据对应Time[1]采集时间。2个数组均采用“向前覆盖法”,以压力采集时间为例,将10个数据放入数组Tmie中,继续采集第11个数据。此时,将Time[1]数据放入到Time[0]中,将Time[2]数据放入到Time[1]中。以此类推,Time[10]数据放入到Time[9]后,Time[10]空闲,然后将第11个数据放入到Time[10]中。通过这种处理方法,一方面可以保证压力数据和采集时间能够实时刷新,另一方面又能显著提高系统CPU的运算效率,提高压力调节的灵活性。
1.3.3 人机交互的实现
呼吸机的人机交互也是通过FSM模型实现,人机交互界面包含3部分,即初始显示状态、配置显示状态、图表显示状态,用户可通过键盘进行操作。人机交互FSM模型的创建流程如图4所示。
本文在设计呼吸机的人机交互系统时,分别创建了显示状态变量表(page)和按键存储变量表(key)。前者可存储呼吸机的显示状态信息,后者则存储呼吸机的按键操作信息,并通过对变量page和key的赋值完成相关动作。这里以图表显示状态为例,实现方法如下:呼吸机启动后,完成各项参数的初始化,如变量page初始化、键盘操作初始化等,并进入初始显示状态。进行变量page赋值,设置为Disp_Chart。在用户使用呼吸机时,检测到压力变化,呼吸机的人机交互界面由初始显示状态切换为图表显示状态,以图表方式展示压力变化曲线、呼吸机服务时间等参数[4]。
1.3.4 上位机与呼吸机通信的实现
上位机(PC)与呼吸机之间利用USB数据线实现通信,PC上安装的软件可以直接读写呼吸机上的SD卡。为了增强双端通信的实时性,本文使用统一的数据帧格式,呼吸机反馈的所有数据均按照该格式存储,从而减少了PC软件处理数据所花费的时间,提高了系统的响应速度。数据帧格式由5部分组成,从头至尾分别为
Init_Cmd,起始标志,为固定的数值;
Ctrl_Cmd,命令字,对应相应的操作;
Length,数据的字节长度;
Data,通信数据;
CRC,字节的校验码。
通信协议是基于命令字实现相应的操作,例如Ctrl_Cmd=0x01,表示通信测试操作;Ctrl_Cmd=0x02,表示SD卡的擦除操作。发送数据为0x12/0x0000,返回命令为0x12/0x0001/ErrCode。该命令中,ErrCode表示错误码,不同错误码及其对应的错误类型见表1。
2 自动调压无创呼吸机的测试分析
2.1 运行测试
测试者戴上呼吸机的面罩,连接电源后按下呼吸机的“star/stop”按键,呼吸机正常启动后操作键盘进入到配置界面。配置呼吸机的各项参数(包括升压时间、吸气压力值等)后,通过呼气触发呼吸机开始工作[5]。本次测试中,设定压力值为800 Pa,升压时间为60 s。呼吸机开始运行后,风机转速开始升高,相应的输出压力增加。经过60 s后,输出压力达到800 Pa左右。用户吸气时,呼吸机输送800 Pa左右的压力,辅助吸气;用户呼气时,呼吸机将压力降低至400 Pa左右,减轻呼气阻力。用户正常呼吸,感受呼吸机的压力变化能否与呼吸动作同步,并观察显示器上的实时压力数据。将压力数据存储到SD卡中,并生成压力历史数据曲线,如图5所示。
2.2 测试结果分析
患者呼气时,呼出的气流使管道压力增加,略高于设定的呼气压力值,约为400 Pa;患者吸气时,患者的吸气动作也会影响管道中的压力值,略低于设定的吸气压力值,约为800 Pa。当呼吸机检测到患者的吸气或呼气持续时间超过2 s后,自动切换输出压力,发挥保护作用。从测试效果来看,本文设计的自动调压无创呼吸机软件系统,可以在设备使用期间根据用户的呼吸动作自动调节输出压力,在满足辅助呼吸功能的前提下,提升了呼吸舒适度,优化了用户使用体验,取得了良好应用效果。
3 结束语
自动调压无创呼吸机利用安装在呼吸面罩或管道内的压力传感器,实时采集压力数据,计算出压力变化率,并根据用户的呼吸动作调整输出压力,从而达到辅助吸气、减小呼气阻力的效果。基于μc/OS-II嵌入式操作系统的呼吸机软件系统,除了开发难度低、可扩展性强等特点外,还具有系统响应速度快、自动调节效果好等优势。从测试效果来看,本文设计的呼吸机软件系统可以根据用户呼吸动作实现自动调压,并且在患者呼气、吸气时间较长时自动切换呼吸动作,发挥了保护功能,有助于自动调压无创呼吸机的推广应用。
参考文献:
[1] 沈玉鹏,房玮,焦亚平.基于防压疮棉罩设计的无创呼吸机自动调压技术研究[J].自动化与仪器仪表,2021(6):198-200.
[2] 史伟,曾洁,程轶玲,等.新型无创呼吸机口鼻面罩固定装置的设计与临床应用[J].循证护理,2023(8):1516-1518.
[3] 罗丹.基于防压疮面罩设计的无创呼吸机参数自动校准方法研究[J].自动化与仪器仪表,2021(6):208-209.
[4] 张晓艳,李红梅.一种可调节防压迫呼吸机面罩的设计和应用方法[J].医药卫生,2023(1):38-40.
[5] 陈金虎,白浩笛,竹永宽,等.基于物联网下新型呼吸机的设计研究[J].电脑知识与技术,2023,19(8):89-91.