Getting Started – Alarm Notification

The Alarm Notification feature is used to summarize alarm totals and send e-mails based on specified filter criteria of alarm conditions.

In order to utilize alarm notification you must first define the Tag Alarm Limits as described in Configure Tags of this Quick Start section.  For a complete list of all Alarm Notification properties refer to the OAS Configuration – Alarm Notification section in this help file.

Step 1

OASStart Configure OAS application.

 

 

Load the DemoTags Tag configuration or use the new Tag configuration you have created.

Step 2

Select Configure-Alarm Notification.

Configure Alarm Notification

Step 3

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

Network Node

Step 4

Enter the Notification Group Name of Simulation in the field in the upper right.

Notification Group Name

Step 5

Check Notification Active in the Common Properties Tab.

Notification Active

Step 6

Select the Filters Tab.

Filters Tab

Notice how you can define filtering based on Alarm Priority, Alarm Groups, and Alarm Types.

Filters

Step 7

Select the notification type your would like to set up – Email, SMS or Voice. To use SMS or Voice as a notification type you will need to use the Twilio service.

7.1 For Email notifications select the Email tab

Email Tab

You can define to send alarms that meet the filter criteria to an e-mail account. Use a semicolon to separate multiple e-mail addresses.

Alarm Notification Email

 

7.2 For SMS notifications select the SMS tab

SMS Tab

To trial the functionality you can use the demo mode to send 10 notifications. To use SMS as a notification type you will need to use the Twilio service.

Alarm Notification SMS

7.3 For Voice notifications select the Voice tab

Voice Tab

To trial the functionality you can use the demo mode to send 10 notifications. To use Voice as a notification type you will need to use the Twilio service.

Alarm Notification Voice

Step 8

Select the Tags Tab

Tags Tab

With the Tags properties you can assign to automatically write alarm statistics to Open Automation Software Tags. Useful to drive an external alarm horn through a PLC or display how many alarms are currently active.

Alarm Notification Tags

 

Step 9

Select Configure-Tags and add a Boolean Tag with the name Alarm Is Active.

Add an Integer Tag with the name Number Of Alarms Active.

Add an Integer Tag with the name Number Of Alarms In Last 24 Hours.

Step 10

Return to Configure-Alarm Notification:

  • Enable the property to Set Tag When Alarm Active
    Assign the Tag name Alarm Is Active.Value
  • Enable the property to Set Integer Tag with Alarm Active Count
    Assign the Tag name Number Of Alarms Active.
  • Enable the property to Set Integer Tag with Number Of Alarms In A Given Period
    Assign the Tag name Number Of Alarms In Last 24 Hours

Step 11

Select the Add Group button at the top of the left pane to add the Alarm Notification group.

Add Group

Step 12

Select the Save button on the toolbar at the top.

Save Button

Step 13

Save the file DemoAlarmNotification.AlarmNotification in the directory C:OPCSystemsDemo.

You can specify for this configuration to load automatically when the Service starts using Configure-Options which is described also in this Training Guide.

Step 14

Return to Configure-Tags and select each tag and note that the current number of alarms and active state are updated automatically to the appropriate tag.

Getting Started – Alarm Logging

The following guide provides instructions on setting up Alarm Logging for OAS.

In order to log alarms to a database or CSV file you must first define the Tag Alarm Limits.

For a list of the most common Alarm Logging properties refer to the OAS Configuration – Alarm Logging section in this help file.

Step 1: Check .NET Alarm or Web Alarm License

OAS

To use Alarm Logging the product feature Alarm .NET or Web Alarm needs to be enabled, it is included with either of these product features.

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

Select Configure-License and verify that Alarm .NET or Web Alarm is one of the enabled products in the lower left of the form.  If you do not see either Alarm .NET or Web Alarm enabled email support@oasiot.com to update your license.

NOTE: To configure remote OAS Engines enter the IP Address or node name in the Network Node field and click on Select.

Network Node
Enabled Products

Step 2: Configure Alarm Logging

Select Configure-Alarm Logging.

Configure Alarm Logging

In the Common tab enter a unique Logging Group Name.

Logging Group Name

Check Logging Active in the Common Properties Tab.

Logging Active

Step 3: Set Alarm Filters

In the Filters tab specify what types of alarms to log along with which alarm groups and alarm priorities. Leave the ALARM GROUPS list blank to log all alarm groups.

Alarm Logging Filters

In the Nodes tab specify which OAS Engines to receive alarms from. Leave the list blank or specify localhost to log alarms from the local OAS Engine.

Alarm Nodes

Step 4: Log Alarms to a Database

Select the Database tab to log the alarms to a database table.

Database Tab

Enable Log to Database.

Log to Database

Select the database Provider to use.

Alarm Logging DB Providers

NOTE: MS Access is not supported on Linux or Docker deployments.

NOTE: When logging to SQL Azure use the SQL Server Provider and view the following guide to setup Microsoft Azure: Windows Azure Setup

Specify the database Server to connect with.

Server Property

NOTE: Not applicable for MS Access and SQLite.

When logging to SQL Server the Server name can be copied from SQL Server Management Studio when connecting to the database engine.

SQL Server Connect

When logging to mySQL set the SSL Mode.

mySQL SSL Mode

When logging to MongoDB use Add Srv if +srv option needs to be added to the Server.

MongoDB Add Srv

When logging to PostgreSQL select Enable SSL to specify a certificate.

PostgreSQL SSL

Set the Database to log to.

Alarm Logging Database

When using SQLite or Microsoft Access specify the full path of the database. Example: C:\DatabaseName.mdb for older versions of Access and C:\DatabaseName.accdb for Access 2007 and greater.

Set the Table to log to.

Alarm Logging Table

When logging to SQL Server uncheck Use Windows Authentication to specify SQL User Name Password. Leave enabled to connect using Windows Authentication.

