Download as pdf or txt
Download as pdf or txt
You are on page 1of 212

 Action.

NET™
User Guide

www.spinengenharia.com.br
Spin™ Action.NET™ User Guide 
© 2014 Action.NET™
Spin and Action.NET are trademarks of Spin Engenharia de Automação Ltda. 
Other product and company names may be trademarks of their respective owners.
Contents

1: Getting Started 1
Welcome to Action.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
About This Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Getting Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
System Requirements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Installing Action.NET. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Starting Action.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Licensing Action.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Installing services on IIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Installation Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2: Technical Overview 15
Action.NET Platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
What is Action.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Application Areas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Network Topology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
System Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Real-time, in-memory database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Object Model and Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Action.NET Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Action.NET Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Realtime Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Graphical Displays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Security and Redundancy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Trend and Historian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Devices Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Alarms and Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Datasets and SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Scripts and .NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Reporting and Data Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Testing and Running Projects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Information and Version Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3: Managing Projects 35
Viewing Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Creating a Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Finding Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Allowing Remote Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Accessing Remote Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Running Projects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

Action.NET User Guide i
D raftSeptem ber10,2013

Upgrading Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Project Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Engineering Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41
SQL-Centric Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41
Multi-User, Multi-Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41
Project Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41
Project Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .41

4: Engineering Workspace 43
Workspace Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Grid Splitter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Using the Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Undoing and Redoing Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44
Smart Cut, Copy and Paste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
Print, Save to a File or Import. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
Finding Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
New Tag and Tag Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
Security Logon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
Help Button. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
Navigating in the Workspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Working with DataGrid Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Editing Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Tooltips and Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Sorting, Filtering, and Grouping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Adding and Removing Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Common Column Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Copying and Pasting Rows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Importing Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Using the Cross-Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Intellisense and Refactoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Dictionaries and Localization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Runtime Language localization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Enumeration Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Categories Dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Import Wizards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Import Action.NET Projects: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .56
Import Rockwell ControlLogix. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57
Import OPC server configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57
Import From OSIsoft PI System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57
Importing XML tag templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57
Importing .NET classes from a DLL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57
Configuring Preferences. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

5: Tags, Assets and Templates 59


Creating and Editing Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Built-in Tag Types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62
Reference Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .63

ii  Contents
D raftSeptem ber10,2013

Tag Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Creating Tag Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Creating Assets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Creating Categories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Tag Runtime Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Tag Namespace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

6: Historian and Data Logging 69


Adding Tags for Data Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Configuring Historian Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Historian Database Provider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Using OSIsoft(tm) PI System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Historian Tables Schema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Visualizing Trend Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Customizing Getting Samples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Historian Runtime Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

7: Security and Users 75


Adding and Editing Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Configuring Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Configuring Policies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Removing Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Managing Runtime-only Users. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Customizing Login Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Security Runtime Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

8: Devices and Interfaces 81


Communication Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Included Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Supported Protocols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Additional Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Driver toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Configuring Channels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Configuring Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Importing from an OPC Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Importing PLC Addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Configuring Data Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Configuring Access Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Diagnostics tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Module Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Property Watch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Trace Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Device Runtime Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

9: Alarms, Events and AuditTrail 95


Configuring Audit Trail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Configuring Alarm Options. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Configuring Alarm Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

Action.NET User Guide iii
D raftSeptem ber10,2013

Configuring Alarm Items . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97


EditAlarmsItems.Condition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .98
Visualizing Alarms and Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Alarm Acknowledgment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Subscribing Notifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Alarm Database and Table Schema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Alarm Runtime Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

10:Datasets and Data Exchange 101


Configuring Database Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Accessing Microsoft Excel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Configuring Database Tables Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Configuring Database Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Configuring Files for Data Exchange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Dataset Runtime Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108

11:Scripts and .NET Framework 111


Configuring Tasks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Configuring Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Working with the Code Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Configuring Expressions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Using the .NET Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Creating debugger Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116
Attaching the .NET debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116
Breakpoints, steps and watch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116
Script Runtime Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

12:Displays and Symbols 119


Selecting and Creating Displays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Creating Layouts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Displays Code Behind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Desktop and iOS Client Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Designer Drawing Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Dynamics and Animations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Action Dynamic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133
Shine Dynamic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134
Text I/O dynamic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .135
Hyperlink dynamic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .135
Fill, Line and Text Color Dynamic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .136
Bargraph Dynamic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137
Visibility Dynamic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .138
MoveDrag Dynamic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .138
Scale Dynamic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139
Rotate Dynamic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139
Skew Dynamic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .140
TextOutput Dynamic. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141
User Interface Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Configuring a Circular Panel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141

iv  Contents
D raftSeptem ber10,2013

Configuring a PieChart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142


Configuring a BarChart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Configuring an Alarm Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Configuring the Trend Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Configuring a DataGrid Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Managing Images and Symbols. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Image Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Managing Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Display Runtime Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148

13:Reports and Data Access 149


Creating Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Using the Report Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Report Runtime Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

14:Run, Test and Publish Projects 151


Running the Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Using the Diagnostic Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Property Watch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Trace Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Module Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Build and Pack Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Project Version Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Tracking configuration changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Publishing the Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Information Runtime Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

15:Deploying Action.NET Projects 159


Local and Distributed Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Product installation on the target computer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
License and Project Settings Verification. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Installing the Project Configuration files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Setup the server to start the runtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Using a Shortcut on Windows Startup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Creating the shortcut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Using a Windows Service to Startup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Remote Client Users Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Windows Rich Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Windows Smart Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Windows Web Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Automatically Starting Windows Clients. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
iOS, iPhone and iPads, Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Deploying Redundant Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Configuring Redundancy options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

16:Runtime Namespaces 173

17:Action.NET Versions and Licenses 175

Action.NET User Guide v
D raftSeptem ber10,2013

Action.NET Version numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175


Action.NET Licenses Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Product Family and Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Remote Project Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Project Settings versus License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Using Multiple Versions Concurrently. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

18:Glossary 181

vi  Contents
1: Getting Started

The following sections will help you get started with Action.NET:
 “Welcome to Action.NET” on page 1
 “About This Guide” on page 2
 “Getting Help” on page 2
 “Installing Action.NET” on page 4
 “Licensing Action.NET” on page 5
 “Starting Action.NET” on page 5
 “Licensing Action.NET” on page 5
 “Installing services on IIS” on page 6

Welcome to Action.NET
Action.NET software (Action.NET) is a powerful platform/framework to develop and
deliver applications. Action.NET provides a rich, unique, and intuitive user interface,
dynamic graphics complemented by a graphic editor, and real-time data acquisition
capabilities from an extensive library of industry protocols.
Action.NET’s comprehensive feature set also includes easy information exchange and
data access with databases such as Microsoft SQL Server, OSIsoft(tm) PI Systems,
Oracle, Sybase, Informix, MySQL and others. The system includes a user-friendly alarm
server and event notification module, a logging and reporting module, an advanced
historian server, business logic management capabilities, as well as support for local and
remote clients, browser based, as well as for the iPad and iPhone.
Action.NET was built from the ground up, without using any legacy code. It is a 100%
managed-code application that lets you leverage and take advantage of the full potential
of the Microsoft .NET Framework today as well as tomorrow. Action.NET fully supports
Software as a Service (SaaS) deployment combined with typical local installations, letting
you access and collaborate on development and projects anywhere in the world with just
a web browser.
Automation engineers can develop SCADA/HMI (supervisory control and data
acquisition/human machine interface) projects that automate a myriad of functions on
your factory floor. IT personnel can develop projects that centralize information and send
data to portals for management and analysis. In addition, a single project can perform
both automation and management functions.

Action.NET User Guide 1
About This Guide
This guide is for users of Action.NET and describes how to install and use the software.
You should be familiar with your systems and control needs.
This guide uses the following symbols and typographical conventions.

Convention Description
Bold Words in bold show items to select or click, such as menu items or
buttons.
Warning contain critical information that may affect your data and
Warning system.

Tip contains useful information to enhance your application design


Tip and productivity.
Notes contain important information that may affect how you install
Note or configure your system.

Getting Help
User Guide and Google Search
The Action.NET User Guide is available on PDF and CHM at the local computer and
online using standard HTML pages or using a WEB-only interface with integration with
Google Translation. for multi-language support, and direct links to social media.
The entry point to all four Help formats is located at the Info-Help area on the Project
Configuration Workspace, and is also accessible clicking on the Help Icon or pressing
F1.
All the Help formats support context search. You also do a Google Search on the Spin
website, the advantage of the Google Search is that it includes all the on line help files,
plus all content on the Spin web site, including the web forums.
At the Info-Help page, on the Project Configuration Workspace, contains an User
Interface to enable you to do Google Searches on the Spin Site without leaving
Action.NET window.
Online Forum, E-mail and Phone
Registered users have free access to the Online Forum at the Spin site. If you have any
difficulties creating your account, send an email to support@spin.com, this email account
is also the entry point to open technical support tickets for licensed users.
If you are not yet a licensed user and are evaluating the product, you are also entitled to
support, send your questions and requests to info@spin.com.

2 1: Getting Started
Licensed users also have access to phone support. Contact us for special agreements
(charges may apply) regarding support outside business hours, 24 hours support or on
line sessions.

Distributor Support
In many countries and in the USA, Action.NET is sold through formal Distributor partners.
A Spin Distributor always has an internal technical staff, trained by Spin, to handle the
technical support within its distribution region.
The Distributor has close contact with its customer base, so it is the preferable source of
technical information when available within your region.
The Distributor is also certified to perform Action.NET training sessions.
System Integrators and VARs
Spin has a System Integrator and VAR program to fully support companies developing
applications and solutions on top of Action.NET platform. The System Integrators and
VARs are the primary source to support end-users questions that are specific to the
project configurations and solutions created by them.

System Requirements
Following are the system requirements for Action.NET:
 Microsoft .NET Framework v4.0
 Operating systems: Any Operating System able to run the Microsoft .NET
Framework 4.0 or Virtual Machines compatible with the Microsoft .NET
Framework..
 Windows 7, Windows 8, Windows Vista, Windows Server 2008 and
Windows Server 2012 all come with Microsoft .Net installed.
 For Windows XP, you must install Microsoft .NET Framework v4.0.
 RAM Minimum requirements: Runtime 1 GB, Engineering 2 GB
 Disk space—150 MB.
 Display resolution:
 For developing applications—Minimum of 1024 x 768.
 For the application runtime—Displays are resolution independent, so you
can create applications ranging from small 6" panels up to large high
definition monitors.
 For access to web-based installations, Internet Explorer v8 or later.

Action.NET User Guide 3
Installing Action.NET
Action.NET is available as a download from the web site or from a USB. CDs are still
available upon request. If you downloaded the Express version for evaluation purpose
only, the installation does not require a license key.
The Express version permits up to 75 communication points and two hours of runtime per
use and it is only intended for product evaluation and learning; Express versions are not
allowed to be sold or applied on projects for production installation.
The fully licensed version has no runtime limitations. For information about purchasing a
license, contact your distributor.
If you have Microsoft Internet Information Services (IIS) installed on your computer, you
will see a message during installation that the embedded web server could not be
installed. All features of Action.NET work without the embedded web server, except for
remote access to projects and serving runtime web pages. If you want to use these
features, you can configure IIS to work with Action.NET as described at section “Installing
services on IIS” on page 6.
Use Windows Update to make sure you have all of the latest critical updates installed.
Some anti-virus, such as Bit-defender, shall be disabled before running the installation.
1. If you are using Windows XP, install Microsoft .NET Framework 4.0.
 If you have Microsoft Office installed, this is typically already installed. If
needed, you can install it from http://www.microsoft.com/en-us/download/
details.aspx?id=17851.
2. Double-click the installation file.
 The Welcome window displays.
3. Click Next.
 The “Choose setup type” window displays.
4. Select the type of installation you want and click Next:
 Typical—Select for most installations.
 Custom—Select only when you know you need to use specific protocols,
and you do not want to install additional protocols. Deselect the protocols
you do not need.
 The “License agreement” window displays.
5. Read the license agreement and if you agree to it, click Accept.
 The “Select installation folder” window displays.
6. If you want to install to a different directory from the default, click Browse and
navigate to where you want to install.
7. Click Next.
8. Click Install.

4 1: Getting Started
 When the installation is complete, click Finish.
 If you purchased a license, you can license your installation. For more
information, see “Licensing Action.NET” on page 5. If you did not purchase
a license, you can use the Express version for evaluation and learning
purposes.

Starting Action.NET
After you install Action.NET, you should have a shortcut on your computer’s desktop and
an item on your Start menu.
To start Action.NET:
1. Do one of the following:
 From your computer’s desktop, double-click the Action.NET icon.
 From the Start menu, select All Programs > Spin > Action.NET.
 The main page displays. From this page, you can create, open, and
search for projects. The section “Managing Projects” on page 39
explain how use the Project selection interface.

Tabs

Click to select
adifferentview
ofthe project

Licensing Action.NET
If you purchased a license, you can license your installation. After you purchase the
license, you must register the license key. If you did not purchase a license, you can use
the Express version for training and evaluation.
The license can use a softkey or a hardkey (dongle). You can connect a hardkey to a
computer that has already a softkey installed. While the hardkey it is connected, the
system uses the hardkey’s license settings.

Action.NET User Guide 5
Use the same procedure as below to update a license for both softkey and hardkey
licenses.
For more information about licensing, see “Action.NET Versions and Licenses” on
page 187.
To license Action.NET:
1. Make sure that the logged in user has local administrator privileges of the
machine.
2. M ake sure thatatthe U serAccountControlsettingsthe option "N evernotify" isselected.
 G o to ControlPanel> U serAccounts> Change U serAccountControlsettings.In
the window thatopens,the leftside ofthe barshould be placed in the position below
indicating "N evernotify." You m ay need to restartthe com puterforthe notification
to take effect.
3. StartAction.N ET.
 See “Starting Action.NET” on page 5.
4. From the main Action.NET page, click License.
 Or go to Info > License > Register. when editing a project.
5. If you are using a dongle, connect it to your computer.
6. Click Get Site Code.
7. Navigate to where you want save the file, accept the default file name, and
click Save.
8. When the confirmation message displays, click OK.
9. Send the file to your distributor or to sales@spin.com.
10. After you receive the license key file via email, place the license key file in a
folder on your computer or network.
11. If you are using a dongle, connect it to your computer.
12. Start Action.NET.
13. From the main Action.NET page, click License.
14. Click Load Licensekey.
15. Navigate to the folder with the license key file and select the file.
16. Click Open
17. Verify the License Information, that shall show the serial number and the new
license settings.

6 1: Getting Started
Installing services on IIS
When installing Action.NET, if IIS was previously installed, you will not be able to install
our embedded web server (TWebServer.exe).
The Action.NET software will run without the web server, except by remotely accessing
project configurations and serving runtime web pages; all other Action.NET engineering
and runtime tools run without needing to install the TWebServer or to do any IIS
configuration.
If you want to enable remote engineering access and the web clients using IIS, you need
to install some Action.NET services in IIS or enabled the TWebServer embedded web
server. Another scenario where IIS is necessary is when you want to run the RUNTIME
as a Windows Service, and also to provide remote access to project web pages, iPad
displays and project engineering.
In order to enable the TWebServer stop the IIS server or other applications potentially
using port 80 and run the product installation. In order to setup the IIS server, follow the
procedure in this chapter.
This section is the explanation of how to install those services in IIS. The explanation
targets IIS 7.x and 8, but other versions should be similar.
You are going to install three services inside IIS:
 TProjectServer —Allows you to remotely access your project configurations.
 TVisualizerWeb/TVisualizerRemote —Allows remote access to runtime
displays.
 iDataPanel—Is the service to provide data to iOS devices.

Installation Procedure
1. Verify that IIS is installed by going to Control Panel > Administrative Tools
and looking for Internet Information Services (IIS) Manager in the list.
2. Enable ASP.Net and .Svc Handlers for the WCF Service.
On IIS 7.x:
If IIS was installed after the installation of the .NET Framework it is necessary to run and
verify a procedure as described on http://msdn.microsoft.com/en-us/library/
ms752252.aspx which is to run the following programs using the command prompt as
Administrator:
 From the Microsoft .Net folder, open the Command Prompt and rung the
following commands:

aspnet_regiis.exe –i –enable
ServiceModelReg.exe -r
 Microsoft .Net is installed in one of the following folders:
 C:\Windows\Microsoft.NET\Framework\v4.0.30319 (for 32-bit
operating systems)

Action.NET User Guide 7
 C:\Windows\Microsoft.NET\Framework64\v4.0.30319 (for 64-bit
operating systems)
For IIS 8.0:
 From the Control Panel, go to Program and Features, then click “Turn
Windows features on or off.”
 Enable the ASP.NET 4.5 option. Navigate the tree: Internet Information
Services > World Wide Web Services > Application Development
Features > ASP.NET 4.5:

 Enable the HTTP Activation option (under .Net Framework 4.5 Advanced
Services).

3. From the IIS Manager, verify that the extension .svc is mapped to
aspnet_isapi.dll.

8 1: Getting Started
 If needed, follow the procedure described on http://msdn.microsoft.com/
en-us/library/ms752252.aspx for the version of IIS you are using.
 The .NET Framework installation directory usually is:
C:\Windows\Microsoft.NET\Framework\v4.0.30319, or
C:\Windows\Microsoft.NET\Framework64\v4.0.30319 (for x64
Windows)

4. From the Action.NET installation folder, run the utility: InstallTWebServer.exe /


uninstall, which will remove the default TWebServer installation.

5. From IIS Manager, go to Sites > Default Web Site > Add Application and
configure the information for the services as described in following steps

6. For TProjectServer, configure:


 Alias—TProjectServer

Action.NET User Guide 9
 Physical Path—C:\Program Files\Spin\Action.NET (Default folder. Make
sure you use the correct path to the Action.NET installation folder.)
 Application Pool—Configure any pool based on .NET 4.0. Example:
ASP.NET v4.0

 Note: You should allow “Everyone” access, at least for reading


 From IE, use the URL http://localhost/tprojectserver/service.svc to verify if
the service was correctly installed. That should show a page with
information about the service.
7. For TVisualizerWeb/TVisualizerRemote, configure:
 Alias—an-2014.1
 Physical Path—C:\Program Files\Spin\Action.NET\an-2014.1 (Default
folder. Make sure you use the correct path to the Action.NET installation
folder.)
 Application Pool—Configure any pool based on .NET 4.0. Example:
ASP.NET v4.0

10 1: Getting Started
 Note: Security should enable any user (Everyone), at least for reading.
 On IE, test the URL http://localhost/an-2014.1/service.svc to verify the
service was correctly installed. It should show a page with information
about the service.
8. For iDataPanel Service, configure:
 Alias—iDataPanel
 Physical Path—C:\Program Files\Spin\Action.NET\an-2014.1 (Default
folder. Make sure you use the correct path to the Action.NET installation
folder.)
 Application Pool—Configure any pool based on .NET 4.0. Example:
ASP.NET v4.0
 Note: Security should enable any user (Everyone), at least for reading.

9. For DataPanelImages (Virtual Directory), configure:

 Alias—iDataPanelImages
 Physical Path—C:\Action.NET Projects\iDataPanelImages

Action.NET User Guide 11
10. Enable Anonymous Authentication for each of the services.

11. Setup the Compression module. If it is not installed, you will see the alert
boxes.

If it's not installed, go to


the Server Manager,
Roles, Web Server. Under
Role Services, check your
installed Roles. If Dynamic
Compression isn't
installed, click Add Roles
and install it.

12 1: Getting Started
You can go back to compression for your site and ensure Dynamic Compression is
checked. At this point, Dynamic Compression should be setup, but you really need to be
specific about what mimeTypes will be compressed.
Back in IIS Manager, go to the page for the
SERVER (not the SITE) and Click on
Configuration Editor:

From the dropdown, select system.webServer/ webdev / httpCompression:

Then click on Dynamic Types and now that you're in the list editor. Add application/json
as seen below.

Action.NET User Guide 13
After you've added them and closed the dialog.
12. If your remote users cannot access the Action.NET, you should allow
Everyone access to the Action.NET folder, at least for reading. Right-click the
folder, click the Security tab, click Edit, then add read permissions for
Everyone.

W arning
IIS must be restarted after configuring the services.

14 1: Getting Started
2: Technical Overview

This chapter provides a technical overview of the Action.NET product and a quick start guide
to understand the application areas and available configuration tools. The content is
organized in the following sections:
 “Action.NET Platform” on page 16 contains information about:
 “What is Action.NET” on page 16,
 “Application Areas” on page 17 and
 “Network Topology” on page 18
 “System Architecture” on page 19 contains information on key concepts such
as:
 “Real-time, in-memory database” on page 19,
 “Object Model and Namespaces” on page 21
 “Action.NET Projects” on page 23 presents the Project Selection and
configuration user interface
 “Action.NET Modules” on page 25 contains information about the main system
modules, including:
 “ Realtime Tags” on page 26
 “Graphical Displays” on page 27
 “Security and Redundancy” on page 29
 “Trend and Historian” on page 29
 “Devices Communication” on page 29
 “Alarms and Events” on page 30
 “Datasets and SQL” on page 30
 “Scripts and .NET” on page 31
 “Reporting and Data Access” on page 32
 “Testing and Running Projects” on page 33 expose the basic concepts on
running and testing an application
 “Information and Version Control” on page 36 explains some of features
available to manage the project life-cycle.

Action.NET User Guide 15
Action.NET Platform

What is Action.NET
Action.NET is a powerful platform to develop and deliver applications managing real-time
information, providing a complete set of modules in a unified and intuitive engineering user
interface. It includes a real-time tag database, assets and templates, alarms and events,
historian, recipes, SQL queries and database access, reporting, .NET languages scripting,
client and server OPC, WCF, Electrical protocols and native industry protocols, dynamic
graphics created on WPF and accessible from desktops, remote smart clients, web browser
and native iOS clients on iPads and iPhones.
Action.NET is vertical industry agnostic, with a flexible infra-structure for real-time data
management, it has been applied to Power & Utilities, Renewable Energy, Data-centers, Oil
& gas, Machinery, Water and waste-water and Building Automation systems.
Technology Advantages
Action.NET’s architecture was created from a green field and entirely without the
employment of any legacy code; that made it possible to create a system which is simple to
use yet very powerful and flexible. It is a 100% .NET managed code application that
empowers end-users and system engineers to leverage and take full advantage of the most
current technologies.
All-in one, complete, flexible and easy to apply
One of the core concepts Action.NET is based on, it is to provide a unified complete solution,
so the users don’t have to build puzzles before starting their projects. The unified design
from the ground up enables you to create a very flexible system, yet maintaining the easy to
use and intuitive design.

16 2: Technical Overview
Application Areas
Process Control: control systems require reliable server components and dedicated rich
displays, so the security can be enforced and you have the full power of the computer.
Action.NET has the complete set of functionality to implement distributed mission-critical
process control applications.
Native applications to iPads and iPhones: A native application can have functionality and
quality of a user interface that a web page just cannot match. Action.NET allows the same
displays created for desktops to also be available to run natively on iOS devices, including
the option from the AppleStore.
SQL and OSIsoft(tm) PI System front-end: Action.NET has many features to manage SQL
Databases, tables and queries in real time. It also has an SDK level data synchronization
with OSIsoft(tm) PI System and PI AF(tm). That makes it the number one platform when you
need to create custom dynamic graphics and front-ends to those systems.
HMI, embedded and OEMs: Action.NET has a wide range of built-in PLC protocols and a
special version for Advanced HMI visualization and embedded systems. The version control
system, small footprint and remote access made Action.NET the best choice to machine
builders and OEMs.
Performance Monitoring: The ability to create a presentation layer that is source
independent and cloud-ready, make Action.NET an excellent tool to create Operational
Dashboards, Historian, Manufacturing Intelligence (MI), Operational Dashboards, OEE and
KPI calculation and situational-awareness applications.
SCADA, MES and PIMS: Besides having the full spectrum of expected SCADA functionality,
Action.NET extended the real-time database concepts to include advanced objects, such as
data tables, dynamic arrays and images, time events, all with a tied connection with .NET
calculation engine, makes it the best possible platform for Plant Information Management
Systems or any application targeting the management and presentation of real-time
information.

Action.NET User Guide 17
Network Topology
Action.NET can be applied in different network topologies and scenarios. The most common
applications, from the Factory Floor to the IT, includes:
 Local HMI panel or embedded device, running native protocols data
acquisition and local operation.
 OPC server and data gateway
 Supervisory and SCADA system on automation islands
 Central server for Operations Centers and Integrated Control Rooms
 Data Server to cloud-ready source-independent Presentation Layer
 MES, Real-time dashboard and Plant Information Management applications.
The Action.NET system allow users to focus their know-now and work on the Process and
Applications Solution, supplying standardized components for the software infra-structure
functions, such as communication, graphics and database access.

18 2: Technical Overview
System Architecture

Real-time, in-memory database


A key differentiation point of the Action.NET platform is its ability to be applied in both hard
Process Control with real-time, in-memory information and also on Level 2 and Level 3
applications, where the information is stored on SQL databases and exchanged with external
applications.
The real-time core of Action.NET is an in-memory, event-driven database. That database is
the result of more than 25 years of continuous learning and it is a complete new design,
leveraging the current technologies and the past experiences.
The design specification included as a priority
 Reliability and operational stability.

Action.NET User Guide 19
 Distributed architecture, both internally (multi-core CPUs) as external (multiple
users and projects)
 Use operating platforms for software and hardware of broad support and
longevity
 Increase modularity for lower costs of deployment and maintenance.
 Combine flexibility and easy User Interface, allowing efficient use and open
integration with future systems and requirements.

Real-time Information Management, IT and SCADA combined


The function of real-time database, shown in gray in the diagram, is to allow the modularity of
the system, creating an abstraction layer that allows you to isolate tasks to communicate with
relational databases, communication with other systems and with the field, the user
interfaces and systems of calculation and optimization. Its structure enables synchronization
between the various processes independent of values in real-time, event notification and
update tables of information.
This Manager uses components designed specifically for the .NET platform with the
infrastructure for tracking events. Making a comparison with a real-time supervisory, or a
level 1, we have the following key differences:

20 2: Technical Overview
Table 1: Real‐time database new generation

HMI/SCADA databases Action.NET real‐time database
Basic Tags Types, such as In addition to these, also manages events, dates,
boolean, int, float (real) and texts tables, queries, and structured data.

Server-centric and centralized Distributed processing, multi-core and multi-


module processing processes, client and advanced control stations.

Proprietary access Interfaces Access via Interfaces classes.NET or web services

Definition of variables on databases Definition of variables in standard databases with


on proprietary systems support for SQL and ADO.NET

Does not allow hot swap (swapping


the project configuration without Allows hot updates with built-in version management.
stopping the application)

Persistence and redundancy


The Real-time database access to the original values and events in RAM, for the
continuity of operations in the event of critical system failure, can be used both for a disk
cache (Persistence or Retentiveness) or a TCP/IP synchronization with another station
in a Hot-Standby architecture. Both solutions are built-in to the system and the best
topology depends on the specific project requirements.
Engineering and Runtime
When creating an application, the Action.NET platform uses the concept of Engineering and
Runtime
Engineering: Refers to the application configuration, or the creation of a Action.NET project.
The Engineering tools are a set of configuration utilities, such as Table Editors, Drawing
tools, which allow you to implement the application specifications at a higher level, using
friendly configuration user interfaces, rather than low-level programming. When custom logic
is necessary, guided user interfaces allow you to create C# and VB.Net code, in an easier
are self-organized way, again providing a high-level access to the project components.
Runtime: Refers to execute the Project configuration, which means run the developed
Application. The runtime system will execute the data acquisition, calculation, logging and
alarms and provide real-time graphics displays, according the project engineering
configuration.

Object Model and Namespaces


More advanced than most systems, where you must create Tags or Variables for all internal
properties and custom logic for your projects, Action.NET allows your application(s) to
directly access all the business objects that were created in your project. This means that
user-created temporary tags are not required to manage the status of PLC network nodes,
the total number of alarms in a group, or the number of rows in a dataset. You can now
access runtime objects, business objects (representing a network node), an alarm group or

Action.NET User Guide 21
dataset, and display required information or take action directly through their built-in
properties
Action.NET has an underlying .NET object model, 100% managed code, specifically
targeting the development of Real-Time data management applications. The hierarchical
object model includes the following top-level objects, which correspond to the main modules
in Action.NET:

 Tags  Dataset
 Historian  Script
 Security  Server
 Alarm  Client
 Device  Info

That top-level hierarchy is implemented as .NET Namespaces. Each Namespace has the
.NET classes and objects created when building a project configuration. Besides having the
configuration settings, those objects also have runtime properties, methods and status.
For instance that Tag namespace has all the tags in the application and each tag has built-in
properties field properties such as Quality, TimeStamp, Min, Max, Units and many others.
Examples:
Tag.tagname1.bit0, tag.tagname2.timestamp
The same concept of the tag fields applies to all namespaces, for instance:
Alarm.TotalCount:, Alarm.Group.Warning.Disable:
When building the project configuration, filling input fields or creating scripts, the system
always has the Intellisense auto-completion, which guides you to the existing properties that
are allowed to use according to what you are editing. This feature allows you to easily “drill
down” to a specific property.
When accessing a project object in the .NET Script Editor, it is necessary to prefix the
namespace with "@" symbol in order to avoid conflict with the .NET local variables
names..Example, in Script-Tasks and CodeBehind, use:
@Tag.Analog1
@Device.Node.Node1.Status
The @ symbol is not necessary on Grids and Dialogs. Some input fields may require object
of only one type, such as Tag or Display, the Intellisense will automatically guide you to the
allowed objects.
For some users that don’t have previous experience in .NET or similar object-oriented
systems, those concepts are abstract at the beginning, but when learning the engineering
configuration tools and the Action.NET modules, the power of those concepts will be clear.
What is completely sure is that when getting used with object models and Intellisense, there
is a huge productivity increment and you no longer accept working with systems lacking
those features.

