自动化控制技术-Wincc中VBS读写SQLServer数据库(三)

【摘要】本文全面介绍了在Wincc中如何通过使用VBS脚本对Wincc系统数据库、变量记录历史记录、报警记录及审计追踪数据库进行读操作。

关键词】TIA;Wincc;自控;VBS;SQL Server;MSFlexGrid;Microsoft;Connectivity

一、Wincc数据库简介

在西门子Wincc组态软件中,软件组态信息的存储以及项目中使用到的历史数据的存储,采用的数据库为SQL Server数据库。从Wincc 6.2版本以后,随着数据库系统安全策略的提高,软件组态信息的存储以及历史数据的存储是将数据通过压缩的形式进行存储,即加密形式存储。

这样一来,如果想访问Wincc的数据,需要Wincc系统中增加一套Connectivity授权(工业数据桥)。对于历史数据存储来讲,在数据库中存储的形式和一般的数据库存储有很大的不同。VBS通过Connectivity访问历史数据和标准的SQL语法也有有很大不同。

二、软件环境

1、操作系统:Win7 64位旗舰版

2、Wincc V7.4 SP1

3、Microsoft SQL Server 2014

4、Microsoft Office 2007

三、准备工作

1、在Wincc中建立四个内部变量:“Alarm1”,“Alarm2”,“Alarm3”,“Alarm4”。四个变量数据类型设置成浮点型“二进制变量”。

2、打开报警记录,建立四条报警信息文本,分别对应如下

3、模拟仿真程序,产生报警信息,结果如下图

四、Wincc中数据存储结构

WinCC变量归档数据是以压缩的形式存储在数据库中,需要通过WinCC OLE-DB才能够解压并读取这些数据

WinCC运行数据并不是存在一个数据库中,而是分散在多个小数据库当中。使用WinCC OLE-DB能够透明地访问这些归档数据

五、Wincc读取历史报警数据

在读取数据前需要打开数据库,在进行查询工作,查询工作完成后,需要关闭数据库

1、打开项目运行数据库

Wincc中数据库以“@DatasourceNameRT”名称作为访问对象

@DatasourceNameRT为系统内部变量,内容是当前项目的数据库接口名称

2、查询数据

标准查询语句语法为:

ALARMVIEWEX:SELECT * FROM [WHERE ...., optional]

参数如下表格描述

该例中的SQL查询语句(查询2018-07-25 13:00:00至2018-07-25 14:00:00时间段内的报警数据)为:

"ALARMVIEWEX:SELECT * FROM ALGVIEWEXCHS WHERE DateTime>'2018-07-25 13:00:00' AND DateTime

注意:数据库中历史数据存储的时间为格林威治时间,与北京时间有8个小时时差。在编写SQL语句时,需将北京时间转换成格林威治时间。

3、关闭数据库

六、历史报警集结构

查询结果作为记录集返回。下述表格描述了报警日志的记录集的结构

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180727G19DEQ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券