Should I develop a WPF, WinForm, or HTML5 client application?

All support communications over the Internet, so networking is not a deciding factor.

Windows HMI is a good choice if:

  • The customer is not experienced in creating WPF applications but has strong knowledge in building Windows Forms applications and the application is not graphics intensive.
  • The application is for mainly displaying values.
  • The customer wants to use Open Automation Software Controls in an existing Windows Forms Application.
  • The customer wants to write a service to read and write data to Open Automation Software.
  • The customer application will be running on Windows 2000 Professional.

WPF HMI is a good choice if:

  • The customer has no preference and he want to use graphics.
  • The customer would like Lamps, Switches, Shapes, Gauges, Pie Charts, Bar Charts, PID Controls or story boards built into the control library.
  • The customer wants to be using the latest technology.
  • The customer’s application is graphic centered as opposed to mainly a data display.
  • The customer wants to automatically scale his application to the monitor size.
  • The customer wants the ability to Scale, Rotate or Skew object in the application.

Web HMI is a good choice if:

  • If you plan to run the application on a smart phone or non widows operating system.

I am prompted to install the .NET Framework 3.5 during installation?

The .NET Framework 3.5 needs to be enabled.

a) Press “Windows Logo” + “R” keys on the keyboard.

b) Type “appwiz.cpl” in the “Run” command box and press “ENTER”.

c) In the “Programs and Features” window, click on the link “Turn Windows features on or off”.

d) Check if the “.NET Framework 3.5 (includes .NET 2.0 and 3.0)” option is available in it.

e) If yes, then enable it and then click on “OK”.

f) Follow the on-screen instructions to complete the installation and restart the computer, if prompted.

Getting Started – CANBus

Open Automation Software Tags can be defined to connect directly to devices using the CANBus standard using OAS built in CANBus Driver Interfaces.

The following steps can be used to setup direct communications with controllers using the CANBus standard.

Step 1

Getting Started-Tags 1Start Configure OAS application from the program group Open Automation Software.

Step 2

Select Configure-License and verify that CANBus is one of the available Drivers in the lower left of the form.  If you do not CANBus driver available contact support@oasiot.com to update your license.

Getting Started Modbus 1

Note: You will need to be running Open Automation Software Version 8.0.0.10 or greater to support direct CANBus communications.  You can download the latest version here.

Step 3

Select Configure-Drivers.

Getting Started Modbus 2

Step 4

Select localhost or the remote service you wish to modify with the Select button to the right of the Network Node list.

Getting Started Modbus 3

Note: Optionally select the Live Data Cloud node if you are hosting CANBus data over the Internet with a standard Internet connection.

Step 5

Enter a meaningful Driver Interface Name that you will refer to this physical connection when defining Tags with a CANBus Data Source.

Define the properties for the desired physical connection.

Note: You may need to Set Default Network Adapter for Driver Interfaces of the operating system.

Note: Set the Driver to CANBus.

Step 6

Select the Add button in the lower part of the form to add the Driver Interface as an available selection when defining Tags in the next step.

Getting Started Modbus 6

Note: If you need to define several Driver Interfaces you can use the CSV Export and CSV Import on the toolbar in the upper right together with Microsoft Excel.

Step 7

Select Configure-Tags.

Getting Started Modbus 7

Select localhost or the remote service you wish to modify with the Select button to the right of the Network Node list.

Getting Started Modbus 3

Note: Optionally select the Live Data Cloud node if you are hosting Modbus data over the Internet with a standard Internet connection.

Step 8

Select to Add a Tag.

Note: You can also add organizational Groups as many levels deep as you prefer and add tags to groups.  To do this first add a Group to the root level, then right click on the Group in the right window to add additional Groups or Tags.

Getting Started-Tags 8

Step 9

Change the Data Source Tag property to CANBus.

Step 10

Select the correct Driver Interface from the Driver Interface pull down list.

Step 11

Specify the desired Polling Rate for the Tag.

Specify the Address of the variable to read and write to.

