基于VB的大电流直流电源的实时监控系统

时间:2022-06-21 01:36:06

基于VB的大电流直流电源的实时监控系统

摘 要:文章介绍了一种基于VB的监控系统,符合大电流直流电源的控制要求,能实现直流电压、电流的实时监控,移相脉冲模拟显示,历史数据查询以及异常报警等功能,为电源的实时监视和智能控制提供了很大的方便。

关键词: Visual Basic;实时监控;直流电源

中图分类号:TP277 文献标识码:A

The Real-time Monitoring System of High-Current DC Power Supply Based on VB

LI Yi, LI Hong, YANG Bin, HE Xiao-liang

(Xi'an Shiyou University, Xi'an Shaanxi 710065, China)

Abstract: his paper introduces a monitoring system based on VB, which meets the control requirements of the high-current DC power supply. It can monitor the real-time DC voltage and current, display phase shifting pulse, keep the historical data and raise exceptions. It provides a big convenient to the real-time monitoring and intelligent control of the power supply.

Keywords: visual basic; real-time monitoring; DC power supply

引 言

大电流直流电源是冶金、化工及有色加工行业必不可少的供电电源,电源输出电压、电流的稳定性往往决定着整个公司产品的产量。以真空自耗炉为例,电流波动大,小则浪费一整炉的材料,大则烧掉整个定子,给公司带来很大的经济损失。可见对电源运行状况进行实时监控是很有必要的,但是目前大多数此类电源缺少有效的监控,或者使用价格昂贵的组态软件来进行监控。本文介绍了一种基于VB(Visual Basic)的监控系统,能有效解决以上不足,实现直流电压、电流的实时监控,移相角的直观显示,以及异常报警等,为电源的实时监视和智能控制提供很大的方便。

1 系统构成及原理分析

该系统上位机是由VB编程语言编写的实时监控界面(如图1所示),下位机采用STC11F32单片机。其监控原理为:下位机与上位机进行数据通信,发送电源电压、电流、移相角数据;上位机接收数据,监控界面以动态曲线和动画的形式给予直观显示;上位机也可以发送命令给下位机,完成合闸、分闸和封脉冲等动作,从而实现对电源的实时监控。

1.1 上位机与下位机通信模块

上位机串口经MAX232电平转换连接单片机,构成RS-232全双工串行通信形式,监控界面中添加Microsoft Communication Control(简称MSComm)的通信控件,MSComm一般有两种处理串行通信的方法:一是事件驱动方法,二是查询法。此系统采用事件驱动的方法,当串口接收到或发送完指定数量的数据时,或当状态发生改变时,MSComm控件都将触发OnComm事件,该事件也可以捕获通信中的错误。当应用程序捕获到这些事件后,可通过检查MSComm控件的CommEvent属性的值来获知所发生的事件或错误,从而执行相应的处理。具体实现如下:

(1) 初始化MSComm控件

mPort = 1 '选用串行口1

MSComm1.settings= "9600,n,8,1" '设置波特率9600,无奇偶校验,8位数据,1位停止位

MSComm1.InputLen = 0 '读入整个缓冲区

MSCom m1.InBufferSize = 1024 '设置接收缓冲区长度

MSComm1.InBufferCount = 0 '清除接收缓冲区数据

MSComm1.OutBufferCount = 0 '清除发送缓冲区数据

MSComm1.RThreshold = 3 '接收3个字符后引发OnComm事件

MSComm1.InputMode = comInputModeBinary '接收二进制格式的数据

(2) OnComm事件处理

Private Sub MSComm1_OnComm()

Select Case mEvent

Case comEventRxOver

MsgBox “接收缓冲区溢出”

Case comEvReceive

Rec_BuF=MSComm1.Input

Rec_byte=Rec_BuF(0)

Select Case Rec_byte

Case &H01

……

Case &H02

……

End Select

End Select

End Sub

1.2 实时曲线模块

实时曲线的绘制使用Timer控件,定期将串口接收到的数据送往PictureBox,再采用PictureBox的Line方法绘制曲线。具体实现如下:

(1) 重新建立坐标原点

因为PictureBox默认的坐标原点在左上角,与平时习惯不同,也不利于绘制曲线,所以需要重新建立坐标原点,使坐标原点(0,0)在PictureBox的左下角:

Private Sub PicScale(picX As PictureBox) '调整图像框的坐标系

picX.Scale (0, picX.ScaleHeight)-(picX.ScaleWidth, -picX.ScaleHeight)

End Sub

(2) 数值转换和绘图

由于监控的是电压和电流,传感器将其转换为0~10V的电压信号,经12位A/D转换为0~212-1的值,上位机需将12位二进制转换为十进制,再显示在0~Height的PictureBox里,其间必须有一一对应的关系,才能实现正确的监控显示。所以需要将串口传入的数据进行数值转换,再使用Line函数绘制曲线,x轴为时间,y轴为电压和电流。

