这里介绍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 处理一下试试。