Step 12

To define multiple tags use the CSV Export and CSV Import on the toolbar in the upper right together with Microsoft Excel.

Note: You can also programmatically define Tags using the free to use OPC Systems component as demonstrated in the Form FormConfigureCSV in the WinForm Example Code application that installs with Open Automation Software in the Program Group Open Automation Software.  This component can be used in any .NET application includes Web Services, Windows Services, WPF Applications, and ASP.NET or .NET MVC Web Applications.

Step 13

Select the Save button on the toolbar at the top.

Getting Started-Tags 19

Step 14

Create a directory on the local C: drive with the name OPCSystemsDemo.

Save the file DemoTags.tags in the directory C:OPCSystemsDemo.

Getting Started-Tags 20

Step 15

Under Configure – Options set the Default Tag Configuration File so when the computer restarts the tag file will automatically be loaded.

Getting Started – REST API

The following guide demonstrates how to connect to the OAS REST API.

To see how to use the OAS Platform with an external REST API view the Moving Data to an External REST API Use Case.

  • 00:00 – Introduction
  • 00:12 – What is REST API?
  • 00:48 – What CRUD stands for?
  • 00:52 – Database Terms for CRUD
  • 01:00 – HTTP Parallel Methods
  • 01:11 – Examples – Resources URLs
  • 03:29 – What JSON stands for?
  • 04:01 – Example – Difference between XML – JSON
  • 04:22 – When to use OAS REST API
  • 05:21 – REST Client Example Code
  • 06:03 – Before using REST API
  • 08:55 – REST Client Sample Code
  • 10:03 – JavaScript
  • 11:10 – Set HTTP Status
  • 11:35 – Add Virtual Directory
  • 12:12 – Sample Rest API Client
  • 13:14 – Create a Tag List to Monitor
  • 15:30 – Visual Studio
  • 17:45 – Postman Application
  • 21:08 – More Information

Step 1

To use the OAS REST API you must make sure that the OAS HTTP service is listening on the correct port. This is done within the OAS Configuration application.

Open the OAS Configuration application and select Configure > Options, then select the network node (localhost if working on the local machine) and click Select.

Under the Networking tab, locate the field for REST API/WebHMI Port Number. The default is 58725 but can be changed. If you are accessing the server from a remote client, you will also need to make sure your machine and/or company firewalls allow TCP traffic on the selected port.

Using SSL with REST API is fully supported.
Read more about Configuring OAS to use SSL for Web and REST API products.

REST API Network Settings

NOTE: Making any changes to the port numbers in this section of the configuration app will temporarily restart server processes and may cause a brief interruption in data processing.


Step 2

Install Postman

Navigate to http://restapi.openautomationsoftware.com to open the REST API online documentation.

This documentation illustrates all of the operations available to any REST API client and can be tested using the Postman application client.  In the upper right corner of the documentation, you will see a button to Run in Postman, which will install the API documentation into the Postman client for direct execution against any OAS server.  Additionally, the documentation can be configured to display code samples in multiple languages including cURL, jQuery, and NodeJS. Feel free to browse the documentation at any time and to refer back to it while developing your applications.

Clicking Run in Postman will pop up a dialog box to import the REST API into an existing installation of Postman, or you can choose to install the app for the first time. Postman is available for Windows and Mac desktops as well as in a Chrome extension.


Step 3

Test your API installation

Once installed and the API has been downloaded into the app, you will see the following interface, with all operations on the left, organized identically to the online documentation:

The first operation to execute is the Authenticate call, which will generate a REST API session and returns a clientid and token to be used in all subsequent calls to the OAS server.

In the list of operations, expand and select Authenticate and you will see the following on the right side of the app:

This shows that the Authenticate operation is executed as an HTTP POST against the /authenticate URL appended to the base {{url}}. This base URL is defined in your Environment here. Select Manage Environments to add new fields:

Add your server to the Environments list

Click ADD to create a new Environment which will hold environment variables:

