基于Zigbee的病房护理机远程监控系统的设计与实现

2019年11月7日13:15:19 评论

当今社会中存在着一种因失去生活自理能力而长期卧床的弱势群体,他们因高龄、伤、病、残等原因需要被人照顾。然而由于该弱势群体数量大,护理人员紧缺,护理费用高等问题导致目前的社会护理矛盾日益凸显。目前市场上的护理机在“智能护理”方面已比较完善,已经具有大小便自动识别与脏物回收、温水清洗与自动烘干等功能。但在使用过程中仍然需要专门的“陪护人员”,这将占用家庭和医院大量的人力和财力,同时也限制了护理机在医院的推广使用,因此社会迫切需要一种在现有护理功能的基础上能够实现“无人护理”功能的新型智能护理机。本文以PIC18F87K22单片机为护理机控制器,利用ZigBee自组网络技术,采用C++Build6编程,设计并实现了一种通用性高、管理功能强的医院病房护理机远程监控系统,实现了护理机的“无人护理”功能,解决了我国目前陪护人员的紧缺和高昂护理费用的问题,具有很大的经济效益和社会效益。

1 护理机的Zigbee无线组网设计

ZigBee是近几年新兴的一种无线传输技术,它具有低功耗、低成本、网络容纳节点数多等特点,近年来在工业、医疗、家居自动化、遥测遥控等领域得到了广泛的应用。本系统选用深圳市华奥通通信技术有限公司研发生产的HAC-Lbee ZigBee无线数传模块作为ZigBee组网的核心器件,其主要特点有:1)提供TTL电平/UART接口,符合一般器件直接使用要求;2)工作在2.4GHz的免执照频段,无线传输速率可达250kbps;3)具有16个通信信道可供选择;4)具有自动组网功能。其主要功能引脚如表1所示。

基于Zigbee的病房护理机远程监控系统的设计与实现

1.1 ZigBee模块与PIC单片机接口设计

ZigBee模块与PIC单片机的通信采用TTL电平下的串行通信方式(图1),即ZigBee模块的TXD、RXD分别与PIC18F87K22的RX2、TX2对应相连。ZigBee模块在系统中的工作模式为透明模式+AT命令模式,当按透明模式工作时,所有从ZigBee串口RXD管脚收到的数据将通过RF射频发送出去,而所有从空中接收的数据将直接发送到ZigBee串口的TXD管脚。当ZigBee模块按AT命令模式工作时,可通过AT命令读取和设置ZigBee模块的工作模式、串口波特率、64位目的地址以及PAN ID值等相关参数。

基于Zigbee的病房护理机远程监控系统的设计与实现
ZigBee模块与PIC单片机接口

1.2 护理机网络通信协议

护理机主控板主控芯片采用的是PIC18F87K22,单片机编程采用MPLAB IDE V8.63完成。作为数据检测终端的下位机(各病房的护理机)正常工作时主动向网络协调器发送信息,各ZigBee通讯模式采用“透明模式”;上位机向下位机发送信息时,ZigBee通讯模式采用“AT命令模式”。数据发送方式采用“MSB方式”,即先发送高字节,再发送低字节。网络通信协议的帧格式如表2、表3所示,其中机器身份码选用ZigBee模块出厂时的ID号,这样不会造成地址冲突。

基于Zigbee的病房护理机远程监控系统的设计与实现

1.3 ZigBee网络的建立过程

在一个ZigBee网络中的所有ZigBee模块必须具有相同的PAN ID和信道,而且网络中有且只能存在一个协调器(Coordinator),协调器用于网络的搭建。当协调器上电数秒后网络才开始启动,协调器将是网络的第一个节点,此后,各路由器(Router)可以与协调器进行连接并加入到网络中来,且加入到网络中的路由器将允许其它路由器通过连接自己而加入到网络中,整个网络中的任意两个节点都可以进行点对点通讯,并且网络中的任何一个节点都可以向网络中的所有节点进行广播;一个模块能否加入网络在于其通讯距离内是否己存在加入网络中的节点。考虑到星形网的控制和同步相对比较简单,因此系统设计时选用了星型网络方式组网(图2)。该网以一个功能强大的FFD协调器作为网络中心,负责协调全网工作,其它的数据采集节点(护理机)分布在其覆盖范围内。具体实现组网时,首先通过厂家提供的HAC-Studio上位机软件,利用AT命令设置所有入网的ZigBee设备,使它们具有相同的信道和PAN ID值,然后将协调器设备与上位监控PC机相连,并使两者设置有相同的通信口、波特率、校验位等通信参数,最后通过基于API的Windows多线程串口编程,实现ZigBee网络协调器与上位PC机监控管理程序的通信。上电后整个组网过程是自动进行的,无需人工干预。

