本文整理汇总了C#中Session.HistoryRead方法的典型用法代码示例。如果您正苦于以下问题:C# Session.HistoryRead方法的具体用法?C# Session.HistoryRead怎么用?C# Session.HistoryRead使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Session
的用法示例。
在下文中一共展示了Session.HistoryRead方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: HistoryReadAtTime
/// <summary>
/// Reads the history of values for a set of variables at given time.
/// </summary>
static void HistoryReadAtTime(Session session)
{
// translate browse paths.
IList<NodeOfInterest> nodeIds = GetNodeIds(session, Opc.Ua.Objects.ObjectsFolder,
VariableBrowsePaths.ToArray());
DiagnosticInfoCollection diagnosticInfos;
ReadAtTimeDetails readDetails = new ReadAtTimeDetails();
readDetails.ReqTimes = new DateTimeCollection();
for (int jj = 0; jj < 10; jj++)
{
readDetails.ReqTimes.Add(new DateTime(2008, 01, 01, 12, 0, jj));
readDetails.ReqTimes.Add(new DateTime(2008, 01, 01, 12, 0, jj, (int) 500));
}
ExtensionObject eo = new ExtensionObject(readDetails.TypeId, readDetails);
HistoryReadValueIdCollection idCollection = new HistoryReadValueIdCollection();
for (int ii = 0; ii < nodeIds.Count; ii++)
{
HistoryReadValueId readValueId = new HistoryReadValueId();
readValueId.NodeId = nodeIds[ii].NodeId;
readValueId.Processed = false;
idCollection.Add(readValueId);
}
HistoryReadResultCollection historyReadResults;
ResponseHeader responseHeader =
session.HistoryRead(null, eo, TimestampsToReturn.Both, true,
idCollection, out historyReadResults, out diagnosticInfos);
// process results.
for (int ii = 0; ii < historyReadResults.Count; ii++)
{
HistoryReadResult historyReadResult = historyReadResults[ii];
HistoryData historyData = null;
DataValueCollection dataValues = null;
if (historyReadResult.HistoryData != null)
{
historyData = ExtensionObject.ToEncodeable(historyReadResult.HistoryData) as HistoryData;
dataValues = historyData.DataValues;
}
ServiceResult result = Session.GetResult(historyReadResult.StatusCode, ii, diagnosticInfos, responseHeader);
Console.WriteLine("HistoryRead result code for {0}: {1}", VariableBrowsePaths[ii], result.StatusCode.ToString());
if (StatusCode.IsBad(historyReadResult.StatusCode))
{
continue;
}
if (dataValues == null)
{
Console.WriteLine("dataValues == null");
continue;
}
for (int jj = 0; jj < dataValues.Count; jj++)
{
DataValue dataValue = dataValues[jj];
// write value.
Console.WriteLine("{0}: V={1}, Q={2}, SrvT={3}, SrcT={4}", jj,
dataValue.Value == null ? "null" : dataValue.Value.ToString(),
dataValue.StatusCode.ToString(),
dataValue.ServerTimestamp, dataValue.SourceTimestamp);
}
}
}
示例2: HistoryReadProcessed
static void HistoryReadProcessed(Session session)
{
// translate browse paths.
IList<NodeOfInterest> nodeIds = GetNodeIds(session, Opc.Ua.Objects.ObjectsFolder,
VariableBrowsePaths.ToArray());
DiagnosticInfoCollection diagnosticInfos;
NodeId aggregateNodeId = null;
RequestHeader rh = null;
ViewDescription vd = null;
ReferenceDescriptionCollection references;
byte[] cp;
//Get the list of avalilable aggregate functions:
session.Browse(
rh,
vd,
Opc.Ua.ObjectIds.Server_ServerCapabilities_AggregateFunctions,
1000,
BrowseDirection.Forward,
ReferenceTypeIds.Aggregates,
false,
0,
out cp,
out references);
Console.WriteLine("{0} aggregates are detected:", references.Count);
//Print the list of avalible aggregates:
int i = 0;
foreach (ReferenceDescription rd in references)
{
i++;
Console.WriteLine("{0}. {1} {2}", i, rd.BrowseName, rd.NodeId.Identifier.ToString());
}
//Select aggregate function:
Console.WriteLine("\nEnter aggregate number: ");
string str = Console.ReadLine();
i = System.Int16.Parse(str);
if (i > 0 && i <= references.Count)
{
aggregateNodeId = ExpandedNodeId.ToNodeId(references[i - 1].NodeId, session.NamespaceUris);
}
//Prepare arguments to pass to read processed history
ReadProcessedDetails readDetails = new ReadProcessedDetails();
readDetails.StartTime = new DateTime(2008, 1, 1, 12, 0, 0);
readDetails.EndTime = new DateTime(2008, 1, 1, 12, 0, 12);
readDetails.AggregateType = new NodeIdCollection(nodeIds.Count);
for (int x = 0; x < nodeIds.Count; x++)
{
readDetails.AggregateType.Add (aggregateNodeId);
}
readDetails.ProcessingInterval = 500; //500 milliseconds
ExtensionObject eo = new ExtensionObject(readDetails.TypeId, readDetails);
HistoryReadValueIdCollection idCollection = new HistoryReadValueIdCollection();
for (int ii = 0; ii < nodeIds.Count; ii++)
{
HistoryReadValueId readValueId = new HistoryReadValueId();
readValueId.NodeId = nodeIds[ii].NodeId;
readValueId.Processed = true;
idCollection.Add(readValueId);
}
HistoryReadResultCollection historyReadResults;
//Read processed history:
ResponseHeader responseHeader =
session.HistoryRead(null, eo, TimestampsToReturn.Both, true,
idCollection, out historyReadResults, out diagnosticInfos);
//Print results:
for (int ii = 0; ii < historyReadResults.Count; ii++)
{
HistoryReadResult historyReadResult = historyReadResults[ii];
ServiceResult result = Session.GetResult(historyReadResult.StatusCode, ii, diagnosticInfos, responseHeader);
HistoryData historyData = null;
DataValueCollection dataValues = null;
if ( !(historyReadResult.HistoryData == null) )
{
historyData = ExtensionObject.ToEncodeable(historyReadResult.HistoryData) as HistoryData;
if (historyData == null)
dataValues = null;
else
dataValues = historyData.DataValues;
}
Console.WriteLine("\nHistoryRead result code for {0}: {1}", VariableBrowsePaths[ii], result.StatusCode.ToString());
//.........这里部分代码省略.........
示例3: HistoryReadAttributes
/// <summary>
/// Reads the history of attributes for Bucket Brigade.Int1.
/// </summary>
static void HistoryReadAttributes(Session session)
{
List<string> VariableBrowsePaths = new List<string>();
VariableBrowsePaths.Add("/7:MatrikonOpc Sim Server/7:Simulation Items/7:Bucket Brigade/7:Int1/7:Description");
VariableBrowsePaths.Add("/7:MatrikonOpc Sim Server/7:Simulation Items/7:Bucket Brigade/7:Int1/7:DataType");
VariableBrowsePaths.Add("/7:MatrikonOpc Sim Server/7:Simulation Items/7:Bucket Brigade/7:Int1/7:ITEMID");
// translate browse paths.
IList<NodeOfInterest> nodeIds = GetNodeIds(session, Opc.Ua.Objects.ObjectsFolder,
VariableBrowsePaths.ToArray());
DiagnosticInfoCollection diagnosticInfos;
ReadRawModifiedDetails readDetails = new ReadRawModifiedDetails();
readDetails.StartTime = DateTime.MinValue;
readDetails.EndTime = DateTime.Now;
readDetails.IsReadModified = false;
readDetails.NumValuesPerNode = 100;
readDetails.ReturnBounds = false;
ExtensionObject eo = new ExtensionObject(readDetails.TypeId, readDetails);
HistoryReadValueIdCollection idCollection = new HistoryReadValueIdCollection();
for (int ii = 0; ii < nodeIds.Count; ii++)
{
HistoryReadValueId readValueId = new HistoryReadValueId();
readValueId.NodeId = nodeIds[ii].NodeId;
readValueId.Processed = false;
idCollection.Add(readValueId);
}
HistoryReadResultCollection historyReadResults;
ResponseHeader responseHeader =
session.HistoryRead(null, eo, TimestampsToReturn.Both, true,
idCollection, out historyReadResults, out diagnosticInfos);
// process results.
for (int ii = 0; ii < historyReadResults.Count; ii++)
{
HistoryReadResult historyReadResult = historyReadResults[ii];
HistoryData historyData = null;
DataValueCollection dataValues = null;
if (historyReadResult.HistoryData != null)
{
historyData = ExtensionObject.ToEncodeable(historyReadResult.HistoryData) as HistoryData;
dataValues = historyData.DataValues;
}
ServiceResult result = Session.GetResult(historyReadResult.StatusCode, ii, diagnosticInfos, responseHeader);
Console.WriteLine("\nHistoryRead result code for {0}: {1}", VariableBrowsePaths[ii], result.StatusCode.ToString());
if (StatusCode.IsBad(historyReadResult.StatusCode))
{
continue;
}
if (dataValues == null)
{
Console.WriteLine("dataValues == null");
continue;
}
for (int jj = 0; jj < dataValues.Count; jj++)
{
DataValue dataValue = dataValues[jj];
// write value.
Console.WriteLine("\t{0}: V={1}",jj, dataValue.Value == null ? "null" : dataValue.Value.ToString());
Console.WriteLine("\t Q={0}, SrvT={1}, SrcT={2}\n",
dataValue.StatusCode.ToString(), dataValue.ServerTimestamp, dataValue.SourceTimestamp);
}
}
}