在实施MES项目中,比如产量统计、质量数据追溯、SPC统计等业务,不可避免需要使用OT层设备历史或者实时数据,如果恰好数据采集和存储使用了西门子WinCC,本文主要介绍如何使用WinCC数据采集功能和历史数据归档存储能力为MES系统提供数据支持。
1.前置条件:需要使用WinCC的连通性数据包(Connectivity Pack),需要安装服务端和客户端,Connectivity Pack提供实时和历史归档数据的查询SDK;
2.使用SDK包,需要自己写代码,支持VB、C#等语言;
3.以下一个实际项目中使用的部分代码,实现设备运行和故障历史数据统计;
项目代码如下:
(1)如何连接WinCC历史数据库
//需要查询变量数据字典业务数据库连接
string strSqlcon = "SERVER=【wincc数据库IP地址】;DATABASE=数据库;PWD=密码;UID=用户;";
//WinCC归档库连接
string conn = @"Provider=WinCCOLEDBProvider.1;Catalog=【归档数据库名称】; Data Source=主机名称\WINCC";
//WinccOleDb数据对象创建
using (OleDbConnection DBConnection = new System.Data.OleDb.OleDbConnection(conn))
{
//打开数据库连接DBConnection.Open();
if (DBConnection.State == ConnectionState.Open)}
(2)WinCC变量名称SQL查询
using (SqlConnection sqlcon = new SqlConnection(strSqlcon))
{
sqlcon.Open();
SqlCommand sqlcom = sqlcon.CreateCommand();
sqlcom.CommandText = "select * from MESDB.dbo.WINCC_TbFlag";
DataTable dtflagTemp = new DataTable();
dtflagTemp.Load(sqlcom.ExecuteReader());
string beingtime = string.Empty;
string frequency = string.Empty;
string filter =