22 2: Technical Overview
Action.NET Projects
The Action.NET innovative design brings web and tablet user interface concepts to the
desktop application, making advanced engineering tools have an easy, friendly and nice user
configuration interfaces.
Multiple users can work on the same project simultaneously.

The project is one single file in the local computer, remote server or in the cloud!
This design allows for more efficient access to the to projects located in the local computer,
remote stations or cloud servers
Action.NET automatically creates metadata about the
projects, with information such as display preview,
project and tool version, date modified, project model
and more. You can change the view to cards, table, or
use the Rotate button to switch between the graphical
icon and a brief project summary.
The project has a SQL Centric Configuration, so all the project definitions, such as displays,
graphical images, scripts, report templates, all stored in a single file, which is an embedded
SQL database, supplied with Action.NET. That simple structure, simplifies a lot the back-up
and deployment of the projects. It also allows to Edit Multiple projects at the same time, as
well, enables multiple users to work on the same project at the same time.
In the middle of the display you see icons to create a “New Project”, “Open Project” to open
the project you have selected, and “Find Project” to set default paths to locate other projects.
Distributed engineering
The Server tab specifies from which computer you will be editing or running projects.
You can edit and run the project locally (LocalHost), from a remote server (Remote), or from a
Cloud server (Cloud)

Action.NET User Guide 23
All the configuration tools and features are transparent to whether you are accessing a
project from the local computer or from a remote computer. No other software components
are necessary, Action.NET supplies everything you need for distributed engineering.

Configuration workspace
The philosophy of the configuration user interface is to act like a web-page front-end where
you easily navigate to forms, fill them in and the data is automatically saved to Project
Server, like a typical web application, without the need to open/save/close and repetitive
commands all of the time or to access complex menus. For detailed information on the
Engineering workspace refers to “Appendix 4, Engineering Workspace” on page 49

24 2: Technical Overview
Action.NET Modules
The Edit button on the Engineering workspace provides access to the configuration of the
Action.NET Modules.
Consistent with the SQL-centric project configuration, the setup of each Module is just to fill
the configuration tables connected with that module.

To define, verify or edit tags to use in the project

Define USER permissions and Project access levels

Configure communication protocols and Device Data


Acquisition

Configure Alarm tags and Alarm Groups to generate


Alarms under defined conditions

Define data sources such as Files, Databases,


Specific Tables, Pre-defined queries.

Configure .NET scripts in VB.Net or C-Sharp

Select dynamic graphical displays to configure

Configure reports which including updated graphical


symbols, in XPS, HTML, ASCII, and Unicode formats

Action.NET User Guide 25
Realtime Tags
The Real-time Database Defines the application process variables,
templates and assets. The real-time database guarantees, without requiring
any additional programming, the synchronization of data among multiple
server processes and multiple client stations. A set of built-in properties, such as data quality,
time-stamp, lock state and locked value, simplifies the systems modeling. A group of tags
and other project components can be assigned to a tree hierarchy, creating an Asset view of
your system.

The Real-time database also has support to tri-dimensional arrays with size dynamically
specified, allowing efficient memory usage and templates, user defined structures and
models. Action.NET has the most complete set of real-time entities. It was the first platform
to deliver the complete correspondence of real-time tags, .NET types and SQL columns, as
show on following table.

Action.NET tag type .NET Framework type SQL database type


Digital Boolean Bit
Integer int32 int
Long int64 bigint
Double double float
Decimal decimal decimal
Text string char[] nchar, ntext, char, text,
varchar
DateTime DateTimeOffset DateTime, DateTimeOffset
TimeSpan TimeSpan Time
Timer int32 int
Image byte[] Binary, Image, VarBinary
Guid Guid UniqueIdentifier
DataTable System.Data.DataTabl
e

26 2: Technical Overview
Graphical Displays
The .NET Framework, among the various advances in technology, brought
the Windows Presentation Foundation (WPF) which is a graphical technology
that allows easy access to maximum potential of graphics cards and
hardware accelerators for images. Another benefit was the introduction of
XAML (Extended Markup Language) that allows the user interface to be created
declaratively, creating more powerful interfaces and functionality with less programming
time.
Action.NET is entirely created on top of WPF and XML, both the engineering tools, providing
a great world-class user experience, as well the runtime displays, empowering the engineers
to create advanced state-of-art applications, accessing the full potential of currently available
graphics cards, with superior development speed and effectiveness.
Action.NET includes a full featured graphical editor and designer to create the runtime
applications, uniquely created to provide the best integration with the other modules and the
real-time database, including a rich set of dynamic animations and a smart extensible
symbol library

Five types of remote clients are supported:


Rich Clients: Runs as a desktop application, allows the blocking of the Windows task-
switch. This is ideal for process control applications that need high performance and
enhanced security.
Smart Clients: Uses Click-Once technology, installs and updates on remote clients with a
single click from a browser and it is automatically updated on the remote clients when it is
updated on the server. It uses all the power of the remote computer yet retains the
advantages of a centralized install.
Web Clients: Runs directly from the Web-Browser with no installation of any software
required (nor any active-x controls!). The partial-trust security guarantees it runs in a
completely isolated secure environment.
Thin Clients: Runs using remote desktop connection or Terminal server or other thin client
technology. Typically used to run on tablets using Android or WinRT.
Tables, iPad native app. The same displays created on Windows computers are
automatically rendered to run natively on iPads on iPhones, combining the rich user

Action.NET User Guide 27
experience and security of a native app with the benefits of have only on project
configuration.
See more at “Chapter 12, Displays and Symbols” on page 131

28 2: Technical Overview
Security and Redundancy
In Action.NET, Security is used to determine which Users have access to
various components of the project. These include the ability to change Tag
values, execute commands, open Displays, generate Reports, and more.
User Sessions can be controlled so that the User is automatically logged
out of the system based on inactivity, duration of the system, or both.
Both Alarm and Security on-line conditions are automatically replicated on redundant
applications.
Together with the Alarm and Event features, the Security tools provide all the tools
necessary to create FDA-CFR 21 Part 11 compliant applications.
See more at “Chapter 7, Security and Users” on page 83

Trend and Historian


The Historian Module allows an easy setup to log process variables in SQL databases. A
built-in embedded SQL database is supplied for small and medium size databases. Large
systems can be configured to use Microsoft SQL Server, Oracle or any database compatible
with OLE-DB, ODBC or ADO.NET.
Action.NET also has the option to use the OSIsoft PI System for the Historian server, with no
programming required, complete integration and seamless access.
The graphical tools include a powerful Trend chart object with support for quality information,
annotations, vertical charts, batch comparing and more.
See more at “Chapter 6, Historian and Data Logging” on page 77

Devices Communication
This module handles communication with the programmable
controllers and field equipment.
Action.NET supports embedded communication protocol drivers to
directly access Relays, PLCs, BacNET, Remote IO, Fieldbus standards, single and multi-
loops, scanners, bar-codes, RFID devices and digital displays. The most important electrical
protocols are supported (DNP3.0, IEC-60870-5-101, IEC-60870-5-104, IEC61850, Modbus,
etc.). OPC DA is also supported, but in most cases is not required, for best performance,
easier setup and higher message control, the native protocols are used when available,
reserving the use of OPC when a native driver is not available or when the architecture
specification requires it.
The Device Configuration Tool can import databases from OPC servers, CSV or text files. If
the device is compatible, it automatically implements multi-threading on TCP/IP networks.

Action.NET User Guide 29
The addressing syntax follows the naming convention of the remote device, making
configuration and maintenance much easier; a complete set of performance and diagnostics
tools is included.
See more at “Chapter 8, Devices and Interfaces” on page 89

Alarms and Events


Action.NET’s Alarm system provides for tremendous flexibility in managing
Alarms in your system. Multiple alarm levels for each point/tag can be
defined and a whole range of behaviors, such as logging, acknowledgment,
displaying, are built-in features to simplify the configuration.
The Alarm conditions are automatically replicated on redundant servers, making certain
there are no lost Alarms in the event of a computer failure. The Alarm and Event tools are
part of the tools necessary to create FDA-CFR 21 Part 11 compliant applications.
See more at “Chapter 9, Alarms, Events and AuditTrail” on page 95

Datasets and SQL


The Dataset Module included in Action.NET provides an easy-to-use
interface to exchange data in real-time with external Databases, XML, CSV
or text files and access SQL queries and tables.
For the most common databases and data sources (Microsoft SQL Server, Oracle, CSV files,
Microsoft Access, PI, Firebird, Informix, Excel), Action.NET supplies predefined
configurations that reduce the configuration to a mouse-click. Any database that supports
ODBC, ADO.NET or OLE-DB can be accessed. A built-in SQL Database engine is also
supplied as a local database for your application(s).
The data collected with the datasets can be dynamically mapped to real-time points/tags and
can be used in scripts or reports, or presented on displays using a powerful Data Grid Visual
Object, with cell-editors and support for multiple visualization themes.
See more at “Chapter 10, Datasets and Data Exchange” on page 113

30 2: Technical Overview
Scripts and .NET
Action.NET fully supports the Microsoft .NET Framework in a built-in
integrated environment. Inside the Action.NET framework architecture you
can compile, cross-reference the objects, and access directly (using the
Intellisense) the .NET classes and your project objects, including Alarms,
Reports and Communication Nodes.
.NET languages provide a more powerful and safe option when compared with VBA or
VBScript, which are interpreted language and many errors can only be found when running
your project. With VBA or VBScript in production often you have runtime errors with
undesirable consequences. The managed environment of the Microsoft .Net Framework
provides support for finding and recovering from exceptions, thus providing a highly reliable
environment for the runtime system. Project scripts and business logic can be written in C#
or VB.NET. A complete debugging system, with breakpoints, step execution, online code
changes while debugging is included. There is also a built-in language converter that allows
you to switch the created code dynamically between the C# and VB.NET languages.
Optimization and advanced control
Although we use the name “script” to present a familiar
nomenclature to new users, this module isAction.NET
.NET engine, supporting multi-threading and advanced
programming. Besides the User Interface logics, it can
work as a process optimization module, performing the
calculation of mathematical models in a high-performance
and secure environment. The development of these
modules will just focus on algorithms and processes, since
the interfaces for reading values and historic data, firing
events and writing values are standard functions and
components already supplied by Action.NET
See more at “Chapter 11, Scripts and .NET Framework” on page 123

Action.NET User Guide 31
Reporting and Data Access
Action.NET supports SQL access, Web-Services, XML and other data-exchange interfaces
to provide data for external reporting tools. Further, it has its own built-in Report Editor.
The Report Editor allows the inclusion of dynamic text,
dynamic graphical symbols and charts, datasets and
query results, in a functionality rich and easy to use
editor. The Reports can be saved in HTML, Text, XPS
or PDF and easily presented in remote clients and web
displays. A native browser control for visualization of
Reports is included, so there is no need to exit to a third
party program to view previously generated reports.

See more at “Chapter 13, Reports and Data Access” on page 161

32 2: Technical Overview
Testing and Running Projects

The Run environment provides access to all Project execution features.

Prepare a Project for execution and save the project’s


build history.

Testing a Project provides a way to see the Project in


action before publishing it to the server for execution.

Specify which Diagnostics Tools and Modules use when


to run the Project.
Publish the Project to enable its final installation.
Increment the Project Publish revision numbers.

Tallies the number of times Tags are used in the Project.


Provides project objects cross reference

Customize your project to use other languages in Alarm


Messages and displays texts

Import Configuration data already created for OPC


Servers, any configuration table, or an entire project.

BUILD
Build compiles all displays and scripts for final verification before deploying
a project for production. Build provides complete verification of the
application logics when preparing for final production, but is not necessary
during development as all modifications in the project are automatically and transparently
being compiled in the background while you are editing.

Action.NET User Guide 33
TESTING THE PROJECT
Test lets you run the project in Test mode, which means enabling protections
that allow it to run even on the same machine that the project is running in
Startup. The Historian and Alarm logging functions are directed to use
temporary files instead of the defined database for the project production.
Optionally you can enable diagnostic tools to help resolve any issues you may be working
through. You can also decide which modules will run during your test.

PROJECT STARTUP
Startup is where you configure how your project will run in production mode.
This means enabling the Historian and Alarm logging functions to use
databases as defined in the project instead of the temporary files used in
Test.

34 2: Technical Overview
The Online Configuration checkbox allows you to establish on-line configuration. When the
Project is running you can attach to the execution, which means modifications to the project
we be shown in the running project when made.
PUBLISHING THE PROJECT
Publish creates a read-only protected version of projects suitable for
deploying in the field.
When the Publish command is executed a new Project file (with extension "teng") is created
with the version number selected.
The Published Projects ("tproj" extensions) are similar to the current project (".proj"
extension) and can be opened only in read-only mode. This provides you with a safe backup
version of published applications.
See more at “Chapter 14, Run, Test and Publish Projects” on page 163

Action.NET User Guide 35
Information and Version Control

The Info environment provides access to current Project configuration details

Project Information and settings

Track configuration changes and project releases

Create and share project notes

Access local and on-line help contents

License information and register

.
Verifying Project Information
Action.NET helps you to gather and store information about your Project. In
managing the versions of projects you may be developing, installing,
commissioning, or maintaining, it’s important to make certain you know the
versions of the software, license, project, and other settings and information.
The Project tab displays this information and allows you to change the information if needed.
Some of these fields are also available during runtime if needed.

Tracking Project Changes


A key feature in Action.NET is the ability to track changes in the project
configuration. This helps in verifying project configurations in various stages
of development and implementation.

36 2: Technical Overview
This is important because you need to be able to verify which version of a project you are
using when developing enhancements and working through diagnostics.
Action.NET tracks changes to every aspect of the project configuration. Table names
displayed, and indication is made where changes have occurred. Double-clicking on any line
in the table brings you to the editor which generated in the change.
The Changes tab provides information regarding the specific module where changes
occurred, the specific change that was made, the specific project build in which the change
occurred, as well as the date of the change and any arbitrary comments made by the user.
The Releases tab provides information regarding the date of when a project was published,
who published it, and the project build number when published.

Adding and sharing project notes


Many times during the development and implementation of a project,
developers need to be able to leave notes for themselves, or for others
collaborating on the project.
Within Action.NET, that can be done by using the Notes utility.

Notes created are of a "Post-It"-type, and are viewable by all Project design team members.
Notes are visible on the desktop when editing the Project.
Reference
Reference tab calls help information, local or on-line. The same does the
“Question” mark at upper right corner of Manager Tool Framework.

License Information
The License tab presents information regarding the currently installed
license for Action.NET.
This information will be helpful if you contact us for technical support, and
when it is time to update to a new revision.
See more at “Chapter 16, FactoryStudio Versions and Licenses” on page 173

Action.NET User Guide 37
38 2: Technical Overview
3: Managing Projects

The following sections describe how to create and manage projects:


 “Viewing Projects” on page 39
 “Creating a Project” on page 41
 “Finding Projects” on page 42
 “Allowing Remote Access” on page 43
 “Accessing Remote Projects” on page 44
 “Running Projects” on page 45
 “Upgrading Projects” on page 45
 “Project Configuration” on page 46

Viewing Projects
When you start Action.NET (See “Starting Action.NET” on page 5) the main page shows a
list of projects. The projects presented in the list are defined according the selected Project
Server (defined at the Server tab) and the selected search paths (defined with the Find
Project button).

Action.NET User Guide 39
To view the meta data information about the project, Click in the lower-right corner to
rotate the selected project icon showing the Project Information. See “Project Configuration”
on page 46 for details about the project metadata information
A Project in Action.NET stores all of the configuration for a specific application. That project
configuration is stored in a single file with extension tproj.

Tip
If the list is not showing any projects, it is because the system was unable to located Project
files on the selected Server and Search paths. Use the “Find Projects” to search projects in
the local computer, use the “Server” tab to connect to a new Project Server, or use the “Create
Project” to create a new project.

Using the ComboBox, at upper right corner of the projects window, you select on CardView
and TableView, for different views of your project list.

40 3: Managing Projects
The Projects that show in this list are all the ones found in the Search Paths, that can be
defined using the “Find Projects” command, see “Finding Projects” on page 42.
Projects located on remote computers or on cloud servers can also me managed using the
Server configuration, see “Accessing Remote Projects” on page 44.
Projects retain information about the version of Action.NET that was used to create the
project originally. Unless you upgrade the project to a newer version, the project always
opens using the version with which it was created. For more information, see “Upgrading
Projects” on page 45.

Creating a Project
To create a project:
1. Click New Project.
 The New Project page displays.
2. Enter or select the information, as needed.

Field Description
Name Enter a name for the project.
Description (Optional) Enter a description of the project.
Location Click the ... button to select or create a new folder for the project.
Note: You configure remote access to projects on a folder basis. Be sure
to place local projects into a different folder from projects that you permit
remote access to.

Action.NET User Guide 41
Field Description
Product Family Depending on your Action.NET license, you may have options here to
build applications for a specific version of Action.NET.

Tip
If you don’t have a license, only the Express family will show.
Even when you have a license you may want to create Express
projects to share demos and tutorials with users that don’t have a
license installed.

Refer to “Action.NET Versions and Licenses” on page 187, for more


information about the product families. A basic description of the product
families is
 Enterprise—Complete Action.NET functionality

 HMI—Use for smaller applications and embedded systems.

 Express—Use only for test or demonstration purposes.

 OPCServer—Create a project to work as a OPC server only, providing


data to other applications from the native protocol drivers
 You can change this setting later, if needed.

Product Model Depending on your Action.NET license, you may have options here to
build applications for a specific product model.
The product model is connected with the number of real-time
communication points you will be allowed on that project
Refer to “Action.NET Versions and Licenses” on page 187, for more
information about the product model.

3. Press Create Project

Finding Projects
When accessing your local computer, Action.NET looks for projects in the default folder and
in any folder where you have created a project. If you copy a project file to a folder,
Action.NET does not know to look in that folder for a project. You can add that folder to the
search path, so Action.NET knows to look in the folder.
You can also remove folders from the search path, if you no longer need those folders for
Action.NET projects or want to reduce the list of folders.
To find projects and manage remote access:
4. Click Find Project.
 The Find Project page displays with a list of the existing search paths.
5. Enter or select the information, as needed.

42 3: Managing Projects
Field Description
Current Project Server Display-only. Lists where the current project is running.
Include Sample Projects Selected by default. Deselect to exclude sample projects from the
list.
Include Published Selected by default. Deselect to exclude published projects from
Projects the list.
Find Click to navigate to a project. The folder for the project you select
is automatically added to the Search Paths list and all the Projects
on that folder will be presented at the list.
Search Paths  Select the folder whose remote settings you want to change,
then change the settings below.
 Click + to add a folder the search path, so that all the projects on
that folder displays in this list.
 Select a folder, then click - to remove the selected folder from
the search path, so the projects on that folder no longer displays
in this list.

6. Click Back to return to the main window.

Note
When adding a project, or a folder, all the projects in the selected folder are added to
Project List at the main page.

This page also contains the settings to allow users on remote computers to access the
projects, as described in the next section

Allowing Remote Access


Remote users can only see and access projects from the local computer that you configure
for remote access. If you want to permit remote access to one or more projects, but not to
other projects, be sure to place those projects in separate folders. When you configure
remote access (either for project editing or the runtime), you configure it for an entire folder.
All projects in a folder configured to permit remote access will be accessible to remote users.
For information about accessing a remote project, see “Running Projects” on page 45.
The software installation includes a web server (TWebServer) that permits remote access
between computers with Action.NET installed. No other configuration is needed. If you are
using the Microsoft IIS web server, see “Installing services on IIS” on page 6
To find projects and manage remote access:
7. Click Find Project.
8. Select the folder in the Search Paths list where you want to view and modify the
permissions, select the information, as needed.

Action.NET User Guide 43
Field Description
Allow Remote Access Selected by default. De-select to deny remote access to
the selected folder for editing Action.NET projects.
Allow Remote Run Selected by default. De-select to deny remote access to
the selected folder for running a Action.NET runtime.
Virtual Path Enter to provide access to just the selected folder. Anyone
accessing your computer remotely through Action.NET
can see all folders that are configured for remote access
and that do not have a Virtual Path.

9. Click Back to return to the main window.

Accessing Remote Projects


You can access and edit projects that are configured for remote access. Projects can be on
any computer or server that you can access. If you subscribe to the cloud service, you can
access projects configured on it. The Find Project function is not available when accessing a
remote computer.
You can also upload a project to the remote computer.
To access a project remotely:
10. Click the Server tab.
 This tab lets you configure and access remote projects.
11. Do one of the following:

To access a project on a remote computer To access a project on the cloud 
service
1. Select the Remote option. 1. Select the Cloud option.
2. Enter the IP address of the computer 2. Enter your Account and
where the project is. Password.
3. If configured, enter the Virtual Path of the
folder.
 The person who created the project may
have configured the virtual path.

12. Click Connect.


13. If you want to upload a project, click Upload Project.
14. Click the Projects tab.
 The list of projects available from the computer you accessed displays. The
projects available must be in folders that are configured for remote access.

44 3: Managing Projects
 If you did not enter a virtual path, you see all projects in folders
configured for remote access, but not projects in folders that have a
virtual path configured.
 If you did enter a virtual path, you see all projects in the folders
configured with the virtual path you entered.
15. Double-click the project you want to open.

Running Projects
You can run the project in any of the following ways:
 From the Action.NET main window and project list, right-click the project and
select Run Project.
 When configuring the project, go to Run > Startup and click Run Startup.
 For more information, see “Running the Application” on page 163.
 Automatically using the auto-startup settings on the Server tab.

Upgrading Projects
Projects retain information about the version of Action.NET that was used to create the
project. Unless you upgrade the project to a newer version, the project always opens using
the version it was created with.
If you now have a newer version of Action.NET, you can upgrade a project to use the newer
version.
To upgrade a project:
1. Start Action.NET:
 See “Starting Action.NET” on page 5.
 The main page displays. Any existing projects display in the lower part of the
page.
2. Select the project you want.
3. For any project that displays a ProductVersion that is older than your current
version, right-click and select Upgrade Project.
 If this option is not available, the project is already on the same version as the
current version of Action.NET.
 The system keeps the original project and adds the original version number to
the file name, so you can still open and run it with the product version with
which the project was developed. The system creates a new project with the
original project name, importing all the configurations the latest product
release.
Action.NET User Guide 45
Project Configuration
Engineering Tools
When you click “Open Project” you open the tools for project configuration, or as we used to
call, the Engineering tools.
The overview of the project configuration user interface is in “Chapter 4, Engineering
Workspace” on page 49.

SQL-Centric Configuration
All the project configuration, displays drawing, graphical images, scripts, tag definitions,
external devices mapping, and so on, are saved in a single embedded SQL database. That
file is encrypted for security and it should be opened and editing using the Project
Engineering Tools.
The project configuration is saved is a file with extension TPROJ. Using the Publish
procedure, described on “Chapter 14, Project Version Control” on page 169, you can also
create read-only versions of the project for runtime execution only, that will have the
extension TRUN.

Multi-User, Multi-Project
The system allows many projects to be opened at the same time. If you already have an
open project, just select another project in the Project Selection list and open it. When a
second instance of the same project is opened, it will open as read-only.
In order to enable concurrent-users you must have a project server licensed to multiple
engineers. On the license tab, in the Engineering Group Box, you have the number of
concurrent engineering users which can access the selected server or local computer.

Project Information
Every project file has embedded metadata with the key project information. When using the
engineering tools, that information displays at the Info-Project-Version page.
The project settings that can be user defined, such as target family and model and default
options can be defined at Info-Project-Settings page on the Engineering tools
To view and change project settings, open the Project with the configuration
tools and:
1. Go to Info > Version.
Most of the information is read-only.

Project Settings
You can view and change the project settings that you configured when you created
the project.

46 3: Managing Projects
Note
Changing some project settings may cause some configurations to be invalid. For
example, some features are only available in the Enterprise version.

To view and change project settings, open the Project with the configuration tools and go to
Info > Project > Settings.

Field Description
Product Read-only name of the product used to create the project.
ProjectPath Read-only path to the project.
Product Family Refer to “Action.NET Versions and Licenses” on page 187, for
more information about the product families. A basic description
of the product families is
 Enterprise—Complete Action.NET functionality

 HMI—Use for smaller applications and embedded systems.

 Express—Use only for test or demonstration purposes.

 OPCServer—Create a project to work as a OPC server only,


providing data to other applications from the native protocol
drivers
Note: Changing the family settings may cause some
configurations to be invalid. For example, some features are
only available in the Enterprise version.
Product Model The product model is connected with the number of real-time
communication points you will be allowed on that project
Refer to “Action.NET Versions and Licenses” on page 187, for
more information about the product model.
Culture Info Select the target language for the runtime application. This
setting controls the formatting of dates, numbers, and other
information to conform to the selected language. You can
change this setting later, if needed.
Target Framework Read-only. Shows the Microsoft Net Framework version
required for the project.
Code Language If available, select the language you want to use for writing
custom scripts. You can change this setting later, if needed.
Use Binary Select this option to historian the tag historian data in binary blob
Historian columns instead of directly accessible values.

Warning
Changing this settings changes the storage format
and the data on previous format is not automatically
converted.

Default Page Size Select the default resolution for new pages in the project. This
does not affect existing pages.

Action.NET User Guide 47
48 3: Managing Projects
4: Engineering Workspace

The following sections describe how to create and manage projects:


 “Workspace Overview” on page 49
 “Navigating in the Workspace” on page 52
 “Working with DataGrid Tables” on page 55
 “Using the Cross-Reference” on page 60
 “Intellisense and Refactoring” on page 61
 “Dictionaries and Localization” on page 62
 “Import Wizards” on page 63 and “Configuring Preferences” on page 64

Workspace Overview
The application TManager.exe provides access to edit your project configuration in
Action.NET. The user interface is similar to a web browser, with a back button, list of
recent items, and other navigation tools. Figure 1 shows the main parts of the page.
Recent items Configure workspace theme and 
user preferences
Back/forward
Toolbar

Status 
Main menu messages

Tabs
Submenu of 
the selected 
main menu

Figure 1: Action.NET project main page

Action.NET User Guide 49
Grid Splitter
You can drag the vertical bar with
the mouse to adjust the size of the
left menu frame, when you want to
have more space on the workspace
area

Using the Toolbar


The toolbar at the top of every page has all of the common toolbar buttons, such as
undo, redo, cut, copy, and paste, as well as buttons for common functions that are
unique to Action.NET.

In addition, some buttons have additional options when you right-click them. For
example, the Print and Find buttons have these additional options, as shown in
Figure 2.

Figure 2: Toolbar right-click options

The print options let you either print or save to a .csv file.
The find options let you find, go to previous, and go to next. For more information, see
“Working with DataGrid Tables” on page 55.

Undoing and Redoing Changes


The Undo and Redo buttons on the toolbar let you undo or redo any operation. When
editing tables, undo and redo are available for all changes during your editing
session.

50 4: Engineering Workspace
When editing documents (in the Draw, Reports, and Scripts areas), undo and redo
are available until you save changes.

Smart Cut, Copy and Paste


The Cut, Copy and Paste buttons are context sensitive, when the focus is on a
DataGrid they will cut/copy and paste the selected rows. When the focus is on the
drawing tool, they will act on the selected objects.
The reason for the word “Smart” is that you can copy and paste rows to and from
Excel, as well from other tables in the workspace, even if the columns are not all the
same. When copying and pasting, the Columns Titles are also copied to the
clipboard, so the system is able to put the information on the right column, no matter
the order you are displaying the columns, or if some columns does not have on the
target table.

Tip
When copying from Excel make sure to select the Row Titles. You can also copy Rows from
the Tags tables to the Historian directly to enable data logging of those tags.

Print, Save to a File or Import


These commands allow you to print the selected document (either a
DataGrid or a Drawing). The export button will save DataGrids to a
CSV file and graphical displays to JPG files. The import button will
import CSV files to the DataGrid.

Finding Objects
You may want to find where you have used a specific object, such as a tag, in a
project. The Engineering workspace provides three ways to search.
Find String button and Find Object Buttons

The Find String button is to search for a specific string in the current tab of the
current Data Grid table. Type the string you want to search in the TextBox and press
the FindString button.
The Find Object button on the toolbar accesses the Object Cross-Reference, which
lets you find where objects are used int the Project and go directly to each location.
For more information on Cross-Reference, see “Using the Cross-Reference” on
page 60
Finally you can apply dynamic filters on the
selected table, just by typing the mask on
input field. Example: *abc* will filter to show
only the rows with the letters “abc” in any position of the name; ab* will filter to show

Action.NET User Guide 51
the rows starting with “ab”. Click on the Home button to clear all the filters and reset
all the DataGrid columns viewing state to the system default.

New Tag and Tag Properties

New Tag: allows to create a new tag in the real-time database.


Tag Properties: Shows the properties of the Tag Selected at the TextBox