基于Zigbee的病房护理机远程监控系统的设计与实现

本文设计的基于ZigBee的护理机智能远程监控系统中,整个网络的通信工作流程规定如下:

  1. 下位机待机时,每隔5s,发送身份号(ID)和状态数据到上位机。
  2. 下位机工作时,每隔500ms通过ZigBee模块发送身份号和当前工作数据到上位机。
  3. 上位机在添加一个新的下位机ID(入网身份证号)时,主动发送命令字给下位机,然后需等待下位机的应答,若10s内下位机无对此命令的应答,应重复给下位机发送此命令。超过15s上位机未接收到下位机的应答信息,将提示与该下位机连接不成功(即认为下位机不在网络内)。

1.4 协调器与上位机软件的通信

ZigBee网络协调器与上位机监控软件的通信是通过深圳市华奥通通信技术有限公司的HAC-DEV开发测试板连接完成的。HAC-DEV开发测试板是HAC-LBee ZigBee的测试开发装置,它能够直接和HAC-LBee系列的ZigBee模块进行数据传输,ZigBee网络协调器就是安装在HAC-DEV开发测试板上的(图3),因此PC机串口的波特率、校验位等需要与ZigBee网络协调器的一致,这样才能保证硬件连接的成功。在协调器与上位监控PC机连接成功后,要实现真正的通信,必须通过上位机软件对PC机串口编程来完成。

2 上位机监控软件设计

2.1 基于API的Windows多线程串口通信

多线程是指同一个程序中可以同时执行多个任务,通过多线程可以将整个任务分成几个线程,同时执行,从而提高系统的效率。在多线程环境下,许多线程需要访问同一资源,而且事件发生往往有先后顺序,因此,线程间需要通信控制。本系统数据库的存取以及公共变量的访问,都涉及到线程间的通信,必须使用同步化机制,防止线程访问冲突。在实际实现过程中,系统利用了临界区,它是保证在同一时间只有一个线程可以访问某一资源的有效方法。在使用临界区时,需要给各线程提供一个共享的临界区对象。临界区具体使用步骤如下:1)声明对象;2)初始化对象;3)进入临界区;4)离开临界区。同样在本系统中,为了保证线程访问安全,设置了多个临界区对象,包括:串口通信临界区m_csCommunicationSync、数据库ADO组件访问临界区critical for ado、护理机结构链表临界区对象critical for list等。为保证串口收发数据的高效性,在充分分析多线程技术和API异步操作串口方式的特点之后,本系统将串口的数据收发采用单独的线程处理。

系统串口通信采用事件通知方式,该方式是Windows下效率较高的一种方式。主线程在打开串口后首先设置要监视的串口通信事件,然后将监视线程打开,用来监视主线程设置的这些串口通信事件是否发生,当其中的某个事件发生后,监视线程要能根据不同的事件类型进行处理。

2.2 护理机监控功能的实现

按照护理机的无线远程监控要求,在上位监控PC机中需要完成以下功能:

  1. 重要监测参数的显示。在监控界面的显示区能实时显示护理机的重要监测信息(护理机所在科室及床位号、检测数据、工作状态、报警状态等)。
  2. 系统配置。管理员(如护士长)能“动态”地完成系统通信端口的配置和使用单位名称(如医院名称)配置。
  3. 用户管理配置。管理员能“动态”地增添用户,并设置用户的权限和初始密码,管理员能注销除了“当前登录管理员”以外的所有用户。所有用户在登录后可以修改自己的登录密码。
  4. 网络设备配置。管理员能“动态”地向无线网络中“注册”或“注销”某一护理机(包括该护理机的ID号、所属科室名称、所处病房号和床位号)。
  5. 具有数据报表查询和打印功能。系统能对监控过程中重要事件进行记录,并能实现对这些信息的条件查询和打印功能。这些重要事件包括用户登录或退出时的用户名及时间;护理机状态改变及时间。任何当前用户均能点击监控主界面的“报表查询”菜单,能分别按“时间”、“用户名”、“床位号”查询以往所有数据库中记录的值班期间的所有监测信息。此功能的实现主要是通过数据库结合报表的设计来实现的。