SQL Server Windows Authentication

Enable Log One Record Per Alarm if you want to insert only one record for each alarm instance. Leave disabled to log a new record for every change in alarm state, return to normal and acknowledged.

Log One Record Per Alarm

When enabled there will only be one record for each occurrence of an alarm. If the alarm returns the normal start or acknowledged the existing record will be updated with the new information. If it is a new occurrence of an alarm a new record will be created.

Step 5: Log Alarms to a CSV File

Use the following configuration for CSV text logging:

NOTE: There is no historical replay to alarm windows with CSV logging.

CSV Configuration

Step 6: Add Alarm Logging Group

Select the Add Group button to add the Alarm Logging group.

Add Group

Step 7: Save Alarm Logging Configuration

Select the Save button on the toolbar at the top.

Load and Save

Enter a file name to be saved in C:\ProgramData\OpenAutomationSoftware\ConfigFiles directory on Windows or ConfigFiles subdirectory on Linux.

When prompted to set the file as the default configuration to load on startup select Yes.

Set Alarm Logging Default File

Alarm records should now be recorded for alarms that match the filter criteria in the Filters tab.

Getting Started – Data Logging

You can log any Tag or DirectOPC item value from Open Automation Software to CSV files and the database engines SQL Server, Oracle, Access, PostgreSQL, Cassandra, MongoDB, MariaDB, SQLite, InfluxDB, Amazon Aurora, Amazon RDS, Google Firebase, and MySQL.

You can view the Getting Started with Data Logging Video to familiarize yourself with the following steps to setup data logging.

  • 00:00 – Introduction
  • 01:30 – Getting Started
  • 03:00 – Continuous Logging
  • 04:15 – SQL Server
  • 06:25 – Save Changes
  • 07:00 – Continuous Narrow Logging
  • 09:30 – Event Driven
  • 11:20 – Handshake Confirmation
  • 12:45 – High Speed Logging
  • 15:00 – Log to Stored Procedure
  • 15:25 – Triggers
  • 16:30 – Event Narrow Logging
  • 18:00 – Timestamps
  • 20:30 – Snapshot Logging
  • 21:45 – Specific Time of Day Logging
  • 22:50 – Data Change Row Logging
  • 25:15 – Data Change Narrow Logging
  • 26:45 – Networking
  • 31:55 – Store and Forward
  • 37:30 – Disable Store and Forward
  • 40:15 – Update Records
  • 40:50 – Dynamic Server, Database, and Table
  • 41:10 – Automatic Deletion
  • 41:40 – CSV File Logging
  • 45:30 – Programmatic Interface
  • 46:45 – CSV Export / Import
  • 48:20 – One Click Automation
  • 52:20 – Transaction Logging
  • 54:25 – System Errors
  • 56:00 – Contact Us
  • 56:50 – Read Database Data

Step 1

OAS
Start Configure OAS application if it is not already running.

Step 2

Select Configure – Data Logging.

Datalogging Menu

Step 3

Select the Local OAS Service by selecting the Select button.

Network Node

Step 4

Enter the Logging Group Name of Simulation in the field in the upper right.

Logging Group Name

Check Logging Active in the Common Properties Tab.

Logging Active

Step 5

Determine your table format and type of logging you wish to implement and set the Logging Type.

Loggint Type

  • Continuous: Log data in a wide table format at a specific rate.
  • Continuous Narrow: Log data in a narrow table format at a specific rate.
  • Event Driven: Log data in a wide table format when a Boolean or Integer Tag changes.
  • Snapshot: Log cached data in a wide table format when a Boolean Tag changes.  The cached data is collected prior to the event and only logged when the event occurs.
  • Specific Time Of Day: Log data in a wide table format at a specific time of day.
  • Data Change Row: Log data in a wide table format when any of the tag values change.
  • Data Change Narrow: Log data in a narrow table format when the tag value changes.
  • Merlin: Not applicable, only used for one of our OEM customers.

Wide Table Format: Specify a specific column to map the tags to log to.

Narrow Table Format: Log all tag values into 3 fields, Tag Name, Value, and Timetamp.  This type is more difficult to query directly and is not supported by trend history.

We use the default Logging Type of Continuous at a 1 second rate in this example.

Step 6

Select the Tags Tab.

Tags Tab

Step 7

Select the Add Field button.

Add

Step 8

Select your Network Node in the Browse Tags window.  Then use the Tags Tree to select the Ramp.Value.

Value is the most commonly used Variable.  See Tag Variables for a complete list of all variables possible.

Local Tag

myGroup.myTag.Value

Basic Networking

\\192.168.0.1\myGroup.myTag.Value

Live Data Cloud Networking from local OAS Engine

RemoteSCADAHosting.myLiveDataCloudNode.myGroup.myTag.Value

Live Data Cloud Networking though remote OAS Engine

\\192.168.0.1\RemoteSCADAHosting.myLiveDataCloudNode.myGroup.myTag.Value

The following is an example of accessing an element of an array as a read only variable.

myGroup.myTag.Value[0]

Adding Multiple Tags

To add multiple tags from a tag group select the group and click ADD ALL TAGS FROM to add all tags in one step.  Leave the group field blank located to the right of ADD ALL TAGS FROM to add all of the tags in a service.

Click OK.

Tag Browse

Confirm that you have the correct information in the Database Tag window that pops up. Click Ok.

Database Tag

Step 9

Repeat steps 7 and 8 for the Tag Parameter Random.Value.

Repeat steps 7 and 8 for the Tag Parameter Sine.Value.

Selected Tags

Step 10

Select the Database Tab.

Database Tab

Step 11

Logging to SQL Server or SQL Server Express

Use the following configuration for SQL Server and SQL Server Express. The Database and Table will automatically be created for you.

SQL Server Setup