Security Logon
The tooltip shows the currently logged-in user and when you click it opens the
Logon Dialog. By default, when the system starts, the Guest user is logged in.
The permissions of each user are defined at “Security and Users” on page 83

Help Button
The Help button navigates the workspace to the section Info-Help, which
provides access to the local help file as well to do searches on the online
content.

Navigating in the Workspace


You navigate in Action.NET using the workspace environment, sections and tabs.

52 4: Engineering Workspace
Any Engineering workspace user interface is, therefore, identified by 3 names: the
Environment (main menu on top left), the Section (or sub-menu) and the Tab (or
Table)
To describe how to get to a specific location where you perform functions, we use a
shorthand notation.
For example, rather than saying:
Click Edit, then click Tags, then click the Objects tab.
We say:
Go to Edit > Tags > Objects.
This shorthand notation quickly tells you how to navigate to the correct main menu,
sections, and tabs.

To configure the basic elements of your project, from the Main Menu, click on the
“Edit” icon.

Define/Edit Tags to use in the


project.

Define User permissions and Project


access levels.

Configure Communication Protocols


and Device Data Acquisition.

Configure Alarm Tags and Alarm


Groups to generate Alarms under
defined conditions.

Define data sources such as Files,


Databases, Specific Tables, Pre-
defined queries.

Configure .NET Scripts in VB.NET


or C-Sharp.

Select dynamic graphical displays to


configure.

Configure Reports, which including


updated graphical symbols, in XPS, PDF, HTML, ASCII, and Unicode
formats.

Action.NET User Guide 53
To configure dynamic displays, select the Display on Edit-Displays and click on the Draw icon to
access the graphical Designer.

The Run environment provides access to all project execution commands

Prepare a Project for execution and save the project's Build


history.
Testing the project provides a way to see the project in action
before publishing it to the server for use.
Run the project configuration in production mode.
Publish the Project to enable its final installation. Increment
the project Publish Revision numbers.

Tallies the number of times Tags are used in the project.


Provides project objects cross reference.
Customize your project to use other languages in Alarm
Messages and Display text.
Import configuration data already created for OPC Servers,
any configuration table, or an entire project.

Provide access to current Project information.

54 4: Engineering Workspace
Project and product Version, location of project, Local
Language, License information.
Find information regarding published project release number
and project changes.

Leave arbitrary notes for other project engineers.

Access local and on-line help contents

License information and register

Working with DataGrid Tables


Many tabs in Action.NET display information in a table. All tables let you manipulate,
copy, paste, and import data in the same way. The following sections describe how to
use these functions:
 “Editing Tables” on page 55
 “Sorting, Filtering, and Grouping” on page 56
 “Adding and Removing Columns” on page 58
 “Common Column Definitions” on page 58
 “Copying and Pasting Rows” on page 59
 “Importing Data” on page 60

Editing Tables
Action.NET stores most configurations from the Edit menu, such as tags, alarms,
users, in tables. In most tables, you can add and edit information the same way.
To add a new table item (row):
1. Click the first column of the insertion row.
 The insertion row is the first row of the table and has an * next to it.

Action.NET User Guide 55
 After you click a column in the row, the * becomes a pencil icon, showing
that you are now editing that row.

2. Do one of the following in the column in which you clicked:


 If the column is a text field, enter the information.
 If the column is a selection field, click again, then select items from the
drop-down list or pop-up window that displays.
3. Press Tab to move through the columns in the row.
To edit an existing table row:
1. Click the column in the row that you want to change.
2. Do one of the following in the column in which you clicked:
 If the column is a text field, enter the new information. The system
overwrites the text that was in the field. To change part of the text, click
again, then make changes.
 If the column is a selection field, click again, then select items from the
drop-down list or pop-up window that displays.
More than one person can edit a project at the same time. The system saves all
changes to the project server and propagates the changes to other users. If two users
modify the same configuration table or document, the changes from the last person
who saves would overwrite any previous changes.

Tooltips and Validation


Throughout Action.NET, fields and buttons have tooltips that contain information
about the field or button. Some tooltips also include an example that can help you.
The system also validates what you enter in most fields, especially in tables. If you
see a red outline around the table cell, the entry is not valid

Sorting, Filtering, and Grouping


Information in many tabs within Action.NET displays in tables that you can sort, filter,
and group.
By default, items in table are listed in the order in which you created them.
To sort a table:

56 4: Engineering Workspace
1. From any table, click the column heading you want to use to sort.
 The items now sort in ascending alphanumeric order based on that
column.

2. Click the column heading again to sort in descending alphanumeric order.


3. Click the column heading again to return to the default order.
To filter a table:
1. From any table, hover over the column heading you want to use to filter.
 An arrow for a drop-down list displays next to the column heading.

2. Click the arrow to see the list of items in the column.

3. Select the items you want to include in the filter.


4. To remove the filter, click the drop-down list and click (Clear Filter).
To group items in a table:
1. From any table, drag a column heading to the area above the columns to
group by that column.

Action.NET User Guide 57
2. To remove the grouping, drag the column name back to the column headers
area.

Adding and Removing Columns


Tables in Action.NET display a default set of columns. Every table has additional
columns that you can display, and you can remove any of the default columns.
You can also change the order of the columns. For the definitions of columns that are
available in all tables, see “Common Column Definitions” on page 58.
To add or remove a column:
1. From any table, right-click in the column heading area.
 A list of all available columns for that table displays. Columns with a check
mark next to them currently display in the table.
2. Select or deselect columns in the list.
3. Click outside the list to close it.
4. To change the order of the columns, drag a column heading to a new location.

5. To reset the columns to the default, click Reset Grid to Default Settings.

Common Column Definitions


Several common columns are available from many tables. These columns are
defined below, rather than repeating them in the description of every applicable table.

58 4: Engineering Workspace
Table 1: Common column descriptions

Column Description
ID Database ID assigned to the object in the table. Numbers are assigned
starting from 1 for the first object created and continue as needed. The IDs
are unique only to a specific table.
Level Select the level you want to associate with the tag on the Assets tab. See
“Creating Assets” on page 74.
Category Select one or more categories for this attribute. See “Categories
Dictionary” on page 63.
DateModified Date the object was last changed.
DateCreated Date the object was created.
Description Enter a description of the object.

Copying and Pasting Rows


You can copy and paste rows into and from tables in Action.NET. The copy/paste
functions let you copy rows from one table to another within Action.NET. For example,
you can copy tags and paste them into the Historian tab or the Items tab under
Alarms.
You can also copy and paste to and from a spreadsheet.
To copy rows to another tab in Action.NET:
1. From any table, select one or more rows.
2. Right-click and select Copy Selected Rows.
3. Go to another tab in Action.NET.
4. Right-click and select Paste Rows.
To copy rows to a spreadsheet:
1. From any table, select one or more rows.
2. Right-click and select Copy Selected Rows.
 The copy automatically includes all available column headings for the tab
you are in.
3. Go to a spreadsheet and paste.
To paste rows from a spreadsheet:
1. Set up the spreadsheet columns by following the copy steps above.
2. Enter the information you want.
3. Copy the information, including the headings, from the spreadsheet.
4. From the corresponding table, right-click and select Paste Rows.

Action.NET User Guide 59
 The paste automatically places the data into the corresponding columns.
Any empty cells are ignored.

Importing Data
You can import a comma-separated values (.csv) file into any table. Column headings
must match the table you are importing into. The best way to ensure that is to copy
rows into a spreadsheet first, then edit the spreadsheet. For information about
copying rows, see “Copying and Pasting Rows” on page 59.
To import data:
1. Create the data in a spreadsheet.
 If you are creating tags or other objects, you can name the objects as
needed. If you are populating other columns, the data in the columns must
match what Action.NET expects.
2. Save the file as a .csv.

3. From the corresponding table in Action.NET, click Import from a CSV file.
4. Navigate to the .csv file and select it.
5. Click Open.
 The system imports the data into the table.

Using the Cross-Reference


You can view how many times each object in the project is used, as well as a list of
objects that are not used.

To find objects:
1. Do one of the following:
 From the table that has an occurrence of the object you want to find, select
the object. For example, select the tag you want to find elsewhere in the
project.
 The Find field in the toolbar auto-populates with the name of the
selected tag.
 In the Find field in the toolbar, enter the type of object (tag), followed by a .
(period), followed by the name of the object (the tag name in this case).
 As you type in the field, the system matches the first entry to objects in
the system. After the first ., it lists all objects of that type.

60 4: Engineering Workspace
 Next to the Find field, click .... .The Select Object window displays with a
list of all the object types. When you select an object type, the names of
that type display.
2. Click Find or from the Select Object window, click OK.
 The results of the search display at the bottom of the page.
3. Double-click any row in the find results to go to that item.
4. To close the results pane, click Find window at the bottom of the page.

To track object use:


1. Go to Run > Tools > UseCount.
To view objects that are not used, click the UnusedObjects tab.

Intellisense and Refactoring


All the input fields, either on the datagrids or at the drawing tools, where you can use
tag names or object names, which are enabled through Intellisense.
The Intellisense feature presents a list of valid objects according the letters you are
typing and the valid entries to that specific input field. You can insert the selected item
in the list pressing enter, space, the dot key or other symbol keys.
The Intellisense fields also have built-in tooltips and validation. Putting the mouse
over a field will present the expected entries to that field. When you have an invalid
input, the border of the field will become red and the tooltip will show the error.
Refactoring is the procedure of changing the definition of Tag Names, or any other
objects Names (such as alarm groups, device nodes and any other) after that
symbolic name is already in use in the application.
Thanks to the centralized SQL configuration, Action.NET allows you to rename any
object by simply typing the new name at the configuration table where that object is
defined, all the references to that object will be valid, using the new name with no
actions required.
For instance, to rename a tag that is already being used all across the project, just go
to Edit-Tags-Objects and rename it. The same applies to Edit-Alarms-Groups,
members at templates or any named object at the system.

Action.NET User Guide 61
Dictionaries and Localization

Runtime Language localization


You can localize the text in your application in as many languages as needed. You
create a dictionary for each language.

Note
To localize user interface text, be sure to select the Localizable option (Dynamics
Configuration window, TextOutput options) for each display component that you need
to localize.

To configure localization:
1. Go to Run > Dictionaries -> Localization.
2. Click New.
 The Create New Localization Dictionary window displays.
3. Enter a name for the dictionary.
4. Click OK.
5. Click Load Strings to populate the table with all controls that have strings that
are set to Localizable. In the TranslatedText column, enter the text in the
dictionary language.
6. Create controls in a display or write a script to use the object called
Client.Dictionary to configure the dictionary or dictionary options for the user.
When the dictionary changes, the dictionary changes throughout the
application.
The alarm messages can also be included in the localization if the related check-box
is set.
On Info-Project-Settings, you can also define the default Culture Information that the
application is using and the runtime property Client.CultureInfo allows you to change
it during runtime. Some display controls may get the Culture Info directly from the
Operating System, so the correct procedure is to have both the Operating System
setting and the project settings with the target culture to run the application.

Enumeration Sets
You can also use dictionaries to “translate” tag values to text. For example, a device
may have a value of 0 (off) or 1 (on). Rather than display “0” or “1,” you can display
the “on” or “off.”

62 4: Engineering Workspace
To configure Enumeration sets:
1. Go to Run > Dictionaries > Enumeration Sets.
2. Click New.
 The Create New Dictionary window displays.
3. Enter a name for the dictionary.
4. Click OK.
5. In the Value column, enter the numeric value, and in the Translated Text
column, enter the string to display.
6. For tags that use the numeric values as Enumeration Set, configure the
Parameters column to use this set.
7. When configuring a display component to use these tags, set the TextOutput
to one of the following:
8. Tagname or Tagname.Value show the numeric value of the tag.
9. Tagname.ValueAsString or Tagname.DisplayValue show the enumeration
string.

Categories Dictionary
You can create Categories in order to allow a classification of the engineering object.
Most configuration tables, such as Tags, Device Nodes, Alarm Groups, have the
Category column, where you can apply one or more categories to that object.
1. Go to Run > Dictionaries -> Categories.
2. Edit the desired categories for this project.
The object categories can also be accessed during the runtime for filtering and other
custom applications, getting the Category property of the objects. A list of all
categories defined in the Project is available during runtime at the property
Server.Categories.

Import Wizards
On Run-Extensions-Import you find a set of wizards to import project components.
This contents displayed at that interface are dynamically created according to the
DLL found in the IMPORT folder of the project installation.
System Integrators and other partner companies can create import wizards using the
Toolkits.
The built-in Import tools installed with the product are:

Action.NET User Guide 63
Import Action.NET Projects:
Add the components of the selected project into the current project.

Import Rockwell ControlLogix


Creates the Tag Names, Tag Templates and does the mapping of the PLC addresses,
all according to the information available at the L5K file.

Import OPC server configuration


Creates the Tag Names, Tag Templates and does the mapping of the OPC Client
addresses, all according to the information available by browsing to the OPC server

Import From OSIsoft PI System


When connecting with PI System Historian Servers, it automatically creates the link
with the PI Tags tags, elements and attributes from PI AF servers.
When connecting with PI AF, it automatically brings the definition of all templates and
asset elements in the selected database, as well as the mapping to communicate with
server.

Note
The Import PI wizard will only show on licensed installations with the PI Connection
module enabled.

Importing XML tag templates


Creates the Tag Names, Tag Templates according the data structure of the XML file, it
also creates the Edit-Datasets-Files configuration to read that file

Importing .NET classes from a DLL


Creates Tag Templates that matches the selected .NET classes.

Configuring Preferences
You can configure the Action.NET theme and other preferences.
To configure preferences:
1. Click on the Application button (the Blue Cube on the top of the Toolbar).
2. Change or select the options you want.

64 4: Engineering Workspace
Setting Description
Theme Select the color scheme that you prefer in the engineering
environment. The theme is also useful if you open the same
project twice (one to edit and one to view information). You can
apply a different theme to each window to distinguish them.
Grid Fonts Click to see the fonts available for the user interface. Select the
font family, typeface, and size, then click OK.
Auto-save Select how often you want the system to automatically save
document changes when editing scripts, using the drawing tools, and
creating reports.
Note: The system saves most changes automatically,
regardless of this setting. This setting is only applicable to the
functions listed above.
Confirm on Build Select to display a confirmation window every time you build
commands the project.
Allow to duplicate  Historian Tables—Select to permit the same tag name more
Tags on than once in the historian tables. You may want duplicate
tags with different rates or on different groups.
 Device Points—Select to permit the same tag name more
than once for device points. You may want duplicate tags for
different PLCs or different polling rates or when you have a
tag which is feed by a master protocol and also is a source
for a slave protocol.
Help file location  Local Installation Path—Select to use the help file that was
installed on your computer with the Action.NET software.
 Uri—Select if you want to access the help from the web site,
or you copied the help file (.chm) to a web server and want to
access the help from the web server. Enter the URI to the file
on the web server.

3. Click close in the upper-right corner.

Action.NET User Guide 65
66 4: Engineering Workspace
5: Tags, Assets and Templates

In Action.NET and throughout this guide, the term “tag” refers to any real-time
variable or its associated historical data. Tags usually map to devices, such as PLC
registers or other physical equipment in the production process. A tag can also be
connected to entries on SQL databases, external data sources, or an internally
calculated value.
The following sections describe how to configure tags:
 “Creating and Editing Tags” on page 67
 “Creating Tag Templates” on page 73
 “Creating Assets” on page 74
 “Creating Categories” on page 75

Creating and Editing Tags


Tags are the process variables for your application. Use tags and their properties to
set up the data model for your process. You can extend the types of tags available
and create new types to fit your application needs, such as machine data, equipment
status, vessels, or the representation of any asset attributes in your plant.
To create and edit tags:
1. Go to Edit > Tags > Objects.
 You can also create a tag from anywhere in Action.NET by clicking New
Tag in the toolbar.

Tip
Like any other configuration table, you can also import CSV files or copy/paste contents
directly from an Excel spreadsheet or other applications. Verify the chapter about the
“Workspace Overview” on page 49 and Action.NET for information about the DataGrid
functionality.

2. Enter or select information, as needed, at the Insertion Row.

See also: “Navigating in the Workspace” on page 52, 

Action.NET User Guide 67
EditTagsObjects table

Column Description
Name Enter a name for the tag. The system lets you know if the name is
not valid.
Note: If you edit the name of an existing tag, the system
automatically updates the name throughout the project.
Type Select one of “Built-in Tag Types” on page 70 or for user defined
type, see “Creating Tag Templates” on page 73.
Parameters If available, configure the parameters. The parameters vary based
on the tag type.
Array When not defined (blank) the Tag is not an Array.
When defining an Array with value N an Array is created from
position 0 to N.
For example, when creating a Tag array of size "5", the Array is
created from Tag[0] to Tag[5], this means that 6 elements are
created.
Two programming styles are accommodated by this method; count
from 0 to less than five and the style that interacts on the Array
counting from 1 to 5.
Description Enter a description for this tag.

3. To add or remove a column, right-click the column heading area and check or
uncheck the columns that will be visible.

Column Description
EngUnits Enter the engineering units of measure that you want to use as a
label for this tag.
StartValue Enter a starting value for this tag. This is the value the tag will be
initialized with when Action.NET starts.
Format Enter a default format for displaying the data. For example:
 N0—Number with no decimal places.

 N3—Number with three decimal places.

 X—Hexadecimal (supported only for integral types).

 C—Currency.

 When configuring output on the Displays, it is possible to define


the format to each output field individually, but in most scenarios it
is easier to attach the default formatting to the tag itself
For more information, see “Tag Formats” on page 72.

See also: “Navigating in the Workspace” on page 52,

68 5: Tags, Assets and Templates
Column Description
Retentive Select an option to save the value of the tag and its internal
properties to the database every time the value changes. This
retains the value when the application shuts down and makes the
value available when the application next starts.
 None—Does not retain the value or properties.

 ValueOnly—Retains only the value.

 Properties—Retains all properties, including the value.

 PropertiesOnly—Retains all properties, except the value.

Min Enter the minimum value that is valid for the object.
Max Enter the maximum value that is valid for the object.
Visibility Select the value visibility on the OPC server for remote projects:
 Private—Tag is visible only to the local project and redundant pair.

 Protected—Read-only tag that is visible on the OPC server to


remote projects and OPC clients.
 Public—Tag is visible on the OPC server to remote projects and
OPC clients.
Domain Tag value for the entire project or value specific to each client
display.
 Server—Tag value is consistent across the entire project and all
remote client displays. Most tags in a project should be Server
tags.
 Client—Tag value is local to each remote computer running a
client display (web or visualizer displays).
 Use Local tags to denote temporary data specific to individual
client computers. The most common use of Local tags is when
temporary data is needed to manage the user interface on the
displays. Local tags allow different values on each client
computer.
Comment Enter any comments about this tag.
[Other For definitions of other columns that are available in many tables,
columns] see “Common Column Definitions” on page 58.

4. Continue adding as many tags as you need.

Tip
With Action.NET you can replace names at any time, so an easy way to create a tag is to click
with the mouse on the Name column of insertion row, then press space and enter repetitive
times, the system will create a Tag from the same type of last one created. You can use the
mouse on the insertion row to select the Type, can click with the mouse in the header or any
other of that grid, that will also create a tag with a default name.

See also: “Navigating in the Workspace” on page 52

Action.NET User Guide 69
Built-in Tag Types

Tag Type .Net Type Value Range


Digital System.Int32 0 through 1
Integer System.Int32 2,147,483,648 through 2,147,483,647
Long System.Int64 2,147,483,648 through 2,147,483,647
-1.79769313486231570E+308 through -4.94065645841246544E-324 for negative
Double System.Double values; 4.94065645841246544E-324 through 1.79769313486231570E+308 for
positive values
0 through +/-79,228,162,514,264,337,593,543,950,335 with no decimal point; 0
Decimal System.Decimal through +/-7.9228162514264337593543950335 with 28 places to the right of the
decimal; smallest nonzero number is +/-0.000
Text System.String 0 to approximately 2 billion Unicode characters
Timer System.Int32 Same range of the Integer, but with Built-in Parameters to create timers
DateTime System.DateTimeOffset from 12:00:00 midnight, January 1, 0001 to 11:59:59 P.M., December 31, 9999
Data Interval, in Days, Hours, Minutes, Seconds and Milliseconds, where each of
TimeSpan TimeSpan
those properties can hold a Double value
Guid Guid Standard GUID unique identifier
DataTable System.Data.DataTable Holds a in-memory DataTable
Can hold an Image file contents or any binary contents. Maximum size of the
Image System.Byte[]
contents is the long value

Warning
The Decimal type was created in .NET to allow calculation with more precision than
the double, 24 four digits against 14, what is necessary when dealing with high
numbers and no rounding allowed, such as Money calculation and some very large
and precise engineering metrics, however the math operations on a Decimal can be
40 times slower then the Double. So, use the Decimal type only in the context that the
Double precision is not enough.

Timer
Built-In integer value that is generated automatically by the system to implement
various timer models:
 SquareWave: the value toggles between 0 and 1.

 Pulse: the the tag changes to 0, then changes immediately to 1.

 DelayOff: the tag behaves as a PLC Timer Off . During the runtime, if you set
the tag with some value other than the StartValue, the tag will hold that value

See also: “Navigating in the Workspace” on page 52,

70 5: Tags, Assets and Templates
for the period specified in the Interval. The tag goes back to its StartValue after
the period of time (Interval)

 Comparer: the tag is set to 1 after the specified comparer Interval, and then
goes back to zero at midnight .

For the SquareWave, Pulse and Comparer, If you set the tag StartValue, the tag
toggles between 0 and StartValue (instead of 0 and 1) .

Reference Tags
Reference Tags allows dynamic addressing of the variables.
The concept is closer to the concept of References in .NET programming, more than
the old C++ pointers. The reason is that a Reference tag, like the .NET references,
are TYPED; that means that when creating a Reference Tag, you need to define to
which tag type or tag templates the referent will be pointing to. Like the .NET
References and unlike the C++ pointers a Reference Tag cannot be defined to point
to invalid memory areas that would cause errors in the application.
The target Type for Reference types is defined at the Parameters columns.
The fact that it is a typed reference brings advantages both in Engineering and
Runtime. In Engineering it allows Intellisense to directly browse the members of the
template, when the reference it pointing to a template; In the runtime it allows string
data validation.
All Reference Tags have an additional runtime attribute that is the link, which
specifies the tag, during the runtime execution that the reference will be lined.
Essentially the Link property is a string property that should receive the target tag
name before using the reference tag. You can assign a string directly or by using a
string expression, but the best way to set the Link property is to use the Method
GetName(), which will create the string based on the current tag name. This way, you
can rename the tag without having to search the strings. It also shows the tag names
linked on the cross-reference utility.
An example project (ReferenceTags) ships with Action.NET.