Add a name for your environment, then add a key of url with a value of http://localhost:58725/OASREST/v2 and click ADD to create the new environment. You can also use your OAS server’s IP address instead of localhost, if you are connecting to it from a remote workstation.

Next, return to execute the the Authenticate operation.

Now under the Environments dropdown, select your new Environment. You should see the {{url}} turn orange, indicating that the environment variable is being used.

You can now click SEND to execute the post against your server. If successful, you should see a response body similar to the one below, containing the clientid and token fields.

You can then use these fields in the header of all other operations using the Postman app to test your server.


Step 4

Accessing Tag Values

Once authenticated, you are now able to use the clientid and token in HTTP headers to make calls to configure Tags, access real time and historical Tag data, and even real time and historical Alarm and Trend data. When referencing Tags in any call, you it is assumed that you are accessing them on the OAS server being called in the REST API. However, you can also access remote Tags on any OAS server networked with the target server. Read more about the proper syntax for accessing Tags and Tag Variables.


Remote Access

OAS servers can communicate with each other and pass along tag data. This allows for distributed network load as well as placing OAS servers behind firewalls so they cannot be accessed directly. This allows you to securely issue REST API calls against one server and read/write data within a remote OAS server that cannot be reached directly from the REST API client. This same concept applies whether you are calling the OAS REST API or using the .NET Data Connector for programmatic Tag access and configuration.

  • Main OAS Engine : the server handling the REST API calls
  • Remote OAS Engine : the server housing the tag data or configuration you would like to access

REST API URL

Set the url to OAS Engine that the REST API will be hosted from. This is the URL to the Main OAS Engine whether you are accessing tag data on the Main OAS Engine or on a Remote OAS Engine.

Localhost URL : will only work when accessing the Main OAS Engine on the same machine as the client.

http://localhost:58725/OASREST/v2

Explicit URL : use the IP Address or domain name of the Main OAS Engine, allowing you to access it from a remote client. This will also work on the same machine and is the best option for code flexibility.

http://192.168.0.1:58725/OASREST/v2

Tag Access

Main OAS Engine Tag – accessing tag data on the Main OAS Engine only requires referencing the tag path.

{
    "tags": [
      {"path":"TagName.Value"}
    ]
}

Remote OAS Engine Tag – To monitor real time data from Remote OAS Engines reference the tag path in the form \\<Remote OAS address>\<Tag Path>. Note in the example below that backslash characters are escaped within strings, changing \ to \\ and \\ to \\\\.

Basic Networking – Static IP or domain name

{
    "tags": [
      {"path":"\\\\192.168.0.2\\TagName.Value"},
      {"path":"\\\\192.168.0.3\\TagName.Value"},
      {"path":"\\\\myserver.com\\TagName.Value"}
    ]
}

Live Data Cloud Networking – Dynamic IP
Once you have registered named Live Data Cloud nodes on an OAS server, you can reference them in the form RemoteSCADAHosting.<Node Name>.<Tag Path>.

{
    "tags": [
      {"path":"RemoteSCADAHosting.LiveDataCloudNode01.TagName.Value"},
      {"path":"RemoteSCADAHosting.LiveDataCloudNode02.TagName.Value"},
      {"path":"RemoteSCADAHosting.LiveDataCloudNode03.TagName.Value"}
    ]
}

Remote Configuration Calls

To execute REST API Tag Configuration calls against Remote OAS Engines, you can use the networknode parameter to reference a static IP or domain name, or the ldc parameter to reference a Live Data Cloud node name. The example below demonstrates calls to the CSV Tag configuration calls using each of these methods.

Basic Networking – Static IP or domain name

http://192.168.0.1:58725/OASREST/v2/csvtags?columns=Tag,Value - Data Type,Value - Value,Last Column&networknode=192.168.0.2

Live Data Cloud Networking – Dynamic IP

http://192.168.0.1:58725/OASREST/v2/csvtags?columns=Tag,Value - Data Type,Value - Value,Last Column&ldc=LiveDataCloudNode01

