医院护理呼叫系统是传输临床信息的重要手段,是提高护理人员的工作效率和保证医院服务质量的有效途径,也是提高医院信息化管理水平的重要措施。本系统采用模块化设计,具备易操作性、易维护性、易扩展性等特点。系统采用三层结构,分别是后台服务器层、护士工作站层和病区呼叫系统层。病区呼叫系统由一台主机和多台分机组成,采用RS485通讯总线相连,实现各种病房呼叫信息、卫生间呼叫信息和电生理检测数据的采集,并通过主机和护士工作站连接。护士工作站由普通PC机组成,其功能是响应和处理各类呼叫信息。后台服务器和护士工作站之间采用通用以太网连接,呼叫和处理信息可以以电子文档形式存储在后台服务器中。本文主要讨论病区呼叫系统的通讯系统设计。
1 通讯系统体系结构
一个病床呼叫分机管理一间病房的呼叫信息,包括卫生间呼叫和病床呼叫等。每个呼叫点均有呼叫按钮、取消按钮和LED指示灯。呼叫分机还留有电生理信息标准接口,可以连接心电图仪、呼吸机和血压仪等生理检测设备,以监视和记录病人的生理信息。病区呼叫系统主机放置在护士工作站内,负责整个系统的控制与通信。呼叫主机一边将病房的呼叫信息传输到LED显示屏上并蜂鸣提醒,一边把呼叫信息传输到PC机。系统为护士工作站PC机提供良好的人机界面,可以向医护人员显示系统的工作状态,病员的基本医疗信息和呼叫信息以及一些基本的处理数据功能。
病区呼叫系统结构如图1所示。病区呼叫系统主机和病房呼叫系统分机以MCS-51单片机为主控制器,分机之间通过RS-485通讯总线相连。RS-485是美国电气工业联合会(EIA)制定的利用平衡双绞线作传输线的多点通讯标准,它采用差分信号进行传输,具有传输速率高、传送距离远、可靠性高、扩展容易等特点。RS485通讯器件采用MAX487-CP,MAX487是MAXIM公司生产的用于RS485和RS422通信的差分总线小功率收发器,它含有一个驱动器和一个接收器,具有驱动器/接收器使能功能,输入阻抗为1/4负载,总线节点数为128,即每个的驱动器可驱动128个标准负载。MAX487的驱动器设计成限斜率方式,使输出信号边沿不至于过陡,以避免在传输线产生过多的高频分量,从而有效扼制了干扰现象。
系统通讯的数据帧格式参考 MS/TP 协议标准, 具体设计如下:
前同步码 2 字节:55H,0FFH;帧类型 1 字节;目的地址1字节;源地址1字节;头部CRC 1字节;数据 8 字节;数据 CRC 2字节。一帧数据共16字节,128位。
2 基于“错时退避”策略的防冲突算法
在一台病房分机请求发送数据的同时,另一台病房分机请求发送数据,或在一台病房分机在发送数据的过程中,另一台病房分机请求发送数据,都就会造成通讯冲突。为了防止因通讯冲突而造成的数据传输错误,本系统参考CSMA/CD(Carrier Scnse Multiple Access /Collision Detect)技术。CSMA/CD即载波监听多路访问/冲突检测,它的工作原理可用8个字来表示:“先听后说,边听边说”。病房呼叫分机在发送数据前,先检测信道是否空闲,若空闲,则发送数据。在发送数据的同时,仍继续监听信道,以检测是否存在冲突。一旦检测到冲突,就立即停止发送,并向总线上发一串阻塞信号,通知总线上其他各有关站点停止数据传输。这样,通道容量就不致因白白传送已受损的帧而浪费。CSMA/CD的工作流程如图2所示。
一般而言,普通网络上传输的信息量比较大,因此,普通网络追求的是信道的使用率和信息的吞吐量。生理呼叫系统的传输信息量很小,系统要求的是信息传输的实时性,同时又互不干扰。要解决这个问题,必须尽可能避免重复冲突现象的发生。即要求如果发生多台通讯冲突现象,各分机的退避时间应不同。本文分别讨论的延时退避算法和冲突退避算法有“错时退避”的特点,能有效地解决重复冲突问题。
2.1 延时退避算法
系统采用“先听后说”的工作方式,分机在发送呼叫信息前,先监听信道状态。如果信道忙,说明有其他分机正在占用信道传输数据。根据前述数据帧格式,一帧数据共128位,一台分机传输数据所需的时间为:T=128 bit/波特率。
因此,本次数据传输还需占用0到T的信道时间。为了避免同时监听到信道空闲而发生的冲突现象,各分机采用下列延时退避公式决定延时监听时间:
上式中,ti为第i台分机的延时时间,n是分机的总台数,rand(0,1)为一个0到1的随机数,E是应急呼叫设置位(若为应急呼叫,则设置E为1)。系统将卫生间呼叫默认设置为应急呼叫,一些重症病人的呼叫也可由系统呼叫主机设定设置为应急状态。
分机i以ti的间隔时间监听信道,当监听到信道处于空闲状态时,即可进行到工作流程的下一步。
2.2 冲突退避算法
尽管系统采用“先听后说”的工作方式,但也可能发生两个站点因同时监听到信道空闲而同时发送数据的现象,即发生通讯冲突。检测通讯冲突的方法是:发送数据的呼叫分机将接收到的信息与原来发送的信息逐个比特位进行比较,如果两者一致,说明没有冲突;如果两者不一致,则说明发生了冲突。
造成这种通讯冲突的原因与信号在信道上的传播时延有关。传播时延是信号由信道上的一个站点传播到另一个站点的时间,信息传播时延可由式(2)计算:
设A、B是系统中的两台呼叫分机,它们之间的传播时延是tpab。分机A检测到信道空闲后,就发送数据;分机B在分机A开始发送数据的(0,tpab)的时间内检测信道,由于信号还没有传播到分机B,因此分机B检测到信道状态仍处于空闲状态,分机B也发送数据,造成通讯冲突。分机检测到通讯冲突后,立即停止发送,并向总线上发一串阻塞信号,用以通知总线上其他各有关站点退避。冲突退避时延采用式(3)计算:
tj=tpmax(j+1-E×j)×[rand(0,1)+1] (3)
上式中,tj为第j台分机时延检测时间,tpmax为任意两个站之间的最大传播时延,由公式(2)计算得到。E、rand(0,1)的含义同式(1)。
无论是(1)式还是(3)式,i( j )值小的分机先检测信道,在数据传输比较繁忙的时段,i( j )值大的分机总是要持续一个较长的时延才能检测信道,这就会造成系统中各分机竞争不均衡的现象。为了避免这种现象,我们将i( j )设置为分机检测总线的优先级别,并把系统设置成优先级循环的工作方式。初试状态,i( j )的值为分机编号,优先级分别为1、2、……、n。当优先级为k的分机传输数据后,系统主机将原来优先级为k+1至n的分机的优先级分别设置为1至n-k,将原优先级为1至k的分机的优先级设置为n-k+1至n。
2.3 退避算法性能分析
医院护理呼叫系统的信息传输量很小,追求的是呼叫响应时间。为此,我们假设出现最不利的情况来分析本文算法的性能:系统共有64台分机,设在一台分机刚开始传输数据时,其它63台分机同时申请传输数据。那么,传输64台分机的数据的总时间t为:
上式中,第1项为n台分机的数据传输时间,第二项为每台分机检测总线延时退避空闲间隔的最大值之和,第3项为每台分机冲突退避空闲间隔的最大值之和。
将相关的数据带入(4)式,得t=0.3s,完全能满足医院护理呼叫的时间响应要求。
CSMA/CD技术及相应的退避算法能有效地解决普通网络信道占用冲突的退避问题,从而提高信道的使用率和信息的吞吐量。但小型的自组织网络的信息吞吐量往往不大,因而信道的使用率和信息的吞吐量不是系统追求的主要目标。对于一些信息传输实时性要求比较高的自组织网络,如何及时传输信息是提高系统性能的关键因素。医院护理系统中的通讯系统采用RS485总线结构,参考CSMA/CD构建载波监听多路访问/冲突检测工作原理,设计基于“错时退避”策略的延时退避算法和冲突退避算法,有效地降低信道争用的冲突问题。特别是处理信道争用二次冲突方面,与一般的CSMA/CD退避算法比较,有着明显的优势,从而大大提高了信息传输的实时性。论文中的算法已应用于多家医院和养老院的护理呼叫系统中,性能可靠,达到预期的技术指标要求。
参考文献
[1] 黎琼,徐海峰. 智能家居中红外控制系统通讯协议分析[J]. 微计算机信息(测控自动化),2007(1).
[2] 刘宏立,段正华. 具有动态分配重传策略的CSMA/CD访问协议性能分析[J]. 通信学报(计算机通信专集),1998.
[3] 郑德华,陶继伟. RS-485通讯协议在集散控制系统中的应用[J]. 中国仪器仪表,2005(9).
[4] 刘宏立,童调生,段正华. CSMA/CD/RR协议模型分析及其在以太网络中的应用[J]. 长沙湖南大学学报 (自然科学版),2000(6).