基于VC的液体点滴实时监控系统的设计与实现
李云胜
(西华大学 电子信息与电气工程系,四川,成都 610039)
摘要:本文介绍了利用Visual C++6.0语言的可视化和MSComm通信控件来实现微机化实时监控多套医用液体点滴装置。文中提出了监控系统的硬件设计和软件设计,并详细分析了监控系统的结构及功能。
关键词:实时监控 系统功能 通信协议
中图分类号:TP393.07 文献标识码:A
Design and Implementation of
Liquid Intravenous Drip Real-time Monitor and Control System Based on VC
(Department of Electronic
Information and Electrical Engineering ,Xi Hua
University,Chengdu,Sichuan,610039,China)
Abstract: This article is
introduced to use Visual C++6.0 language’s visibility and MSComm communication
control to implement using microcomputer to monitor and control many sets of
hospital liquid intravenous drip equipment。 In this paper, hardware design
and software design of monitor and control system is put forword, the system
structure and function are analysed in detail.
Key words: Real-time monitor
and control;system function;communication protocol
1 前言
在一些大医院一个护士常常需要负责十几个、甚至几十个床位的液体点滴,很容易出现混乱局面,导致工作效率降低。为了提高医院本身的管理水平和工作效率,实现自动实时地监控液体点滴,因此,微机化自动实时的液体点滴监控系统的使用势在必行。本文提出的液体点滴自动实时监控系统,是用VC++6.0开发微机(或上位机)的Windows监控软件,具有控制界面直观、操作简单的优点,而下位机是用单片机AT89C51来控制和管理各个床号的液体点滴装置。利用VC++6.0提供的MSComm通信控件来完成上位微机与下位单片机之间的串行口通信,从而实现对下位机点滴速度和点滴液位实时监控,并具有对点滴过快、点滴过慢(或停止)、点滴液位过低和紧急情况等自动报警的功能。