The Server name may need to be adjusted from localhost to the proper Server name of the SQL Server engine you wish to log to. This Server name can be found when first bringing up the Connect dialog of the SQL Server Management Studio.

Also the login method can be with Windows Authentication or SQL Server mode. Contact your database administrator if you are unsure of what login type to use.

Getting Started-Data Logging 10

You can download a free version of SQL Server Express from www.microsoft.com.

Logging to Microsoft Azure

Use the SQL Server Provider and view the following guide to setup Microsoft Azure:

/knowledge-base/windows-azure-setup/

Logging to Oracle

If you are using Oracle you must first create the database. All other steps are the same as SQL Server except the provider should be set to Oracle.  Oracle does not create the database so you will have create the database manually.

If you wish to use a name from TNSNAMES.ORA file refer to the Frequently Asked Questions in this Data Logging topic as OAS uses OracleManagedDataAccess assembly.

Logging to mySQL

All steps are the same as using SQL Server except the provider should be set to mySQL.
For maximum throughput set the following in C:\ProgramData\MySQL\MySQL Server 8.0.

max_allowed_packet=1G

Logging to MongoDB

All steps are the same as using SQL Server except the provider should be set to MongoDB.

Logging to PostgreSQL

All steps are the same as using SQL Server except the provider should be set to PostgresSQL.

Logging to Cassandra

All steps are the same as using SQL Server except the provider should be set to Cassandra.

Logging to MariaDB

All steps are the same as using SQL Server except the provider should be set to MariaDB.

Logging to SQLite

All steps are the same as using SQL Server except the provider should be set to SQLite and the File Path property should be set to the directory and file name for the file.

Logging to InfluxDB

All steps are the same as using SQL Server except the provider should be set to InfluxDB and you can adjust the Indexed Fields property if more than DateAndTime tag is required.

Logging to Microsoft Access

If you prefer to use Microsoft Access instead of SQL Server use the following configuration for Microsoft Access. The Database and Table will be automatically created for you. Make sure to create the directory C:\OASLoggingDemo\ on your C drive or specify a different Database path that will exist. When logging to MS Access 2007 or later use the extension .acccdb. Versions older than 2007 use the classic .mdb extension. This will switch the OAS data logging engine to use the correct provider.

MS Access Setup

Logging to Comma Separated Variable Files

Use the following configuration for CSV text logging.

Make sure to create the directory OASLogging Demo on your C drive or specify a different Database path that will exist.

CSV Setup

Step 12

Select the Add Group button in the left pane to add the Data Logging group.

Add Group

Step 13

Select the Save button on the toolbar at the top.

Save

Step 14

Save the file DemoLogging.DataLog.

Step 15

Go to Configure-Options and set the default Data Logging Configuration file to the file you just saved.

Step 16

Important: Enable Data Buffer To Disk under Configure-Options-Data Buffering on all data source Tag servers and data logging servers to retain data on a network failure or database engine failure.

After completing the above steps you can view the data in your database or CSV file.

For more detailed information on each data logging parameter view the Data Logging section in this help file or simply select the property in the Configure OAS application and hit the F1 key or select the ? near the property.

Getting Started MQTT

To interface OAS with another MQTT Client please see the Getting Started MQTT Broker guide.

To send and receive data to a Sparkplug B Edge of Network Nodes see the Getting Started Sparkplug B Host App guide.

To enable OAS as a Sparkplug B EoN Node to interface with Host and Client Applications see the Getting Started Sparkplug B EoN Node guide.

Configure an MQTT Driver

Tags can be defined to connect to MQTT devices and software brokers with the built in MQTT Driver Interface.  The following steps can be used to setup direct communications with a MQTT Broker.

Step 1

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

Step 2

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

Enabled Drivers

Note: You will need to be running Open Automation Software Version 8.26 or greater to support MQTT communications.  You can download the latest version at www.openautomationsoftware.com/downloads/open-automation-software/

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 Allen Bradley 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 MQTT 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.

Set the driver to MQTT. Enter the IP Address of the broker. The default port is 1883.

MQTT Driver Configuration

Enter the User Name and Password if required.

Keep Alive Time – Default is 60 Seconds.

Reconnect Time – Default 10 Seconds. If the connection to the broker is lost the Reconnect Time determines how long to wait before attempting to reconnect.

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

If both the primary and secondary broker 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.

Publish Selected Tags to MQTT Broker

There are 2 ways to publish data from OAS to a MQTT Broker.  Both require Tags to be setup first for the data sources you want to transfer.

Note: If you wish to receive data from a MQTT Broker just to Reading Data from MQTT Broker below.

View the following video for a complete demonstration of how to publish data to MQTT Brokers, Azure IoT, and AWS IoT Gateway.

  • 00:00 – Introduction
  • 00:23 – Set up Tags in OAS
  • 00:41 – Configure Azure IoT
  • 01:53 – Publish Selected Tags
  • 05:31 – Visual Studio Code
  • 08:00 – Step by step instructions
  • 08:12 – Bulk Publish to AWS IOT
  • 09:21 – Step by step instructions / Publish Data to AWS IOT Gateway
  • 09:33 – Bulk Publish to mqtt broker
  • 10:29 – MQTT Explorer
  • 11:20 – Step by step instructions/ Getting Started MQTT
  • 11:34 – Save button of the OAS Configuration tool

Step 1

Enable Publish Selected Tags at the bottom of the Driver configuration.

Step 2

Select to publish data continuously at a specified interval, based on event, or at a specific time of day.

IoT Publish Type

If Event Driven browse for a local or remote OAS tag that will trigger the publish.  Select a Boolean tag that will change state from false to true, true to false, or both.  Or choose an Integer tag that trigger a publish anytime the value changes other than 0.

IoT Publish by Event

Step 3

Enable Publish Latest Value Only to send only the latest value of each tag when published or disable to send all value changes since the last time a publish occurred.