Remote Security

Because your authentication call is always against the Main OAS Engine, that same credential will be passed to any networked OAS Engine when referencing remote Tags. So it is critical to make sure the same credential (username/password) exists on all networked OAS Engines and has been granted the appropriate access level for the command being executed.

Getting Started OPC UA

OAS is both an OPC UA Client and OPC UA Server.

Open Automation Software Tags can be defined to connect to OPC UA Servers with the built in OPC UA Driver Interface.

If you want interface OAS with an OPC UA Client please see the Getting Started OPC UA Client guide.

The following steps can be used to setup communications with OPC UA Servers.

Step 1

OASStart Configure OAS application from the program group Open Automation Software.

Step 2

Select Configure-License and verify that OPCUA is one of the available Drivers in the lower left of the form. If you do not see the OPCUA driver update your Open Automation Software to the latest version.

OPC UA License

Note: You will need to be running Open Automation Software Version 10.0.0.12 or greater to support OPC UA communications. You can download the latest version from our Open Automation Software Download page.

Step 3

Select Configure-Drivers.

Configure Drivers

Step 4

Select localhost or the remote service you wish to modify with the Select button to the right of the Network Node list.

Network Node

Note: Optionally select the Live Data Cloud node if you are hosting OPC UA data over the Internet with a standard Internet connection.

Step 5

Enter a meaningful Driver Interface Name that you will refer to this physical connection when defining Tags with an OPCUA Data Source.

Define the properties for the connection to the OPC UA server.

OPCUA Driver Configuration

Set the Driver to OPC UA.

Note: If you enable security the certificate path is C:\ProgramData\OpenAutomationSoftware\pki on Windows and /ConfigFiles/pki/ on Linux.

Optionally define a secondary failover server if the primary server fails with the property Enable Failover.


If both the primary and secondary servers are offline the Return to Online settings determines the retry frequency.

View Driver Interface Failover for more information and and video demonstrating communications failover.

Step 6

Select the Add button in the lower part of the form to add the Driver Interface as an available selection when defining Tags in the next step.

Add Driver

Note: If you need to define several Driver Interfaces you can use the CSV Export and CSV Import on the toolbar in the upper right together with Microsoft Excel.

Step 7

Select Configure-Tags.

Menu Configure Tags

Select localhost or the remote service you wish to modify with the Select button to the right of the Network Node list.

Network Node

Note: Optionally select the Live Data Cloud node if you are hosting OPC UA data over the Internet with a standard Internet connection.

Step 8

Select to Add a Tag.

Note: You can also add organizational Groups as many levels deep as you prefer and add tags to groups.  To do this first add a Group to the Tags Group at root level, then right click on the Group in the right window to add additional Groups or Tags.

Add Group

Step 9

Change the Data Source Tag property to OPCUA.

Data Source OPCUA

Step 10

If you have more than one OPC UA Server defined in the Driver Interfaces select the desired Driver Interface.

OPCUA Driver Select

Step 11

Specify the desired Polling Rate for the Tag.
Use the Browse button to browse the OPC UA Server for the IdType, NodeId, Namespace, and Data Type or manually set them.

OPC UA Driver Configuration

Browse OPC UA Server

Note: If you are unable to connect to the OPC UA Server due to a certificate security error go to C:\ProgramData\OpenAutomationSoftware\pki\ on Windows or the pki sub-directory where the OAS Engine is located on Linux and copy the files in the rejected\certs directory to trusted\certs.

You can also enter the domain name in the Domain Name Override when Use Security is enabled.

Step 12

To define multiple tags use one of the following optional methods.

  • Use One Click OPC UA to automatically create tags from all OPC UA Nodes from a selected OPC Server or branch within an OPC Server. Then selectively delete the groups and tags that are not required.
  • Use CSV Export and CSV Import on the toolbar in the upper right together with Microsoft Excel to add or modify tags.
  • Programmatically define Tags using the free to use OASConfig component with the TagCSVImport method.
  • Programmatically define Tags with the OAS REST API.