2 系统设计
2.1 系统硬件设计
2.1.1 系统结构
微机化液体点滴实时监控系统结构,如图1所示。它由以下几部分组成:一台微机(上位机)、若干套液体点滴装置(下位机)、接口转换电路以及语音通信电路(图中未给出)。由于RS-232接口存在数据传输速率慢和传送距离短的缺点,而本系统又涉及到较远距离传送数据,故上位机与下位机之间采用RS-485半双工串行传输接口标准,传输数据采用主从方式,最大传输距离为1200m。因此,在采用RS-232接口的微机与下位机之间必须进行接口转换。
2.1.2下位机硬件介绍
下位机机械结构示意图,如图2所示。包括:点滴移动支架、步进电机、滑轮、九对红外发射接收对管LED0~8、储液瓶等。下位机除了机械结构以外,还包括一个单片机控制系统,它主要用来实现与上位机通信。下位机有如下几个功能:
(1) 实时检测点滴速度
在滴斗处安装一对红外发射接收对管LED0 ,利用液滴的折射特性来检测点滴速度,其工作原理:没有液滴遮挡时,红外接收管能接收到红外发射管发射的红外光;有液滴遮挡时,红外光被折射而使红外接收管不能接收到红外光,即每滴液滴遮挡一次红外光,红外接收管就接收到一个红外光脉冲;单片机控制系统对红外发射接收对管LED0检测到的脉冲个数进行计数,从而实时地计算出点滴速度,并在点滴装置的LCD液晶显示模块上显示出点滴速度(滴/分)。
下位机通过RS-485方式向上位机传送点滴速度数据,并显示在上位机的用户界面上,从而实现实时监控的目的。当点滴速度(设定范围为20~150滴/分)过大、过小或停止点滴时,下位机会发出声光报警信号并在LCD液晶显示模块上显示出相关报警提示文字;当按下“清除”键(表示有人工响应此报警信号)即可解除报警。同时,上位微机也会发出声光报警信号并在用户界面上显示出相关报警提示文字和图样。
(2) 人为设定点滴速度
下位机可以采用两种方式来控制点滴速度,一是通过调节滴速夹控制输液软管夹头松紧的方式来控制点滴速度;二是通过步进电机改变h1来自动控制点滴速度,其控制原理:通过点滴装置面板上的数字键来设定点滴速度的大小,若红外对管LED0实际检测到的速度大于设定的点滴速度,单片机控制系统会使步进电机正转,降低h1使实际点滴速度变小(反之,若红外对管LED0实际检测到的速度小于设定的点滴速度,单片机控制系统会使步进电机反转,升高h1使实际点滴速度增大),直至实际点滴速度与设定的点滴速度相等时,步进电机才停止转动。这样,点滴速度就基本稳定下来了。随着点滴液位下降,点滴速度会减小,单片机控制系统会自动控制点滴速度使之保持为设定值不变。
(3) 点滴液位的显示及过低报警
八对红外发射接收对管LED1~8以动态扫描方式来检测点滴液位的位置(其工作原理与LED0检测点滴速度完全相同),所得到的8位数据传送到上位微机,在用户界面的进展条上非常直观地显示出各个床位的点滴液位,从而自动实时监视点滴液位的进展情况。
当储液瓶中的点滴液位降到警戒值(h2=2~3cm)时,红外对管LED1就会接收到红外光(实际上,LED1~8都会接收到红外光,表明点滴液位过低),下位机会发出声光报警信号,并在LCD液晶显示模块上显示出相关报警提示文字;同时也会向上位机传送此报警信号。当按下“清除”键(表示有人工响应此报警信号)可以解除报警。
(4) 呼叫、对讲功能
若病员有紧急病情,可按下紧急“呼叫”按钮,呼叫上位机。若得到上位机响应,即可与上位机的值班护士进行对讲通话。“呼叫”按钮及扬声器话筒组件图中未标出。
2.2 系统通信程序设计
上位微机与下位单片机构成一个多机通信系统,通信方式采用主从式结构:上位机为主动,下位机为从动;下位机不主动发送命令或数据,一切都由上位机来控制。上位机发送的信息分两种:一种是地址,当串行数据第9位为1时,表示是上位机需要通信的下位机地址;另一种是数据,当串行数据第9位为0时,表示是上位机发送给下位机的数据。下位单片机AT89C51必须工作在方式2或3下,并且所有下位机的串行口控制寄存器SCON的SM2必须为1。这样,每个下位机在RI=0时都能接收到上位机发送的地址,而进入各自的中断服务子程序,把接收到的地址与本机地址进行对比。若相同则表示上位机欲与本机通信而使SM2=0以便接收随后上位机发送来的数据或命令;若不相同则退出中断服务子程序,等待下一次通信。
2.2.1 下位单片机通信程序设计
通信协议如下:
上位机和下位机之间采用半双工异步串行通信方式,数据传输速率为9600bps,上位机采用查询方式发送或接收控制字符和数据,下位机采用中断方式响应上位机的查询。发送或接收控制字符和数据的每个字节包括11位:1个起始位,8个数据位,1个可编程位(作为地址数据标志位),1个停止位。
每次上位机向下位机发送数据时,首先发送地址信号“0n”(n为下位机地址码),被寻址的下位机收到地址信号后回送应答信号(即回送本机地址码)到上位机,上位机收到应答信号并判断是目标下位机后才发出命令字:①00H—上位机发送,下位机接收②0FFH—上位机接收,下位机发送;以确保上位机发送或接收数据。当上位机接收到下位机回送的数据处理完毕信号(0FEH),则本次通信完毕。如此依次循环查询所有的下位机。
下位机通信程序流程图,如图3a所示。
2.2.2 上位微机基于VC++6.0通信程序的实现
Visual C++6.0是Microsoft公司推出的一种基于Windows平台的可视化开发环境,以其强大的功能、友好的界面设计及其灵活的Active X控件等优点而成为目前最为流行的C++语言集成开发环境。可以应用VC++提供的MSComm控件通过串行端口发送和接收数据来实现串行通信,其方法较简单,只需要对串口进行简单配置即可, 以下给出了实现串口通信的方案。上位机通信程序流程图,如图3b所示。
其中,MSComm控件的相关属性请读者参阅相关资料。部分源码如下:
串口初始化并打开串口:
m_Com.SetCommPort(2); //选择COM2
m_Com.SetInBufferSize(1024); //设置输入缓冲区的大小
m_Com.SetOutBufferSize(512); // 设置输出缓冲区的大小
if(!m_Com.GetPortOpen())
m_Com.SetPortOpen
(TRUE); //打开串口
m_Com.SetInputMode(0); //设置输入模式
m_Com.SetSettings(“9600,n,8,1”); //设置数据传输速率等参数
m_Com.SetRThreshold(1); //为1表示有一个字符引发一个事件
发送数据:
m_Com.SetOutput(COleVariant(outstring)
); // 发送outstring字符串
接收数据:
m_Com.SetInputLen(1); //每次读取一个字符
VARIANT V1= m_Com.GetInput(
); //读取字符

2.2.3 界面设计
利用VC++6.0语言的可视化开发环境设计的界面友好、操作简单。本监控系统的界面,如图4所示。
此界面仅以监视16套液体点滴装置为例,其操作说明如下:在界面上除了能显示各床号的点滴速度和点滴液位的进展情况外,还可以通过“呼叫”按钮,呼叫任意一个床号并与之对讲通话;若有某床号呼叫上位机,则只需要用鼠标点击“应答”按钮,即可与之对讲通话。另外,还可以通过输入床号和点滴速度来修改任意一个床号的点滴速度。
![]()
3 结束语
微机与单片机之间的通信已被广泛应用于各个控制领域中,本文主要对微机化液体点滴实时监控系统的结构和功能进行了讨论,并对检测部分的硬件电路进行了实验调试,笔者认为切实可行,且运行可靠,具有一定的实用价值。
参考文献:
[1] 李现勇. Visual C++串口通信技术与工程实践[M] 北京:人民邮电出版社,2002.
[2] 李朝青.PC机与单片机&DSP数据通信技术选编1[M] 北京:北京航空航天大学出版社, 2003.
[3] 石东海.单片机数据通信技术从入门到精通[M] 西安:西安电子科技大学出版社, 2002.
[4] 赵代强,傅汝霖.基于VC++6.0的客房自动监控系统的设计与实现[J] 计算机应用,2003,(8):127-132.
发件人:Peter Lai
邮件主题:学会征文
来稿日期:2003-11-05 11:48:00
打印日期:2003-11-05 14:45:21
联系邮箱:peter88lai@163.com