Enabled Include All Tags Each Publish to send at least the latest value of each tag when published or disable to only send the tags that have changed since the last publish.

Enable Publish All Tags As One Topic to publish all tag values as one topic or disable to send each tag as its own topic.

IoT Publish Options

See examples in Step 6 below for each selectable option.

Step 4

Specify the Publish Topic Id if choosing to Publish All Tags As One Topic.

Specify the Tag Id, Value Id, an optional Quality Id, and Timestamp Id for each tag value that is sent.

IoT Publish Ids

When including the Timestamp Id also specify the timestamp format, use Custom to specify your own date and time format.

Step 5

Specify local and remote OAS tag variables to include in each publish and specify the Id.  Value is the current value from the data source or you can select any of the over 600 tag variables of each tag to publish.

IoT Publish Tags

Optionally use CSV Export and CSV Import buttons to set up additional tags to publish using Microsoft Excel.

When selecting remote tags use Basic Networking syntax or Live Data Cloud syntax in the tag path.

Step 6

Select Apply Changes to begin publishing to AWS IoT Gateway.  Select Save to save the new driver configuration within the tag file.

Examples:

Examples of publishing every 2 seconds with each tag value changing every second:

IoT Publish Options

Topic: oas_tags
{
  “values”: [
    {
      “id”: “Ramp”,
      “value”: 39,
      “quality”: true,
      “timestamp”: “2022-03-21T08:55:39.000Z”
    },
    {
      “id”: “Sine”,
      “value”: 0.8090169943749475,
      “quality”: true,
      “timestamp”: “2022-03-21T08:55:39.000Z”
    },
    {
      “id”: “Random”,
      “value”: 10,
      “quality”: true,
      “timestamp”: “2022-03-21T08:55:39.000Z”
    }
  ]
}
 
IoT Publish All Value Chagnes
 
Topic: oas_tags
{
  “values”: [
    {
      “id”: “Ramp”,
      “value”: 16,
      “quality”: true,
      “timestamp”: “2022-03-21T09:03:36.000Z”
    },
    {
      “id”: “Sine”,
      “value”: 0.587785252292473,
      “quality”: true,
      “timestamp”: “2022-03-21T09:03:36.000Z”
    },
    {
      “id”: “Random”,
      “value”: 96,
      “quality”: true,
      “timestamp”: “2022-03-21T09:03:36.000Z”
    },
    {
      “id”: “Ramp”,
      “value”: 17,
      “quality”: true,
      “timestamp”: “2022-03-21T09:03:37.000Z”
    },
    {
      “id”: “Sine”,
      “value”: 0.6691306063588583,
      “quality”: true,
      “timestamp”: “2022-03-21T09:03:37.000Z”
    },
    {
      “id”: “Random”,
      “value”: 26,
      “quality”: true,
      “timestamp”: “2022-03-21T09:03:37.000Z”
    }
  ]
}
 
IoT Publish Tag Id Topics
 
Topic: Ramp
{
  “value”: 35,
  “quality”: true,
  “timestamp”: “2022-03-21T09:07:15.000Z”
}
Topic: Sine
{
  “value”: -1,
  “quality”: true,
  “timestamp”: “2022-03-21T09:07:15.000Z”
}
Topic: Random
{
  “value”: 83,
  “quality”: true,
  “timestamp”: “2022-03-21T09:07:15.000Z”
}
 

Use Data Route to Send Data to MQTT

Step 1

See Getting Started – Data Route to define a Target tag in any source tag.

Reading Data from MQTT Broker

Step 1

Select Configure-Tags.

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 Allen Bradley data over the Internet with a standard Internet connection.

Step 2

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 Tags Group at the root level, then right click on the Group in the right window to add additional Groups or Tags.

Add Group

Step 3

Change the Data Source Tag property to MQTT.

Data Source MQTT

Step 4

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

Step 5

Enter the topic.

MQTT Topic

Step 6

Select the Quality of Service.

Step 7

Set the Topic Timeout – 0 = Topic will never timeout. Any number greater than 0 will cause the data to be Bad Data Quality if the broker does not publish within the time frame specified.

MQTT Topic Timeout

Step 8

Select to include Timestamp and or Data Quality to the topic.

This will publish to the specified topic above OAS/Items Sent/Timestamp  and or OAS/ItemsSent/Quality.

MQTT Settings

Configuring the Default Network Adapter

If the communications for the MQTT driver is not working at all you may need to set the default network adapter priority in the operating system.

Step 9

To setup automated data transfer of any OAS Tag to any MQTT Broker see Getting-Started – Data Route and set the Target Destination to MQTT.

Step 10

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 OASConfig .NET Standard assembly,  OPCSystems .NET Framework 4 assembly, or REST API.

Step 11

Select the Save button on the toolbar at the top.

Save Button

Step 12

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

Save the file DemoTags.tags in the directory C:\OASDemo.  Of course use the correct path for Linux.

Save Tags

Step 13

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

View Post

Getting Started Siemens

Open Automation Software Tags can be defined to connect directly to Siemens controllers with the built in Siemens Driver Interfaces which support communications over Ethernet to S7-200, S7-300, S7-400, S7-1200, and S7-1500.

The following steps can be used to setup direct communications with Siemens controllers.

Step 1 – Check Siemens License

OAS

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

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

NOTE: To configure remote OAS Engines enter the IP Address or node name in the Network Node field and click on Select.

Network Node
Enabled Drivers

Note: You will need to be running Open Automation Software Version 8.0.0.10 or greater to support direct Siemens communications.  You can download the latest version from our downloads page.

Step 2 – Configure Siemens Driver

Select Configure-Drivers.

Configure Drivers

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

Siemens Driver Interface

Set the Driver type to Siemens.

Siemens Driver Type

Define the IP Address of the controller to interface with.

