wincc访问外部数据库方法研究ir.sia.ac.cn/bitstream/173321/21087/1/wincc访问外部...第39卷...

4
第39卷 第9期 2017-09 【79】 收稿日期:2017-06-16 作者简介:季仲致1988 - ),内蒙古呼和浩特人助理工程师硕士主要从事生产控制系统与机床控制系统的 研究与开发WinCC访问外部数据库方法研究 Research on the method of WinCC accessing external database 季仲致王文洪方国平沙亚红 JI Zhong-zhi, WANG Wen-hong, FANG Guo-ping, SHA Ya-hong 广州中国科学院沈阳自动化研究所分所 智能装备研发中心广州 511458要:某电路板生产企业不同设备的现场数据分别保存在SQL Server、MySQL和Access等三个数 据库中。为了实现WinCC数据监控系统与底层数据的交互,主要讨论了WinCC连接以上三个 数据库并读取数据的方法。测试结果显示:使用WinCC提供的VBS脚本,通过定时执行全局脚 本的方法可以实现对上述三个数据库的实时访问,并可以将最新数据赋值给WinCC的内部变 量。系统运行稳定、可靠,完全可以保证现场数据的实时性和准确性。 关键词:WinCC;VBS脚本;SQL Server数据库;MySQL数据库;Access数据库 中图分类号:TP29 文献标识码:A 文章编号:1009-0134(2017)09-0079-04 0 引言 在某电路板生产企业实施数字化车间改造的过程 中,为其设计了一套基于西门子WinCC软件平台的生 产过程数据监控系统。该系统通过监视、保存和查询现 场数据,达到指导生产的功能。由于现场设备隶属于不 同供货商,故底层数据的保存形式也各不相同:除小 部分为PLC产生的实时数据外,其余的数据均保存在由 供货商提供的数据库中。其中光致车间有4台设备的数 据保存在SQL Server数据库中,钻孔等车间数据保存在 MySQL数据库中,而光致车间的另外两台设备数据保 存在Access数据库中。故如何通过WinCC软件访问SQL ServerMySQLAccess等数据库并将这些数据读取出 来即是本文的研究重点。 1 设计方案 WinCC软件是西门子公司研发的一款主要针对工业 控制的组态软件,具有功能强大、使用灵活方便及开放 性好等优势 [1] 这款软件提供了两种脚本语言:CVBScript [2] 这两种语言都可以通过执行函数的形式来实现特定的功 能。由于VBScript具有运行速度快、调试方便等优势, 因此系统选择VBScript 语言来开发访问外部数据库脚 本。同时,WinCC还提供了两种脚本集成方式:全局脚 本和图形编辑器脚本。为了使系统能自动访问并读取数 据库中的数据,系统采用全局脚本以定时执行的方式访 问外部数据。由于外部数据库的更新频率为1/分钟, 故系统也采用该频率来执行脚本。系统整体设计方案如 1所示。 N Y WinCC 1 系统整体设计方案 2 WinCC访问SQL Server数据库 2.1 SQLSQL Server数据库简介 SQL是英文名称Structured Query Language的缩写,

Upload: others