通过对上位机监控软件的功能分析,首先确定其由“主线程”、“通信处理线程”、“语音处理线程”等部分组成,然后进行各部分功能细化,最后,按照模块化功能用C++Builder编程实现。为提高数据处理效率,在通信处理软件设计部分,开辟了单独的“数据接收线程”和“数据处理线程”,处理线程将接收线程接收的下位机所有数据进行校验处理,并将下位机工作数据存入数据库,最后根据与上次工作数据比较,确定是否更新“主线程目录树”。主线程根据用户需求,实时地从数据库调取数据显示,同时主线程还要能完成护理机“入网注册”、“注销”、“操作员的配置”以及对下位机数据的“按条件报表查询”等功能。此外,考虑到现在的PC机通常采用USB通信方式,因此针对ZigBee网络的协调器与上位机的连结采用了“USB转串口”方式,本系统还设计了USB串口热插拔功能,当更换不同的USB连接口时,上位机通过C++Builder编程能自动获取串口COM的串口号,使上位机监控软件的应用非常通用化。图4为用C++Builder编写的上位机监控主界面,鉴于篇幅因素,本文以具有代表性的“护理机监测参数显示”和“护理机动态注册注销功能”为例,介绍其实现过程。

基于Zigbee的病房护理机远程监控系统的设计与实现

2.2.1 护理机监测参数的显示

系统要求当点击“按病床位浏览”显示的目录树时,只有点击注册护理机对应的床位时,才能显示该护理机的重要信息,并且要显示护理机所在科室及床位号;当点击“按病房号浏览”目录页时,只有点击注册护理机对应的病房号时才会显示在此病房下所有护理机的信息。除了护理机重要工作参数需要显示外,护理机报警状态、离线状态也需要突出显示。其中,报警信息采用了红色字体闪烁方式显示;离线状态采用了灰色字体显示。

该功能的实现用到了TreeView目录树的单击事件,此外,系统有专门负责根据节点信息,调取数据库中对应节点护理机信息的定时器,通过定时器不断获取节点最新数据进行显示;通过单击事件处理函数,判断是否是单击的对应节点,如果点击的是按病房浏览方式中的病房节点,则先取出该病房下第一个子节点信息,并将第一个GroupBox设置为可视,再取后面的子节点,操作类似,直到第四个子节点。当点击的是“按床位浏览”方式下的床位节点时,先获取此节点数据信息,然后将第一个GroupBox设为可视,最后根据节点信息,定时器会查询数据库中对应护理机的工作参数进行数据显示。其操作流程如图5所示,实时监测参数显示界面如图4所示。

基于Zigbee的病房护理机远程监控系统的设计与实现

2.2.2 护理机动态“注册”“注销”功能

根据系统要求,系统管理员能够动态地“注册”要求入网监控的护理机或“注销”不需要监控的护理机。在注册成功后,如果注册护理机确实存在,并且成功加入网络,那么监控界面应能接收和发送对应护理机的信息,并能查看其工作状态信息;而在注销护理机后,即使下位机有信息发送过来,监控软件也不予以处理,将此信息丢弃。护理机入网络管理实现界面如图6所示:

基于Zigbee的病房护理机远程监控系统的设计与实现

具体实现是:“注册”时,根据护理机注册信息,将其写入数据库相关护理机信息表中;“注销”时,将要注销的护理机信息从信息表中删除。在接收数据线程中,接收:每帧数据时,检验帧中关于护理机ID的信息,判断其是否与表中的对应,如果对应就实时更新护理机工作数据表中的护理机数据记录,否则就直接丢弃,不作处理。在注册、注销按钮动作中,将目录树进行重绘,这样就实现了注册注销护理机的实时性显示。注册操作流程如图7所示,实现程序略。

基于Zigbee的病房护理机远程监控系统的设计与实现

3 系统测试

为测试基于ZigBee的病房护理机远程智能监控系统的可靠性和稳定性,我们在护理机测试车间用5台护理机组网调试,系统连续运行30天无故障(中间模拟停电30次,上电后,重新启动系统)。

4 设计小结

综上所述,基于ZigBee的病房护理机远程智能监控系统在通用性和管理功能方面都是非常高的,其突出特点是实现了护理机的“无人护理”功能,在很大程度上解决了我国目前陪护人员紧缺和护理费用高昂等亟待解决的问题,具有广阔的销售渠道和市场空间,将会产生很大的经济效益和社会效益,是造福弱势群体和改善社会民生的好产品。

发表评论

您必须才能发表评论!