Intouch HMI Management and Extension Guide
Intouch HMI Management and Extension Guide
Revision A
Trademarks
All terms mentioned in this documentation that are known to be trademarks or
service marks have been appropriately capitalized. Invensys Systems, Inc. cannot
attest to the accuracy of this information. Use of a term in this documentation
should not be regarded as affecting the validity of any trademark or service mark.
Alarm Logger, ActiveFactory, ArchestrA, Avantis, DBDump, DBLoad, DT Analyst,
FactoryFocus, FactoryOffice, FactorySuite, FactorySuite A2, InBatch, InControl,
IndustrialRAD, IndustrialSQL Server, InTouch, MaintenanceSuite, MuniSuite, QI
Analyst, SCADAlarm, SCADASuite, SuiteLink, SuiteVoyager, WindowMaker,
WindowViewer, Wonderware, and Wonderware Logger are trademarks of Invensys
plc, its subsidiaries and affiliates. All other brands may be trademarks of their
respective owners.
3
Contents
Welcome.......................................... 11
Documentation Conventions.............................................11
Technical Support .............................................................12
InTouchView....................................................................203
Creating a New InTouchView Application .................204
Converting an Application Between InTouch and
InTouchView ............................................................204
Converting an InTouchView Application
to an InTouch Application .....................................205
Converting an InTouch Application to an
InTouchView Application ......................................206
InTouchView Licensing................................................206
Welcome
Documentation Conventions
This documentation uses the following conventions:
Technical Support
Wonderware Technical Support offers a variety of support
options to answer any questions on Wonderware products
and their implementation.
Before you contact Technical Support, refer to the relevant
section(s) in this documentation for a possible solution to the
problem. If you need to contact technical support for help,
have the following information ready:
• The type and version of the operating system you are
using.
Chapter 1
Application
Start Start
Manager
Manage Start
Run Run
WindowViewer
Stand-alone IDE-Managed
Stand-alone IDE-Managed
InTouch
Stand-alone InTouch
Managed
InTouch InTouch
Applications
InTouch Applications
InTouch
Applications Applications
Applications Applications
To rename an application
1 Select the application in the list.
2 On the File menu, click Rename.
To delete an application
1 Select an application in the list.
2 On the File menu, click Delete.
3 In the message that appears, click Yes.
To find applications
1 On the Tools menu, click Find Applications. The Browse For
Folder dialog box appears.
• Publisher name
• Application resolution
For example:
You see the Backup Configuration dialog box after you confirm
that you want to migrate an older application to the current
version of the InTouch HMI. You must specify the folder to
create the backup copy and if you want to exclude any files
from the backup.
Chapter 2
Distributing Applications
• Server-based
• NAD
InTouch Process
App. serial connection
Client-Based Architecture
In a client-based architecture, there is a unique copy of one
InTouch application for each computer running
WindowViewer (View node) or in a unique location on a
network server. In the following example, an application is
developed and tested on the development node and then
copied to each View node.
Network
Server-Based Architecture
A server-based architecture distributes a common InTouch
application to several View nodes. In the following figure,
two View nodes access the same application from the
development node.
Development Node
View Node 1 View Node 2
InTouch
App. Process
Network
Network
The View node must have the same access to data sources as
the development node.
Process
Network
Network
Process
Network
Network
Wonderware SuiteLink
The Wonderware SuiteLink communications protocol is
based on the TCP/IP protocol. Use SuiteLink for your
high-speed industrial applications, as it provides these
features:
• Value Time Quality (VTQ), in which a timestamp and
quality indicator are associated with all data values
delivered to VTQ-aware clients. The InTouch HMI is a
VTQ-aware client whose tag data is delivered with a VTQ
indicator.
The View node must have the same access to data sources as
the development node.
Network
Network
Before you can access a file through UNC, you must create a
file share on the computer you want to access. For more
information, see your Windows documentation.
For example, assume that you have a computer with the
network name of “EngineRm” that you have shared the root
drive “C:\” with the share name of “Root”. To set up a UNC
path to the “C:\IT\Apps\Boiler” application you must use
the following UNC:
\\EngineRm\Root\IT\Apps\Boiler
If the “Boiler” directory itself was shared as “Boiler,” the
UNC could be shortened to:
\\EnginerRm\Boiler
No path is required if the share is a path specified in the
PATH environment variable.
A remote node retrieving data from a history file may not see
data for the last hour of data (based on the logger node's
time). Remote trends can only view data that has been
written to the logging node's disk.
Data for each tag checked for 'Log Data' is automatically
written to disk after 22 samples for that tag have been
collected. If the HTUpdateToCurrentTime() function is
called, data is written to disk regardless of the number of
samples collected. By default, data is written to disk once an
hour. You can change this interval by adding the following
line to the INTOUCH.ini file:
ForceLogging=X;
Node 1 Node 2
Node3
Log/Retrieve Retrieve
Retrieve Retrieve
Log/Retrieve
Remote
Local
History File
History File
(HistPrv1)
3 In the Provider Name box, type the name you want to use
for the new historical provider.
A provider name can be 16 alphanumeric characters or
fewer.
• RestartWindowViewer() Function
• ReloadWindowViewer() Function
Example
Using the following statement in the tagname box of a data
change script causes the body of the script to run. The script
body could show a window informing the user to restart
WindowViewer for the change to take effect.
$ApplicationChanged
See Also
$ApplicationVersion
RestartWindowViewer() Function
Shuts down WindowViewer, copies the updated master
application (if configured to do so), and then restarts
WindowViewer.
Category
system
Syntax
RestartWindowViewer();
Remarks
This function is used to update an application when the
automatic update Network Application Development (NAD)
functions are not used.
Use the $ApplicationChanged system tag to determine when
a NAD update has occurred.
You use the Notify Clients command to initiate a NAD update.
However, the operator may want to delay the update until a
later time. You can use this function with a button action
script so that the operator can restart WindowViewer when it
is convenient.
You could instead use the ReloadWindowViewer() function,
which updates the View node without shutting down
WindowViewer.
See Also
$ApplicationChanged, ReloadWindowViewer()
ReloadWindowViewer() Function
Dynamically updates WindowViewer with the updated
master NAD application without any interruption in service.
Category
system
Syntax
ReloadWindowViewer();
Allows the user control over reloading WindowViewer.
Remarks
Use this function to update an application when the
automatic update Network Application Development (NAD)
functions are not used.
Use the $ApplicationChanged system tag to determine when
a NAD update has occurred.
You use the Notify Clients command to initiate a NAD update.
However, the operator may want to delay the update until a
later time. You can use this function with a button action
script so that the operator can reload the application in
WindowViewer when it is convenient.
See Also
$ApplicationChanged
Corporate Network
InTouch
Terminal Server
Supervisory Network
• TseGetClientNodeName() Function
• TseQueryRunningOnConsole() Function
• TseQueryRunningOnClient() Function
TseGetClientId() Function
Returns a string version of the client ID (the TCP/IP address
of the client) if the View application is running on a Terminal
Server client. This client ID is used internally to generate
SuiteLink server names and logger file names. Otherwise,
the TseGetClientId() function returns an empty string.
Syntax
MessageResult=TseGetClientId();
Example
The client IP address 10.103.202.1 is saved to the MsgTag
tag.
MsgTag=TseGetClientID();
TseGetClientNodeName() Function
Returns the client node name if the View application is
running on a Terminal Server client assigned a name that
can be identified by Windows. Otherwise, the
TseGetClientNodeName() function returns an empty string.
Syntax
MessageResult=TseGetClientNodeName();
Example
The client node name is returned as the value assigned to the
MsgTag tag.
MsgTag=TseGetClientNodeName();
TseQueryRunningOnConsole() Function
The TseQueryRunningOnConsole() function can be run from
a script to indicate whether the View application is running
on a Terminal Services console.
Syntax
Result=TseQueryRunningOnConsole();
Return Value
Returns a non-zero integer value if the View application is
running on a Terminal Services console. Otherwise, the
TseQueryRunningOnConsole() function returns a zero.
Example
IntTag is set to 1 if WindowViewer is running on a Terminal
Services console.
IntTag=TseQueryRunningOnConsole();
TseQueryRunningOnClient() Function
Returns a non-zero integer value if the View application is
running on a Terminal Services client. Otherwise, it returns
a zero.
Syntax
Result=TseQueryRunningOnClient();
Return Value
Returns 0 if View is not running on a Terminal Services
client.
Example
IntTag is set to 1 if WindowViewer is running on a Terminal
Services client.
IntTag=TseQueryRunningOnClient;
Chapter 3
• Alarm DB Purge/Archive
• Wonderware SuiteLink
• Wonderware WindowViewer
Stopping a Service
You can manually stop the WindowViewer service using the
Control Panel.
• HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\
Services\slssvc
• HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\
Services\SuiteLink
Wonderware WindowViewer:
• HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\
Services\VIEW
Chapter 4
InTouch Application
DBDump
Tagname
Dictionary
CSV File
PumpInP PumpRPM
Inlet
RPM
Pressure
PumpOutP PumpState
Outlet On/Off
Pressure State DBLoad
5 In the Name of CSV Dump file box, type a name for the file
with a .csv file name extension.
6 Select the type of data grouping in the export file.
• Select the Group output by types check box to group
the data by the types of tags in the export file. This is
the default.
• Clear Group output by types to save the output to the
export file alphabetically by tag name.
7 Click OK to save the contents of the Tagname Dictionary
to the selected file. A message appears indicating the
contents were saved successfully to the file.
Keyword Description
:MODE=REPLACE
If a duplicate tag is encountered, the DBLoad utility deletes
the existing tag in the Tagname Dictionary and replaces it
with the tag from the import file with the same name.
:MODE=UPDATE
If a duplicate tag is encountered, the DBLoad utility
overwrites the existing tag definition in the Tagname
Dictionary only with data explicitly specified from the import
file. All other data associated with the tag remains
unchanged in the Tagname Dictionary.
Fields are considered explicitly defined if the field is in the
record and entered by you or is set by the
“:KEYWORD=value” mechanism. If a field is not specified in
the record, and the keyword has been reset using the
“:KEYWORD=” command, the current field value is not
updated.
:MODE=ASK
DBLoad stops when a duplicate tag is encountered while
loading the Tagname Dictionary. The Duplicate Name dialog
box appears and shows a list of options to handle duplicate
tags. This is the default import mode.
:MODE=IGNORE
The DBLoad import utility ignores the duplicate tag and
continues processing the remaining records of the import file.
:MODE=TERMINATE
The DBLoad import operation stops when a duplicate tag is
encountered.
:MODE=TEST
DBLoad scans the import file for errors and does not attempt
to load tag definitions into the Tagname Dictionary. DBLoad
generates a report that identifies any format errors by line
number and location in the import file.
Run DBLoad with :mode=test first to identify any errors in
the import file. After correcting any errors, change the mode
keyword value to :mode=replace or :mode=update before
running DBLoad.
String Default
Position Attributes Acceptable Values Values
String Default
Position Attributes Acceptable Values Values
String Default
Position Attributes Acceptable Values Values
String Default
Position Attributes Acceptable Values Values
String Default
Position Attributes Acceptable Values Values
Default
Attribute Acceptable Value Value
Default
Attribute Acceptable Value Value
Default
Attribute Acceptable Value Value
Default
Attribute Acceptable Value Value
Default
Attribute Acceptable Value Value
Default
Attribute Acceptable Value Value
Default
Attribute Acceptable Value Value
String
Position Attribute
1 Group
2 Comment
3 Logged
4 EventLogged
5 EventLoggingPriority
6 RetentiveValue
7 InitialDisc
8 OffMsg
9 OnMsg
10 AlarmState
11 AlarmPri
12 AlarmComment
13 AlarmAckModel
String
Position Attribute
14 DSCAlarmDisable
15 DSCAlarmInhibitor
String
Position Attribute
1 Group
2 Comment
3 Logged
4 EventLogged
5 EventLoggingPriority
6 RetentiveValue
7 InitialDisc
8 OffMsg
9 OnMsg
10 AlarmState
11 AlarmPri
12 Conversion
13 AccessName
14 ItemUseTagname
15 ItemName
16 ReadOnly
17 AlarmComment
18 AlarmAckModel
String
Position Attribute
19 DSCAlarmDisable
20 DSCAlarmInhibitor
String
Position Attribute
1 Group
2 Comment
3 Logged
4 EventLogged
5 EventLoggingPriority
6 RetentiveValue
7 RetentiveAlarmParameters
8 AlarmValueDeadband
9 AlarmDevDeadband
10 EngUnits
11 InitialValue
12 MinValue
13 MaxValue
14 Deadband
15 LogDeadband
16 LoLoAlarmState
17 LoLoAlarmValue
String
Position Attribute
18 LoLoAlarmPri
19 LoAlarmState
20 LoAlarmValue
21 LoAlarmPri
22 HiAlarmState
23 HiAlarmValue
24 HiAlarmPri
25 HiHiAlarmState
26 HiHiAlarmValue
27 HiHIAlarmPri
28 MinorDevAlarmState
29 MinorDevAlarmValue
30 MinorDevAlarmPri
31 MajorDevAlarmState
32 MajorDevAlarmValue
33 MajorDevAlarmPri
34 DevTarget
35 ROCAlarmState
36 ROCAlarmValue
37 ROCAlarmPri
38 ROCTimeBase
39 AlarmComment
40 AlarmAckModel
41 LoLoAlarmDisable
42 LoAlarmDisable
43 HiAlarmDisable
44 HiHiAlarmDisable
45 MinDevAlarmDisable
46 MajDevAlarmDisable
String
Position Attribute
47 RocAlarmDisable
48 LoLoAlarmInhibitor
49 LoAlarmInhibitor
50 HiAlarmInhibitor
51 HiHiAlarmInhibitor
52 MinDevAlarmInhibitor
53 MajDevAlarmInhibitor
54 RocAlarmInhibitor
String
Position Attribute
1 Group
2 Comment
3 Logged
4 EventLogged
5 EventLoggingPriority
6 RetentiveValue
7 RetentiveAlarmParameters
8 AlarmValueDeadband
9 AlarmDevDeadband
10 EngUnits
11 InitialValue
12 MinEU
String
Position Attribute
13 MaxEU
14 Deadband
15 LogDeadband
16 LoLoAlarmState
17 LoLoAlarmValue
18 LoLoAlarmPri
19 LoAlarmState
20 LoAlarmValue
21 LoAlarmPri
22 HiAlarmState
23 HiAlarmValue
24 HiAlarmPri
25 HiHiAlarmState
26 HiHiAlarmValue
27 HiHIAlarmPri
28 MinorDevAlarmState
29 MinorDevAlarmValue
30 MinorDevAlarmPri
31 MajorDevAlarmState
32 MajorDevAlarmValue
33 MajorDevAlarmPri
34 DevTarget
35 ROCAlarmState
36 ROCAlarmValue
37 ROCAlarmPri
38 ROCTimeBase
39 AlarmComment
39 MinRaw
40 MaxRaw
String
Position Attribute
41 Conversion
42 AccessName
43 ItemUseTagname
44 ItemName
45 ReadOnly
46 AlarmComment
47 AlarmAckModel
48 LoLoAlarmDisable
49 LoAlarmDisable
50 HiAlarmDisable
51 HiHiAlarmDisable
52 MinDevAlarmDisable
53 MajDevAlarmDisable
54 RocAlarmDisable
55 LoLoAlarmInhibitor
56 LoAlarmInhibitor
57 HiAlarmInhibitor
58 HiHiAlarmInhibitor
59 MinDevAlarmInhibitor
60 MajDevAlarmInhibitor
61 RocAlarmInhibitor
String
Position Attribute
1 Group
2 Comment
3 Logged
4 EventLogged
5 EventLoggingPriority
6 RetentiveValue
7 RetentiveAlarmParameters
8 AlarmValueDeadband
9 AlarmDevDeadband
10 EngUnits
11 InitialValue
12 MinValue
13 MaxValue
14 Deadband
15 LogDeadband
16 LoLoAlarmState
17 LoLoAlarmValue
18 LoLoAlarmPri
19 LoAlarmState
20 LoAlarmValue
21 LoAlarmPri
22 HiAlarmState
23 HiAlarmValue
24 HiAlarmPri
25 HiHiAlarmState
26 HiHiAlarmValue
String
Position Attribute
27 HiHiAlarmPri
28 MinorDevAlarmState
29 MinorDevAlarmValue
30 MinorDevAlarmPri
31 MajorDevAlarmState
32 MajorDevAlarmValue
33 MajorDevAlarmPri
34 DevTarget
35 ROCAlarmState
36 ROCAlarmValue
37 ROCAlarmPri
38 ROCTimeBase
39 AlarmComment
40 AlarmAckModel
41 LoLoAlarmDisable
42 LoAlarmDisable
43 HiAlarmDisable
44 HiHiAlarmDisable
45 MinDevAlarmDisable
46 MajDevAlarmDisable
47 RocAlarmDisable
48 LoLoAlarmInhibitor
49 LoAlarmInhibitor
50 HiAlarmInhibitor
51 HiHiAlarmInhibitor
52 MinDevAlarmInhibitor
53 MajDevAlarmInhibitor
54 RocAlarmInhibitor
String
Position Attribute
1 Group
2 Comment
3 Logged
4 EventLogged
5 EventLoggingPriority
6 RetentiveValue
7 RetentiveAlarmParameters
8 AlarmValueDeadband
9 AlarmDevDeadband
10 EngUnits
11 InitialValue
12 MinEU
13 MaxEU
14 Deadband
15 LogDeadband
16 LoLoAlarmState
17 LoLoAlarmValue
18 LoLoAlarmPri
19 LoAlarmState
20 LoAlarmValue
21 LoAlarmPri
22 HiAlarmState
String
Position Attribute
23 HiAlarmValue
24 HiAlarmPri
25 HiHiAlarmState
26 HiHiAlarmValue
27 HiHiAlarmPri
28 MinorDevAlarmState
29 MinorDevAlarmValue
30 MinorDevAlarmPri
31 MajorDevAlarmState
32 MajorDevAlarmValue
33 MajorDevAlarmPri
34 DevTarget
35 ROCAlarmState
36 ROCAlarmValue
37 ROCAlarmPri
38 ROCTimeBase
39 MinRaw
40 MaxRaw
41 Conversion
42 AccessName
43 ItemUseTagname
44 ItemName
45 ReadOnly
46 AlarmComment
47 AlarmAckModel
48 LoLoAlarmDisable
49 LoAlarmDisable
50 HiAlarmDisable
51 HiHiAlarmDisable
String
Position Attribute
52 MinDevAlarmDisable
53 MajDevAlarmDisable
54 RocAlarmDisable
55 LoLoAlarmInhibitor
56 LoAlarmInhibitor
57 HiAlarmInhibitor
58 HiHiAlarmInhibitor
59 MinDevAlarmInhibitor
60 MajDevAlarmInhibitor
61 RocAlarmInhibitor
String
Position Attribute
1 Group
2 Comment
3 Logged
4 EventLogged
5 EventLoggingPriority
6 RetentiveValue
7 MaxLength
8 InitialMessage
9 AlarmComment
String
Position Attribute
1 Group
2 Comment
3 Logged
4 EventLogged
5 EventLoggingPriority
6 RetentiveValue
7 MaxLength
8 InitialMessage
9 AccessName
10 ItemUseTagname
11 ItemName
12 ReadOnly
13 AlarmComment
String
Position Attribute
1 Group
2 Comment
String
Position Attribute
1 Group
2 Comment
String
Position Attribute
1 Group
2 Comment
String
Position Attribute
1 Group
2 Comment
3 EventLogging
4 EventLoggingPriority
5 RetentiveValue
String
Position Attribute
1 Group
2 Comment
3 EventLogging
4 EventLoggingPriority
5 RetentiveValue
String
Position Attribute
1 Group
2 Comment
3 EventLogging
4 EventLoggingPriority
5 RetentiveValue
where:
The value of the Comment field for Tagname1 is Hi, and the
value of the Comment field for Tagname2 is a blank
comment.
Microsoft Excel ignores quotation marks that denote a blank
string when it saves the file, resulting in the following:
:Comment="HI"
:MemoryDisc,Comment,Group
Tagname1,,$System
Tagname2,,$System
This sets the default value of the referenced field for all
subsequent data records. Use this feature to set the default
value for fields that should remain unchanged for a number
of records. If a field has a default value defined, the default
value is used if there is no data in the record for the value.
For example, if you set :GROUP=Reactor_Site, then all tags
that have a blank entry for the GROUP column are assigned
to the Reactor_Site Alarm Group. If the tag has, for example,
$System entered for the GROUP, the tag remains assigned to
the Alarm Group $System.
You can reset an individual keyword to its original default
value by omitting the value in the equation. For example,
:GROUP=.
To reset all keywords, use the :RESET command. This
command does not have arguments and affects all entries in
the file that occur after the command.
7 In the Name of CSV Load file box, locate and select the file
you want to import.
8 Click OK.
The next step varies based upon whether DBLoad
imports new or existing tag definitions to the Tagname
Dictionary.
• If you are importing new tag definitions, the new tag
data is loaded into the application’s Tagname
Dictionary. A message appears confirming the data
was successfully loaded and merged.
• If you are importing existing tag definitions, the
import stops if the :mode keyword is set to :mode=ask
and the import file contains duplicate tags. You are
shown options to handle the duplicate tags or you can
cancel the import. For more information about
keyword options, see Setting the Operating Mode for
Dictionary Import Files on page 83.
Importing Windows
Importing windows from an existing InTouch application
into your current application allows you to reduce
development time because you can reuse your previously
created windows, objects, and window scripts.
You must convert an application to the current version of the
InTouch HMI software before you can import windows.
By default, placeholders are created for the tags associated
with an imported window. After importing, you can convert
the placeholders to local tags or remote tag references. For
more information, see Tag Placeholders for Imported
Windows and Scripts on page 127. If the associated tags
already exist in the target application, during the import you
can select to use these instead.
When you import windows containing SmartSymbols and
select to use existing tags, the InTouch HMI still keeps
placeholders for the recovered symbols, even though the tags
are available in the target application.
When you import a window from an application that contains
SuperTags, only the SuperTag instances actually used in the
window are imported into the new application. The entire
SuperTag template structure is not imported. For example, if
the application has hundreds of SuperTag member tags
defined in it, and only 50 of those are used in the imported
window, only those 50 are imported.
To import a window
1 Close all windows in your current application.
2 On the File menu, click Import. The Import from directory
dialog box appears.
6 Click OK.
Exporting Windows
You can export application windows to:
• Create or maintain a library application of all windows.
• Create remote tag references in another application.
To export a window
1 Close all windows in your current application.
2 On the File menu, click Export Window. The Export to
directory dialog box appears.
Importing Scripts
You can import existing QuickScripts from an InTouch
application into your current application to save development
time.
You must convert an application to the current version of the
InTouch HMI software before you can import scripts.
By default, placeholders are created for the tags associated
with an imported QuickScript. After importing, you can
convert the placeholders to local tags or remote tag
references. For more information, see Tag Placeholders for
Imported Windows and Scripts on page 127. If the associated
tags already exist in the target application, during the
import you can choose to use these instead.
To import a window script, you must import the entire
window.
For an imported ActiveX Event script to function properly in
the target application, the same ActiveX control and the
same event for which the script was originally created must
also be used in the target application and it must be loaded
into memory. If the window containing an ActiveX control is
closed, any scripts associated with it (either ActiveX Event
scripts or QuickScripts) do not run properly.
To import a QuickScript
1 Close all windows in your current application.
2 On the File menu, click Import. The Import from directory
dialog box appears.
5 Select the check box for the QuickScript type(s) that you
want to import and then click Select to select the
individual script(s) to import.
BEGIN
Import a window
or QuickScript
No No
No
END
Chapter 5
Securing InTouch
• ArchestrA-based security
WindowMaker
(Design-Time) No Security
…. …. ... ...
A_User2 pwd8734
... ...
Application Server
• Lock keys
• Hide menus
Note The inactivity timer does not reset for Active-X controls,
OLE Automation controls, and SPC wizards.
Note The inactivity timer does not reset for ActiveX controls, OLE
automation controls, and SPC wizards.
Data Type
Discrete (read only)
See Also
$InactivityWarning
Example(s)
The following example is an “on true” condition script:
If $InactivityTimeout == 1 THEN
Show "Logged Off";
ENDIF
See Also
$InactivityWarning
Note The inactivity timer does not reset for ActiveX controls, OLE
automation controls, and SPC wizards.
Data Type
Discrete (read only)
Example(s)
The following example is an “on true” condition script.
If $InactivityWarning == 1 THEN
Show "Logoff Pending";
ENDIF;
See Also
$InactivityTimeOut
EnableDisableKeys() Function
Enables/disables key filters for the Alt, Escape, and Windows
keys.
Category
View
Syntax
EnableDisableKeys(AltKey, EscKey, WinKey);
Parameters
AltKey
Integer to enable or disable key filters for the Alt key:
1 = enable filter (disable Alt key)
0 = disable filter (enable Alt key)
EscKey
Integer to enable or disable key filters for the Escape key:
1 = enable filter (disable Esc key)
0 = disable filter (enable Esc key)
WinKey
Integer to enable or disable key filters for the Windows key:
1 = enable filter (disable Win key)
0 = disable filter (enable Win key)
Remarks
Disabling the Alt key also disables the Win+L key
combination (for locking the Windows desktop). Win+L is the
shortcut for another combination of keys that involves the
Alt key. Thus, disabling the Alt key also disables this
particular shortcut.
Example(s)
EnableDisableKeys(0,0,0); // enable all three keys
EnableDisableKeys(1,1,1); // disable all three keys
EnableDisableKeys(0,0,1); // enable Alt and Escape
keys, disable Windows key.
Note You can use the $LogicRunning system tag to enable the
operator to start and stop all QuickScripts.
5 In the Title bar area, configure the title bar of the window
running the InTouch application. Do the following:
• In the Title Bar Text box, type a title to be shown in
the WindowViewer title bar.
• Select the Show Application Directory check box to
include the path to the InTouch application's folder in
the title bar.
• Select the Hide Title Bar check box to hide the
window’s title bar.
6 In the Miscellaneous area, do the following:
• Select the Impossible to Close check box to prevent an
operator from closing the WindowViewer window
running the InTouch application. Selecting this
option disables the window’s Close button.
If you want to hide the Close button, clear the Control
Menu check box in the Window area.
• Clear the Allow CTRL-Break to stop scripts check box to
disable the CTRL + BREAK key combination that
enables operators to stop QuickScripts.
After you add a new user name to the security list and
restart WindowMaker or WindowViewer, the default user
name is automatically reset to None with an access level of 0,
which prevents access to the Configure Users command in
both WindowMaker and WindowViewer. However, the
Administrator account and password remain and can still be
used.
After an operator logs on to the application, access to any
protected function is granted upon verification of the
operator's password and access level against the value
specified for the internal security tag linked to the function.
AddPermission() Function
Assigns a certain InTouch access level to a given user group
on the local system or on the domain. When a user belonging
to that group logs on to the InTouch HMI after the
AddPermission() function is called, he or she receives the
specified access level.
Category
security
Syntax
DiscreteTag=AddPermission( "Domain", "Group",
AccessLevel);
Arguments
Domain
Name of the domain or local computer in which the group is
located.
Group
Windows user group.
AccessLevel
InTouch access level that you want to associate with the
given group.
Remarks
Valid for operating system security only. When this function
is called, it checks for the presence of the specified group in
the specified domain or workgroup. If successful, TRUE is
returned, and the specified Access Level is associated with
the group for subsequent user logons. In all other cases, (that
is, if an invalid value is specified for any of the arguments)
FALSE is returned.
This function is typically configured to run on application
startup. It does not affect users that are currently logged on.
Only users that log on after AddPermission() is successfully
called receive the access level associated with their group.
Examples
DiscreteTag=AddPermission( "corporate_hq",
"InTouchAdmins", 9000);
DiscreteTag=AddPermission( "johns01", "InTouchUsers",
5000);
See Also
PostLogonDialog(), InvisibleVerifyCredentials(),
IsAssignedRole(), AttemptInvisibleLogon(),
QueryGroupMembership()
ChangePassword() Function
Shows the Change Password dialog box, allowing the logged on
operator to change his/her password.
Category
security
Syntax
[Result=]ChangePassword();
Return Value
Returns one of the following integer values:
0 = Cancel was pressed.
1 = OK was pressed.
Remarks
If the operator uses a touch screen, the operator can use the
alphanumeric keyboard to enter the new password.
Example
The following script can be placed on a button or called from
a condition script or data change script.
Errmsg=ChangePassword();
Example(s)
The following statement is used for the visibility link to make
an object, such as a button, visible based on the logged on
user's access level:
$AccessLevel >= 2000;
{Objects can have a "disable" link associated with
them, with the expression based on $AccessLevel.}
$AccessLevel < 5411;
IF $AccessLevel <=500 THEN
Show "Access Denied"; {popup window denying access}
ELSE
Show "Access Granted"; {popup window granting access}
ENDIF;
See Also
$Operator, $OperatorEntered, $PasswordEntered;
$ConfigureUsers
Note You can also show the Log On dialog box using the
PostLogonDialog() function. For more information, see
PostLogonDialog() Function on page 157.
To log on to an application
1 On the Special menu, point to Security, and then click Log
On. The Log On dialog box appears.
2 In the Name box, type your user name.
3 In the Password box, type your password.
4 Click OK.
• Password
To log on
1 Start the ArchestrA-secured InTouch application. A log
in dialog box appears.
2 Type a valid user name and password. If the system
cannot authenticate you, you are prompted again to log
on.
After the system authenticates your logon credentials, access
to all future operations is granted based on your associated
roles/permissions in the security model.
PostLogonDialog() Function
Shows the InTouch Logon dialog box and returns TRUE.
Category
security
Syntax
DiscreteTag=PostLogonDialog();
Examples
DiscreteTag=PostLogonDialog();
See Also
InvisibleVerifyCredentials(), AttemptInvisibleLogon(),
IsAssignedRole(), QueryGroupMembership(),
AddPermission()
LogonCurrentUser() Function
Logs on to InTouch with the user account that is currently
logged on to the Windows operating system.
Category
security
Syntax
DiscreteTag = LogonCurrentUser();
Return Value
Returns -1 and no change to the values assigned to
$Operator, $OperatorName, $OperatorDomain, and
$AccessLevel if the logon fails.
Remarks
Use this function only for operating system-based security.
Example
DiscreteTag = LogonCurrentUser();
See Also
PostLogonDialog(), InvisibleVerifyCredentials(),
IsAssignedRole(), AttemptInvisibleLogon(),
QueryGroupMembership(), AddPermission()
Logoff() Function
Logs the user off from an InTouch application.
Category
security (write only)
Syntax
DiscreteTag = LogOff();
Remarks
Logs off the currently logged on user and sets the current
user status to the default none operator.
Example
DiscreteTag = LogOff();
See Also
PostLogonDialog(), InvisibleVerifyCredentials(),
IsAssignedRole(), AttemptInvisibleLogon(),
QueryGroupMembership(), AddPermission()
AttemptInvisibleLogon() Function
The AttemptInvisibleLogon() function can be used in a script
to log on a user to InTouch using the supplied credentials.
The user is not required to enter a password or user ID.
Category
security
Syntax
DiscreteTag=AttemptInvisibleLogon( "UserId",
"Password", "Domain" );
Arguments
UserId
A valid user account name.
Password
Password of the user.
Domain
Name of the local computer, workgroup, or domain to which
the user belongs. This argument applies only if the current
security type is operating system-based.
Return Value
Returns TRUE if authentication is successful. Otherwise, it
returns FALSE.
Remarks
An attempt is made to log on to the InTouch HMI using the
supplied credentials.
• If the logon attempt succeeds, then TRUE is returned
and the $OperatorDomain, $OperatorName,
$AccessLevel, and $Operator system tags are updated
accordingly.
Data Type
Message (write only)
See Also
$AccessLevel, $Operator, $PasswordEntered,
$ChangePassword, $ConfigureUsers
Data Type
Message (write only)
See Also
$AccessLevel, $Operator, $OperatorEntered,
$ChangePassword, $ConfigureUsers
InvisibleVerifyCredentials() Function
The InvisibleVerifyCredentials() function can be used in a
synchronous QuickScript to verify the credentials of the
given user without logging the user on to the InTouch HMI.
Category
security
Syntax
AnalogTag=InvisibleVerifyCredentials( "UserId",
"Password", "Domain" );
Arguments
UserId
Windows operating system user account name that is part
of local computer, workgroup, or domain.
Password
Password for the account.
Domain
The Windows domain for the account.
Remarks
If the supplied combination of user, password, and domain
are valid then the corresponding access level associated with
the user is returned as an integer. Otherwise, -1 is returned.
GetAccountStatus() Function
Returns the number of days until the user’s password
expires.
Category
security
Syntax
Result=GetAccountStatus(Domain, UserID);
Arguments
Domain
Name of the domain or local computer in which the user
account is located.
UserID
Windows user account name that is part of the local
computer, workgroup, or domain.
Return Value
This function also returns the following values:
Result Description
Remarks
Use this script function with operating system-based
security. Do not use this function with the ArchestrA security
mode.
If the GetAccountStatus() function is used with ArchestrA
security, the script attempts to retrieve the account
information directly from the domain controller. This works
as long as the ArchestrA Galaxy Repository is using
operating system security with the same domain.
Example(s)
Status = GetAccountStatus("Corporate_HQ","Operator");
IsAssignedRole() Function
Determines whether the currently logged on user is a
member of the specified user role. Only applies to ArchestrA
security.
Category
security
Syntax
DiscreteTag=IsAssignedRole( "RoleName" );
Arguments
RoleName
The role associated with an Application Server user.
Remarks
Valid for ArchestrA security mode only and applies to the
currently logged on user. If a user is currently logged on and
has the RoleName role assigned in the Galaxy IDE, then
TRUE is returned. Otherwise, FALSE is returned.
Example
DiscreteTag=IsAssignedRole( "Administrators" );
See Also
AttemptInvisibleLogon(), PostLogonDialog(),
InvisibleVerifyCredentials(), QueryGroupMembership(),
AddPermission()
QueryGroupMembership() Function
Determines whether the currently logged on user is a
member of the specified user group. Only applies to operating
system security.
Category
security
Syntax
DiscreteTag=QueryGroupMembership( "Domain", "Group" );
Arguments
Domain
Name of the domain or local computer in which the group is
located
Group
Name of the group.
Remarks
Valid for operating system security mode only and applies to
the currently logged on user. If a user is currently logged on
and if he or she is part of the group located on the domain,
then TRUE is returned. Otherwise, FALSE is returned.
The QueryGroupMembership() function works with
operating system-based security and with ArchestrA security
only when the ArchestrA security is set to operating
system-based security.
Examples
DiscreteTag=QueryGroupMembership( "corporate_hq",
"InTouchAdmins" );
DiscreteTag=QueryGroupMembership( "JohnS01",
"InTouchUsers" );
See Also
PostLogonDialog(), InvisibleVerifyCredentials(),
IsAssignedRole(), AttemptInvisibleLogon(), AddPermission()
See Also
$Operator
See Also
$Operator
Operating
InTouch System ArchestrA
Security Security Security
Chapter 6
SwitchDisplayLanguage() Function
Switches the display of visible, static texts and alarm fields
in a desired language for which translated strings are
provided.
Category
misc
Syntax
SwitchDisplayLanguage(LocaleID);
Parameter
LocaleID
The language in which static text strings and alarm fields
are to be shown at run time.
Example(s)
In this example, German is the language to be shown at run
time.
SwitchDisplayLanguage(1031);
See Also
$Language system tag
• Button text.
• User messages.
• On/off messages inside input links.
• On/off messages in output links.
• Text on wizards.
You cannot export the dictionary until you close all windows
in WindowMaker. If you make changes to your application
after you export your dictionary files, you must export the
dictionary file again. For more information, see Exporting
Text to an Existing Dictionary File on page 180.
You can only export the text strings for one language at a
time. By default, the InTouch HMI opens the My InTouch
Applications folder. If you choose any other folder, the
InTouch HMI then defaults to that path. Creating a new
folder to export phrases for each language makes it easy to
manage dictionary files. For example, ...\My InTouch
Applications\My German Files\.
The InTouch HMI creates a dictionary file for your
application and a separate dictionary file for each
SmartSymbol within the application. The application
dictionary name has a format of application name_localeID
whereas SmartSymbol dictionary files have a format of
SSD_Name of the Symbol_localeID_GUID.
When you export the dictionary for an application, the file is
an .xml file that you can edit using Microsoft Excel 2003 or
later.
If you click Yes, the existing .xml files are updated with any
new strings and language information added since you
exported last. If the existing dictionary file contains
translations for any phrases and you imported it to the
InTouch HMI previously, those translations are preserved. If
you deleted any phrases from the application since the last
export, they are removed from the dictionary file.
3 Click OK.
The XML file opens in Excel with columns for the:
• Phrases in your application.
• Translated phrases from the translator.
• Translated font name.
• Translated font properties.
• Translated font size.
• Base font properties.
• Base font size.
• Context, phrase ID, language ID and foreign
language ID.
Click Yes to update the existing dictionary files with any new
strings and language information added since you exported
last. If the existing dictionary file contains translations for
any phrases and you imported it to InTouch previously, those
translations are preserved. If you deleted any phrases from
the application since the last export, they are removed from
the dictionary file.
Click Yes to All to update existing dictionary files for all
languages configured in the InTouch HMI.
Click No or No to All to prevent overwriting the existing file or
the existing files for all languages, respectively.
The existing translations for any alarm comments, alarm
fields and tag comments are preserved if they are exported
again.
UNACK_RTN UNACK_RTN
ACK_RTN ACK_RTN
UNACK_ALM UNACK_ALM
ACK_ALM ACK_ALM
SPC SPC
HIHI HIHI
HI HI
LO LO
LOLO LOLO
MINDEV MINDEV
MAJDEV MAJDEV
ROC ROC
DSC DSC
OPR OPR
LGC LGC
DDE DDE
SYST SYST
USER USER
PRO PRO
LOGON_FAILED LOGON_FAILED
DEV DEV
ROC ROC
DSC DSC
EVENT EVENT
VALUE VALUE
• The unique IDs for the alarm fields such as EVENT and
ACK, are predefined and have the same ID across
multiple dictionary files in different nodes. Alarm clients
pick the translation from the first loaded dictionary file
and the translations from other dictionary files are
ignored. Ideally, the alarm fields in all dictionary files
should have the same translation in a language. Multiple
alarm clients (Alarm DB View and Alarm Viewer
controls) use the same translation for the same alarm
state for a given language
Chapter 7
About WindowViewer
WindowViewer provides the run-time environment for
InTouch applications. Based upon your application’s
operational requirements, you can configure how
WindowViewer supports an application. For example,
depending on your application’s security requirements, you
can configure the menus and commands available to
operators from WindowViewer.
Window
Configuration
Properties For More Information, see
5 Restart WindowViewer.
Click Details to change from the list view to the details view.
The details show the window's type and the date and time
when a window was last modified.
In the details view, you can select and deselect any unopened
window by clicking on any portion of its row, not just the
check box. The entire row is highlighted when selected.
• To open selected windows click OK.
2 Click the check box next to the name of each window that
you want to open when you transfer to WindowMaker.
3 Click OK to close the dialog box and transfer to
WindowMaker.
InTouchView
InTouchView applications show visual interfaces designed
specifically for use in an ArchestrA Application Server
environment. InTouchView applications run in
WindowViewer, with Application Server providing most of
the HMI functionality.
InTouchView applications offer only some of the standard
functions available from full-featured InTouch applications.
InTouchView applications:
• Cannot connect to I/O sources other than the ArchestrA
Application Server Galaxy.
• Access Names
• Alarm Groups
• Configure...Alarms
• Configure...Historical Logging
• Configure...Distributed Name Manager
• Unavailable Tagname Dictionary options:
• Alarms
• Details & Alarms
• Log Data
• Log Events
• Priority
You run an InTouchView application as you would an
InTouch application. Simply start the application in
WindowViewer.
Important You must remove all Access Names other than Galaxy
before converting an InTouch application to InTouchView. If they
are not removed, a message is shown during the conversion
attempt.
InTouchView Licensing
When an InTouchView application starts, WindowViewer
requests a specific InTouchView license from the License
Manager. If an InTouchView license is not available, License
Manager requests a full-featured InTouch license. If the
InTouch line is successfully read, WindowViewer starts the
application. Otherwise, WindowViewer indicates the
InTouchView license is unavailable and gives a brief
description of the problem. WindowViewer offers options to
quit, retry, or run the InTouchView application in
demonstration mode.
Chapter 8
Setting Up a Multi-Monitor
System
Multi-Monitor Configurations
You can use two basic multi-monitor configurations.
• Single video card
• Multiple video card
Multi-monitor
screen at
1600 x 1200
• Y location = 0
Parameter Description
Chapter 9
To select annotations
1 Click the Lasso icon in the toolbar.
2 While holding down the stylus button, draw an area
around the annotations that you want to select.
You can now cut, copy or delete the selected annotations.
To delete annotations
Do any of the following:
• To delete all annotations on a window, on the Edit
menu, point to Clear and then click All.
• To delete annotations that you selected using the
lasso, on the Edit menu, point to Clear and then tap
Selection.
AnnotateLayout() Function
Shows the Annotate Layout dialog box, where you can
annotate the current view screen from where this script
function is called. This function is only supported on the
Windows XP Tablet PC Edition operating system.
Category
System
Syntax
AnnotateLayout()
Remarks
When Annotate Layout dialog box appears, the screen image
of WindowViewer is captured. Use the dialog box to:
• Annotate the screen capture using the pen in conjunction
with tool bar and menu item settings.
Appendix A
Index
Symbols A
$AccessLevel system tag 150, 156, 162, Access Name
169 advising only active items 76
$ApplicationChanged system tag 54 restrictions with InTouchView
$ApplicationVersion system tag 55 applications 38
$ChangePassword system tag 146, 151, selecting to convert placeholder
169 tags 121
$ConfigureUsers system tag 144, 152, selecting to convert placeholder tags to
156, 169 remote references 126
$InactivityTimeout system tag 131, 133, Access Names
169 specifying in DBLoad file 86
$InactivityWarning system tag 131, 134, AddPermission() function 142, 149, 169
169 AlarmGroup keyword 88–90
$Language system tag 177, 178 AnnotateLayout() function 220, 223
$LogicRunning system tag 139 Application Manager
$Operator system tag 63, 156, 162, 168, creating an InTouch application 19–20
169
customizing the window 23
$OperatorDomain system tag 167, 169
description 14
$OperatorDomainEntered system
finding applications 24
tag 161, 169
modifying an application 22
$OperatorEntered system tag 156, 160,
169 opening an application with
WindowMaker 21
$OperatorName system tag 167, 169
opening an application with
$PasswordEntered system tag 156, 160,
WindowViewer 21
169
starting 16
$VerifiedUserName system tag 168, 169
starting the ArchestrA IDE 18
Numerics Application Publisher
configuring package details 28
16PenTrendDrawMode parameter 230
DBLoad QueryGroupMembership()
AlarmGroup keyword 88–90 function 166
creating input file 82 ReloadWindowViewer() function 57
creating SuperTag instances 116 RestartWindowViewer() function 56
description 78 SwitchDisplayLanguage() function 177
input file 80 TseGetClientId() function 63, 66
IOAccess keyword 86, 86–87 TseGetClientNodeName() function 66
mode keyword 83–85 TseQueryRunningOnClient()
specifying Access Names 86–87 function 67
specifying alarm groups 88–90 TseQueryRunningOnConsole()
function 67
debugging scripts 196
WWMultiMonitorNode() function 218
Distributed History System 45
documentation conventions 11
G
DRC, See Dynamic Resolution
Conversion Galaxy
Dynamic Resolution Conversion 59 defining ArchestrA security 148
configuring an application 59–60 restrictions for InTouchView
applications 38, 203
description 59
GetAccountStatus() function 164, 169
E GetNodeName() function 63
GroupVar keyword 111
EnableDisableKeys() function 135, 137,
169
H
F historical logging
Fast Switch 195 restrictions for InTouchView
applications 203
files, INTOUCH.ini 19
historical logs
ForceLogCurrentValue parameter 227
logging remote referenced tags 228
ForceLogging parameter 227
setting logging frequency 227
functions
history provider, dynamically
AddPermission() function 142, 149
configuring 49
AnnotateLayout() function 220, 223
HistoryTrend keyword 111
AttemptInvisibleLogon() function 158
HTSetPenName() function 49
ChangePassword() 150
HTUpdateToCurrentTime() function 45
EnableDisableKeys() function 135, 137
GetAccountStatus() function 164 I
GetNodeName() function 63
inactivity time-out 131–133
HTSetPenName() function 49
IndirectAnalog keyword 113
HTUpdateToCurrentTime()
IndirectDisc keyword 112
function 45
IndirectMsg keyword 113
InvisibleVerifyCredentials()
function 163 INTOUCH.ini file
IOReinitialize() function 63 copying to an application folder 19
IOSetAccessName() function 39 creating 19
IsAssignedRole() function 165 custom parameters 226–231
Logoff() function 158 InTouchView
LogonCurrentUser() function 157 converting from an InTouch
application 206
PostLogonDialog() function 153, 157
converting to an InTouch
application 205
distributing an application 46 R
I/O data access 38 RDP 61
I/O data sources 39 ReloadWindowViewer() function 57
local addresses to I/O data sources 40 Remote Desktop Protocol 61
manually updating applications 54 remote history provider
planning considerations 38 creating list 47–48
using global I/O addresses 39 description 47
using local I/O addresses 40–41 RESET command 115
using the distributed history system 46 Resizable InputLink parameter 231
network architectures RestartWindowViewer() function 56
server-based 36 run time
single computer 34 customizing 194
supported types 34 Fast Switch 195
NoKeyboardResize parameter 231 run time, customizing for
Notify Clients command 37, 56 InTouchView 194
O S
objects ScaleForResolution parameter 217, 229
blink speed 196 scripts
objects, blink speed 196 adding user permissions 149
oldrightmousebehavior parameter 228 change user password 150
opening/closing windows 201 determine user group membership 165
log on a user to InTouch
P automatically 158
parameters managing user accounts 149–152
16PenTrendDrawMode 230 retrieving information about the
CommentRetentive 230 current logged on user 167
ForceLogCurrentValue 227 setting loop timeout limit 229
ForceLogging 227 show the InTouch Logon dialog box 157
LoopTimeout 229 stopping in run time 139, 140
MultiScreen 215 verifying user credentials 163
MultiScreenHeight 215 security
MultiScreenWidth 215 adding user permissions with a
NoKeyboardResize 231 script 149
oldrightmousebehavior 228 authentication 141
PrintScreenWait 229 authorization 141
PrintWindow 229 change user password with a script 150
Resizable InputLink 231 changing a password at run time 146
ScaleForResolution 217, 229 creating a custom logon window 156
PostLogonDialog() function 153, 157, 169 determine user group membership with
a script 165
PrintScreenWait parameter 229
disable animation link 162
PrintWindow parameter 229
hiding menu items at run time 138–
140
Q inactivity time-out feature 131
QueryGroupMembership() function 166, InTouch-based authentication 141
169
locking system keys 135–136