Post on 25-Jul-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: WinCC访问外部数据库方法研究ir.sia.ac.cn/bitstream/173321/21087/1/WinCC访问外部...第39卷 第9期 2017-09 【79】 收稿日期:2017-06-16 作者简介:季仲致(19

第39卷  第9期  2017-09  【79】

收稿日期:2017-06-16

作者简介:季仲致(1988 -),男,内蒙古呼和浩特人,助理工程师,硕士,主要从事生产控制系统与机床控制系统的

研究与开发。

WinCC访问外部数据库方法研究Research on the method of WinCC accessing external database

季仲致,王文洪,方国平,沙亚红

JI Zhong-zhi, WANG Wen-hong, FANG Guo-ping, SHA Ya-hong(广州中国科学院沈阳自动化研究所分所 智能装备研发中心,广州 511458)

摘 要:某电路板生产企业不同设备的现场数据分别保存在SQL Server、MySQL和Access等三个数

据库中。为了实现WinCC数据监控系统与底层数据的交互,主要讨论了WinCC连接以上三个

数据库并读取数据的方法。测试结果显示:使用WinCC提供的VBS脚本,通过定时执行全局脚

本的方法可以实现对上述三个数据库的实时访问,并可以将最新数据赋值给WinCC的内部变

量。系统运行稳定、可靠,完全可以保证现场数据的实时性和准确性。

关键词:WinCC;VBS脚本;SQL Server数据库;MySQL数据库;Access数据库

中图分类号:TP29 文献标识码:A 文章编号:1009-0134(2017)09-0079-04

0 引言

在某电路板生产企业实施数字化车间改造的过程

中,为其设计了一套基于西门子WinCC软件平台的生

产过程数据监控系统。该系统通过监视、保存和查询现

场数据,达到指导生产的功能。由于现场设备隶属于不

同供货商,故底层数据的保存形式也各不相同:除小

部分为PLC产生的实时数据外,其余的数据均保存在由

供货商提供的数据库中。其中光致车间有4台设备的数

据保存在SQL Server数据库中,钻孔等车间数据保存在

MySQL数据库中,而光致车间的另外两台设备数据保

存在Access数据库中。故如何通过WinCC软件访问SQL

Server、MySQL及Access等数据库并将这些数据读取出

来即是本文的研究重点。

1 设计方案

WinCC软件是西门子公司研发的一款主要针对工业

控制的组态软件,具有功能强大、使用灵活方便及开放

性好等优势[1]。

这款软件提供了两种脚本语言:C和VBScript[2]。

这两种语言都可以通过执行函数的形式来实现特定的功

能。由于VBScript具有运行速度快、调试方便等优势,

因此系统选择VBScript语言来开发访问外部数据库脚

本。同时,WinCC还提供了两种脚本集成方式:全局脚

本和图形编辑器脚本。为了使系统能自动访问并读取数

据库中的数据,系统采用全局脚本以定时执行的方式访

问外部数据。由于外部数据库的更新频率为1次/分钟,

故系统也采用该频率来执行脚本。系统整体设计方案如

图1所示。

N

Y

WinCC

图1 系统整体设计方案

2 WinCC访问SQL Server数据库

2.1 SQL及SQL Server数据库简介

SQL是英文名称Structured Query Language的缩写,

Page 2: WinCC访问外部数据库方法研究ir.sia.ac.cn/bitstream/173321/21087/1/WinCC访问外部...第39卷 第9期 2017-09 【79】 收稿日期:2017-06-16 作者简介:季仲致(19

【80】  第39卷  第9期  2017-09

对应的中文解释为结构化查询语言。美国国家标准协会

的规定:SQL是关系数据库的标准语言。因此大部分关

系数据库都使用SQL作为其数据库管理语言[3,4]。

SQL Server是微软公司开发并且推广的一款大型关

系数据库系统,它为用户提供了一个安全、可靠、易管

理的数据库平台。这是一种高性能的关系数据库管理系

统,设计结构为客户端/服务端形式,支持企业级的应

用程序和多个不同的开发平台,可以满足不同类型的数

据库解决方案[5]。

2.2 WinCC与SQL Server数据库的数据交互

本系统用到ADO(ActiveX Data Object)即ActiveX

数据对象的两个主要独立对象:Connect ion对象和

Recordset对象。系统通过Connection对象与数据库建立

连接,而通过Recordset对象与数据库里的具体数据表进

行数据交换。

1)连接SQL Server数据库

下面的VBS代码用于建立WinCC与SQL Server

的连接。其中conn和StrNew为全局变量,用于创建

Connection和RecordSet的对象;Persist Security Info的

值为真表示建立与数据库连接受保存安全信息;Initial

Catalog表示conn要打开的数据库为gzsia;Data Source表

示数据库的IP地址,若要连接本地数据库改为本地IP地

址即可。另外conn.State表示数据库连接状态,当其值

等于1时,表示数据库连接成功。

Set conn=CreateObject("Adodb.connection");

Set StrNew=CreateObject("Adodb.RecordSet");

C o n n . C o n n e c t i o n S t r i n g =

"Provider=SQLOLEDB.1;Persist Security Info=True;User

ID=sa;

Initial Catalog=gzsia;Data Source=192.168.8.202

;Password=gzsia";

Conn.Open;

If conn.State <> 1 Then

MsgBox "很遗憾,没有连上数据库!", vbOKOnly,

"系统提示";

End If

2)执行SQL语句

下面的VBS脚本代码用于完成执行SQL的功能。其

中sql表示要被执行的SQL语句,该句SQL语句表示:当

EquipCode等于1001时,根据First参数倒叙排列gz_EL_

Jobs表格,选取表中第一行Rejected参数并将其命名为

newtital。在打开数据集的过程中,游标类型选择静态