IP Address

NOTE: When connecting to a S7-200 append the TSAP Local and Remote to the IP Address. Ex: 192.168.1.1.1000,1000. Here is a link to the Siemens Documentation on TSAP: https://support.industry.siemens.com/tf/ww/en/posts/is-tsap-hard-to-understand/26160/?page=0&pageSize=10#top

Select the Processor Type for the controller.

Siemens Processor Type

Select the Link Type.

Siemens Link Type

Set the Rack and CPU Slot number.

Siemens Rack and CPU Slot

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


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

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

Select the Add Driver button above the Driver list in the left pane 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.

CSV Import and Export

Drivers can also be programmatically assigned with the OAS REST API or .NET Server Configuration interface.

Step 7 – Configure Siemens Tags

Select Configure-Tags.

Menu Configure Tags

Select Add Group to add a group to place tags in.

Add Group
Add Tag Group

NOTE: You can 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.

Tag Group Options

Select Add Tag to add a tag to the group selected.

Add Tag
Add Tag to Group

Change the Data Source Tag property to Siemens.

Siemens Data Source

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

Siemens Driver Selection

Specify the Address of the variable to access.

Siemens Address

See Siemens Address Syntax how to define memory addresses.

Example: DB1.DBD1 would be used to access a single float variable from data block 1.

Select the correct Siemens Data Type.

Siemens Data Type

Specify the desired Polling Rate for the Tag.

Polling Rate

To disable communications to the device you can use Enable by Tag to control when communications is active. Leave this property disabled to establish communications at all times.

Enable by Tag

The Device Read property can be used to disable continuous polling and request data on event from the transition from false to true of a value of a Boolean tag. Leave this property disabled to establish communications at all times.

Device Read

Select Apply Changes to make the changes active on the tag.

Apply Changes

Check that the data quality of the tag is Good Quality and the value from the device is returned.

Good Quality

If the data quality is Bad Quality view Troubleshooting Siemens Bad Data for solutions to common errors.

Note: If error code 0x00000005 – Address does not exist or is out of range is returned as a System Error uncheck Optimized block access attribute of dbOptimized in the controller program and re-compile and upload to the controller.

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

CSV Import and Export

When exporting tags choose which columns to include in the CSV file. There are over 800 properties available for use in each tag and reducing the amount of data can help to focus on the properties of interest.

Siemens CSV Export

NOTE: Tags can also be programmatically assigned with the OAS REST API or .NET Server Configuration interface.

Step 4 – Save Siemens Tags and Drivers

Select the Save button on the toolbar at the top.

Load and Save

Enter a file name to be saved in C:\ProgramData\OpenAutomationSoftware\ConfigFiles directory on Windows or ConfigFiles subdirectory on Linux.

When prompted to set the file as the default configuration to load on startup select Yes.

Set Default Tag File

The tags defined are now ready for use in all OAS features like Data Logging, Data Route, and Open UIEngine.

Getting Started Allen Bradley

Open Automation Software Tags can be defined to connect directly to Allen Bradley controllers with the built in AB Logix and AB Classic Driver Interfaces which support communications over Ethernet to ControlLogix, CompactLogix, GuardLogix, and Micro800 with the AB Logix driver, and MicroLogix, SLC 500, and PLC-5 with the AB Classic driver. The following steps can be used to setup direct communications with Allen Bradley controllers.

Step 1 – Check Allen Bradley License

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

Select Configure-License and verify that ABLogix and / or ABClassic is one of the available Drivers in the lower left of the form.  If you do not see either AB drivers available email support@oasiot.com to update your license.

NOTE: To configure remote OAS Engines enter the IP Address or node name in the Network Node field and click on Select.

Network Node
Enabled Drivers

ABLogix is needed for ControlLogixCompactLogixGuardLogix, and Micro800.

ABClassic is needed for MicroLogixSLC 500, and PLC-5.

NOTE: You will need to be running Open Automation Software Version 8 or greater to support direct Allen Bradley communications.  You can download the latest version at www.openautomationsoftware.com/downloads/open-automation-software/

Step 2 – Configure Allen Bradley Driver

Select Configure-Drivers.

Configure Drivers

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

Allen Bradley Driver Interface Name

Set the Driver type to AB Logix or AB Classic.

AB Logix Driver Type

AB Logix: ControlLogix, CompactLogix, GuardLogix, and Micro800
AB Classic: MicroLogix, SLC 500, and PLC-5

Define the IP Address of the controller to interface with.

IP Address

To connect to a device through a Gateway use the following IP Address:
A – Gateway IP Address
B – Backplane Number (always 1)
C – Slot Number of DHRIO (Decimal)
D – Channel Number of DHRIO (A or B)
E – Node Address of Remote Device (Octal for DH)
Example 192.168.1.125,1,2,A,7

AB Logix:

Set the Processor Type.

AB Processor Type

Set the Backplane and CPU Slot number if using ControlLogix.

AB Backplane and CPU Slot Number

AB Classic:

Select the AB Classic Type.

AB Classic Type

CSP: Default for PLC5 and SLC5/05 Direct Connections
EIP: Used for Micrologix 1100 and newer PLC5 and SLC5/05 Direct Connections
ENI: 1761-NET-ENI connections to PLC5, SLC500 and MicroLogix
CLG DH: Used for ControlLogix Gateway to PLC5, SLC500, MicroLogix. and ControlLogix Gatway to PLC5 and SLC5/04 via DH+

Set the Processor Type.

AB Classic Processor Type

NOTE: To increase the processor overall speed in response in the logix 5000 program right click on the processor in the tree and select properties. In the Advanced Tag you can adjust System Overhead Time Slice. Increasing this value will increase the communications throughput. The Default is 20%:

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

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

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

Select the Add Driver button 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.

CSV Import and Export