Step 13

Select the Save button on the toolbar at the top.

Save

Step 14

Create a directory on the local C: drive on Windows or sub folder on Linux with the name OASDemo.

Save the file DemoTags.tags in the directory C:\OASDemo.

Save Tags

Step 15

Under Configure – Options set the Default Tag Configuration File so when the computer restarts the tag file will automatically be loaded.

Getting Started – Unidirectional Network Gateway

The UDP Broadcast feature is used to transfer values through Unidirectional Network Gateway with communication diodes that only allow traffic to go one way.

This networking feature is only needed when bidirectional communications is not allowed.  The feature is included for free in all OAS systems.

The feature supports broadcasting data from any tag variable from a the local server or remote servers within the DMZ to unlimited number of receiving servers.  Each receiving server can be setup to receive data from multiple broadcast servers providing many to many data transfer.

Use the following steps to setup servers to broadcast data and receiving services to update local and remote tag variables from the broadcasting nodes.

The receiving nodes need to have a fixed IP address, registered domain name, or network node name.  The broadcasting nodes do not need to have a fixed IP address.

Step 1

OASStart Configure OAS application.

 

Step 2

From the data source service select Configure-UDP Broadcast.

Configure UDP Broadcast

Step 3

Select the Local OAS Service by selecting the Select button next to the Network Node drop down.

Network Node

Step 4

Click the Checkbox to Enable UDP Broadcast and enter the Server Port number and Broadcast Rate which is the rate all values from this service will be broadcast to the receiving clients.

Click on Apply Changes.

UDP Broadcast Configuration

Click the Add Button and enter each receiving client IP Address and Port Number in the popup window and click OK.

UDP Broadcast Add IP

Step 5

Choose to send all tag values from the local service on each broadcast or uncheck the property Send All Local Tags to define a list of tags from the local system, remote systems, and all variables.

By defining which tags to broadcast has the following benefits over Send All Local Tags.

  • Reduced network packet size on the broadcast if the number of tags sent is less then the number of local tags.
  • Can broadcast any Tag Variable, not just the Value.
  • Can broadcast tag values from other remote nodes within the DMZ.

Step 6

Select the Save button on the toolbar at the top.

Save

Step 7

Save the file myUDPBroadcastServer.UDPBroadcast in the directory of your choice.

You can specify for this configuration to load automatically when the Service starts using Configure-Options to specify this default UDP Broadcast file.

Step 8

From the receiving service select Configure-UDP Receive.

Configure UDP Receive

Step 9

Select the Local OAS Service by selecting the Select button next to the Network Node drop down.

Network Node

Step 10

Click the CheckBox to Enable UDP Receive and enter the desired watchdog rate.  The watchdog rate is the amount of time it will wait before setting the receiving tags quality to bad without receiving a broadcast.

Click on Apply Changes.

UDP Receive Configuration

Click the Add Button to add a Port Number to listen on and select OK.  You can enter multiple receiving port numbers.

UDP Add Port

Step 11

Select the Save button on the toolbar at the top.

Save

Step 12

Save the file myUDPBroadcastClient.UDPReceive in the directory of your choice.

You can specify for this configuration to load automatically when the Service starts using Configure-Options to specify this default UDP Receive file.

Step 13

In the receiving node select Configure-Tags.  Add Tag’s with the Data Source of UDPClientTag and enter the Tag name of the broadcasting node you want to receive the value from.

UDP Tag Browse

Keep in mind you may not be able to browse for the tag name from the broadcast node, so you may have to manually enter it or use Tag CSV Import or programmatic tag setup using .NET or REST API to setup multiple tags.

The Tag defined must match the broadcast tag name defined in Step 5.

Examples:

  • Ramp.Value
  • Ramp.HighAlarmActive
  • \\192.168.0.1\Ramp.Value

Save the Tag Configuration file and specify it to load automatically under Configure-Options-Default Files.