上位机监控软件中的数据库操作

时间:2022-09-21 10:10:35

上位机监控软件中的数据库操作

【摘 要】本文结合工程实例,采用VB设计上位机的外挂界面和数据库管理平台;后台数据库软件采用ACCESS 2003;上位机与PLC之间采用ROCKWELL的RSLink作为OPC协议。本设计中将ACCESS 2003与PLC结合起来,用户可方便地在上位机中存储、查看和打印下位机(PLC)中的信息,监视PLC的工作状态,并制作生产报表。

【关键词】上位机;ACCESS2003;PLC;报表

1.引言

本系统是一个粉料加料系统,分为六个部分:加料区、一号粉料区、二号粉料区、三号粉料区、混合搅拌区及下料包装区。其加料区由一个加料罐和一些泵和阀组成;一号粉料区由四个粉料罐和一个称量罐及泵和阀组成;二号粉料区同一号粉料区;三号粉料区同一号粉料区;混合搅拌区由混合罐及内部搅拌浆组成。根据实际情况需要完成下列功能。

功能一:监视功能。将现场设备的信息,如阀的位置,变频器的电流功率,储罐内的液位,称重罐的重量等显示在上位机上,可以实时的监视现场的情况,并可以手动控制单个设备,比如开启一个阀活电机等,并将相应的信息存入数据库,使其能看到历史曲线及历史事件与报警的记录。

功能二:管理功能。在上位机上能储存不定量配方,可以新建修改配方,也可以删除不用的配方,根据生产的需要选择不同的配方,系统将根据该配方的要求运行。

功能三:报表功能。由于批次生产的特殊性,一般需查看打印不同的报表,以供生产管理,这里需要日报,月报,按配方查询,成分统计,配方统计等。

2.系统的硬件设计

该系统的硬件由1台上位机(电脑),1组PLC通过以太网连接上位机,另通过以太网配有两个触摸屏连接PLC,供现场操作。

3.VB设计上位机的外挂界面和数据库管理平台

3.1 上位机与PLC之间的通信

本设计中,上位机与PLC之间的通信协议有两种:一种是用来实现监视功能的。用INTOUCH作为上位机软件,通过ROCKWELL的RSLINX作为OPC通讯连接上位机与PLC,这样就能把PLC的点与上位机的点一一对应起来,在上位机上就能监视控制现场的设备了,这个在这里就不做具体说明。

另一种是用来实现管理的,即把上位机的配方指令下达给PLC,我们选择一个合适的配方,按下确定键后,PLC就会收到该配方的所有信息,并将根据此配方进行工作。这个功能由于设计很多数据的上下载及数据库的应用,用上位机软件自身的功能很难实现,所以采用了一个外挂的VB程序作为实现该功能的中介,这里采用了DDE协议,使得VB界面中的数据下载到PLC中,代码如下:

start_recipe.Text=1

start_recipe.LinkTopic="RSLinx|menniu"

start_recipe.LinkItem="Weigh_Start,L1,C1"

start_recipe.LinkMode=2

start_recipe.LinkPoke

start_recipe.LinkMode=0

start_recipe.Text=0

start_recipe.LinkTopic="RSLinx|menniu"

start_recipe.LinkItem="Weigh_Start,L1,C1"

start_recipe.LinkMode=2

start_recipe.LinkPoke

start_recipe.LinkMode=0

Text1.Text=Combo1.Text

Text1.LinkTopic="RSLinx|menniu"

Text1.LinkItem="Recipe_Name"

Text1.LinkMode=2

Text1.LinkPoke

Text1.LinkMode=0

3.2 上位机与数据库之间的通信

(1)INTOUCH与数据库间的通信:在一定的条件下,需要从上位机上把特定的数据传到数据库中,作为报表的数据源,这时就要建立上位机(INTOUCH)与数据库(ACCESS)之间的通信。本设计中,InTouch通过ODBC和Access进行数据交互,通过InTouch SQL访问管理器将InTouch的数据记录到关系数据库中。具体的步骤如下:首先,创建Microsoft Access数据库并配置ODBC数据源。先在ACCESS数据库中建立一个表,将需要记录的数据分别列到每列中,分配好数据类型,记住数据库名和表名。然后配置ODBC数据源,新建一个数据源,选择刚刚建的数据库,测试成功后就结束了这步。

然后,配置InTouch SQL访问管理器。首先在InTouch标记名字典创建和Access列名相同的标记名,其类型也要一致;然后编写连接与断开数据库脚本;最后,启动InTouch SQL访问管理器,建立绑定列表BlindedList,绑定列表把InTouch中的标记名和数据库中表里的列名映射起来。其连接与断开数据库脚本如下:

连接数据库:ResultCode=SQLConnect(ConnectionId,"DSN=数据源名");

断开数据库:ResultCode=SQLDisconnect(ConnectionId);最后,验证数据通信是否正常。