Step 3 – Configure Allen Bradley Tags

Select Configure-Tags.

Menu Configure Tags

Select Add Group to add a group to place tags in.

Add Group
Add Tag Group

NOTE: You can 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.

Tag Group Options

Select Add Tag to add a tag to the group selected.

Add Tag
Add Tag to Group

Change the Data Source Tag property to AB Logix or AB Classic.

AB Data Source

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

AB Driver Interface

If using AB Logix select BROWSE to browse for the Address in the controller.

AB Address

NOTE: Controllers for AB Classic do not support browsing, manually set the Address.

If communicating to a string variable set the AB Data Type to STR, use AUTO for all other data types.

AB Data Type

Set the desired Polling Rate for reading from the device. The rate can be set to 100 nanoseconds, but the lowest practical rate would be 20 milliseconds or 0.02 seconds.

Polling Rate

To disable communications to the device you can use Enable by Tag to control when communications is active. Leave this property disabled to establish communications at all times.

Enable by Tag

The Device Read property can be used to disable continuous polling and request data on event from the transition from false to true of a value of a Boolean tag. Leave this property disabled to establish communications at all times.

Device Read

Select Apply Changes and verify the Value and data quality is good.

Apply Changes

Check that the data quality of the tag is Good Quality and the value from the controller is returned.

Good Quality

If the data quality is Bad Quality view Troubleshooting Allen Bradley Bad Data for solutions to common errors.

One Click Allen Bradley Video

Note: You may want to use One Click Allen Bradley to add tags from the controller automatically.

How to automatically import Allen Bradley variables to Open Automation Software.

Another way to define multiple tags is to use the CSV Export and CSV Import on the toolbar together with Microsoft Excel.

CSV Import and Export

When exporting tags choose which columns to include in the CSV file. There are over 800 properties available for use in each tag and reducing the amount of data can help to focus on the properties of interest.

AB CSV Export

NOTE: Tags can also be programmatically assigned with the OAS REST API or .NET Server Configuration interface.

Step 4 – Save Allen Bradley Tags and Drivers

Select the Save button on the toolbar at the top.

Load and Save

Enter a file name to be saved in C:\ProgramData\OpenAutomationSoftware\ConfigFiles directory on Windows or ConfigFiles subdirectory on Linux.

When prompted to set the file as the default configuration to load on startup select Yes.

Set Default Tag File

NOTE: The tags and and drivers are both saved into one file.

The tags defined are now ready for use in all OAS features like Data Logging, Data Route, and Open UIEngine.

Getting Started Modbus

Open Automation Software Tags can be defined to connect directly to Modbus slave devices or host data to Modbus masters with the built in Modbus Driver Interface which supports communications over Ethernet and Serial interfaces for Modbus TCP, Modbus RTU, and Modbus ASCII protocols.

You can view the Getting Started with Modbus Video to familiarize yourself with the following steps to setup Modbus communications.

  • 00:00 – Introduction
  • 00:30 – Configure OAS Application
  • 02:26 – How to Configure Tags
  • 03:00 – Data Type
  • 04:33 – Address for memory location
  • 04:49 – Modbus Data Type
  • 05:26 – Simulator Communication
  • 06:30 – Data Route Functionality
  • 07:43 – Tag Management
  • 07:46 – CSV Export
  • 08:35 – Set Up Tags Programmatically
  • 08:56 – Data Destinations
  • 09:22 – Save Tag Configuration
  • 09:54 – Further Questions

The following steps can be used to setup direct communications with Modbus devices.

Step 1 – Check Modbus License

OAS

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

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

NOTE: To configure remote OAS Engines enter the IP Address or node name in the Network Node field and click on Select.

Network Node
Enabled Drivers

Note: You will need to be running Open Automation Software Version 8 or greater to support direct Modbus communications.  You can download the latest version at www.openautomationsoftware.com/downloads/open-automation-software/

Step 2 – Configure Modbus Drivers

Select Configure-Drivers.

Configure Drivers

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

Modbus Driver Interface Name

Set the Driver type to Modbus.

Modbus Driver

Set the Type as Master to communicate with a Modbus device.  Set to Slave if OAS is to interface with one or more Modbus masters.

Modbus Type

Set the Connection type as Ethernet or Serial.

Modbus Connection Type

Set the Ethernet Type or Serial Type to the Modbus protocol to use.  For Ethernet connections TCP is the most common. For Serial connections the most common would be RTU or ASCII. OAS supports all protocols on both connection types.

Modbus Protocol

Ethernet Connection:

Specify the IP Address and Port Number. For Master connections specify the IP Address of the Modbus device. For Slave connections et the IP Address to the computer IPv4 IP address or network node name if the master is on a remote PC.  You can also use 127.0.0.1 or localhost if the Modbus master will be on the same computer as OAS.

Modbus Ethernet

Serial Connection:

Specify the Serial Port Number for Windows or Linux Port Name for Linux.

Modbus Serial

Specify Timeout and Number of Retries when a communication failure occurs.

Modbus Timeout

For Master connections Enable Single Write controls how individual writes are performed.

When enabled Function Code 05 to be used when there is only one Output Coil to write, Function Code 06 to be used when there is only one Holding Register to write.
When disabled Function Code 15 will always be used for Output Coils and Function Code 16 for Holding Registers.

Enable Single Write

For Master connections Enable Multiple Write allows multiple holding registers with contiguous addresses to be sent in one packet.

Enable Multiple Write

Set Bad Msgs to Offline to the number of successive communication failures to stop communications to the device and retry at the rate specified in Return to Online.

Messages to Offline

NOTE: Set Bad Msgs to Offline to 0 to leave the device online at all times.

For redundancy support optionally define a secondary failover device if the primary device fails with the property Enable Failover.


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

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

The Comm Bad and Comm Good properties can be used to assign an Integer Tag to be updated with the communication summary of the driver interface.

