使用WinCC归档数据,主要采集设备运行、停机以及故障信号,针对这些数据对设备进行统计统计分析。
1.连接WinCC归档数据库;
2.使用托盘方式实时监控计算设备停机率;
using System;
using System.ComponentModel;
using System.Data;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data.OleDb;
namespace WinccCollection
{
public partial class DataStatics : Form
{
//定义全局变量
string strSqlcon = "SERVER=ip地址;DATABASE=数据库名称;PWD=密码#EDC;UID=用户名;";
string wincccon = @"Provider=WinCCOLEDBProvider.1;Catalog=CC_AUX_SCAD_18_11_29_18_32_16R; Data Source=JD-NMES-PRDSC2\WINCC";
OleDbConnection DBConnection;
OleDbCommand DBCommand;
SqlConnection sqlcon;
SqlCommand sqlcom;
DateTime starttime;
int formlablecount = 0;
string formlabletext = "";
string beingtime = string.Empty;
string frequency = string.Empty;
string filter = string.Empty;
public DataStatics()
{
InitializeComponent();
}
//设置采集环境变量
private bool SetCollectPara()
{
sqlcom = sqlcon.CreateCommand();
sqlcom.CommandText = "select * from AUXMESDB.dbo.WINCC_TbFlag";
DataTable dtflagTemp = new DataTable();
dtflagTemp.Load(sqlcom.ExecuteReader());
bool beingtimesign = false, frequencysign = false, filtersign = false;
for (int i = 0; i < dtflagTemp.Rows.Count; i++)
{
if (dtflagTemp.Rows[i]["Flag"].ToString() == "1")
{
beingtime = dtflagTemp.Rows[i]["FlagTime"].ToString();
beingtimesign = true;
}
else if (dtflagTemp.Rows[i]["Flag"].ToString() == "2")
{
frequency = dtflagTemp.Rows[i]["FlagTime"].ToString();
frequencysign = true;
}
else if (dtflagTemp.Rows[i]["Flag"].ToString() == "3")
{
filter = dtflagTemp.Rows[i]["FlagTime"].ToString();
filtersign = true;
}
}
return (beingtimesign && frequencysign && filtersign);
}
//WinCC数据查询以及计算归档
public void CollectionWincc()
{
SetCollectPara();
try
{
string begintimeTemp = DateTime.Parse(beingtime).AddSeconds(double.Parse(frequency)).ToString("yyyy-MM-dd HH:mm:ss");
sqlcom.CommandText = "select WinccAbbreviation,WinccName from AUXMESDB.dbo.WINCC_CollectionDictionaries where DeleteFlag='0'";
DataTable dtflag = new DataTable();
dtflag.Load(sqlcom.ExecuteReader());
if (dtflag.Rows.Count > 0)
{
for (int i = 0; i < dtflag.Rows.Count; i++)
{
OleDbDataReader DBReader;
try
{
string CommandString = @"TAG:R," + "'" + dtflag.Rows[i]["WinccAbbreviation"] + "\\" + dtflag.Rows[i]["WinccName"] + "'" + ",'" + beingtime