版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
访问WinCC归档数据库的方法WinCC归档数据库介绍WinCC的历史工艺数据和报警消息保存在SQLServer数据库,数据以分段和压缩形式储存,不方便直接通过SQL去读取,用WinCCOLEDBProvider访问这些数据时会自动合并分段并解压缩数据。安装ConnectivityPackWinCCOLEDBprovider由WinCC的ConnectivityPack选件提供,在安装WinCC时需要安装ConnectivityPack。在提供数据的WinCC的计算机需安装ConnectivityPackserver,读取数据的计算机上安装ConnectivityPackclient,可以在计算机上同时安装ConnectivityPackserver和ConnectivityPackclient。在SQLServer中通过链接服务器访问归档数据库创建链接服务器安装了WinCC的计算机中,启动WinCC项目时会自动创建链接服务器。在未安装WinCC的计算机需要手动创建链接服务器。打开SQLServerManagementStudio,在对象资源管理器中,展开“服务器对象”,右键单击“链接服务器”,然后单击“新建链接服务器”。如下图填入链接服务器信息,数据源(DataSource)中填入WinCC服务器的数据库完整实例名,目录(Catalog)中填入归档数据库名。使用OPENQUERY查询连接服务器查询链接数据库使用OPENQUERY,传递给OPENQUERY查询语句不同于SQL,是WinCC的特定查询语句,可通过变量ID或变量名查询。如下:select
*from
openquery(LnkRtDb_WinCCOLEDB,'Tag:R,1,''0000-00-0001:00:00.000'',''0000-00-0000:00:00.000''')使用变量ID查询:使用变量名查询:在SQLServer中通过OPENDATASOURCE访问归档数据库通过OPENDATASOURCE()函数可直接查询OLEDB数据源,语法如下:SELECT
*FROM
OPENDATASOURCE('WinCCOleDbProvider.1','Provider=WinCCOLEDBProviderforArchives;Catalog=CC_WinCCSer_19_02_14_10_59_03R;DataSource=WIN-54UD17PRU0N\WINCC').N'Tag:R,1,''0000-00-0000:10:00.000'',''0000-00-0000:00:00.000'''通过存储过程访问归档数据库存储过程(StoredProcedure)是在大型数据库系统中,一组为了完成特定功能的SQL语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。适用于WinCC归档数据库的存储过程有哪些如下图的路径,在SystemDatabases->master数据库下有部分存储过程,在WinCC项目程序对应的数据库下也有部分存储过程。
大部分存储过程都找不到对应的使用说明,下面对已知的几个存储过程简单介绍。cp_TagStatisticcp_TagStatistic是对过程值统计分析的存储过程,它的使用方法在官方文档中有描述。CC_SP_ReadTags是一个读取过程值的存储过程,查询到的值会被存储到一个临时表中。在SQLServer中CC_SP_ReadTags源代码是被加密的,从网络上查到的源代码如下,仅做参考:+ViewCodeCC_SP_ReadTags的参数说明如下:参数说明@List变量列表@TimeBegin查询的起始时间@TimeEnd结束时间@WHEREClause过滤条件@ORDERBYClause排序@Timestep时间间隔(以秒计),格式为’TimeStep=60’@Aggregationmode汇总类型(定义时间间隔结果)@TempTable临时表名称,默认值为“TlgDataTmp”@SymDataSource建立链接服务器的数据源@SymCatalog建立链接服务器的数据目录@LS_Name指定要使用的链接服务器语句示例:USE[CC_WinCCSer_19_02_14_10_59_03R]GOIFOBJECT_ID('tempdb..##TagsTempTable')is
not
NULLDROP
Table
##TagsTempTableDECLARE
@return_valueintEXEC
@return_value=[dbo].[CC_SP_ReadTags]@List=N'archive1\tag1;archive1\tag2',@TimeBegin=N'0000-00-0000:01:00',@TimeEnd=N'0000-00-0000:00:00',@WHEREClause=default,@ORDERBYClause=default,@Timestep=default,@Aggregationmode=default,@TempTable=N'##TagsTempTable',@SymDataSource=default,@SymCatalog=default,@LS_Name=N'LnkRtDb_WinCCOLEDB'SELECT
'ReturnValue'
=@return_valueGO重新排列数据
上面的示例图片中查询出的数据是以列的形式排序的,通过下面代码可以把相同时间戳的数据放在同一行。1234567891011121314151617181920212223242526272829303132declare
@TimeBegindatetime=
'2020-09-0300:00:00.000';declare
@TimeEnddatetime=
'2020-09-0400:00:00.000';declare
@TimeStepnvarchar(64)=
'10'Declare
@List
Varchar(1000)=N'SysInfo\CPU_1;SysInfo\CPU_2;SysInfo\CPU_3;SysInfo\CPU_4'declare
@strTimeBeginnvarchar(64)=format(Dateadd(hh,DATEDIFF(hh,GETDATE(),GETUTCDATE()),@TimeBegin),'yyyy-MM-ddHH:mm:ss.fff')declare
@strTimeEndnvarchar(64)=format(Dateadd(hh,DATEDIFF(hh,GETDATE(),GETUTCDATE()),@TimeEnd),'yyyy-MM-ddHH:mm:ss.fff')declare
@strTimeStepnvarchar(500)if@TimeStep<>''
set
@strTimeStep=N',''''TimeStep='
+@TimeStep+',1'''''else
set
@strTimeStep=
''declare
@temp
table(
ValueID
bigint,
TimeStamp
datetime,
RealValue
float,
Quality
int,
Flags
int)declare
@SQLnvarchar(1000)set
@SQL=
'select*fromopenquery(LnkRtDb_WinCCOLEDB,''Tag:R,('+@List+'),
'''''+@strTimeBegin+''''','''''+@strTimeEnd+''''''
+@strTimeStep+
''')'insert
into
@temp
exec(@SQL)SELECT
Dateadd(hh,DATEDIFF(hh,GETUTCDATE(),GETDATE()),[TimeStamp])
AS
TimeStamp,[1]
AS
CPU_1,[2]
AS
CPU_2,[3]
AS
CPU_3,[4]
AS
CPU_4From(SELECT
[ValueID],[TimeStamp],[RealValue]
from
@temp
)
AS
SourceTablePIVOT(max(Realvalue)
for
ValueID
in
([1],[2],[3],[4]))
AS
PivotTableorder
by
PivotTable.TimeStamp用VB脚本访问归档数据库创建数据库连接
12345dimconnSet
conn=CreateObject('ADODB.Connection')conn.ConnectionString=
'Provider=WinCCOLEDBProvider.1;Catalog=CC_OpenArch_03_05_27_14_11_46R;DataSource=.\WinCC'conn.CursorLocation=3conn.open查询数据库
1234Dim
rs,SqlSet
rs=CreateObject('ADODB.Recordset')Sql=
'Tag:R,1,''0000-00-0000:10:00.000'',''0000-00-0000:00:00.000'''rs.OpenSql,conn,1,3访问另一台电脑的WinCC归档数据库假如有两台电脑,命名为A和B,A和B电脑上都安装了ConnectivityPack,从A电脑上通过WinCCOleDbProvider.1去访问B电脑中的WinCC归档数据库,需要按照如下做法:B
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年新教材高中生物第4章免疫调节测评含解析新人教版选择性必修第一册
- 广东省汕头市潮阳实验校2024-2025学年初三第三次教学质量检测试题化学试题试卷含解析
- 广东省汕头市潮南区两英镇2024-2025学年初三一诊生物试题试卷含解析
- 广东省普宁市燎原中学2024届英语八年级第二学期期末经典模拟试题含答案
- 钢结构工程承包协议(标准版)
- 广东省六校联盟深圳实验广州二中珠海一中惠州一中东莞中学2025届高三下学期第二次阶段性考试综合试题含解析
- 广东省海珠区2024-2025学年高三下学期阶段性检测试题数学试题试卷含解析
- 各个班组三级安全培训考试题(综合题)
- 一般生产经营单位安全培训考试题及参考答案【综合题】
- 日常安全培训考试题附下载答案
- 【课件收藏】幼儿园《古朗月行》教学课件
- 2024年人教版小学数学新教材网络培训心得体会收获、反思、努力方向
- 内分泌科品管圈成果汇报提高糖尿病患者健康教育知晓率
- 人教版(2024新版)一年级上册数学第一单元《数学游戏》单元整体教学设计
- 六年级品德与社会上册 第三单元 腾飞的祖国 1 站起来的中国人教案设计 新人教版
- 2024年江苏扬州江都区“乡村振兴好青年”招聘209人历年(高频重点复习提升训练)共500题附带答案详解
- 2024年广东省广州市中考数学试卷含答案
- 村卫生室静脉输液规范和安全管理制度
- 江苏省南京师范大学附属中学2023-2024学年高二上学期期初测试数学试题
- 跨学科主题学习:实施策略、设计要素与评价方式(附案例)
- AQ 1017-2005 煤矿井下安全标志(正式版)
评论
0/150
提交评论