Examples
@Tag.Reference1.Link = @Tag.TagName.GetName() (VB)
@Tag.Reference1.Link = @Tag.TagName.GetName(); (C#)
@Tag.Reference1.Link = “Tag.TagName” (C#)

See also: “Navigating in the Workspace” on page 52

Action.NET User Guide 71
@Tag.Reference1.Link = “Tag.TagNa” + “me”; (C#)

Note
The reason to use the methods GetName() instead of using directly the strings “”, is
even it is an allowed syntax, when using the method GetName() you retain the
benefits of Cross-Reference and Refactoring, that would be possible if you string
assignments or expressions.

Tag Formats
For valid numeric formats, refer to Standard Numeric Format Strings (http://
msdn.microsoft.com/en-us/library/dwhawy9k%28v=VS.90%29.aspx). For example:
N1 (number with 1 decimal place).
For valid date and time formats, refer to Standard Date and Time Format Strings
(http://msdn.microsoft.com/en-us/library/az4se3k1%28v=VS.90%29.aspx). For
example: d (short date).
For a more in-depth discussion of format strings, refer to Formatting Types (http://
msdn.microsoft.com/en-us/library/fbxft59x%28v=VS.90%29.aspx).
See Table 1 for numeric format examples.

Table 1: Numeric format examples

Specifier Description
N0 Number with no decimal places
N3 Number with 3 decimal places
X Hexadecimal (supported only for integral types)
C Currency

See Table 2 for date/time format examples.

Table 2: Date/time format examples

Specifier Description
T (only) Long time pattern (equivalent to HH:mm:ss).
d (only) Short date pattern (equivalent to M/d/yyyy (month/day/year) for en-us).
dd Show the day of the month as a number from 01 through 31.
ddd Show the abbreviated name of the day of the week.
dddd Show the full name of the day of the week.
MM Show the month as a number from 01 through 12.
MMM Show the abbreviated name of the month.

See also: “Navigating in the Workspace” on page 52,

72 5: Tags, Assets and Templates
Table 2: Date/time format examples

Specifier Description
yy Show the year as a two-digit number.
yyyy Show the year as a four-digit number.
hh Show the hour as a number from 01 through 12.
HH Show the hour as a number from 00 through 23.
mm Show the minute as a number from 00 through 59.
ss Show the seconds as a number from 00 through 59.
fff Show the milliseconds as a number from 000 through 999.
tt Show the A.M./P.M. designator.

Creating Tag Templates


Tag templates let you create new tag types that can have multiple attributes.
To create a tag template:
1. Go to Edit > Tags > Templates.
2. Click New.
 The Create New Tag Template dialog shows.
3. In the New Type Name field, enter a name for the tag type. In the Description,
enter a description of the tag. Click OK.
 The Templates tab displays with the name of the new template at the top of
the tab.
4. Click the insertion row to create a new attribute for this tag template.
5. Enter or select information, as needed.

Column Description
Name Enter a name for the attribute. The system lets you know if the name
is not valid.
Type Select the type of variable. Select one of “Built-in Tag Types” on
page 70 or one of the previously defined tag templates,
Parameters If available, configure the parameters. The parameters vary based
on the tag type.
Array If you need an array, set last array index. For example, if you enter 5,
the system creates a tag with six elements (0 to 5).

See also: “Navigating in the Workspace” on page 52

Action.NET User Guide 73
Column Description
Description Enter a description of the attribute.
[Other The Columns on Template Members have the same usage of the
columns] columns at EditTagsObjects.

 To delete a tag type, select it from the User Custom Type drop-down list,
then click Del.
 On the Objects tab, for new tags or existing ones, you can now use this
new template in the Type column.

Creating Assets
If you have the Enterprise version of Action.NET, assets let you configure additional
metadata for your project. For example, you can organize objects in your project,
such as tags, devices, and alarms, into a hierarchy. This lets you group tags that are
related to each other. The hierarchy may reflect such things as, areas of your
manufacturing floor or the location of your machinery.
To create assets:
1. Go to Edit > Tags > Assets.
2. Right-click the project name and select New Level.
3. Enter a name for the level.
4. Right-click the new level and select Insert Asset.
 The Select Object window displays, with all objects, by type, on the left
side.
5. Select the object type from the left side and the object you want from the right
side.
6. Click OK.
 The object becomes a child of the selected level.
7. Continue adding child or sibling levels and inserting assets, as needed.
 If needed, right-click a level to rename or delete, or right-click an asset to
delete it.
8. On the Objects tab, for new or existing tags, select the new level in the Level
column.

See also: “Navigating in the Workspace” on page 52,

74 5: Tags, Assets and Templates
Creating Categories
If you have the Enterprise version of Action.NET, you can create user-defined
categories of data that you can use as metadata for tags. Categories are useful for
filtering, both when creating the project and in the runtime.
To create categories:
1. Go to Run > Dictionaries > Categories.
2. Enter or edit the name and description for the category.
3. Continue adding as many categories as you need.
4. On the Tag -> Objects tab, for new or existing tags, select the new category in
the Category column. Other Project elements can also use categories for
project organization.

Tag Runtime Objects

Tag Namespace
All project real-time variables, or project tags as they usually are referred to in
process automation context, created at the “EditTagsObjects table” on page 68, are
available to the runtime modules as .NET objects at the Tag Namespace.
All Built-in Tag Types share a common set of properties and methods defined in the
base class TagObj. The Tags created from user defined templates, see “Creating Tag
Templates” on page 73, are implemented by the base class UserType.

 Class Type Description.
TagObj Base classes to all Tag objects.
Digital Runtime properties for tags of Type Digital.
Analog Runtime properties for all Analog Tag Types.
AnalogInt Runtime properties for tags of Type Integer.
AnalogLong Runtime properties for tags of Type Long.
AnalogDecimal Runtime properties for tags of Type Decimal.
AnalogDouble Runtime properties for tags of Type Double.
Text Runtime properties for tags of Type Text.

See also: “Navigating in the Workspace” on page 52

Action.NET User Guide 75
TDateTime Runtime properties for tags of Type DateTime.
Timer Runtime properties for tags of Type Timer.
TTimeSpan Runtime properties for tags of Type TimeSpan.
Reference Runtime properties for tags of Type Reference.
TDataTable Runtime properties for tags of Type DataTable.
UserType Runtime Properties for tags from Templates.

See http://www.spinengenharia.com.br/help/an-2014/runtime/index.html for the


complete programming reference on runtime objects.

See also: “Navigating in the Workspace” on page 52,

76 5: Tags, Assets and Templates
6: Historian and Data Logging

The Historian module performs automated data logging to SQL databases, and
others. You can also use the Datasets module to store data in SQL, but the Historian
module has a simplified configuration, with the database tables automatically created
and a built-in connection with the trend charts.
The system can also use the information on the historian on the .NET scripting, get
past values on tags or graphic displays or export the data.
The following sections describe how to configure data logging:
“Adding Tags for Data Logging” on page 77.
“Configuring Historian Tables” on page 78.
“Historian Tables Schema” on page 80.
“Visualizing Trend Charts” on page 81.
“Customizing Getting Samples” on page 81.
You can select any SQL database, such as Microsoft SQL Server, Oracle, MySQL or
any OLEDB or ODBC compliant database to store the data. By default, Action.NET
uses an embedded SQL database (SpinDB) that has a maximum capacity of 10 GB,
for information on how to select the historian database, see “Historian Database
Provider” on page 79.
When using OSIsoft(tm) PI System, there is no need to do any Historian configuration
to access the data stored in the PI System, see “Using OSIsoft(tm) PI System” on
page 80.

Adding Tags for Data Logging


After you configure your tables for the tag historian, you can configure the tags for the
historian.
To configure the tags for the tag historian:
1. Go to Edit > Tags > Historian.
 You can copy and paste tags from the Objects tab.
2. Enter or select information, as needed.

See also: “Workspace Overview” on page 49, “Navigating in the Workspace” on page 52

Action.NET User Guide 77
Column Description
Name Enter a tag name or click ... to select a tag.
DeadBand When using the Save on Change option in the historian table, the
DeadBand is how much the value must change (in EngUnits) for the
system to store the value in the historian.
Deviation When using the Time DeadBand option in the historian table, the
Deviation is how much the value must change (in EngUnits) for the
system to store the value in the historian. This value overrides the
Time Deadband logging interval.
RateOfChang When using the Time DeadBand option in the historian table, the
e RateOfChange is how much the value must change (in EngUnits) by
second, for the system to store the value in the historian. This value
overrides the Time Deadband logging interval
HistorianTabl Select the table that has the settings you want to use for when to
e save and how long to retain this tag’s value.

3. Continue adding as many tags as you need.

Configuring Historian Tables


By default, the tag historian database has one table configured. The table settings
control when tag values are written to the historian and how long the values stay in
the historian. If you want some tags to have different settings, you should configure
additional tables with the settings you need and assign tags to the appropriate table.
The table configuration is independent of the Database selected to store the
information, as described in “Historian Database Provider” on page 79.
If you want some tags to have different settings, such as the logging interval, you
should configure additional tables with the settings you need and assign tags to the
appropriate table. You can also edit the settings of the default table.
In general, do not store more data than you need. Storing a large amount of data
slows the recovery of that data. You should use triggers and deadbands that are as
large as possible, to ensure you have the information you need, without overloading
the system.
To configure a historian table:
1. Go to Edit > Tags > Historian.
2. Do one of the following:
 To edit an existing table, select it from the Historian Tables drop-down list
and click Config.
 To create a new table click New.

See also: “Navigating in the Workspace” on page 52

78 6: Historian and Data Logging
3. Enter or select information, as needed.

Option Description
Database Display-only name of the current tag historian database.
Table Name Enter a name for table in the database.
Auto Create Select to have the system automatically create the table in
the database.
Save on Change Select to store data in the table (add a row) every time a
tag associated with the table changes.
Trigger Use to store data in the table every time a tag or tag
property changes. When used with the Save on Change
option, the system stores data in the table when either the
tag value changes or the Trigger value changes.
Time Deadband (Log Enter the minimum logging interval, that is, how long the
TimeSpan) system must wait after storing the value of a tag before
storing a new value. Use with the Save on Change option
to avoid creating too many records in the database.
Life Time Number of days to retain the historian data. After that time,
the older rows are automatically deleted from the
database. To never delete data, leave this field blank or
enter 0 (zero).
Compress Number of the days before compressing the data. The
compressed data is still available to trend charts and
scripts, but access is slower. To never compress the data,
leave this field blank or enter 0 (zero).

Historian Database Provider


The database used to store the Tag Historian is defined in Edit > Datasets > DBs by
the database connection object named TagHistorian.
By default, when a new project is created, the TagHistorian is defined to use the Spin
built-in embedded SQL database SpinDB.

Caution
The SpinDB database should be used for databases up to 10GB. If the amount of
tags and save interval is expected to create more than 10GB, you should define
another SQL for Tag Historian Database

See also: “Workspace Overview” on page 49

Action.NET User Guide 79
In order to define another Database to store the Tag Historian database, you just
need to create a new database connection, as explained at “Chapter 10, Configuring
Database Connections” on page 113, and name it TagHistorian.

Tip
The system does not allow duplicated names, so to create a DB connection with name
TagHistorian you must rename or delete the existing row using that name.

Using OSIsoft(tm) PI System


The system can seamlessly use the OSIsoft PI System as the historian provider. In
this scenario it is not necessary to do any Historian configuration at all. If the tag is
mapped to a OSIsoft PI point, the system will automatically call the PI Server to get
data when plotting trend charts or any script or display methods requiring historian
information.
The system can work with both the PI System and our the built-in Historian at the
same time, when historical information is requested to a point, either from trend
charts or scripts, the system will look for that information on the built-in Historian
module and, if not available, it will try to find that data on the PI server.
For information on connection to PI Systems, see “Import Wizards” on page 63

Historian Tables Schema


The historian tables contain the following columns:
 UTCTimeStamp_Ticks—Date and time in Universal Time for that row in 64-
bit .NET ticks. The value of this property is the number of 100-nanosecond (1/
10th of a millisecond) intervals that have elapsed since 12:00 A.M., January 1,
0001. This is a new date/time standard used by the Microsoft .NET framework.
 LogType—Auxiliary column to show when the row was inserted: 0=on startup,
1=normal logging, 2=on shutdown.
 TagName—Column automatically created using the name of tag as the
column title. It stores the data value using double precision.
 _TagName_Q—Column automatically created for the quality of the data, using
the OPC quality specification.
Typically you can associate up to 200 tags with each historian table, but that number
is dependent on how many columns your target Database allows. The tags should be

See also: “Navigating in the Workspace” on page 52

80 6: Historian and Data Logging
defined in the same table when they have similar storing rates and process dynamic,
as you need to save one tag in the table, you need to save the entire row.

Visualizing Trend Charts


In order to visualize trend charts with historical information, you can use the built-in
trend object on the displays or reports. See section “Chapter 12, Configuring the
Trend Window” on page 157 for more information.

Customizing Getting Samples


The trend chart object calls the Historian server to get the data to plot the charts. In
some scenarios, you may want to override that configuration and define a .NET code
to provide the values. This is used, for instance, to plot recipe calculated data, future
data, data from other SQL tables or any custom scenario.
The custom GetSamples method should be defined at any Script Class and on Edit-
Tags-Historian that method must be defined at the column GetSamplesMethod.
The prototype of the method is:
DataTable GetSamples(string[] tagNames, object startRange, object endRange)

When overing tables used on time charts the StartRange and EndRange are of type
DateTimeOffset. When getting date to X-Y charts, the Range are double variables.
The Returned DataTable shall have the columns:
DateTime: Date time of the sample
TagName: The name of tag is used as FieldName to the column with Double values
of the tag
_TagName_Q: Optional column with the quality of the data

Historian Runtime Objects


The Historian namespace has the properties and current of the Historian server.
The Historian.Table object has the list of Historian tables defined and its properties.
The following tag property, if there is the data logging, is enabled to the tags.
Tag.tagname.Historian

See also: “Workspace Overview” on page 49

Action.NET User Guide 81
See also: “Navigating in the Workspace” on page 52

82 6: Historian and Data Logging
7: Security and Users

By default, the system logs you in as the Guest user when you start Action.NET. The
Guest user does not need to enter a user name or password.
If you want to secure access to your projects, you can add users and configure
passwords and other settings for each user.
The following sections describe how to configure security:
 “Adding and Editing Users” on page 83.
 “Configuring Permissions” on page 84.
 “Configuring Policies” on page 85.
 “Removing Users” on page 86.

Adding and Editing Users


To add security to your installation of Action.NET, you can add and edit users.
Action.NET comes with the following user names configured by default:
 Administrator—Built-in user that controls the Security System. No password is
configured by default. You should set a password for this user.
 Guest—Used by default to access Action.NET and when you log off as
another user. No password is configured by default.
 User—Use as a generic user. No password is configured by default.
The Administrator-level and Guest-level user IDs have built-in attributes. The
Administrator is the only user who can delete or block users and the only user who
can define passwords for Database DB interfaces. Guest Users are used for
anonymous login users, and do not have passwords assigned to them.
Do not create other users with those names, neither change the row ID of those
users, as the system is hard-coded to assume those users exit with the pre-defined
IDs.

Note
You cannot delete the Guest user, neither add a password to it. The Guest user must
be available as the default user when you log off as another user. You may want to
change the Guest user permissions, so that Guest users do not have access to all
functions. See “Configuring Permissions” on page 84.

Action.NET User Guide 83
To add and edit users:
1. Go to Edit > Security > Users.
2. Enter or select information, as needed.

Column Description
Name Enter a user name. The system lets you know if the name is not
valid.
Permissions Select the permission group to use for this user. See “Configuring
Permissions” on page 84.
Password Enter a password for the user. The system lets you know if the
password is not valid. You can configure password requirements.
See “Configuring Policies” on page 85.
PasswordHin Enter information that can help you remember the user’s password.
t
Policy Select the policy settings to use for this user. See “Configuring
Policies” on page 85.
Blocked Select to block the user’s access. You may want to use this for users
who are no longer with your company.
Deleted Select to block the user’s access and flag the user as deleted,
without deleting the user. You may want to use this for users who are
no longer with your company.
Profile Enter the user’s email address, phone number, and full name.

3. Continue adding as many users as you need.


 See the following sections related to the other user tabs:
 “Configuring Permissions” on page 84.
 “Configuring Policies” on page 85.
 “Removing Users” on page 86.

Configuring Permissions
You can configure which functions users can access when editing the project and
when using the runtime. You set permissions using Groups.
Action.NET comes with a few predefined groups that you can use, or you can create
your own.
To configure permissions:
1. Go to Edit > Security > Permissions.
2. Enter or select information, as needed.

84 7: Security and Users
Column Description
Name Enter a name for the group. The system lets you know if the name is
not valid.
Edit Select the functions users in the group can access when editing a
project.
Run Select the functions users in the group can access when using the
runtime.
Description Enter a description for the group.

3. Continue adding as many groups as you need.


 The permission groups you create are available for use on the Users tab.

EditSecurityPermissions.Run - Disable Windows applications switch


One option on the Run permissions is to disable to Switch Applications. If disabled,
the following actions/keys will be inhibited for that use:
 Access to the Start button and the Task Toolbar.
 Windows Logo button
 Ctrl + Alt + Del
 Ctrl + ESC
 Alt + Tab
 lt + F4
 Windows Logo + L

Note
To allow to disable the keyboard short-cuts to switch applications, the file
DisableTaskSwitchProtection.bat must be run from the installation directory, in-order
to install the keyboard driver necessary to implement this feature.

Configuring Policies
You can configure settings that you can apply to users.
Action.NET comes with a few predefined policies that you can use, or you can create
your own.
To configure policies:
1. Go to Edit > Security > Policies.
2. Enter or select information, as needed.

Action.NET User Guide 85
Column Description
Name Enter a name for the policy. The system lets you know if the name is
not valid.
Identification Select the password rules for both editing a project and accessing
the runtime.
Esign For runtime only. Select to enable a timeout for the runtime login.
Enter the timeout period in minutes.
Session For runtime only. Use to enable a timeout for the runtime session.
Select what will cause an automatic logoff, then enter the
appropriate values for InactivityMinutes and DurationHours. This
setting only logs the user off. The application continues to run.
Description Enter a description for the policy.

3. Continue adding as many policies as you need.


 The policies you create are available for use on the Users tab.
 If needed, right-click a row to cut, copy, paste, or delete the row.

Removing Users
You have three ways to disable users in Action.NET:
 Blocking—Use to block the user’s access. You may want to use this for users
who are no longer with your company.
 Flagging as deleted—Use to block the user’s access and flag the user as
deleted, without deleting the user. You may want to use this for users who are
no longer with your company.
 Deleting—Removes the user completely from the system.
You can use the method that is best for your company.
To remove users:
1. Go to Edit > Security > Users.
2. Click the user you want to remove.
3. Do one of the following:
 To block a user, select the Blocked column.
 To flag a user as deleted, select the Deleted column.
 To completely delete a user, right-click the row and select Delete selected
row.

86 7: Security and Users
Managing Runtime-only Users
When running the application, the Login procedure will accept all users defined in the
Project Configuration, but additional users, defined only by the system can be
included.
The Runtime-users are defined in the database RuntimeUsers defined in Datasets.
By default, that database is mapped to a SpinDB database. You can select any other
database by creating another DB connection and naming it RuntimeUsers (you will
need to delete or rename the existing RuntimeUsers row before doing that, as the
table does not accept duplicated names).
You can populate that database directly before starting the runtime, or after the
project is running, you can create or modify the users with the methods in the Security
Name.
See http://www.spinengenharia.com.br/help/an-2014/runtime/index.html for the
complete programming reference on runtime objects
When those methods are executed, the new or modified users are automatically
saved on the RuntimeUsers database.

Customizing Login Procedures


The Login page is editable, you just need to select the display with name LogOn to
edit its layout. As you can see in the code behind of that display, it calls the method
Security.Logon() to do the validation of the user. If you want to perform any other user
validation, you just need to modify that logic calling your own validation system and
then calling the LogOn method, according to the results of your validation.
Another way to customize the logon is to put your own custom logic on the
ClientStartup script task. The script is executed on any computer that is connecting to
the server application, you can perform verifications based on computer IP, computer
name, Windows Active-Directory Logged user, or any other criteria to specify if the
user is allowed to start the application and which should be their credentials, after that
you can either call client.Shutdown to terminate the application if it was an
unauthorized access or Security.Logon() with a user that matches the selected
security profile.
By default, when starting the application on a client computer, instead of requesting a
login, we start the system with the user GUEST. The user Guest is equivalent to an
anonymous login, if you don’t want that on your application, just replace the startup
page with a page requesting the Logon information.

Action.NET User Guide 87
Security Runtime Objects
The namespace Security has all the runtime information regarding the security
system.
The Client object has information about the current user logged at that client station:
Client.Username property is the name of current logged user.
Client.CurrentUser is a reference to a data structure with all the information of the
currently logged-in user.
See http://www.spinengenharia.com.br/help/an-2014/runtime/index.html for the
complete programming reference on runtime objects.

88 7: Security and Users
8: Devices and Interfaces

Devices in Action.NET are any live real-time data source. Typically a device is a PLC,
another Action.NET, an OPC server, a PI System, or any equipment that has a
communication protocol
The following sections explains how to configure the Device Module:
 “Communication Protocols” on page 89 presents the protocols and interfaces are
supported.
 “Configuring Channels” on page 91 explain the Channel configuration, Channel is
the name used by Action.NET to define a logical network running a selected
protocol
 “Configuring Nodes” on page 93; nodes are the stations connected to each
channel, that means the devices that are connected to each logical network.
 “Configuring Data Points” on page 95 defines the read or write addresses on each
device node that will be accessed;
 “Configuring Access Types” on page 96 allows to customize how the data points
will be accessed, such as read or write, execution cycles and triggers.

Communication Protocols
Connectivity is a key feature on Action.NET platform, therefore the system has built-in
support to many industry standard protocols, such as OPC and Modbus, as well
Action.NET has also many native communication interfaces to a variety of hardware
manufacturers, PLC and protocols.
The reason to include native protocols, besides OPC, are many, such as: cost reduction,
as most protocols are not charged; easier configuration, as it is integrated on the system;
and higher access to protocols functions, performance and diagnostics features that
would not be possible with the external component. The technical support is also
simplified as it is only provider.

Included Protocols
The following communication protocols are included on the standard product distribution:
Listed by alphabetical order:
 Automation Direction, KOYO, using ECOM protocol

Action.NET User Guide 89
 Mitsubishi Melsec Q
 Modbus - TCP/IP and RS-232, RTU and ASC, modbus master protocol
 Modbus Slave - TCP/IP and RS-232, RTU and ASC, modbus slave protocol
 OPC DA Client - OPC client access to local or remote servers
 Rockwell/AB ControlLogix
 Rockwell / AB MicroLogix
 Rockwell/AB DF1 Ethernet
 Siemens S7 Protocol
 TRemoteClient - Action.NET to Action.NET communication
 TwinCAT - Beckhoff ADS interface

Supported Protocols
There are many protocols that although not released on the product distribution, they are
available upon request at no charge. Some of those protocols are already in the release
state, others are under development and testing, contact us if you have requirement for
the protocols on this list. Even your required equipment is not listed, but there is public
information about the protocol, contact us as, in many cases, provided that he have
access to protocol documentation and testing units, there is no charge to create a native
interface.
In alphabetical order:
 Altus AL-1000, AL2000 and Nexto PLCs
 Fatek Facon PLC
 GE Fanuc SNP and SNP-X
 Mitsubishi Series A and FX
 Omron CS/CJ/CP-series CPU Unit or NSJ Controller
 Reliance CP3000
 Smar CD600
 SMTP - Simple Network Management Protocol

Additional Interfaces
There are few interfaces that are available and not included on the product distribution as
they have its own installation packages or they are sold as an optional module. That
includes the following protocols, in alphabetical order:
 DNP 3.0 Protocol
 IEC 61850
90 8: Devices and Interfaces
 IEC-870-5-101
 IEC-870-5-104
 OSIsoft PI System and PI AF, using AFSDK connector

Driver toolkit
Spin team has a huge experience on the creation of communication drivers, that includes
more than two hundred interfaces created over that past twenty years.
Result of that accumulated experience, Action.NET has an open standard interface, the
Driver Toolkit, to allow add new protocols in a easy and efficient way. The standard built-
in infra-structure takes care of everything related the physical sending and receiving of
the messages, the real-time tags access, the address configuration and the diagnostics
and performance tools.
The Driver Toolkit is available to System Integration partners and licensed end-users,
contact us if you have the requirement to create your own custom interfaces.

Configuring Channels
Channels in Action.NET are the protocols you use to communicate with your PLCs. Many
built-in protocols are available. You must set up a channel for each protocol you need to
use.
To configure channels:
1. Go to Edit > Devices > Channels.
2. Click Create New.
 The Create New Channel window displays.
3. Enter or select information, as needed.

Column Description
Channel Name Enter a name for the channel. The system lets you know if the
name is not valid.
Protocol Select the protocol this channel uses. If you do not see a protocol
that you need, click More to provide information for a new protocol.

Action.NET User Guide 91
Column Description
Interface Select the interface type for this channel.
 Serial—Use to configure the serial parameters for RS232/485
networks.
 MultiSerial—Use for configurations with multiple RS-232 ports.

 TCPIP—Use for Ethernet or wireless networks.

For more information about the configuration for common


protocols, click Help at the top of the tab.
Description Enter a description for this channel.

4. Click OK.
 The channel is added as a new row in the table.
5. Enter or select information, as needed.
 To add or remove a column, right-click the column heading area and select or
deselect columns.

Column Description
Name Enter a name for the channel. The system lets you know if the
name is not valid.
Protocol Shows the Selected protocol
ProtocolOptions Configure the options for this protocol.

Note
The Protocol options are dependent upon the
Selected Protocol. Select the protocol on the
ComboBox on the top of the page and press the
HELP button on its side to access the specific
protocol documentation.

Interface Shows the Physical interface used by this channel.

92 8: Devices and Interfaces
Column Description
Settings Configure the settings for this channel. The values available
depend on the Interface the channel is using.
Note: The settings here must match the settings on the slave
device.
 For serial interface, typically keep the defaults.

 For a MultiSerial interface, enter the number of RS-232 ports to


use in the Ports field.
 For TCPIP interface:

 AcceptUnsolicited—Accept unsolicited of slave.

 ListeningPort—TCP port where the slave device is


connected (default is 502).
 NodeConnection—Number of parallel requests sent to each
node (asynchronous communication).
 MaxSimultaneousConnections—Maximum number of
concurrent connections.
 ShareNodeSameIP—A single IP address and several slaves
connected. For example, RS485/Ethernet Converters.

Timeout Configure the timeout options for this channel. Typically, keep the
default value.
IntialState Select the initial state for this channel.
Description Enter a description for this channel
[Other columns] For definitions of other columns that are available in many tables,
see “Common Column Definitions” on page 58.

6. Continue adding as many channels as you need.


 If needed, right-click a row to cut, copy, paste, or delete the row.
 See the following sections related to the other device tabs:
 “Configuring Nodes” on page 93
 “Configuring Data Points” on page 95
 “Configuring Access Types” on page 96

Configuring Nodes
Nodes in Action.NET are the devices or PLCs on the network that you communicate with.
You can also import settings from an OPC server or from other data source. See
“Importing from an OPC Server” on page 95 and “Importing PLC Addresses” on page 95.
To configure nodes:
1. Go to Edit > Devices > Nodes.

Action.NET User Guide 93
2. Enter or select information, as needed.
 To add or remove a column, right-click the column heading area and select or
deselect columns.

Column Description
Name Enter a name for the node. The system lets you know if the name
is not valid.
Channel Select the channel for this node. For more information about the
configuration for common protocols, click Help at the top of the tab.
PrimaryStation Enter the information required to access the primary node, based
on the protocol selected.

Note
The Protocol options are dependent upon the
Selected Protocol. Select the protocol on the
ComboBox on the top of the page and press the
HELP button on its side to access the specific
protocol documentation.

For Modbus protocol:


 For a Serial interface, the SlaveID is the device slave address on
the Modbus network. Valid addresses are 1-247.
 For a MultiSerial interface, select the number of the ComPort
and enter the SlaveID the device slave address on the Modbus
network. Valid addresses are 1-247.
 For a TCPIP interface:

 IP—Identification of the slave device address.

 Port—TCP port where the slave device is connected (default


is 502).
 SlaveID—Device slave address on Modbus network. Valid
addresses are 1-247.
For OPC interfaces:
 Service URL—Defines the location of the OPC server.

 You must configure the DCOM settings to access an


external OPC server. Contact support for assistance.
 RefreshRate—Server refresh rate.

 AllTemsSameGroup—Adds all items in a single group OPC. In


this way, only one connection is created with OPC server.
 WaitAfterConnect—Time to communicate after the application is
running.
BackupStation Enter the information required to access the backup node, based
on the protocol selected. When defined, and a communication
failure occurs on the primary station, the system automatically
attempts to establish communication with the backup station.
Description Enter a description for this node.

94 8: Devices and Interfaces
3. Continue adding as many nodes as you need.

Importing from an OPC Server


After you create an OPC communication node, you can select the node and click Import
to import the OPC database for the project. Action.NET creates automatically the tags
and communication points.
After you had used the Import tool for the first time, the system will save the settings
used, so the button shows now SYNC, which means the next time you use it, it will run a
synchronization, verifying which addresses were previously imported and the new ones.

Importing PLC Addresses


When creating the communication nodes and data points, you can import them if they are
defined in another data source in the following ways:
 You can copy and past the contents of a table from Excel. The tables can have
different columns or order, as long you include the title of the column in the copy
and paste operations. The system will put the data in the expected columns, even
if the order is different in the source and target tables.
 You can import the data from csv files.
 For Rockwell ControlLogix devices, you can import from L5k definition files.
 For OSIsoft® PI database, there is a Action.NET version to share definitions.
 A programming API is available that can populate the tables from code, even from
runtime execution when it is necessary.
If your PLC or field device has an open database or file with the available addresses, and
you would like to have a tight integration with that configuration and Action.NET
addresses, contact support.

Configuring Data Points


The number of data points you can configure is related to both the ProductModel
configured for the project and your license for Action.NET. For information about the
product models, see “Product Family and Model” on page 188.
To configure data points:
1. Go to Edit > Devices > Points.
 You can copy and paste tags from the Tag > Objects tab.
2. Enter or select information, as needed.

Action.NET User Guide 95
 To add or remove a column, right-click the column heading area and select or
deselect columns.

Column Description
TagName Enter a tag name or click ... to select a tag. You can also create a
new tag.
Node Select the node for this data point.
Address Enter the register address, based on the PLC and protocol for this
data point and tag.

Note
The Protocol options are dependent upon the
Selected Protocol. Select the protocol on the
ComboBox on the top of the page and press the
HELP button on its side to access the specific
protocol documentation.

DataType Select the data type you want to use. Most protocols should use
the Native option. When Native is used, the protocol will
automatically handle the data conversion.
Selecting a different data types overrides the defaults. Some
options may not be applicable to the selected node. Make sure
you know the applicable data types.
Modifiers If the PLC uses a different byte order, select the options you want.
You can change the position bit, byte, Word, or Dword of the data
that is communicated.
AccessType Select the access type for this point. You can configure access
types. See “Configuring Access Types” on page 96.
Scaling If you want to manipulate the tag value in some way, select the
options you want.
For the Equation option, when reading the data:
 Div—The system will divide the register value by what you
enter here.
 Add—The system will add the amount you enter here as an
offset to the result of the division.
 For a write operation, the calculations are the opposite (multiple
by the Div value, then subtract the Add value).
[Other columns] For definitions of other columns that are available in many tables,
see “Common Column Definitions” on page 58.

3. Continue adding as many points as you need.

96 8: Devices and Interfaces
Configuring Access Types
You can configure access types that control the read, write, and other settings when the
application accesses PLC data.
Action.NET comes with a few predefined access types that you can use, or you can
create your own.
To configure access types:
1. Go to Edit > Devices > AccessTypes.
2. Do one of the following:
 To edit an existing access type, double-click a field.
 To create a new access type, click Create New.
3. Enter or select information, as needed.

Column Description
Name Enter a name for this access type.
Read
ReadPolling Select when you want to enable read polling.
PollingRate Enter how often to retrieve the address value.
ReadTrigger Enter an object property to tell the system when to read the
value.
OnStartup When selected, the system reads the value on startup.
Write
WriteEnable Select to enable writing of values to the PLC.
WriteEvent Select when to write the value.
WriteTrigger Enter an object property to tell the system when to write the
value.
Settings
AcceptUnsolicited When selected, the system accepts values from the PLC, even
if the polling time has not yet elapsed.
UseStaticBlocks
Description Enter a description for the access type.
[Other columns] For definitions of other columns that are available in many
tables, see “Common Column Definitions” on page 58.

Action.NET User Guide 97
Diagnostics tools
After starting the project, the Startup window, we can select some diagnostic tools, they
are: PropertyWatch (Watch), TraceWindow (Trace), and ModuleInformation (Info) .

You can also start the Diagnostics tools at the Run-Test and Run-Startup pages, pressing
the mouse left button over the icons of the diagnostics tools. If the menus are enabled at
the Displays you can also access the Tools menu.

Module Information
The Module Information contains information about the operation of the modules. To
choose the module Devices and a specific channel, we have several information about
the functioning of the communication channel.
A very important section is the "Read Groups Information" because it provides
information about the virtual reading groups, run time of each item, quantities of readings
and readings that have failed, and also reports on the code and date/time of the last
error.

98 8: Devices and Interfaces
This is the typical steps when using the Module Information:
1. Go to Read Groups Information, to look at the number Success and Failed
communication, in order to quickly identify the communication blocks.
2. If you have systematic error in all blocks, or status codes with negative values,
typically it means you cannot access the remote device. Verify if the node address
is right.
3. If you have one or another block with systematic error, verify the tags and
addresses connected with that block. Use the TraceWindow with Device
information to collect information about those communication errors.
4. For some protocols, such as OPC, the Discarded items will show the wrong
addresses in the configuration.
When running Enterprise application in TEST mode, keep in mind that in this mode, we
only READ from the field devices, even you have a configuration to write to field.
It is very useful to run the application with ONLINE CONFIGURATION enabled, so you
don’t need to start and stop the driver when modifying the configuration. You can modify
PLC addresses, AccessTypes and most of the application and see in real-time the results
on your running application. You can use the Startup-Window or the PropertyWatch to
start and stop only one module, like the Devices, instead of restarting all the runtime
system.

Property Watch
The Property Watch is a diagnostic tool used to access tags and internal properties of the
system for reading or writing. Just type the name of the property in the column Object
and have its value in the Value column.

Action.NET User Guide 99
Ex: Tag.Coils, Device.Channel.Modbus.Status . On the right side we have additional
properties of the selected object.

Trace Window
The Trace Window is the tool that informs system messages in a data grid interface.
When enabling the module Devices at the Settings button, we have information about
status of readings, writings, unsolicited, TX frames (sending) and RX (received).

Tip
When checking the Devices CheckBox on the Settings, enable only the ERROR, INFO and
Warning information, not the Debug information, otherwise you will create too much data. For
ControlLogix devices it is very important to use this tool, as the system will present here the
invalid addresses on the configuration.

100 8: Devices and Interfaces
When we click on the settings button in the configuration dialog you can select which
message types and modules, see the data in the data grid or save to file. It is also
possible to configure a tag in ObjectName and click the Add button to bring up a menu to
select that object to include on the monitoring.

Device Runtime Objects


The namespace Device is the entry points to all objects related with the Device module.
The Device.Channel object lists all configured channels and its runtime properties
The Device.Node object lists all configured nodes and its runtime properties
The Device.AccessType object lists the defined access types and has options to execute
synchronous calls on reading and writing to the device.
The following tags properties are updated based on the device module:
tag.tagname.DevicePoint: Device point address connected with this tag
See http://www.spinengenharia.com.br/help/an-2014/runtime/index.html for the complete
programming reference on runtime objects

Action.NET User Guide 101
102 8: Devices and Interfaces
9: Alarms, Events and AuditTrail

The following sections describe how to configure alarms and events:


 “Configuring Audit Trail” on page 103,
 “Configuring Alarm Options” on page 104,
 “Configuring Alarm Groups” on page 105,
 “Configuring Alarm Items” on page 106,
 “Visualizing Alarms and Events” on page 110,
 “Alarm Acknowledgment” on page 110,
 “Subscribing Notifications” on page 110,
 “Alarm Database and Table Schema” on page 111,
 “Alarm Runtime Objects” on page 111.

Configuring Audit Trail


You can select which events are logged to the Audit trail. This configuration is for the
system events you select, not alarms.
To configure Audit Trail:
1. Go to Edit > Alarms > Groups.
2. Click Settings.

Action.NET User Guide 103
 The AuditTrail window displays.

3. To enable event logging, select the Enable option.


4. After selecting Enable, select the events you want to log.
5. Click OK.

Configuring Alarm Options


You can configure general alarm and event settings that determine how the system
handles alarms during startup and how long alarms and events remain in the alarm
historian.
To configure general alarm options:
1. Go to Edit > Alarms > Groups.
2. In the Initial Disable Time, enter how long the system should wait during
startup before considering an alarm state to be an alarm.
 During startup, a device may show an alarm, because the device has not
yet initialized. This setting tells the system to wait the configured amount of
time to let the system complete its startup, before the system considers
alarms.
3. In the Life Time field, enter how long the alarm historian retains the alarm data,
in days.

104 9: Alarms, Events and AuditTrail
Configuring Alarm Groups
Alarm groups let you configure settings for what happens when an alarm occurs. Use
alarm groups to configure common settings for use with multiple alarm events. The
group settings determine such things as whether an acknowledgment is required,
whether a sound plays, what is logged, and how alarms display.
Action.NET comes with a few predefined alarm groups that you can use, or you can
create your own.
Define the Group name in EditAlarmGroups where the Alarm item behavior is
specified.
The pre-defined Groups are:
· Critical (Critical Messages that require acknowledgment)
· SystemEvent (System Events log)
· Warning (Warning messages that do not require acknowledgment)
To configure alarm groups:
1. Go to Edit > Alarms > Groups.
2. Enter or select information, as needed.

Column Description
Name Enter a name for the alarm group. The system lets you know if the
name is not valid.
AckRequired If required, the alarm stays in the alarm list until someone
acknowledges the alarm by double-clicking it in the application.
Sound Select the sound that will play when the alarm occurs.
Show Select List for the alarm to display in the alarm window in the
application

Action.NET User Guide 105
Column Description
LogEvents Select when you want the alarm to be logged to the alarm historian:
 None—Alarms are not logged.

 Active—Log when alarm is active.

 ActiveAck—Log when the alarm is active and acknowledged.

 ActiveNorm—Log when the alarm returns to normal.

 All—Log all of the above conditions.

Colors Select the colors you want to use for each state:
 Active—Configured alarm is in the alarm state.

 Normalized—Configured alarm was in the alarm state, but is no


longer in the alarm state and still needs to be acknowledged.
 Acknowledged—Configured alarm has been acknowledged, but
still is in the alarm state.
AckTimeout Defines a timeout to ack the alarm. If the alarm is not acknowledged
after the specified time, the alarm becomes active again.
AutoAckTime If the alarm is not acknowledged after the specified time, the system
acknowledges the alarm.
Description Enter a description of this alarm group.
[Other For definitions of other columns that are available in many tables,
columns] see “Common Column Definitions” on page 58.

3. Continue adding as many alarm groups as you need.


 If needed, right-click a row to cut, copy, paste, or delete the row.
 See the following sections related to the other alarm tabs:
 “Configuring Alarm Items” on page 106.

Configuring Alarm Items


When configuring Alarms, you configure the specific thresholds that generate an
Alarm. You can have multiple rows for the same tag to set different thresholds for the
tag. In turn each item refers to an Alarm Group, to set the viewing behavior and
actions during transitions alarm status (active/normal).
To configure Alarms:
1. Go to Edit > Alarms > Items.
2. Enter or select information, as needed.

106 9: Alarms, Events and AuditTrail
Column Description
TagName Enter a tag name or click “...” to select a tag.
Condition Select the condition you want to use for this alarm event.
For DeviationMinor or DeviationMajor, specify a limit, then use the
Setpoint column to set a value or a tag to compare for the deviation.
Limit Enter a value for the alarm limit that corresponds to the condition you
selected.
Group Select an alarm group that controls what happens when an alarm
occurs. See “Configuring Alarm Groups” on page 105.
Priority Enter a priority value that controls where the alarm displays in the
list. The higher the number the higher the priority. You can use the
same priority for more than one alarm event. Enter 0 (zero) for
alarms to be at the end of the list.
Message Enter the text that displays in the alarm list.
[Other For definitions of other columns that are available in many tables,
columns] see “Common Column Definitions” on page 58.

3. Continue adding as many alarm events as you need.


 If needed, right-click a row to cut, copy, paste, or delete the row.

Action.NET User Guide 107
EditAlarmsItems.Condition
Evaluation condition to generate alarms. You can choose from
the following events. See in each case the evaluation condition
which is used for the generation of alarm events.:
Hi: Tag >= limit;
HiHi: Tag >= limit (when acknowledged automatically
acknowledges Hi alarm to same Tag);
Lo: Tag <= limit;
LoLo: Tag <= limit (when acknowledged automatically
acknowledges Lo alarm to same Tag);
RateOfChange: Tag rate of change >= limit;
DeviationMinor: Absolute value (tag - Setpoint) > limit
(Setpoint defined in the Setpoint column);
DeviationMajor: Absolute value (tag - Setpoint) > limit
(Setpoint defined in the Setpoint column);
Equal: Tag = limit;
GreaterThan: Tag > limit;
GreaterEqual: Tag >= limit;
LessThan: Tag < limit;
LessEqual: Tag <= limit;
Changed: Tag value changed;
ChangedUp: Tag value increased;
ChangedDown: Tag value decreased.

Multiple Items for Alarm Tag


It should be noted that one tag can have one or more entries in this table, depending on the
desired behavior. The figure below shows examples of tags with four alarm records (analog
variables), two records (events that two distinct behaviors you want) and a record of alarm

108 9: Alarms, Events and AuditTrail
(signaling state of equipment).

Enable Limits per Turn


The "Enable Limits per turn” option is especially oriented to systems that need to implement
the functionality of load levels, (light, medium and heavy). When selected in the Items table,
as shown below, three columns appear for you to specify the limits for each load level.

The CurrentShift attribute reports the current round: (0 = light, 1


= medium and 2 = heavy).
The EnableLimitsByShift attribute tells if the feature is enabled
or not, respectively. If enabled just create a routine that every
time set the shift (shift): "Alarm.CurrentShift = x" where x = 0/1/
2.

Action.NET User Guide 109
Visualizing Alarms and Events
In order to visualize alarms and events, you can use the built-in object on the displays
or reports. See section “Configuring an Alarm Window” on page 156, for more
information.

Alarm Acknowledgment
There are several methods for acknowledging alarms:
 Using Alarm visualization object in the displays.

 Tag properties.
 Alarm group or Alarm item runtime properties.
Acknowledge All Alarms
 You can use the <Alarm.AckAll> property that acknowledges all active Alarms.

Acknowledge Single Alarm or Highest Priority Alarm


 The <Alarm.PriorityItem.UnAck> property allows acknowledgment of the
highest priority Alarm configured in <Edit.Alarms.Items> the "Priority" column
if there is a pending ack alarm.
Acknowledge a Specific Alarm
 To acknowledge a specific alarm use the <Alarm.Items.IDxx.Unack> property.

 To verify the contents of the IDxx Alarm columns, go to Alarm item and add the
ID column (right-click in the table and select "ID").

Subscribing Notifications
In order to apply custom actions using .NET scripts, you can subscribe to notifications
or alarms and events.
The typical usage is to send SMS or email warnings, execute custom calculations,
add custom notification messages or audio alarms, text-to-speech audio alarms, and
any kind of custom action programmed using the Microsoft .NET Framework.
To subscribe to alarm events, you need to create a method in any Script Class of type
Server, with the following prototype:
void Notification(AlarmEventInfo[] info)

With each new transition event alarm generated this method will be called.

110 9: Alarms, Events and AuditTrail
Finally, you need to select that method on Edit > Alarms > Groups at the
NotificationMethod Column.
The name of method can vary, what is important is the expected parameters of the
method. The AlarmEventInfo structure is defined in the namespace Alarm on the
runtime classes reference, http://www.spinengenharia.com.br/help/an-2014/runtime/
index.html.

Alarm Database and Table Schema


The database used to store the Alarms is defined in Edit-Datasets-DBs by the
database connection object with the name AlarmHistorian.
By default, when a new project is created, the AlarmHistorian is defined to use the
Action.NET built-in embedded SQL database SpinDB.

Caution
The SpinDB database should be used for databases up to 10GB. If it is expected to
create more than 10GB, you should define another SQL for Tag Historian Database.

In order to define another Database to store the Alarm Historian database, you just
need to create a new database connection, as explained on “Configuring Database
Connections” on page 113, and name it AlarmHistorian.

Tip
The system does not allow duplicated names, so to create a DB connection with name
AlarmHistorian you must rename or delete the existing row using that name.

The Alarm Module automatically creates the required tables in the database. An
example of table schema is available opening any file with extension .TAlarm, created
when running application using the default SpinDB as the alarm logging database.

Alarm Runtime Objects


The Alarm namespace has the properties of the Alarm server.
The Alarm.Group object has the list of all defined and its properties.
The Alarm.Item object has all alarm items and its properties.
The following tag properties are connected with the Alarm module:
tag.tagname.Hi: configuration and runtime status of the HI alarm, similar names
for the other alarm types.

Action.NET User Guide 111
See http://www.spinengenharia.com.br/help/an-2014/runtime/index.html for the
complete programming reference on runtime objects.

112 9: Alarms, Events and AuditTrail
10: Datasets and Data Exchange

The following sections describe how to configure databases:


 “Configuring Database Connections” on page 113
 “Configuring Database Tables Access” on page 119
 “Configuring Database Queries” on page 120
 “Configuring Files for Data Exchange” on page 120
 “Configuring Files for Data Exchange” on page 120
 “Dataset Runtime Objects” on page 121

Configuring Database Connections


By default, Action.NET uses an embedded SQL database (SpinDB) for the tag and
alarm historians. You can configure external databases such as Microsoft SQL
Server, Oracle, or other external database. If you expect your database to grow to
more than 10 GB, you should consider using an external database.
When using the embedded database, the system automatically creates the database
file. When using external databases, the database itself must already exist. However,
Action.NET can create the tables in the database.
You can use also use external databases as a data source in your application to
display such things as customer or product information or to configure systems from
recipes.
You must be logged in as Administrator in Action.NET to configure the database login
and password.
To configure an external database:
1. Go to Edit > Datasets > DBs.
2. Click Create New.
 The Create New Database Connection window displays.
3. Enter or select information, as needed.

Action.NET User Guide 113
Column Description
Name Enter a name for the database configuration. The system lets you
know if the name is not valid.
Description Enter a description for the database.
Provider Select the database provider.
Database If options display here, select the database type.

4. Click OK.
 The database is added as a new row in the table.
5. Enter or select information, as needed.

Column Description
Name Enter a name for the database configuration. The system lets you
know if the name is not valid.
Provider Select the database provider.
Database If options display here, select the database type.
ConnectionString Enter the information needed to connect to the database.
LogonName Enter a valid login name for the database.
LogonPassword Enter the password that corresponds to the database login.
Description Enter a description for the database.
[Other columns] For definitions of other columns that are available in many tables,
see “Common Column Definitions” on page 58.

6. If you are using the new external database for the alarm or tag historian,
rename the existing TagHistorian or AlarmHistorian database to something
else, then rename the new database configuration to TagHistorian or
AlarmHistorian.
 For the tag or alarm historian databases, the database configuration on
this tab must be named TagHistorian or AlarmHistorian. You cannot have
two databases with the same name.
7. Continue adding as many database configurations as you need.
 The databases you create are available for use on the Tags > Historian
tab, in displays, and in scripts.
 If needed, right-click a row to cut, copy, paste, or delete the row.
 See the following sections related to the other Dataset tabs:
 “Configuring Database Tables Access” on page 119
 “Configuring Database Queries” on page 120
 “Configuring Files for Data Exchange” on page 120

114 10: Datasets and Data Exchange
Accessing Microsoft Excel

Connect to Excel databases using an ODBC driver, an ODBC DSN, or OleDB.


Creating the Databases
ODBC:
1.Select, then name a range of rows and columns in the worksheet. This will allow the
software to read the information as a table.
2.Choose one of the following naming processes for your version of Microsoft Excel.
For Microsoft Office 2007:
Right-click the selection then choose "Name a Range".

For Microsoft Office 2003:


In Microsoft Excel go to "Insert > Name > Define".

Action.NET User Guide 115
Name the selection (e.g., "itemsTable"). The Excel file is now ready for use.
There are several methods for communicating using ODBC:
 Using ODBC Microsoft Excel Driver:
1. In the Datasets namespace, choose "DBs" tab and create a new Provider by
clicking Create new.
2. Select "Odbc Data Provider" in the "Provider" data field.
3. "Database" field choose "Microsoft Excel Database".
4. Click Ok.

5. A new row is created in the data grid, click the "ConnectionString" column.
6. In the pop-up window enter the path and the filename in the "Dbq" field.
7. Click the "Test" button to ensure that the connection is OK.
Note: "Test" is optional.

 Using ODBC with a DSN:

116 10: Datasets and Data Exchange
1.Go to your computer's "Control Panel", select "Administrative Tools".
2.Double-click on "Data Sources (ODBC)".

3. In the "ODBC Data Source Administrator" window click Add. You are prompted to
select a driver.
4. Select the "Microsoft Excel Driver (*.xls)".
5. Click Select Workbook, then select the name of the Excel file created previously.
6. Name the Data Source, (e.g., "excelDatasource").
7. For Write access uncheck the "ReadOnly" checkbox.

Action.NET User Guide 117
8. In the Datasets namespace, choose "DBs" tab and create a new Provider by
clicking Create new.
9. Under "Odbc Data Provider" options, choose "ODBC using DSN" then click Ok.
10. Click the ConnectionString column of the new row, then enter the DSN in the
"DSN" field.

 OLEDB
1.In the Datasets namespace, choose the "DBs" tab.
2 Select the "OleDb data provider" option of the combo-box and create a new
Provider by clicking Create new.
3.Choose "Microsoft Excel Database" then click Ok.
4.Click the ConnectionString column of the new row, then enter the path and the
name of the Excel (.xls) file in the "DataSource" field.

118 10: Datasets and Data Exchange
Configuring Database Tables Access
If you are using an external database as a data source in your application, you can
specify which table to use from the database.
To configure database tables:
1. Go to Edit > Datasets > Tables.
2. Enter or select information, as needed.

Column Description
Name Enter a name for the table configuration. The system lets you
know if the name is not valid.
DB Select the database configuration.
TableName Select the table name.
WhereCondition Specify parameters to filter the data using SQL syntax.
Access Select the access permissions for the table.
Mapping Click ... to select the tags that you want to populate with data from
the first row of the table with data from specific columns.
Description Enter a description for the table configuration.
[Other columns] For definitions of other columns that are available in many tables,
see “Common Column Definitions” on page 58.

3. Continue adding as many table configurations as you need.


Reading and writing the table contents
The runtime access to the table contents is executed automatically when the table is
mapped to a DataGrid object, see “Configuring a DataGrid Window” on page 159.
You can also get the table contents or perform operations on the tables, using the
runtime properties for the Dataset.Table object, see http://
www.spinengenharia.com.br/help/an-2014/runtime/index.html.

Action.NET User Guide 119
Configuring Database Queries
You can configure queries to perform more advanced functions with SQL statements
to work with data from external databases.
To configure database queries:
1. Go to Edit > Datasets > Queries.
2. Enter or select information, as needed.

Column Description
Name Enter a name for the query. The system lets you know if the name
is not valid.
DB Select the database configuration.
SqlStatement Enter the query using SQL syntax.
Mapping Click ... to select the tags that you want to populate with data from
the query with data from specific columns.
Description Enter a description for the table configuration.
[Other columns] For definitions of other columns that are available in many tables,
see “Common Column Definitions” on page 58.

3. Continue adding as many queries as you need.


Getting the query contents
The runtime access to the table contents is executed automatically when the query is
mapped to a DataGrid object, see “Configuring a DataGrid Window” on page 159.
You can also get the query contents or perform operations on the query, using the
runtime properties for the Dataset.Query object, see http://
www.spinengenharia.com.br/help/an-2014/runtime/index.html.

Configuring Files for Data Exchange


You can configure files to retrieve data from a network location.
To configure database files:
1. Go to Edit > Datasets > Files.
2. Enter or select information, as needed.

120 10: Datasets and Data Exchange
Column Description
Name Enter a name for the file configuration. The system lets you know
if the name is not valid.
FileName Enter the full path to the file.
FileType Select the type of file.
Objects Click ... to select the tags that you want to populate with data from
the file with data from specific columns.
Description Enter a description for the file configuration.
[Other columns] For definitions of other columns that are available in many tables,
see “Common Column Definitions” on page 58.

3. Continue adding as many file configurations as you need.

Dataset Runtime Objects


The namespace Dataset is the entry point to all objects related with the Datasets
module.
The Dataset.DB object lists all configured database connections and its runtime
properties
The Dataset.Table object lists all configured tables and their runtime properties
The Dataset.Query object lists the defined queries and their runtime properties.
The Dataset.File object lists the defined queries and their runtime properties.
See http://www.spinengenharia.com.br/help/an-2014/runtime/index.html for the
complete programming reference on runtime objects.

Action.NET User Guide 121
122 10: Datasets and Data Exchange
11: Scripts and .NET Framework

The following sections describe how to create scripts:


 “Configuring Tasks” on page 123
 “Configuring Classes” on page 124
 “Working with the Code Editor” on page 125

Note
When you are using the code editor, the system constantly compiles the code in the
background. You can also build the whole project, as needed. For more information,
see “Chapter 14, Running the Application” on page 163.

For more information about the runtime objects included in Action.NET, see the
RuntimeObjects.pdf.
Two .Net libraries are available for use with Action.NET:
 The internal scripting has built-in methods that you can call using
TK.<methodName>. For more information about these methods, see the
Toolkits.pdf.
 If you use Microsoft Visual Studio, a library is available for use with
Action.NET. For more information about this library, see the Toolkits.pdf.

Configuring Tasks
Tasks are code, written in either VB.Net or CSharp, that execute based on process
events, either when the trigger event occurs or at every interval defined in the Period
column.
Action.NET comes with the following built-in tasks:
 ServerStartup—Executed when the project starts running. Runs on the server
(computer running TServer.exe).
 ServerShutdown—Executed when the project shuts down. Runs on the server.
 ClientStartup—Executed on each client when the TVisualizer.exe (Displays
module) starts running.
 ClientShutdown—Executed on each client when the Display module closes.
To configure tasks:

Action.NET User Guide 123
1. Go to Edit > Scripts > Tasks.
2. Enter or select information, as needed.

Column Description
Name Enter a name for the task. The system lets you know if the name is
not valid.
Code Read-only. This defaults to the language selected when you created
the project. From the Code Editor tab, you can change the code
language. To change the project default, go to Info > Settings.
Trigger Enter or select the event (tag or object) that triggers the task
execution. The task executes when the value of the object changes.
Period Enter how often the task should execute.
Domain Select where the script executes:
 Client—Task executes on each client system. These are tasks that
apply locally (on the user’s computer), for example, report
generation.
 Server—Task executes on the server system. These are tasks that
apply across the application, that is, globally.
InitialState Select the tasks’s initial state:
 Enable—Task is ready to run.

 Disabled—Task is not ready to run. Lets you enable the task under
specific conditions.
BuildStatus Read-only. Status of the task code from the continuous compiling
process.
 Green check mark—Task runs without errors.

 Red X—Task has warnings or errors. Double-click to go to the


warning or error. Warnings are information only. Errors will prevent
the code from running, but only that specific task. The rest of the
application will run.
BuildErrors Read-only. Displays any errors encountered during the last build.
Description Enter a description of this task.

3. Enter the code for the task.


 Double-click the row to access the Code Editor tab. See “Working with the
Code Editor” on page 125.
4. Click Save.

124 11: Scripts and .NET Framework
Configuring Classes
Classes let you create a repository of class libraries, methods, and functions that you
can use across the application. You can call them from tasks, other classes, and
displays (code behind).
Action.NET comes with the following built-in classes:
 ServerMain—Methods library available for all server tasks.
 ClientMain—Methods library available for all clients.
To configure classes:
1. Go to Edit > Scripts > Classes.
2. Enter or select information, as needed.

Column Description
Name Enter a name for the class. The system lets you know if the name is
not valid.
Code Read-only. This defaults to the language selected when you created
the project. From the Code Editor tab, you can change the code
language. To change the project default, go to Info > Settings.
Domain Select where the class executes:
 Client—Class executes on each client system. These are Classes
that apply locally (on the user’s computer), for example, report
generation.
 Server—Class executes on the server system. These are classes
that apply across the application, that is, globally.
BuildStatus Read-only. Status of the class code from constant compiling process.
 Green check mark—Class runs without errors.

 Red X—Class has warnings or errors. Double-click to go to the


warning or error. Warnings are information only. Errors will prevent
the code from running, but only that specific class. The rest of the
application will run.
BuildErrors Read-only. Displays any errors encountered during the last build.
Description Enter a description of this class.

3. Enter the code for the class.


 Double-click the row to access the Code Editor tab. See “Working with the
Code Editor” on page 125.
4. Click Save.

Action.NET User Guide 125
Working with the Code Editor
You can write code in either standard VB.Net or CSharp. You can also switch
between the two. If you change your language selection in the code editor, the system
automatically converts existing code to the selected language.
If you need references to your own assemblies, you can use Run > Build >
References.
As a fully compliant .NET application, you can find free source code to use,
including .NET components, products, and libraries, plus your own libraries that you
can use right away.
Action.NET does expose many .NET libraries to the application, but there are few
methods that are very frequently required, such as type conversion or copying tags to
DataTables or .NET objects, or dynamically changing the communication settings.
Those methods are included in a library toolkit. To use those methods, you just need
to put TK. in the code editor.
Example:
double x = TK.ConvertTo<double>("123");
The methods available are described in Toolkits.pdf.
To edit code:
1. Go to Edit > Scripts > CodeEditor.
2. From the drop-down list in the main toolbar, select the task or class you want
to edit.
 To create a new task or class, see “Configuring Tasks” on page 123 or
“Configuring Classes” on page 124.
3. If needed, from the code editor toolbar, select a different code language.
4. Click Save.

Configuring Expressions
Besides the Edit > Script > Expressions table, in several places in Action.NET, you
can use expressions, using the same syntax described here, to determine a value or
to configure a condition.
Expressions are just plain VB.NET expressions, such as arithmetic expressions or
calls to script.class methods from the project. Intellisense only shows tags and
application objects, but the expressions are compiled using the standard VB.Net
compiler, so what you would write in the code editor, should be accepted in
expressions as well.

126 11: Scripts and .NET Framework
Action.NET implements some automated replacements, such as == to =, so the
syntax of an expression is also very close the a C# statement, but with no need to add
the “;” on the end.
In this way, both VB.NET and C# programmers are able to use seamless the
expression fields.
In expressions, you do not need to put @ before that tag names. You need the @ in
the code editor to differentiate project tags from .NET variables. However,
expressions do not have local .NET variables, so you use the project object directly.
For arithmetic operands, you can use the standard operands as described in
the .NET documentation.
To allow single-line evaluations, the .NET language has the IIF command, which
currently is used only with IF. The IF command has three parameters. For example:
IF (A, B, C)
The first parameter is a condition. That method will return B if condition A is true, and
it returns C if the condition is false.
Example: If (tag.A = 1, "True", "False") will return a string according the value of tag.A.
In this .NET method, all three parameters are evaluated independent of the
condition. For instance, if you have IF (tag.A = 1, script.class.client.Func1(),
script.class.client.Func2()), both Func1 and Func2 will always be executed. Only the
return value will be different based on the value of tag.A.
The IF or IIF method needs to evaluate the parameters before calling the method.
There are many scenarios where you want to execute only the function according the
value.
For that scenario Action.NET has a method called TIF, which has that behavior.
So, you use the expression:
TIF (tag.A = 1, script.class.client.Func1(), script.class.client.Func2())
Only the Func1() or Func2() will be executed, according the value of Tag.A
The TIF method is defined in the class library that is automatically exposed for
expressions that are in the toolkit function library.
For more complex calculations, you can call a class that you create on the Classes
tab. See “Configuring Classes” on page 124.
To configure expressions:
1. Go to Edit > Scripts > Expressions.
2. Enter or select information, as needed.

Column Description
Object Select an existing tag or object.
Expression Enter the expression. The expression can be basic mathematical
expression, use a class, or a conditional expression.

Action.NET User Guide 127
Column Description
Domain Select where the expression executes:
 Client—Expression executes on each client system. These are
expressions that apply locally (on the user’s computer), for
example, report generation.
 Server—Expression executes on the server system. These are
expressions that apply across the application, that is, globally.
Execution Select when the expression executes:
 OnChange—The expression executes when the value of any
tag in the expression changes.
 TriggerOrPeriod—The expression executes when the trigger
event occurs or when the interval set in the Period elapses.
 ChangeOrStartup—The expression executes when the value of
any tag in the expression changes or at startup.
Trigger Enter or select the tag or object that triggers the expression
execution. The expression executes when the value of the object
changes.
DisableConditio Enter or select the tag or object that disables the expression
n execution.
BuildStatus Read-only. Set after you click Verify.
 Green check mark—Expression runs without errors.

 Red X—Expression has errors.

BuildErrors Read-only. Displays any errors encountered during the last build.

3. Click Verify to check the validity of the expression.

Using the .NET Debugger


Creating debugger Information
Action.NET has an integrated .NET code debugger. In order to use it, it is necessary
that the local computer has cache files with the necessary files to run the debugger.
The steps to enable the debugger are:
1. Enable the Debug Information on Run > Build > Messages
2. As necessary, save the source code you want to debug again, so the debug
information is created. This step is only necessary the first time you open the
project on the computer, as after that, the background compiling will keep
generating the necessary debugging information to enable the use of
breakpoints and step execution.

128 11: Scripts and .NET Framework
Attaching the .NET debugger
In oder to have a .NET debugging session, the engineering environment must be
connected with the runtime and the .NET debugger attached to server or client
process. Follow these steps.
1. When Running the project, either on Run > Test or Run > Startup enable the
connect check box.
2. If the project is already running, you can go to Run >Test or Run > Startup,
according the runtime you want to attach, and connect to the runtime system,
pressing the connect button on those pages.
3. Open any script that has debugging information and press the Attach .NET
debugger button. A message on the bottom of the engineering workspace will
show that a debugging session is active with the server components or the
client components of the running project.
4. When the .NET debugger is attached the system will stop on the defined
breakpoints and it will also stop automatically when any .NET Exception
occurs.

Breakpoints, steps and watch


In order to setup a breakpoint, open the desired code, select the line and press the
Insert Breakpoint at the toolbar.
When the system stops on a breakpoint you can perform step by step execution or hit
the continue button.
In order to inspect local .NET variables, tags or project objects, you can select the text
in the script editor and, when the execution is stopped on a breakpoint, the toolkit will
show the current value of the variable.
You can also add .NET variables or project objects to the Watch window. When
adding tags or project objects, you need to use the @ symbols, example @tag.tag1,
so the system knows it is a project object, not a local .NET variable. Keep in mind the
Watch display is only updated when the execution is stopped. If you want to have
real-time values for tags and objects you can open the PropertyWatch diagnostics
tool.

Script Runtime Objects


The namespace Script is the entry point to all objects related to the Scripts module.
The Script.Task object lists all configured database connections and their runtime
properties.
The Script.Class object lists all configured tables and its runtime properties.
See http://www.spinengenharia.com.br/help/an-2014/runtime/index.html for the
complete programming reference on runtime objects.

Action.NET User Guide 129
130 11: Scripts and .NET Framework
12: Displays and Symbols

The following sections describe how to design the application user interface:
 “To select displays:” on page 131
 “Selecting and Creating Displays” on page 131
 “Designer Drawing Tools” on page 139
 “Dynamics and Animations” on page 144
 “Chapter 12, User Interface Controls” on page 153
 “Managing Images and Symbols” on page 159
 “Display Runtime Objects” on page 160

Selecting and Creating Displays


Displays are components of the user interface for your application. A display can
have multiple elements in it, including controls, data display areas, static areas that
always display, such as a menu bar or status bar, and more. Components can be
static, that is, they always display, such as a menu bar, toolbar, or status bar.
Components can also change depending on what the user clicks or selects.
To select displays:
1. Go to Edit > Displays > Displays.
2. Select CardView or TableView.
3. See see the list of available display.

Column Description
Name Read-only. Configured in Draw.
Mode Read-only. Configured in Draw.
Preview Read-only. Shows a thumbnail of the display.
AllowSelectio Select to allow users to select the display from the PageSelector.
n
EditSecurity Select which types of users have access to edit this display.
RunSecurity Select which types of users have access to this display at runtime.
Description Enter a description for this display.

Action.NET User Guide 131
In order to edit a display, select the display and press the DRAW button.

When you are in the Drawing environment you can also change displays using the
ComboBox on the top toolbar.

To create a new display


1. Go to Draw > Drawing.

2. Click Close Display and Create New One.


 If you do not see this button in the toolbar, make your window wider.
 The New Display window displays.
3. Enter or select information, as needed.

Column Description
Display Name Enter a name for the display.

132 12: Displays and Symbols
Column Description
Description Enter a description for the display.
iPad/iPhone Note: If you plan to use this display for iPad and iPhone users, be
iOS Target sure to select this option when you create the display. You cannot
change it later.
 Select to be able to use this display with iPads and iPhones.
When you select this option, display settings in other parts of
the Draw area only show options that are applicable to both
Windows and iPads/iPhones.
 Select the default view for iPad and iPhone users:

 Landscape

 Portrait

4. Click OK.

Note
If the display is for use with an iPad or iPhone, you must select the iPad/iPhone iOS
Target option when you first create the display. You cannot change this setting later.

1. On the left side of the window in the DisplaySettings, enter or select


information, as needed.
 If you selected the iPad/iPhone iOS Target option when you created the
display, not all of the DisplaySettings are available.

Column Description
Mode Select the type of display you want to create:
 Page—Default. Opening a page automatically closes the last
page on the current layout and displays in the area last in the list
on Displays > Layouts page. Only pages display in the layout.
 Popup—A popup opens on the top of all other displays. When
you open a new page, by default, all popup displays are closed.
Controls on other displays are available.
 Dialog—A dialog opens as a modal dialog, which disables the
controls on all other open displays until you close the dialog.
Clicking OK executes the OnOK method on the display
CodeBehind.
Background Select the background color for the display.
Width Enter the width of the display, in WPF units (device-independent
pixels). Be sure to take into account the size of the layout.
Height Enter the width of the display, in WPF units (device-independent
pixels). Be sure to take into account the size of the layout.
Border Select the type of border.
CloseButton Select to display Close button. Available only for Popups and
Dialogs.

Action.NET User Guide 133
Column Description
Animation Select the type of animation to use when displaying this display.
Show on Select to include this display in the page selector that lets users go
PageSelector directly to a different display in the application.
Object
iPad/iPhone Read-only. Shows whether you selected the iPad/iPhone iOS
iOS target Target option when you created the display.
Placement Select where on the layout you want to place the display. Available
only for Popups and Dialogs.
Target Select whether the display appears relative to the mouse position
or relative to whole window. Available only for Popups and
Dialogs.
DialogButtons Select the buttons you want on the dialog. Available only for
Dialogs.
Title Enter a title that appears at the top the display.
Title Select a color for the title background.
Background
Stays Open on Leave the popup window open when the user clicks something
Page Change that opens a different display. Available only for Popups.
Stays Open Leave the popup window open when the user clicks a different
After Losing display. Available only for Popups.
Focus
Left Enter how far from the left of the layout the display should appear,
in WPF units (device-independent pixels). Available only for
Canvas layouts.
Top Enter how far from the top of the layout the display should appear,
in WPF units (device-independent pixels). Available only for
Canvas layouts.

2. Use the drawing tools to create the display.


 Select a button in the vertical toolbar. Place the cursor on the display area,
then click and hold the left mouse button while dragging the cursor across
the display area.
 To see a menu of options, right-click the drawing object. The context menu
provides actions that are specific to the selected object.
 To select multiple objects, press Shift + left mouse-click on each object.

Note
When selecting multiple objects, the last object selected is the
“master,” whose properties are shown on the left. If you then align the
objects, the alignment is based on the master. If you change other
properties, the properties are changed for all selected objects.

134 12: Displays and Symbols
 The horizontal toolbar (at the bottom of the Drawing tab) contains buttons
to group, combine, align, and lock the selected objects.
 For more information about the drawing tools, see “Designer Drawing
Tools” on page 139.
3. Click Save Display.
4. Continue with “Creating Layouts” on page 135.

Creating Layouts
A layout defines the size of the application window and the basic arrangement of
display components in the runtime application. Be sure to plan how you want to use
displays. For example, consider whether you want a menu bar, toolbar, or other
elements to always display at the top of application window.
You may need only one layout to handle the information in the application.

Note
The last display listed in the Layout tab is the one that is replaced when you change
the display. For example, new projects include a default layout called Startup. The
MainPage display that is listed last is the default area that changes when you tell the
application to open a display.

To create a layout:
1. Go to Edit > Displays > Layouts.
2. Click New.
3. Enter or select information, as needed.

Column Description
Layout name Enter a name for the layout.
Layout Select the layout type:
 DockPanel—Select to position displays relative to the layout and
other displays.
 Canvas—Select to position displays in an absolute position by
entering the position in WPF units (device-independent pixels).
Description Enter a description of this layout.

4. Click OK.
5. At the top right of the Layouts tab, enter or select information, as needed.

Action.NET User Guide 135
Column Description
Width Enter a name for the layout.
Height Enter the height, in WPF units (device-independent pixels), of the
layout. This is the height of the runtime application.
Background Enter the width, in WPF units (device-independent pixels), of the
layout. This is the width of the runtime application

6. Click Add Row to add a row for a display.


 The displays you add here are the first displays the layout uses.
7. Enter or select information, as needed.

Column Description
Page Select a display you want to include in the layout. Only page
displays are available for use in a layout.
Docking Select the docking location for this display:
 Left

 Top

 Right

 Bottom

HorizontalAlign Select the horizontal alignment for this layout:


 Left

 Center

 Right

VerticalAlign Select the vertical alignment for this layout:


 Top

 Center

 Bottom

Displays Code Behind


Use the CodeBehind tab to define a set of functions connected with a display. You
can write code in either standard VB.Net or CSharp. You can also switch between the
two. If you change your language selection, the system automatically converts
existing code to the selected language.
If you need references to your own assemblies, use Run > Build > References.
CodeBehind functions can be executed when opening or closing, or while the display
is open, depending on how you configure the code. You can use CodeBehind to
define mouse and input command handling methods to be executed on a specific
display.

136 12: Displays and Symbols
For Dialog displays, use the built-in DialogOnOK method, which is called when the
built-in OK button on the dialog is pressed. If "True" is returned on that method, the
dialog is closed; if "False" is returned, the dialog remains open. This method is
commonly used to ensure data validation on the dialog (which prompts the user to
correct incorrect entries before to closing the dialog).
The Code Behind of the Displays have the following pre-defined methods:
 DisplayOpening()
Executed when display is opening.
 DisplayIsOpen()
Called in a regular intervals while the display is open.
 DisplayClosing()
Executed when display is closing.
 DialogOnOK()
Called when the OK button on a Dialog display is pressed.
Returning 1 allows the dialog to close.
Returning 0 prevents the dialog from closing.
You can add your own .NET variables and methods to this page.

Note
Because the client displays are designed to run on distributed and web environments,
we recommend avoiding the use of functions that do not allow partial trust execution
or that refer to physical file paths.

Desktop and iOS Client Settings


The desktop client settings control how the application displays on client computers.
You configure Windows clients separately from iOS clients.
To configure the desktop client settings:
1. Go to Edit > Displays > Displays.
2. If needed, configure the Desktop Settings for Windows client by clicking
Clients.
3. Enter or select information, as needed, and click OK.

Action.NET User Guide 137
Column Description
Maximize When Select to maximize the client window to fit the monitor.
Open
Stretch Select how the layout stretches when clients use the application:
 None—Layout does not resize; it displays the exact size you
configured for the layout. We recommend selecting the
Scrollbar option.
 Fill—Layout resizes to completely fill the available space on the
client’s monitor., without regard to the layout’s aspect ratio.
 Uniform—Layout resizes proportionally to the client’s monitor
size, maintaining the layout’s aspect ratio.
 UniformToFill—Layout resizes to both maintain the aspect ratio
and to completely fill the available space on the client’s
monitor. This can result in cutting off some parts of the layout.
Scrollbar Select to have a scrollbar display in the client window.
Title Enter a title for the client window.
MinimizeBox Select to display the standard minimize button.
MaximizeBox Select to display the standard maximize button.
CloseBox Select to display the standard close button.
ResizeBox Select to display the standard resize handle.
Menus Select which menus display:
 File

 Tools

 Security

Mouse Cursor Select for the mouse pointer to be visible.


Visible
OnScreen Select to display a numeric keypad.
KeyPad
Disable Web Select to prohibit application users from sending commands to
Comments the PLC.
When Mouse Is Select what displays:
Over Command  Show object edges—
Areas
 Cursor—Select the type of cursor.

Verify Tag Quality  On undefined quality show—Select option and character to


on Client show when PLC determines the data quality is undefined.
Displays  On OPC Bad quality show—Select option and character to
show when OPC server determines data quality is bad.
Share Logged Users can run multiple instances of the application on the same
User at Same computer. The user may need to log in as a different user from
Computer time to time. Select this option to automatically change the logged
in user in all running instances of the application on the same
computer.

138 12: Displays and Symbols
4. If needed, configure the Desktop Settings for iOS client by clicking iOS
devices.
5. Enter or select information, as needed, and click OK.

Column Description
Disable Commands Select to prohibit application users from sending commands to
the PLC.
iPad Initial Page Select the display that iPad users see when they start the
application.
iPhone Initial Page Select the display that iPhone users see when they start the
application.
Stretch Fill Select to resize the application to fill the device screen.

6. Enter the Number of Monitors clients will use.


7. Select the monitor and layout to show when the application starts.

Designer Drawing Tools


The Drawing tab has the following controls to create, format, and configure displays:
 Vertical toolbar—On the left side of the Drawing tab. Use these buttons to
draw shapes, add buttons, and create special windows. For more information,
see Table 1.
 Horizontal toolbar—Across the bottom of the Drawing tab. Use these buttons
to group, combine, align, and lock the selected objects. For more information,
see Table 2 on page 142.
 Appearance, DisplaySettings, and other settings—Below the main menu
buttons, these settings vary based on the type of object selected.

Action.NET User Guide 139
To configure dynamic graphic displays, from the Main Menu, click on the “Draw” icon.

The Appearance parameters dictate the brush style used when


drawing objects in the display, including colors. Clicking on the
Fill option lets you specify Colors, gradients, or objects with
which to fill the graphic.

The DisplaySettings dictate the attributes of the display.


Displays can be configured as Pop Ups, Dialogs, or normal
displays.

Like with any graphical object, displays can have varying


colors and patterns, borders, titles and more.

One special feature is that you can specify a transition


Animation to use when entering the display much like you have
in PowerPoint presentations.

Table 1 describes the vertical toolbar buttons.

140 12: Displays and Symbols
Table 1: Vertical toolbar buttons

Button Description
 Click an object to select it.
Selection Tool
 CTRL+click to select multiple objects (and object groups), one at
a time. Hold down the CTRL key as you click each object.
 Shift+click to toggle selected object from among more than one
selected objects.
 Click in an open area of the display then select a group of
elements by highlighting the elements while holding down the
left mouse button.
 Double-click an object to open the Dynamics Configuration
window, which provides settings for dynamic object properties.
 Use this tool to select an object inside a group (and modify its
Direct Selection Tool properties). Click the object to select it.
 You can also add, remove, and modify the points in a Polyline
with the Direct Selection Tool:
 To move the point select it by clicking the point and holding
the left mouse button down. Drag the point to its new
position.
 Double-click a point to add a new point adjacent to the
selected point.
 Right-click a point to delete the selected point.

Use the Hand Tool to modify the view window by clicking the
Hand Tool display background and holding down the left mouse button then
shift the display to the desired position.
Geometric objects tools Right-click to end use of each tool.
To add, modify, and remove points after creating a polygon or
polyline, use the Direct Selection Tool.
Creates a rectangle object.
Rectangle
Creates an ellipse object.
Ellipse
Creates a polygon object.
Polygon
Creates a polyline object.
Polyline
Creates a button object.
Button
Creates a text output object.
Text Output
Creates a text input/output (I/O) object.
Text Box
To link the text I/O object with a tag, double-click the text I/O object,
under the Dynamic configuration window select the TextIO
dynamic.

Action.NET User Guide 141
Table 1: Vertical toolbar buttons (Continued)

Button Description
Creates a check box object. Right-click this button to access the
CheckBox following tools:

Creates a radio button object.

Creates a combo box.

Creates a list box.


Creates a password box.

Creates a date picker.

Creates a date/time text box.

Creates a label box.

Creates a slider control.


After selecting a tool from this menu, it becomes the default tool for
that button in the vertical toolbar.
The symbol library includes both built-in and user-defined symbols.
Open Symbol
Library
Creates a Web Browser object. Right-click this button to access
Web Browser the following tools:

Creates a Page Selector object, where users can go directly to


a page in the application.

Creates a Report Viewer object.

Creates an XPS Viewer object.

Creates a Circular Panel object. For more information, see


“User Interface Controls” on page 153.

Creates a Pie Chart object. For more information, see


“Configuring a PieChart” on page 154.

Creates a Bar Chart object. For more information, see


“Configuring a BarChart” on page 154.

Creates a Calculator object.

Creates a Child Window object.


Creates an external WPF component.
After selecting a tool from this menu, it becomes the default tool for
that button in the vertical toolbar.

142 12: Displays and Symbols
Table 1: Vertical toolbar buttons (Continued)

Button Description
Creates an alarm window. Position the alarm window and double-
Alarm Window click to configure the alarm window settings. For more information,
see “Configuring an Alarm Window” on page 155.
Creates a trend window. Position the trend window and double-
Trend Window click to configure the trend window settings. For more information,
see “Configuring the Trend Window” on page 156.
Creates a data grid window. Position the data grid window and
DataGrid Window double-click to configure the data grid window settings. For more
information, see “Configuring a DataGrid Window” on page 157.

Table 2 describes the horizontal toolbar buttons.

Table 2: Horizontal toolbar buttons

Button Description
Grid definition

Screen Zoom

Group

Ungroup

Union

Intersect

Exclude

Exclusive-Or

AlignLeft

AlignHorizontalCenter

AlignRight

AlignTop

AlignVerticalCenter

AlignBottom

Move To The Front

Action.NET User Guide 143
Table 2: Horizontal toolbar buttons (Continued)

Button Description
Move To The Back

Resize Width

Resize Height

SpaceEvenlyHorizontal

SpaceEvenlyVertical

FlipHorizontally

Dynamics and Animations


Dynamics let you configure real-time changes on the object look, position, size,
colors, the value the object reflects, user action to take when a user clicks, and more.
That dynamic behavior is configured by creating links of the object properties to tags
or other project runtime properties.
In some systems, the name “animation” is used to refer to those dynamic runtime
changes; in Action.NET we elected to use the term “Dynamic” to make the clear
distinction with the WPF animations features; WPF animations also refers to changes
the graphics object properties when running the displays, but using timers and other
objects status to guide the animation, not the real-time database values.
When you double click on an object, or press the Dynamics button, or select it on the
right-click context menu, a list of compatible dynamics that can be applied to the
selected object is presented.
Table 3 lists the available dynamics.

144 12: Displays and Symbols
Table 3: Dynamics animations 

Setting Description
Action Executes actions and commands triggered by the user interface.
Shine Changes the object appearance dynamically.
TextIO Text input and text output Dynamic.
HyperLink Opens a hyperlink.
Security Sets the object runtime permissions to execute actions.
FillColor Changes the object fill color dynamically.
LineColor Changes the object line color dynamically.
TextColor Changes the object text color dynamically.
Bargraph Bargraph dynamic.
Visibility Changes the object visibility and opacity dynamically.
MoveDrag Moves the object dynamically.
Scale Changes the object size dynamically.
Rotate Rotates the object dynamically.
Skew Skews the object dynamically.
TextOutput Text output dynamic.

Action Dynamic
Table 4: Action Dynamic configuration 

Setting Description
Action Executes action triggered by the user interface:.

Action.NET User Guide 145
Table 4: Action Dynamic configuration  (Continued)

Setting Description
Event Choose one of the Mouse events. More than one event can be
selected for each action. For example: One action for
MouseLeftButtonDown and another action for MouseLeftButtonUp.
Action Select an action for the given event:
 None—No action.

 SetValue—Sets the value of the object.

 Object—The object that will receive the value.

 Value—The value that will be passed to the object.

 ToggleValue—Toggles the object value. If the object current


value is zero, the value will be 1. If the object current value is
different from zero, the value will be 0.
 Object—The object that will be toggled.

 OpenDisplay—Opens a display.

 Display—The name of the display that will be opened.

 CloseDisplay—Closes a display.

 Display—The name of the display that will be closed.

 OpenLayout—Opens a layout.

 Layout—The name of the layout that will be opened.

 RunScript—Runs a script that is placed in the display


CodeBehind tab. Do one of the following:
 Enter the new method name and click New.

 Select one of the existing methods in the comboBox.

 RunExpressions—Runs the given expression.

 Expression—Enter the expression. For example: Tag.a + 1,


or Tag.a + Tag.b, or Math.Cos(Tag.angle) * Math.PI.
 Result (optional)—Enter the tag or the property that will
receive the expression value.

Run Expressions Examples:


 Sum two values and pass the result to another tag.

Expression—Tag.quantity1 + Tag.quantity2.
Result—Tag.totalQuantity.
 Increment a tag.
Expression—tagCounter + 1.
Result—tagCounter.
 Increment a tag (0 - 10).
Expression—If(tagCounter < 10,tagCounter + 1,0).
Result:—tagCounter.
For more information, see “Configuring Expressions” on page 126.

146 12: Displays and Symbols
Shine Dynamic
Table 5: Shine Dynamic configuration 

Setting Description
Shine Changes the object appearance dynamically.
IsMouseOver Enter a tag that will receive the OverValue or the NotOverValue.
OverValue The IsMouseOver value when the mouse is over the object.
NotOverValue The IsMouseOver value when the mouse is not over the object.
Mouse Over The object appearance when the mouse is over it.
Appearance  Opacity—The object opacity (0 = transparent, 1 = opaque).

 Scale—The object size (0.5 = half, 1 = the same size, 1.5 = one
and a half, 2 = double size).
 OuterGlow—Defines the OuterGlow color, the check box enables
or disables it.
 TextColor—Defines the text color, the check box enables or
disables it.
Mouse Not Over The object appearance when the mouse is Not over it:
Appearance  Opacity—The object opacity (0 = transparent, 1 = opaque).

 Scale—The object size (0.5 = half, 1 = the same size, 1.5 = one
and a half, 2 = double size).
Is Selected The object appearance when it is selected:
Appearance  IsSelected—Defines whether the object is selected.

 Opacity—The object opacity (0 = transparent, 1 = opaque).

 Scale—The object size (0.5 = half, 1 = the same size, 1.5 = one
and a half, 2 = double size).
Scale Reference
Center

Left

Up

Right

Down

Action.NET User Guide 147
Text I/O dynamic
Table 6: Text I/O Dynamic configuration 

Setting Description
TextIO Text input and text output Dynamic. If text is a tag value or a
property, it must be between curly brackets. For example:
{Tag.analogInt1}
Binding Mode Associate an object with a tag:
 TwoWay—Input and output allowed.

 InputOnly—Only input allowed (the current tag value is not


shown, but new values can be entered).
 OutputOnly—Only output allowed.

Object or Expression Object (input) or Expression (output only) connected with the Text
Box.
DesignModeCaption The value shown in design mode:
 ShowObjectNames—The content of the text field is shown
exactly as it is.
 ShowPlaceHolders—The characters ### are shown, the number
of characters is defined by the MaxLength field.
Input Range Defines the numeric range for the entered value.
MaxLength Defines the maximum number of characters.

Hyperlink dynamic
Table 7: Hyperlink Dynamic configuration 

Setting Description
HyperLink Opens a hyperlink.
HyperLinkType Select the hyperlink type:
 http

 ftp

 file

 mailto

 telnet

Url Set the URL to open.

148 12: Displays and Symbols
Table 8: Security Dynamic configuration 

Setting Description
Security Set the object runtime permissions:.
Disable Enter a tag, a property, or an expression returning a value.
Considering the resulted value:
 Zero—Object will be enabled.

 Greater than zero—Object will be disabled.

For more information, see “Configuring Expressions” on page 126.


Verify Permissions When selected, only the chosen permission groups can access the
object.
Confirm Message Shows a confirmation dialog before taking some action:
 textBox—Enter the message that will appear in the dialog.

 checkBox—Enables or Disables the Confirm Message.

Fill, Line and Text Color Dynamic


Table 9: Fill, Line and Text Color Dynamic configuration 

Setting Description
FillColor Changes the object fill color dynamically.
Expression the value used for the FillColor dynamic.
Change Color  UsingLimits—The resulting color is determined when the value is
equal or higher than one of the limits.
 AbsoluteValue—The color will be the expression value. The
value must be a valid color name or hexadecimal color. For
example: "White" or "#FFFFFFFF"
Example
Limits:
1 - Red
10 - Blue
When the value is 0, the object will have its own color (fill color
dynamic will not do anything)
When the value is 1 to 9, the object will have the red color.
When the value is greater than 10, the object will have the blue
color.
LineColor Changes the object line color dynamically:.
Expression the value used for the LineColor dynamic.

Action.NET User Guide 149
Table 9: Fill, Line and Text Color Dynamic configuration  (Continued)

Setting Description
Change Color  UsingLimits—The resulting color is determined when the value is
equal or higher than one of the limits.
 AbsoluteValue—The color will be the expression value. The
value must be a valid color name or hexadecimal color. For
example: "White" or "#FFFFFFFF"
Example
Limits:
1 - Red
10 - Blue
When the value is 0, the object will have its own color (fill color
dynamic will not do anything)
When the value is 1 to 9, the object will have the red color.
When the value is greater than 10, the object will have the blue
color.
TextColor Changes the object text color dynamically:.
Expression the value used for the TextColor dynamic.
Change Color  UsingLimits—The resulting color is determined when the value is
equal or higher than one of the limits.
 AbsoluteValue—The color will be the expression value. The
value must be a valid color name or hexadecimal color. For
example: "White" or "#FFFFFFFF"
Example
Limits:
1 - Red
10 - Blue
When the value is 0, the object will have its own color (fill color
dynamic will not do anything)
When the value is 1 to 9, the object will have the red color.
When the value is greater than 10, the object will have the blue
color.

Bargraph Dynamic
Table 10: Bargraph Dynamic configuration 

Setting Description
Bargraph Bargraph dynamic.
Expression the value used for the bargraph dynamic.
Value Range The minimum and maximum values that will correspond to the
minimum and maximum fill percentage.
Fill (%) The minimum and maximum bargraph fill percentage.

150 12: Displays and Symbols
Table 10: Bargraph Dynamic configuration  (Continued)

Setting Description
Bar Color The bar graph color.
Orientation The bar graph orientation:

to up

horizontal center

to down

to right

vertical center

to left

Visibility Dynamic
Table 11: Visibility Dynamic configuration 

Setting Description
Visibility Changes the object visibility and opacity dynamically.
Visible Enter a tag, a property, or an expression returning a value.
Considering the resulting value:
 Zero - Object will be visible.

 Greater than zero - Object will be hidden.

For more information, see “Configuring Expressions” on page 126.


Tooltip The string that will appear as a tooltip
Opacity  ObjectValue—The value used to set the opacity.
 Range—The minimum and maximum values that will correspond
to the minimum and maximum opacity.
 Opacity—The minimum and maximum opacity (0 - invisible, 0.5 -
a bit transparent, 1 - opaque).

MoveDrag Dynamic
Table 12: MoveDrag Dynamic configuration 

Setting Description
MoveDrag Moves the object dynamically.
BindingMode  TwoWay—Input moving and output moving.
 InputOnly—Input moving only. The object does not move when
the object value changes.
 OutputOnly—Output moving only. The object does not move with
user interaction.

Action.NET User Guide 151
Table 12: MoveDrag Dynamic configuration  (Continued)

Setting Description
Horizontal Move  Expression with the horizontal move reference.
 Range—The minimum and maximum values that will correspond
to the minimum and maximum horizontal position.
 Position—The minimum and maximum horizontal position.
Vertical Move  Expression with the vertical move range.
 Range—The minimum and maximum values that will correspond
to the minimum and maximum vertical position.
 Position—The minimum and maximum vertical position.

Scale Dynamic
Table 13: Scale Dynamic configuration 

Setting Description
Scale Changes the object size dynamically.
Width Scale  Expression—the value used for the width scaling.
 Range—The minimum and maximum values that will correspond
to the minimum and maximum width scale percentage.
 Scale (%)—The minimum and maximum width scaling
percentage.
Height Scale  Expression—the value used for the height scaling.
 Range—The minimum and maximum values that will correspond
to the minimum and maximum height scale percentage.
 Scale (%)—The minimum and maximum height scaling
percentage.
Scale Reference:
Center

Left

Up

Right

Down

Rotate Dynamic
Table 14: Rotate Dynamic configuration 

Setting Description
Rotate Rotates the object dynamically.
Expression the value used for the rotation.

152 12: Displays and Symbols
Table 14: Rotate Dynamic configuration  (Continued)

Setting Description
Value Range The minimum and maximum values that will correspond to the
minimum and maximum angle. For example: 0 to 100
Angle ºThe minimum and maximum rotation angle. For example: 0 to 360
Center Reference
Center

Left

Up

Right

Down

Skew Dynamic
Table 15: Skew Dynamic configuration 

Setting Description
Skew Skews the object dynamically.
X-axis Skew  ObjectValue— the value used for the X-axis skewing.
 Range—The minimum and maximum values that will correspond
to the minimum and maximum X-axis skewing angle. For
example: 0 to 100.
 Skew (º)— The minimum and maximum X-axis skewing angle.
For example: 0 to 180º.
Y axis skew  ObjectValue— the value used for the Y-axis skewing.
 Range—The minimum and maximum values that will correspond
to the minimum and maximum Y-axis skewing angle. For
example: 0 to 100.
 Skew (º)— The minimum and maximum Y-axis skewing angle.
For example: 0 to 180º.
Skew Reference
Center

Left

Up

Right

Down

Action.NET User Guide 153
TextOutput Dynamic
Table 16: TextOuput Dynamic configuration 

Setting Description
TextOutput Text output dynamic.
Expression Indicates the text that will be shown in the object.
Localizable Indicates whether the text must be translated when the dictionary
changes.
DesignModeCaption The value shown in design mode:
 ShowObjectNames—The content of the text field is shown
exactly as it is.
 ShowPlaceHolders—The characters ### are shown, the number
of characters is defined by the MaxLength field.
MaxLength Defines the maximum number of characters.

User Interface Controls


To configure dynamics, see “Dynamics and Animations” on page 144.
To configure a circular panel, see “User Interface Controls” on page 153.
To configure a pie chart, see “Configuring a PieChart” on page 154.
To configure a bar chart, see “Configuring a BarChart” on page 154.
To configure an alarm window, see “Configuring an Alarm Window” on page 155.
To configure a trend window, see “Configuring the Trend Window” on page 156.
To configure a DataGridWindow, see “Configuring a DataGrid Window” on page 157.

Configuring a Circular Panel


Double-click any Circular Panel object in the display to configure it. Table 17
describes the Circular Panel configuration.

Table 17: Circular Panel configuration

Field Description
Control Name Defines a name for the control, so it can be accessed in the CodeBehind
script. See “Displays Code Behind” on page 136.
Columns For each value that you want to include, select a section and configure the
settings to the right of the list (described below). The panel displays a
section for each column.

154 12: Displays and Symbols
Table 17: Circular Panel configuration (Continued)

Field Description
Image Select a resource image to display.
Preview Read-only display of selected image.

Configuring a PieChart
Double-click any PieChart object in the display to configure it. Table 18 describes the
Pie Chart configuration.

Table 18: Pie Chart configuration

Field Description
Control Name Defines a name for the control, so it can be accessed in the CodeBehind
script. See “Displays Code Behind” on page 136.
ChartType Select the type of chart.
Data Items For each value that you want to include, select a section and configure the
settings to the right of the list (described below). The chart displays a
section for each data item.
FieldName Enter a name for the data item.
LinkedValue Enter a tag name as the data source for the data item.
Brush Click to select the color for the data item.

Configuring a BarChart
Double-click any BarChart object in the display to configure it. Table 19 describes the
Bar Chart configuration.

Table 19: Bar Chart configuration

Field Description
Control Name Defines a name for the control, so it can be accessed in the CodeBehind
script. See “Displays Code Behind” on page 136.
Type Select the type of chart.
Data Source Enter the dataset table or query to use for the chart.
Grid Lines Click to select the color for the grid lines.
Window Click to select the color for the window background.
Labels Click to select the color for the labels.
Show Select to angle the labels below each bar at 45°.
Horizontal
Labels 45°
Show value Select to display the bar value above the bar.
over bar

Action.NET User Guide 155
Table 19: Bar Chart configuration (Continued)

Field Description
Data Items For each column in the data source that you want to include, select a bar
and configure the settings to the right of the list (described below). The
chart displays a bar for each row.
FieldValue Name of the column in the database.
Min. Enter a tag to define the minimum value.
Max. Enter a tag to define the maximum value.
Brush Click to select the color for the data item.

Configuring an Alarm Window


Double-click any Alarm window object in the display to configure it. Table 20
describes the Alarm window configuration.

Table 20: Alarm window configuration

Field Description
Control Name Defines a name for the control, so it can be accessed in the CodeBehind
script. See “Displays Code Behind” on page 136.
MaxLines Maximum number of lines to display in the window.
List Select the type of alarms to display in the window:
 OnlineAlarms—Displays only active alarms. Alarms only display while
the alarm is in the alarm state.
 AlarmHistory—Displays only past alarms.

 Events—Displays only the SystemEvents (Edit > Alarms > Groups).

 AlarmHistory+Events—Displays past alarms and SystemEvents.

Merge Hi and Combines alarms configured as Hi and HiHi into a single row.
HiHi Lines
History Interval/ Enter the start and end dates for the alarms.
To
Show Column Select to display the column titles.
Titles
Ack by Page Enter a tag name, which when triggered, acknowledges the alarms in the
alarm window.
Show Group Enter text to display above the column titles.
Control, Label
AllowSort Select to let users sort the data by column.
Allow Column Select to let users change the order of the columns.
Reorder
Filter Enter SQL statement to limit the alarms displayed.
Refresh Enter a tag name that will trigger a refresh of the alarm data.

156 12: Displays and Symbols
Table 20: Alarm window configuration (Continued)

Field Description
Display Select to include milliseconds in the alarm time.
Millisecond
Ack Selected Configure settings for acknowledging an alarm.
Line
Columns For each column in the list, select the column and configure the settings to
the right of the list (described below).
Visible Select for column to display in the alarm window.
Allow Filter Select to let users filter the column.
Show in Select to include the column in the column chooser, which lets users select
Column the columns to display.
Chooser
Title Enter the text for the column title.
Width Enter the initial column width, in WPF units (device-independent pixels).
Sort Select how to initially sort the column.

Configuring the Trend Window


Double-click any Trend window object in the display to configure it. Table 21
describes the Trend window configuration.

Table 21: Trend window settings

Field Description
Control Name Defines a name for the control, so it can be accessed in the
CodeBehind script. See “Displays Code Behind” on page 136.
0(online) 1(history) 0 - the control shows the online data.
1 - the control shows the history data. For example:
Tag.onLineHist.
OnlineTrigger The refresh rate of the online trend control. For example, 00:00:01
or {Tag.trendTimeSpan}.
HistoryDateTime The initial point for the history trend control. For example,
{Tag.initialTrendHistory}.
Max Samples Set the maximum number of samples that will be collected from
the database.
Window Set the trend control background color.
Labels Set the color of the trend control labels.
Cursor Enable Enables (selected) or disables (deselected) the vertical cursor.
CursorPosition (%) Indicates the cursor position, where 0 means initial position and
100 means end position. For example: Tag.cursorPos.

Action.NET User Guide 157
Table 21: Trend window settings (Continued)

Field Description
Cursor Output Indicates the X axis value for the current cursor position. For
example, Tag.cursorOut.
Cursor Color Defines the cursor color.
Pens Legend Defines the position of the pens legend in the trend control.
Y Axis
Range Defines the minimum and maximum values for the Y-axis.
Labels Defines the quantity of horizontal grid lines.
Format The format of the values in the Y-axis. For valid numeric formats,
see “Tag Formats” on page 72. For example, N1 (number with 1
decimal place).
X Axis
Interval Defines the X-axis time span.
Labels Defines the quantity of horizontal grid lines.
Format The X-axis format is defined by two fields: first line format and
second line format.This is specially useful to define label marks
that require two lines of information. For valid date and time
formats, see “Tag Formats” on page 72. For example, T (Time) for
the first line format, d (short date) for the second line format.
Pens
Visible Shows (1) or hides (0) the selected pen. Ex 1 or {showPen1}.
Tag Set tag that will provide the value for the pen.
Min Linear scale reference for the tag value, according to the Y-axis
range.
Max Linear scale reference for the tag value, according to the Y-axis
range.
Pen Choose the style, the color, and the thickness of the pen line.
Mark Set the mark for each point in the trend line.
CursorValue Set the tag that will receive the real value of the Y-axis, according
to the cursor position. For example: Tag.pen1CursorValue.
FieldName Set the pen name.

Using Y Axis Scaling


Considering:
Y-axis Min = 0;
Y-axis Max = 100;
The trend control allows many pens to be displayed together. When your pens do not
have the same range, you can use the tips below to fit your data in the same chart, for
better visualization:

158 12: Displays and Symbols
 If a pen has a lower range, 0 to 1 for example, you can set the Max property of
the pen to 1, so when the real tag value is 1, the value 100 will be displayed in
the chart. (100/1 scale).
 If a pen has a higher range, 0 to 1000 for example, you can set the Max
property of the pen to 1000, so when the real tag value is 1000, the value 100
will be displayed in the chart. (1/10 scale).

Configuring a DataGrid Window


Double-click any DataGrid window object in the display to configure it. Table 22
describes the Data Grid window configuration. Critical fields that you must configure
are shown with an *.

Table 22: Data Grid window configuration

Field Description
Control Name Defines a name for the control, so it can be accessed in the code-behind
script. See “Displays Code Behind” on page 136.
Data Source Enter the dataset table or query to use for the window.
SelectedValues Enter a string tag or array tag to receive the contents of the selected row.
SelectedIndex Enter a tag to receive the number of the currently selected row. Row
numbering starts with 0.
LinesCount Select a tag to receive the number of lines in the window.
Theme Select the theme for the window.
BindindMode Select the binding mode to use. See http://msdn.microsoft.com/en-us/
library/system.windows.data.bindingmode.aspx.
AllowInsert Select to let users add rows.
Show Group Enter text to display above the column titles.
Control, Label
Show Column Select to display column titles.
Titles
AllowSort Select to let users sort the data by column.
Auto Create  Select to have the system automatically include all table or query
Column columns in the window. If selected, you do not have to configure the
columns below. To customize specific columns, add the column to the
column list and configure the settings to the right (described below).
 Deselect to manually configure each column that you want to include
using the Columns list and settings to the right (described below).
Filter Enter SQL statement to limit the data displayed.
Refresh Enter a tag name that will trigger a refresh of the data.
Columns For each column you want to customize or include manually, add the
column and configure the settings to the right of the list (described below).
Visible Select for column to display in the data grid window.

Action.NET User Guide 159
Table 22: Data Grid window configuration (Continued)

Field Description
Editable Select to let users edit the column.
Show in Select to include the column in the column chooser, which lets users select
Column the columns to display.
Chooser
FieldName Enter a name for the column.
FieldType Select the column data type.
Title Enter the text for the column header.
Width Enter the initial column width, in WPF units (device-independent pixels).
Sort Select how to initially sort the column.

Managing Images and Symbols

Image Resources
You should import any images you want to use in your displays or reports through the
Resources tab. This creates a repository of images for the application.
If you need to update an image with a new version, you can replace it, and it will be
updated throughout the application. Be sure keep the resource name the same.
You can use any image file to fill or “paint” an object when creating displays from
Draw > Drawing.
You can import the following file types:
 .bmp
 .gif
 .ico
 .jpg
 .png
 .tiff
 .wdp
To manage resources:
1. Go to Edit > Displays > Resources.
2. Click Import Images.
3. Navigate to where the images are that you want to import.

160 12: Displays and Symbols
4. Select the image files and click Open.
5. In each row, enter or select information, as needed.

Column Description
Name Edit the default name.
Description Enter a description of this image.

Managing Symbols
The symbols library comes with a number of graphics you can use. You can also
create symbols to add to the library. Symbols can be just a graphic or a graphic and
dynamics.
To view symbols:
1. Do one of the following:
 To see only the symbols used in this project, go to Draw > Symbols.
 To see all available symbols, go to Draw > Drawing, and click Open
Symbol Library.
2. To save a symbol as an image file, select the row and click Save to Image.
To add a symbol:
1. Go to Draw > Drawing.
2. Draw the object you want to become a symbol.
3. Select the whole object and right-click.
4. Select Make New Symbol.

Display Runtime Objects


The namespace Display lists all displays with their properties and open and close
methods.
The namespace Layout lists all layouts with their properties and open and close
methods.
The namespace Client has the properties of the environment on each connected
client computer or mobile device.
See http://www.spinengenharia.com.br/help/an-2014/runtime/index.html for the
complete programming reference on runtime objects.

Action.NET User Guide 161
162 12: Displays and Symbols
13: Reports and Data Access

The following sections describe how to generate reports:


 “Creating Reports” on page 161
 “Using the Report Editor” on page 162

Creating Reports
Reports let you configure the report format and basic formatting. Application users
can then run reports.
To create reports:
1. Go to Edit > Reports > Reports.
2. Enter or select information, as needed.

Column Description
Name Enter a name for the report. The system lets you know if the name is
not valid.
Padding Select padding to use when replacing a tag name with its value (field
starts with space for the same number of characters as the tag
name):
 Compact—Removes any extra characters and displays only they
tag value.
 PadRight—Puts extra space for each character to the right of the
tag value.
 PadLeft—Puts extra space for each character to the left of the tag
value.
SaveFormat Select the report format:
 XPS

 HTML

 Unicode

 ASCII

 PDF

SaveFileNam Enter a string, along with {ObjectProperties}. Use the full path.
e

Action.NET User Guide 161
Column Description
Description Enter a description of this report.
[Other For definitions of other columns that are available in many tables,
columns] see “Common Column Definitions” on page 58.

Using the Report Editor


You create the text, formatting, and values for the report using the text editor.
To use the text editor:
1. Go to Edit > Reports > TextEditor.
2. Create the text, tags, and formatting for the report.
3. Click Save.
4. Configure the report properties for the display dynamics or script that will run
the report.

Report Runtime Objects


The namespace Report list all configured reports.
The most commonly used methods of the report is the Save Command:
Report.Report1.SaveCommand()
See http://www.spinengenharia.com.br/help/an-2014/runtime/index.html for the
complete programming reference on runtime objects

162 13: Reports and Data Access
14: Run, Test and Publish Projects

The following sections describe how to build and test applications:


 “Running the Application” on page 163
 “Using the Diagnostic Tools” on page 164
 “Build and Pack Projects” on page 168
 “Project Version Control” on page 169
 “Information Runtime Objects” on page 170

Running the Application


You can test the application one of the following ways:
 From Run > Test—Lets you run the project in “safe mode,” which runs the application
with some features protected. Historical, Alarm and Event data are logged to
temporary files so they will not effect the production logs, and drivers cannot write any
data to the devices.
 From Run > Startup—Lets you run the fully operational project, without building the
project.
You can run the project using both test and startup at the same time.
For information about using the diagnostic tools available, see “Using the Diagnostic
Tools” on page 164.
To test the application:
1. Do one of the following:
 Go to Run > Test.
 Go to Run > Startup.
2. Enter or select information, as needed.

Field Description
UserName Enter a valid username to access the application.
Password Enter the password that corresponds to the username.
Project Read-only. Displays the IP address or name of the computer where
Server the project is based on the configuration on the Server tab. See
“Running Projects” on page 45.

Action.NET User Guide 163
Field Description
Port Read-only. Displays the port Action.NET uses for access. For test, it
uses 3201. For startup, it uses 3101. These ports must be open on
the server.
Startup Read-only. Displays whether the configured server is the local
Computer computer or a remote server.
Execution Overrides the default execution path, which is the project file
Path location.
Module Run the Module Information tool.
Information
Property Run the Property Watch tool.
Watch
Trace Run the TraceWindow tool.
Window
Run Modules Select which Modules execute when running the project.
Status Field shows current running and connected or disconnected status.
 Click Try to Connect to connect to the running application.
Required to let changes you make to the project apply immediately
to the test or startup runtime.
 Click Disconnect if you do not want changes you make to the
project to apply immediately to the test or startup runtime.
 Click Stop to stop the execution of the application.

Online Select to let changes you make to the project apply immediately to
Configuration the test runtime. You must also be connected to the running project
Enabled (see Status setting above).

3. Click either Run Test or Run Startup.

Using the Diagnostic Tools


After starting the project, the Startup window, lets you select diagnostic tools:
PropertyWatch (Watch), TraceWindow (Trace), and ModuleInformation (Info).

164 14: Run, Test and Publish Projects
Property Watch
The Property Watch is a diagnostic tool used to access tags and internal properties of the
system for reading or writing. Type the name of the property in the Object column and have
to see its value in the Value column.

For example, Tag.Coils, Device.Channel.Modbus.Status. On the right side are additional


properties of the selected object.

Action.NET User Guide 165
Trace Window
The Trace Window is a tool that displays system messages in a data grid interface. The
messages contain status information (based on Edit > Channels > Settings column) about
reads, writes, unsolicited, TX frames (sent), and RX (received).

Tip
When checking the Devices check box in the Settings, enable only the error, info and warning
information, not the debug information, otherwise you will create too much data. For
ControlLogix devices, it is very important to use this tool, as the system will display the invalid
addresses in the configuration.

Click Settings in the Trace Window to select options for which message types and
modules, data format, or to save to file. You can also configure a tag in the Object Name field
and click Add to select that object to include on the monitoring.

166 14: Run, Test and Publish Projects
Module Information
Module Information contains information about the operation of the modules. Select the
Devices Module and a specific channel for information about the functioning of the
communication channel.
The Read Groups Information provides information about the virtual reading groups,
runtime of each item, quantities of readings and readings, that have failed, and also reports
on the code and date/time of the last error.

To use the Module Information:


1. Go to Read Groups Information to look at the number of Success and Failed
communications, to quickly identify the communication blocks.
2. If you have systematic errors in all blocks or status codes with negative
values, typically it means you cannot access the remote device. Verify if the
node address is correct.
3. If you have a block with systematic errors, verify the tags and addresses
connected with that block. Use the Trace Window with Device information to
collect information about those communication errors.
4. For some protocols, such as OPC, the Discarded items will show the wrong
addresses in the configuration.

Action.NET User Guide 167
When running the Enterprise version in test mode, the system only reads from the field
devices, even if you have a configuration to write to field.
You can run the application with online configuration enabled, so you don’t need to start
and stop the application when modifying the configuration. You can modify PLC addresses,
access types, and most of the application and see the real-time the results on your running
application. You can use the Startup window or the PropertyWatch to start and stop only one
module, like the Devices, instead of restarting the whole runtime system.

Build and Pack Projects


Action.NET is constantly compiling the module you are editing in the background and
validating all scripts and displays. If you have not run a full build, the BuildStatus column
reflects any warnings or errors found during the background compile process.
Double-click a row with a red X to go to the source of the warning or error. Warnings are
informational and do stop the script from running. Errors prevent the specified script from
running, but do not affect the whole application. If a script or display has a warning, it will still
run.
Periodically, you should run a full build:
 When you have made many changes and you want a full validation and recompile of
the whole project.
 When you want to assign a build number to a version.
 When you want to pack the database. When the build executes, the system creates a
backup of the current project file. If you want to save the project as it was for this
build, rename the backup file.
 When you are getting ready to publish, that is, create the read-only runtime
application
To build the application:
1. Go to Run > Build > Messages.
2. If you want to pack the database, select the Pack Database after Build option.
 Select this option to significantly reduce the size of the project file. The
system creates a file with the backup extension, which is the database
before the packing. Typically, you want to pack the database every time
you run a build.
3. If you want to save all displays, select the Save all Displays when Building
option.
 Be sure to use this option if you have made changes to the symbol library.
This option applies to all symbol library changes throughout the project.
4. Click Build.

168 14: Run, Test and Publish Projects
Tip
When checked, a backup of project connected with that build is automatically created.

Project Version Control

Tracking configuration changes


Action.NET provides many ways to help you to keep track of the project configuration
changes:
 All configuration tables have the DateCreated and the DateModified information.
 The Run-Build-History shows all Build commands executed to that project. A backup
of the project in that state my be available according the user settings.
 The Info > Track > Tables shows all configuration tables, listing the number of rows
and if the tables where changed.
 The Info > Track > Changes shows all project objects that have been modified. In
order to enable or disable that, you must be logged as Administrator. By default, the
object tracking is only enabled after you publish the project, but you can enable that
anytime, independently of using or not the publish feature.

Publishing the Project


Publishing the project creates a read-only version of the project.
It is NOT necessary to publish the project to install it for production. In scenarios that you
intend to have continuous changes to the project in field, it is simpler to put the main project
file, TPROJ, directly on the production computer.
The benefits of publishing is that the system created a compacted and real-only version of
the project file. The file created has the same name of the project file, with the publish
version number and the extension TRUN.
This allows the system to comply with regulated industries.
The typical scenarios to the publish command are:
 You want to deploy a read-only version of the project, for instance to be in compliance
with certified and regulated environments.
 You want to use the automatic version numbering system. The result of publishing is
a .TENG file that also contains a major (1.0) or minor (0.1) version number as part of
the file name. In addition, Info > Track helps you manage the files published to the
field, including which project build they are.

Action.NET User Guide 169
 You want a smaller footprint and faster loading of the project, for instance on
machines, OEM and embedded systems. The TRUN file can be up to 5 to 10 times
smaller than the TPROJ file.
 You want to protect the project from modification.

Caution
The TRUN file is always read-only, but if the project configuration will not be visible to
end-user, it is an independent option defined in the Security System. If you don’t want
end-users to see the project configuration remove the permission of the GUEST user
and other users to edit the project before publishing it.

To publish the project:


1. Go to Run > Build > Messages.
2. Select the desired build settings and Click Build.
3. Go to Run > Publish.
 The Current Project Settings fields show the read-only status of the
project.
4. Select the Publish Settings you want.
5. Click Publish.

Information Runtime Objects


There names a few runtime objects that provide information about running the project.
The Info namespace in the main location for runtime status. The main objects on that
namespace are:
Info.Project: information about the project that is running
Info.License: information on the license
Info.Module: Information and start/stop command to Modules
Info.Trace(): displays a message on the TraceWindow
Info.TestMode: shows if the project is running in Test Mode

The Server namespace has information about the server computer.


The Client namespace has information about each client computer. running a graphical
interface.
See http://www.spinengenharia.com.br/help/an-2014/runtime/index.html for the
complete programming reference on runtime objects.

170 14: Run, Test and Publish Projects
15: Deploying Action.NET Projects

Action.NET projects can be deployed to run locally on a stand-alone computer or


embedded device, as well in a client-server distributed architecture or on the cloud.
The following sections describe how to deploy the runtime application:
 “Local and Distributed Systems” on page 171
 “Product installation on the target computer” on page 172
 “License and Project Settings Verification” on page 173
 “Installing the Project Configuration files” on page 173
 “Setup the server to start the runtime” on page 174
 “Remote Client Users Setup” on page 179
 “Deploying Redundant Systems” on page 183

Local and Distributed Systems


When you are finished developing and testing the application, you can deploy the
runtime application for use by the end-user clients.
Action.NET supports many deployment scenarios such as:
 Embedded devices with no local user interface.
 Stand-alone panels or computers with local user interface.
 Distributed systems with many client stations accessing a server.
 Redundant servers with multiple users connected.
The setup procedures to each scenario have many common steps. For all the
systems, even the stand-alone installations, Action.NET has the concept of the
Server and Client components.
The Server components is the Project file and the Modules that run the server side
tasks, such as data-acquisition, alarms and data logging.
The Client component are the Graphical User Interfaces and related scripts.
When you have a local or stand-alone project the server and the client components
are just running on the same machine.
The client technologies used by Action.NET simplify a lot the deployment as you have
to install the project on the server computer; all the clients stations will use the project
from its server.

Action.NET User Guide 171
In order to setup the server components or stand-alone configurations refer to
sections:
“Product installation on the target computer” on page 172
“License and Project Settings Verification” on page 173
“Installing the Project Configuration files” on page 173
The client setup can be slightly different according to its type. Action.NET supports
the following client technologies:
 Windows rich client—See “Windows Rich Clients” on page 179
 Windows smart client—See “Windows Smart Clients” on page 179
 Windows web-based—See “Windows Web Clients” on page 180
 iOS—See “iOS, iPhone and iPads, Clients” on page 181
 Active-X, COM, and JavaScript—You can access the runtime application
using the DataAccess API, which is a COM interface to provide integration
with Active-X, JavaScript on web pages, or legacy programming languages
such as VBScript. Contact support for assistance.
For redundant scenarios see “Deploying Redundant Systems” on page 183

Product installation on the target computer


 Access to all referenced PLCs and their data.
 Full installation of Action.NET, including either the embedded web server
(TWebServer) or IIS.
The installation requires .NET. See “Getting Help” on page 2.
The stand-alone computer or the server components on distributed systems must that
have the Action.NET installed and licensed.
The section “Installing Action.NET” on page 3 describes the standard way to install
and license Action.NET.
When you are not using components that require the setup of the Windows Registry,
such as the OPC components, you also just copy the product files without running
any installation (that is very useful to embed the software on devices), removing
project examples or engineering components, adding custom protocols.
On distributed systems, the client computers don’t require a license, they just need to
be allowed to connect with the server based on number of runtime users enabled on
the server. For more information on the client setup, see “Remote Client Users Setup”
on page 179.
If the system will have remote users, the TWebServer or IIS must be installed and
running on the server computer.

172 15: Deploying Action.NET Projects
License and Project Settings Verification
The Action.NET project is created targeting one specific Product Family and Product
Model, as defined on the Info > Project > Settings page.
It is necessary to ensure that the License on the server computer is “greater than or
equal” to the requirements of the project, which means the following check-list:
 The Family defined in the license must be the same as the Family in the
project or a higher hierarchy family.
 Enterprise licenses can run all projects (Enterprise, HMI and
OPCServer)
 HMI licenses can run HMI and OPC Server projects
 OPCServer licenses can run only OPC server projects
 Express licenses or projects are not authorized for production
environments.
 The Model in the license must support a number of communication points
equal to or greater than the project that will run on the server computer.
 The License Type on the target computer must be Engineering or Runtime.
The license of type DEV (Development) are only for System Integrators
internal work and shall not be used in production environments.
 If the Project requires any additional interfaces, such as OSIsoft(tm) PI System,
or IEC protocols, make sure the license on the target computer is enabled for
those interfaces.
 Verify if the number of remote clients enabled meets your project
requirements.
For more Information about product and license models refer to “Action.NET Versions
and Licenses” on page 173.

Installing the Project Configuration files


The project configuration is just one file, with extension TPROJ or TRUN, according
to whether you want to install for production the main project configuration file or a
published version.
The Project Management utility allows you to connect with remote servers and
download the project files to remote computers.
Although that one file contains the entire project configuration, you should use the
following check-list to ensure that any external dependencies are also taken care of.
 If the folder structures on the Production computer is not the same you used
for development, make sure that all the places you have FILE PATHS in your

Action.NET User Guide 173
project are mapped correctly to the production computer. Action.NET has
many features and macros to define paths relative to the Project location,
product installation or execution path; whenever possible avoid using fixed
path locations in your projects.
 Any external WPF controls should also be copied the target computer. For
remote web access those files should be located at the folder WpfControl and
the utility to update the web manifest must be executed.
 If the application is referencing external DLL or .NET assemblies ensure they
are available and at the correct paths on the target computer.
 If the project uses RETENTIVE values, you must decide if the target computer
will create a new Retentive database or you if you will copy one with some
predefined values.
 Enable Firewall to allow remote clients. Ports 3101 for startup (optionally port
3201 to Test Mode). For web and iOS clients, data web services enabled on
port 80.
 If the application is using external DLLs, WpfControls, configuration files or
embedded databases, make sure you copy those files to the target machine
and double check if the PATHNAMES you used in the project configuration are
compatible.

Setup the server to start the runtime


You can run the project in any of the following ways:
 Start manually, from the Action.NET main window and project list, right-click
the project and select Run Project.
 Start manually, when configuring the project, go to Run > Startup and click
Run Startup.
 Start the project automatically, which is the best option for production
environments.
The best way to define an automated startup of the product, it is to use the
configuration interface available on the Project Management tools, at the SERVER
tab.

174 15: Deploying Action.NET Projects
We recommend to start manually during the project development or installation where
it is necessary for an operator during the startup process, otherwise the automated
startup is more suitable for production computers.
You should use the login option, the startup shortcut, when testing the project or in
scenarios where the application will always run in the same Windows user profile.
Use the Windows Service on production servers when you need different Windows
users to login on the computer, while keeping the server side runtime components
running at all times.
We support the OPC client activation, in order to be in full OPC compliance, but we
don’t recommend its use, because, as a good practice principle, it not desirable to
allow the status of remote client connections to control if a server side application is
running or not.
The following sections will describe what those automated settings are doing if, for
some reason, you need to setup those startup settings without using the configuration
tools.

Using a Shortcut on Windows Startup


You can configure a Windows server to automatically start a project using a startup
shortcut. The startup shortcut only starts the application when a user logs in to
Windows. and the application stops running when the user logs off of Windows.
This procedure is automatically executed by the system when the startup mode is
selected, as described in “Setup the server to start the runtime” on page 174. This
section will explain how to manually setup those shortcuts.

Action.NET User Guide 175
The Project runtime startup is executed by the program TStartup.exe.

Note
When using this example, make sure to change the installation path and version of
the Action.NET to the installation on your computer.

Command lines parameters:”


/project: Project Path and Name between double quotes
/username: (optional), username that will be used to start the server , if you do not
specify, the user guest will be used.
/redundancy: indicates that the server redundancy is being used (requires ip1 and
ip2)
/ip1: IP Address of the Primary Action.NET Server
/port1: TCP port of the Primary Action.NET Server
/ip2: IP Address of the Secondary Action.NET Server
/port2: TCP port of the Secondary Action.NET Server
The modules that will be started are configured in the project, at Run.Startup.

Examples:
"C:\Program Files (x86)\Spin\Action.Net\an-2014.1\TStartup.exe" /
project:"C:\ActionNet Projects\Project1.tproj"
"C:\Program Files (x86)\Spin\Action.Net\an-2014.1\TStartup.exe" /
project:"C:\ActionNet Projects\Project1.tproj" /port1:3101

Server Redundancy:
"C:\Program Files (x86)\Spin\Action.Net\an-2014.1\TStartup.exe" /
project:"C:\ActionNet Projects\Project1.tproj" /username:Administrator /redundancy /
ip1:192.168.1.1 /port1:3101 /ip2:192.168.1.2 /port2:3101

Creating the shortcut


Go to Start > All Programs, and right-click the Startup folder, and select Open.
1. In the Startup folder, right-click and select New > Shortcut.

176 15: Deploying Action.NET Projects
2. In the Create Shortcut window, paste into the field that displays.
3. If you are not using redundancy, delete the redundancy part of the text.

Note
In the examples below, be sure to change the installation path and version of the
Action.NET to the installation on your computer.

4. Type or paste the full command line, examples: "C:\Program Files


(x86)\Spin\Action.Net\an-2014.1\TStartup.exe" /project:"C:\ActionNet
Projects\Project1.tproj"
5. Click Next.
6. Enter a name for the shortcut.
7. Click Finish.
 When you restart the computer next, the project will start automatically.

Using a Windows Service to Startup


You can configure a Windows server to automatically start a project when the
computer starts using a Windows Service. The Windows Service starts the
application as soon as the computer is powered on and the Windows Operating
System starts, even if no user has logged in to Windows.
This procedure is automatically executed by the system when selected for startup
mode, as describe on “Setup the server to start the runtime” on page 174. This
section will explain how to setup it manually.

Note
These methods do not start the client (user interface with the displays). To automate
the client startup, see “Automatically Starting Windows Clients” on page 181.

Use the Windows Service only on production servers that you are not using as
engineering stations, and only if you need the ability to differentiate Windows users
logging in while the project is running.
The first several steps of the procedure below are required to let you set up the
Windows Service.
To run your application as a Windows Service:
1. Go to Info > Project > Redundancy.
2. Enter or select the information, as needed.

Action.NET User Guide 177
Field Description
Enable Select to enable the configuration.
Configuration
Primary Server IP Enter the IP address and port of the primary server.
and Port
Secondary Server Enter the IP address and port of the secondary server, if any.
IP and Port
On Primary Select the option you want.
Startup
Historian Select how to handle historian replication.
Replication
Connection Connection timeout time, in seconds, to switch to secondary
Timeout server.
Server Command Read-only field populated based on the fields above. Click Copy
Line to Clipboard to copy the command for use.

3. Next to the Server Command Line field, click Copy to Clipboard.


 This copies the read-only field that was populated based on the fields
above it.
4. Open a text file, paste, and continue with steps 5 through 7 in the file.
5. If you are not using redundancy, delete the redundancy part of the text.
6. At the beginning of the command line, enter or paste the full path to the
Action.NET installation folder and put quotes around it.
 It should look something like this:
“C:\Program Files (x86)\Spin\Action.NET\an-2014.1.3\tStartup.exe”
7. Before the “tproj” text, enter or paste the full path to the project.
 It should look something like this:
/project:C:\Action.NET Projects\<project_name>.tproj
 The whole command line should look something like this:
“C:\Program Files (x86)\Spin\Action.NET\an-2014.1.3\tStartup.exe” /
project:/project:C:\Action.NET Projects\<project_name>.tproj
 /username:<username>
8. Leave the text file open for use in step 10.
9. From the DOS prompt, go to the <.NET Framework Install Path> and execute
the following command:
installutil <InstallPath>\<an-version>\TStartupAsService.exe
 Example:
C:\Windows\Microsoft.NET\Framework\v2.0.50727>installutil c:\Program
files\Spin\Action.NET\an-2014.1\TStartupAsService.exe
10. Copy and paste the command you created in the text file.

178 15: Deploying Action.NET Projects
11. In the Windows Registry, set up the parameters on:
"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\TStartup\Im
agePath"
 Example:
"c:\\Spin\an-2014.1\TStartupAsService.exe" "/project:C:\Action.NET
Projects\Project1.tproj"
12. In the Windows Services (Administrative Tools), set "TStartup Service" to
Automatic, so the selected project will start when the computer starts.

Remote Client Users Setup

Windows Rich Clients


You can deploy your application for use by Windows rich clients.
Table 1 describes how the rich client deployment works.

Table 1: Windows rich client deploymentAction.NET

Installation Install Action.NET on the client computer. See “Installing Action.NET”


on page 3.
How to start Run the TRichClient.exe program.For an example of how to
automatically start the client when a user logs in to Windows, see
“Automatically Starting Windows Clients” on page 181.

Execution Runs in its own window. It allows very strong user security, including the
ability to disable Windows task-switch, according the login on the running
project.
When running the TRichClientt.exe on 64-bit machines, the application
runs in 64-bit native code. If you need run the 32-bit version, for instance
to ensure compatibility with legacy COM and Active-X components, you
can use the TRichClient32.exe program.

Communication Communicates with the server using WCF (port configurable, default
3101).

Windows Smart Clients


You can deploy your application for use by Windows smart clients.
The smart client runs like the rich client, that is, they work the exact same way, but the
smart client uses the ClickOnce™ installation. This technology lets you have the
same functionality as the rich client, but without having to install Action.NET on your
computer.

Action.NET User Guide 179
The first time you access the application, the system automatically downloads the
necessary components to run the application. The next time you access the
application, the system verifies if the local cache is the same version of the
application that is on the server, and if necessary, updates the local cache before
running the application. If the version is the same, the application starts immediately.
Table 2 describes how the smart client deployment works.

Table 2: Windows smart client deploymentAction.NET

Installation No installation required. You just need .NET Framework 4.0 and Internet
Explorer 8.0 or later on the client computer.
The first time you start the application, it will automatically download the
required components from the server. Every time the application starts, it
verifies automatically if a new version is available on the server.

How to start From Internet Explorer (or a shortcut) go to the URL:


http://<ServerIPAddressorName>/an-2014.1/TSmartClient.application
For an example of how to automatically start the client when a user logs
in to Windows, see “Automatically Starting Windows Clients” on
page 181.

Execution Runs exactly the same as the rich client. The functionality of the rich
client and the smart client are the same; only the installation and
activation methods are different.

Communication Communicates with the server using WCF (port configurable, default
3101).

Windows Web Clients


You can deploy your application for use by Windows web clients.
Table 3 describes how the web client deployment works.

Table 3: Windows web client deploymentAction.NET

Installation No installation required. You just need .NET Framework 4.0 and Internet
Explorer 8.0 or later on the client computer.
The first time you start the application, will automatically download from
the server the required components. Every time the application starts, it
verifies automatically if a new version is available on the server.

How to start From Internet Explorer (or a shortcut) go to the URL:


http://<ServerIPAddressorName>/an-2014.1/TWebClient.Xbap
For an example of how to automatically start the client when a user logs
in to Windows, see “Automatically Starting Windows Clients” on
page 181.

Execution Runs inside a web browser windows using “Partial Trust” (Sandbox
Security).

Communication Communicates with the server using HTTP or HTTPS (port 80).

180 15: Deploying Action.NET Projects
Automatically Starting Windows Clients
You can create a shortcut to the appropriate executable, depending on the client type,
to automatically start the application on a Windows client. You can create the shortcut
on the desktop or put it into the Startup folder, as described below.
For the web client, you can also configure the application as the home page in
Internet Explorer.
ToGo to Start > All Programs, and right-click the Startup folder, and select Open
to open the Startup folder.
13. In the Startup folder, right-click and select New > Shortcut.
14. In the Create Shortcut window, paste into the field that displays.
15. If you are not using redundancy, delete the redundancy part of the text.
16. Do one of the following:
 For a rich client—At the beginning of the command line, enter or paste the
full path to the Action.NET installation folder and put quotes around it.
 It should look something like this:

“C:\Program Files (x86)\Spin\Action.NET\an-2014.1.3\TRichClient.exe”


/ip1:<IP_address>
 For a smart or web client—At the beginning of the command line, enter or
paste the full path to the Internet Explorer installation folder and put quotes
around it.
 It should look something like this:

“C:\Program Files (x86)\Internet Explorer\iexplorer.exe”


http:<IP_address>/an-2014.1/TSmartClient.application

“C:\Program Files (x86)\Internet Explorer\iexplorer.exe”


http:<IP_address>/an-2014.1/TWebClient.Xbap
17. Click Next.
18. Enter a name for the shortcut.
19. Click Finish.
 When you next restart the computer, the project will start automatically.

iOS, iPhone and iPads, Clients


You can deploy your application for use by iOS clients: iPad, iPhone, and iTouch. For
other tablet devices, contact support.
Table 4 describes how the iOS deployment works.

Action.NET User Guide 181
Table 4: iOS deploymentAction.NET

Installation Install the SCADA HMI Client app from the Apple Store.

How to start Start the SCADA HMI Client app and follow the initial setup options.

Execution On iOS, it runs natively, thus providing higher performance, enhanced


security, and access to native graphical components, compared to other
applications using Terminal Client, Remote Desktop, or HTML web.

Communication Communicates with the server by calling a web service using port 80. The
server must be on the same VPN or local network as the iOS device, or it
can be a public IP address, as long as HTTP access is enabled.

To deploy on an iOS device:


1. From your iOS device, tap the App Store icon.
 You can also go to the Apple App Store from iTunes.
2. Search for and install the SCADA HMI Client app.
3. Start the SCADA HMI Client app.
4. Enter the following information:

Field Description
H ostServer IP address or name of the project server.
Port Port 80.
Polling Defines the refresh rate between the client and the server,
expressed in quarters of a second. The default value of 1, means
the client gets new data from the server every 250 ms. When
connecting to servers located on the Internet or low bandwidth
networks, that value should be increased. For more information,
refer to the help for the app.
U ser Project user name as configured in the project. The default is
guest.
Password Project password associated with the user name.
Project Project name on the remote project server.

5. Tap Login.
 The graphics and displays download, then the application starts. The
application startup the first time may take a little longer than subsequent
startups.

182 15: Deploying Action.NET Projects
Deploying Redundant Systems

Configuring Redundancy options


You can configure application redundancy by configuring two computers as servers.
One computer will be the primary, and the other will be the secondary or hot standby.
If the primary computer or connection to the computer fails, the system automatically
fails over to the secondary computer.

Note
If you selected HMI as the Product Family, the redundancy configuration is not
available.

To configure redundancy:
1. Go to Info >Project > Redundancy.
2. Enter or select the information, as needed.

Field Description
Enable Select to enable the redundancy configuration.
Configuration
Primary Server IP Enter the IP address and port of the primary server.
and Port
Secondary Server Enter the IP address and port of the secondary server.
IP and Port
On Primary Select the option you want.
Startup
Historian Select how to handle historian replication.
Replication
Connection Connection timeout time, in seconds, to switch to secondary
Timeout server.
Server Command Read-only field populated based on the fields above. Click Copy
Line to Clipboard to copy the command for use.
Rich Client Read-only field populated based on the fields above. Click Copy
Command to copy the command for use.
Smart Client URL Read-only field populated based on the fields above. Click Copy
to copy the command for use.
Web Client URL Read-only field populated based on the fields above. Click Copy
to copy the command for use.

Action.NET User Guide 183
Automatically start the application on a Windows client:
1. Go to Info > Project > Redundancy.
2. Enter or select the information, as needed.

Field Description
Enable Select to enable the configuration.
Configuration
Primary Server IP Enter the IP address and port of the primary server.
and Port
Secondary Server Enter the IP address and port of the secondary server, if any.
IP and Port
On Primary Select the option you want.
Startup
Historian Select how to handle historian replication.
Replication
Connection Connection timeout time, in seconds, to switch to secondary
Timeout server.
Rich Client Read-only field populated based on the fields above. Click Copy
Command to copy the command for use.
Smart Client URL Read-only field populated based on the fields above. Click Copy
to copy the command for use.
Web Client URL Read-only field populated based on the fields above. Click Copy
to copy the command for use.

3. Click the Copy button next to the type of client you want to start automatically.

184 15: Deploying Action.NET Projects
16: Runtime Namespaces

Project Runtime Objects


All the Project components, such as Tags, Alarms, Devices have associated .NET classes
and objects, with properties and methods accessible by the runtime system, as explained on
“Object Model and Namespaces” on page 21. The .NET documentation for those
Namespaces, following the MSDN layout, is accessible at http://
www.spinengenharia.com.br/help/an-2014/runtime/index.html
Microsoft .NET Framework classes
Action.NET Runtime has access to all the features of the Microsoft .NET Framework, as a
pure managed code application. For information about the C# and VB.NET classes refer to
Microsoft MSDN .Net Framework 4 online documentation at http://msdn.microsoft.com/en-
us/library/gg145045(v=vs.100).aspx
Script Toolkit
When creating code inside Action.NET, we provide a set of utility methods, which we call the
Script Toolkit. Those methods are available at the namespace TK from any code inside the
project. The methods available are defined at http://www.spinengenharia.com.br/help/an-
2014/runtime/index.html
Custom On-Screen Keyboards
When using touchscreen panels, you can customize the on-screen keyboard or add your
own. Contact us for source code examples on implementing custom keyboards.
WPF Controls Toolkit
You can add any WPF control directly on Action.NET displays with no toolkit required. But, if
you want to have a custom configuration dialog, accessing the Tags in the application, you
can use the WK (WPF Controls Toolkit) interfaces. Contact us to get examples on creating
WPF controls, or if you need assistance to encapsulate Active-X controls or .NET controls to
use them within Action.NET displays.
Data Access COM API
If you need to access the real-time database from external applications, using any
programming language or even JavaScript code on web browsers, you can use the Data
Access COM API, described at http://www.spinengenharia.com.br/help/an-2014/runtime/
index.html
Import Wizards and Driver Toolkit
Action.NET has extensions to allow you to create your own Device Communication Drivers,
using the Driver Toolkit, as well, custom importing tools and add-in components. Contact
Spin if you need information on those additional extensions.

Action.NET User Guide 185
186 16: Runtime Namespaces
17: Action.NET Versions and Licenses

Action.NET has a flexible features that let you manage product version and licensing:
 “Action.NET Version numbers” on page 187
 “Action.NET Licenses Types” on page 188
 “Product Family and Model” on page 188
 “Remote Project Access” on page 190
 “Project Settings versus License” on page 190
 “Using Multiple Versions Concurrently” on page 190

Action.NET Version numbers


The Action.NET version is a string like: an-2014.1.10.
The meaning of that string is: <product_ID>-
<Major_version>.<Minor_version>.<Update>. So in this example:
 Product ID = fs
 Major version = 2014
 A major version is a major release, which happens every one to two years.
It includes major changes to the product documentation or features.
Existing customers must either have the maintenance plan or purchase an
upgrade to have access to it.
 The new version installs to a new folder, so it does not affect any projects
or product installation of previous versions. The license protection, either
hardkey or softkey (dongle), must be updated to use that release.
 Minor version = 1
 A minor version is typically released every three to nine months and is not
verified by the license. It includes product enhancements and corrections.
 A minor release is similar to what is sometimes called a Service Pack.
However, with Action.NET, you can have multiple minor releases installed
in different folders and use all of them at the same time on the same
computer.
 Update = 10
 The update number reflects small modifications on top of the current
version. Updates are always compatible with the current release.

Action.NET User Guide 187
 Updates install on top of the product version they are targeting. If you try to
open a project created with an update you do not have on your computer,
you can run that project, but the engineering tools will open in “read-only”
mode. Unless you have a specific requirement or problem you need the
update, you do not have to update.

Action.NET Licenses Types


You can verify your license from the License tab, on the main page or when editing
any project from Info > License > Current.
For information about how to install or update a license, see “Licensing Action.NET”
on page 5.

Product Family and Model


Action.NET has different product families and models that address requirements for
different markets. Your license defines the highest product family and model you can
use. You can always create projects that use a lower family or model.
The product family defined in your license affects the features and functions available.
The product families available are, in hierarchical order (highest to lowest):
 Action.NET Framework (Action.NET for use with PI System)
 Action.NET Enterprise
 Action.NET HMI
 Action.NET OPC-Server
 Action.NET Express
If you do not have a license, the system defaults to Action.NET Express, which is for
evaluation and training only. Its runtime execution times out and stops automatically.
Using the Express version, you can only edit and run projects created with the
Express product family. When editing a project, a message displays in the top-right
when you are running the Express version.
The web site has the updated information on the product families description and
differences: http://www.spinengenharia.com/products/overview/.
The product model defined in your license defines the maximum number of
communication points and tags allowed. For more information, see “Running
Projects” on page 45.
 Unlimited—No limit on the number of real-time communication points. Your computer memory and
performance are the only limitations.
 ServerLarge—Up to 100,000 real-time communication points.
 ServerMedium—Up to 50,000 real-time communication points.

188 17: Action.NET Versions and Licenses
 ServerSmall—Up to 25,000 real-time communication points.
 Plant—Up to 15,000 real-time communication points.

 Supervisor—Up to 5,000 real-time communication points.

 Line—Up to 2,500 real-time communication points.

 Work Cell—Up to 1,500 real-time communication points.

 Machine—Up to 500 real-time communication points.

 Panel—Up to 300 real-time communication points.

 Instrument—Up to 150 real-time communication points.

 Express-Up to 75 real-time communication points.

You can change this setting later, if needed.

Family Depending on your Action.NET license, you may have options


here to build applications for a specific version of Action.NET. Be
sure you know what runtime version your end users will use.
The option you select determines how many communication
points you can create for the project:
 Enterprise—Use for larger, more complex applications, with
unlimited real-time communication points.
 HMI—Use for smaller applications that manage hardware with
up to 1,500 real-time communication points.
 Express—Use only for test or demonstration purposes.

 OPCServer—Use when you know you will use only OPC


functions.
You can change this setting later, if needed.
Model Depending on your Action.NET license, you may have options
here to build applications for a specific product model. Select
which model based on the number of real-time data points you
will have in the projects.
 Unlimited—No limit on the number of real-time
communication points. Your computer memory and
performance are the only limitations.
 ServerLarge—Up to 100,000 real-time communication points.

 ServerMedium—Up to 50,000 real-time communication


points.
 ServerSmall—Up to 25,000 real-time communication points.

 Plant—Up to 15,000 real-time communication points.

 Supervisor—Up to 5,000 real-time communication points.

 Line—Up to 2,500 real-time communication points.

 Work Cell—Up to 1,500 real-time communication points.

 Machine—Up to 500 real-time communication points.

 Panel—Up to 300 real-time communication points.

 Instrument—Up to 150 real-time communication points.

You can change this setting later, if needed.

Action.NET User Guide 189
Remote Project Access
In addition to the product family and product model, your license also has a licence
type:
 Engineering—Lets you configure and execute projects.
 Runtime—Lets you execute projects.
 Developer—Available only to VAR partners to create and execute projects in
testing scenarios, not for production.
When you connect to a remote computer to open or run a project, the license that is
verified is the license on the server, not the license on your local computer.
However, if you connect to a remote computer that has only runtime license, but you
have an engineering license on your computer, you will be able to configure and
execute the remote project (as long has you have also the project security passwords
and authorization). This is useful to let engineers handle changes needed in the field.

Project Settings versus License


When editing projects, the information about product family on Info > License
>Current reflects the license on your computer (or on the server if you are opening
the project from a server).
The project family and project model on Info > Project > Version reflects the settings
for that specific project and can be changed from Info > Project > Settings.
The features and functions available in a project are based on the project family set
for the project (as defined on Info > Project > Version), not your license. If you have
an Enterprise license, but a project was created with the project family set to HMI, the
system only lets you use the features and functions that are valid for the HMI product
family.
If you try to open a project that has a higher requirement than the license you have,
you will not be allowed and a message on the top-right side will be displayed.

Using Multiple Versions Concurrently


Major or minor releases install to different folders from previous releases. This lets
you keep different Action.NET releases concurrently installed on the same computer.

190 17: Action.NET Versions and Licenses
The folder structure is:
 \Action.NET—Folder with the project selection and management tools.
 \Action.NET\an-2014.1—Files specific to version an-2014.1.
You will have as many sub folders as product versions are installed in your computer.

Note
Because the installation footprint is very small, only around 100MB, we strongly
recommend that you keep all versions. When opening a project, the system
automatically verifies which version the project was created with, and it will open the
version that matches the project.

If you try to open a project created with a new product version (for instance you have
an-2014.1 and are trying to open a project created with version 2014.1), the system
will not open or run that project.At the top-right left area of the your workspace you will
see warning message explaining why the project cannot be opened.
If you try to open a project last used with a newer update, for instance, you have
version an-an-2014.1.10 and you try to open a project that was used with version an-
2014.1.20, as long your have the license for an-2014, you still are able to run that
project, and open the engineering configuration, even if the project is using an update
that is newer that what you have in your computer. For protection and to avoid
inconsistencies, we don’t allow that project to be modified though, in this scenario it
opens in read-only. On the top-right left of your engineering tool you have a message
when that scenario occurs.
If you have a project that was created in a previous product release (either major or
minor), you can upgrade it to the version you are currently using. For more
information, see“Upgrading Projects” on page 45

Action.NET User Guide 191
192 17: Action.NET Versions and Licenses
18: Glossary

Every knowledge area has its own terminology, the same applies to software applications.
Certainly the nomenclature Action.NET uses follows market standards whenever possible, but
there are specific terms related to the system and other common words may have a special
meaning when using in this context.
This glossary has most the terms and keywords used by Action.NET and also concepts and
related technologies that are relevant to our context.
It is extremely recommended to at least read of this glossary once, after you used
Action.NET for a couple of months. Doing a review of the definitions and nomenclature used
by the Action.NET platform and Spin development and engineering teams, combined with
your experience with the product, will put your understanding of system and efficient on
creating applications to a new higher level.

App Domain or Represents the virtual isolated computer environment, where


Application Domain a .NET application runs. Isolated, in its context, means that
the memory areas and components used by programing
running in that environment are completely isolated from other
programs running in the same computer.
The inherent isolation of the .NET domains creates an
intrinsically safe protection for the running projects, as it
prevents one process from interfering with another, allowing
even two different versions of the same program to run side
by side.
A more technical definition if AppDomain is the boundaries
that the CLR (Common Language Runtime) provides around
the objects created from the same application.
Application Refers to solution or final system created using Action.NET.
The terms Application and Project are used with close
meanings: Project refers engineering configuration and files
necessary to implement the Solution and Application refers to
conceptual solution that was created.
Assembly Refers to an executable file (.EXE or Library.DLL) created
using managed code and Microsoft .NET framework.
Designer Component of the Engineering Workspace used to draw and
animate displays and synoptic screens.

Action.NET User Guide 193
DLL Hell Term used to refer the complications on running the legacy
Windows applications as there is no built-in isolation on the
DLL libraries, memory and COM objects used by the
applications. The .NET Framework completely eliminated that
problem.
Domain, Server Refers to the values and location of objects at run time.
Domain, Client Domain server objects running on the server are the objects
Domain running on the server during runtime. Values associated with
this object are system-wide. Client domain means that the
object is running on the client station and each machine can
have different values.
Internal Module Features and programs that implement internal system
functions that run without any user configuration.
Examples are the Network Synchronization task and the
Background Report Generator. Some Studio tools e.g.,
ModuleInformation.exe, may display status information of
those internal Modules, however that information is required
only for advanced system optimizations.
Main Project File Refers to the SQL Studio encoded database that contains the
project configuration. The extension.TPROJ references the
current project still under development. The extension.TRUN
references read-only published projects.
Modifier (Device/ Auxiliary parameter to effect read and write points for a
Points) device, the treatment of Arrays, bit masks, strings, swap and
other operations in which a DataType definition can not define
them completely.
Module A program that accesses the database in real time (RtDB) and
can be composed of one or more Assemblies.
Namespace An address space. All objects created with a Namespace
have unique names. "Address space" can also be understood
as a form of tier objects. All process variables are grouped in
the tag namespace; all reports grouped in the namespace
report. The name of an object should be unique within the
namespace to which the object belongs.
Object Type (RunObj Determines the type of runtime object (display, report, script).
type)
Objects, Runtime Runtime objects are those objects visible (through their
Objects names) to access the project via scripts and displays, such as
Tags, Reports, Alarms, Displays among others. The
namespaces also identify which execution module is
reponsible to update those values, for example the Alarm
Module will start and will update the values of the runtime
objects associated with the alarms.

194 18: Glossary
ObjectValues, Runtime objects (for example, Tags, deviceNodes, etc.) can
PropertyValue have one or more properties defined. The TAG (and the
property value), for example, MIN, MAX, description, among
other properties.
PropertyWatch Diagnostic utility to check and modify the values of the objects
at runtime.
Parameters(Tag Definition of the parameters of behavior and values
Configuration) processing for Tags.
Project A configuration set Studio sketches of displays, reports,
scripts and user notes created and edited with a single entity.
projectDB / ProjectDB (or project database) is a database that contains
ProjectDatabase configuration information. Matches files with the extension
<Project>.Tproj (current type, for example) or <Project>_
version.Teng (type released, for example).
Property or Atribute Property (value) associated with a Tag or object.
RunDB, Runtime The real time database created when the project is running.
Database/RtDB All objects running accessible (such as Tags, Displays,
Reports) are objects on the Runtime Database, also called
Real-Time Database or RtDB.
Runtime Refer to a project with modules loaded and running.
Runtime Startup Operation that is the project at run time. This operation can be
performed from the program TStartup.exe in the current
version of Action.NET, or TServer.exe in the published version
of the project.
Tag A process variable. Name of a Namespace that includes all
the variables created by the user in a project configuration.
Tag Type Defines the type of objects in the Tag Namespace: Digital,
analog, text. These Tags are a class of compounds or
properties accessed directly such as minimum, maximum,
Value, quality. Each property is internally created as
ValueType.
Task (Script.Task) Task program written in VB.NET (or C #) that runs on the
server or client during the runtime of a project. The execution
will be on the server or client, depending on the configuration
of the domain property in the script.
TManager The program that performs the configuration of a project.
Toggle Reverses the value of a variable. Values greater than zero are
converted to zero; zero is converted to the value "1".

Action.NET User Guide 195
Trust, Partial Trust, Partial Trust: Environment in which an application has limited
Full Trust access to resources (restricted access to files from particular
folders, running other applications, etc.). XBAP applications
that run within a browser (e.g., Internet Explorer) should run in
"Partial Trust".
Full Trust: Environment in which an application has access to
all system resources. Applications installed on a computer
usually run in "Full Trust" mode.
Visibility (Tag Refers to the tagging system; Tags can be Private, Public or
Visibility) Protected.
Public:
The value of the Tag during the execution of the Runtime is
available for access to external Programs via TCP / IP or OPC
Server. Also, the value of Tag is necessarily global or shared
in all the client stations (Server Domain).
Protected:
Read-only.
Private:
A Tag set to "Private" can not be accessed by external
applications (OPC Server, TCP / IP) and will run in Client or
Server machines according to the application configuration
with the following characteristics:
Tags used only in modules called by the client (such as
displays and Reports) run in the scope of the client, or may
have different values on each client machine (Client Domain);
Tags used in server modules, such as Devices and Alarms
have a unique value in the system (Server Domain).

XBAP Xaml Browser Application (XBAP) is a graphical application


using the XAML technology that runs inside a browser (Internet
Explorer).

196 18: Glossary
 

A
access types
configuring 96
accessing projects remotely 44
adding
columns to tables 58
users 83
alarm window, configuring 155
alarms
configuring events for 106
configuring general settings 104
configuring groups for 105
applications
building 168
publishing 169
testing 163
assets
creating 74
automatically starting applications on the server 177

B
bar chart, configuring 154
building
applications 168

C
categories
creating 75
circular panel, configuring 153
classes
configuring 124
clients
configuring for deployment 179, 180, 181
configuring settings for desktop 137
described 171
code
creating for displays 136
editing 125
code editor
using 125
columns
adding 58
definitions for common 58
removing 58
configuring
access types 96
alarm events 106
alarm groups 105
data points 95
dynamics 144
event logging 103
external databases 113
general alarm and event settings 104
localization 62
nodes 93
permissions 84
policies 85
preferences 64
redundancy 183
tag historian tables 78
tasks 123
conventions, typographic 2
copying
rows 59
creating
assets 74
categories 75
 

classes 124
code for displays 136
displays 131
layouts 135
projects 41
reports 161
scripts 123
tag templates 73
tags 67
customer support 2

D
data grid window, configuring 157
data points
configuring 95
data, importing 60
database
configuring for tables for tag historian 78
databases
configuring external 113
configuring queries for external 120
configuring tables for external 119
date formats, valid for tags 72
deploying
iOS 181
Windows rich clients 179
Windows smart clients 179
Windows web clients 180
desktop clients
configuring settings for 137
devices
configuring 93, 95
disabling
users 86
displays
configuring desktop client settings for 137
configuring dynamics for 144
configuring iOS client settings for 137
creating 131
creating code behind 136
drawing tools
using 139
dynamics
configuring 144

E
editing
scripts 125
tables 55
tags 67
users 83
events
configuring for alarms 106
configuring general settings 104
configuring logging 103
expressions
described 126
external databases
configuring 113
configuring queries 120
configuring tables for 119

F
FactoryStudio
installing 4
licensing 5
main page, described 41
 

managing multiple versions of 190


object model, described 21
starting 5
understanding version numbering 187
finding
objects 51
projects 42, 43
formats, valid for tags 72

G
graphics
managing 159
Guest user, defined 83

H
historian
configuring tables for 78

I
images
managing 159
importing
data 60
installing
FactoryStudio 4
iOS
deploying 181
iOS clients
configuring settings for 137
iPad/iPhone clients
configuring settings for 137

L
layouts
creating 135
libraries
built-in methods 123
Visual Studio 123
licensing
FactoryStudio 5
product family 188
product model 188
project settings vs license 190
types and remote access 190
localization, configuring 62
logging
configuring tables for 78
for events 103

M
main page, described 41
major version, described 187
managing
project information 46
symbols 159
menus, using in FactoryStudio 52
minor version, described 187

N
navigating in FactoryStudio 52
nodes
configuring 93
numeric formats, valid for tags 72

O
object model, described 21
objects
 

finding 51
tracking use of 60

P
pasting rows 59
permissions
configuring 84
pie chart, configuring 154
policies
configuring 85
preferences
configuring 64
product family
described 188
project vs license 190
product model
described 188
project vs license 190
projects
accessing remotely 44
building 168
configuring redundancy for 183
creating 41
finding 42, 43
license types and remote access 190
managing information for 46
managing remote access to 42, 43
opening in different version 190
publishing 169
settings vs. license 190
testing 163
upgrading 45
publishing
applications 169

Q
queries
configuring for external databases 120

R
redo button 50
redundancy
configuring 183
remote access
and license types 190
managing 42, 43
using for projects 44
removing
columns from tables 58
users 86
reports
creating 161
using the text editor 162
rich clients, deploying 179
rows
copying and pasting 59
runtime components, described 171
runtime objects reference 123

S
scripts
configuring classes 124
configuring tasks 123
editing 125
searching
for objects 51
servers
 

automatically starting application as a service 177


described 171
service, using to automatically start applications 177
smart clients, deploying 179
starting
FactoryStudio 5
support, technical 2
symbols
managing 159
symbols used in this manual 2
system requirements 3

T
tables
adding columns 58
common column definitions 58
configuring for external databases 119
configuring for the tag historian 78
copying and pasting rows 59
editing 55
removing columns 58
tags
creating 67
creating templates for 73
editing 67
valid formats 72
tasks
configuring 123
technical support 2
templates
creating for tags 73
testing
applications 163
text editor
using 162
time formats, valid for tags 72
toolbar
using 50
toolbars
drawing, described 139
toolkit
Visual Studio library 123
toolkits
built-in methods 123
tooltips, using 56
tracking
object use 60
translation, configuring 62
trend window
configuring 156
typographic conventions 2

U
undo button 50
update version, described 187
upgrading
projects 45
user interface
configuring desktop client settings for 137
configuring iOS client settings for 137
creating displays for 131
creating layouts for 135
users
adding 83
configuring permissions for 84
configuring policies for 85
disabling 86
editing 83
 

removing 86
users, Guest, defined 83

V
validation, described 56
versions
managing multiple concurrently 190
opening projects with different 190
versions, understanding number of 187

W
web clients, deploying 180
Windows
automatically starting applications on 177
Windows clients
configuring settings for 137
deploying rich clients 179
deploying smart clients 179
deploying web clients 180

You might also like