APP下载

注入站控制系统基于数据库的报表解决方案研究

2020-01-20贺明庆

中国设备工程 2020年13期
关键词:母液数据源控件

贺明庆

(大庆油田第一采油厂仪表安装维修大队,黑龙江 大庆 163453)

1 工艺流程及主要测控点

目前,油田配注系统普遍采用“集中配置,分散注入”的工艺流程,即一个配置站对应多个注入站。其过程是在配置站将化学药剂与清水按照一定比例混合,制成符合浓度要求的母液,母液经过熟化后,由外输泵输送至各个注入站,在注入站按照每口井的配比方案加入清水,然后,注入井下。

注入站工艺流程为:上游配置站输送来的母液进入母液储罐,经柱塞泵增压后被输送到母液汇管中,再经过单井母液调节阀进入混合器。注水站来的清水经过单井清水调节器进入混合器,在这里与母液充分混合后被注入井下。

注入站的测控参数主要包括母液储罐液位、柱塞泵进出口压力、单井压力、单井清水流量等。

2 基本原理

采用“VBA+数据库”的方案实现报表查询。VBA(Visual Basic for Application)是新一代标准宏语言,是基于Visual Basic for Windows发展而来的,语言简单易学,功能强大。

VBA是VB的应用程序版本,必须依赖于已有的应用程序,不能独立运行。目前,WIinCC、FactoryTalk View Studio、Ifix等主流组态软件都支持VBA编程。

具体过程是利用组态软件SE的数据记录功能建立数据记录模型,将需要的数据采集并存储在ODBC指定的数据库中。当操作员查询报表时,选择日期后,按下查询按钮,即执行VBA代码,将数据库中的数据读出来,并写入报表模板中,生成指定日期的生产数据报表。

3 报表开发过程

3.1 添加HMI标签

展开HMI服务器的“HMI标签”,右键点击“标签”,点击“打开”,在打开的标签窗口中点击“新建”,在标签名称栏中输入标签名“DayReport_Date”,类型选择“字符串”,数据源类型选择“内存”,点击“接受”,保存标签。

3.2 添加ActiveX控件引用

ActiveX控件是一种基于COM接口的控件,通常不能独立使用,只能在宿主程序中运行,支持COM接口规范的编程环境均可使用它。在报表查询画面中,需要使用日历控件,必须提前在“Visual Basic编辑器”中添加ActiveX控件引用。打开SE,点击“视图”,选择“Visual Basic编辑器”。在打开的窗口中点击“工具”,选择“引用”,在列表栏中勾选“MicroSoft Calender control 2007”,点击“确定”,保存设置。

3.3 创建并组态画面

打开SE的应用项目浏览器窗口,展开HMI服务器的“图形”,右键点击“显示”,选择“新建”,创建画面“Report”。打开画面“Report”,添加日历控件、按钮、文本、字符串等对象。将日历控件的“Value”属性及字符串的表达式属性与“DayReport_DATE”标签相关联,并设置字体、颜色等其他相关属性。

3.4 设计报表模板

根据生产岗位的需求,采用Micosoft Office Excel 2007设计报表模板“日报表.xlsx”。并将报表模板文件存储在“D:模板”路径下备用(此路径应与VBA代码中指定的路径一致)。

3.5 设置数据记录

展开HMI服务器的“数据记录”,右键点击“数据记录模型”,点击“新建”,打开数据记录模型的设置窗口。点击“设置”标签,选择“ODBC数据库”,点击“ODBC数据源”;选择“系统数据源”标签,点击“新建”;选择“系统数据源”,点击“下一步”;选择“Micosoft Access Driver(⋆.mdb ⋆.accdb)”,点击“完成”;弹出的“ODBC Micosoft Access 安装”窗口,在“数据源名”栏中输入“Report”,点击“创建”按钮,选择保存数据库的位置,在“数据库名”栏中输入“Report”,点击“确定”。点击“创建表”标签,在数据库中创建表“FloatTable”“StringTable”“TagTa ble”。点击“路径”标签,勾选“启用ODBC备用路径”。点击“文件管理”标签,设置清除ODBC数据库中保存旧记录的天数。点击“记录触发器”标签,勾选“周期性”,根据需求,在“间隔”栏中设置数据采集周期。点击“模型中的标签”标签,添加需要记录的数据标签。