游标来反映第一次打开游标时表中数据的状态;加锁类

型选择缺省上锁类型,这种方式允许多个用户同时读取

数据,但不能改变数据。

sql = "Select top 1 Rejected as newtital FROM [dbo].

[gz_EL_Jobs] where EquipCode=1001 order by First

desc";

StrNew.Open sql,Conn,1,1;

3)WinCC读取数据库数据

下面的VBS脚本代码用于完成读取SQL Server中的

数据并将数据赋值到WinCC内部变量等功能。首先将找

到的newtital中的值赋给变量buffer_6_01(Rejected)。再

将其值写入WinCC的6_01_ Rejected变量中。

buffer_6_01(Rejected) = StrNew.Fields("newtital").

Value;

HMIRuntime.Tags("6_01_ Rejected ") .Wri te

buffer_6_01(Rejected);

2.3 连接测试

WinCC读取SQL Server数据测试结果如图2所示。

其中图2(a)为#1STR曝光机产生的最新一条信息中的部

分数据,图2(b)为WinCC读取SQL Server数据库并显示

出来的数据。

(a) SQL Server数据查询

(b) WinCC读取SQL Server数据显示

图2 WinCC读取SQL Server测试

3 WinCC访问MySQL数据库

3.1 MySQL数据库简介

MySQL是一个由瑞典MySQL AB公司开发的小

Page 3: WinCC访问外部数据库方法研究ir.sia.ac.cn/bitstream/173321/21087/1/WinCC访问外部...第39卷 第9期 2017-09 【79】 收稿日期:2017-06-16 作者简介:季仲致(19

第39卷  第9期  2017-09  【81】

型关系型数据库管理系统。相比于oracle、DB2和SQL

Server等大型数据库,MySQL具有速度快、体积小、成

本低和代码开源等优势,而且MySQL可以工作在不同

平台上,支持C、C++、Java和PHP等多种开发语言。

另外,其使用的核心线程是完全多线程,并支持多处理

器。My SQL数据库的优势明显但劣势也较为突出,相

对其他大型数据库,其安全系统存在非标准化、规模小

及功能有限等不足。但是针对个人用户、中小型数据系

统或小规模网站来说,MySQL在保证数据库完整功能

的前提下,大大降低了开发和后期的运维成本,所以针

对这类客户来说,MySQL数据库的使用量是相当广泛

的[6]。

3.2 WinCC通过ODBC连接MySQL数据库

ODBC(Open Database Connectivity)中文译为开

放数据库连接,是微软公司提出的一个数据库访问接

口标准,也是开放服务结构(WOSA,Windows Open

Services Architecture)中有关数据库的一个组成部分。

它提供了一组标准API接口使用户可以根据不同需求访

问数据库文件[7]。

WinCC要想访问MySQL数据库,就必须通过ODBC

管理器注册一个ODBC数据源,管理器根据数据源提供

的位置、类型及MySQL的ODBC驱动程序等信息,建

立起ODBC与MySQL数据库的联系。通常来说,在建

立ODBC与MySQL的连接后,可以通过SQL Server访问

MySQL数据库,也可以通过脚本直接访问数据库。为

了能直观显示测试结果,本文选择通过SQL Server来访

问MySQL数据库。

1)建立ODBC数据源

在控制面板的管理工具中的数据源(ODBC)选项

中,选择添加名为“MySQL ODBC 5.3 Unicode Driver”

的数据源驱动程序,在填写完成要连接数据库的基本信

息后,点击Test,若弹出“Connection Successful”的字

样表示连接成功,如图3所示。

图3 MySQL建立ODBC数据源界面

2)通过SQL Server访问MySQL数据库

由于是通过SQL Server访问MySQL数据库,故VBS

脚本连接的是SQL Server数据库。所以,除SQL语句

外,连接数据库及WinCC读取数据库数据等部分的代码

均与WinCC访问SQL Server数据库相同。

通过SQL Server访问MySQL数据库的SQL语句如下

所示。其中,OpenQuery是SQL Server用来与其他Server

交互的一种技术,通过OpenQuery,SQL Server可以直

接访问其他数据库资源;ZK_MYSQL为连接的服务端

名。该句SQL语句表示:数据来源为ZK_MYSQL服务

端;当mt_console_nu等于1并且aw_run_hit不等于0时,

根据aw_begin_dt倒叙排列Easy_work_201705表格,选取

第一行aw_run_hit参数。