Comm Bad CountWill set a tag with the driver interface Comm Bad Count.
The number of times the communications of the driver interface has transitioned from good to bad. Can be reset to 0 when tag defined to Comm Count Reset transition from false to true.
Comm Bad Read CountWill set a tag with the driver interface Comm Bad Read Count.
The number of communication reads from the device has failed for the driver interface. Can be reset to 0 when tag defined to Comm Count Reset transition from false to true.
Comm Bad TimeWill set a tag with the driver interface Comm Bad Time.
The time in seconds the communications to the device has been bad. Can be reset to 0 when tag defined to Comm Count Reset transition from false to true.
Comm Bad Write CountWill set a tag with the driver interface Comm Bad Write Count.
The number of write failures to the device. Can be reset to 0 when tag defined to Comm Count Reset transition from false to true.
Comm Good CountWill set a tag with the driver interface Comm Good Count.
The number of times the communications of the driver interface has transitioned from bad to good. Can be reset to 0 when tag defined to Comm Count Reset transition from false to true.
Comm Good Read CountWill set a tag with the driver interface Comm Good Read Count.
The number of communication reads from the device has succeeded for the driver interface. Can be reset to 0 when tag defined to Comm Count Reset transition from false to true.
Comm Good TimeWill set a tag with the driver interface Comm Good Time.
The time in seconds the communications to the device has been Good. Can be reset to 0 when tag defined to Comm Count Reset transition from false to true.
Comm Good Write CountWill set a tag with the driver interface Comm Good Write Count.
The number of successful writes to the device. Can be reset to 0 when tag defined to Comm Count Reset transition from false to true.
Comm Count ResetDefine a Boolean tag that can reset the Comm Counts and Times.
A transition from false to true will reset the counts.

Select the Add Driver button in the upper left 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 with Microsoft Excel.

CSV Import and Export

Drivers can also be programmatically assigned with the OAS REST API or .NET Server Configuration interface.

Step 3 – Configure Modbus Tags

Select Configure-Tags.

Menu Configure Tags

Select Add Group to add a group to place tags in.

Add Group
Add Tag Group

NOTE: You can 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.

Tag Group Options

Select Add Tag to add a tag to the group selected.

Add Tag
Add Tag to Group

Change the Data Source Tag property to Modbus.

Modbus Data Source

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

Modbus Driver Interface

Specify the Device Address (set as -1 if it is not to be used on Ethernet)

Device Address

Select the correct Memory Type from the Memory Type pull down.

Modbus Holding Register

NOTE: Use the “As Boolean” types to access bits of a 16, 32, or 64 bit Integer.

Specify the Address for the memory location.

Modbus Memory Location

The base of the memory type will be added to the Address.

Extended addressing is also supported.

To communicate to 410001 set the Memory Type to Holding Register and the address to 10001.

To communicate to 465535 set the address to 65535.

Following are some examples.

  • To access 40,001 use address of 1
  • To access 49,999 use address of 9,999
  • To access 50,000 use address of 10,000
  • To access 410,001 use address of 10,001
  • To access 420,000 use address of 20,000
  • To access 430,000 use address of 30,000
  • To access 440,000 use address of 40,000
  • To access 450,000 use address of 50,000
  • To access 460,000 use address of 60,000
  • To access 465,535 use address of 65,535

NOTE: Zero Based Addressing will subtract 1 from the address when communicating to the device.

Zero Based Addressing

Example: Communicating to Holding Register 40000 the Memory Type will be Holding Register and the Address would be 1.

For Input Register and Holding Register Memory Types select the correct Modbus Data Type.

Modbus Data Type

Word Swap and Byte Swap can be enabled to swap words or bytes within the value received or sent.

Word Swap and Byte Swap

Max Words per Packet is used to control the maximum number of words allowed in each communication packet. OAS can support up to 10,000 words per packet if the device can support it. Most Modbus devices only support 125 words per packet.

Max Words per Packet

Set the desired Polling Rate for reading from the device. The rate can be set to 100 nanoseconds, but the lowest practical rate would be 20 milliseconds or 0.02 seconds.

Polling Rate

To disable communications to the device you can use Enable by Tag to control when communications is active. Leave this property disabled to establish communications at all times.

Enable by Tag

The Device Read property can be used to disable continuous polling and request data on event from the transition from false to true of a value of a Boolean tag. Leave this property disabled to establish communications at all times.

Device Read

Each Modbus Tag provides communication stats for success or failure on reading and writing to a device. Use the property Quality Stats Reset by Tag to define a Boolean tag that will reset the stats on a value transition from false to true.

Quality Stats Reset by Tag

Select Apply Changes to make the changes active on the tag.

Apply Changes

Check that the data quality of the tag is Good Quality and the value from the device is returned.

Good Quality

If the data quality is Bad Quality view Troubleshooting Modbus Bad Data for solutions to common errors.

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

CSV Import and Export

When exporting tags choose which columns to include in the CSV file. There are over 800 properties available for use in each tag and reducing the amount of data can help to focus on the properties of interest.

Tag CSV Export Columns

NOTE: Tags can also be programmatically assigned with the OAS REST API or .NET Server Configuration interface.

Step 4 – Save Modbus Tags and Drivers

Select the Save button on the toolbar at the top.

Load and Save

Enter a file name to be saved in C:\ProgramData\OpenAutomationSoftware\ConfigFiles directory on Windows or ConfigFiles subdirectory on Linux.

When prompted to set the file as the default configuration to load on startup select Yes.

Set Default Tag File

The tags defined are now ready for use in all OAS features like Data Logging, Data Route, and Open UIEngine.

Getting Started – Web HMI

The following content will get you started with Web HMI, building your own web user interfaces with real time data.

