Bad Data Quality in .NET Application.

Below are some possible reasons your .NET application is not able to read OAS tag values.

Data Source Quality

Use Configure-Tags to verify that the data quality of the source tags is “Good Quality”.

Menu Configure Tags

Quality Good

Security

The Default security group on either the local or remote OAS Engine may have Disable All Tags from Reading checked under the Read Tags Tab.  See Restrict Tag Access of Security setup to see how read, write, and browse access can be restricted.

View how to Implement User Credentials in Client Applications to provide log in method for each user in the .NET application.

Network

.NET applications can be defined to communicate to remote OAS Engines.  See Network Communications Troubleshooting to verify that port 58727 is allowing both incoming and outgoing traffic through your firewall.

Tag Path

The full tag path would include the full tag name including its parent groups and the variable of the Tag.

MyGroup.MyTag.Value

Tag names are case sensitive and the current value of a tag would be .Value as the most common variable.

If the tag is from a remote OAS Engine see Basic Networking for standard remote tag syntax or Live Data Cloud Networking if the OAS Engine system has a dynamic IP address.
\\192.168.0.1\TagName.Value

License

Use Configure-License to verify that a product feature .NET Data Connector, WinForm HMI, or WPF HMI is enabled on the data source system where the tags are located.

Menu Configure License

Enabled Products

Target Framework for WPF and WinForm Applications

The project type for WinForm and WPF applications should be set to include (.NET Framework) and target .NET Framework 4.6.1 or greater.

WinForm Target Framework

See the correct project type for WinForm above that is listed as Windows Forms App (.NET Framework) while Windows Forms App would not be the correct project type.

Assembly References

Visual Studio on some operating systems will assign a legacy assembly to the project causing an incompatibility due to an older version of the reference assembly.  A common assembly that can be incorrect is Newtonsoft.Json that has been registered in the GAC by another software product.

Select Newtonsoft.Json under the Project References to verify the correct path and version as 13.0.0.0.

Newtonsoft.Json Assembly Reference

If the Path does not reference the OAS installation directory remove the reference and select to Add Reference and browse for dll from the respective directory for the specific product feature. For .NET Framework applications include the .dlls located in C:\Program Files\Open Automation Software\OAS\Controls\NetFramework\. The Target Framework set for the VS project must be .NET Framework 4.6.1 or greater. For .NET Standard supporting the following targets include the. dlls located in C:\Program Files\Open Automation Software\OAS\Controls\NetStandard\.

See a list of locations for the correct type in the troubleshooting type After updating to OAS Version 17 the project no longer compiles for a list of correct project reference paths for each type of Visual Studio Project.

.NET Assembly is Blocked

If you have copied an application or project to another computer you may need to Unblock one or more the .dll files.

Right click on the .dll file that you have downloaded. Check the Unblock checkbox for security as shown in the example below, then click Apply or OK.

Excel Add-In

Legacy .NET Application with OAS Version 17

 If the OAS .NET assemblies are from OAS version 16 or less contact support@oasiot.com for compatibility instructions.

After updating to OAS Version 17 the project no longer compiles

OAS version 17 implements an improved network interface which requires some additional assemblies.

All dependent .dlls are located in the relative subdirectory of the Controls directory of the OAS installation directory, typically C:\Program Files\Open Automation Software\OAS\Controls\.

To add a reference to a Visual Studio project right click on References in the Solution Explorer.

Add Reference

Select Browse to browse the directory for each application feature.

Browse Assemblies

Include all .dlls files in the respective directory for the specific product feature.

For .NET Framework applications include the .dlls located in C:\Program Files\Open Automation Software\OAS\Controls\NetFramework\.

The Target Framework set for the VS project must be .NET Framework 4.6.1 or greater.

For .NET Standard supporting the following targets include the. dlls located in C:\Program Files\Open Automation Software\OAS\Controls\NetStandard\.

  • .NET 6
  • .NET 5
  • .NET Core 2.0 or greater
  • .NET Framework 4.61 or greater
  • Xamarin.iOS 10.14 or greater
  • Xamarin.Android 8.0 or greater
  • UWP 1.0.0.16299 or greater

WPF HMI Assemblies

  • C:\Program Files\Open Automation Software\OAS\Controls\NetFramework\OPCWPFDashboard\

WinForm HMI Assemblies

  • C:\Program Files\Open Automation Software\OAS\Controls\NetFramework\OPCControls\

Alarm .NET Assemblies

  • C:\Program Files\Open Automation Software\OAS\Controls\NetFramework\OPCAlarmControl\
  • C:\Program Files\Open Automation Software\OAS\Controls\NetFramework\OPCAlarmDataOnly\
  • C:\Program Files\Open Automation Software\OAS\Controls\NetStandard\OASAlarms\

Trend .NET Assemblies

  • C:\Program Files\Open Automation Software\OAS\Controls\NetFramework\OPCTrendControl\
  • C:\Program Files\Open Automation Software\OAS\Controls\NetFramework\OPCTrendDataOnly\
  • C:\Program Files\Open Automation Software\OAS\Controls\NetStandard\OASTrends\

.NET Data Connector Assemblies

  • C:\Program Files\Open Automation Software\OAS\Controls\NetFramework\OPCSystemsDataConnector\
  • C:\Program Files\Open Automation Software\OAS\Controls\NetStandard\OASData\

Server Configuration Assemblies

  • C:\Program Files\Open Automation Software\OAS\Controls\NetFramework\OPCSystems\
  • C:\Program Files\Open Automation Software\OAS\Controls\NetStandard\OASConfig\

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

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\Open Automation Software\OAS\Controls\NetFramework\.

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 the correct directory in C:\Program Files\Open Automation Software\OAS\Controls\.

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.

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.