倪 勇,夏育荣,苏 润
(中国电子科技集团公司第三十八研究所 浮空平台部,安徽 合肥 230031)
空器囊体内部温度与浮空器所处环境 温度差称为超热。浮空器采用轻于空气的气体提供浮力,从而克服自身重力升空,而气体体积受温度变化影响较大,因此超热对浮空器浮力影响较大。为研究和掌握浮空器超热及其对浮力影响规律,需要在地面进行浮空器囊体内部超热实验。传统的实验方法使用温度计和U型管分别记录空气囊体内部温度和压力,并人工观察、记录温度和压力值,这种方法自动化程度低,实验人员劳动强度大,易造成疲惫,也容易出现人员读数或记录错误等情况。因此,针对囊体超热实验研究了一种自动化多传感器数据采集系统。
本系统使用智能温度传感器和微差压传感器搭建,采用总线结构将温度传感器和微差压传感器连接到计算机,从而大大简化了硬件电路的实现,同时降低了线路导线重量。温度传感器和微差压传感器供电由地面或浮空器上28V电源提供。上位机界面使用VC编程实现,可实时采集和显示囊体内部温度和气压的变化情况,同时可根据需要保存数据,便于后续处理和分析,上位机布置于地面时可进行超热实验地面研究;布置于浮空器上时,可进行浮空器升空超热实验。系统结构组成如图1所示。系统各传感器节点通过RS-485总线实现与上位PC机之间的信息通讯,从而实现数据的采集与显示。
由于需要在囊体内部不同部位采集多个温度量,因此在保证系统工作可靠性的前提下,为便于操作,总线结构采用RS-485形式。
RS-485差分数据传输的电气规范,现已成为业界应用较为广泛的标准通信接口之一。RS-485为总线式拓扑结构,在同一总线上最多可以挂接32个节点。在本系统中的RS-485通信网络中采用的是主从通信方式,即一台上位机(主机)带多个传感器(从机)的控制方式。由于主机串口为RS232接口,因此总线上位机一端使用一个RS-485转RS-232转换器实现与PC机的连接。
温度传感器选用了一款MT-WDT具有标准485通讯接口的高可靠性分布式测温传感器,具备微功耗、宽工作电压(DC 5~28V)、宽测温度范围(-40℃~85℃)等特点,并采用金属封闭式封装,具有优良的抗紫外线、抗静电、防雷、抗震、防水、防腐蚀性气体的能力,适用于气象探测、恶劣工业环境等需要高可靠性和稳定性、长期工作的应用领域。温度传感器采用晶体谐振式形式,是目前抗干扰能力最好的测温方法。传感器结构如图2所示。
图1系统结构组成图
模块的通讯协议遵照Modbus-RTU,波特率2400bps,8bit数据,1bit停止位,无奇偶校验。Modbus协议中,数据存储、传输均以“寄存器”为单位,每个寄存器都是2字节数据,高字节在先。通讯帧中,除CRC校验低字节在先外,其余双字节数据均高字节在先。
图2 温度传感器原理框图
在RS-485总线上,每个模块都必须有唯一的地址(机号),因此需要对每个模块设置地址。地址设置使用了Modbus协议中的“写寄存器”命令,地址设置采用了广播方式。因此,在进行地址设置时,RS-485总线上一次只允许寻址一个模块,同时为了防止模块地址因误操作被修改,模块只有在上电10秒内才能接收写地址指令。
微差压传感器选用了一款精密智能压力传感器,该系列传感器可适用于干性气体。传感器带有不锈钢隔膜,适用于腐蚀性介质的测量,产品基于先进硅压阻技术,内含微处理器进行补偿和通讯。该传感器在超过工业温度范围内能达到0.05%的精度,由于内部压力敏感元件的重复性好和利用单片机进行数字补偿,可获得稳定的高精度,在-40~85℃的温度范围内,具有0.05%FS的典型精度,年稳定性优于0.025%。传感器提供RS-485 和4-20mA 两种不同输出形式,数字输出采样速度最高可达到每秒120 点。传感器原理结构如图3所示。
微差压传感器通过RS-485总线联网,一台PC机最多可挂接32个传感器,每个传感器具有有一个独立的地址。利用这种网络模式,用户可以在某个传感器,或一组传感器、或网络上所有传感器通讯;改变波特率,从1200 至28800bps;设定压力读数形式,对每个传感器单位进行设定。
图3 微差压传感器原理框图
本系统软件使用VC++进行编写,串口通信部分使用MSComm控件。Microsoft Communication Control(简称MSComm)是Microsoft公司的简化Windows下串行通讯编程的ActiveX控件,它为应用程序提供了通过串口收发数据的简便方法。MSComm控件具有完善的串行数据的接收和发送功能,它不但包括了全部Windows API中关于串行通信函数所具有的功能,还提供了更多的对象属性来满足不同用户的编程需要。用户只需通过设置并监视其属性和事件,即可完成串口编程,实现与被控制对象的串行通信、数据交换;并监视或响应在通信过程中可能发生的各种错误和事件。
MSComm控件的工作原理类似中断方式,其通信功能的实现,实际上是调用了API函数。通信过程的实质是通过对MSComm控件属性的操作和对OnComm事件的响应来完成对串行口的查询、设置及通信。
它提供两种处理通讯的方式:事件驱动法和查询法。其中事件驱动通讯是利用MSComm控件的OnComm事件捕获并处理通讯事件,它类似于硬件的中断方式,具有响应及时和可靠性高的特点。查询法则是通过检查MSComm的CommEvent属性值来查询事件和错误。本程序中采用的是事件驱动方式。
MSComm控件在程序中的使用方法和步骤如下:
(1)加入MSComm控件;
(2)设定通信端口号,即CommPort属性;
(3)设定传输速度等参数,即Setting属性;
(4)开启通信端口,即将PortOpen属性设置为True;
(5)使用Input和Output属性,输入和输出数据;
(6)关闭通信端口时将PortOpen属性设置为False。
在本系统的串口通讯的编程中需要注意两个问题。一是每次打开串口前需要加入该串口是否已经打开的判断,否则易引起程序错误。二是本例中使用的两种传感器波特率并不相同,温度传感器为2400bps且不可更改,微差压传感器虽然可调,但通过实验发现,其通信只能稳定工作在9600bps或更高波特率下,因此在与不同传感器进行通信时,必须对串口设置进行修改,实验结果表明,串口通信完全可以在两种波特率模式下很好地切换工作。
由于本系统使用传感器较多,为避免时序混乱,因此使用轮询方式定时查询各传感器数据,并显示和存储。软件流程如图4所示。
由于采用轮询方式进行数据采集,因此定时器1用于确定轮询时间。定时器1的时间由所有传感器通信时间总和决定。设定定时器1的好处是任意两次采集传感器数据的时间间隔基本相等,这为后续的数据处理提供了便利。
定时器2用于设定传感器反馈时间,如果定时器时间内传感器无反馈,则说明传感器通信失败,此时将在界面显示该传感器为空,同时跳过该传感器查询下一个传感器数据。定时器2的时间设定需根据各温度传感器和微差压传感器的通信格式和波特率计算通信传输时间。
PC机按照定时器2的时间向各传感器发送询问指令,传感器收到询问指令后,将温度或压力信息按照约定的通信格式传输到PC机,数据传输到达PC机时,将产生一个串口中断,程序响应中断读取串口数据。
PC机读取数据后首先按照约定的校验方式对数据进行检查,如通过校验,则提取温度或压力值并显示在界面上,否则说明通信发生错误并丢弃数据,部分程序显示界面如图5所示。最后,程序根据设定决定是否保存数据。
图4 软件流程图
除数据显示外,对于囊体压力这一重要数据,程序还以曲线图的形式加以显示,以直观了解压力变化情况。
程序设有保存数据按钮,按下按钮时,将在C盘根目录下建立一个文件夹,文件夹以当前时间为文件名,文件名格式为“年-月-日,时-分-秒”,为便于对每个传感器的输出进行单独数据处理,此时程序将在该目录下以各传感器类型和节点号为名称保存一个TXT文档,如“温度1”,在各文档中分别记录当前传感器输出值,记录格式为“年-月-日,时-分-秒 XX℃”。记录效果如图6所示。
图5 部分程序显示界面
图6 数据记录
由于实验时间持续较长,为保证单个文件不至于过大导致文件出错,程序设定每个整点时间重新生成一个文件夹,同样以当前日期和时间命名该文件夹,同时将保存路径自动切换至该文件夹,生成新的数据文件。
该多通道传感器数据采集系统开发成本较低,除传感器费用外,基本无其它支出。系统开发完成后,在囊体超热实验过程中投入使用并得到了良好的验证。
囊体超热实验同时进行了两个气球囊体的测试,共连续运行168小时,程序运行稳定,无意外情况发生,数据记录完整。实验界面如图7所示。
图7 应用程序界面
该套系统投入运行后,工作人员对囊体超热实验的状况能随时监控,减轻了劳动强度实现了囊体超热实验自动化的预期目的。同时,提供了较为完善的数据记录功能,使后续试验数据处理的精度大为提高,时间大为缩短。该系统实时性好,可靠性高,故障率低,成本低,维护简单方便,能长时间无差错地实现多通道传感器数据采集、显示和保存相比于传统人员监视和手工记录的方式,采用该系统进行囊体超热实验,人员由过去的4人轮流值班,减少为1人每隔2小时检查一次,工作强度大为降低,且采用电子文档记录实验数据的方式,省去了手工记录数据并录入计算机分析的过程,减少了数据出错概率。系统经过7天24小时连续实验,有效获取并记录了全部实验数据,实验全程系统运行稳定,降低了劳动强度,提高了劳动效率,采用电子方式记录的实验数据极大的方便了实验结束后的数据分析,提供了数据分析的准确性,系统研制达到了预期目的。
[1] 林涛,邹黎华,耿勇男.多类型多通道的数据采集系统设计[J].电子测量与仪器学报,2009,23(51):236-239.
[2] 邓福伟,刘振兴,周恒.多通道数据采集系统的设计[J].微计算机信息,2008(25):148-150.
[3] 薛海涛,和卫星,陈晓萍.数据采集系统中Modbus协议的实现厅[J].微计算机信息,2007,23(10):68-69.
[4] 朱文忠.基于VC的串行通信的实现方法探析[J].微电子学与计算机,2007,24(1):159-161.
[5] 张宏林.精通Visual C++串口通信技术与工程实践(第三版)[M].北京:人民邮电出版社,2008:106-109.
[6] 姚领田.精通MFC程序设计[M].北京:人民邮电出版社,2006:87-92.