APP下载

WinCC访问外部数据库方法研究

2018-01-18

制造业自动化 2017年9期
关键词:脚本数据源语句

(广州中国科学院沈阳自动化研究所分所 智能装备研发中心,广州 511458)

0 引言

在某电路板生产企业实施数字化车间改造的过程中,为其设计了一套基于西门子WinCC软件平台的生产过程数据监控系统。该系统通过监视、保存和查询现场数据,达到指导生产的功能。由于现场设备隶属于不同供货商,故底层数据的保存形式也各不相同:除小部分为PLC产生的实时数据外,其余的数据均保存在由供货商提供的数据库中。其中光致车间有4台设备的数据保存在SQL Server数据库中,钻孔等车间数据保存在MySQL数据库中,而光致车间的另外两台设备数据保存在Access数据库中。故如何通过WinCC软件访问SQL Server、MySQL及Access等数据库并将这些数据读取出来即是本文的研究重点。

1 设计方案

WinCC软件是西门子公司研发的一款主要针对工业控制的组态软件,具有功能强大、使用灵活方便及开放性好等优势[1]。

这款软件提供了两种脚本语言:C和VBScript[2]。这两种语言都可以通过执行函数的形式来实现特定的功能。由于VBScript具有运行速度快、调试方便等优势,因此系统选择VBScript语言来开发访问外部数据库脚本。同时,WinCC还提供了两种脚本集成方式:全局脚本和图形编辑器脚本。为了使系统能自动访问并读取数据库中的数据,系统采用全局脚本以定时执行的方式访问外部数据。由于外部数据库的更新频率为1次/分钟,故系统也采用该频率来执行脚本。系统整体设计方案如图1所示。

图1 系统整体设计方案

2 WinCC访问SQL Server数据库

2.1 SQL及SQL Server数据库简介

SQL是英文名称Structured Query Language的缩写,对应的中文解释为结构化查询语言。美国国家标准协会的规定:SQL是关系数据库的标准语言。因此大部分关系数据库都使用SQL作为其数据库管理语言[3,4]。

SQL Server是微软公司开发并且推广的一款大型关系数据库系统,它为用户提供了一个安全、可靠、易管理的数据库平台。这是一种高性能的关系数据库管理系统,设计结构为客户端/服务端形式,支持企业级的应用程序和多个不同的开发平台,可以满足不同类型的数据库解决方案[5]。

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

本系统用到ADO(ActiveX Data Object)即ActiveX数据对象的两个主要独立对象:Connection对象和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时,表示数据库连接成功。

2)执行SQL语句

下面的VBS脚本代码用于完成执行SQL的功能。其中sql表示要被执行的SQL语句,该句SQL语句表示:当EquipCode等于1001时,根据First参数倒叙排列gz_EL_Jobs表格,选取表中第一行Rejected参数并将其命名为newtital。在打开数据集的过程中,游标类型选择静态游标来反映第一次打开游标时表中数据的状态;加锁类型选择缺省上锁类型,这种方式允许多个用户同时读取数据,但不能改变数据。

3)WinCC读取数据库数据

下面的VBS脚本代码用于完成读取SQL Server中的数据并将数据赋值到WinCC内部变量等功能。首先将找到的newtital中的值赋给变量buffer_6_01(Rejected)。再将其值写入WinCC的6_01_ Rejected变量中。

2.3 连接测试

WinCC读取SQL Server数据测试结果如图2所示。其中图2(a)为#1STR曝光机产生的最新一条信息中的部分数据,图2(b)为WinCC读取SQL Server数据库并显示出来的数据。

3 WinCC访问MySQL数据库

3.1 MySQL数据库简介

MySQL是一个由瑞典MySQL AB公司开发的小型关系型数据库管理系统。相比于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数据库并显示出来的数据。

图4 WinCC读取MySQL测试

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数据库并显示出来的数据。

图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.

猜你喜欢

脚本数据源语句
酒驾
安奇奇与小cool 龙(第二回)
重点:语句衔接
一种多源数据融合过程中的实体关联性计算方法
利用属性集相关性与源误差的多真值发现方法研究
自动推送与网站匹配的脚本
Web 大数据系统数据源选择*
我喜欢
装备保障数据集成平台
作文语句实录