3.6 编制 VBA程序

(1)通用中代码

Option Explicit

Public MyTagGroup As TagGroup

Dim sDateTag As Tag

Public gS_DBPath As String

Public gO_Connection As ADODB.Connection

(2)页面初始化代码

Private Sub Display_AnimationStart()

gS_DBPath = “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:dataDatabase1.accdb;”

Set gO_Connection = New ADODB.Connection

gO_Connection.CursorLocation = adUseClient

gO_Connection.Open gS_DBPath

If MyTagGroup Is Nothing Then

Set MyTagGroup=Application.CreateTagGroup(Me.AreaName)

MyTagGroup.Add “DayReport_DATE”

Set sDateTag = MyTagGroup.Item(“DayReport_DATE”)

If sDateTag.Value = “” Then

sDateTag.Value = Format(Now, “yyyy-mm-dd”)

End If

End If

End Sub

(3)查询按钮部分代码

Private Sub 按钮 3_Released()

Dim sSql As String

Dim rsData As New ADODB.Recordset

Dim i As Integer

Dim ExcelID As Excel.Application

Dim rptName As String

Dim sDate As String

If sDateTag.Value =“”Then

sDate = Format(Now, “yyyy-mm-dd”)

Else

sDate = sDateTag.Value

End If

Set ExcelID = New Excel.Application

ExcelID.Workbooks.Open (“d: 模 板 日 报 表.xlsx”)

ExcelID.Worksheets(1).Activate

sSql = “select ⋆ from tagtable inner join floattable on tagtable.tagindex = floattable.tagindex where tagtable.tagName like ‘%MBFT%ACC%’ and floattable.dateandtime in (select min(dateandtime) from floattable where floattable.dateandtime between #” +CStr(DateAdd(“d”, -1, sDate)) + “ 10:00:00# and #+ CStr(DateAdd(“d”, -1, sDate)) + “ 10:05:00#)order by tagtable.tagindex desc”

rsData.Open sSql, gO_Connection, adOpenKeyset,adLockReadOnly

For i = 0 To rsData.RecordCount - 1

ExcelID.Cells(i + 7, 11) = Format(rsData.Fields(“val”), “###0.00”) ‘ 将 结 果 集 记 录 写 入Excel

rsData.MoveNext

Next i

rsData.Close: Set rsData = Nothing

ExcelID.DisplayAlerts = False

rptName =“D:data”+Format(DateAdd(“d”,1, sDate), “yyyy-mm-dd”)+“日报表 .xlsx”

ExcelID.ActiveWorkbook.SaveAs rptName

ExcelID.ActiveWorkbook.Close

ExcelID.Quit: Set ExcelID = Nothing

End Sub

4 结语

采用“VBA+数据库”的方式实现报表功能,比单纯使用VBA开发报表的方式更为简单灵活,但应当注意的是,采用Office Access数据库,当数据记录达到数万条时,查询效率较低,有时需要一两分钟,甚至出现系统无响应的情况。为了提高查询效率,也可以采用Micosoft SQL数据库,原理相同,只需对数据库连接的代码略作改动,并添加相应的ODBC数据源即可,此处不再赘述。

猜你喜欢

母液数据源控件
贮存温度对醚类聚羧酸减水剂性能的影响研究
基于.net的用户定义验证控件的应用分析
含锂母液膜过滤浓缩实验研究
一种多源数据融合过程中的实体关联性计算方法
分子筛绿色化合成技术的开发
利用属性集相关性与源误差的多真值发现方法研究
关于.net控件数组的探讨
Web 大数据系统数据源选择*
新安化工“草甘膦母液资源化利用技术开发及产业化”项目通过验收
装备保障数据集成平台