NOTE: If you want to visualize your data in a desktop or mobile browser with zero programming, you may be interested in the OAS Open UIEngine .
The UIEngine is a robust no-code web application and HMI builder for developing rich user interfaces in a browser-based development environment.
See the UIEngine Documentation to learn more.

For full reference information on Web HMI visit Programming Reference – Web HMI

View the following video to see how to use Web HMI to create user interfaces.

  • 00:00 – Introduction
  • 00:07 – What’s HMI?
  • 00:54 – Open Standards
  • 01:03 – Web HMI utilizes a direct line of communication
  • 01:23 – What can be built with Web HMI?
  • 02:51 – Setting Up the server
  • 02:57 – First Step – Registering a listener on the server
  • 03:40 – Configure Tags
  • 04:25 – Writing Code
  • 05:47 – Text Editor
  • 06:07 – HTML attributes
  • 14:12 – Develop Same Functionality Programmatically
  • 18:30 – More Information

Step 1

Configure Web Services within the OAS Platform. For instructions on how to accomplish this as well as optionally using SSL for secure communications, see the following article:
Configuring OAS Web Services


Step 2

Create a project directory. (Example C:\myWebHMI)


Step 3

Copy the 4 supplied files from C:\Program Files\Open Automation Software\OAS\HTML_HMI, js and css subdirectories to your project directory keeping the directory structure just the same.


Directories
1. js/lib/jquery-1.8.3.min.js
2. js/lib/json2.js
3. js/opc-lib-min.js
4. css/opc-style.css

Note: You can use any version of jQuery as long as it is v1.8 or greater, and the json2 library is only necessary for older browsers such as IE 8.


Step 4

Open/create a new text document and add the following minimum code:

<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="js/lib/jquery-1.8.3.min.js"></script>
        <script type="text/javascript" src="js/opc-lib-min.js"></script>
        <script type="text/javascript" src="js/lib/json2.js"></script>
        <link rel="stylesheet" stype="text/css" href="css/opc-style.css"/>
        <script type="text/javascript">
            OAS_config = {
                token:'7e61b230-481d-4551-b24b-ba9046e3d8f2',
                serverURL: 'http://localhost:58725'
            };
        </script>
    </head>
    <body>
    </body>
</html>

Networking

In the web page set the serverURL to the IP Address, Network Node Name, or registered domain name of the Linux or Windows devices where the OAS Engine located.

serverURL: 'http://192.168.0.1:58725'

Specify the tag names in the HTML code as local tags.  The web browser can be run locally or remotely, it will communicate to the server specified in the serverURL as a relative path for the tag values.  In this example the tags would be running on the same server as 192.168.0.1 and the content in the page would reference the tag as local even if the client browsers are running on remote devices.

Local Tag

myGroup.myTag.Value

If the tag is located on a different system than the serverURL or you want to host data from multiple OAS Engines use the Remote Tag Access syntax.

Basic Networking

\\192.168.0.1\myGroup.myTag.Value

Live Data Cloud Networking from local OAS Engine

RemoteSCADAHosting.myLiveDataCloudNode.myGroup.myTag.Value

Live Data Cloud Networking though remote OAS Engine

\\192.168.0.1\RemoteSCADAHosting.myLiveDataCloudNode.myGroup.myTag.Value

Step 5

If you are new to HTML code use the HTML Wizard code generator at http://opcweb.com/wizard/ to generate the code for you.

HTML Wizard
HTML Wizard

In the body add the following code to display the Ramp tag value:

<div>Ramp Value =  <label id="txt1" oas-tag-txt='{"tag":"Ramp.Value","config":{"formats":{"bad_q":"?????","float":"0.0"}}}' ></label></div>

Step 6

Below the Ramp code add the following code to display the Pump tag Value:

<div>Pump Value = <label id="txt2" oas-tag-txt='{"tag":"Pump.Value","config":{"formats":{"bad_q":"?????"}}}' ></label></div>

Step 7

Finally below the Pump code add the following to create a button that will allow you to “Toggle” the Pump Value.

<div><button id="tog2" oas-tag-set='{"tag":"Pump.Value","config":{"evt":"click","offset":0,"set":"toggle","set_src":""}}'>Toggle Pump</button></div>

NOTE: To be able to set a value (write to it) it must first be setup to read in the web application.


Step 8

Save your file as myWebHMI.html

Web HMI Getting Started 3

Step 9

Deploy the your application to any web server. This can be IIS on Windows, or any HTTP server on Linux, and even cloud hosting services.


Step 10

To see the results open a browser to the location of your HTML file.


Full Source Code

Your final code should look like this:

<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="js/lib/jquery-1.8.3.min.js"></script>
        <script type="text/javascript" src="js/opc-lib-min.js"></script>
        <script type="text/javascript" src="js/lib/json2.js"></script>
        <link rel="stylesheet" stype="text/css" href="css/opc-style.css"/>
        <script type="text/javascript">
            OAS_config = {
                token:'7e61b230-481d-4551-b24b-ba9046e3d8f2',
                serverURL: 'http://localhost:58725'
            };
        </script>
    </head>
    <body>
    <div>Ramp Value =  <label id="txt1" oas-tag-txt='{"tag":"Ramp.Value","config":{"formats":{"bad_q":"?????","float":"0.0"}}}' ></label></div>
    <div>Pump Value = <label id="txt2" oas-tag-txt='{"tag":"Pump.Value","config":{"formats":{"bad_q":"?????"}}}' ></label></div>
    <div><button id="tog2" oas-tag-set='{"tag":"Pump.Value","config":{"evt":"click","offset":0,"set":"toggle","set_src":""}}'>Toggle Pump</button></div>
    </body>
</html>

NOTE: To be able to set a value (write to it) it must first be setup to read in the web application.

Open Automation Software provides a tool for automatically creating the HTML code to read and write to Open Automation Software Tags using the HTML HMI Wizard.