从 C# chart 中获取数据-3

发布时间 2023-05-30 20:35:13作者: 言+C

这里介绍C#的修改步骤:

 1. 修改连接

 DataSet ds = new DataSet();
            OleDbCommand comm = new OleDbCommand();
            OleDbDataAdapter da = new OleDbDataAdapter();
            string ConnectStr = @"Provider=WinCCOLEDBProvider.1;Catalog=AC_ZDH1_TEST#HMI#2023-V7_TLG_F_202305160510_202305250329;Data Source=ZDH1" + "\\WINCC";
            OleDbConnection conn = new OleDbConnection(ConnectStr);
            conn.Open();
            comm.Connection = conn;
            comm.CommandType = CommandType.Text;

            comm.CommandText = @"TAG:R,88,'2023-05-25 03:15:00.000','2023-05-25 03:18:00.000','TIMESTEP=15,3'"; 

            da.SelectCommand = comm;
            da.Fill(ds);
            ArchiveC = new DataView(ds.Tables[0]);              

2. 显示数据

  int count = 0;
            PIDCollection = new ObservableCollection<Trends_A1>();
            while (count < 30)
            {
           
                double ProcessVariable = (double)ArchiveC[count].Row.ItemArray[2];
                PIDCollection.Add(new Trends_A1(count, ProcessVariable, ProcessVariable, ProcessVariable));
                ++count;
            }
            PIDCollectionC = PIDCollection;
            conn.Close();

3. 间隔设定

以下查询使用 <TimeStep> 参数,并且返回所有 ValueID“1”的值,从开始时间“TimeBegin”开始,直到 5 分钟后为止,时间间隔为“60”秒,汇总类型“5”=“无插补的平均值”。

"TAG:R,1,'2004-10-13 17:00:00.000','0000-00-00 00:05:00.000', 'TIMESTEP=60,5'"

下图显示了查询结果:

 

  • 左侧表格显示了在某个 30 秒的归档周期内归档的归档数据。
  • 右侧表格显示了查询结果。

它决定了“0”秒和“30”秒时的两个归档值的平均值,通过平均间隔的第一个时间戳(即“0”秒)显示。

 

     间隔数据有点问题,数据没有变化,可能是数据库本身数据的问题,后面在详细分析。

4. 运行结果

 5. 小结

   5.1 只有SQL查询没有问题,C#读取是可靠的。

   5.2 数据间隔有点问题,读入了两个相同的数值;

  5.3 生成曲线也是也行的,怎么读取显示曲线的数值,还没有找到方法,从excel 处理一下试试。