#计算机与通讯技术#
基于VB 的液压在线监测与故障诊断仪的上位机软件设计
李 芳 贺雨田
(长安大学工程机械学院 陕西西安)
摘  要:采用Visual Basic 6.0设计了液压在线监测与故障诊断仪的上位机软件,实现了以单片机为核心的下位机所采集数据的保存、波形显示、信号处理和系统状态识别功能。以检测仪设计为例,介绍了上、下位机串口通信的软件设计以及各个功能模块的界面设计,给出了VB 中调用M atlab 工具箱函数实现信号处理的方法。关键词:在线监测;数据采集;上位机;MSComm 控件
中图法分类号:TP 306+.3  文献标识码:B  文章编号:1004-9134(2008)01-0090-03
0 引 言
液压在线监测与故障诊断仪分上位机和下位机两部分,其中上位机为主机,下位机为从机。下位机是以AT89S52单片机为核心的数据采集系统,主要完成对液压系统压力、流量、温度信号,以及液压泵驱动电机定子线电流、线电压信号的采集;上位机系统负责对所采集信号的实时显示、系统安全报警、数据保存
、信号处理等功能。由于Visual Basic 6.0引入了面向对象的编程机制,巧妙地将Windows 编程的复杂性封装起来,只需使用窗体和控件等可视化界面设计程序,从而降低了程序设计的难度[1]。本文就采用了VB 来设计上位机软件,以实现检测仪的设计功能。上位机软件总体结构如图1
所示。
图1 上位机软件结构图
1 MSComm 串口通信设计
在本设计中,上、下位机间的数据传送采用三线式,即分别为TXD(发送数据信号线)、RXD(接收数
据信号线)和GND (地线)。VB6.0安装后,只需将MSComm 控件添加到窗体中,就可以利用事件驱动或轮回查询方式来实现硬件系统和串行端口的通信。使用MSComm 时,首先要在程序中打开相应的串口,然后对相应的串口通信参数进行设置。串口通信时,无论发送还是接收,都要在通信程序中设置一个Variant 类型变量做/中介0。发送时,先将要发送的字符串(传送文本格式时)或单字节数组(传送二进制格式时)赋给一个Variant 类型变量,再把该Variant 变量赋值给MSComm 的Output 属性;接收时,先将MSComm 的Input 属性赋值给Variant 变量,再根据不同情况赋值给字符串或单字节数组如下[2]:Private Sub Send_Cmmd_Click()
Dim bytSend()As Byte,Tempdata as Variant;将待发送数据存入bytSend()数组
MSComm1.SThreshold=0;给下位机发送指令时,不产生OnComm 事件
Tempdata=bytSend ;利用Tempdata 为中介
MSComm1.OutBufferCount=0;清除发送缓冲区MSComm1.Output=Tempdata ;发送打包后的数据
MSComm1.PortOpen=False ;关闭串口End Sub Private Sub Receive_Cmmd_Click()
Dim buffer As Variant ;接受数据存入buffer 中
MSComm1.InBufferSize=10;设置输入缓冲区大小
第一作者简介:李 芳,男,1981年生,现为长安大学工程机械学院机械电子专业在读硕士研究生。邮编:710054
#
90#
石 油 仪 器
PE T ROLEUM INSTRUMENTS
2008年02月
MSComm1.InputLen=0;程序从输入缓冲区读入全部字节MSComm 1.RTh
reshold=6;输入缓冲区达到6个字节时,产生Oncom 事件
Select Case MSComm 1.CommEvent
Case comEvReceive buffer=MSComm1.Input End Select
End Sub
2 登陆门限与主界面的设计
上位机软件具有较完善的登录系统,启动系统后,首先出现的登陆界面,在对话窗口中输入系统设定的用户名和密码,点击/确定0后方可进入系统。系统一但判断用户名和相应的密码正确后,接下来就会加载欢迎界面,然后进入系统主界面,如图2所示。该系统中主要有5个子程序模块,用鼠标在有下划线的子程序名上双击就可以进入相应的程序模块。单击/返回0按钮,
就可退出该系统。
图2 上位机系统登陆界面和主界面
3 几个主要模块界面的设计
/液压动力系统电机信号测试0模块主要是完成对电机电流、电压有效值,功率因数,以及电机功率的计
vb设计模拟密码输入器算与监测[3、4]。电机信号测试界面如图3所示。按下
开始按钮,上位机首先给单片机发送该子程序执行代码,单片机确认代码后,将采集电机的相关数据,并通过串口上传到上位机;该上位机程序模块按照准同步采样算法,对电机的4个参数进行计算并显示。如果
有参数超过了系统设定值,界面上绿灯会变成红,以报警;在对话框里输入保存数据的点数和保存路径,点击保存按钮可以保存数据;点击返回按钮,程序返回到主界面。考虑到算法要求,该程序默认采样频率为2.5Hz,串口波特率为57600bit/s 。/电流电压波形显示0子程序,主要完成对电流电压信号瞬时值显示、存储,主要为信号频谱分析以及液压系统输出功率软
测量子程序准备数据。
图3 电机信号测试模块界面
/压力流量温度信号测试0子程序界面如图4所示。该程序除具备对液压系统压力、流量、温度参数进行显示、报警、存储功能外,还可以设定信号采样频率,以及串口通信参数。使用时,首先设定好相应参数,按下开始按钮,上位机把各参数数值传给下位机,然后再
接收上传的数据。
图4 压力流量温度信号测试模块界面
/信号频谱分析0模块,可以对压力、流量、电流、电压四路信号分别做频谱分析;/液压系统输出功率软测量程序0模块,可以根据监测到的电流电压功率因数计
算液压系统的输出功率,由于这个两个模块牵扯到了信号处理和神经网络计算,因此考虑使用了VB 和Matlab 混合编程的方法。
4 VB 和Matlab 混合编程的实现
VB 易于开发用户界面程序,但不适合做数据的处
#
91# 2008年 第22卷 第1期  李 芳等:基于VB 的液压在线监测与故障诊断仪的上位机软件设计
理和运算;而Matlab 是一种面向科学和工程计算的高级语言,附带了十几个函数工具箱,对信号处理,以及基于神经网络的故障诊断应用起来比较方便,因此考虑使用VB 和MATLAB 混合编程的方法。动态
数据交换(DDE)技术是在Windows 环境下支持客户/服务器计算模式的重要技术,两个Windows 应用程序之间可以通过交换数据来相互连接,由于VB 支持DDE 客户端功能,MATLAB 提供了DDE 服务功能,因此,利用VB 和MATLAB 的动态数据交换能力,可以实现在VB 应用程序中调用MATLAB 。
以电流信号频谱分析为例说明混合编程的实现方法如下:
在VB 程序中放置两个文本框TextInput 和TextOutput,TextInput 用于存放已编写好的Matlab 程序,其Visible 属性设为False,这样程序执行的时候就看不到程序代码了;TextOutput 用于输出程序的运算结果(液压系统输出功率计算结果),在信号频谱分析模块中该文本框Visible 属性设为False 。在VB 界面上放置一个Image1图像控件,假定Matlab 函数编写的程序代码已经存放在TextInput 下,按下界面上频谱分析按钮,则Image1图像控件显示电压信号的频谱图如图5所示(为电机正常状态运转下工频率50H z 时候的幅值谱)
图5 信号频谱分析模块界面
VB 程序设置如下:
Private Sub voltage_Command_Click()
Rem 如果voltage_Command 按钮被按下,那么初始化TextInput 文本框与MATLAB 之间的会话Rem 会话的主题为Engine,会话的项目为EngEvalString.voltage_Text.LinkMode=vbLinkNone voltage_Text.LinkTopic=0MATLAB|Engine 0
voltage_Text.LinkItem =0EngEvalString 0voltage_Text.LinkMode=vbLinkManual
Rem 取出TextInput 中的字符串,这个文本方式的字符串就是送到MATLAB 中执行的命令szCommand =voltage_Text.Text
Rem 在MATLAB 中执行此命令voltage_Text.LinkExecute szCommand voltage_Text.LinkMode=vbLinkNone
Rem 初始化TextOutput 文本框与MATLAB 之间的会话
Rem 会话的主题为Engine ,会话的项目为En -gStringResult
TextOutput.LinkMode=vbLinkNone TextOutput.LinkTopic=0MATLAB|Engine 0TextOutput.LinkItem=0EngFigureResult 0TextOutput.LinkMode=vbLinkManual
Rem 将TextInput 中命令执行的结果以文本方式取回放在TextOutput 中TextOutput.LinkRequest
TextOutput.LinkMode=vbLinkNone
Rem 将TextInput 中命令执行的图形结果从剪贴板中取回放在Image1中显示
Image1.Picture=Clipboard.GetData()End Sub
4 结束语
通过本文的方法利用VB 程序实现上位机与下位机之间的RS232通信、信号的实时显示与存储,并通过调用Matlab 函数,实现了液压系统输出功率软测量和信号处理功能。本文设计的上位机软件基本满足了检测仪的设计要求。参考文献
[1] 范逸之,陈立元.V isualBasic 与Rs-232串行通信控制
[M ].北京:清华大学出版社,2001
[2] 张 瑜,韩玉杰,等.基于VB 的多路数据采集系统上位
机软件设计[J].林业机械与木工设备,2007,35(1)[3] 李永曦,陶伟莲.在VB6.0中调用M ATLAB 程序[J].微
机发展,2004,14(1)
[4] 郑玉甫,肖 强,张椿玲.基于VB 的蓄电池电压监测系
统平台[J].自动化与仪器仪表,2006,35(5)
(收稿日期:2007-09-30 编辑:梁保江)
#
92#
石 油 仪 器
PE T ROLEUM INSTRUMENTS
2008年02月

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。