sql = "SELECT * FROM OPENQUERY(ZK_

MYSQL,

'select aw_run_hit from Easy_work_201705

where mt_console_nu = 1 and aw_run_hit <> 0 order

by aw_begin_dt desc limit 1')";

3.3 连接测试

WinCC读取MySQL数据测试结果如图4所示。其中

图4(a)为钻孔设备产生的最新一条信息中的部分数据,

图4(b)为WinCC通过SQL Server读取MySQL数据库并显

示出来的数据。

(a) MySQL数据查询

(b) WinCC读取MySQL数据显示

图4 WinCC读取MySQL测试

Page 4: WinCC访问外部数据库方法研究ir.sia.ac.cn/bitstream/173321/21087/1/WinCC访问外部...第39卷 第9期 2017-09 【79】 收稿日期:2017-06-16 作者简介:季仲致(19

【82】  第39卷  第9期  2017-09

4 WinCC访问Access数据库

4.1 Access数据库简介

Microsoft Access数据库是包含在微软公司Office系

统中的一套小型关系数据库软件,用户可以通过该软件

完成储存、查询和分析数据及连接其他大型数据库的

功能。Access数据库的工作界面与Office的其他软件相

似,故相比于其他数据库软件Access数据库具有更好的

用户体验。同时,该数据库不仅可以有效地组织与管

理、共享与开发应用数据库信息,而且其提供的数据库

对象可以使大部分用户不用编写代码就能设计出一个功

能完善的桌面数据库应用系统,这无疑成为小规模数据

用户的较好选择[8,9]。

4.2 WinCC通过ODBC连接Access数据库

1)同步Access数据库

相比于访问局域网内的Access数据库,WinCC连接

本地数据库要容易的多,故先将两台设备的Access数据

库同步至本地。系统使用GoodSync软件同步设备端的

Access数据库,如图5所示,其同步周期设置为每分钟

一次。

图5 同步Access数据库

2)连接并读取Access数据库

若要连接Access数据库同样要通过建立ODBC数据

源的方式实现,具体实现方法与MySQL数据库建立数

据源的方法相同,故不再赘述。WinCC连接Access数据

库、执行SQL语句和读取变量的方法与SQL Server数据

库的相关操作与设置基本相同,唯一的不同是两个数

据库的连接字符串有差异,下面的VBS脚本即为连接

Access数据库的连接字符串。

Conn.ConnectionString = “Provider=Microsoft.ACE.

OLEDB.12.0;Data Source=Production.accdb”;

4.3 连接测试

WinCC读取Access数据测试结果如图6所示。其中图

6(a)为#1LED曝光机产生的最新一条信息中的部分数据,

图6(b)为WinCC读取Access数据库并显示出来的数据。

(a) Access数据查询

(b) WinCC读取Access数据显示

图6 WinCC读取Access测试

5 结束语

本文通过VBS脚本,将WinCC与SQL Server、

MySQL及Access等三个数据库进行连接,并使其读取

存储在各数据库中的底层设备的实时数据。通过测试显

示,这种连接数据库并读取数据的方法可以完全满足现场

对于底层数据的实时性、准确性和稳定性的要求,为进一

步设计数字化车间、构建信息化平台、实现自动化生产以

及完善现代化的工厂管理体系提供了重要的数据支撑。

参考文献:

[1] 西门子(中国)有限公司.深入浅出西门子WinCCV6[M].北京:

北京航空航天大学出版社,2004.

[2] 杨洋.WinCC脚本在MES系统中的应用[J].制造业自动化,2016,

38(6):13-14.

[3] 闫旭.浅谈SQL Server数据库的特点和基本功能[J].价值工程,

2012,(22):229-231.

[4] 姜黎莉,姜巍巍.Access数据库与SQL Server数据库[J].知识经

济,2010,(04).

[5] 颜昌斌.基于和的实验数据库系统研究[D].武汉:武汉理工大

学,2006.

[6] 王威.My SQL数据库源代码分析及存储引擎的设计[D].南京:南

京邮电大学,2012.

[7] 杨少霞.关于WinCC与Oracle连接以及数据交互的研究与应用

[J].制造业自动化,2016,38(9):146-148.

[8] 喻济兵.基于Access数据库信息管理系统的设计[J].船电技术,

2011,(4):57-59.

[9] 崔再惠.Access数据库与SQL Server数据库主要功能的比较[J].

鞍山师范学院学报,2009,(6):51-52.