订货号 | 产品名称 | 品牌 | 预计出货日 | 现价 | 数量 |
---|---|---|---|---|---|
对比 SN_5AA17144856D |
电力表库系统 | RHA/润恒奥 | 当日出货 | ¥155.00/双 |
系统构成
EXCEL报表系统是一个独立运行的软件系统,与ABB Freelance2000监控系统通过网络连接,遵循DDE(Dynamic Data Exchange)协议。
DDE用于在Windows平台上的两个正在运行的应用程序之间动态交换数据,是一种在Windows操作系统中基于消息的协议。其数据交换总是发生在两个正在运行的程序之间,在这两个应用程序之间相互发送和接收命令及数据。这两个程序分别称为客户和服务器程序,客户程序就是请求服务的程序,而提供服务的程序称为服务器程序。
在该系统中,监控系统程序作为DDE服务器,EXCEL报表系统程序作为客户程序从监控系统访问获取数据。如下图所示。
EXCEL报表系统主要完成运行日报和运行月报数据的生成及统计,运行日报分为:电气日志、公用日志、机组日志,由EXCEL报表系统主程序启动EXCEL后台程序进程打开运行日报EXCEL模板工作表完成每日整点数据的生成,并计算出每日的最大、最小值;运行月报分为:电气月报、公用月报、机组月报,由EXCEL报表系统主程序启动EXCEL后台程序进程打开运行月报EXCEL模板工作表完成每日最大、最小值的统计,每日电能的计算及月汇总,各断路器、刀闸的分合闸次数月统计及相应的月分合闸时间。其软件构成如下图所示。
2.2编程实现
2.2.1 EXCEL报表主程序的VB6编程
2.2.1.1 新建一个工程,在Form1上添加如下表一所示控件。
表一 在Form上添加控件
控件类型 控件名称 属性名称 属性值
Timer Timer1 Interval 1000
Visible False
2.2.1.2 代码编写
l 在Form1代码窗口中"General-Declarations"声明如下EXCEL程序对象及系统延时变量:
Private xlApp As Excel.Application
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
l 双击Form1窗体上的Timer1控件,在Timer过程中添加如下代码:
Private Sub Timer1_Timer( )
…
'创建EXCEL程序实例对象
Set xlApp = CreateObject("Excel.Application")
'打开运行日志EXCEL模板工作表
xlApp.Workbooks.Open FileName:="e:\baobiao\jizuyunxing.xls"
'不显示EXCEL程序窗口及相应警告信息
xlApp.DisplayAlerts = False
'由EXCEL对象xlApp运行模板工作表中的宏并执行相应操作
xlApp.Run ("tianbao")
'延时确保在执行下一个宏操作前DDE通讯数据完整采集
Sleep 10000
xlApp.Run ("setValue")
Sleep 1000
' EXCEL程序实例对象退出
xlApp.Quit
…
End Sub
2.2.2 EXCEL报表系统模板工作表的制作及VBA宏的编程
l 模板工作表的制作按实际要求制作生成相应的表格,可直接利用EXCEL强大的数据分析功能完成相应的计算及图表绘制。模板工作表制作过程中要在打印输出工作表格范围外的数据项对应单元格填上相应DDE项目名称(从监控系统获取相应的数据变量),这样可简化相应的VBA代码的编写量。
l VBA宏代码编写
在EXCEL单元格中访问DDE数据的语句指令格式为:"=digisrv|hongye! 1SYWBV"。 其中"digisrv"是DDE服务器时的服务(SERVICE)名称,同时"digisrv"(即"| digisrv!"部分中的"hongye")是TOPIC名称。"1SYWBV"是DDE项目(ITEM)名称。
在EXCEL程序窗口中通过"工具-宏-Visual Basic编辑器"打开VBA代码编写窗口,插入一个模块,编写如下代码:
'完成从DDE服务器采集数据过程
Sub tianbao( )
…
On Error Resume Next
'定义i为工作表单元格列变量,Curhour为整点小时所在行变量
Dim i,Curhour As Integer
…
'选择所要执行操作的工作表
Sheets("电气日志").Select
'从DDE服务器采集数据
For i = 2 To 31
ItemName = "=digisrv|hongye!" & "'" & Cells(39, i) & "'"
Cells(Curhour + 7, i) = ItemName
Next i
…
End Sub
'完成单元格中反映DDE服务器的实时数据变成整点固定数据
Public Sub setValue()
…
Sheets("电气日志").Select
Range("B7:AE30").Select
Selection.Copy
ActiveWindow.ScrollColumn = 1
Range("B7").Select
Selection.PasteSpecial Paste := xlValues,Operation := xlNone, _ SkipBlanks:= False, Transpose:=False
…
End Sub
3 历史数据库系统
3.1 系统构成
历史数据库系统也是一个独立运行的软件系统,与ABB Freelance2000监控系统通过网络连接。网络通讯遵循UDP(User
温馨提示:以下回复仅供参考,由此给您带来不便敬请谅解。
温馨提示:以下回复仅供参考,由此给您带来不便敬请谅解。
温馨提示:以下回复仅供参考,由此给您带来不便敬请谅解。
温馨提示:以下回复仅供参考,由此给您带来不便敬请谅解。
温馨提示:以下回复仅供参考,由此给您带来不便敬请谅解。
温馨提示:以下回复仅供参考,由此给您带来不便敬请谅解。