Frequently Asked Questions – .NET Trend

How do I programmatically add pens to a trend window?
The following two (2) examples are for WinForm and WPF applications on how to add pens to a trend window during runtime programmatically.
WinForm:
Dim NewPen As OPCTrendControl.ClassPen
Dim NewPens As OPCTrendControl.ClassPen()
ReDim NewPens(2)
If NetworkPath = """" Then
NewPen = New OPCTrendControl.ClassPen(NetworkPath + ""Ramp.Value"", ""localhost"")
Else
NewPen = New OPCTrendControl.ClassPen(NetworkPath + ""Ramp.Value"", NetworkNode)
End If
NewPen.LineBorderColor = Color.Blue
NewPen.LineFillColor = Color.Blue
NewPen.Description = "Ramp"
NewPen.LineStyle = OPCTrendControl.ClassPen.LineStyleTypes.Ellipsoid
NewPens(0) = NewPen

If NetworkPath = "" Then
NewPen = New OPCTrendControl.ClassPen(NetworkPath + ""Sine.Value"", ""localhost"")
Else
NewPen = New OPCTrendControl.ClassPen(NetworkPath + ""Sine.Value"", NetworkNode)
End If

NewPen.LineBorderColor = Color.Red
NewPen.LineFillColor = Color.Red
NewPen.Description = "Sine"
NewPen.YAxisRangeHigh = 1
NewPen.YAxisRangeLow = -1
NewPen.LineStyle = OPCTrendControl.ClassPen.LineStyleTypes.Tube
NewPens(1) = NewPen

If NetworkPath = "" Then
NewPen = New OPCTrendControl.ClassPen(NetworkPath + ""Random.Value"", ""localhost"")
Else
NewPen = New OPCTrendControl.ClassPen(NetworkPath + ""Random.Value"", NetworkNode)
End If

NewPen.LineBorderColor = Color.Green
NewPen.LineFillColor = Color.Green
NewPen.Description = "Random"
NewPen.MarkerFillColor = Color.Green
NewPen.MarkerStyle = OPCTrendControl.ClassPen.MarkerStyleTypes.Sphere
NewPen.MarkerSize = 20
NewPens(2) = NewPen

frmTrend.OpcTrendControl1.Pens = NewPens

WPF:

VB
Dim Pens As New OPCWPFDashboard.PensList
Dim NewPen As New OPCTrendControl.ClassPen

'Add Ramp Pen
NewPen = New OPCTrendControl.ClassPen("Ramp.Value", "localhost")
NewPen.Units = ""MGD""
NewPen.YAxisRangeHigh = 2
NewPen.LineStyle = OPCTrendControl.ClassPen.LineStyleTypes.Line
NewPen.Description = "Ramp Value"
Pens.Add(NewPen)

'Add Random
NewPen = New OPCTrendControl.ClassPen("Random.Value", "localhost")
NewPen.Units = "NTU"
NewPen.Description = "Random Pen"
Pens.Add(NewPen)
OPCWPFTrend1.Pens = Pens

C#
OPCWPFDashboard.PensList Pens = new OPCWPFDashboard.PensList();
OPCTrendControl.ClassPen NewPen = new OPCTrendControl.ClassPen();

//Add Ramp Pen
NewPen = new OPCTrendControl.ClassPen("Ramp.Value", "localhost");
NewPen.Units = "MGD";
NewPen.YAxisRangeHigh = 2;
NewPen.LineStyle = OPCTrendControl.ClassPen.LineStyleTypes.Line;
NewPen.Description = "Ramp Value";
Pens.Add(NewPen);

//Add Random
NewPen = new OPCTrendControl.ClassPen("Random.Value", "localhost");
NewPen.Units = "NTU";
NewPen.Description = "Random Pen";
Pens.Add(NewPen);
OPCWPFTrend1.Pens = Pens
The database engine language is different than the Regional Language settings of the Data Logging and / Alarm Logging Service. Data Logging updates, Alarm Logging updates, trend history, and / alarm history is not working due to invalid date format.
Go to Configure-Options-History and Enable History Date Format. Examples: yyyy-MM-dd HH:mm:ss MM/dd/yyyy HH:mm:ss
After updating Open Automation Software with the incremental update the project no longer compiles or the application no longer works.
Make sure to Unblock the dlls before copying to C:Program Files (x86)Open Automation SoftwareOPC Systems.NET. To Unblock the files copy to a trusted location for your system, Desktop works well, then right click on the file and select Properties to select Unblock. Then copy from your Desktop to C:Program Files (x86)Open Automation SoftwareOPC Systems.NET.
I want to add annotations to the trend window.
Create a String Tag with the Trend Point property enabled. Add the String Tag to the Trend Window as a new Pen. In one of the other existing pens where you want the annotation to appear on set the property Pen.LabelAnnotationTag to the String Tag. Set the Data Logging Group to the String Tag to a String field you will be updating directly from your application.
I would like to show multiple Y Axis on the trend window.
Set YAxis-ScaleMode to one of the Stacked chart types. Set each Pen’s StackedChartNumber to the desired stacked chart to display the pen.
Does OPCTrend.NET support OPC HDA?
No, OPCTrend.NET is a client/server architecture that does not require DCOM and the communications uses the built in networking to the .NET Framework. This makes it possible for trend clients to view real-time data and historical data with OPCDatabase.NET from anywhere in the world over the Internet. The OAS Service can bring in data values from Data Access OPC Servers, Data Access OPC Clients, databases like SQL Server, Oracle, Access, and mySQL, Microsoft Excel, and .NET applications (web, WinForm, WCF, WPF, and Windows Services). The values can then be cached for unlimited trend clients and logged to databases with OPCDatabase.NET. Trend clients can be running on both Windows Operating systems and non Windows Operating systems like smart phones and the iPads. Visit the Trend .Net Product page for more information and to run a live example.
Trend history is running very slow from the database.
Make sure the date and time span is defined to return a subset of data instead of all of the data. You can also reindex the database in SQL Server to run faster. Reorganizing and Rebuilding Indexes http://msdn.microsoft.com/en-us/library/ms189858.aspx
How do I programmatically get realtime and historical trend data?
Use the GetTrendDataTable method to return a DataTable object with all trend values. [crayon-5c98a0ad670b8969788229/] The following code can be used to programmatically get history data and return the data to a DataTable. [crayon-5c98a0ad670d2631465774/]
What assemblies do I need to deploy with my application?
Include the following in References as Local Copy:
  • Nevron.Chart.dll
  • Nevron.Chart.WinForm.dll
  • Nevron.GraphicsGL.dll
  • Nevron.Presentation.dll
  • Nevron.System.dll
  • OPCSystemsInterface.dll
  • OPCTrendControl.dll