转换程序如下:

For i = 1 To 8

s1 = s1 + 2 ^ (12 - i) * Val(Mid(Data_U1, i, 1)) '高字节电压数据

Next i

For i = 1 To 8

s2 = s2 + 2 ^ (8 - i) * Val(Mid(Data_U2, i, 1)) '低字节电压数据

Next i

Data_U = s1 + s2

绘图程序如下:

Private Sub Timer1_Timer()

TimeCount = TimeCount + 1

Picture1.DrawWidth = 2

PicScale Picture1 '调整图像框的坐标系

Picture1.Line ((TimeCount - 1) * 200 + 500, Data_U(TimeCount - 1) / (2 ^ 12 - 1) * picture.ScaleHeight) -((TimeCount) * 200 + 500, Data_U(TimeCount) / (2 ^ 12 - 1) *picture.ScaleHeight), vbWhite'实时电压曲线

Picture1.Line ((TimeCount - 1) * 200 + 500, Data_I(TimeCount - 1) / (2 ^ 12 - 1) * picture.ScaleHeight)-((TimeCount) * 200 + 500, Data_I(TimeCount) / (2 ^ 12 - 1) * picture.ScaleHeight), vbRed '实时电流曲线

End Sub

1.3 动画显示模块

此系统包括模拟移相动画、合闸分闸动画和报警动画。移相角动画模拟示波器显示移相触发脉冲,将触发器送来的脉冲相位在相对正弦曲线的位置显示,既直观又形象。合闸分闸动画模拟的是实际的空气开关闭合和分离的状态,易于操作的同时也给人以危险警示。报警动画以闪动的红灯和报警类型字样组成,当发生异常情况时,运行状态由绿色的“运行正常”变为红色闪动的动画,显示报警类型,并发出声音警报。

1.4 数据查询模块

历史数据的保存和查询,系统可以每天自行建立一个Excel文档,以对应的年月日命名,将实时的电压、电流值保存,并将异常情况单独列出,查询时可一目了然。另外,对标题行进行了冻结处理,方便查询(如图3所示)。具体实现如下:

Workbooks.Add

ActiveWorkbook.SaveAs FileName:=App.Path & "\" & Format(Now(), "yyyy-MM-dd") & ".xls" '新建Excel文档

On Error Resume Next

Set xlBook = xlApp.Workbooks.Open(App.Path & "\" & Format(Now(), "yyyy-MM-dd") & ".xls") '打开Excel

xlApp.Visible = False

Set xlSheet = xlBook.Sheets("sheet1")

xlBook.RunAutoMacros (xlAutoOpen)

xlSheet.Select

xlSheet.Columns("A:F").AutoFit

xlSheet.Range("A1:C1").Interior.ColorIndex =4

xlSheet.Range("A2").Activate

ActiveWindow.FreezePanes = True

Do While xlSheet.Cells(I + 1, 1) ""

I = I + 1

Loop

xlSheet.Cells(I + 1, 1) = TimeSerial(Hour(Now()), Minute(Now()), Second(Now()))

xlSheet.Cells(I + 1, 2) = Data_U(TimeCount) '添加电压数据

xlSheet.Cells(I + 1, 3) = Data_I(TimeCount) '添加电流数据

xlBook.Save '保存Excel文档

1.5 下位机模块

下位机为STC11F32单片机,通过MAX232芯片与上位机连接,接收上位机命令和发送实时数据,程序流程图如图4所示。

2 系统运行结果

运行系统,设置好通信参数、系统参数和电流电压设定值,点击“连接下位机”,建立与下位机的通信连接,然后分别点击合闸、解脉冲,给下位机发送数据,电源即开始工作。系统运行正常时,主界面上显示各个数据和曲线(如图5所示)。

当电源异常运行时,如过电流、过电压、缺相和外部报警状态,系统将自动封锁脉冲,动画报警,显示报警类型,同时发出声音警报。

另外,此监控系统还设有了多个锁定:

报警状况下,封脉冲的锁定,此时无法解锁脉冲

解脉冲状况下,合闸锁定,此时无法合闸

各种锁定有效确保了电源安全和控制人员的人生安全。

3 结 论

本文介绍的实时监控系统直观性强,操作方便,下位机可以是单片机,也可以是PLC,适应目前大电流直流电源的智能化、模块化的发展趋势。

参考文献

[1] 罗朝盛. Visual Basic 6.0程序设计基础教程[M]. 北京:人民邮电出版社,2007.

[2] 卢胜利. 单片机原理与应用技术实践[M]. 北京:机械工业出版社,2009.省略。

上一篇:实施智慧物流,构筑驱动企业未来发展的新增长点 下一篇:基于Boost拓扑的侧导光LED背光源电容平衡式驱...