(2)VB与数据库的通信:由于客户需要增加减少配方,Intouch又不好做这么麻烦的Recipe,所以用VB做一个外挂程序与数据库通讯,专门用来做配方管理。这里使用OLE DB接口连接VB与数据库,首先在VB的界面上加一个Adodc的控件,这个控件就是一个数据通讯的接口,在需要采集数据的时候,写下下面的脚本:

Adodc1.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=G:\VBNEW\mengniu.mdb;Persist Security Info=False"(通过OLEDB连接数据库)

Adodc1.RecordSource="select*from product where[product code]='"& Combo1.Text &"'"(通过select语句在数据库中查找记录)

这样,数据库就能和VB连接起来了。

3.3 数据操作的实现

此配方管理由六个部分组成,分别为成分配置,罐子配置,配方管理,生产,报表,备料;其中成分配置,罐子配置,配方管理是需要用户名及密码才可以进入,具有一定的保密性。生产,报表,备料是一般操作员所要使用的。

点击主页上的“配方管理”按钮,输入准确的用户名和密码,就能进入罐子配置窗口。当一打开该窗口的时候,列表中显示的是当前所有配方的大概信息,从产品代码的下拉框中选择一个配方代码,该窗口将显示该配方的详细信息,包括该配方的成分配比,需要的总重,混合时间等等,VB的实现过程是这样的:

Adodc1.Visible=False

Adodc1.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=G:\VBNEW\mengniu.mdb;Persist Security Info=False"

Adodc1.RecordSource="select*from product"

Adodc1.Refresh

Set DataGrid1.DataSource=Adodc1

Dim b(0 To 100)As String

Dim d As Boolean

Adodc1.Recordset.MoveFirst

For i=1 To Adodc1.Recordset.RecordCount

b(i)=Adodc1.Recordset.Fields("product code")

For j=1 To i-1

If b(i)=b(j)Then

d=1

End If

Next j

If d=0 Then

Combo1.AddItem Adodc1.Recordset.Fields("product code")

End If

d=0

Adodc1.Recordset.MoveNext

Next i

3.4 报表功能的实现

在主页上点击“报表”,出现如下窗口。

在这里可以查看日报,月报,并可以通过分类查询各种数据。这里使用VB的DataReport做的报表。

首先添加一个Data Environment并打开它,然后鼠标右键单击Connection1,选择属性后弹出一数据库连接属性窗体选择"Microsoft Jet 4.0 OLE DB Provider",单击"下一步",选择所须要的数据库确定。

然后鼠标右键单击Connection1,选择"Add Command",Data Environment就创建了一个Command1,然后鼠标右键单击Command1,选择属性后弹出一Command1属性窗体,在Database Object属性中选择Table,在Object中选择Employee,然后单击Command1属性窗体中的Grouping,然后复选"Group Command Object",在Fields in中双击"TitleOfCourtesy",然后确定(即按TitleOfCourtesy分组)。

添加一报表名为DataReport1,在DataReport1的DataSource属性中填入"DataEnvironment1",在DataMember中填入"Command1_Grouping",然后鼠标右键单击报表窗体选择Retrieve Structure,并确认这样就定义了一个报表结构。在报表的"Command1_Grouping_Header"一栏中摆上一RptTextBox控件,并设置DataField属性为"TitleOfCourtesy",在报表的"Command1_Detail"一栏中摆上三个RptTextBox控件,设置DataField属性分别为"EmployeeID","LastName"和"FirstName",并将其DataMember属性设置为"Command1"。

双击报表,在代码窗体中输入以下代码:

Private Sub DataReport_Initialize()

Dim strShape As String

Dim cnnReport As New ADODB.Connection

Dim rstReport As New ADODB.Recordset

strShape="SHAPE{SELECT*FROM`batch_recipe`WHERE[STOP TIME]BETWEEN #"& Form5.Text5 &"# AND #"& Form5.Text6 &"#}AS Command1 COMPUTE sum(Command1.[TARGET QUANTITY])as[TARGET QUANTITY],sum(Command1.[REAL QUANT])as[REAL QUANT],Command1 BY'INGREDIENT'"

Set cnnReport=New ADODB.Connection

With cnnReport

.Provider="MSDataShape.1"

.Open"Data Source=G:\VBNEW\mengniu.mdb;Data Provider=Microsoft.Jet.OLEDB.4.0"

End With

Set rstAgmRpt=New ADODB.Recordset

With rstAgmRpt

Set.ActiveConnection=cnnReport

.CursorLocation=adUseClient

.CursorType=adOpenStatic

.LockType=adLockReadOnly

.Source=strShape

.Open

End With

Set Me.DataSource=rstAgmRpt

End Sub

这样,就能做出想要的任何格式的报表了。

4.结束语

在本设计中,使用VB与数据库的操作实现更多的单纯利用上位机软件无法实现的功能,特别是利用VB的DataReport功能实现了格式多样报表。

上一篇:漫“画”公考面试 下一篇:提高中职计算机应用专业社会培训力的一些思考