Visual Designer Manual
Visual Designer Manual
Contents
INTRODUCTION..................................................................................................... 15
CONVENTIONS USED IN THIS DOCUMENTATION............................................17
ABOUT THIS APPLICATION.................................................................................. 19
Product Overview.....................................................................................................19
Product Features...................................................................................................... 19
How the Software Works.........................................................................................21
Internal Structure and Data Flow............................................................... 21
Executing/Switching Modules....................................................................23
Executing/Switching the Background Task................................................ 26
INSTALLATION.......................................................................................................29
System requirements............................................................................................... 29
Installing the Software..............................................................................................31
Starting the Software............................................................................................... 34
Uninstalling the Software......................................................................................... 34
LICENSING..............................................................................................................35
Protection Types.......................................................................................................35
License Settings....................................................................................................... 35
Execution Modes......................................................................................................36
Product Versions...................................................................................................... 37
Installing a New Hardkey License............................................................................ 38
Upgrading the Current Hardkey License.................................................................. 38
Installing a Softkey License...................................................................................... 40
Installing or Upgrading a CEView License (Locally).................................................. 41
Installing or Upgrading a CEView License (Remotely)..............................................43
Ribbon...................................................................................................................... 52
Home tab................................................................................................... 52
View tab..................................................................................................... 53
Insert tab.................................................................................................... 53
Project tab.................................................................................................. 53
Graphics tab............................................................................................... 54
Format tab..................................................................................................54
Help tab......................................................................................................55
Project Explorer........................................................................................................ 55
Global tab................................................................................................... 55
Graphics tab............................................................................................... 56
Tasks tab.................................................................................................... 57
Comm tab.................................................................................................. 58
Screen/Worksheet Editor......................................................................................... 58
Database Spy............................................................................................................59
Output (LogWin)....................................................................................................... 60
Title Bar.................................................................................................................... 62
Status Bar................................................................................................................. 62
Trends.....................................................................................................................224
Converting Trend History Files from Binary to Text................................. 226
Converting Trend History Files from Text to Binary................................. 227
Creating Batch History............................................................................. 227
Setting the Trend Database..................................................................... 230
Trend Control object............................................................................................... 230
Object Properties: Trend Control dialog................................................... 231
Runtime Interface.................................................................................... 245
Using the Data Source Text File...............................................................246
Using the Data Source Database............................................................. 249
Grid object.............................................................................................................. 253
Columns dialog.........................................................................................255
Data dialog............................................................................................... 257
Advanced dialog....................................................................................... 258
DATABASE INTERFACE.......................................................................................378
SQL Relational Databases...................................................................................... 379
Linking the Database Through a Remote DB Provider........................................... 380
Studio Database Gateway...................................................................................... 381
Database Configuration.......................................................................................... 385
Configuring a Default Database for All Task History...............................................388
Database Troubleshooting......................................................................................389
Appendices.............................................................................................................392
Using ODBC Databases........................................................................... 392
Using Microsoft SQL Server.................................................................... 394
Using ORACLE Databases....................................................................... 395
Using Microsoft Access Databases......................................................... 396
Using SQL Server CE............................................................................... 398
Using Sybase........................................................................................... 399
Using Microsoft Excel.............................................................................. 399
Using MySQL...........................................................................................402
TROUBLESHOOTING........................................................................................... 404
General Troubleshooting........................................................................................ 404
Frequently Asked Questions.................................................................................. 406
Help Menu..............................................................................................................413
Technical Reference.................................................................................414
License Agreement..................................................................................414
Release Notes..........................................................................................414
Home Page.............................................................................................. 414
Communication Drivers............................................................................414
Support Information................................................................................. 414
About........................................................................................................415
Security functions...................................................................................................462
BlockUser.................................................................................................462
CheckESign.............................................................................................. 463
CreateUser............................................................................................... 464
ExportSecuritySystem..............................................................................465
GetUserFullName.....................................................................................465
GetUserNames........................................................................................ 466
GetUserPwdAging................................................................................... 467
GetUserState........................................................................................... 467
ImportSecuritySystem............................................................................. 468
RemoveUser............................................................................................ 469
SetPassword............................................................................................ 470
UnblockUser.............................................................................................471
Module Activity functions.......................................................................................471
AppActivate..............................................................................................471
AppIsRunning...........................................................................................473
AppPostMessage.....................................................................................474
AppSendKeys...........................................................................................475
CleanReadQueue..................................................................................... 475
CloseSplashWindow................................................................................ 476
DisableMath............................................................................................. 476
EnableMath.............................................................................................. 476
EndTask....................................................................................................477
ExitWindows............................................................................................ 478
IsScreenOpen.......................................................................................... 478
IsTaskRunning..........................................................................................479
IsViewerInFocus.......................................................................................479
KeyPad..................................................................................................... 479
LogOff...................................................................................................... 480
LogOn...................................................................................................... 481
Math.........................................................................................................481
PostKey.................................................................................................... 482
Recipe...................................................................................................... 482
Report...................................................................................................... 483
RunGlobalProcedureOnServer................................................................. 484
RunVBScript............................................................................................. 485
SecureViewerReload................................................................................485
SendKeyObject........................................................................................ 486
SetAppPath.............................................................................................. 487
SetViewerInFocus.................................................................................... 488
SetViewerPos...........................................................................................488
ShutDown................................................................................................ 489
StartTask.................................................................................................. 489
ViewerPostMessage................................................................................ 490
WinExec................................................................................................... 491
WinExecIsRunning................................................................................... 493
Loop functions........................................................................................................550
For … Next...............................................................................................551
ODBC functions......................................................................................................551
ODBCBeginTrans..................................................................................... 551
ODBCBindCol...........................................................................................552
ODBCCanAppend.................................................................................... 553
ODBCCanTransact................................................................................... 553
ODBCCanUpdate..................................................................................... 554
ODBCClose.............................................................................................. 554
ODBCCommitTrans................................................................................. 554
ODBCDelete............................................................................................ 555
ODBCExecuteSQL................................................................................... 555
ODBCInsert..............................................................................................556
ODBCIsBOF............................................................................................. 557
ODBCIsDeleted........................................................................................557
ODBCIsEOF............................................................................................. 558
ODBCIsFieldNULL................................................................................... 558
ODBCIsFieldNullable................................................................................559
ODBCMove..............................................................................................559
ODBCMoveFirst.......................................................................................560
ODBCMoveLast....................................................................................... 560
ODBCMoveNext...................................................................................... 561
ODBCMovePrev.......................................................................................561
ODBCOpen.............................................................................................. 562
ODBCQuery............................................................................................. 563
ODBCRollBack......................................................................................... 563
ODBCSetFieldNULL.................................................................................564
ODBCSetFilter..........................................................................................564
ODBCSetSort........................................................................................... 565
ODBCUnbindCol...................................................................................... 565
ODBCUpdate........................................................................................... 566
Email functions....................................................................................................... 566
CnfEmail...................................................................................................567
GetStatusSendEmailExt........................................................................... 569
SendEmail................................................................................................ 569
SendEmailExt........................................................................................... 570
Dial-up functions.....................................................................................................571
DialError................................................................................................... 571
DialGetClientIP......................................................................................... 577
DialGetServerIP........................................................................................578
DialStatus................................................................................................. 579
DialUp.......................................................................................................581
DialUpToCE.............................................................................................. 582
FindAllDevices..........................................................................................583
FindModem..............................................................................................584
HangUp.................................................................................................... 584
PhoneDialUp............................................................................................ 585
PhoneDisableListen................................................................................. 586
PhoneEnableListen.................................................................................. 586
PhoneHangUp.......................................................................................... 587
PhoneStatus.............................................................................................588
Introduction
This User Guide and Technical Reference was designed to help you get the best results
from your Visual Designer™ software. This document provides technical information and
step-by-step instructions for all the tasks you need to create Web-enabled HMI/SCADA
programs.
Who should read this
This User Guide and Technical Reference is a comprehensive document designed to provide
useful information for both novice and advanced users of Visual Designer.
• New Users: This publication uses a step-by-step, hands-on approach to the project
development process. Be sure to read the introductory chapters describing the product's
features and development environment.
• Experienced Users: This publication offers advanced instructions, tips, and
troubleshooting information to help you get the most out of your projects.
Note: We assume you are familiar with working in a Windows environment, and we do not
attempt to explain Windows navigation, file management, and so forth. If you are
unfamiliar with any of these procedures, we recommend using the Windows Help
feature (Start > Help) or consulting your Microsoft Windows documentation.
Contents
The information in this document is organized into the following chapters:
• This chapter: Describes the purpose, content, and organization of the User Guide and
Technical Reference. In addition, this chapter contains the following information:
• Explains the formatting, mouse, and Windows conventions used
• Lists other publications providing information about Visual Designer
• Explains how to contact a technical support representative
• About This Software: Provides a high-level overview of the product's uses, features,
and functions.
• Installing and Uninstalling: Provides step-by-step instructions for installing, licensing,
starting, and uninstalling Visual Designer and CEView.
• Navigating the Development Environment: Describes the Visual Designer interface
(or development environment), and explains some basic skills and techniques you must
understand before creating a new project.
• How the Software Works: Describes the internal structure of Visual Designer, including
how data flows through the runtime modules and how these modules are executed.
• Creating and Configuring a New Project: Provides step-by-step instructions for
creating and configuring a new project.
• Working with Tags: Explains basic concepts about the product database, tag types
(arrays, classes, and pointers), tag values and parameters. Following the concepts
discussion, this chapter provides instructions for creating and editing tags for your
projects.
• Creating Screens and Graphics: Explains how to use the different Visual Designer
development tools to create your project screens and graphics.
• Configuring Background Tasks: Explains how to create and configure the different
Visual Designer task worksheets for your projects.
• Event Settings: Describes the logging and event-retrieval features.
This documentation uses standardized formatting and terminology to make it easier for all
users to understand.
Text conventions
This documentation uses special text formatting to help you quickly identify certain items:
• Titles, labels, new terms, and messages are indicated using italic text (for example,
Object Properties).
• File names, screen text, and text you must enter are indicated using monospace text (for
example, D:\Setup.exe ).
• Buttons, menu options, and keyboard keys are indicated using a bold typeface (for
example, File menu).
In addition, this documentation segregates some text into Tip, Note, and Caution boxes:
• Tips provide useful information to save development time or to improve the project
performance.
• Notes provide extra information that may make it easier to understand the nearby text,
usually the text just before the note.
• Cautions provide information necessary to prevent errors that can cause problems when
running the project, and may result in damage.
Mouse and selection conventions
Because most PCs used for project development run a version of Microsoft Windows with
a mouse, this documentation assumes you are using a mouse. Generally, a PC mouse is
configured for right-handed use, so that the left mouse button is the primary button and the
right mouse button is the secondary button.
This documentation uses the following mouse and selection conventions:
• Click and Select both mean to click once on an item with the left mouse button. In
general, you click buttons and you select from menus and lists.
• Double-click means to quickly click twice on an item with the left mouse button.
• Right-click means to click once on an item with the right mouse button.
• Select also means you should use your pointing device to highlight or specify an item
on the computer screen. Selecting an item with a touchscreen is usually the same as
selecting with a mouse, except that you use your finger to touch (select) a screen object
or section. To select items with your keyboard, you typically use the Tab key to move
around options, the Enter key to open menus, and the Alt key with a letter key to select
an object that has an underlined letter.
• Drag means to press down the appropriate mouse button and move the mouse before
releasing the button. Usually an outline of the item will move with the mouse cursor.
Windows conventions
This documentation uses the following Windows conventions:
• dialoges (or dialogs) are windows that allow you to configure settings and enter
information.
• Text boxes are areas in dialogs where you can type text.
• Radio buttons are white circles in which a black dot appears or disappears when
you click on the button. Typically, the dot indicates the option or function is enabled
(selected). No dot indicates the option or function is disabled (not selected).
• Check boxes are white squares in which a check ( ) appears or disappears when
you click on it with the cursor. Typically, a check indicates the option or function is
enabled (selected). No check indicates the option or function is disabled (not selected).
• Buttons are icons in boxes appear "pressed" when you click on them.
• Lists are panes (white boxes) in windows or dialogs containing two or more selectable
options.
• Combo boxes have arrows that, when clicked, show part or all of an otherwise
concealed list.
• Dockable windows are windows that you can drag to an edge of the interface and
merge with that edge.
Visual Designer is a powerful, fully integrated software program that enables you to design
and build feature-rich HMI (Human-Machine Interface) or SCADA (Supervisory Control and
Data Acquisition) projects for:
• Data acquisition
• Local supervisory stations
• Remote supervisory stations
• Data concentrators on distributed processes
• Data communications with corporate systems
Product Overview
Visual Designer projects run on microcomputers connected in real-time to machines or
processors through programmable controllers, remote I/O devices, and other data-acquisition
equipment.
These projects consist of animated operator-interface screens, configurable PLC
(programmable logic controller) drivers and other controllable I/O devices, a project tags
database, and optional modules such as alarm monitors, logic, trend charts, recipes,
schedulers, and a security system. Visual Designer projects interface with industrial I/O
systems and other Windows applications in the runtime environment using the following
protocols:
• ODBC (Open Database Connectivity)
• DDE (Dynamic Data Exchange)
• NetDDE (Network Dynamic Data Exchange)
• OPC (Open Connectivity)
• TCP/IP (Transmission Control Protocol/Internet Protocol)
After developing a project, you can run it on your development workstation or download the
project to a runtime workstation (using a serial or TCP/IP connection) and run it using Visual
Designer or CEView runtime software. The workstation processes scan data from connected
devices according to parameters defined in the project and then react to, display, store and
upload the data.
The product consists of two parts:
• The development system software runs on a desktop, laptop, or industrial PC running a
currently supported Microsoft Windows desktop or server operating system.
• The runtime system software runs on an operator interface workstation running
a currently supported Microsoft Windows desktop operating system or Windows
Embedded.
Note: The runtime client for Windows Embedded operating systems (CEView) is often
pre-loaded on the HMI. If necessary, you can update the CEView version of the
development system software by downloading the current version to the HMI.
Product Features
The Visual Designer product provides the following features:
• Integrated Windows development environment with toolbars, dialogs, and menus:
• Drop-down (pop-up) menus, which you activate by right-clicking on any area of the
development environment (Options vary according to context.)
• Customizable fly-over toolbars
• Tasks, objects, and controls organized in a tree-view explorer
• Full-featured objects and animations (the ability to modify object properties, execute
commands, or inset values to tags used to build screens on the fly at runtime):
• Configurable objects such as buttons, rectangles, ellipse, polygons, lines, and text
• Object animations such as bar graphs, color, resizing, position, hide/unhide, rotation,
command, hyperlink, and text input/output
• On-line and historical alarm list displays
• On-line and historical trending
• Alignment and distribution tools
• Background bitmap layer creation and editing
• Graphics importation
• ActiveX object containers
• On-line remote management and configuration
• Microsoft DNA architecture compliance, with full OPC and XML support
• Web interface enabled, which exports project screens to a "thin" client through the
Internet/intranet and by exchanging data on-line through the TCP/IP protocol
• Symbols library with more than 100 pre-made objects, such as pushbuttons, meters,
sliders, switches, text and numeric displays, LED-style indicators, pipes, bumps, icons,
vehicles, valves, frames, motors, gauges, and common controls
• Debugging tools:
• Database Spy window to monitor/force tag values and execute functions
• LogWin module to record OPC, DDE, and TCP/IP transactions, modules activation,
trace tags, and so forth
• Cross-referencing to locate tags throughout the project
• On-line system and network diagnostics
• Powerful and flexible tag database (Boolean, Integer, Real, and String tags), array tags,
classes, and indirect tag-pointers
• Open architecture with API exchanges and tag values with external software
• Translation editor, which enables you to translate a project into several different
languages, and switch between them while the runtime system is online
• TCP/IP client and server modules to exchange tag values and configure redundancy
systems
• More than 200 direct communication drivers for different devices (such as PLC) from
several manufacturers; such as Allen-Bradley, Siemens, GE-Fanuc, as well as standard
protocols such as MODBUS RTU/ASCII, DeviceNet, Profibus, Interbus, and so forth
• Full integration with PC-based control packages (imports tags database) such as
ISaGRAF, SteepleChase, Think&Do, OpenControl, FP Control and ASAP.
• OPC Server and OPC Client with integrated OPC Browser
• Screen and object password-protected runtime security (256 levels)
• Logical expressions and a scripting language with more than 200 functions
• Recipe and Report (ASCII, UNICODE, and RTF formats) builders integrated into
the product
• Event scheduler based on date, time, or data condition (100ms resolution)
• Multi-layer project, which means modular worksheets and screens can be merged easily
to other projects
• Dial-Up functions to trigger, monitor, and hang-up a dial-up connection with the RAS
Server of remote stations
• Functions to send e-mail from Visual Designer (or CEView)
• Real-time project documentation
• Screen resolution converter
Note: Visual Designer provides different product types for each level of project
responsibility. However, Visual Designer does not support some features in certain
product types (such as CEView). You can review the TargetVersions.pdf
document on the Visual Designer installation CD for detailed information about these
the limitations of each product-type limitations.
• Viewer: Executes all scripts (On Open, On While, On Close, Command, Hyperlink, and
so forth) configured for project screens and updates the screen objects.
None of the preceding runtime modules exchange data directly with another module or task.
Instead, runtime modules send data to and receive data from the Tags database, which is
the "heart" of Visual Designer.
The Tags database manages the flow of data between modules. In addition, the Tags
database stores all tag values and the status of all properties associated with each tag (such
as alarm conditioning, timestamp, quality, and so forth).
Note: Tags are variables (such as communication points in field equipment, calculation
results, alarm points, and so forth) that are used in screens and worksheets. For
detailed information about tags, tag values, and tag properties see Working with Tags.
Each Visual Designer module contains a virtual table of the tags that are relevant for
that module at the current time. The Tags database uses this table to determine which
information must be updated in each module. For example, the Viewer contains a virtual
table that lists all tags configured for all of the open project screens. If a tag value changes,
the Tags database sends a message to the Viewer, and then the Viewer updates the value in
all objects where the tag is configured.
For example, if a driver reads a new value from the PLC, the driver updates the tag
associated with this value in the Tags database. Then, if this new information must display
on the project screen, the Tags database sends the new tag value to the Viewer task, and
the Viewer updates the screen.
Note that the driver does not send new tag values directly to the Viewer. In addition, there
is no pooling between tasks — the Tags database receives the updated information and
immediately forwards it to all runtime tasks requiring that information.
IMPORTANT
The Viewer module will update an object only when (at least) one of the object's tag values
change.
If you configure an object animation (such as Text Data Link) with a function that does not
require a tag (for example, NoInputTime()), the Viewer will not update the object because
there is are no tags associated with that object.
The architecture of Visual Designer significantly improves the internal data flow performance
and makes it easy for you to add new internal tasks. Even though each task works
independently, it can access information from any other task through the Tags database.
Executing/Switching Modules
Visual Designer is a SCADA system composed of modules that must be executed
simultaneously. Based on the multi-tasking concept, each runtime module (Viewer, Driver,
and so forth) is a thread and the operating system switches from one thread to other
automatically. It is a common misconception that you execute a SCADA system when you
execute a PLC program. A PLC program contains a simple loop:
However, in a SCADA system, there are several modules running simultaneously, and
most of them can read and write data. Because a SCADA system modifies data (tag values)
continuously during task execution, the preceding diagram is not applicable.
Visual Designer only has one process: Studio Manager.exe. When you execute a
runtime project, the Studio Manager.exe process starts the Tags database and all of the
runtime modules configured for the project. You can specify which modules (such as Viewer
and Driver) will start during the runtime.
Each process keeps a list of active threads for the operating system. Actually, each process
activates and deactivates each thread during the runtime, according to the algorithm of each
process. Also, when you create a thread you specify a priority value. The operating system
continuously scans all currently active threads, and executes the threads according to their
priority value — executing the higher-priority threads first. When threads with higher-priority
values are active, the threads with lower-priority values are not executed at all. If there is
more than one thread with the same priority value, and there are no other threads with
higher-priority values, the operating system keeps switching between the threads with the
same priority.
Note: All Visual Designer threads are set to priority 7, which is
THREAD_PRIORITY_NORMAL. (Most programs contain this priority value.)
Real-time program (such as SoftPLCs and Device Drivers) threads are assigned a
higher-priority value (THREAD_PRIORITY_HIGHEST); however, these programs must
provide a mechanism to keep them inactive for some period of time or the threads
with normal priority would never be executed.
Visual Designer uses the UNICOMM.DLL library for serial drivers. This library creates a
THREAD_PRIORITY_HIGHEST thread that "sleeps" (remains inactive) until data arrives
in the serial channel. When Visual Designer detects new data in the serial channel, the
THREAD_PRIORITY_HIGHEST thread "wakes up" (becomes active) and transfers the
data from the operating system buffer to the thread buffer, where it can be read by
the Driver. This thread is the only highest-priority thread created by Visual Designer.
If you allowed threads to remain active all the time, the CPU usage would be 100% all
the time, which must be avoided for performance reasons. Every program provides a
mechanism to prevent threads from staying active all the time.
Visual Designer uses the following parameters to prevent threads from staying active
continuously:
• TimeSlice (from operating system): Causes the operating system to switch automatically
between active threads with the same priority value.
By default, the operating system executes each active thread for approximately 20ms
and then switches to the next active thread. In other words, if there are multiple active
threads with the same priority value waiting to be executed, the operating system will
not execute any one active thread for more than 20ms.
• TimeSlice (from Visual Designer): Specifies how long each Visual Designer thread can
remain continuously active.
You use this parameter in addition to the operating system's TimeSlice parameter. You
configure a TimeSlice value for each Visual Designer thread (except the Background
Task) and specify how long each thread can remain continuously active. As long as a
thread is active, the operating system can switch to that thread.
• Period (from Visual Designer): Specifies the maximum amount of time each Visual
Designer thread (except the Background Task) can remain inactive.
CAUTION
We strongly recommend that you do not modify these default values unless it is absolutely
necessary. Configuring these parameters incorrectly can cause the entire system to
malfunction (for example, CPU usage will go to 100%) and/or cause some tasks to perform
poorly.
If you must change the parameter defaults, note the values before making your changes so
if a malfunction occurs you can return to the original settings.
To change the Visual Designer TimeSlice and Period parameter default values:
1. From the Visual Designer installation directory (for example, C:\Program Files
\installation folder\Bin), double-click \BIN to open the folder.
2. Double-click the Program Settings.INI file to open the file in Microsoft® Notepad.
The following is a list of all parameters contained in this .ini file and their default values (in
milliseconds).
[Period]
DBSpy=1000
UniDDEClient=200
UniDDE=200
Driver=20
LogWin=100
UniODBCRT=100
OPCClient=20
OPCServer=20
TCPClient=100
TCPServer=100
Viewer=50
[TimeSlice]
UniDDEClient=100
Driver=10
OPCClient=10
OPCServer=10
TCPClient=200
TCPServer=200
Viewer=200
Note: You may not see all of these parameters listed when you open your Program
Settings.INI file. However, even if a parameter is not visible in your list, Visual
Designer still uses that parameter and its default value.
• To change the default value of a displayed parameter: In Notepad, delete the default
value and type the new value in its place.
• To change the default value of a parameter that is not displayed in your list: In
Notepad, type the parameter name exactly as shown in the following list, the equal
sign, and then the new value.
3. Save the file (File > Save) and close Notepad (File > Exit).
The following figure illustrates how Visual Designer executes a generic thread (such as the
Viewer).
Where:
• Signal 1 is the Period time period (set to 50ms for this example).
• Signal 2 shows when the thread is active for the operating system.
• Signal 3 is the TimeSlice time period (set to 30ms for this example).
• Signal 4 shows the execution of the thread itself.
In this example, Visual Designer generates a Period message every 50ms (signal 1). When
Visual Designer generates this message, its thread becomes active and remains active until
the specified TimeSlice time period (from Visual Designer) expires. The thread then remains
inactive until Visual Designer generates the next Period message (signal 1).
While the thread is active, the operating system is responsible for executing that thread.
However, just because a thread is active does not mean the operating system will execute it
immediately — the operating system may be executing other threads, for example.
When the operating system executes the thread, the TimeSlice timer starts counting and the
thread is executed for 20ms (TimeSlice from the operating system). After the 20ms period,
the operating system automatically switches to the next active thread (such as the Driver),
and so on.
In the above example, the TimeSlice time was set to 30ms, which means the operating
system is not supposed to execute the thread more than once in each TimeSlice of Visual
Designer. However, if you specify higher values for the Visual Designer TimeSlice time
period, it is likely that the operating system will execute the same thread more than once in
the same TimeSlice time period.
In the next example, the Period and the TimeSlice values were changed as follows, but the
default operating system TimeSlice period (20 ms) was not changed.
Where:
• Signal 1 is the Period time period (set to 100ms).
• Signal 2 shows when the thread is active for the operating system.
• Signal 3 is the Visual Designer TimeSlice time period (set to 80ms).
• Signal 4 shows the execution of the thread itself.
Notice that the thread can be executed more than once in the same TimeSlice time period.
When the Visual Designer TimeSlice time period expires, the operating system interrupts
the thread execution; however, even though the Visual Designer Period and TimeSlice
parameters are set to 100ms and 80ms respectively, the operating system will not execute
this thread continuously for more than 20ms, because the operating system TimeSlice time
period is set to 20ms.
When the operating system is not executing the Viewer thread, the CPU can execute any
other thread or remain idle (if there are no other active threads to execute). Remember, the
Visual Designer Period and TimeSlice parameters were created to prevent all threads from
being active at the same time to prevent 100% CPU usage.
During thread execution, the thread must handle its pending messages. For example,
the Viewer module must update any related screen objects. If there are no messages
pending, the thread deactivates itself and gives control back to the operating system. The
operating system immediately switches to the next active thread. In other words, a thread
can interrupt its own execution — even if the operating system TimeSlice time period has
not yet expired (which occurs frequently in real-world applications).
Note: The Database Spy, DDE Server, LogWin, and ODBC Runtime modules do not have
a TimeSlice parameter. Consequently, after each thread handles all of its pending
messages, the threads become inactive until the next Period message for each one of
the threads occurs.
The Background Task is the exception to the execution/switching process just discussed.
The mechanism for executing/switching the Background Task is described in the next
section.
Although the Alarm, Math, Scheduler, and Trend tasks are not threads, you can specify or
change their Period time in the Program Settings.ini file located in the Visual Designer
program directory.
The Period default values (in milliseconds) are as follows:
[Period]
Math=100
Sched=50
Alarm=100
Trend=1000
These values mean that every 100ms, Visual Designer generates a Period message to the
Math task. Every 50ms, Visual Designer generates a Period message to the Scheduler task,
and so on.
CAUTION
We strongly recommend that you do not modify the Background Task default values unless
it is absolutely necessary. Configuring any of these parameters incorrectly can cause your
entire system to malfunction (for example, CPU usage will go to 100%) and/or cause some
tasks to perform poorly.
If you must change the parameter defaults, note the values before making your changes so
if a malfunction occurs you can return to the original settings.
Keep in mind that the Background Task thread has the same priority as other threads in
Visual Designer (Drivers, Viewer, and so forth), which means that the operating system will
not execute this task continuously for more than 20ms.
The Background Task executes the Recipe and Report worksheets when the Recipe and
Report functions are called, respectively. Because the Recipe() and Report() functions
are synchronous, once the Background Task starts executing the functions, it will not switch
to another task (Alarm, Math, Scheduler, or Trend) until it completely executes the functions.
Executing a Recipe() or Report() function usually takes a few milliseconds.
The Background Task must switch between the Alarm, Math, Scheduler, and Trend tasks.
When Background Task switches to the Scheduler task, it will not switch to another task
(Alarm, Math, or Trend) until all Scheduler worksheets are executed. After executing all
Scheduler worksheets, the Background Task will not execute the Scheduler again until it
receives the next Period message for the Scheduler task.
The Background Task applies the same behavior when executing the Alarm and Trend tasks
— when the Background Task switches to the Alarm or Trend task, it will not switch to
another task until it handles all pending messages. So, the Background Task will not execute
the Alarm or Trend task again, until Visual Designer generates the next Period message for
each of these tasks.
The Background Task typically executes the Alarm, Scheduler, and Trend tasks in a few
milliseconds. However, it can take longer to execute the Math task because it usually
contains loops and complex scripts. Consequently, the mechanism used to execute the
Alarm, Scheduler, and Trend tasks cannot be applied to the Math task.
The Background Task executes the Math task for no more than 10ms continuously before
switching to other task (such as the Scheduler). The Background Task cannot execute
the Math task again for the next 50ms; however, the Background Task can execute other
tasks (Alarm, Recipe, Report, Scheduler, or Trend) during this 50ms period. After the
Background Task executes all of the Math worksheets, it will not begin a new scan of the
Math worksheets until Visual Designer generates a new Period message for the Math task.
It is important to re-emphasize that this process was created to prevent 100% CPU usage all
the time.
CAUTION
We recommend caution when using the Math function in a Scheduler worksheet or for a
screen object (such as the Command animation).
When the Scheduler task executes a Math() function, no other task can be executed by
the Background Task until the Scheduler executes the entire Math worksheet called by the
Math() function. This process can take several milliseconds or even seconds, depending on
how you configured the script in the Math worksheet (especially for loops).
If you configure a Math() function for a screen object, the Viewer stops updating the screen
until the Viewer executes the entire Math worksheet called by the Math() function.
If you must use the Math() function for the Scheduler task or a screen object, we
recommend using the following procedure to prevent process delays:
1. Specify one auxiliary tag with the value 1 and the Scheduler or Viewer task will send a
message to the Tags database to update this tag value.
2. Configure the tag in the Execution field of the Math worksheet to be executed. When
the Background Task scans the Math worksheet, Visual Designer will execute the
worksheet.
3. Reset the tag in the last line of the Math worksheet (write the value 0 to the auxiliary
tag).
As a result, the Background Task will not execute the Math worksheet in the next scan
unless the auxiliary tag is set to the value 1 again.
Installation
This section provides instructions for installing, starting, and uninstalling Visual Designer and
CEView.
System requirements
These are the minimum system requirements to install and run the Visual Designer
software.
Note: The requirements described below are based on typical projects. Depending on your
specific project, the requirements may vary:
• "Windows Embedded and Windows Mobile-compatible devices" includes a wide
variety of processors and feature sets, from smartphones to industrial displays.
Consult your vendor for the specific hardware requirements to run your project on
these devices.
• Some of the items listed as optional may be mandatory depending on your project.
For instance, if you need to exchange data with a PLC via a serial interface, then
the computer must have a serial COM port.
Development
To install and run the development application, you must have:
• A Windows-compatible computer with a standard keyboard, mouse, and SVGA display
• A Windows desktop or server operating system that is currently supported by Microsoft,
which at this time includes:
• Microsoft Windows XP Service Pack 3 or later
• Microsoft Windows Vista Service Pack 1 or later
• Microsoft Windows 7, all versions
• Microsoft Windows Server 2003 Service Pack 2 or later
• Microsoft Windows Server 2008, all versions
• Microsoft Internet Explorer 6.0 or later
• Minimum of 500MB free hard drive space
• Ethernet adapter or wireless networking
• CD-ROM drive (optional, to install the application; it can also be downloaded from our
website)
• USB port (optional, to be used with hard key licensing)
• Serial COM ports and adapters (optional, to be used for direct communication with
devices)
Note: Any station that has the development application installed can also run as a project
server and/or a project client.
Project Server
To run as a project server, you must have:
• A Windows or Windows Embedded-compatible computer
• A Windows desktop, server, or embedded operating system that is currently supported
by Microsoft, which at this time includes:
opening the Add or Remove Programs control panel (Start > Control Panel > Add
or Remove Programs).
For more information about Microsoft .NET Framework, see Database Appendix A:
Using ODBC Databases.
Installing CEView on Your Windows Embedded Device
CEView is the runtime engine for Visual Designer projects on Windows Embedded devices.
CEView must be installed on your device before you send your project to it.
Where the Files Are Located
Given the nature of Windows Embedded devices, each combination of OS version and
device processor has its own build of CEView. All of these builds are located in the following
directory:
[…]\EATON\Visual Designer\Redist\
The build for your specific device is located in the following directory:
[…]\EATON\Visual Designer\Redist\version\processor\
…where:
• version is the version of the operating system on the device where CEView will be
installed:
• The\WinCE 5.0 folder contains the files for Windows CE and Windows Mobile 5.0
or later; and
• The\WinEmbedded folder contains the files for Windows XP Embedded and
Windows Embedded 7.
• processor is the processor used by your Windows CE device. We provide a CEView
runtime for every processor that is currently supported by the Windows CE operating
system (e.g., Pocket2003-ArmV4, ArmV4i, x86). For more information, consult the
manufacturer's documentation for the device.
To install the files on your device, use the Remote Management tool in the development
application.
Installing via TCP/IP (Ethernet)
Note: We recommend using TCP/IP whenever possible.
To install CEView on a Windows Embedded device via a TCP/IP (Ethernet) connection:
1. Make sure your Windows Embedded device is connected to your network.
2. Turn on the device.
The Remote Agent dialog should open automatically. If it does not, then you must
manually install the file CEServer.exe on the device. The file is located here:
[…]\EATON\Visual Designer\Redist\version\processor\CEServer.exe
There are different ways to install the file — for example, you can use Microsoft
ActiveSync (for Windows 2000 and Windows XP) or Windows Mobile Device Center
(for Windows Vista) to communicate directly with the device or you can map the device
as a shared folder on your PC. For more information about copying and executing files,
consult the manufacturer's documentation for the device.
3. In the Remote Agent dialog, click Setup and then configure the communication settings
for the device's network connection. In particular, note the IP address of the device.
4. Start the development application on your PC.
5. On the Home tab of the ribbon, in the Remote Management group, click Connect. The
Remote Management dialog is displayed:
6. In the Target System group-box, select Network IP and then type the IP address of the
device.
7. Click Connect to establish a connection between the development application and the
device.
If the conncection is successful, then the device's specifications will be displayed in the
Platform text-box.
8. Click Install System Files to download the CEView files to the device.
9. When the installation is completed, click Disconnect.
For more information about downloading and running finished projects on the Windows
Embedded device, please see Remote Management.
Installing via Microsoft ActiveSync
To install CEView on a Windows Embedded device via Microsoft ActiveSync:
1. Make sure that Microsoft ActiveSync (for Windows 2000 and Windows XP) or Windows
Mobile Device Center (for Windows Vista) is installed on your PC.
2. Turn on the Windows Embedded device and connect it to your PC. Most devices should
be able to connect via USB.
3. Start the development application on your PC.
4. On the Home tab of the ribbon, in the Remote Management group, click Connect. The
Remote Management dialog is displayed.
5. In the Target System group-box, select Microsoft ActiveSync.
6. Click Connect to establish a connection between the development application and the
device.
If the conncection is successful, then the device's specifications will be displayed in the
Platform text-box.
7. Click Install System Files to download the CEView files to the device.
8. When the installation is completed, click Disconnect.
Note: In some cases, the Remote Management tool may not be able to connect via
Microsoft ActiveSync to a device running Windows CE 6.0 or later. This is because of
a problem in the default configuration of Windows CE 6.0. You can fix the problem by
using a small utility that is included with Visual Designer. The utility is located at:
[…]\EATON\Visual Designer\Redist\ActiveSyncUnlock.exe
Copy this file to the device using the stand-alone version of Microsoft ActiveSync
and then execute the file on the device. It doesn't matter where on the device the
file is located. (For more information about copying and executing files, consult the
manufacturer's documentation for the device.) When this is done, try again to use the
Remote Management tool to connect to the device.
For more information about downloading and running finished projects on the
Windows Embedded device, please see Remote Management.
CAUTION
Before starting the uninstall procedure, be sure to back-up any program files you may find
useful later. Also, be certain that you have a current (or newer) version of the Visual Designer
installation CD or diskettes so you can re-install the software later if necessary.
If you find it necessary to remove Visual Designer from your system, follow these
instructions:
1. From the Windows task bar, select Start > Settings > Control Panel to open the
Control Panel.
2. Double-click on the Add/Remove Programs icon in the Control Panel window.
3. When the Add/Remove Programs Properties dialog displays, select Visual Designer
from the list and click Add/Remove.
4. When the Confirm File Deletion dialog displays, click Yes.
The Uninstall Shield Wizard and the Remove Programs from Your Computer dialogs
display.
5. When the Uninstall successfully completed message displays and the OK
button becomes active, click OK.
Verify that Visual Designer is no longer listed in the Add/Remove Programs Properties
dialog.
6. Click the Cancel button or the close button ( ), to close the Add/Remove Programs
Properties dialog, then close the Control Panel window.
7. Open the Windows Explorer and browse to Visual Designer program directory.
8. Verify that all of the Visual Designer files and folders were deleted. (You must manually
delete any that remain.)
Note: The uninstall tool cannot delete files you created or modified in your Visual Designer
projects folder.
You must have administrator privileges to uninstall (and install) Visual Designer.
Licensing
Protection Types
Visual Designer and CEView support the following protection types:
Hardkey
An encapsulated chip that must be physically connected to the computer's parallel port
(LPT1) or USB interface.
The software license resides in the hardkey, and you cannot share this license
simultaneously with more than one other copy of software in the network. If you
connect the hardkey to another computer, then you effectively transfer the license to
that computer.
Using the parallel port hardkey does not prevent you from connecting another device
— such as a printer — to the port. The hardkey should be electronically transparent
to other devices connected to the parallel port. You simply connect the hardkey to
the computer and then connect the printer cable to the hardkey. However, you may
encounter problems if you install more than one hardkey (for different products) on the
same parallel port.
On the other hand, while using the USB hardkey, the USB port cannot be shared with
any other device.
CAUTION
Be careful when installing or removing a hardkey from the computer's parallel port. We
strongly recommend that you turn off the computer and disconnect it from the power
supply before installing or removing a hardkey.
Softkey
When you install Visual Designer or CEView, the program generates a unique code
called a Site Code. You can send this site code to your software vendor, who will then
generate a license code called a Site Key to match your site code. The site key installs
the Visual Designer or CEView license on your computer or Windows Embedded
device.
Note: When you use a softkey, Visual Designer records the license in the computer's
(or Windows Embedded device's) non-volatile memory. If this device is
damaged, you will lose the license.
License Settings
Both hardkey and softkey licenses set the following parameters:
Version
The overall version of the Visual Designer software, e.g., 6.1. (This does not include
the service pack, if any.)
Drivers
The number of direct communication drivers that can be simultaneously enabled.
Product Type
Specifies which features and restrictions are enabled for the application (e.g., the
maximum number of tags supported). Consult your software vendor about which
product types are available and which features are enabled for each type.
Execution Mode
Specifies one of the following options:
• Engineering Only: Can develop a Visual Designer project and then run it for short-
term testing only. You cannot use this license as a long-term runtime license.
• Runtime Only: Can run a Visual Designer project for an unlimited period. You
cannot use this license to develop or modify the project.
• Engineering + Runtime: Can develop a Visual Designer project and then run it for
an unlimited period.
For more information, see Execution Modes.
Importers
The list of third-party applications that can be handled by the Import Wizard.
Thin Clients
The number of Thin Clients that can connect simultaneously to the server. One
connection is included with every license. Contact your vendor to purchase additional
connections.
Secure Viewers
The number of Secure Viewer clients that can connect simultaneously to the server.
One connection is included with every license. Contact your vendor to purchase
additional connections.
SMA Clients
The number of Studio Mobile Access (SMA) clients that can connect simultaneously
to the server. One connection is included with every license. Contact your vendor to
purchase additional connections.
Execution Modes
Visual Designer and CEView support the following execution modes:
Evaluation Mode Y N
Demo Mode Y Y
Licensed for Engineering Only Y N
Licensed for Runtime Only Y Y
Licensed for Engineering + Runtime Y N
Evaluation Mode
Enables all of the product's engineering and runtime features.
The first time you install Visual Designer on a computer, the product runs for forty (40)
hours in Evaluation Mode. This evaluation period includes any time you run a product
module (engineering or runtime). You can use this evaluation period continuously or
not (for example: 10 hours a day for 4 days, 5 hours a day for 8 days, 10 hours a day
for 3 days plus 5 hours a day for 2 days, and so on).
After running for 40 hours in the Evaluation Mode the evaluation period terminates
and Visual Designer automatically converts to and runs in Demo Mode (see following
description) until you install a valid license (Hardkey or Softkey). You cannot reactivate
Evaluation Mode, even if you uninstall and then reinstall the product on your computer.
Note: Every version of Visual Designer has an evaluation period that is independent of
every other version. For example, if your Visual Designer version 6.1 evaluation
period expires and you are running in Demo Mode because you have not
installed a license, when you install Visual Designer version 6.1 on the same
computer, the newer version will begin its own 40-hour evaluation period and
the 6.1 version will continue running in Demo Mode only.
Demo Mode
Allows you to download projects to remote stations and to run projects for testing or
demonstration purposes. You can execute runtime tasks and use the debugging tools
(LogWin and Database Spy), but they shut down automatically after running for two
hours continuously. You can restart the Demo Mode again and run for another two
hours, and so on.
You cannot create or modify screens, worksheets, or project settings in Demo Mode.
Licensed for Engineering Only
Enables all workbench options for an unlimited time.
This mode also allows you to execute the runtime tasks and debugging tools
(Database Spy, Output window, and LogWin module) for 24 hours continuously.
After the 24-hour period these tasks shut down, but you can restart them again and
run for another 24 hours, and so on. You can use this license for development and
testing only.
Licensed for Runtime Only
Enables you to run all runtime and debugging tools (Database Spy, Output window,
and LogWin module) for unlimited time, but you cannot create or modify screens and/
or worksheets.
The menu options available in Runtime Only mode are the same as the options listed
for Demo Mode (see previous table).
Licensed for Engineering + Runtime
Enables all engineering tools, runtime tasks, and debugging tools (Database Spy,
Output window, and LogWin module) for an unlimited period of time.
Note: The Remote Management tool (Connect on the Home tab of the ribbon) is always
available, regardless of execution mode, so that you can upload files from or
download files to remote stations.
To see which execution mode you are currently running, click About on the Help tab of the
ribbon; the About dialog shows the execution mode, including the time remaining if you are
in Evaluation Mode.
Product Versions
Visual Designer and CEView should both have the same version number, which uses the
syntax X.Y+SPWW (for example, Visual Designer v7.0 and CEView v7.0), where:
• X represents the Family version. The Family version changes only when major
enhancements are added to the product technologies and concepts.
• Y represents the Sub-version: The Sub-version changes when minor enhancements
and/or new features are added to the product.
• WW represents the Service Pack. The Service Pack version changes when you must
install add-on packages to accomplish the following:
• Upgrade files for the version previously installed
• Fix bugs in the product (showstoppers and no-workarounds)
• Provide minor enhancements before releasing the next version of the product
Each Service Pack release supersedes the previous Service Pack release. For example,
SP2 includes all the contents of SP1 and all newly upgraded files, bug fixes, and
enhancements. SP3 includes all the contents of SP2 and all new upgraded files, bug
fixes, enhancements and so on.
Both Visual Designer and CEView can execute projects built in previous versions of the
product. However, older versions of Visual Designer and CEView cannot execute projects
built or modified in newer versions of the product.
For example, you cannot execute version 6.1 projects using Visual Designer version 6.0 but
you can execute version 6.0 projects with Visual Designer version 6.1.
IMPORTANT
We issue each license for a specific Family version and Sub-version (X.Y), and the license
is valid for that version (including Service Packs) only. The license is not valid for a newer
Family version or Sub-version of the product. Therefore, if you install a new version of Visual
Designer or CEView, then you must upgrade your license to the new version being installed.
If you install a Service Pack only, then you do not need to upgrade your license.
CAUTION
Be careful when you connect or remove a hardkey on a parallel port. We strongly
recommend that you turn off the computer and disconnect it from the power supply
before connecting or removing the hardkey.
3. Run the software.
If the software recognizes the hardkey, then it will run normally without any alert messages.
However, if it does not, then try the following:
• For Visual Designer, use the Protection Manager utility to make sure the software is set
to check for a hardkey. (See Upgrading the Current Hardkey License on page 38.)
• For CEView, if the software does not recognize the hardkey, then it will automatically
check for a softkey. If it does not find a softkey either, then use the Remote Agent utility
on the Windows Embedded device to diagnose the problem. (See Installing or Upgrading
a CEView License (Locally) on page 41.)
Please note that not all Windows Embedded devices can recognize the USB hardkey
technology used by Eaton; our internal testing has shown only Windows Embedded
devices that fully support USB flash memory (a.k.a. "thumb drives" or "memory sticks")
will recognize our USB hardkey. Check with the manufacturer of your Windows
Embedded device.
• If you do not have a valid hardkey connected to the computer's parallel port (LPT1) or
USB interface, the following error message displays:
• If you do have a valid hardkey connected to the computer's parallel port (LPT1) or
USB interface, the Hardkey Settings dialog displays, which contains the current
license settings recorded on the hardkey.
5. Click the Change License button to open the Change License – Hardkey dialog:
6. Copy the code from the Site Code text box and send it to your software vendor.
7. Your software vendor should send back a Site Key to match the Site Code. Type this site
key into the Site Key field of the Change License – Hardkey dialog and then click the
Authorize button.
You will be prompted to confirm the operation. If the program accepts (validates) your
site key, the following message displays:
Note: If your new Site Key is not valid, an error message displays. If this happens,
double-check that you entered the Site Key correctly. If you entered the key
correctly and still receive an error message, contact your software vendor for
assistance.
You can upgrade any license setting (ProductType, Execution Mode, or Number of Thin
Clients) simultaneously supported by the server, or upgrade the software version that is
being supported currently. The upgrade cost will depend on your current license settings and
the settings of the upgrade license.
Note: If you already have a hardkey license installed on your computer, then you will be
asked to confirm the change of protection type.
The Softkey Settings dialog displays:
• If you already have a valid Visual Designer softkey license installed, then the current
license settings display.
• If you have not previously installed a license on your computer, then the Status text
box displays a "License not found" message.
Your software vendor will send back a Site Key that matches this Site Code. Type the
Site Key into the Site Key field of the Change License – Softkey dialog and then click
the Authorize button.
You will be prompted to confirm the operation. If the program accepts (validates) your
Site Key, the following message displays:
Note: If your new Site Key is not valid, an error message displays. If this happens,
double-check that you entered the site key correctly. If you entered the key
correctly and still receive an error message, contact your software vendor for
assistance.
6. Close the Protection Manager and run Visual Designer.
After installing Visual Designer on the Win2K/XP/Vista computer, the Remote Agent
program file (CEServer.exe) is stored in the following path:
[…]\EATON\Visual Designer\Redist\version\processor\Bin
\CEServer.exe
…where:
• version indicates the operating system version.
• processor is the Windows Embedded device processor type (for example, x86).
Note: In some Windows Embedded devices, the \Non-Volatile Folder points to a
FlashCard memory that is connected to the device. Also, before downloading the
Remote Agent program (CEServer.exe) to your Windows Embedded device, be
sure it is not already loaded in the \Non-Volatile Folder.
Note:
• There are two ways to download the Remote Agent program (CEServer.exe)
to a Windows Embedded device:
• You can use the Microsoft ActiveSync® utility to download/upload files
from a Win2K/XP/Vista station to a Windows Embedded device. You can
download ActiveSync from the Microsoft Web site at no charge.
• You can use the following command syntax to map a shared folder from a
Win2K/XP/Vista computer to most Windows Embedded devices:
3. If you are upgrading a hardkey license, make sure the hardkey is connected to the
device.
4. From the Remote Agent dialog, click the Setup button to open the Setup dialog:
6. Click the Change License button to open the Change License dialog:
• Copy the site code information (provided in the Site Code field) and send it to your
software vendor.
• Your software vendor will send back a Site Key that matches this site code. Type
the Site Key into the Site Key field on the Change License dialog, and click the
Authorize button.
If the Site Key is accepted (validated), the following message displays:
Note: If the new site key is not validated, an error message displays. If this happens,
double-check that you entered the site key correctly. If you typed the key correctly
and get an error message, contact your software vendor for further assistance.
2. In the Setup dialog, specify the Device Connection type by clicking (enabling) the Serial
Port or TCP/IP radio button. (If you enable Serial Port, you also must select a port from
the combo-box list). Click OK to close the dialog.
3. Connect your development workstation to the Windows Embedded device using either a
serial or TCP/IP link.
4. Run the Visual Designer development application.
5. On the Home tab of the ribbon, in the Remote Management group, click Connect. The
Remote Management dialog is displayed:
6. Specify a target system by clicking one of the following radio buttons in the Target
System:
• Network IP, and then type the IP address into the field provided
• Serial Port, and then select a port from the combo-box list provided
• Microsoft ActiveSync
Note: You cannot upgrade a CEView hardkey license via Microsoft ActiveSync.
7. When the Connect button becomes active, click the button to connect to the Windows
Embedded device on which the Remote Agent is running. (If you select Network IP,
then you must also enter the IP address in the text box provided.)
Note: TCP/IP links provide better communication performance than serial links.
The Status field must display the following message: Connected to CEView
version
8. Select the Embedded License tab to see which license settings are currently installed
on your Windows Embedded device.
9. From the License Codes section, copy the information from the Site Code field and
send it to your software vendor.
• Your software vendor will send you a Site Key that corresponds to this Site Code.
Type this site key into the Site Key field.
• Click the Send button to send the code to the Remote Agent running on the
Windows Embedded device.
The Remote Agent program will attempt to install the new license using the site key
sent from the Remote Management tool. If the site key is accepted (validated), then a
confirmation message is displayed.
Note: If the new site key is not valid, an error message will display. If this happens,
double-check that you typed the Site Key correctly. If you entered the Site Key
correctly and still receive an error message, contact your software vendor for
further assistance.
CAUTION
After sending the license to the Windows Embedded device, be sure to save its registry
settings. If you do not save these settings, you will lose the license after rebooting the
device.
Application button
The Application button opens a menu of standard Windows application commands like New,
Open, Save, Print, and Close.
Recent Projects
The Recent Projects area of the Application menu lists the most recently opened projects.
To open one of the listed projects, simply click it.
New
The New command on the Application menu is used to create a new worksheet file or
project.
The New dialog (see the following figures) contains two tabs:
• File tab: Select this tab to create new worksheets or screens for an open project.
• Project tab: Select this tab to create a new project.
Instructions for creating new files and projects follow.
Creating a New File
To create a new worksheet or screen:
1. Click the File tab.
be automatically displayed in the Location box. To save your project in another location,
click Browse and then select a folder.
4. Select a Target platform.
5. Click OK to continue to the Project Wizard dialog.
6. In the Resolution box, select a screen resolution. If you select Custom, then also type
the width and height in pixels.
7. To share tags with another PC-based control application, select the application type from
the list and click the Configure button. (Each type has its own configuration options;
please consult the application vendor.) Otherwise, leave it set to <None>.
8. Click OK when you're done.
For a more detailed walkthrough, see Creating a New Project.
Open Project
The Open Project command on the Application menu is used to open a saved project.
Selecting the command opens a standard Windows Open dialog, which you can use to
locate and open the project file (*.app).
Open
The Open command on the Application menu is used to open a saved worksheet file.
Selecting the command opens a standard Windows Open dialog, which you can use to
locate and open the worksheet file. The application can open many different file types, so
use the File type combo-box to filter the files.
Save
The Save command on the Application menu is used to save the active screen or
worksheet.
The command becomes available only after you modify the worksheet in some way.
Save As
The Save As command on the Application menu is used to open a save the active screen or
worksheet at another location.
Save All
The Save All command on the Application menu is used to save all open worksheet files.
The command becomes available only after you modify the a worksheet in some way.
Save as HTML
The Save as HTML command on the Application menu is used to save the active screen in
HTML format.
After saving, the file can be found in the Web folder in the Project Explorer. For more
information, see Deploying your project as a Web application.
Print
The Print command on the Application menu is used to print the active screen or worksheet.
Selecting the command opens a standard Windows Print dialog, which you can use to
adjust the print range and the number of copies.
Print Preview
The Print Preview command on the Application menu is used to see what the active
worksheet would look like when it is printed.
Use the buttons located along the top of the Print Preview window as follows:
• Click Print to open the Print dialog and print the screen or worksheet.
• Click Next Page to view the next page in a series of pages.
• Click Prev Page to view the previous in a series of pages.
• Click Two Page to view two pages at a time.
Note: The Next Page, Prev Page, and Two Page buttons become active only when you
are printing more than one page.
• Click Zoom In to check details.
• Click Zoom Out to change back to the default size.
Note: The Zoom Out button becomes active after you Zoom In.
• Click Close to close the Print Preview window.
Print Setup
The Print Setup command on the Application menu is used to configure the options (e.g.,
paper size, print orientation) for a selected printer.
Selecting the command opens a standard Windows Print Setup dialog:
4. A check displays next to Set As Default indicating the selected printer is the
default.
Close
The Close command on the Application menu is used to close the active screen or
worksheet.
When you select this command, you will be prompted to save your changes before closing.
Close All
The Close All command on the Application menu is used to close all open screens and
worksheets.
When you select this command, you will be prompted to save your changes before closing.
Exit
The Exit command on the Application menu is used to close all open screens and
worksheets, save the project database, and then exit the application.
When you select this command, you will be prompted to save your changes before closing.
Note: Selecting this command is the same as clicking the Close button on the title bar.
3. In the Choose commands from menu, select the appropriate Ribbon tab. The
commands from that tab are displayed in the Commands list.
4. In the Commands list, select the command that you want to add to the Quick Access
Toolbar.
5. Click Add.
Only commands can be added to the Quick Access Toolbar. The contents of most lists, such
as indent and spacing values and individual styles, which also appear on the ribbon, cannot
be added to the Quick Access Toolbar.
Ribbon
The new ribbon combines the numerous menus and toolbars from the previous version of
Visual Designer into a single, user-friendly interface. Almost all application commands are
now on the ribbon, organized into tabs and groups according to general usage.
Home tab
The Home tab of the ribbon is used to manage your project within the development
environment.
• Local Management: Run and stop the project on the local station (i.e., where the
development application is installed), as well as manage the execution tasks.
• Remote Management: Connect to a remote station (e.g., a Windows Embedded device)
so that you can download the project to it, and then run, stop, and troubleshoot the
project on that station.
• Tools: Miscellaneous tools to verify the project, import tags from other projects, convert
screen resolutions, and register ActiveX and .NET controls.
• Tags: Manipulate tags and tag properties in the project database.
View tab
The View tab of the ribbon is used to customize the look of the development environment
itself.
Insert tab
The Insert tab of the ribbon is used to insert new tags, screens, worksheets, and other
components into your project.
Project tab
The Project tab of the ribbon is used to configure your project settings.
• Settings: Configure the general project settings, and also set the project to run as a
Windows service.
• Security System: Enable and configure the project security system.
• Web: Configure the project to accept connections from thin clients and mobile devices,
and also configure outgoing email and FTP.
Graphics tab
The Graphics tab of the ribbon is used to draw project screens.
Note: This tab is available only when you have a project screen open for editing.
The tools are organized into the following groups:
• Screen: Configure settings for the project screen itself, such as its attributes, script, and
background color or image.
• Editing: Select and edit objects in the project screen.
• Shapes: Draw static lines and shapes.
• Active Objects: Draw active objects, like buttons and check boxes.
• Data Objects: Draw objects that display historical data, like alarms, events, and trends.
• Libraries: Select from libraries of premade objects, such as symbols, .NET and ActiveX
controls, and external picture files.
• Animations: Apply animations to other screen objects.
Format tab
The Format tab of the ribbon is used to format and arrange objects in a project screen.
Note: This tab is available only when you've selected one or more objects in a project
screen.
The tools are organized into the following groups:
• Arrange: Arrange objects in a project screen, including bring to front and send to back,
group, align, and rotate.
• Position: Precisely adjust the position of a screen object in a project screen.
• Size: Precisely adjust the size of a screen object.
• Style: Change the fill and line color of a screen object.
• Fonts: Change the caption font of a screen object.
Help tab
The Help tab of the ribbon provides additional help with using the software.
Project Explorer
The Project Explorer organizes all of the screens, worksheets, and other components that
make up your project and presents them in an expandable tree-view.
Click the Expand icon or double-click the folder to view the contents of the folder. Click the
Collapse icon to close the folder.
If you right-click on any component in the Project Explorer, a shortcut menu is displayed
with options for that component.
Global tab
The Global tab of the Project Explorer contains the project tags database, as well as other
features that apply to the entire project such security and UI translation.
The folders on the Global tab are described on the following pages:
• Project Tags contains tags you create during project development (such as screen tags
or tags that read from/write to field equipment).
• Classes contains compound tags, called class tags, created to associate a set of values
(rather than a single value) with an object.
• Shared Database contains tags that were created in a PC-based control program and
then imported into the project tags database.
For example you can import SteepleChase tags into your project so that it can read/write
data from a SteepleChase PC-based control product.
• System Tags contains predefined tags with predetermined functions that are used by
the project for specific, supervisory tasks (for example, Date tags hold the current date in
string format).
All system tags are read-only, which means you cannot add, edit, or remove these tags
from the database.
• Security contains all of the group and individual user security accounts configured for the
current project.
• Procedures contains VBScript functions and sub-routines that can be called by any other
script in the project.
• Event Logger contains logging and event-retrieval features.
• Translation contains the translation worksheet that defines how your project's user
interface should be translated into another language.
Graphics tab
The Graphics tab of the Project Explorer contains all of the screens, screen groups, and
symbols in your project.
The folders on the Graphics tab are described on the following pages:
• Screens contains all of the screens created for the current project.
• Screen Group contains the entire screen groups (individual screens combined into
manageable groups) created for the current project.
• Web Pages contains all of the Web pages (i.e., screens saved in HTML format) created
for the project.
• Mobile Access allows configuration of the mini-site that is targeted to cell phones,
PDAs, and other mobile devices.
• Project Symbols contains all of the user-defined symbols, which can be groups of
images and/or text. You can create custom symbols for the project and save them into
this folder.
• Graphics Script contains predefined functions that are executed when certain screen
actions occur, such as when the Thin Client is launched on a remote station.
• Symbols contains the library of common symbols and graphics provided with the
project. Double-click the Library icon to open the Symbol Library.
• Layout displays all screens currently open in the Screen Editor and allows you to
visualize how the screens fit together during runtime.
Tasks tab
The Tasks tab of the Project Explorer organizes the worksheets that are processed as
background tasks during project runtime.
The folders on the Tasks tab are described on the following pages:
• Alarms contains the Alarm worksheets used to configure alarm groups and the tags
related to each alarm group in the project. You also use the Alarm task to define the
alarm messages generated during project runtime.
• Trend contains the Trend worksheets used to configure history groups that store trend
curves for the project. You can use the Trend task to declare which tags must have their
values stored on disk, and to create history files for trend graphs. Your project stores the
samples in a binary history file (*.hst), and displays both history and on-line samples in a
trend graph screen.
• Recipes contains the Recipe worksheets used to configure how data is exchanged
between the project database and disk files in ASCII or DBF format, and how values are
transferred between files and real-time memory.
• Reports contains the Report worksheets used to configure reports (text type) that are
sent to a printer or a disk. Reports tasks allow you to configure text reports with system
data, which makes report creation easier and more efficient.
• ODBC contains the ODBC worksheets used to configure how the ODBC interface runs in
a network environment and uses standard Windows ODBC configuration. You configure
ODBC tasks to exchange data between your project and any database supporting the
ODBC interface.
• Math contains the Math worksheets used to configure and implement additional
routines to work with different tasks. Your project executes Math worksheets as
Background Tasks during runtime. You can configure Math worksheets to provide free
environments for logical routines and mathematical calculations required by the project.
• Script contains the Startup Script and other Script Groups.
• Scheduler contains the Scheduler worksheets used to configure events using defined
mathematical expressions, which are executed according to time, date, or other
monitored event.
• Database/ERP contains the Database worksheets that communicate with external
databases using the standard ADO.NET interface (as an alternative to ODBC).
Comm tab
The Comm tab of the Project Explorer organizes the worksheets that establish
communication with another device or software using available protocols.
The folders on the Comm tab are described on the following pages.
• Drivers contains the Driver worksheets used to configure a communication interface (or
interfaces) between the project and remote equipment (such as a PLC or transmitters).
A communication driver is a .DLL file that contains specific information about the remote
equipment and implements the communication protocol.
• OPC contains the OPC worksheets used to configure OPC interfaces between your
project and an OPC Server. An OPC Client module enables your project to communicate
with any device that acts as an OPC Server by implementing the OPC standard described
in theOLE for Process Control Data Access Standard Version 2.0 document published by
the OPC Foundation.
• OPC UA contains the OPC UA worksheets that are used to connect to OPC Servers via
the new OPC Unified Architecture protocol.
• OPC Xi contains the OPC Xi worksheets that are used to connect to OPC Servers via the
new OPC Express Interface protocol.
• TCP/IP contains the TCP/IP worksheets used to configure TCP/IP Client interfaces for
other Visual Designer stations.
Visual Designer TCP/IP Client and Server modules enable two or more projects to keep
their databases synchronized using the TCP/IP protocol.
• DDE contains the DDE worksheets used to configure a DDE Client for a DDE Server
application (such as Microsoft Excel or any other Windows program that supports this
interface).
DDE (Dynamic Data Exchange) is a protocol that enables dynamic data exchange
between Windows applications. A DDE conversation is an interaction between server
and client programs. Visual Designer provides interfaces that run as clients or as servers.
Screen/Worksheet Editor
Use the powerful, object-oriented screen editor to create and edit a variety of screens and
worksheets for your projects. You can input information using your mouse and keyboard,
output control data to your processes, and automatically update screens based on data input
from your processes.
Database Spy
The Database Spy window is a debugging tool that allows you to: monitor and force values
to project tags; execute and test functions; and execute and test math expressions.
• DB tabs: The windows is divided into multiple sheets, so that you can keep your items
organized.
• Scroll bars: Use to view areas of the Database Spy that are obscured from view because
of the window size or the size of the current sheet.
Note: The Database Spy is dockable, which means you can move it to another location in
the development environment. Click on the titlebar and drag it to a new location.
Release the mouse button to attach or dock the window to its new location.
Output (LogWin)
You can use the Output window to view debugging messages generated during project
runtime. The window displays OPC, DDE, and TCP/IP transactions, module activation, trace
tags, and so on.
2. In the Log Options tab of the dialog, select the specific types of messages that you
want the log to show.
Option Description
Field Read Commands and Field Write Show any read and/or write commands that are sent
Commands to connected devices.
Protocol Analyzer Show messages generated by configured device
drivers.
OPC Messages Show messages generated by OPC communications.
TCP/IP Messages Show messages generated by TCP/IP
communications.
Recipe/Report Show messages generated by the Recipe and Report
tasks.
Display Open/Close Display a message whenever a screen is opened or
closed.
Logon/Logout Display a message whenever a user logs on or logs
out. (For more information, see Security.)
Trace Messages Show messages generated by the Trace()
function. This function is used to generate
customized messages from within your project.
Database Messages Show messages generated by the ODBC and
ADO.NET database interfaces.
DDE Messages Show messages generated by DDE communications.
Insert date/time Timestamp each message.
3. In the Log Tags tab of the dialog, click Add to browse for project tags.
The Output window will display a message whenever the value of a selected tag
changes.
4. Click OK to save your settings and close the Log Settings dialog.
Title Bar
The Title Bar located along the top of the development environment displays the application
name (e.g., Visual Designer) followed by the name of the active screen or worksheet (if any).
The Title Bar also provides the following buttons (from left to right):
• Minimize button : Click to minimize the development environment window to the
Taskbar.
• Restore Down / Maximize: Click to toggle the development environment window
between two sizes:
• Restore Down button reduces the window to its original (default) size.
• Maximize button enlarges the window to fill your computer screen.
• Close button : Click to save the database and then close the development
environment. If you modified any screens or worksheets, the application prompts you
to save your work. This button's function is similar to clicking Exit Application on the
Application menu.
Note: Closing the development environment does not close either the project viewer or
the runtime system, if they are running.
Status Bar
The Status Bar located along the bottom of the development environment provides
information about the active screen (if any) and the state of the application.
The Status Bar fields (from left to right) are described in the following table:
Field Description
Execution Mode The current execution mode of the application.
CAP Indicates whether the keyboard Caps Lock is on (black) or
off (grey).
NUM Indicates whether the keyboard Num Lock is on (black) or
off (grey).
SCRL Indicates whether the keyboard Scroll Lock is on (black) or
off (grey).
Object ID The ID number of a selected screen object.
Cursor Position The location of the cursor on the active screen or worksheet.
If it's a screen, then the position of the mouse cursor is
given as X,Y coordinates, where X is the number of pixels
from the left edge of the screen and Y is the number of
pixels from the top edge of the screen. If it's a worksheet,
then the position of the text cursor is given as Line and
Column.
Object Size The size (in pixels) of a selected screen object, where W is
the width and H is the height.
No DRAG Indicates whether dragging is disabled (No DRAG) or
enabled (empty) in the active screen.
Field Description
Tag Count The total number of tags used so far in the project.
[Application]
DefaultDirectory=filepath
5. Select a license level from the Target platform list, to indicate the platform on which
you will be running this project.
Note: To check the license level on your workstation, exit from the development
application and then open the Protection Manager (Start > All Programs >
EATON > Register).
IMPORTANT
If you try to open or develop an project that was originally developed using a higher
license level than exists on your current workstation, the development application will
prevent you from opening the project and put you into Demo mode.
To correct this situation, click Target System on the Project tab of the ribbon. (The menu
displays only those target systems that you are licensed to use.) Select one of these to
accomodate your current license level.
Although you can change your license level later, we recommend that you verify and
select the correct license level now, so you will not waste time developing projects
requiring a license level you are not authorized to use on the runtime device.
Also, we recommend developing for the lowest license level if you will be running your
project on multiple computers with different licenses.
6. When you are finished configuring the Project tab, click OK to continue to the Project
Wizard dialog.
7. Use this dialog to select a template, set the default screen resolution, and to indicate that
you want to share tags with another software product database such as Steeplechase or
ISaGRAF.
Instructions for using these features are provided in the following sections.
8. Click OK when you're done. Your new project is opened and ready for editing.
Specifying a Default Screen Resolution
Use the Resolution list box to select a default resolution (display size) for your project's
screens.
If you select Custom, then also enter the screen Width and Height (in pixels).
Note: You can adjust the resolution of your screens after you've created them by clicking
Convert Resolution on the Home tab of the ribbon.
Information tab
Use the following parameters to identify the project (for documentation purposes only).
• Description
• Revision
• Company
• Author
• Field Equipment
• Notes
Options tab
Use this tab to specify parameters relating to your project in general.
CAUTION
If you specify a Target System level that does not match the actual license level on the
target system, then your project may not run properly.
• Resolution: Displays your project's screen resolution.
• Alarm History and Events: Type a value into the History Life Time (days) field to specify
how long to keep alarm and event history files. After the specified number of days, the
project automatically deletes existing alarm/event history files that are older than the
period specified. If you type zero in this field, the project does not delete any history files
automatically. In such a case, you should create an external procedure to clean the old
history files; otherwise, the free memory in the computer will eventually be depleted.
• History Format: Select the format of the Alarm/History event, as follows:
Format Description
Proprietary Saves the history data in the Alarm sub-folder of your project folder (by default) in text
files using the proprietary format.
Database Saves the history data in the SQL Relational Database specified by the user, using the built-
in ADO interface.
Binary Saves the history data in the Alarm sub-folder of your project folder (by default) in binary
files using the proprietary format.
• Default Database: Allows you to configure a Default Database, which can be shared by
different tasks and objects. See Configuring a Default Database for All Task History for
more information.
• Shared Tags pane: Select a third-party software from the combo-box. Click the
Configure button to configure the settings for importing tags from one of the following
data sources into the Shared Database folder:
• <None>: Does not share tags with any external software
• First ISaGRAF: Import tags from a First ISaGRAF project into the Shared Tags folder
of the current project, and, if enabled, configure the communication interface with the
ISAGR driver automatically.
• ISaGRAF: Import tags from a ISaGRAF project into the Shared Tags folder of the
current project, and, if enabled, configure the communication interface with the
ISAGR driver automatically.
• Think & Do: Import tags from a Think & Do project into the Shared Tags folder of the
current project, and, if enabled, configure the communication interface with the TND
driver automatically.
• SteepleChase: Import tags from a SteepleChase project into the Shared Tags folder
of the current project, and configure the communication interface with the VLC driver
automatically.
• SixNet: Import tags from a SixNet project into the Shared Tags folder of the
current project, and configure the communication interface with the SNET driver
automatically.
• OpenControl: Import tags from an OpenControl project into the Shared Tags folder
of the current project, and configure the communication interface with the OC driver
automatically.
• Straton: Import tags from a Straton project into the Shared Tags folder of the
current project, and configure the communication interface with the STRAT driver
automatically.
Note: PC-based control has its own, customized interface that requires you to provide
information about the PC-based control application in order to share tags with the
Visual Designer project.
The Alarm History and Events interface allows you to configure the following settings:
Field Remarks Syntax
History Life Time (days) The history for alarm/event messages older than the number of days specified in this field Number
are automatically deleted, following a FIFO (First-In, First-Out) behavior. If this field is left in
blank, the history of alarms/events are not deleted automatically.
History Format Defines the format of the history of alarms/events: Combo-box
• Proprietary: Saves the history in the proprietary format. The alarm messages are saved
in a text file with the name ALyymmdd.ALH, where:
• yy is the last two digits of the current year.
• mm is the month.
Alarm Database When selecting Database as the format for the history of alarms, the specific settings to —
interface with the third-party SQL Relational Database can be configured by the dialog
launched when pressing this button. For further details about support for third-party SQL
Relational Databases, see Database Interface.
When saving the alarm history in the proprietary format, each alarm event is saved in a new
line, using the pipe character ( | ) to delimiter the different fields, as illustrated below:
P1|P2|P3|P4|P5|P6|P7|P8|P9|P10|P11|P12|P13|P14|P15|P16|P17|P18|P19|
P20|P21
P1|P2|P3|P4|P5|P6|P7|P8|P9|P10|P11|P12|P13|P14|P15|P16|P17|P18|P19|
P20|P21
.
.
P1|P2|P3|P4|P5|P6|P7|P8|P9|P10|P11|P12|P13|P14|P15|P16|P17|P18|P19|
P20|P21
The format of the history both in proprietary format and in the SQL Relational Database
format is described in the following table:
Proprietary SQL Relational Database
Field No. Field Name Field Type Remarks File Vers.
— Last_Update Date/Time Timestamp of the last update for this event. 003
— Last_Update_ms Number Number of milliseconds for the Last Event timestamp. This 003
field is used when the database does not support ms in a
TimeStamp field.
See also:
• SQL Relational Databases
• Studio Database Gateway
Please refer to Database Configuration dialog for help completing the fields in this window.
Database Configuration
The Database Configuration dialog allows you to configure the necessary settings to link
Visual Designer to an external database file.
• Database combo-box: Allows you to select either Primary or Secondary. With Primary, all
settings displayed in the Database Configuration window apply to the Primary Database
interface. Otherwise, they apply to the Secondary Database interface. You can configure
the Secondary database in the following modes:
• Disabled: In this mode, Visual Designer saves data in the Primary Database only. If
the Primary Database is unavailable for any reason, the data is not saved anywhere
else. This option may cause loss of data if the Primary Database is not available.
• Redundant: In this mode, Visual Designer saves data in both Primary and Secondary
Databases. If one of these databases is unavailable, Visual Designer keeps saving
data only in the database that is available. When the database that was unavailable
becomes available again, Visual Designer synchronizes both databases automatically.
• Store and Forward: In this mode, Visual Designer saves data in the Primary
Database only. If the Primary Database becomes unavailable, Visual Designer saves
the data in the Secondary Database. When the Primary Database becomes available
again, Visual Designer moves the data from the Secondary Database into the Primary
Database.
Note: The Primary and Secondary can be different types of databases. However, they
must have the same fields.
Using the Secondary Database, you can increase the reliability of the system and use
the Secondary Database as a backup when the Primary Database is not available. This
architecture is particularly useful when the Primary Database is located in the remote
station. In this case, you can configure a Secondary Database in the local station to save
data temporarily if the Primary Database is not available (during a network failure, for
instance).
• Use project default checkbox: When this option is checked, Visual Designer uses
the settings configured in the Default Database for the task that is being configured
(Connection string, User name, Password, Retry Interval and Advanced Settings). When
this option is not checked, you can configure these settings individually to the current
task.
• Connection string field: This field defines the database where Visual Designer will write
and read values as well as the main parameters used when connecting to the database.
Instead of writing the Connection string manually, you can press the browse button (…)
and select the database type from the Data Link Properties window.
Note: The list of Database Providers shown in the Data Link Properties window depends
on the providers actually installed and available in the computer where you are
running Visual Designer. Consult the operating system documentation (or the
database documentation) for further information regarding the settings of the
Provider for the database that you are using.
• User name field: User name used to connect to the database. The user name configured
in this field must match the user name configured in the database.
• Password field: Password used to connect to the database. The password configured in
this field must match the password configured in the database.
• Retry Interval field: If Visual Designer is unable to connect to the database for any
reason, it retries automatically to connect to the database after the number of seconds
configured in this field have passed.
• Advanced button: After pressing this button, you have access to customize some
settings. For most projects, the default value of these settings do not need to be
modified and should be kept.
• Milliseconds combo box: You can configure how the milliseconds will be saved
when saving the date in the database. Each database saves the date in different
formats; for example, some databases do not support milliseconds in a Date field.
The following options are available:
• Default: Uses the format pre-defined for the current database. The databases
previously tested by Eaton are previously configured with the most suitable
option. When selecting Default, Visual Designer uses the setting pre-configured
for the current database type. If you are using a database that has not been
previously configured, the Default option attempts to save the milliseconds in a
separate field.
Note: The default option for each database is configured in the StADOSvr.ini
file, stored in the \BIN sub-folder of Visual Designer. See Studio Database
Gateway for information about how to configure the StADOSvr.ini file.
• Disable: Does not save the milliseconds at all when saving the date in the
database.
• Enable: Saves the milliseconds in the same field where the date is saved.
• Separate Column: Saves the milliseconds in a separated column. In this case,
the date is saved in one field (without the milliseconds precision) and the number
of milliseconds is saved in a different column. This option is indicated where you
want to save timestamps with the precision of milliseconds but the database that
you are using does not support milliseconds for the Date fields.
• Save time difference checkbox: When this option is checked (default), Visual
Designer saves the Time Zone configured in the computer where the project is
running in each register of the database. This option must be enabled to avoid
problems with daylight savings time.
• Database Gateway: Enter the Host Name/IP Address where the Visual Designer
Database Gateway will be running. The TCP Port number can also be specified, but if
you are not using the default, you will have to configure the Visual Designer Database
Gateway with the same TCP Port. See the Studio Database Gateway section for
information about how to configure the advanced settings for the Visual Designer
ADO Gateway.
• Disable Primary Keys: For some modules, Visual Designer will try to define a
primary key to the table in order to speed up the queries. If you are using a database
that does not support primary keys (e.g., Microsoft Excel), then you should select
(check) this option
Table Pane
This area allows you to configure the settings of the Table where the data will be saved. All
tasks can share the same database. However, each task (Alarm, Events, Trend worksheets)
must be linked to its own Table. Visual Designer does not check for invalid configurations on
this field, therefore you should make sure that the configuration is suitable for the database
that you are using.
• Use default name checkbox: When this option is checked (default), Visual Designer
saves and/or retrieves the data in the Table with the default name written in the Name
field.
• Automatically create checkbox: When this option is checked (default), Visual Designer
creates a table with the name written in the Name field automatically. If this option is not
checked, Visual Designer does not create the table automatically. Therefore, it will not
be able to save data in the database, unless you have configured a table with the name
configured in the Name field manually in the database.
• Name: Specifies the name of the Table from the database where the history data will be
saved.
Note: To specify a sheet in a Microsoft Excel spreadsheet file, use the following syntax:
[sheetname$]
• Refresh button: If the database configured is currently available, you can press the
Refresh button to populate the Name combo-box with the name of the tables currently
available in the database. In this way, you can select the table where the history data
should be saved instead of writing the Table name manually in the Name field.
Run-Time Pane
This area allows you set runtime values. The following fields are available:
• Status (output) checkbox: The tag in this field will receive one of the following values:
Value Description
0 Disconnected from the database. The database is not available; your configuration is incorrect or
it is an illegal operation.
1 The database is connected successfully.
2 The database is being synchronized.
• Reload (output): Specify a reload tag if you are using curly brackets in any of the
configuration fields. When you want to reconnect to the database using the updated
values on your tags, set the tag on this field to 1. Visual Designer will update the
configuration when trying to perform an action in the database, setting the tag back to 0
when it is finished.
See also:
Configuring a Default Database for All Task History.
Viewer tab
Use this tab to configure the project viewer and change certain runtime behaviors.
• Titlebar checkbox and text field: Click (enable) this box and type a new name into the
field provided to specify or change the default titlebar text for the Viewer window.
• Minimize Box, Maximize Box, and Close Boxcheckboxes: Click these boxes to display
(enable) or hide (disable) these buttons on the Viewer window.
• Start Maximized checkbox: Click (enable) this box to maximize the Viewer window
automatically when you run your project.
• Menu checkbox and Options… button: Click (enable) the checkbox and the Options…
button to specify which menu options are available at runtime. When the Runtime menu
options dialog displays (as follows), click the checkboxes to display (enable) or hide
(disable) these menu options.
• Resize Border checkbox: Click (enable) this box to allow the user to resize the Viewer
window during runtime.
• Status Line checkbox: Click (enable) this box to display the Status Line in the runtime
project.
• Startup screen field: Click the combo box and select the screen ( .SCR ) or screen group
( .SG ) you want to display automatically when you open the runtime project.
Note: Another way to specify a screen or screen group as the startup screen is to
right-click on it in the Project Explorer and then choose Set as startup from the
shortcut menu.
• Show ???? when quality is not GOOD checkbox: Click (enable) this box to display
question marks (???) instead of the tag's value when their quality is not good.
• Hide Taskbar checkbox: Click (enable) this box to hide the Windows taskbar by default.
• Enable ToolTips checkbox: Click (enable) this box to see Windows ToolTips when
running your project. You can configure tooltips in the Hint field of the Object Properties
dialog of each object.
• Auto Screen Scaling checkbox: Click (enable) this box to automatically scale project
screens when you resize the Viewer window. This feature is available for local projects
running on Windows PC or in the Thin Client. This parameter is not available for projects
running on Windows Embedded target systems.
• Active area indication pane: Click (enable) the Show Object Edge and Change Mouse
Cursor checkboxes in this area to modify the object edge and the mouse cursor when
moving the cursor over any object where the Command animation has been applied.
• Virtual Keyboard: When this option is checked, the Virtual Keyboard is enabled for your
project. (This option does not apply when your project is running on a Thin Client; for
more information, see Project Settings: Web.) The keyboard allows the user to enter data
during runtime on touchscreen panels — that is, without typing on a physical keyboard.
For example, a Text object with the Text Data Link animation applied and the Input
Enabled option checked.
You can establish a default configuration for the virtual keyboard:
• Default: Select the default keyboard type to be used in your project, when no
keyboard type is specified by the calling object or function.
• Scale: Using this option, you can shrink or enlarge the keyboard to fit the size of the
target display. A value of 100% represents the default size of each keyboard type.
• Show Hint checkbox and field: When this option is checked, a hint is displayed in the
title bar of the keyboard. For individual objects, the hint is configured in the Object
Properties dialog. Otherwise, type a string value in the Show Hint field to serve as a
defaut hint.
• Show Min/Max Fields option: When this option is checked, the minimum and
maximum allowed values are displayed at the bottom of the keyboard. For objects,
these values are configured in the Object Properties dialog. Otherwise, the Min and
Max properties of the associated Tag are used by default.
Note: The Min and Max fields are displayed only on the Keypad keyboard type, and
only when the associated Tag is defined as Integer or Real. If Min is greater
than Max, then input will be disabled. If Min/Max configured on the object is
different from Min/Max configured in the Tag properties, then your project will
attempt to scale the input accordingly.
• Mouse Cursor checkbox: Click (enable) this box to show the mouse cursor in the
runtime project.
Note: The Mouse Cursor option is not supported in Windows CE running on Armv4I
processors.
• Execute only topmost object commands checkbox: This option controls how your
project behaves when the user clicks in an area where two or more screen objects
overlap. If this option is checked, then only the commands on the topmost object will
be executed. If this option is not checked, then the commands on all of the overlapping
objects will be executed.
Note: The topmost object is the one with the highest ID number. (The ID number
of an object is displayed in the status bar at the bottom of the development
environment.) You can use the Move to Back / Move to Front and Move
Backward / Move Forward tools to change the order in which objects are
stacked.
Communication tab
Use this tab to specify communication parameters relating to your project in general.
• Driver and OPC menu: Select the method used by all communication drivers and OPC
Client worksheets configured in the current project when writing values to the remote
PLC/device:
• Send every state: When the communication task is configured to write values upon
a change of tag value, all changes in the tag value are buffered in a queue and sent to
the device when the communication task (Driver or OPC) is executed.
• Send last state: When the communication task is configured to write values upon
a change of tag value, only the current (last) value of the tag is sent to the device
when the communication task (Driver or OPC) is executed. When this method is
selected, if the tag changed value more than once while the communication task was
not being executed, the transient values of the tag are not sent to the device. This is
the desired behavior for most projects.
• TCP area: Configure the communication settings for the TCP/IP Client and Server
modules:
• Port field: TCP Port used by the TCP/IP Client and TCP/IP Server modules running
in the current computer. When changing this value in the local project, be sure to
change the same value in the remote project that is communicating with the local
one.
Note: This setting is required for all projects and cannot be left blank. Make sure that
your network configuration will allow connections to this port on whichever
station will be the project server.
• Send Period (ms) field: Period (in milliseconds) used between two consecutive
messages sent by the TCP/IP Client or TCP/IP Server modules to update tag values in
the remote station. Typically, a lower number equals better performance and higher
traffic in the network.
• Enable binary control checkbox: Check this option to enable binary control when the
TCP/IP Client or the TCP/IP Server module sends messages to the remote station.
Binary control increases the security of the system; however, it decreases the
efficiency (performance) of the communication. When connecting two stations via the
TCP/IP Client and TCP/IP Server module, make sure this setting is either enabled in
both projects or disabled in both.
• Remote Management area: Configure the communication settings for the Remote
Management operation, which sends your project files to a target system:
• Timeout (ms) field: Specifies the time (in milliseconds) that the project will wait to
communicate with the target system.
• Enable File Compression checkbox: Select this option to compress the system
and project files before sending them to the target system. This may reduce
the download time if you have a slow connection between your server and the
target system. (If you have a fast connection, however, then selecting this option
may actually decrease performance because each compressed file must be
decompressed on the target system before the next file is sent. Select this option
only if you have an extremely slow connection, such as dial-up.) File compression is
disabled by default.
• Preloading tags from server area: To improve performance, the runtime viewer loads all
of the Server tags on a screen into memory before it displays that screen. Configure the
timeout settings for both remote and local viewers:
• Timeout when executing on remote field: Specifies the time (in milliseconds) that a
Secure Viewer or Thin Client running on a remote station will wait to load the tags.
• Timeout when executing on local field: Specifies the time (in milliseconds) that the
Viewer running on the local station (i.e., the Server) will wait to load the tags.
Web tab
Select the Web tab on the Project Settings dialog:
Note: If you change any of these settings, then you should verify your project before
resending it to the target device.
Configure the parameters on this tab as follows:
• Data Server IP field: Type the IP address (or host name) of your data server station. The
data server station is the computer or device where the TCP/IP server module of Visual
Designer is running. If this field is left blank, then the Thin Client will assume that the
Web server (i.e., the address entered into the browser) is also the data server.
Note: You can use the IP address 127.0.0.1 (localhost) to access the TCP/IP server on
the local computer, regardless of its actual address on the network. This option
is useful for local tests; however, you are not able to access the data server from
remote computers using this configuration.
• Send Period field: Type a value to specify the send period (in milliseconds) used to
exchange data between the server and the Thin Client stations. It means that the Thin
Client will send a package with the new tag values to the server every n millisecond(s).
The Send Period of the server is configured in the project settings (Communication
on the Project tab of the ribbon). The default value is 1000 (milliseconds). You can set
a lower value in this field to increase the update rate between the server and the Thin
Clients. Doing so may result in higher traffic in the network (the network will be accessed
more frequently) if the tags are changing continuously (faster than 1 second).
• Disable Remote Client Commands checkbox: Click to enable this box, to prevent a
remote client from issuing commands from your Thin Client to your server. When this
option is enabled, the Thin Client can read data from the server, but cannot send data
(tag values, set-points) to the data server. In this case, the Thin Client station becomes a
Read Only station.
• Enable ToolTips checkbox: Click to enable this box, to display the ToolTips configured
on the objects of the screens when viewing them on the Thin Client (web browser).
• Auto Screen Scaling checkbox: Click to enable this box, to automatically scale screens
displayed in a web browser window. Using this option, the screen fits to the size of the
web browser window, regardless of its resolution.
Note: The Auto Screen Scaling option is not valid for Web browsers running under
Windows CE operating systems.
• Enable File Compression checkbox: Click to enable this box to compress the files
stored on the Web sub-folder of your project folder. This option is useful for reducing
download time, particularly if you have a slow connection between your server and the
Thin Client.
• Log (Enable checkbox and FileName text field): Click to enable the checkbox, and type
a file name into the text field to generate a log file on the Thin Client station. You can use
this log file for debugging purposes.
• Virtual Keyboard: When this option is checked, the Virtual Keyboard is enabled for your
project running Thin Clients. The keyboard allows the user to enter data during runtime
on touchscreen panels — that is, without typing on a physical keyboard. For example,
a Text object with the Text Data Link animation applied and the Input Enabled option
checked.
You can establish a default configuration for the virtual keyboard:
• Default: Select the default keyboard type to be used in your project, when no
keyboard type is specified by the calling object or function.
• Scale: Using this option, you can shrink or enlarge the keyboard to fit the size of the
target display. A value of 100% represents the default size of each keyboard type.
• Show Hint checkbox and field: When this option is checked, a hint is displayed in the
title bar of the keyboard. For objects, the hint is configured in the Object Properties
dialog. Otherwise, enter a string or string Tag in the Show Hint field to serve as a
defaut hint.
• Show Min/Max Fields option: When this option is checked, the minimum and
maximum allowed values are displayed at the bottom of the keyboard. For objects,
these values are configured in the Object Properties dialog. Otherwise, the Min and
Max properties of the associated Tag are used by default.
Note: The Min and Max fields are displayed only on the Keypad keyboard type, and
only when the associated Tag is defined as Integer or Real. If Min is greater
than Max, then input will be disabled. If Min/Max configured on the object is
different from Min/Max configured in the Tag properties, then your project will
attempt to scale the input accordingly.
IP Security Settings
IP Security button: Click this button to open the IP Security dialog.
Use the parameters on this dialog to specify the range of IP addresses for the computers
that are allowed to access your project as Thin Clients. This option is useful when you can
control the IP Address of the Thin Client computers allowed to connect to the Web server.
Click the Enable checkbox, and when the Edit pane parameters become active, type IP
addesses in the From and To fields to specify the IP address range. Use the Add and
Remove buttons to move the IP addresses into the IP Address Range list. When a Thin
Client attempts to connect to the server, it checks for an IP address for the Thin Client
station that is within any range configured in the IP Security dialog. If one is not found, the
server refuses the connection request from the Thin Client station.
Note: By default, IP security applies only to Thin Clients connecting to the Data Server. You
can also implement IP security for database synchronization between projects running
on different stations. To do this, insert the following parameter into your project file
(project_name.app):
[TCP]
UseWebIPSecurity=1
Advanced Settings
Advanced button: Click this button to open a dialog where you can edit the Advanced Web
settings. For most cases, these settings do not need to be modified. However, depending
on the architecture used in your project, you have the flexibility to configure advanced
settings.
• Secondary Data Server IP Address field: Type the IP address (or host name) of the
secondary data server station. The data server station is the computer or device where
the TCP/IP server module of Visual Designer is running. This field must be filled when
you are using redundant data servers from the Thin Clients. If the primary data server
fails, the Thin Client will attempt to connect to the secondary data server automatically.
• BackUp URL field: Type the URL where the Web files are stored (files from the Web sub-
folder of your project folder). This URL is used to download the files from the secondary
Web server when the primary Web server is not available.
• ISSymbol URL field: When the Thin Client connects to the server, it attempts to load
the ISSymbol control. If ISSymbol is not registered in the local computer (Thin Client),
the browser will attempt to download it from the URL specified in this field. The default
URL is a web site where Eaton keeps the most updated version of ISSymbol available
for download. You may need to configure a different location, especially when the Thin
Client computer is not connected to the internet. The ISSymbolVM.cab (stored in the
\BIN sub-folder of Visual Designer) must be available in the URL configured in this field.
Note: When the Thin Client stations do not have access to the internet, it is
recommended that the ISSymbolVM.cab file be made available at the Web
server station, and that the URL be configured for it in this field.
Note: Web browsers running under the Windows CE operating system are not able
to download ISSymbol control (ISSymbolCE.ocx) automatically from a remote
location. ISSymbolCE.ocx must be manually registered in the Windows CE
device to be used as a Thin Client.
• Web Tunneling Gateway checkbox: Check this option to enable the Web Tunneling
Gateway. Depending on the architecture of your project, you may need to use the Web
Tunneling Gateway to route the Thin Client computers to the data server.
• TCP Port: Select this option when using HTTP with the Web server of Microsoft IIS. You
can specify the TCP port used by your HTTP Web server ( 80 is the default TCP port for
HTTP protocol).
• SSL Port: Select this option when using SSL (Secure Socket Layer) with the Microsoft
IIS Web server. You can specify the TCP port used by your HTTPS Web server ( 443 is
the default TCP port for HTTPS protocol).
• IP Address: IP address of the Web server computer where the Web Tunneling Gateway
is running. This must be the IP address of the Web server accessible from the Thin Client
station(s).
• Secondary IP Address: IP address of the Web server computer where the secondary
Web Tunneling Gateway is running. This must be the IP address of the secondary Web
server accessible from the Thin Client station(s). This field must be configured when you
are using redundant Web servers.
Note: Most of the Web settings can be modified dynamically by the SetWebConfig
function. It is especially useful when you want to create a project just once, and
make sure that the Web settings are automatically configured when you run your
project on different stations with different IP Addresses.
Preferences tab
Use this tab to configure your preferences when building projects with the development
environement.
Warning Messages
• Display warning message before downloading screen to the target system option:
When this option is checked and Visual Designer is connected to a remote station
(Remote Management dialog), you are prompted to download the updated screen to the
remote station immediately after saving a screen on the screen editor. If this option is
not checked, the screen is downloaded automatically, regardless of any confirmation.
• Display confirmation message when renaming project tags option: When this option
is checked and you modify the name of any tag in the Project Tags worksheet, you are
prompted to replace the old tag name with the new tag name in the whole project. If this
option is checked, Visual Designer will execute the global replace command to replace
the old tag name with the new tag name in all documents of your project (screens and
worksheets).
• Display confirmation message when changing the screen position and size option:
When this option is checked, you are prompted to update the screen attributes (Width,
Height, Top and Left) after modifying them on the Layout interface.
• Display warning message after saving symbols option: When this option is checked, a
warning message is shown after saving symbols.
Quality Feedback Service
This section allows you to configure Visual Designer or CEView to generate log files and/or
dump files that can be used to diagnose hardware and software problems, such as memory
leaks and unexpected errors. These files are saved in the \Web\Dump sub-folder of the
running project.
• Generate a log file when an unexpected error happens option: When this option is
checked, the runtime modules append the Log File (\Web\Dump\Dump.txt) whenever
an internal exception (error) occurs. These exceptions may not necessarily crash
the runtime modules, but they can affect the stability of the system and should be
investigated.
Note: The Log File is continually appended until it reaches its maximum size of 2MB.
After it reaches its maximum size, the existing file is deleted and a new file is
created.
• Generate a dump file when an unexpected error happens option: When this option
is checked, the runtime modules generate a new Dump File (\Web\Dump\*.dmp) with
useful information about the conditions of the error. This is a binary file that can only be
read by the software vendor.
Note: Dump Files are named WinXXX.dmp — where XXX is an identifying number (in
hexadecimal format) automatically generated by the system — in order to prevent
an existing file from being overwritten when an new error occurs. Therefore, if
more than one error occurs, then you will find multiple Dump Files in the directory.
The Log File indicates the name of the Dump File associated with each error.
• Enable log of memory option: When this option is checked, the runtime modules
append the Log File every 15 minutes with information about the current memory
allocation. (The first log entry is written out 15 minutes after the runtime module is
started.) This information can be used to identify memory leaks.
Even if none of these Quality Feedback options are checked, a post-mortem Dump File
(\Web\Dump\WinDump.dmp) will always be generated when the runtime module is
terminated by a fatal error. However, for debugging purposes, it is strongly recommend that
you enable all options in this section and then send the Log File and all Dump Files to your
software vendor.
Other Preferences
• Reset Tags Database when starting project option: When this option is checked, the
project tags are reset automatically whenever you run the project (Run on the Home tab
of the ribbon). See Reset Tags Database for additional details about this feature.
• Enforce Web functionality equivalence in local project screens option: When this
option is checked, the development software will automatically warn you when you try to
select fuctions or features that are incompatible with the remote runtime modules (e.g.,
Thin Client and Secure Viewer).
Note: This option is unchecked by default in order to maintain compatibility with previous
versions of Visual Designer.
• Auto reload project on Viewer/Web Clients when it is changed option: When this
option is checked, remote stations (i.e., Thin Clients and Secure Viewers) will check the
server to see if they have the most recent version of the project. If they do not, then they
will automatically download the new version from the server.
Mobile Access
Studio Mobile Access (SMA) enables your project to send Alarms and Process information to
cell phones, PDAs, and other mobile devices.
SMA is somewhat different from the traditional Thin Client solution, however. When you
create your project for an operator interface, you do not want to worry about details like
creating additional screens that would fit on a cell phone. SMA takes care of these details
and provides an easy-to-use interface for getting alarm notifications and tag values on almost
any mobile device.
How It Works
When you enable the Mobile Access feature in your Visual Designer project and then run
your project, Visual Designer creates a Collaboration Data Object (CDO) on the server and
periodically refreshes it with alarm notifications and whatever tag values you choose to make
available. (CDO is a Microsoft .NET technology that is used to share data between programs.
It was previously known as Active Messaging.)
Once the SMA data object is in place, an ASP-powered Web application parses the data
and builds lightweight pages for mobile browsers. As long as the Web server — typically
Microsoft IIS, because it must support ASP — and network are properly configured to allow
access, all you need to do is point your browser to the Web application and log on.
The connection between your project and the SMA data object goes both ways, so you
can also acknowledge alarms and write new tag values through the Web application. These
actions are recorded by the SMA data object and then passed back to your project.
If you're an experienced ASP developer, then you can modify the default Web application or
build your own to access the SMA data object in new and creative ways. Doing so, however,
is beyond the scope of this documentation. Please contact Customer Support for help.
Licensing
One SMA Client is included with every Visual Designer runtime license. That means the
SMA Web application will allow only one user to connect at a time. If you want the Web
application to accept more users, then you must upgrade your license to include additional
SMA Clients. For more information, see License Settings.
Enabling and Configuring Mobile Access
To enable Mobile Access and configure the data to be served:
1. In Graphics tab of the Project Explorer, open the Web Pages folder.
b. In the Description column, type a description of the tag. This description is displayed
only in the Web application and it may be different from the tag's existing description
in the Project Tags datasheet.
c. In the Write column, select the checkbox to make the tag writeable from the Web
application.
8. In the Write Access Level text-box, type the user security level needed to write new tag
values. This applies to all tags that are made writeable.
9. You may choose to decrease the data refresh rate to improve application performance,
especially in non-critical applications where alarms are uncommon and/or tag values do
not change frequently. The refresh rates for Alarms and for Process information can be
adjusted separately — in the corresponding Refresh Rate text-box, type the new rate in
seconds.
10. Click OK where you are done.
The following screenshot show Mobile Access enabled with a selection of tags:
http://server_address/SMA/LogOn.asp
• If the IIS home directory is set to the \Web\SMA sub-folder in your project folder, then
the URL is
http://server_address/LogOn.asp
The first page is a standard security login, similar to the LogOn dialog in your project. Log on
with your Visual Designer username and password (not your Windows user account), and
then SMA Main Menu is displayed.
Main Menu
The Alarms table shows the currently active alarms in your project. To acknowledge an
alarm from your mobile browser, simply click on the alarm name.
Process
You can use the Process table to configure set points, turn pumps on and off, send
messages to users — anything that involves writing to tags. To write to a tag, simply click on
the tag value.
Note: By default, a user session will automatically expire after 10 minutes (600 seconds)
of inactivity. If you want a user to be able to stay logged on, then open the
file \Web\SMA\config.inc in your project folder and change the parameter
logonExpiration to the desired period in seconds.
For example, if you want a user to stay logged on for up to four hours, then change
the parameter to:
logonExpiration = 14400
Please note that as long as a user is logged on, he counts against the number of SMA
Clients in the runtime license. If too many users stay logged on for extended periods,
then you may run out of available connections.
6. In the Status box, type the name of a tag (Integer type) that will receive status codes
when the project sends email.
7. In the Reload box, type a tag/expression. When the value of this tag/expression changes,
the project will reload these default email settings.
8. Click OK to save your configuration and close the dialog.
1. On the Project tab of the ribbon, in the Web group, click Email/FTP.
The Email/FTP Configuration dialog is displayed.
2. Click the FTP tab.
3. In the User Name and Password boxes, type your credentials for the FTP server.
4. In the Server and Port boxes, type the server address and port number.
The default port for FTP is 21, but it depends on your server and network configuration.
Please consult your server administrator.
5. Select Active or Passive mode, depending on the server's configuration.
Passive FTP mode can be used to bypass some network firewalls. Again, please consult
your server administrator.
6. In the Status box, type the name of a tag (Integer type) that will receive status codes
when the project transfers a file.
7. In the Reload box, type a tag/expression. When the value of this tag/expression changes,
the project will reload these default FTP settings.
8. Click OK to save your configuration and close the dialog.
The following table lists the tasks that are not available for projects running on Windows
Embedded target systems:
Task Available for Windows Embedded
You can configure tasks for automatic execution when the project is run by selecting the
task in the list, clicking Startup, and then selecting Automatic.
The tasks configured with Startup = Automatic are automatically executed when the project
is run; the tasks configured with Startup = Manual are not.
You can also Start/Stop each runtime task by clicking the name and then pressing the Start
or Stop button.
Note: You can also start/stop each task during runtime by using the StartTask and
EndTask built-in functions. You can also use the IsTaskRunning function to check
if each task is running during runtime.
You can configure and run a new service from within the development application by clicking
Service on the Project tab of the ribbon. This opens the Service Configuration dialog:
Project box
The location of the project file (project_name.app) that the service will load and run
when it is started. This must be a complete file path.
User box
The Windows user account under which the service will run. This is an optional
setting; if it's not used, then the service will run under Local System.
Note: Try to avoid running the service under Local System. That account has too much
privilege to the file system and too little privilege to run the OPC Client and
Server modules properly. The best alternative is to create a user solely to run
Visual Designer and configure its privileges to fit the needs of your project. For
more about this, see "Configuring User Privileges" below.
Password box
The password for the specified user account. This is an optional setting; it's not
needed if no user is specified or if the specified user doesn't have a password.
Startup Type pane
How the Windows service will start. The following options are available:
• Automatic: The service will start automatically when the computer boots.
• Manual: The service can be started manually in the Computer Management
console or by clicking Start, as described below.
• Disabled: The service will be created and then disabled. It cannot run until an
administrative user enables it in the Computer Management console.
Action pane
Start or stop the service. Please note that these buttons are not enabled until the
service is actually created.
Creating a New Service
To create a new service:
1. Next to the Project box, click … to open a standard Windows file browser. Use the
browser to find and select your project file.
2. In the User and Password boxes, type the username and password (if any) for the
Windows user account under which the service will run.
3. Select a Startup Type.
4. Click Apply. The service is created with the specified settings.
After the service has been created, it will appear in the Services console (Start > Control
Panel > Administrative Tools > Services) under the name "Visual Designer". You can
use that console to quickly stop and restart the service, if you don't want to run the Visual
Designer development environment.
Command-line Utility
You can also configure the service by using the command-line utility StdSvcInst.exe. It
offers a few more options than the Service Configuration tool described above — such as
specifying a name and description for the service — and it can be used without launching
the Visual Designer development environment. The utility is located in the \Bin folder of
your Visual Designer program directory. To run the utility, open a command prompt, navigate
to the \Bin folder, and enter the command with the desired options.
The utility has the following command syntax:
-create
Creates the Windows service.
-app filepath
Specifies which project file (project_name.app) the service will load and run when
it is started. (This is the same as the Project box in the Service Configuration dialog.)
You must include the complete file path, and it must be enclosed in quotes.
This switch is required when you create a new service.
-startup { auto | manual | disabled }
Specifies how the service will start. (This is the same as the Startup Type in the
Service Configuration box.) This switch is optional; if it's not used, then the default
behavior for a new service is manual.
-user username
Specifies the Window user account under which the service will run. (This is the same
as the User box in the Service Configuration dialog.) This is an optional switch; if it's
not used, then the service will run under Local System.
-password password
Specifies the password for the given user account. (This is the same as the Password
box in the Service Configuration dialog described above.) This is an optional
parameter; it's not needed if no user is specified or if the specified user doesn't have a
password.
-name displayname
Defines the service name that is displayed in the Computer Management console.
The name must be enclosed in quotes. This is an optional switch; the default name is
"Studio".
-descr description
Defines the service description that is displayed in the Computer Management
console. The description must be enclosed in quotes. This is an optional switch.
-start
Starts the service. This is the same as starting the service using the Computer
Management console or by clicking Start in the Service Configuration dialog.
-stop
Stops the service. This is the same as stopping the service using the Computer
Management console or by clicking Stop in the Service Configuration dialog.
-delete
Deletes the service.
Example: Creating the Service
In this example, we want to create a new Windows service with the following options:
Visual Designer Project File C:\Users\username\My Documents\Visual Designer v7.0
Projects\project_name\project_name.app
Startup Mode Automatic
User Visual Designer
Password Visual Designer
Service Name "Visual Designer"
Service Description "Starts a Visual Designer project"
Note that the system must already have a user account named "Studio" with password
"Studio".
So, to create the service with the desired options:
1. Make sure you're logged in as a user with administrative privileges.
2. Open a command prompt (Start > All Programs > Accessories > Command Prompt).
3. Navigate to the Bin folder:
StdSvcInst –delete
Configuring User Privileges
The service will run under the privileges of the user account specified in the User field of the
Service Configuration tool (or by the -user switch of the command-line utility). If Visual
Designer needs some system resource to which that account doesn't have privileges, it will
fail. Therefore, you must configure the account to have the necessary privileges.
Note: The following actions can be performed only by a user with full administrator
privileges.
Enabling the User Account to Log On as a Service
Before anything else, the specified user account must be enabled to log on to the computer
as a service. To enable the account:
1. Open the Local Security Settings console (Start > Control Panel > Administrative
Tools > Local Security Policy).
2. In the console window, select the folder "Security Settings\Local Policies\User Rights
Assignment".
3. In the list of available policies, double-click Log on as a service.
4. Make sure the option Use simple file sharing is not selected.
3. In the DCOM Config pane, right-click the Studio Scada OPC Server icon and then
choose Properties from the shortcut menu.
The Studio SCADA OPC Server propety sheet is displayed.
4. Click the Identity tab.
5. Click This user and then complete the fields with the same user and password that you
specified when you created the service.
In this example, user is Studio and password is also Studio.
6. Click OK to apply your changes and close the property sheet.
7. Close the Component Services console.
Troubleshooting
When Visual Designer runs under Windows services, it has no user interface. Therefore, if
an error occurs, it will only be logged as a Windows application event. You can check the
messages by using the Event Viewer console (Start > Control Panel > Administrative
Tools > Event Viewer).
All tags are organized into one of the following categories, which are represented by folders
on the Global tab of the Project Explorer:
• Project Tags are tags that you create during project development. Places where project
tags are used include:
• Screen tags
• Tags that read from/write to field equipment
• Control tags
• Auxiliary tags used to perform mathematical calculations
• Shared Database tags are created in a PC-based control program and then imported into
Visual Designer's tags database.
For example you might create tags in SteepleChase and import them into Visual Designer
so Visual Designer can read/write data from a SteepleChase PC-based control product.
You cannot modify shared tags within Visual Designer — you must modify the tags in the
original PC-based control program, and then re-import them into the Tags database.
• System Tags are predefined tags with predetermined functions that are used for Visual
Designer supervisory tasks. For example,
• Date tags hold the current date in string format
• Time tags hold the current time in string format
Most system tags are read-only, which means you cannot add, edit, or remove these
tags from the database.
To see a list of the system tags, select the Global tab in the Project Explorer, open the
System Tags folder, and open the Tag List subfolder. The above figure shows a partial
list of system tags.
After creating a tag, you can use it anywhere within the project, and you can use the same
tag for more than one object or attribute.
IMPORTANT
Before deleting a tag, we strongly recommend using the Object Finder tool (on the
Home tab of the ribbon) to verify that you are not using the tag in another part of the project
(screens, math sheets, so forth). If you delete a tag from the project database that is being
used in another part of the project, you will cause a compiling error and the project will
function poorly.
To create a new tag, right-click on the Project Tags folder, the Tag List sub-folder, or
Datasheet View icon and select Insert Tag from the shortcut menu. You also can click Tag
on the Insert tab of the ribbon.
The New Tag dialog displays, as shown in the following figure:
Note: You must create unique tag names. You cannot create a tag that uses the name of an
existing tag.
You can view or edit the properties of a tag from either of the following dialoges:
• Tag Property dialog: Click Properties on the Home tab of the ribbon when the tag
name displays in the Tag name field or double-click on the tag name in the Tag List
subfolder located in the Project Tags folder.
• Project Tags dialog: Click the Datasheet View icon in the Project Tags folder.
The Project Tags datasheet contains five columns (see the following sample dialog).
Use this dialog to create, modify, or delete tags or tag properties. You can right-click on a tag
property and use standard Windows commands to cut (Ctrl+X), copy (Ctrl+C), or paste (Ctrl
+V), any tag and its properties. You can also undo (Ctrl+Z) the last modification to a field.
Note: You can sort the data in the Project Tags sheet and/or insert/remove additional
columns to/from the sheet by right-clicking on it and choosing the applicable option
from the shortcut menu.
[Options]
EnableExtendedTagCount=1
Classes Folder
The Classes folder contains all of the project classes and their respective members. Classes
are compound tags consisting of user-defined data-type structures or tag types (Integer,
Real, Boolean, and String). Classes allow for high-level encapsulation in the project database.
A class-type tag provides a set of values for its members.
To define a class you must define the members and their types. Class members are
variables that hold values for an object with particular characteristics. Thus, the defining a
class can be very useful for projects with a repeating group of variables.
Note: When you create a class folder, a Class icon displays in the Tag List subfolder
located in the Project Tags folder.
To access the members of a class, use the following syntax with a period ( . ) as the
separator: TagName.MemberName. For example: tk.LEV or tk.TMP.
If the tk tag is an array, you use the following syntax:
ArrayTagName[ArrayIndex].MemberName
Note: You must type a unique class name. You cannot create two classes with the same
name. In addition, you cannot configure shared tags and system tags as classes.
Visual Designer saves class folders in the Tag List subfolder (located in the Project Tags
folder). You can edit the classes in this folder.
When the Class datasheet displays, you can use it to create, modify, or delete any class
members and their viewable properties. (You cannot edit classes from the Tag Property
dialog.)
Note: The maximum number of members for each class is 512 as long as it does not exceed
the maximum number of tags supported by the license (Product Type) selected
for the project. When a tag is created from a class type, each member from the
class counts as one tag for licensing restrictions, because each member has an
independent value.
To edit a class member or property, you can right-click on the item and use standard
Windows commands to cut (Ctrl+X), copy (Ctrl+C), or paste (Ctrl+V). You can also undo (Ctrl
+Z) the last modification to a field.
You also edit member properties as follows:
• Name field: Type a name for the member or member property. The first character must
be a letter and you can use up to 255 characters in the name.
• Type combo-box: Select a member type (Boolean, Integer, Real, or String).
• Description field: Type a description of the member property for documentation
purposes.
Note: Members of a class cannot be of another class type.
Also, you must create a unique class name. You cannot reuse the name of an existing
class. However, you can create members with the same name in different classes.
To delete a class and all its members, right-click on a class folder and select delete. Visual
Designer disables the delete option if you are running any runtime tasks. In addition, you
cannot delete a class if it is associated with any tag.
IMPORTANT
Most system tags are read-only. To change the time, for example, you must use the proper
math function and set the system time rather than writing to the system time tag.
Designing a Tag
• Array tags are a set of tags that use the same name with unique indexes.
• Class tags are a set of compound tags that consist of user-defined data types (Boolean,
Integer, Real or String) or data-type structures.
• Indirect tags are pointers that provide indirect access to another tag type, including class
tags.
A discussion of these tag types follows.
Basic Tags
A basic tag receives a single value. Typically, most tags defined for a project are basic tags.
Some examples of a basic tag include:
• TankID (to identify different tanks in your project)
• Temperature (to identify the current temperature of an object)
• Status (to identify whether an object is open or closed)
Array Tags
An array tag consists of a set of tags that all have the same name, but use unique array
indexes (a matrix of n lines and one column) to differentiate between each tag. An
array indexcan be a fixed value, another tag or an expression. Maximum array sizes are
determined by product specifications.
You can use array tags to:
• Simplify configurations
• Enable multiplexing in screens, recipes, and communication interfaces
• Save development time during tag declaration
You specify array tags in one of two formats:
• For a simple array tag, type:
ArrayTagName[ArrayIndex]
• For a complex array tag (where the array index is an expression consisting of a tag and an
arithmetic operation), type:
ArrayTagName[ArrayIndex+c]
Where:
• ArrayTagName is the tag name;
• [ArrayIndex] is the unique index (fixed value or another tag);
• + is an arithmetic operation; and
• c is a numerical constant.
Note:
• You must specify a maximum index for each array tag by typing a value (n) in the
Array Size column of an Project Tags datasheet or in the Array Size field on a
New Tag dialog. (See "Creating project database Tags").
When you create an n-position array tag, Visual Designer actually creates n+1
positions (from 0 to n). For example, if you specify ArrayTag[15], the array will
have 16 elements, where 0 is the start position and 15 is the end position.
• You must not use spaces in an array tag.
When Visual Designer reads a tag it begins with the first character and continues
until it finds the first space or null character. Consequently, the system does not
recognize any characters following the space as part of the array tag.
You can specify an array tag wherever you would use a variable name. Also, because array
tags greatly simplify configuration tasks and can save development time, we suggest using
them whenever possible.
For example, suppose you want to monitor the temperature of four tanks. The conventional
configuration method is:
• temperature1 — high temperature on tank 1
• temperature2 — high temperature on tank 2
• temperature3 — high temperature on tank 3
• temperature4 — high temperature on tank 4
You can use array tags to simplify this task as follows (where [n] represents the tank
number):
• temperature[n] — high temperature on tank n
The following table contains some additional examples of an array tag:
Tank[1], Tank[2], Simple arrays, where the array indexes (1, 2, and 500) are numerical
Tank[500] constants. For example, tank numbers.
Tank[tk] A simple array, where the array index (tk) is a tag. For example, a tag
representing the tank number.
Tank[tk+1] A complex array, where the array index (tk+1) is an expression. For example,
the value of tk (tank number) plus 1.
Note: When using another tag to reference the index of an array, if the value of the tag is
outside the size of the array, then the following results are given:
• If IndexTag is greater than the size of the array, then MyArray[IndexTag] will
point to the end position of the array; and
• If IndexTag is less than 0, then MyArray[IndexTag] will point to the start
position of the array (i.e., MyArray[0]).
Indirect Tags
Indirect tags "point" to other database tags (including class-type tags). Using indirect tags can
save development time because they keep you from having to create duplicate tags (and the
logic built into them).
You create an indirect tag from any string-type tag simply by typing the @ symbol in front of
the tag name @TagName.
• To reference a simple tag, assume the strX tag (a string tag) holds the value "Tank",
which is the name of another tag, then reading from or writing to @strX provides access
to the value of the Tank tag.
• To reference a class-type tag and member, you simply create a string tag that points to
the class tag and the member. For example, if a tag strX (a string tag) holds the value
"Tank.Level", which is the name of the class tag, then reading from or writing to
@strX provides access to the value of the Tank.Level member.
• You can also point directly to a class-type tag member; by identifying a class-type
that points to a class member. For example: to access the Tank.Level member of
the class, you must store the "Tank" value within the strX tag and use the syntax,
@strX.Level.
[Options]
BooleanTrueAboveZero=value
CAUTION
This is a global runtime setting. If you only want to change how certain tags are handled,
then you should not change this setting.
• Local: A virtual copy of the tag is maintained separately on each local station (server +
clients), and a change to the tag value affects only the station on which the change was
made.
3. Locate an empty line in the datasheet and configure the following fields.
Note: You can use the keyboard Tab key to move to the next column.
• Name field: Type a name using the proper syntax. (For more information, see "Tag
Syntax".)
• Array Size field:
• For an array tag, type a value to specify the maximum index of the array.
• For any other tag type, type zero (0).
• Type combo-box: Click the arrow to select a tag data type (Boolean, Integer, Real, or
String) from the list. (If necessary, review "Choosing a Tag Data Type.")
• Description field (optional): Type a description for documentation purposes only.
• Scope combo-box: Click the arrow to specify whether the tag value will be shared
with (displayed on) Thin Client stations. (For more information, see "Choosing the Tag
Scope".)
4. Click in a new line to create another tag, or if you have no other tags to create, then save
and close the Project Tags datasheet.
The following example shows a variety of tags configured in an Project Tags datasheet.
• Type a new tag name into any Tag/Expression text field (available from Object
Properties dialogs, worksheets, and so forth). When the Question dialog asks if you
want to create a new tag, click Yes.
Any of these actions causes a New Tag dialog to display, which you can then complete as
needed. For more information, see "Configuring a New Tag".
Editing Tags
You can change the properties of a tag at any time during development or runtime. This
section describes two methods you can use to edit tags.
Note: You can right-click on a tag property and use standard Windows commands to cut
(Ctrl+X), copy (Ctrl+C), or paste (Ctrl+V) any tag and its properties. You can also Undo
(Ctrl+Z) the last modification to a field.
From the Project Tags Datasheet
Use the following steps to edit one or more tags in the Project Tags datasheet:
1. Select the Global tab, open the Project Tags folder, and double-click on the Datasheet
View button.
2. When the Project Tags datasheet opens, locate your tag.
3. Double-click in the column containing the information to be changed, and type the new
information into the datasheet.
4. When you are finished editing, save your changes to the tags database.
Note: You can sort the data in the Project Tags sheet and/or insert/remove additional
columns to/from the sheet by right-clicking on it and choosing the applicable
option from the shortcut menu.
From the Tag List Folder
Use the following steps to edit one or more tags from the Tag List folder:
1. Select the Global tab, open the Project Tags folder, and double-click on the the Tag List
folder to view a list of all your tags.
2. Locate your tag and double-click on the tag name to open a Properties dialog.
Note: You also can right-click on the tag's icon and choose Properties from the shortcut
menu.
The Properties dialog contains fields and combo-boxes that correspond in name and
function to the columns on the Project Tags datasheet.
3. Make your changes in the Properties dialog as follows:
• To change the current Type or Scope properties, click the arrow button and select
the new information from the list.
• To change the Size or Description, highlight the existing text and type the new
information into the text box.
4. Click OK to save your changes to the tags database and close the Properties dialog.
Note: You can sort the data in the Project Tags sheet and/or insert/remove additional
columns to/from the sheet by right-clicking on it and choosing the applicable
option from the shortcut menu.
Creating Classes
To create a new class tag:
1. From the Global tab, right-click the Classes folder and then select Insert Class from the
resulting shortcut menu.
2. When the Insert Class dialog displays, type a name into the Name text box using the
design guidelines and tag name syntax.
3. Click OK to close the Insert Class dialog. The Class: worksheet is displayed
automatically.
Configure the columns in this worksheet as follows:
• Name field: Type a class member name.
• Type drop-down list: Click the arrow to select the class member's data type (Boolean,
Integer, Real, or String) from the list.
4. Click in the next blank line and provide the information for the next class member you
want to include in this class. Or, if you are finished adding members, you can close the
Class worksheet.
You can expand the Classes folder and subfolders to see the data structure:
5. Next, use the instructions provided in "Adding Tags to the Datasheet" to create and
associate a tag with the new class.
Note that when you click the arrow button to view the Type list, your new class name
(CTank) is included (see line 5 in the following figure). Select the class name from this
list.
6. When you are done, save your work and close the worksheet.
Use the parameters on this dialog to configure the different tag properties. Instructions for
configuring each type of tag follows.
String-Type Tag Parameters
From the Tag Properties dialog, specify string-type parameter properties as follows:
• Retentive Value checkbox: Click (check) to save the tag value continuously in case the
system unexpectedly shuts down, so that it restarts from the last saved value.
• Retentive Parameters checkbox: Click (check) to save runtime changes in the tag's
properties. Only certain properties can be saved; for a complete list of which can and
cannot, see List of Tag Properties on page 113.
CAUTION
Enabling either of the Retentive options for tags that frequently change values can cause
heavy disk access, which slows performance.
• Startup Value field: Type a tag value for the system load. The tag assumes this value if
you disable the Retentive Value option.
• Unit field: Type any string (up to 9 characters) as a brief description or reference. This tag
is accessible during runtime.
Note: Visual Designer will not accept writing values that fall outside the ranges defined
in the Min and Max fields. In addition, Visual Designer generates a message in the
Output window to indicate that the system tried to write a value outside the defined
range.
Integer and Real-Type Tag Parameters
Note: For descriptions of the Retentive Value, Retentive Parameters, Startup Value, and
Unit parameters, see String-Type Tag Parameters above.
From the Tag Properties dialog, specify integer and real-type parameter properties as
follows:
• Engineering Units area
• Min field: Specify a minimum value for the tag in engineering units. This tag is
accessible during runtime.
• Max field: Specify maximum value for the tag in engineering units. This tag is
accessible during runtime.
• Unit field: Type any string (up to 9 characters) as a brief description or reference of
the tag. This tag is accessible during runtime.
• Signal Conditioning area
• Dead Band checkbox: Click (check) to insert the dead band value of a tag. Dead
band value is a variation around a central value of the tag, which is not recognized for
alarms.
• Smoothing checkbox: Click (check) to reduce the rate of change for the tag's values.
Use only for integers and real tags. For example, if you select the Smoothing option
for the LEVEL1 tag containing the value = 50. Then in the next search, if the LEVEL1
changes to 60, the system will store the average of 50 + 60 in the database, so the
new value = 55.
Boolean-Type Tag Parameters
Note: For descriptions of these parameters, see String-Type Tag Parameters above.
See also: Using Tag Properties: Alarms, Using Tag Properties: History
then Visual Designer generates an alarm when TEMP1 ≥ 90. The return to normal occurs
when TEMP1 ≤ 85.
• Translation Enabled checkbox: Click (check) to enable the translation of messages
defined on the Options tab in the Project Settings dialog. For additional information
about translations, see Translation Tools.
Note: Visual Designer saves Alarm messages with the Translation Enabled attribute
enabled in a file called Alarm.TXT located in your project's \DATABASE\
directory.
• HiHi (HiHiLimit) checkbox: Click (check) to indicate a Very High alarm is present.
Accessible during runtime.
• Hi (HiLimit) checkbox: Click (check) to indicate a High alarm is present. Accessible
during runtime.
• Lo (LoLimit) checkbox: Click (check) to indicate a Low alarm is present. Accessible
during runtime.
• LoLo (LoLoLimit) checkbox: Click (check) to indicate a Very Low alarm is present.
Accessible during runtime.
• Rate (RateLimit) checkbox: Click (check) to indicate a Rate alarm is present. Accessible
during runtime.
• Deviation+ checkbox: Click (check) to indicate a Deviation alarm is present. Accessible
during runtime.
• Deviation- checkbox: Click (check) to indicate a Deviation alarm is present. Accessible
during runtime.
• Deviation SetPoint field: Specify a reference point for the deviation. Accessible during
runtime.
• Deviation Dead Band field: Specify a reference value for the deviation.
Alarms for Boolean-Type Tags
Use the Alarms-Bool Type tab on the Tag Properties dialog to specify alarm properties for
Boolean-type tags.
tag_name->property_name
Name The name of the tag, as configured in the R String, up to 32 chars Y Y Y Y n/a
Project Tags database.
MemberName The name of the class member, in a properly R String, up to 32 chars Y Y Y Y n/a
configured Class. NOTE: The syntax must be:
Class.Member->MemberName
Example: Tank.Lvl->MemberName
= Lvl
Size Array Size. If the tag is not an array tag, it R Integer Y Y Y Y n/a
returns the value 0
Index The index number of an element in an Array. R Integer Y Y Y Y n/a
(An Array is any Tag of size greater than 0.)
NOTE: The syntax must be:
Tag[Index]->Index
Example: Tag[1]->Index = 1
TimeStamp Time and date when the value of the tag last R String Y Y Y Y N
changed.
Blocked This property can have two values: R/W Boolean Y Y Y Y N
• 0: The tag is blocked and all runtime
tasks will ignore it. It is effectively
removed from the project database.
• 1: The tag is unblocked and all runtime
tasks can access it normally.
This is useful when you want to dynamically
disable all actions associated with a specific
tag. Even when a tag is blocked, however, it
still counts towards the total number of tags
used for licensing purposes.
B0 … B31 Value (0 or 1) of any of the 32 bits (b0, b1, b2, R/W Boolean N Y N N N
… b31) of an Integer tag. (B0: LSB B31: MSB)
DisplayValue A converted Tag value that is only displayed R/W Real N Y Y N n/a
on-screen:
DisplayValue = (Value / UnitDiv) +
UnitAdd
This is used when the actual Tag values have
one Engineering Unit (see Unit above) but
need to be displayed on-screen in another
Engineering Unit (see DisplayUnit below).
For example, Celsius degrees and Farenheit
degrees.
If user input changes DisplayValue during
runtime, then the conversion is reversed
before the change is actually written to the
Tag:
Value = (DisplayValue − UnitAdd) *
UnitDiv
AlrAckValue Text associated with the Acknowledged state R/W String, up to 32 chars Y N N N Y
of a Boolean tag. This text is displayed in the
Value column of an Alarm/Event Control.
You can also edit this text in the Tag
Properties dialog (Alarms – Bool Type).
AlrOffValue Text associated with the Normalized state of R/W String, up to 32 chars Y N N N Y
a Boolean tag. This text is displayed in the
Value column of an Alarm/Event Control.
You can also edit this text in the Tag
Properties dialog (Alarms – Bool Type).
AlrOnValue Text associated with the Active state of a R/W String, up to 32 chars Y N N N Y
Boolean tag. This text is displayed in the
Value column of an Alarm/Event Control.
You can also edit this text in the Tag
Properties dialog (Alarms – Bool Type).
Note:
• If a property is marked "n/a" with regards to being retentive, it's because the
property is inherent in the tag definition (e.g., Name, Size) or the value of
the property is continuously derived during runtime (e.g., alarm activation,
DisplayValue). To enable retention for a tag, select the Retentive Parameters
option in the Tag Properties dialog.
• If the project attempts to write a value outside of the range specified in the
Min and Max properties, the Tags Database will not accept the new value and
a warning message is written in the Output window. If both Min and Max
properties are configured with the value 0 (zero), it means that any value applied to
the tag type will can be written to the tag.
• You cannot use tag properties (such as Bit fields) to configure Alarm or Trend
worksheets.
• Although you can apply tag properties to System Tags, those properties will not
persist when you download your project to a CE device.
Comprehensive instructions for applying tags to screen objects are provided throughout the
documentation where appropriate.
From the Global Replace dialog, you can replace any tag(s) from all documents (screens and
worksheets) of the whole project. You can edit both the From and the To column.
When replacing composed tags (array size > 0 and/or Type = Class), you can configure
a specific array position (for example, TagA[1] ) or class member (for example,
TagB.MemberX ) or both (for example, TagC[3].MemberY ). If you configure only the
Main Tag Name (for example, TagC ) in the From column, all tags from this main tag will be
modified for the tag configured in the To column.
If an invalid replacement is configured (for example, replace the Main Tag tag from a class
type tag for a simple tag (not a class tag), the OK button will be disabled. When the OK
button is pressed, the tags configured on the Global Replace dialog will be replaced in the
order that they were configured on the dialog interface.
Note: You must close all documents (screens and worksheets) before executing this
command.
When changing the tag name on the Project Tags database worksheet, Visual Designer will
ask you if you intend to replace this tag through the whole project.
The Replace option will be created in the Edit menu. By using this option, the Global
Replace dialog is prompted, however, the changes are applied only the current screen or
worksheet in focus.
You can replace one or more tags by clicking the Whole Tag Name tab. Current tags used
are displayed. The original tag names are shown in the From column on the left, and you can
enter your new tag names in the To column on the right.
Note that this does not rename or delete any tag — it only replaces the tags used in the
object with other tags from the database.
You can also replace one or more strings (e.g., button captions, descriptive text) by clicking
the String Value tab.
The development application automatically verifies your project. If it finds unused tags,
then it lists them in the Remove Unused Tags dialog.
Click the Object Finder tool to open the Object Finder dialog, which lists all Tags and
Functions currently configured for the project.
To select an existing tag/function, double-click on the tag/function name, and then click OK
to close the box. The selected name displays in the Tagname text box.
• To select a specific array index, click the Index button after specifying the array tag
name.
• To select a specific member name, click the Member button after specifying the class
tag name.
• To create a new tag, click the New button.
• When the New Tag dialog displays, enter the following information, then click OK to
close the box:
• Name
• Array Size
• Type (Boolean, Integer, Real, String, Class:Control, Class:msgonline, or Class:Alr)
• Description
• Scope (local or server)
Click the Cross Reference tool to search all project screens and worksheets for the tag
noted in the Tagname text box. This function writes a log, detailing all the occurrences of
the tag, to the XRef tab in the Output window. For example, the results of searching for a
BlinkFast tag are as follows:
Note: The Tag Properties dialog that displays for Boolean, Integer, Real, and String tags will
differ in content.
Import Wizard
The Import Wizard is a powerful tool that reduces engineering time during project
development. Using the Import Wizard, you can import tags from different data sources
directly to the project tags database. Depending on the data source, you can import not only
the tag names, but also the communication interface (the link between the tags and the PLC
addresses).
When you click Import Wizard on the Home tab of the ribbon, an Import Database Wizard
dialog displays to step you through the process of importing tags. There are three steps for
importing tags from these data source types:
• Visual Designer Project Database
• OPC Server Database
• CSV Database
• ODBC Database
Step1: Select the Source Type
Click the data Source Type, which is where the tags are being imported from. Click Next.
Continue to the appropriate section for the instructions you need to complete the import
database procedure:
Most of the settings in the second window depend on the data Source Type selected in
the first step. The screenshot above is an example of one data Source Type (OPC Server
Database). The settings that are common for any data Source Type are described below:
• Options box: Select Do not import duplicated tags if you do not want imported tags to
overwrite tags with the same name that already exist in the Tags Database of the current
project. Select Replace duplicates with tags imported to overwrite tags in the Tags
Database with imported tags of the same name.
• Use Prefix: Check to specify a prefix (up to 4 characters) to be concatenated to the name
of the imported tags. It is useful to use a prefix to differentiate the imported tags from
the tags created manually.
Note: The other settings vary according to the data source selected in the first step, and
they are described in the specific sections for each data Source Type.
After configuring the settings in this dialog, click Next.
The screenshot above is an example of one data Source Type (OPC Server Database). The
fields and settings that are common for all data Source Types include the following:
• Grid: Displays the list of tags found on the data source.
• checkbox: Check to import the tag from the data source to the Tags Database of the
current project.
• TagName: Name of the tag
• Size: Array size of the tag
• Type: Data type of the tag (Boolean, Integer, Real, String or Class:<ClassName>)
• Description: Description of the tag
• Check button: Click to select/import all tags in the grid
• Uncheck button: Click to uncheck all tags in the grid
• Filter button: Click to filter the tags. The Filter dialog will display, allowing you to specify
a mask for each column in the grid. Wild cards (* and ?) can be used to filter data.
• Clear Filter button: Click to reset the filter.
• Import Filtered Tags Only checkbox: Check this option to import only the tags that are
visible in the grid (filtered).
• Status box: Displays a message describing the status of the tag currently selected in the
grid. This information is especially useful to indicate why a tag cannot be imported.
• Legend box: Describes the meaning of the colors that represent tag status:
• (Red) Error:Tag cannot be imported because it is not supported by Visual Designer.
See the Status box for a detailed description of the error.
• (Blue) Tag will be imported:Tag will be imported after you click the Finish button.
• (Gray) Tag can be imported:Tag can be imported but it has not been checked.
• Database size box: Displays summary information regarding the current Import Wizard:
• Current: Indicates the number of tags configured in the Project Tags database of the
current project
• Importing: Indicates the number of tags selected to be imported
• Replacing: Indicates the number of tags configured in the Project Tags database of
the current project that will be replaced by an imported tag with the same name.
After selecting the tags to import, click the Finish button, or click Cancel to abort the
operation.
Note: The other settings vary according to the data source selected in the first step, and
they are described in the specific sections for each data Source Type (see below).
Data Source Types
Continue to the appropriate section for the instructions you need to complete the import
database procedure:
• Importing from Other project databases
• Importing from OPC Server Databases
• Importing from CSV Databases
• Importing from ODBC Databases
Importing from...
• Import tags only: When this option is selected, the tags from the other project will be
imported to the current project. The other interfaces of the project (worksheets) will not
be imported.
• Import the whole project: When this option is selected, the following interfaces from
the other project will be imported to the current project:
• Tags Database
• Global Procedures
• Screens
• Screen Groups
• Web Pages
• Alarms
• Trends
• Recipes
• Reports
• ODBC
• Math
• Scripts
• Scheduler
• Drivers
• OPC
• TCP/IP
• DDE
This option is useful for merging projects and importing template projects.
Note: When you select the option to Import the whole project, the following
worksheets will always be imported, regardless of existing worksheets with the
same number in the current project: ODBC, Math, Script, Scheduler, Drivers, OPC,
TCP/IP and DDE. If there are worksheets with the same number in the current
project, worksheets imported from the other project will be inserted as additional
worksheets in the current project, and the number of each worksheet will be
automatically increased to avoid replacing files on the current project.
• Do not import duplicated: When this option is selected, the following interfaces are not
imported in case there is already an equivalent interface in the current project:
• Tags Database (tags with the same name will not be imported)
• Global Procedures (the global procedures will not be imported at all)
• Screens (screens with the same name will not be imported)
• Screen Groups (screen groups with the same name will not be imported)
• Web Pages (Web pages with the same name will not be imported)
• Alarms (alarms assigned to tags with the same name will not be imported)
• Trend (trend logs assigned to tags with the same name will not be imported)
• Recipes (recipes with the same name will not be imported)
• Reports (reports with the same name will not be imported)
• Script (the startup script will not be imported at all)
• Application: Click Browse and select the project_name.APP file that has the tags you
want to import.
• Generate TCP/IP Client worksheet: If you want your project to share tags with another
Visual Designer project running on a remote server, select this option and enter the IP
address of that server. Visual Designer will automatically configure the TCP/IP Client
worksheet to exchange data with the remote project.
• Use prefix: Select this option to specify a prefix (up to 4 characters) that will be
prepended to the names of the imported tags. It is useful to differentiate the imported
tags from the tags created manually.
link the tags, eliminating the need to configure the communication interface between the
OPC Client from Visual Designer and the external OPC Server.
• File Name: Press the Browse button to select the text file from which the tags will be
imported.
• Data Column box: Select a number for each tag property that corresponds to its column
number in the import file. For example, if the Tag, Array Size and Type are listed in the
second, third and first columns in the import file, respectively, select 2 in Tag, 3 in Array
Size and 1 in Type. The Tag property (tag name) is mandatory, but the other properties
are optional.
For properties that are not included in the text file, select the option Not used. Visual
Designer will insert defaults or leave the field blank, according to the following list:
• Array Size:0
• Type:Integer
• Description:<Blank>
• Web Data:Local
• Delimiters checkbox: Select the delimiter(s) used in the text file to divide one column
from another. For a CSV file, the delimiter is Comma (the default). You can select
more than one delimiter at a time, and you can use the Other option to enter a custom
delimiter.
Note: See Steps 1, 2 and 3 of Import Wizard for the settings and fields that are common
for all Source Types.
• Select Data Source button: Click to select the ODBC Data Source Name (DSN) linked to
the database from which the tags will be imported. The DSN must have previously been
created with the Data Sources (ODBC) window (Control Panel > Administrative Tools
> Data Sources [ODBC]). After you select a DSN, the other fields in this window will be
populated automatically with information from the selected database.
• Table combo-box: Select the table that holds the tags in the import database.
• Tag combo-box: Select the name of the column that holds the tags in the import
database.
• Array Size combo-box: Select the name of the column that holds the array size for the
tags in the import database.
• Type combo-box: Select the name of the column that holds the tag type in the import
database.
• Description combo-box: Select the name of the column that holds the tag description in
the import database.
• Web Data combo-box: Select the name of the column that holds the Web Data for the
tags in the import database.
Note: See Steps 1, 2 and 3 of Import Wizard for the settings and fields that are common
for all Source Types.
The most basic function performed by Visual Designer is to provide a window into the
process. The ability to display the status of the process by interacting with instrumentation
(or computers), is described as the Human-Machine Interface (HMI).
Visual Designer allows you to create projects that can monitor processes using high-
resolution color screens.
The Visual Designer graphic tools consist of two modules:
• The Screen/Worksheet Editor in the Visual Designer development environment (used to
create or import graphics); and
• The runtime project Viewer.
You can use animations to create dynamic graphic objects or symbols. Animations cause
objects and symbols to change appearance to reflect changes in the value of a tag or an
expression. Each screen is an association of static and animated objects.
Screens can have an optional bitmap that acts as a background in the object window. On the
following screen for example, the static images can be part of a bitmap in the background
object and objects with animation in the animation object layer can reflect the changes in the
plant, giving the illusion that the screen is three�dimensional.
All Visual Designer configuration tasks require a Windows-compatible pointing device, such
as a mouse or touch pad. You can run a project in the Viewer without a pointing device if you
configure keypad or keyboard keys for all commands.
Graphics tab
The Graphics tab of the Project Explorer contains all of the screens, screen groups, and
symbols in your project.
The folders on the Graphics tab are described on the following pages:
• Screens contains all of the screens created for the current project.
• Screen Group contains the entire screen groups (individual screens combined into
manageable groups) created for the current project.
• Web Pages contains all of the Web pages (i.e., screens saved in HTML format) created
for the project.
• Mobile Access allows configuration of the mini-site that is targeted to cell phones,
PDAs, and other mobile devices.
• Project Symbols contains all of the user-defined symbols, which can be groups of
images and/or text. You can create custom symbols for the project and save them into
this folder.
• Graphics Script contains predefined functions that are executed when certain screen
actions occur, such as when the Thin Client is launched on a remote station.
• Symbols contains the library of common symbols and graphics provided with the
project. Double-click the Library icon to open the Symbol Library.
• Layout displays all screens currently open in the Screen Editor and allows you to
visualize how the screens fit together during runtime.
Screens folder
The Screens folder is located in the Graphics tab of the Project Explorer. It contains all of
your Screen worksheets, both completed and still in development.
To create a new Screen worksheet, do one of the following:
• On the Insert tab of the ribbon, in the Graphics group, click Screen;
• Right-click the Screens folder in the Project Explorer, and the click Insert on the shortcut
menu; or
• Click the Application button, click New on the Application menu, click the File tab in the
New dialog, select Screen from the list of worksheet types, and then click OK.
When a Screen worksheet is opened for the first time, the Screen Attributes dialog for that
worksheet is automatically displayed. For more information, see Screen Attributes dialog.
To open an existing Screen worksheet, expand the Screens folder and then double-click the
worksheet.
Description A brief description of the project screen. This is not shown anywhere during runtime.
Background Picture Enable Background Enables the background picture layer and specifies the file type of the picture.
When this option is selected, a new BMP file with the same name as the screen is automatically
saved in the Screen sub-folder of your project folder (e.g., \project_name\Screen
\screen_name.BMP). You can then edit this image using a third-party image editor. For more
information, see Changing a screen's background color or image.
Shared Image Uses the specified image file located in the Screen sub-folder of your project folder.
If you want to specify a tag/expression that provides this value, so that you can programmatically change the
value during runtime, then the tag/expression must be enclosed in curly brackets. For example: {myTag}
Do not include the extension in the file name. If the file format is not BMP, then use the list to the right of
the Enable Background option above to select the correct format.
NOTE: Only BMP files are supported in projects developed for Windows Embedded target systems.
Size Width The default width of the screen (in pixels) when it is initially displayed.
The user can change the size during runtime if the screen is set to be resizable; see Border below.
Height The default height of the screen (in pixels) when it is initially displayed.
The user can change the size during runtime if the screen is set to be resizable; see Border below.
Location Top The default distance (in pixels) between the top of the computer display and the top of the screen when the
screen is initially displayed.
The user can change the location during runtime if the screen is set to have a border and title bar; see
Border below.
Left The default distance (in pixels) between the left side of the computer display and the left side of the screen
when the screen is initially displayed.
The user can change the location during runtime if the screen is set to have a border and title bar; see
Border below.
Security The minimum security level that a user must have to access this screen.
Hide Keeps the screen loaded in memory after it is called the first time, so that it opens more quickly every time
thereafter. Any user action or system process that would close the screen in fact only hides it.
NOTE: This option should be selected only for critical screens that must open quickly. If too many screens are
kept in memory, then overall project performance will be affected.
Titlebar Shows the window's title bar with the specified window name.
If you want to specify a tag/expression that provides this value, so that you can programmatically change the
value during runtime, then the tag/expression must be enclosed in curly brackets. For example: {myTag}
NOTE: It is useful to specify a window name even when the title bar is not shown, because when the screen
is printed, the window name is included in the page header.
System Menu Provides a menu of basic window commands at the left end of the title bar.
Maximize Box Shows the Maximize button at the right end of the title bar.
Minimize Box Shows the Minimize button at the right end of the title bar.
Don't Redraw While this tag/expression evaluates as TRUE, the screen's graphics are not updated.
Disable Commands While this tag/expression evaluates as TRUE, the screen is locked against user interaction but the graphics
continue to be updated.
Screen Logic On Open Lists expressions to be evaluated once when the screen is opened, similar to a Math worksheet.
While Open Lists expressions to be continuously evaluated while the screen is open, similar to a Math worksheet.
If you also configure a tag/expression in Trigger, then instead of being continuously evaluated, the listed
expressions will be evaluated once each time the value of the trigger changes while the screen is open.
On Close Lists expressions to be evaluated once when the screen is closed, similar to a Math worksheet.
Focus Receive Focus on Open When the screen is opened, the focus will automatically go to the first object in the screen (according to
Object ID) that can receive focus, as if the user tabbed into the screen.
Share Tab Order with When the user tabs through the last object in the screen, the focus will go to the next open screen (according
Other Screens to Tab Order below) rather than back to the first object in the current screen.
Tab Order Similar to Object ID for screen objects, this determines the tab order between screens when multiple screens
are open. When the user tabs through the last object in a screen, the focus will go to the open screen with
the next higher Tab Order number.
Each screen should have a unique Tab Order number between 0 and 32767.
6. In the list to the right of the Enable Background option, select the graphics format of
the image file.
Note: Only BMP files are supported in projects developed for Windows Embedded
target systems.
7. Click OK to close the Screen Attributes dialog. If the development application can find
and load the specified file, then it will be shown in the screen. If not, then a warning
message will be displayed.
2. Type a name for the new folder into the Name field.
3. Create a group of screens for this folder by selecting screens from the List of screens
list. To select multiple screens press the Ctrl key as you click on the screen names.
Release the Ctrl key when you finish.
This list contains only those screens currently located in Screens folder.
4. Click OK to close the Insert Screen Group dialog.
CAUTION
The Web pages that are generated when you click Save As HTML are independent of the
screen files from which they were generated. Consequently, if you change that screen, the
changes will not appear on the Web page until you click Save As HTML again.
To view your Web pages during runtime, you must first configure the project settings (Thin
Client on the Project tab of the ribbon).
1. Open the dialog and type the IP address (from which to run the project) in the Data
Server IP Address field.
2. Type a value in the Send Period (ms) field to specify the send period (in milliseconds)
used to exchange data between the Server and the Thin Client stations.
3. In the URL field, enter the address of the project file using the following format:
You can also enter a local file path using the following format:
5. Click the IP Security button to open the IP Security dialog (see figure). Use the
parameters on this dialog to specify the range of IP addresses for the computers that are
allowed to access the project as Thin Clients.
When the Edit pane parameters become active, type IP addesses in the From and To
fields to specify the IP address range. Use the Add and Remove buttons to move the IP
addresses into the IP Address Range list. Visual Designer permits the computers listed
in this pane to access the project as Thin Clients
6. To enable logging for the Thin Client, move to the Log pane and click (enable) the Enable
checkbox and type a file name into the Filename field to generate a log file on the Thin
Client station. You can use this log file for debugging purposes.
7. Click OK to close the Project Settings dialog.
Note: If you change any of the Web information on the Project Settings dialog, you
must re-verify the project for the new setting to take effect. To verify the project,
click Verify on the Home tab of the ribbon. (If you have any windows open in the
development system, Visual Designer prompts you close them before you verify the
project).
Also, because the Web pages display information from the project through the Web
server, you must be running the runtime system, Web server, and the TCP/IP server
to view your Web pages.
Mobile Access
Studio Mobile Access (SMA) enables your project to send Alarms and Process information to
cell phones, PDAs, and other mobile devices.
SMA is somewhat different from the traditional Thin Client solution, however. When you
create your project for an operator interface, you do not want to worry about details like
creating additional screens that would fit on a cell phone. SMA takes care of these details
and provides an easy-to-use interface for getting alarm notifications and tag values on almost
any mobile device.
How It Works
When you enable the Mobile Access feature in your Visual Designer project and then run
your project, Visual Designer creates a Collaboration Data Object (CDO) on the server and
periodically refreshes it with alarm notifications and whatever tag values you choose to make
available. (CDO is a Microsoft .NET technology that is used to share data between programs.
It was previously known as Active Messaging.)
Once the SMA data object is in place, an ASP-powered Web application parses the data
and builds lightweight pages for mobile browsers. As long as the Web server — typically
Microsoft IIS, because it must support ASP — and network are properly configured to allow
access, all you need to do is point your browser to the Web application and log on.
The connection between your project and the SMA data object goes both ways, so you
can also acknowledge alarms and write new tag values through the Web application. These
actions are recorded by the SMA data object and then passed back to your project.
If you're an experienced ASP developer, then you can modify the default Web application or
build your own to access the SMA data object in new and creative ways. Doing so, however,
is beyond the scope of this documentation. Please contact Customer Support for help.
Licensing
One SMA Client is included with every Visual Designer runtime license. That means the
SMA Web application will allow only one user to connect at a time. If you want the Web
application to accept more users, then you must upgrade your license to include additional
SMA Clients. For more information, see License Settings.
Enabling and Configuring Mobile Access
To enable Mobile Access and configure the data to be served:
1. In Graphics tab of the Project Explorer, open the Web Pages folder.
8. In the Write Access Level text-box, type the user security level needed to write new tag
values. This applies to all tags that are made writeable.
9. You may choose to decrease the data refresh rate to improve application performance,
especially in non-critical applications where alarms are uncommon and/or tag values do
not change frequently. The refresh rates for Alarms and for Process information can be
adjusted separately — in the corresponding Refresh Rate text-box, type the new rate in
seconds.
10. Click OK where you are done.
The following screenshot show Mobile Access enabled with a selection of tags:
http://server_address/SMA/LogOn.asp
• If the IIS home directory is set to the \Web\SMA sub-folder in your project folder, then
the URL is
http://server_address/LogOn.asp
The first page is a standard security login, similar to the LogOn dialog in your project. Log on
with your Visual Designer username and password (not your Windows user account), and
then SMA Main Menu is displayed.
Main Menu
The Alarms table shows the currently active alarms in your project. To acknowledge an
alarm from your mobile browser, simply click on the alarm name.
Process
You can use the Process table to configure set points, turn pumps on and off, send
messages to users — anything that involves writing to tags. To write to a tag, simply click on
the tag value.
Note: By default, a user session will automatically expire after 10 minutes (600 seconds)
of inactivity. If you want a user to be able to stay logged on, then open the
file \Web\SMA\config.inc in your project folder and change the parameter
logonExpiration to the desired period in seconds.
For example, if you want a user to stay logged on for up to four hours, then change
the parameter to:
logonExpiration = 14400
Please note that as long as a user is logged on, he counts against the number of SMA
Clients in the runtime license. If too many users stay logged on for extended periods,
then you may run out of available connections.
Layout Tool
Click the Layout tool to open the Layout tab.
This interface displays all screens currently open in the Screen Editor and allows you to:
• Modify the Screen Attributes: Right-click on the screen displayed on the Layout tab
and use the alignment options or the Screen Attributes link to modify the screen position.
You can also click and drag the screen to change its position (Top and Left) or resize it
(Width and Height).
• Visualize how the screens fit together during runtime. This option is especially useful
when creating pop-up/dialog screens or groups of screens.
Note: The screens open in the Layout tab according to the order that they are open in the
development environment. When you change the position of the screen tabs in the
development environment (to the left or to the right), you will change the order in
which these screens will be displayed in the Layout tab.
Note: Right-click on the title of the Layout tab to display the option to enable/disable the
Auto Scale. If you enable this option, the screens will be auto-scaled automatically to
fit in the Layout tab.
Editing
The Editing group (see figure on the left) provides tools for general screen editing.
Selection
On the Graphics tab of the ribbon, in the Editing group, click Selection to display a mouse
cursor that you can use to select and move objects on the screen.
On the Graphics tab of the ribbon, in the Editing group, click Disable Drag.
To replace all occurences of a tag in a screen object, double-click the object to open its
Object Properties dialog and then click Replace.
All of these methods will open the Replace dialog, which is descibed below.
You can replace one or more tags by clicking the Whole Tag Name tab. Current tags used
are displayed. The original tag names are shown in the From column on the left, and you can
enter your new tag names in the To column on the right.
Note that this does not rename or delete any tag — it only replaces the tags used in the
object with other tags from the database.
You can also replace one or more strings (e.g., button captions, descriptive text) by clicking
the String Value tab.
Pushpin When the pin button is released, the focus is passed to the object on the screen
as soon as that object is selected. When the pin button is pressed, the focus is
kept on the Object Properties window even when you click the objects on the
screen.
Replace Launches the Replace dialog, where you can replace strings, tags or properties
for the selected object or group of objects.
Hint Tooltip displayed during runtime, when the user hovers the mouse cursor over
the object. This can be used to provide quick-help to the user.
The text in the Hint field is also temporarily written to the Hint system tag,
so that you can trigger actions based on the value of this tag when the mouse
cursor is moved over a specific object.
To show hints/tooltips during runtime, the Enable Tooltip option must be
selected in the Project Settings dialog. You can enable/disable this feature
separately for full project viewers (Viewer on the Project tab of the ribbon) and
for thin clients (Thin Client on the Project tab of the viewer).
The combo-box at the right side of the dialog allows you to select the specific
object, group of objects, or animation that must be edited.
Grid Settings
To show/hide the grid in the screen editor, click Grid Settings on the Graphics tab of the
ribbon and then click View Gridlines on the shortcut menu.
To edit the grid settings, do one of the following:
• Click Grid Settings on the Graphics tab of the ribbon and then click Grid Settings on the
shortcut menu; or
• Right-click anywhere in the screen editor and then click Grid Settings on the shortcut
menu.
Either method will open the Grid Settings dialog:
Undo
Select Undo to cancel the last action performed (and up to 20 actions taken prior to the last
action) while working on a screen. (Object Properties actions do not increase Undo steps.)
Note: Using the Undo menu option is the same as using Undo tool located on the
Standard toolbar.
Format tab
The Format tab of the ribbon is used to format and arrange objects in a project screen.
Note: This tab is available only when you've selected one or more objects in a project
screen.
The tools are organized into the following groups:
• Arrange: Arrange objects in a project screen, including bring to front and send to back,
group, align, and rotate.
• Position: Precisely adjust the position of a screen object in a project screen.
• Size: Precisely adjust the size of a screen object.
• Style: Change the fill and line color of a screen object.
• Fonts: Change the caption font of a screen object.
Shapes
The Shapes group provides the following tools, which you can use to create polygons,
rectangles, lines, and other objects for your screen.
Line object
On the Graphics tab, in the Shapes group, click Line to draw an orthogonal line in the
drawing area, as follows:
1. Click the left mouse button to set the starting point of the line.
2. Drag the cursor to adjust the line size.
3. Click again to place the object.
4. To view the object properties, double-click on the object. The Object Properties dialog
displays as follows.
Use the Object Properties dialog to specify the following parameters for the orthogonal line:
• Line: Specify a line style by clicking the No Line, Solid Line, or Dashed Line button.
• Color: Specify a line color by clicking the Color button. When the Color dialog opens,
click a color to select it and then close the dialog.
• Weight: Specify the line width (in pixels) by typing a number representing the line width
into the text box.
2. Move the cursor to a new location and click again to place the second vertex.
3. Repeat this process until you create the desired polygon shape.
4. Double-click to stop drawing the polygon.
To change the shape of a polygon after you've drawn it, select it and drag any of its
points.
Note: If a polygon's individual points are not draggable, they may be grouped. To
ungroup the points, right-click on the polygon and choose Ungroup from the
shortcut menu.
To view the object properties, double-click on the polygon object and the Object
Properties dialog is displays as follows.
Use the Object Properties dialog to specify the following parameters for the polygon:
• Line: Specify a border line style by clicking the No Line, Solid Line, or Dashed Line
button.
• Color: Specify a border line color by clicking the Color button. When the Color dialog
opens, click on a color to select it and then close the dialog.
• Weight: Specify the borderline width (in pixels) by typing a number representing the line
width into the text box.
Use the Object Properties dialog to specify the following parameters for the polygon:
• Line: Specify a border line style by clicking the No Line, Solid Line, or Dashed Line
button.
• Color: Specify a border line color by clicking the Color button. When the Color dialog
opens, click a color to select it and then close the dialog.
• Weight: Specify the borderline width (in pixels) by typing a number representing the line
width into the text box.
• Fill: To specify whether the polygon is filled, click No Fill or Fill.
If you enable the Fill option, you can specify a fill Color by clicking on the Color button.
When the Color dialog displays, click a color to select it and close the dialog.
Rectangle object
On the Graphics tab, in the Shapes group, click Rectangle to create rectangles, as follows:
1. Click in the drawing area and drag the mouse/cursor to draw the rectangle.
2. Release the mouse button when the rectangle is the size you want.
3. Double-click on the object to view the Object Properties dialog.
Use the Object Properties dialog to specify the following parameters for the orthogonal line:
• Type: Specify a border line style by clicking on None, Solid, Dashed, Etched, Raised or
Sunken.
• Color: Specify a border line color by clicking the Color button to open the Color dialog.
Click the color to select it, and then close the dialog.
• Weight: Specify a border line width by typing a number representing the line width (in
pixels) into the text box provided.
• Fill: Specify whether to fill the rectangle by clicking No Fill or Fill.
If you select the Fill option, specify a fill color by clicking on the Color rectangle. When
the Color dialog displays, click a color to select it and close the dialog.
• Color: Specify a fill color by clicking the Color button to open the Color dialog. Click a
color to select it, then close the dialog.
• Caption: Press this button to open the Caption dialog where you can edit the text that
can be written inside the rectangle object:
• Caption: Enter the text that you want to display inside the rectangle object. You can
include a tag by enclosing it in curly brackets (e.g., {tagname}).
• Fonts: Specify a font style for the caption by clicking the Fonts button.
• Align: Specify the alignment for the caption of the rectangle.
• Multiline: Allow the caption of the rectangle to be shown in more than one line,
when checked.
• Auto Format: When checked, if the caption includes a decimal value enclosed
by curly brackets (e.g., {1.2345}) or a tag of Real type (see Caption above),
then the value will be formatted according to the virtual table created by the
SetDecimalPoints function.
• Wrap Text: When checked, the object automatically wraps the text when necessary.
• Auto gray out: Turns the caption of the rectangle to gray when the Command
animation applied to the rectangle is disabled by the Disable field or due to the
Security System.
• Enable translation: Click (check) to enable translation during runtime using the
Translation Tool.
Note: You cannot use the rounded rectangle tool to create a bar graph for projects running
on Windows Embedded target systems.
Note: A rounded rectangle has one extra handle in the bottom-right corner, which enables
you to modify the arc angle.
Use the Object Properties dialog to specify the following parameters for the orthogonal line:
• Line: Specify a borderline style by clicking the No Line, Solid Line, or Dashed Line
button.
• Color: Specify a borderline color by clicking the Color button to open the Color dialog.
Click the color to select it and then close the dialog.
• Weight: Specify a borderline width by typing a number representing the line width (in
pixels) into the text box provided.
• Fill: Specify whether the rectangle is filled by clicking No Fill or Fill.
If you select the Fill option, specify a fill color by clicking on the Color button. When the
Color dialog displays, click a color to select it and close the dialog.
• Color: Specify a fill color by clicking the Color button to open the Color dialog. Click a
color to select it, then close the dialog.
• Caption: This option is not enabled for this object.
Ellipse object
On the Graphics tab, in the Shapes group, click Ellipse to draw ellipses, chords, arcs, and
rings (see the following figures).
Note: The Ring style is particularly useful when you are creating plumbing drawings.
To create an ellipse, use the following steps:
1. Click in the drawing area and drag the mouse/cursor to create an ellipse shape.
2. Release the mouse button to stop drawing the ellipse.
3. Use the Object Properties dialog to change the shape to a chord, arc, or ring.
4. Double-click on the object to view the Object Properties dialog.
Use the Object Properties dialog to specify the following parameters for the ellipse:
• Style: Specify the object style by selecting Ellipse, Arc, Chord, or Ring from the drop-
down list. Next, select Left-Bottom, Left-Top, Right-Bottom, or Right-Top from the
Style list to choose the quadrant into which the ellipse is drawn.
For example to represent a half-circle pipe, create two Ring objects. Specify one as Left-
Bottom and the other as Right-Bottom then join the two objects to create a half-pipe.
• Fill: To specify whether the ellipse is filled, click No Fill or Fill.
If you select the Fill option, specify a fill color by clicking on the Color button. When the
Color dialog displays, click on a color to select it and close the dialog.
• Line: Specify a line style for the ellipse border by clicking the No Line, Solid Line, or
Dashed Line button.
• Color: Specify the ellipse borderline color by clicking the Color button to open the Color
dialog. Click the color to select it, then close the dialog.
• Weight: Specify a line width for the ellipse border by typing a number representing the
line width (in pixels) into the text box provided.
Active Objects
The Active Objects toolbar provides the following tools, which you can use to create
interactive objects. Active objects typically require more parameters than simple shapes.
Text object
On the Graphics tab, in the Active Objects group, click Text to create text objects, as
follows:
1. Click in the drawing area. When a cursor displays, you can type a line of text.
2. After entering the text string, double-click on the new text object to view the Object
Properties dialog.
• Enable translation (optional): Specify an external translation file for the text by clicking
(checking) this box.
Button object
The Button object
On the Graphics tab, in the Active Objects group, click Button to create custom-sized
buttons, as follows:
1. Click in the drawing area and drag the mouse/cursor to create the button shape.
2. Release the mouse button when the button is the size you want.
3. Double-click on the object to view the Object Properties dialog.
Use the Object Properties dialog to specify the following parameters for the button:
• Caption: Specify a caption by typing the text into the text box. You can include a tag by
enclosing it in curly brackets (e.g., {tagname}).
• Style: Select a style for the button:
• 3D Sharp: A raised, rounded button with somewhat sharpened corners, suitable for
touchscreen displays.
• 3D Soft: A raised, rounded button with softened corners, suitable for touchscreen
displays.
• OS Like: A button styled to match the operating system on which the project client
is running, suitable for Windows desktops running the Web Thin Client or Secure
Viewer.
• Standard: The standard, flat button from the previous versions of Visual Designer.
• Font style
• Size
• Effects
• Color
• Script style
• Images: Insert an image file into the button button by clicking the Images button.
When the Images dialog is displayed, specify the following parameters:
• File: Type the file path to the image file. You can also click the browse button to the
right of the box, to open a standard Windows file browser.
• By default, the image is automatically resized to fit the button. To change this, in the
Size list, select Custom, and then configure the desired Width and Height (in pixels)
of the image.
• Alignment: Select which side of the button that the image should be aligned with.
• Gap: Specify the gap (in pixels) between the image and the side of the button.
• Transparent Color: Select which color in the image should be transparent. The
background color (see above) will show through these areas.
• Advanced: Specify advanced settings for the button by clicking the Advanced button.
When the Advanced dialog is displayed, specify the following parameters:
• Enable translation (optional): Specify an external translation file for the button label
by clicking (checking) the box.
• Multiline: Allow the caption of the button to be shown in more than one line, when
checked.
• Wrap Text: When checked, the object automatically wraps the text when necessary.
• Auto gray out: Turns the caption of the button to gray when the Command
animation applied to the button is disabled by the Disable field or due to the Security
System.
• Auto Format: When checked, if the caption includes a decimal value enclosed
by curly brackets (e,g, {1.2345}) or a tag of Real type (see Caption above),
then the value will be formatted according to the virtual table created by the
SetDecimalPoints() function.
• Command: Click to automatically apply a Command animation to the button and then
switch to the animation's properties.
Pushbutton object
On the Graphics tab, in the Active Objects group, click Pushbutton to create a Pushbutton
object using the Command animation with an object or pre-configured pushbuttons.
Visual Designer provides the following pre-configured button types, all of which mimic the
standard panel buttons of the same name:
• Momentary (default): Changes state (Open or Closed) when you press the button and
reverts to its initial state when you release the button. This button type always displays in
its normal position when you open the screen.
• Maintained: Changes state (Open or Closed) when you press the button but does not
revert to its initial state when you release the button. You must press the button again to
change its present state. This button type maintains its state across screen changes.
• Latched: Changes state (Open or Closed) when you press the button and remains in this
state until you release it by changing the Reset tag.
• Reset text box (active for Latched pushbutton type only): Type a tag to control the
button's latched state, as follows:
• Type a zero and the button will remain in a latched state after you press it.
• Type a nonzero value and a latched button will become unlatched after you press it.
You must reset the tag value to zero before you can press the button again.
• Key area: Specify a keyboard key or create a key combination to toggle a pushbutton
when you have no pointing device (mouse or touch screen) or if you want to create
shortcut keys in addition to pushbuttons.
• Key drop-down list: Type a key in the text box or select a non-alphanumeric key from the
drop-down list. Enter a single character or key only. Numbers are not valid entries for this
field.
Click (check) the Shift, Ctrl, or Alt box to create a combination key, meaning the Shift,
Ctrl, or Alt key must be pressed with the key specified in the drop-down list.
Click the browse button … to open the Key Modifier dialog, which enables you to
modify your combination keys. You can choose Left, Right or Left or Right to specify
the position on the keyboard of the Shift, Ctrl or Alt key in the combination key. If you
choose Left or Right, the command will be executed any time either of these keys is
pressed in combination with the key specified in the drop-down list.
• Disable text box: Type a tag using a nonzero value to disable this pushbutton so that
pressing the button has no effect. This box is empty by default, which also enables the
Command animation.
• Ext Trans. checkbox: Click (check) to translate the text automatically using pre-
configured translation worksheets. (See the Translation Tool for more information.)
• Security text box: Type a value to specify a security level (0 to 255) for this button. If the
user does not have the specified security level, the button becomes inactive. If the user
has the appropriate security level, or you leave this field blank, the button remains active.
• Config button: Click to open the Configuration dialog, which allows you to specify style
and state parameters for the pushbutton:
You can use the Style and Effect parameters in combination to create four different
buttons, as shown in the following figures:
Note: To change the default size of the check box, edit your project file
(project_name.app) to add the following setting:
[Objects]
CheckBoxSize=height_in_pixels
Doing this will change the size of all check boxes in your project, so be careful. Also,
this only works for projects running in the project viewer (Viewer.exe); it does not
work for projects running in CEView or the Web thin client.
Use the Object Properties dialog to specify the following parameters for the Check Box
object:
• Caption: Specify a caption by typing the text into the text box. You can include a tag by
enclosing it in curly brackets (e.g., {tagname}).
• Fonts: Specify a font style for the caption by clicking the Fonts button.
• E-Sign: When this option is checked, the user will be prompted to enter the Electronic
Signature before executing the command.
• Confirm check box: Click (check) this box to ensure Visual Designer prompts you to
confirm the action at runtime.
• Key drop-down list: Select a key from the list to associate that keyboard key with the
object or group of objects. You can then press this key to check/uncheck the check box.
• Click (check) the Shift, Ctrl, or Alt box to create a combination key, meaning the
Shift, Ctrl, or Alt key must be pressed with the key specified in the drop-down list.
• Click the browse button … to open the Key Modifier dialog, which enables you to
modify your combination keys. You can choose Left, Right or Left or Right to specify
the position on the keyboard of the Shift, Ctrl or Alt key in the combination key. If you
choose Left or Right, the command will be executed any time either of these keys is
pressed in combination with the key specified in the drop-down list.
• Disable field: Type a tag or expression into this field to enable and disable the object.
You disable the Check Box object when you enter a value different from 0.
• Security field: Type a value in this field to specify a security level for the object, as
defined under Security. When a user logs on, and does not have the specified security
level, Visual Designer disables the object.
• Tag field: When the user clicks on the check box during runtime, the value of this tag is
updated. If no Feedback was specified, the value of this tag is also used to indicate the
current status of the object.
• True Value field: Specify a value that will be used to change the control to TRUE state
and to indicate that the control is in TRUE state. For more information about states,
please refer to the states table.
• Tri-State: If enabled the control has a third state. The third state will be displayed
when the tag configured in the Feedback field assumes the value specified in the Tri-
State field. If the Feedback field is left in blank, the third state will be displayed when
the tag configured in the Tag field assumes the value specified in the Tri-State field.
CAUTION
The Tri-State field must not be configured with the same value as the True Value
field, nor with an empty string value.
• Feedback:Value that indicates the state of the object (FALSE, TRUE, or TRI-STATE).
When the value of the tag configured in Feedback is equal to the value of the tag
configured in True Value, the state is set to TRUE. When the value of the tag
configured in Feedback is equal to the value of the tag configured in Tri-State, the
state is set to TRI-STATE. When none of these conditions are satisfied, the state is
set to FALSE. If the Feedback field is left in blank, then the tag configured in the Tag
field will be used as the Feedback tag.
• Ext Trans.: When this option is checked, the caption of the object supports the
translation.
• Auto gray out: Turns the caption of the object to gray when it is disabled by the
Disable field or due to the Security System.
• Force: Click (check) this box to force the Tag Database to recognize a tag change
when the user clicks on the object, even if the value of the tag in question does not
change.
• Enable Focus: When this option is checked, the object can receive the focus during
runtime by the navigation keys.
• Push Like: When this option is checked the control is displayed as a button, instead
of the standard check box standard shape.
• Fill Color: Specify the fill color for the button. This option is enabled only when the
Push Like option is checked.
• Auto Format: When checked, if the caption includes a decimal value enclosed
by curly brackets (e,g, {1.2345}) or a tag of Real type (see Caption above),
then the value will be formatted according to the virtual table created by the
SetDecimalPoints function.
Modes of Operation
The Check Box object can operate in two different modes: Normal and Tri-State. For more
information, see Modes of operation for Check Box and Radio Button objects.
1. Click in the drawing area and drag the mouse/cursor to draw the radio button and its
label.
2. Release the mouse button when the object is the size you want.
3. Double-click on the object to view the Object Properties dialog.
Note: To change the default size of the radio button, edit your project file
(project_name.app) to add the following setting:
[Objects]
RadioButtonSize=height_in_pixels
Doing this will change the size of all radio buttons in your project, so be careful. Also,
this only works for projects running in the project viewer (Viewer.exe); it does not
work for projects running in CEView or the Web thin client.
Use the Object Properties dialog to specify the following parameters for the radio button
object:
• Caption: Specify a caption by typing the text into the text box. You can include a tag by
enclosing it in curly brackets (e.g., {tagname}).
• Fonts: Specify a font style for the caption by clicking the Fonts button.
• E-Sign: When this option is checked, the user will be prompted to enter the Electronic
Signature before executing the command.
• Confirm checkbox: Click (check) this box to ensure Visual Designer prompts you to
confirm the action at runtime.
• Key drop-down list: Select a key from the list to associate that keyboard key with the
object or group of objects. You can then press this key to check/uncheck the radio
button.
Click (check) the Shift, Ctrl, and/or Alt boxes to create a combination key, meaning the
Shift, Ctrl, and/or Alt key must be pressed with the key specified in the drop-down list.
Click the browse button … to open the Key Modifier dialog, which enables you to
further modify your combination keys. You can choose Left, Right or Left or Right to
specify the position on the keyboard of the Shift, Ctrl, or Alt key in the combination key.
If you choose Left or Right, the command will be executed any time either of these keys
is pressed in combination with the key specified in the drop-down list.
• Disable field: Type a tag or expression into this field to enable and disable the object.
You disable the radio button object when you enter a value different from 0.
• Security field: Type a value in this field to specify a security level for the object, as
defined under Security. When a user logs on, and does not have the specified security
level, Visual Designer disables the object.
• Tag field: When the user clicks on the radio button during runtime, the value of this tag is
updated. If no Feedback was specified, the value of this tag is also used to indicate the
current status of the object.
• True Value: Specify a value that will be used to change the control to TRUE state and to
indicate that the control is in TRUE state. For more information about states, please refer
to the states table.
• Tri-State: If enabled the control has a third state. The third state will be displayed
when the tag configured in the Feedback field assumes the value specified in the Tri-
State field. If the Feedback field is left in blank, the third state will be displayed when
the tag configured in the Tag field assumes the value specified in the Tri-State field.
CAUTION
The Tri-State field must not be configured with the same value as the True Value
field, nor with an empty string value.
• Feedback: Value that indicates the state of the object (FALSE, TRUE, or TRI-STATE).
When the value of the tag configured in Feedback is equal to the value of the tag
configured in True Value, the state is set to TRUE. When the value of the tag
configured in Feedback is equal to the value of the tag configured in Tri-State, the
state is set to TRI-STATE. When none of these conditions are satisfied, the state is
set to FALSE. If the Feedback field is left in blank, then the tag configured in the Tag
field will be used as the Feedback tag.
• Ext Trans.: When this option is checked, the caption of the object supports the
translation.
• Auto gray out: Turns the caption of the object to gray when it is disabled by the
Disable field or due to the Security System.
• Force: Click (check) this box to force the Tag Database to recognize a tag change
when the user clicks on the object, even if the value of the tag in question does not
change.
• Enable Focus: When this option is checked, the object can receive the focus during
runtime by the navigation keys.
• Push Like: When this option is checked the control is displayed as a button, instead
of the standard radio button standard shape.
• Fill Color: Specify the fill color for the button. This option is enabled only when the
Push Like option is checked.
• Auto Format: When checked, if the caption includes a decimal value enclosed
by curly brackets (e,g, {1.2345}) or a tag of Real type (see Caption above),
then the value will be formatted according to the virtual table created by the
SetDecimalPoints() function.
Modes of Operation
The Radio Button object can operate in two different modes: Normal and Tri-State. For more
information, see Modes of operation for Check Box and Radio Button objects.
If the list is longer that the space allotted, a scroll bar is enabled for the list. During runtime,
if you select a label from the list, the combo-box hides itself and the selected label displays
in the combo box.
Double-click on the combo-box object to open the Object Properties dialog.
• Align combo-box: Click to specify the label alignment (Left, Center, or Right) which
affects the alignment in both the combo box and its list.
• Color box: Click to specify a background color for the combo box. When the Color
dialog opens, click a color to select it, then click OK to close the dialog.
• Drop List Size (Items) field: Enter an integer (or a tag of Integer type) to specify the
number of items that should be displayed at one time when the user clicks on the
combo box. The higher the number of items, the longer the drop list will appear.
Note: If this number is less than the total number of items in the list, then the drop
list will also scroll.
• Decimal Points: Select how decimal values will be displayed on-screen:
• Auto Format: Decimal values will be formatted according to the virtual table
created by the SetDecimalPoints() function.
• Custom: Enter the number of decimal places to display (e.g., 2) for all decimal
values.
• Fonts button: Click to open a standard Font dialog. Use this dialog to change the
characteristics of a message font.
• Security text box: Type a security level for the command (0 to 255). If an operator logs
on and does not have the specified security level, the command becomes inactive. If an
operator logs on and does have the specified security level, or you leave this field blank,
the Command animation remains active.
• Require confirmation checkbox: Click (check) to prompt an operator to confirm a
command during runtime.
• Enable translation checkbox: Click (check) to enable automatic translation of the combo
box labels using the Translation Tool.
• Sort checkbox: Click (check) to display the contents of your array of labels in alphabetical
order. This parameter is available only when you select the Array Tag type.
• E-Sign checkbox: When this option is checked, the user will be prompted to enter the
Electronic Signature before executing the animation.
• Input Enabled checkbox: Click (check) to allow an operator to select a label by typing the
contents of that label into a tag in the Label field.
• Virtual keyboard: Virtual Keyboard type used for this object. You need to select the
Virtual Keyboard option in the Viewer settings (Viewer on the Project tab of the ribbon)
before configuring the Virtual Keyboard for this interface.
Data Sources
Use the Data Sources dialog to configure the items/labels that will be displayed in the
Combo Box object.
• Type combo box: Select the type of data source that you want to use, and the click the
Settings… button to configure the source. Each type of source is described in detail
below.
• Field field (for Text File and Database only): Specify which field/column of the data
source to read from.
• Reload field (for Text File and Database only): Enter a tag name. When the value of the
specified tag changes, the combo box will reload the labels from the data source.
Type: Static Labels
When Type is set to Static Labels, you can configure the following settings:
Enter your labels — with one label per line — just as if you were editing a plain text file. You
can include tags or expressions in a label by enclosing them in curly brackets. For example:
Tank #1 in area {AreaNameTag}.
The labels are not sorted in any way, so be sure to put them in the order you want them
displayed during runtime. The first line is position 0, the second line is position 1, and so on.
• Array Tag: Enter the name of an array tag of String type that contains the items for the
combo box.
• Number of Items: Specify how much of the array should be displayed in the combo box.
Keeping in mind that the combo box counts array index 0 as the first item, if you enter a
value of 4, then the combo box will display array index 0 through array index 3.
Click OK when you're done.
Type: Text File
When the Type is set to Text File, you can configure the following settings:
• File: Enter the name of the text file source. You can either type the file name and its path
or click the … button to browse for it. (If the file is stored in your project folder, then you
can omit the path in the name.)
Note: You can configure tag names between curly brackets (e.g., {TagName}) in the File
field.
• Delimiters: Set the delimiter(s) used in the data source file. For instance, if the data will
be read from a CSV (comma separated values) file, you would select the Comma option.
You can even choose a custom delimiter by checking the Other option and typing the
custom delimiter in the field beside it.
Click OK when you're done.
Type: Database
When the Type is set to Database, you can configure the following settings:
Please refer to the Database Configuration dialog for further information about this dialog.
Note: You also can open the Object Properties dialog, by right-clicking on the List Box
object or by highlighting the object, pressing the Alt+Enter keys, and selecting
Properties from the resulting shortcut menu.
You can use this dialog to specify the following parameters:
• Value drop-down list (located below the Replace button): Click to select one of the
following the tag values used to index the message list.
• Boolean
• Integer (default)
• LSB (Least Significant Bit)
Note: For more information, see the discussion about the State field on the
Messages Configuration dialog.
• Messages button: Click to open the Messages Configuration dialog.
• User Enable text box: Type a tag, expression, or a (nonzero) number to select a message
in the runtime project. The default is1 (true or enabled).
• Control Enable text box: Type a tag, expression, or a (nonzero) number to select a
message in the runtime project — depending on the current value of the Read/Search
Tag. The default is1 (true or enabled).
Visual Designer bases this parameter on the Value field (in the Messages Configuration
dialog) that you associate with the selected message. Enabling this field allows tag
changes triggered by the process to affect which messages you can select.
• Read/Search Tag text box: Type an integer or a Boolean tag to point to a selected
message based on the message Value field (in the Messages Configuration dialog).
You can use the Control Enable and User Enable fields to control whether the operator
or a process can alter this tag.
• Write Tag text box (optional): Type a string tag to receive the Message value of the last-
selected message. When you close and reopen the screen containing a List Box object,
Visual Designer uses this tag value to determine the last message selected in the list
box.
• E-Sign checkbox: When this option is checked, the user will be prompted to enter the
Electronic Signature before executing the animation.
• Row checkbox: Click (check) to include set up and set down arrows in the List Box
object scroll bar.
• Page checkbox: Click (check) to include page up and page down arrows in the List Box
object scroll bar.
• Start/End checkbox: Click (check) to include home and end arrows in the List Box object
scroll bar.
• List wrap checkbox: Click (check) to continue displaying and scrolling the message list
(starting at the opposite end) after you scroll to the beginning or end of the list.
• Enter Reqd checkbox: Clicking (checking) this box allows you to select messages using
the Enter key only. It prevents the Tab key from selecting messages.
• Color boxes: Click a color box to open the Color dialog or the 16-color Color Selection
dialog. Either dialog allows you to specify or change colors for the List Box object. Click a
color to select it and then click OK to close the dialog.
• Highlight Color box: Specify a color for highlighting messages (default is blue).
• Text Color box: Specify a color for highlighting message text (default is black).
• Win Color box: Specify a color for the list box background (default is white).
• Border Color box: Specify a color for the list box border (default is black).
Messages Configuration Dialog
• Auto Format: When checked, if a message includes a decimal value enclosed by curly
brackets (e,g, {1.2345}) or a tag of Real type (see Message above), then the value
will be formatted according to the virtual table created by the SetDecimalPoints()
function.
• LSB (least significant bit): Provides 32 valid states (32 bits in an integer value). Use
this selection when you want to display different messages based on which bit from
an integer tag is set. If more than one bit from the Integer tag is set simultaneously,
the message associated with the least significant bit that is set (value 1) will be
displayed.
Note: If Multistate Pushbutton is the Smart Message type, only 16 different
messages can be associated with the object, even for Integer or LSB values.
• Read Tag/Expr text box: Enter the name of an integer or a Boolean tag. The value of this
tag will determine which message will displayed by the object during runtime.
• Write Tag text box (optional and available for Multistate Pushbutton only): Enter the
name of an integer or a Boolean tag. The value associated with the message currently
displayed by the object is written to this tag.
• Align: Select the alignment of the text displayed by the Smart Message object.
• Key area (optional and available for Multistate Pushbutton only): Shortcut used to go
to the next message (step) using a keyboard when the Multistate Pushbutton type is
selected. This option is especially useful when creating projects for runtime devices that
do not provide a mouse or touch-screen interface, when the keyboard is the only physical
interface available to interact with your project during runtime.
• Event drop-down list (available for Multistate Pushbutton only): Select one of the
following options to specify when the message is changed:
• On Down: Switch to the next message when you click on the object (default).
• While Down: Switch to the next message continuously while you hold the mouse
button down on the object.
• On Up: Switch to the next message when you release the mouse button on the
object.
• E-Sign (available for Multistate Pushbutton only): When this option is checked, the user
will be prompted to enter the Electronic Signature before executing the animation.
• Security (available for Multistate Pushbutton only): System Access Level required for
the object/animation.
• No line: When this option is checked, the line border of the object is not visible.
• Line Weight: Defines the thickness of the line drawn around the object (the border).
• Fonts: Launches the Fonts dialog, where you can configure the font settings for the text
displayed in the object.
• Config…: Launches the Configuration dialog, where you can configure the messages
for the object, as follows:
• Data Source: The messages displayed by the object can be either configured directly
on the object (Data Source = Static) or can be read from an external text file (Data
Source = Text File). When the Data Source = Static, the Configuration dialog is
displayed as pictured above, and you can configure all the settings on the grid. When
the Data Source = Text File, the Configuration dialog displays a field for entering
the path and name of the file from which the messages will be read (the source file).
See "Source File Format" below for more information about the format of the text file
supported by the Smart Message object when the Data Source = Text File.
• Enable translation: Click (check) to enable translation during runtime using the
Translation Tool.
• Auto Format: When checked, if a message includes a decimal value enclosed by
curly brackets (e,g, {1.2345}) or a tag of Real type (see Text/Message below),
then the value will be formatted according to the virtual table created by the
SetDecimalPoints function.
The following table describes the meaning of the properties associated with each message,
regardless of the Data Source:
Property Description
Text/Message Message (text) that will be displayed when selected during runtime. You can include tags in a
message by enclosing them in curly brackets (e.g., {tagname}).
Value You must associate a unique value with each message. during runtime, the object will display
the message associated with the value that matches the value of the tag configured in the Read
Tag field. If there is no such message, the message configured in the first row (State = Error)
displays during runtime. When the object Type is set as Multistate Pushbutton, the value
associated with the current message is also written to the tag configured in the Write Tag field
(if any).
Text (FG) Foreground color for the messages displayed during runtime.
Text (BG) Background color for the messages displayed during runtime.
Text Blink If checked, the message text will blink during runtime.
Rec (FG) Line color (Border) for the rectangle behind the message.
Rec (BG) Background (Fill) color for the rectangle behind the message.
Rec Blink If checked, the rectangle behind the message will blink during runtime.
Graphic File Path and name of the bitmap file (*.BMP) (if any) that will be displayed when the message
associated with it is selected during runtime. If you do not specify the path, the bitmap file must
be stored in your project folder.
Transparent Select the color that will be transparent in the graphic file, if the En. Transparent checkbox is
checked.
En. Transparent If checked, the color selected in the Transparent field will be set as transparent in the graphic
file.
Note: The properties Graphic File, Transparent and En. Transparent are not available for
the Message Display type.
Note: You can copy data from this dialog and paste it into an Excel worksheet, and vice
versa.
Source File Format
This section describes the format of the text file supported by the Smart Message object
when the Data Source = Text File. The main advantage of using an external text file instead
of static values is that it gives you the flexibility to change the messages during runtime, by
pointing to a different text file, or even by changing the content of the text file dynamically.
The text file must be created in the CSV format (comma separated values), where the
comma character ( , ) is used to divide the columns (data) in each line (row) of the file.
Therefore, you can use any CSV editor such as Microsoft Notepad and Microsoft Excel to
create the CSV file with the messages and their properties for the Smart Message object.
The description of each property associated with the messages is provided in the Smart
Message section. The order of the data in the CSV file is described in the following table:
1 Text/Message -
2 Value -
3 Text (FG) 0
4 Text (BG) 16777215
5 Text Blink 0
6 Rec (FG) 8421376
7 Rec (BG) 16777215
8 Rec Blink 0
9 Graphic File -
10 Transparent 0
11 En. Transparent 0
When configuring text messages that have the comma character as part of the message,
you must configure the whole message between quotes (e.g., "Warning, Turn the
motor Off" ); otherwise, the comma will be interpreted as a data separator instead of as
part of the message.
• The first line of this file is equivalent to the State = Error. In other words, if there is no
message associated with the current value of the tag configured in the Read Tag field,
the message configured in the first row (State = Error) is displayed during runtime.
• The data configured in the Value column of the first row from this file is irrelevant. This
row must always be configured, regardless of the object type (even for Multistate
Pushbutton).
• Only the Text/Message and Value columns are mandatory. The other columns are
optional, and the default values will be used if you do not specify any value for them (see
table).
• The fields Text(FG), Text(BG), Rec(FG), Rec(BG) and Transparent can be configured
with the code of the color associated with it. The code can be entered directly in decimal
format (e.g., 255) or in hexadecimal format using the syntax #value (e.g., #0000FF).
• The fields Text Blink, Rec Blink and En. Transparent can be configured with Boolean
values 0 or 1 (0 = Unchecked; 1 = Checked), or with the keywords FALSE or TRUE
(FALSE = Unchecked; TRUE = Checked).
Example:
Error Message,,0,16777215,1,8421376,16777215,1,error.bmp,0,0
Message Zero,0,0,16777215,0,8421376,16777215,0,open.bmp,65280,1
Message Ten,10,0,16777215,0,8421376,16777215,0,closed.bmp,65280,1
Message Twenty,20,0,16777215,0,8421376,16777215,0,,0,0
Message Thirty,30,0,16777215,0,8421376,16777215,0,,0,0
Note: You can use the Smart Message editor (Data Source = Static) to configure the
messages, values and colors. To do so, select the configuration, copy it and paste it
into an Excel worksheet. Then, you can save the Excel worksheet as a CSV file (File
> Save As). This procedure provides you with a user friendly interface for configuring
the color codes.
Libraries
Symbols
The Library is a visual browser for all of the Symbols that are available to be inserted in a
project screen. To open the Library window, do one of the following:
• On the Graphics tab of the ribbon, in the Libraries group, click Symbols; or
• In the Graphics tab of the Project Explorer, double-click Symbols.
The Library is divided into two main directories: the Project Symbols directory contains
the same user-made Symbols that are saved in the Symbols folder of the current project;
and the System Symbols folder contains all of the premade Symbols that are installed with
Visual Designer, sorted by category (e.g., Buttons, Meters, Tanks).
To select a Symbol and place it in a project screen:
1. Find the Symbol you want in the Library and then double-click it. The Library window will
automatically close and the mouse cursor will change to indicate that you have a Symbol
waiting to be placed.
2. Return to the project screen where you want to place the Symbol.
3. Click anywhere in the project screen to place the selected Symbol.
4. Edit the Symbol's Object Properties as needed, including any Custom Properties.
For more information, please see Inserting a Symbol in a Screen.
Making a User-Made Symbol Available to Other Projects
User-made Symbols are normally available only in the project where they were initially
created and saved — that is, the Project Symbols directory of the Library is specific to each
project. However, you can send a user-made Symbol to the System Symbols directory, to
make it available to all projects:
1. Right-click on the Symbol file ( .sym ) in the Symbols folder and choose Send to
System Symbols from the shortcut menu. A standard Save As dialog is displayed,
pointing to the \Symbol directory of Visual Designer (instead of the \Symbols directory
of the current project).
2. Choose a location to save the Symbol file. You can choose one of the existing categories/
directories, or you can create a new one.
3. Click Save. The Symbol file is saved chosen location and the Symbol is displayed in
System Symbols directory of the Library.
Note: It is not necessary to make a Group out of two or more Objects before saving
them as a Symbol. Saving the Objects together as a Symbol effectively groups
them.
There is a situation, however, where you may want to group the Objects first. A Symbol
can have only one Hint. If more than one Object has a Hint configured on it (in the
Object Properties), those Hints are not shown when the Objects are saved together as
a Symbol. To specify a Hint for the Symbol as a whole, you must first group the Objects
and then configure the Hint on the Group. That Hint will carry through when you save the
Group as a Symbol.
3. Right-click on the selection, and then click Create Linked Symbol on the shortcut menu.
4. A standard Save As dialog is displayed, and you are prompted to give the new Symbol a
file name. Symbol files ( .sym ) are saved in the \Symbol folder of your project.
5. Click Save to save the file. The Symbol appears in the Symbols folder, in the Graphics
tab of the Project Explorer.
The Symbol also appears in the Project Symbols folder of the Library.
The Symbol is now ready to be reused in your project, but the way it is currently saved,
every copy will have identical properties. You must now define Custom Properties on the
Symbol — that is, the properties you want to be able to customize each time you reuse the
Symbol.
Editing the Master Symbol
You can edit a master Symbol after you've initially saved it, to add or delete Objects in the
Symbol or to define Custom Properties on it. Remember that any changes you make to the
master Symbol will automatically propagate to every linked copy in every project.
Note: There is one exception. If you change the Hint on a Symbol — as described in
"Creating a Master Symbol" — then the change will appear only on new instances of
the Symbol. Existing instances will be unchanged.
To edit a Symbol:
1. Right-click on the Symbol file in the Symbols folder, and then choose Edit from the
shortcut menu.
Note: You can also right-click on any instance of the Symbol and choose Edit Linked
Symbol from the shortcut menu.
The Symbol file is opened for editing in its own window. This Symbol Editor works in
the same way as a regular Screen Editor, except that every Object in the window is part
of the Symbol. If you add, move or delete Objects in the Symbol Editor, then you may
change the size or shape of the Symbol and disrupt the layout of any Screens where it is
used.
Besides adding, moving or deleting Objects in the Symbol, you can also edit the Object
Properties as you normally would. You may want some properties to be the same in
every instance of the Symbol, but other properties need to be customized according to
where and how the Symbol is used. In this example, you probably want to customize the
captions for the three check boxes, the tags with which the check boxes are associated,
and the caption for the pane itself.
2. Select the first Object in the Symbol and open its Object Properties. For example, the
first check box:
3. In any field where you would normally configure a tag, expression, or value, you can
instead define a Custom Property using the sytax…
#[Category.]Property:[Value]
…where:
• Category is an optional name for a collection of related properties, such as all
captions or all Check Box values. If you do not specify Category for a property, then
it will be automatically listed under the "Main" category.
• Property is a label to identify the specific property. Property is required for each
property, and it must always be followed by a colon (:).
• Value is an optional default value for the property.
Note: All Tag/Expression syntax rules apply to Value, including tag names, pointers,
arrays, strings, numerical and boolean values, and scripting functions.
In the following example, we want to be able to customize which tag will be set when
the Check Box is selected or cleared. So, in the Tag field, type #Option1.Tag: as
shown.
Again, when you go to complete the properties on an instance of the Symbol, they will
appear like this:
5. Repeat steps 2 through 4 as needed, to define the rest of the Custom Properties on the
Symbol.
In this example, the finished Symbol has all of the following properties:
When assigning values to the Custom Properties of the Symbol on the screens, the user can
read the description as Tooltips just by moving the mouse cursor on the property name, as
illustrated on the following picture:
2. Choose a location in which to save the Symbol file. You can choose one of the existing
categories/folders, or you can create a new one.
3. Click Save. The Symbol file is saved in the specified location and the Symbol is displayed
in the System Symbols folder of the Library.
• On the Graphics tab of the ribbon, in the Libraries group, click Symbols;
• Double-click Symbols in the Project Explorer; or
• Right-click in the screen where you want to insert the symbol, and then click Insert
Linked Symbol on the shortcut menu.
3. Select the symbol from the Symbols Library, and then click in the screen:
Once the Symbol is inserted, you can manipulate it like any other object in the screen.
You can align and distribute it with other Objects, and you can apply Animations to it.
However, the first thing to do is complete the Custom Properties for this instance of the
Symbol.
To see all of the properties at the same time, select the Display properties from all
categories check box.
6. Enter the property values as needed. In this example, the three check boxes are
used to determine whether to alert Tom, Dick and/or Harry. The captions are updated
accordingly, and the check box tags are configured with the first three elements of a
Boolean array called AlertOptions.
7. Click OK to close the Symbol Properties dialog, and then close the Object Properties
dialog.
The Custom Properties are resolved during runtime, as shown below.
Note: Remember, the completed Custom Properties on each instance of a Symbol are
independent from every other instance of that Symbol, but if you make any changes
to the master Symbol file, then those changes automatically propagate to every
instance.
When the dialog opens (as in the following figure), it contains a list of all ActiveX
components that are registered on your PC.
Note: When you use ActiveX controls in your project, your runtime stations should have the
same controls already installed and registered. Stations often have "auto download"
and "auto install" features disabled for security reasons, so they may not be able to get
ActiveX controls that are called by your project. Consult your hardware manufacturer
and ActiveX controls provider for more information about how to manually install
controls.
If you still want to enable automatic download of ActiveX controls, you can do so
by manually editing your project file (project_name.app) to include the following
settings:
[UsedControls]
EnableDownload=1
Count=number of controls
[UsedControl1]
CLSID=class ID of the ActiveX control
Version=version of the ActiveX control
Codebase=URL of the ActiveX control file, or of the .CAB file
that contains the ActiveX control files
RegFile1=name of a specific .OCX or .DLL file within the .CAB
file; see below
RegFilen=name of a specific .OCX or .DLL file within the .CAB
file; see below
…
[UsedControln]
…
The CLSID and Version settings are required for each ActiveX control, and they
must match the ID and version of the actual control file(s) to which Codebase links.
This allows a runtime station to check the control against those that are already
registered. If the settings do not match, then the runtime station may unnecessarily
download the same control again.
If you don't know the CLSID and Version settings for an ActiveX control, you can
find them in the registry key of an already installed and registered control. Search for
the control file in HKEY_CLASSES_ROOT\CSLID in the Windows Registry.
Also, the URL for the Codebase setting can be either absolute or relative to the Web
server's "home" directory. For example:
Codebase=http://server_address/AddOns/IndDateTimePick.ocx
…or…
Codebase=AddOns/IndDateTimePick.ocx
Finally, the Regfile settings are required only if Codebase links to a .CAB file. If
it does, then use one or more Regfile settings to name the specific files within
the .CAB file that must be downloaded and registered.
ActiveX controls are components designed according to a standard. Because Visual Designer
is an ActiveX container, you can configure and run ActiveX controls in the screens created
with Visual Designer. ActiveX controls can provide the following interfaces:
• Properties: Variables whose values can be read and/or written for your project (e.g.,
Object Color, FileName, URL, and so forth)
• Methods: Functions from the ActiveX object that can be triggered by your project (e.g.,
open a dialog, execute a calculation, and so forth)
• Events: Internal messages that can trigger the execution of expressions in your project
(e.g., Mouse_Click, Download_Completed, and so forth)
The name of the properties, methods and events supported by each ActiveX depends on its
own implementation.
There are two different ways to interface your project with the ActiveX control:
• By using the ActiveX functions XGet(), XSet() and XRun()
OR
• By using the Object Properties window to configure the object
Double-click on the ActiveX Control to open the Object Properties dialog.
The Object Properties window displays the name of the ActiveX control. Generally, each
ActiveX control is either a *.dll or a *.ocx file registered in your local computer. You must
assign a name (alias) to the ActiveX control on the Name field (e.g., MyControl). This name is
used to reference the object when calling one of the ActiveX functions that are provided in
the Built-in Scripting Language.
Note: You should not configure two ActiveX controls on the same screen with the same
name. For instance, if you insert two "Windows Media Player" ActiveX controls on the
same screen, and assign the name MyMP1 to one object (Name field), you cannot
assign the same name to the second object on the same screen. You would have to
assign the name MyMP2, for example, to the second object.
The Property Pages button opens the standard window for configuring the Static Properties
(if any). The layout and the options in this dialog depend on the implementeation of each
ActiveX Control. Use this interface to set properties that should not be changed during
runtime (fixed properties).
The Configuration button on the Object Properties window opens dialogs that allow you to
do the following:
• Associate tags to properties of the ActiveX Control;
• Trigger methods from the ActiveX Control based on tag change; and
• Configure scripts, which are executed when Events from the ActiveX Control occur.
• Property: Lists all properties available from the ActiveX object, and indicate their types:
Property Icon Property Type
Boolean
Integer
Real
String
• Tag/Expression: The tag configured in this field is associated with the respective
property of the ActiveX object. The Action column will define whether the value of this
tag will be written to the ActiveX property, or if the value of the ActiveX property will be
written to this tag (or both).
Note: You can configure an expression in this field if you want to write the result of
an expression to the property of the ActiveX object. However, in this case, the
value of the property cannot be read back to one tag (unless you use the XGet()
function). Therefore, an expression is configured in this field, the Scan field is
automatically set to Set.
• Action: Defines the direction of the interface between the tag or expression configured
in the Tag/Expression field and the ActiveX property, according to the following table:
Action Description
Get Read the value of the ActiveX property and write it to the tag configured in the Tag/
Expression field.
Set Write the value from the tag or expression configured in the Tag/Expression field into the
ActiveX property.
Get+Set Executes both actions (Get and Set). However, when opening a screen with the ActiveX
object, Visual Designer executes the Get command before executing any Set command. That
is, the tag configured in the Tag/Expression field is updated with the value of the ActiveX
property when Visual Designer opens the screen where the ActiveX is configured.
Action Description
Set+Get Executes both actions (Get and Set). However, when opening a screen with the ActiveX
object, Visual Designer executes the Set command before executing any Get command.
That is, the ActiveX property is updated with the value of the tag configured in the Tag/
Expression field when Visual Designer opens the screen where the ActiveX is configured.
Note: When the value of the property is "Read-only" (cannot by overwritten by your
project), the Action field is automatically set to Get.
• Scan: Defines the polling method to get values from the ActiveX propreties, according to
the following table:
Scan Description
No The value of the ActiveX property is read and written to the tag configured in the Tag/
Expression field, only when the screen with the ActiveX object is open, and when the
ActiveX object sends a message to Visual Designer to update this tag.
Always Visual Designer keeps polling the value of the ActiveX property and updating the tag
configured in the Tag/Expression field with this value.
Note: Some ActiveX controls are designed to send messages to their containers (e.g., your
project) indicating that a property changed value and the new value should be read
(Get) again. However, other ActiveX controls do not implement this algorithm. In this
case, the only way to get the updated values of the ActiveX properties is to keep
polling these values from the ActiveX control (Scan=Always).
Configuring Methods
The Methods tab provides a grid with the following fields:
• Return: The tag configured in this field receives the value returned by the method (if
any).
Configuring Events
The Events tab provides a grid with the following fields:
CAUTION
When using .NET Components in your project, make sure that the target system (runtime
station) can support the same components and that they are properly installed and
registered. Your project includes links to the .NET Components; however, the installation of
these components on the target system must be done separately. Furthermore, when .NET
Components are used on screens open in remote Thin Clients, the .NET Components must
also be manually installed on the Thin Client stations. The Microsoft Windows operating
system installs a large selection of components by default, but additional components
are offered by third-party providers. Consult your .NET Component provider for further
information about how to install.
3. Select a component from the list, and then click OK to place it in your project screen. You
can also click the Browse… button to find an unregistered component on your computer.
Note: Registered .NET Components are typically stored in the following directory:
C:\WINDOWS\Microsoft.NET\Framework\
However, you can have the application include unregistered components in the
.NET Framework Components dialog by editing the project_name.APP file to
add this parameter:
[Execution Environment]
DotNetControlPath=OptionalPath
For example:
[Execution Environment]
DotNetControlPath=C:\DOTNET CONTROLS BACKUP
Thereafter, the .NET Framework Components dialog will list all registered
components and all components found in the specified directory.
4. By default, a new .NET Control object is placed in the upper-left corner of your project
screen. Click on the object and drag it to where you want it placed.
5. Once the object is placed, double-click on it to open its Object Properties dialog.
The Object Properties dialog shows the name of the .NET Component. You must assign
a name (alias) to the component in the Name box (e.g., CheckBox1). This name is used
to reference the component when using the scripting languages (VBScript and built-in
scripting).
Note: You should not configure two .NET Control objects on the same screen with the same
name. For instance, if you place two CheckBox components on the same screen and
assign the name CheckBox1 to one object (Name field), you cannot assign the same
name to the second object on the same screen. You would have to assign the name
CheckBox2, for example, to the second object.
The Property Pages button opens the standard window for configuring the Static Properties
(if any). The layout and the options in this dialog depend on the implementeation of
each .NET Component. Use this interface to set properties that should not be changed
during runtime (fixed properties).
The Members button on the Object Properties dialog opens additional dialogs that allow
you to do the following:
• Associate tags to properties of the .NET Component
• Trigger methods from the .NET Component based on tag change
• Configure scripts, which are executed when Events from the .NET Component occur
The following sections describe how to configure these interfaces.
Note: Although the Members dialog displays the list of all properties, methods and events,
you only have to configure the items that you need for your project.
The screen shots used in the following sections depict the CheckBox component. Although
the names of properties, methods and events varies by component, the configuration
interface is the same for any .NET Component. The concepts described here apply to all of
them.
Configuring Properties
The Properties tab provides a grid with the following fields:
• Property: List all properties available from the .NET Component, and indicate their types:
Boolean
Integer
Real
String
• Tag/Expression: The tag configured in this field is associated with the respective
property of the .NET Component. The Action column will define whether the value of this
tag will be written to the property, or if the value of the property will be written to this tag
(or both).
• Action: Defines the direction of the interface between the tag or expression configured
in the Tag/Expression field and the .NET property, according to the following table:
Action Description
Get Read the value of the property and write it to the tag configured in the Tag/Expression
field.
Set Write the value from the tag or expression configured in the Tag/Expression field into the
property.
Get+Set Executes both actions (Get and Set). However, when opening a screen with the .NET
Component, Visual Designer executes the Get command before executing any Set command.
That is, the tag configured in the Tag/Expression field is updated with the value of the
property when Visual Designer opens the screen where the .NET Component is configured.
Set+Get Executes both actions (Get and Set). However, when opening a screen with the .NET
Component, Visual Designer executes the Set command before executing any Get command.
That is, the property is updated with the value of the tag configured in the Tag/Expression
field when Visual Designer opens the screen where the .NET Component is configured.
Note: When the value of the property is "Read-only" (cannot by overwritten by your
project), the Action field is automatically set to Get.
• Scan: Defines the polling method to get values from the propreties. For .NET
Components, all properties scan Always by default. That is, Visual Designer keeps
polling the value of the property and updating the tag configured in the Tag/Expression
field with this value.
Configuring Methods
The Methods tab provides a grid with the following fields:
• Parameters: The tags configured in this field are associated with the corresponding
method. If the method does not support any parameter, then the fixed text <None>
is displayed. Otherwise, you can enter the tags that you want to associate with the
parameter. When the method has more than one parameter, you can enter one tag for
each parameter, separating them by a comma (,). For example, TagA , TagB , TagC.
Note: When you click the Browse button ( ), it will display the list of parameters
supported by the method, allowing you to associate one tag with each parameter.
When the method is executed, either the value of the tags are written to the parameters
of the method (input parameters), or, after the method is executed, the .NET Component
writes the value of the parameters to the tags (output parameters).
• Trigger: When the tag configured in this field changes value, the respective method of
the .NET Component is executed.
• Return: The tag configured in this field receives the value returned by the method (if
any).
Configuring Events
The Events tab provides a grid with the following fields:
Linked Picture
On the Graphics tab, in the Libraries group, click Linked Picture to paste a linked picture
onto the active screen, while maintaining a connection to the source. A linked picture is
information (the object) created in a source file (another project or another screen). The
linked picture is automatically updated whenever you update the source file, but the picture
does not become part of the screen. If you put a picture file in a project folder or a sub-
folder, you can download the file with the project to the runtime workstation.
Note: You can associate a linked picture (path and name) to a string tag value so you can
switch from one picture to another dynamically during runtime by modifying the string
tag name.
Command animation
On the Graphics tab, in the Animations group, click Command to add the animation to a
selected object or group of objects. The animation enables you to click on the object or press
a pre-defined key to execute the command at runtime. Double-click on the object to view its
object properties.
The Command animation provides one tag for each one of the events supported by it.
Notice that more than one event can be configured simultaneously for the same Command
animation:
• On Down: Executes the command/script once when the user clicks on the object with
the left mouse button.
• On While: Keeps executing the command/script continuously while the mouse pointer is
pressed on the object. The period (in milliseconds) of execution for the command/script
is set in the Rate field from the Configuration dialog screen, except for the VBScript
option, which is executed as fast as possible.
• On Up: Executes the command/script once when the user releases the left mouse
button on the object.
• On Right Down: Executes the command/script once when the user clicks on the object
with the right mouse button.
• On Right Up: Executes the command/script once when the user releases the right
mouse button on the object.
• On Double Click: Executes the command/script once when the user double-clicks on the
object with the left mouse button.
Note:
• The runtime project handles touchscreen actions the same as mouse pointer
actions.
• The events On Right Down, On Right Up and On Double Click are not
supported in projects running on Windows Embedded target systems.
• When creating a project for a touchscreen device, keep in mind that events On
Right Down and On Right Up cannot be triggered on such devices.
• Type menu: This setting defines the type of action that must be executed by the event
of the Command animation. Notice that each event has its own type. Therefore, the
same Command animation can be configured with different types of action for different
events. The following types are supported:
Type Description
Built�in Language Allows you to configure a script using the Visual Designer built-in language. When this type
is selected, the user can configure up to 12 expressions for each event in the Expression
column. The expressions are executed sequentially from the first row until the last one
when the event is triggered. The result of each expression is written to the tag configured
in the Tag column (if any). Consult the Built-in Scripting Language chapter for more
information.
VBScript Allows you to configure a script using the standard VBScript language. When this type is
selected, the user can configure a script in the VBScript editor for the Command animation.
Consult the VBScript chapter for further information about the VBScript language.
Open Screen Allows you to configure the Command animation to open a specific screen when the event
is triggered during runtime. This type is equivalent to the Open function. You can either
type the screen name in the Open Screen field or browse it. Furthermore, you can type a
string tag between curly brackets {TagName} in this field. When the event is executed, the
project will attempt to open the named screen.
Close Screen Allows you to configure the Command animation to close a specific screen when the event
is triggered during runtime. This type is equivalent to the Close function. You can either
type the screen name in the Close Screen field or browse it. You can also type a string tag
between curly brackets {TagName} in this field. When the event is executed, the project will
attempt to close the named screen.
Set Tag Allows you to configure the Command animation to set a tag when the event is triggered
during runtime. You can either type the tag name in the Set Tag field or browse it. When the
event is executed, the project will write the value 1 to the tag configured in this field.
Reset Tag Allows you to configure the Command animation to reset a tag when the event is triggered
during runtime. You can either type the tag name in the Reset Tag field or browse it. When
the event is executed, the project will write the value 0 to the tag configured in this field.
Toggle Tag Allows you to configure the Command animation to toggle a tag when the event is triggered
during runtime. You can either type the tag name in the Toggle Tag field or browse it.
When the event is executed, the project will toggle the value of the tag configured in this
field.
• Config button: Launches the Configuration dialog, where the Command animation can
be fully configured.
• Back to button: Click to go back to the object properties of the underlying Button object.
Configuration dialog
This dialog allows you to fully configure the Command animation…
The event tabs (e.g., On Down, On While, etc.) and the Type menu are the same as in the
Object Properties dialog described above. The remaining settings are shared for all events:
• Options pane:
• Enable Focus checkbox: When this option is checked, the object that the Command
animation was applied to can receive the focus during runtime by the navigation keys.
• Force checkbox: When this option is checked, any tag that receives a value will
generate events based on its change, even if the value of the tag in question does not
change. For instance, if a tag has the value 0 and the Command animation overwrites
the same value 0 to this tag, any other task in the runtime project will recognize that
this tag changed value (even if it did not) after executing the animation. This option is
useful when you want to make sure that actions driven by tag changes (e.g., Write on
Tag Change from a communication driver) are triggered after the Command animation
is executed.
Note: For projects created with Visual Designer v6.1+SP3 or earlier, the Force option
is enabled by default and cannot be disabled.
• Beep checkbox: When this option is checked, a short beep is played when the
Command is executed. This option is useful to provide an audio feed-back to the
user, indicating that the Command was executed. It does not indicate, however, if the
action triggered by the Command animation was successful or not.
• Release checkbox: When this option is checked, the On Up event is executed when
you drag the cursor (or your finger) out of the object area (whether the button was
released or not). This option is useful to make sure that the On Up event will always
be executed after an On Down event, even if the user releases the mouse cursor out
of the object area before releasing it.
• Confirm checkbox: When this option is checked, user will have to answer a
confirmation question before executing the command. This option is useful for
decreasing the accidental triggering of critical events during runtime.
• E-Sign checkbox: When this option is checked, the user will be prompted to enter
the Electronic Signature before executing the command.
• Key Only checkbox: When this option is checked, the user can only use the keyboard
shortcut (configured in the Key pane described below) to execute commands.
• Disable: Disables action by the user when the result of the expression configured in this
field is TRUE (value different from 0).
• Security: Security access level required to use the Command animation.
• Key pane: Shortcut used to trigger the events On Down, While Down and On Up using
a keyboard. (In other words, pressing this keyboard shortcut is the same as clicking the
left mouse button.) This option is especially useful when creating projects for runtime
devices that do not provide a mouse or touch-screen interface — the keyboard is the only
physical interface available to interact with your project during runtime.
• Shift, Ctrl, or Alt boxes: Click to create a key combination key, meaning the Shift,
Ctrl and/or Alt key must be pressed with the key specified in the drop-down list.
• Click the browse button (…) to open the Key Modifer dialog, which enables you to
modify your combination keys. You can choose Left, Right or Left or Right to specify
the position on the keyboard of the Shift, Ctrl or Alt key in the key combination. If you
choose Left or Right, the command will be executed any time either of these keys is
pressed in combination with the key specified in the drop-down list.
Hyperlink animation
On the Graphics tab, in the Animations group, click Hyperlink to add the animation to
a selected object or group of objects. Applying this animation allows you to click on the
object(s) during execution to launch the default browser and load the specified URL.
Double-click on the object to open the Object Properties dialog.
Bargraph animation
On the Graphics tab, in the Animations group, click Bargraph to add bar graph properties
to a selected object, then double-click on the object to open the Object Properties dialog.
• Tag/Expression text field: Type one of the following into the field:
• The name of a tag on which to perform an input or output operation; or
• An expression on which to perform an output operation only.
You can also click the browse button … to open the Object Finder to find an existing tag
or expression.
Note: If the configured tag/expression is invalid, then during runtime, the placeholder
characters (###) will be displayed instead.
• Format combo-box: Click to select how the numeric value (if any) of the specified tag or
expression will be formatted and displayed on-screen. Available options include Decimal,
Hexa (i.e., hexadecimal), Binary and Auto. If you select Auto, then the value will be
formatted according to the virtual table created by the SetDecimalPoints function.
This option does not actually change the specified tag or expression in any way. For
example, Tag/Expression is set to a tag of Integer type, Input Enabled is checked, and
Fmt is set to Hexa. You may input a new value in hexadecimal format, but it is saved in
your project database as an integer.
• Input Enabled checkbox: Click (check) this option to allow user input to the specified
tag. Disable (uncheck) this option to only display the output from the specified tag or
expression.
• Back to text: Click to go back to the object properties of the underlying Text object.
• Minimum Value field: Enter a minimum value for the tag associated with this Text
object. A user will not be permitted to input a number lower than this value.
• Maximum Value field: Enter a maximum value for the tag associated with this Text
object. A user will not be permitted to input a number greater than this value.
• Password checkbox: Click (check) this option to hide password text entries by replacing
the text with asterisks (*).
• Confirm checkbox: Click (check) this option to require users to confirm any new values
set during runtime.
• Auto Size checkbox: Click (check) this option to automatically resize the Text object to fit
the output. This option is not available if Input Enabled is checked (see above).
• E-Sign checkbox: When this option is checked, the user will be prompted to enter the
Electronic Signature before changing the tag value.
• VK: Virtual Keyboard type used for this object. You need to select the Virtual Keyboard
option in the Viewer settings (Viewer on the Project tab of the ribbon) before
configuring the Virtual Keyboard for this interface.
• Disable field: Type a value greater than zero in this field to disable the tag's data input
property.
• Security field: Type a value in this field to specify the security level for a specific data
input object (as defined in the Security section).
Color animation
On the Graphics tab, in the Animations group, click Color to add the animation to a
selected object. The Colors animation allows you to modify the color of a static object during
runtime based on the value of a tag or expression.
Double-click on the object to open the Object Properties dialog.
and lower right field. If you click on the More button, you can configure up to 16 different
limits for the color animation.
• Color combo box: Click the combo-box button to associate a color with each color
change limit. When the Color dialog opens, click a color to select it, and then close the
dialog.
• Blink combo-box: Click the combo-box button to specify whether the color change will
blink, and how fast it will do so.
Note: The following fields are automatically disabled (grayed out) when Type = By Color:
Change Limit, Color and Blink.
Position animation
The Position animation allows you to move an object horizontally and/or vertically during
runtime.
On the Graphics tab, in the Animations group, click Position to add the animation to an
object. Double-click on the object to open its Object Properties dialog.
sliding is disabled. When the value is FALSE (i.e., 0 or a blank space), sliding is
enabled.
• Security text box: Enter the security level required to use the object as a slider.
• Move area: Configure these settings to determine how the object moves on the screen:
• Tag / Expression text boxes: The meaning of these boxes depends on whether the
Slider option is enabled (see above):
• Expression text box: If the Slider option is not enabled, then configure either
a tag or an expression in this field. The current value of the tag / expression
determines the current position of the object. As the value changes, the object is
moved on the screen.
• Tag text box: If the Slider option is enabled, then enter only an Integer or Real tag
in this field. The tag will receive a value that is equivalent to the current position of
the object. As the user moves the object, the value is changed.
For the Horz (horizontal) position, the value increases as the object moves to the right
and it decreases at the object moves to the left. For the Vert (vertical) position, the
value increases as the object moves to the bottom and it decreases at the object
moves to the top.
• Range text boxes: Enter the minimum and maximum values for the tag / expression.
If the actual value goes outside of its range, then the value is ignored and the limit is
used instead.
• Position text boxes: Enter values to specify how far (in pixels) the object can move
from its starting position. The starting position is equal to "0,0". Values greater than 0
allow the object to move right and down, and values less than 0 allow the object to
move left and up.
During runtime, the object's position is proportional to the tag / expression value
within its range. For example, if Position is 0 to 100 and Range is 0 to 10, then each
increment in the value will move the object 10 pixels. This is true for both Horz and
Vert.
• Reference drop-down lists: Select a reference point on the object. The following table
shows how your selections for Horz and Vert work in combination:
LEFT CENTER RIGHT
TOP
CENTER
BOTTOM
This reference point is meaningful only if you have the Size animation added to the
same object. The position of the object is always based on this reference point,
regardless of the size or shape of the object.
Resize animation
The Resize animation allows you to increase or decrease the size of an object during
runtime.
On the Graphics tab, in the Animations group, click Resize to add the animation to an
object. Double-click on the object to open its Object Properties dialog.
CENTER
BOTTOM
Rotation animation
On the Graphics tab, in the Animations group, click Rotation to add the animation to an
Open Polygon, Closed Polygon, Line, or Linked Picture object. Double-click on the object to
open the Object Properties dialog.
• Offset (pixels) area: Enter the number of pixels by which to offset the Reference
(i.e., pivot point) on the X axis and/or Y axis.
• Counter Clockwise checkbox: Click (enable) this option to make the object rotate
counterclockwise instead of clockwise.
Format tab
The Format tab of the ribbon is used to format and arrange objects in a project screen.
Note: This tab is available only when you've selected one or more objects in a project
screen.
The tools are organized into the following groups:
• Arrange: Arrange objects in a project screen, including bring to front and send to back,
group, align, and rotate.
• Position: Precisely adjust the position of a screen object in a project screen.
• Size: Precisely adjust the size of a screen object.
• Style: Change the fill and line color of a screen object.
• Fonts: Change the caption font of a screen object.
Note: Alternatively, right-click on an object and select Move to back from the object's
shortcut menu.
Click the Move to front tool to move a selected object or objects in front of all other objects
on the screen. Visual Designer assigns the object the highest ID# and moves that object
behind all other objects on the screen.
Note: Alternatively, right-click on an object and select Move to front from the object's
shortcut menu.
Click the Align right tool to align all selected objects to the right edge of the last object
selected. For an example, see the following figure:
Click the Align top tool to align all selected objects to the top edge of the last objected
selected. For an example, see the following figure:
Click the Align bottom tool to align all selected objects to the bottom edge of the last object
selected. For an example, see the following figure:
Click the Center Vertically tool to align all selected objects to the vertical center of the last
object selected. For an example, see the following figure:
Click the Center Horizontally tool to align all selected objects to the horizontal center of the
last object selected. For an example, see the following figure:
Click the Evenly distribute horizontally tool to put an equal amount of horizontal space
between a series of objects (two or more). For an example, see the following figure:
Click the Evenly distribute vertically tool to put an equal amount of vertical space between
a series of objects (two or more). For an example, see the following figure:
Note: The distribution tools may move the last object selected (with solid handles) by no
more than a few pixels to equally space all of the objects.
Rotate Tool
Click the Rotate tool to rotate the selected object 90 degrees (a quarter turn) clockwise.
Note: You can use this tool only with a single selected object or grouped object. You cannot
use this tool with multiple objects selected.
Note: You can use this tool only with a single selected object or grouped object. You cannot
use this tool with multiple objects selected.
Note: You can use this tool only with a single selected object or grouped object. You cannot
use this tool with multiple objects selected.
Resize Tools
Use the following ribbon options for resizing:
• Click the Resize width tool to set the width of all selected objects to the width of the
last object selected, or to resize one selected object so that its width equals its height.
• Click the Resize height tool to set the height of all selected objects to the height of the
last object selected, or to resize one selected object so that its height equals its width.
Note: You can use Resize width and Resize height to turn an ellipse into a circle or a
rectangle into a square. Make sure you have only one object selected, however.
You also can use the mouse pointer and arrow keys to resize objects. When you select an
object (or group of objects) with the pointer, handles are displayed at each corner and at the
midpoint of each side. You can use these handles as follows:
• To enlarge an object, drag a handle in the direction you want to resize the object.
Dragging a side handle resizes the object in one direction only (height only or width only).
Dragging a corner handle resizes the entire object (height and width).
When you drag a corner handle, the object's proportions are constrained by default. To
freely resize the object, hold down the SHIFT key as you drag the handle.
• To resize an object one pixel at a time, click and hold a handle and then press the
arrow keys. For the corner handles and the left and right side handles, press the LEFT
ARROW and RIGHT ARROW keys. For the top and bottom handles, press the UP
ARROW and DOWN ARROW keys.
• To resize an Open or Closed Polygon, draw a selection box around all of the polygon's
points and group them. You can then resize the polygon like a normal object.
Note: When you resize a Symbol, a Group, or any other collection of selected objects, all of
the objects in the collection are resized in the same direction and to the same degree.
Fonts Tool
Click the Fonts tool to specify the font and color for selected Text objects, or to specify a
default font and color for new Text objects.
Note: To save development time, select several Text objects and use the Fonts tool to
specify font and color settings for all of the objects at once. (You cannot use this
function for grouped Text objects however.)
The Alarm and Trend tasks are used to log historical data, and the Alarm/Event and Trend
Control objects are used to display historical data on a project screen.
These two features are normally used together, but they do not need to be; project data may
be logged without being displayed during runtime, and the data displayed during runtime
may be taken from outside the project.
Alarm worksheet
The Alarms folder enables you to configure alarm groups and tags related to each group.
The Alarm worksheet defines the alarm messages generated by the project. The primary
purpose of an alarm is to inform the operator of any problems or abnormal condition during
the process so he can take corrective action(s).
The Alarm worksheet is executed by the Background Task module (see Execution Tasks). It
handles the status of all alarms and save the alarm messages to the history, if configured to
do so, but it does not display the alarm messages to the operator; the Alarm/Event Control
screen object, available on the Graphics tab of the ribbon, must be created and configured in
a screen in order to display alarms.
To create a new Alarm worksheet, do one of the following:
• On the Insert tab of the ribbon, in the Task Worksheets group, click Alarm;
• Right-click the Alarms folder in the Project Explorer, and then click Insert on the shortcut
menu; or
• Click New on the Application menu, click the File tab, and then select Alarm
Worksheet.
To edit an existing Alarm worksheet, double-click it in the Project Explorer.
You can create multiple Alarm groups (worksheets) and each group can be configured with
independent settings, such as message colors, history log enabled/disabled, and so forth.
Each Alarm worksheet is composed of two areas:
• Header: Settings applied to all tags and alarms configured in the same alarm group.
These settings allow you to configure the formatting of the message and the actions that
must be triggered based on alarm events (e.g., print alarms, send alarms by email, and so
forth). For more information, see Header Settings.
• Body: Configure alarm messages and associate them to conditions linked to tags. For
more information, see Body Settings.
Note:
• You can configure the Alarm Group to send notifications by Email automatically,
based on alarm events. For more information, see Email Settings.
• The alarm properties associated to each tag (configured in the body of the alarm
group) can also be edited by the Tag Properties dialog (Properties on the Home
tab of the ribbon). However, before associating a tag to an alarm group, it is
necessary to create the alarm group and configure the settings on its header,
which will be applied to all tags associated to the group.
• As of Visual Designer v6.1+SP2, the Alarm task has been modified to avoid
automatically acknowledging alarms by another alarm. For example, the Hi (Lo)
alarm should not be automatically acknowledged when the HiHi (LoLo) alarm
becomes active. To enable the previous behavior, set the following key in your
project (.APP) file:
[Alarm]
UseLegacyPriorityAck=1
CAUTION
The settings configured in the body of each Alarm worksheet are stored in the Tags
Database archive(s). Therefore, changes to the tags database may affect the content of the
Alarm worksheets (body). Notice that each tag/type cannot be available in more than one
Alarm group simultaneously because the Alarm Group is a property associated to each Tag/
Alarm Type (e.g., Tag: Level; Alarm Type: Hi; Alarm Group: 2).
Description Description of the alarm group. It is displayed on the workspace. This field is used Text (up to 80 chars)
for documentation only.
Group Name Name of the Alarm group. During runtime, the operator can filter alarms based on Text (up to 32 chars)
the Group Name by the built-in Filters dialog of the Alarm/Event control object.
Email Settings Launches the Email Settings dialog, where you can configure the settings for Button
emails sent automatically based on alarm conditions.
Advanced Launches the Advanced Settings dialog, where you can configure the settings Button
for emails sent automatically based on alarm conditions.
On Line > Display in Alarm Controls When checked, the alarms are available to be displayed on the Alarm/Event Checkbox
Control object.
On Line > Ack Required When checked, the alarms require acknowledgment. In this case, the alarms Checkbox
are displayed on the Alarm/Event Control object (Online mode) until they are
acknowledged AND normalized.
On Line > Beep When checked, the computer keeps beeping while there are alarm(s) to be Checkbox
acknowledged, currently active.
On Line > Send to Printer When checked, the alarm messages are sent to the printer as soon as the alarm Checkbox
event occurs. When using this option, you must use a matrix printer (instead of
DeskJet or LaserJet) in order to print the message(s) and feed just one line —
otherwise, each alarm will be printed in a different sheet of paper. The alarms
will be printed in the default printer. If you want to send alarms to a printer
different from the default printer, you can specify the printer path/name, editing
the following parameter in the project_name.APP file:
[AlarmLog]
Device=PrinterPath/PrinterName
History > Save to Disk When checked, the alarm messages are stored in the history log when they Checkbox
become active.
History > Generate Ack Messages When checked, the alarm messages are stored in the history log when they are Checkbox
acknowledged.
History > Generate Norm Messages When checked, the alarm messages are stored in the history log when they Checkbox
become normalized.
Colors in Alarm Controls > Enable When checked, the alarms configured in this group will be displayed with Color
the colors assigned to each alarm state (Activation, Acknowledgement or
Normalization), according to the colors configured in the Alarm Group.
Colors in Alarm Controls > FG and BG You can configure the text foreground color (FG) and background color (BG) for the Color
alarms displayed on the Alarms/Events Control object. Each alarm state can be
displayed with a different color schema:
• Activation: Alarm active and not acknowledged
• Acknowledgement: Alarm active and acknowledged
• Normalization: Alarm no longer active and not acknowledged.
IMPORTANT
Before being email to send emails, it is necessary to execute successfully the CnfEmail
function (from the built-in language) at least once. This function sets the email account
parameters used when sending emails from the project (e.g., SMTP server, user name,
password, and so forth).
Enable send automatic email Name of the tag associated with the alarm. Checkbox
To, Cc, Bcc Target addresses to whom the emails will be sent. You can configure multiple Text and/or {Tag} (up to 1024 chars)
email addresses in each box (To, Cc and/or Bcc) by separating the addresses with
the semi-colon character ( ; ).
Subject When selecting "Use alarm message", the alarm message itself is used as the Radio-button / Text (up to 1024 chars)
subject of the email to be sent. When selecting "Custom", you can configure a
custom text to be used as Subject when sending the alarm.
Send 1 message per email When checking this option, each alarm is sent in an individual email and all Checkbox
emails are sent when the Send Trigger is triggered. Otherwise, all alarm
messages are buffered and sent in only one email when the Send Trigger is
triggered. You cannot disable (uncheck) this option when the Subject option is
configured with "Use alarm message".
Remove failed messages from the buffer When checking this option, the emails are removed from the buffer after checkbox
attempting to send them, even if there was an error (failure) and the email was
not sent. Otherwise, the messages are kept in the buffer until they are sent
successfully or when the buffer reaches its maximum size.
Send email when alarm is Allow you to configure which alarm events should generate emails: checkbox
• Active: When the alarm becomes active.
• Ack: When the alarm is acknowledged.
• Norm: When the alarm is normalized.
Notice that each event can be enabled/disabled individually.
Current Status The tag configured in this field, if any, is updated with the current status of the Tag
current or last email that the project attempted to send:
• -2: Incorrect version of the INDMail.DLL library.
• -1: The INDMail.DLL library is corrupted.
• 0: SendEmailExt function is not being executed.
• 1: Sending email(s)
• 2: Last email was sent successfully.
• 3: There was an error sending the last email.
Current Error The tag configured in this field, if any, is updated with the error message Tag
describing the result of the last email that the project attempted to send.
Therefore, when configuring a tag in this field, this tag must be a String type.
Message Format This interface allows you to configure the actual format of the message sent by Checkbox and Radio-button
email, based on the alarm event(s):
• Day, Month, Year, Hour, Minute, Second, MS: The options checked will
compose the timestamp for the alarm messages. MS stands for milliseconds.
• Items: The options checked will compose the email message for each alarm.
You can configure the order of the items, by using the Move Up and Move
Down buttons.
• Separator: Allow you to choose the separator used between the items
checked in this interface.
While you configure these settings, the Sample field displays an example of the
format of the message according to the settings being configured.
Send Trigger When the alarm events are generated, they are kept in an internal buffer Tag
(memory). When the tag configured in this field changes of value, the email(s) on
the internal buffer are sent to the addresses configured in the To, Cc and Bcc
fields. After being successfully sent, the emails are removed from the internal
buffer.
Max buffer size Maximum number of alarm messages (events) that can be stored in the internal Tag or Number
buffer simultaneously. When this limit is reached, the buffer follows a FIFO (First-
In, First-Out) behavior, discharging the older messages as soon as the newer
messages are generated, guaranteeing that the buffer does not exceed the limit
configured in this field.
Buffer size The tag configured in this field, if any, is updated with the number of messages Tag
(events) currently stored in the internal buffer.
Clear Buffer When the tag configured in this field changes of value, all messages (events) Tag
currently stored in the buffer are deleted. These messages will never be sent.
Disable send When the value of the tag configured in this field is TRUE, the Email feature is Tag
temporarily disabled. Alarm events generated while the Email feature is disabled
will not be stored in the internal buffer. Also, emails will NOT be sent in this
condition, even if the tag configured in the field Send Trigger changes of value.
Disable When the value of the tag configured in this is TRUE, all alarms configured in Tag
this group are temporarily disabled. This option is useful to disable alarms under
special conditions (e.g., during maintenance).
Total Alarms The tag configured in this field, if any, is updated with the number of alarms from Tag
this group, which are currently active.
Total Unack The tag configured in this field, if any, is updated with the number of alarms from Tag
this group, which are currently active AND have not been acknowledged yet.
Remote Ack Trigger When the tag configured in this field change of value, all active alarms from Tag
this group are acknowledged. This option can be used to acknowledge alarms
regardless of any action from the operator.
Dead Band Time > Activation Each alarm must remain continuously in its alarm condition for the period of Tag or Number
time specified in this field before becoming active. This option is useful to avoid
generating alarms on intermittent conditions (e.g., noise). If this field is left in
blank, the alarm becomes active as soon as its condition is true.
Dead Band Time > Normalization Each alarm must remain continuously out from its alarm condition for the period Tag or Number
of time specified in this field before becoming normalized. This option is useful to
avoid normalizing alarms on intermittent conditions (e.g., noise). If this field is left
in blank, the alarm become normalized as soon as its condition is no longer true.
Dead Band Time > Time Stamp/Value Each alarm maintains a time stamp of the last significant activity, along with the Combo
value of the tag at that time. You can select the type of activity that updates the
time stamp:
• Activation/Norm (default): The time when the dead band ended — that is,
when the alarm becomes activated or normalized.
• Last Tag Change: The time when the value of the tag last changed during
the dead band.
• Start Condition: The time when the dead band started.
Tag Name Name of the tag associated with the alarm. Tag
Type Type of the alarm: Combo-box
• HiHi: Activates the alarm if the tag value is equal or higher than the limit.
• Hi: Activates the alarm if the tag value is equal or higher than the limit. (For Boolean
tags, if the value is 1.)
• Lo: Activates the alarm if the tag value is equal or lower than the limit. (For Boolean
tags, if the value is 0.)
• LoLo: Activates the alarm if the tag value is equal or lower than the limit.
• Rate: Activates the alarm if the tag value varies faster than the rate specified to the
alarm. (For Boolean tags, if the value changes.)
• DevP: Activates the alarm if the tag value is equal or higher than the Set Point tag plus
the limit.
• DevM: Activates the alarm if the tag value is equal or lower than the Set Point tag
minus the limit.
Limit Limit associated with each alarm. The limits can be modified dynamically during runtime, by Number
the tag fields HiHiLimit, HiLimit, LoLimit, LoLoLimit, Rate, DevP and DevM (e.g., TagLevel-
>HiLimit).
Message Message associated to the alarm. The message can be displayed on the Alarm/Event Control Text and/or {Tag} (up to 256 chars)
object and/or stored in the Alarm History and/or sent by Email, depending on the settings
configured in the Header of the Alarm group.
Priority Priority number associated to the alarm. When displaying alarms on the Alarm/Event Control Number (from 0 to 255)
object , the operator can filter and/or sort the alarms by priority.
Selection Alias associated to the alarm (e.g., AreaA, AreaB, etc). When displaying alarms on the Alarm/Text (up to 7 characters)
Event Control object, the operator can filter and/or sort the alarms by their selection value.
The Alarm History and Events interface allows you to configure the following settings:
Field Remarks Syntax
History Life Time (days) The history for alarm/event messages older than the number of days specified in this field Number
are automatically deleted, following a FIFO (First-In, First-Out) behavior. If this field is left in
blank, the history of alarms/events are not deleted automatically.
History Format Defines the format of the history of alarms/events: Combo-box
• Proprietary: Saves the history in the proprietary format. The alarm messages are saved
in a text file with the name ALyymmdd.ALH, where:
• yy is the last two digits of the current year.
• mm is the month.
• dd is the day
Alarm Database When selecting Database as the format for the history of alarms, the specific settings to —
interface with the third-party SQL Relational Database can be configured by the dialog
launched when pressing this button. For further details about support for third-party SQL
Relational Databases, see Database Interface.
When saving the alarm history in the proprietary format, each alarm event is saved in a new
line, using the pipe character ( | ) to delimiter the different fields, as illustrated below:
P1|P2|P3|P4|P5|P6|P7|P8|P9|P10|P11|P12|P13|P14|P15|P16|P17|P18|P19|
P20|P21
P1|P2|P3|P4|P5|P6|P7|P8|P9|P10|P11|P12|P13|P14|P15|P16|P17|P18|P19|
P20|P21
.
.
P1|P2|P3|P4|P5|P6|P7|P8|P9|P10|P11|P12|P13|P14|P15|P16|P17|P18|P19|
P20|P21
The format of the history both in proprietary format and in the SQL Relational Database
format is described in the following table:
Proprietary SQL Relational Database
Field No. Field Name Field Type Remarks File Vers.
— Last_Update Date/Time Timestamp of the last update for this event. 003
— Last_Update_ms Number Number of milliseconds for the Last Event timestamp. This 003
field is used when the database does not support ms in a
TimeStamp field.
Note: When saving the History Alarms in a SQL Relational Database (File Format =
Database), you can customize the name of the columns created in the database by
editing the project_name.APP file, as follows:
[Alarm]
DefaultName=NewName
For example:
[Alarm]
Message=Alarm_Message
Ack=Acknowledgment
See also:
• SQL Relational Databases
• Studio Database Gateway
• Database Appendix A: Using ODBC Databases
• Configuring a Default Database for All Task History
Event Settings
This section describes Visual Designer's logging and event-retrieval features. An event can
be any tag change, generating reports or recipes, opening and closing screens, logging onto
and logging off the security system, and so forth. Visual Designer saves all of these events
in a log file, which can be retrieved by the Alarm/Event Control object.
Event log files are stored in the project's \Alarm folder (the same folder where the project
saves alarm history files). The event log file names must conform to the evYYMMDD.evt
format, where:
• YY represents the last two digits of the year in which the event log file was generated
• MM represents the month in which the event log file was generated
• DD represents the day on which the event log file was generated
For example, a log file for May 7, 2003 would be ev030507.evt.
The event files ( *.evt ) are ASCII text files created according to the following format:
P1|P2|P3|P4|P5|P6|P7|P8|P9|P10
P1|P2|P3|P4|P5|P6|P7|P8|P9|P10
.
.
.
P1|P2|P3|P4|P5|P6|P7|P8|P9|P10
where:
• P1 = File version (Current 1 )
• P2 = Event Type
1. SECURITY SYSTEM
2. DISPLAY
3. RECIPE
4. REPORT
5. CUSTOM MESSAGES
6. SYSTEM WARNING
7. LOG TAGS
• P3 = Event Time (DD/MM/YYYY HH:MM:SS.SSS)
• P4 = Tag Name
• P5 = Tag Value
• P6 = Source (Not used)
• P7 = User Name
• P8 = User Full Name
• P9 = Event Message
• P10 = Station
Configuring the Events Settings
Use the steps to configure the event-retrieval feature:
1. Select the Global tab.
2. Double-click the Event Logger icon to open the Event Settings dialog:
• Report checkbox: Click (check) this box to include reports saved to disk or send to
printer events in the historical event file.
• Custom Messages checkbox: Click (check) this box to include events generated
by the SendEvent(strEvent) function in the historical event file.
• System Warning checkbox: Click (check) this box to include general system
warnings (such as Division by zero, Attempted to access invalid
array index, and so forth) in the historical event file. The project logs the
following system warning events:
• Errors that occur when sending alarms by email
• Tag was blocked/unblocked
• Division by zero
• Connection/Disconnection of the remote security system
• Tags checkbox: Click (check) this box to enable and log tag changes in the historical
event file. Configure the tags you want to log in the Tags table as follows:
• Tag Name column: Type the name of the tag you want to log in the event file.
• Dead Band column: Type a value to filter acceptable changes against.
For example, if you specify a Dead Band value = 5 for a tag value = 50 and the
tag value changes to 52, the system will not register this variation in the event log
file, because the variation is less than 5. However, if the tag value change is equal
to or greater than 5, the system will save the new value to the history file.
• Message column: Type a string (message) related to this tag change. You can
specify tags in messages using the {tag name} syntax.
The Tags parameter can be useful if you want to generate a log file of events that are
not necessarily alarm conditions (for example, Motor On, Motor Off, and so forth).
2. In the Alarm History and Events pane, click the arrow to the right of the History
Format field. Select Database.
3. Click the Event Database button. This opens the Database Configuration dialog. Enter
the applicable data in this window. Click OK when you are done.
4. Click OK to save the Project Settings data and close the window.
Event Table on a Relational Database
The fields saved in the History Event are described in the following table:
Field Name Data Type Remarks
Version Integer This field is created only when the File Format is Proprietary. Current
version: 002
Event_Type Integer 1: SECURITY SYSTEM
2: DISPLAY
3: RECIPE
4: REPORT
5: CUSTOM MESSAGES
6: SYSTEM WARNING
7: LOG TAGS
Bias Integer Difference (in minutes) from the Time Stamp columns and the GMT
time. This field only exists for Version >=2
Last_Update TimeStamp Time Stamp when the register was created/modified. This field is used
to synchronize the databases when using the Secondary Database in
addition to the Primary Database. This field is created only when the
File Format is Database.
Note: When saving the Events in a SQL Relational Database (File Format = Database)
you can customize the name of the columns created in the database by editing the
project_name.APP file as follows:
[EventLogger]
DefaultName=NewName
For example:
[EventLogger]
Event_Info=Information
Message=Event_Message
• Click (enable) the Show Header checkbox to display a header on the object.
• Use the Win color box to select a background color for the object. Click the color box
to open the color palette pop-up, then simply click a color to select it.
• Click (enable) the Ext translation checkbox to enable the external translation of
messages using the Translation Tool. (See The Translation Tool for more information.)
• E-Sign checkbox: When this option is checked, the user will be prompted to enter
the Electronic Signature before executing the animation.
• VK: Virtual Keyboard type used for this object. You need to select the Virtual
Keyboard option in the Viewer settings (Viewer on the Project tab of the ribbon)
before configuring the Virtual Keyboard for this interface.
Fonts
Click the Fonts button to open a standard Fonts interface where you can specify display
properties for the message text.
Columns
Click the Columns button to open the Columns dialog where you can specify display
properties for columns in the object.
• The Available list contains all of the column types available for this object. The Visible
list contains all of the column types currently in use for the object.
Click the » and « buttons to move selections between the two lists.
Note: You can configure an Alarm Control object to display recently replaced values
together with their new values. To do so, move both Value and Previous to the
Visible list.
Click the Move Up or Move Down buttons to rearrange the order of columns in the
Visible list.
• Use the Label and Width fields in the Properties pane to change the default column
labels and widths at runtime.
• Use the Align combo box to specify alignment (Left, Center, or Right) for the alarm
message text within a specified column.
• Click (enable) the Available during runtime checkbox to allow the user to add selected
columns to the visible list during runtime.
• Use the Key box to assign a shortcut to each column. This allows you to sort the
information on the Alarm Control object by any column, using keyboard keys instead of
the mouse cursor.
When you are finished, click OK to close the Column dialog.
Note: When acknowledging an alarm, the Alarm Control object sends a message to the
Alarm task with the following information: Tag Name, Type, User and Station. This
is a solution to control acknowledged alarms from a Thin Client.
Filters
To filter alarm messages during runtime, click the Filters button. The Filters dialog displays
so you can specify filtering parameters for the Alarm Control object.
• Use the Group field to filter messages by the Alarm Worksheet number. The
worksheets are organized in the Alarms folder, in the Tasks tab of the Project Explorer,
starting with 1. If you specify a Group of 0, then all of the worksheets will be displayed.
You can use commas or dashes to specify a range of groups; for example,1,3,5-6.
• Use the Selection field to filter messages by the Selection text configured on the Alarm
Worksheet.
• In the Priority pane, use the From and To fields to filter messages by the Priority
configured on the Alarm Worksheet. Type numerical values into the these fields to
delimit the priority range.
• Use the Type field to filter messages by the alarm type (e.g., HiHi, Hi, Lo, LoLo,
Rate, Dev+, Dev-). You can use commas to specify more than one type; for
example,HiHi,LoLo.
• Use the State field to filter messages by the alarm status:
Value Description
…where the Column Name is the name of a column in the Alarm/Event Control object.
For example:
This filter will only show alarm messages with activation times greater (later) than 15:00
on 08/17/2007.
Note:
• The maximum number of characters is 1024 for Engineering Mode and 2048
for Runtime Mode.
• The Display Value and State columns are not supported by the filter
expression.
Note:
• You can combine several conditions simultaneously by using the logic
operators AND, OR, and NOT. For example:
[Value]='{AlarmFilterValue}'
• To use more than 1024 characters in the filter expression during runtime, you
must use more than one tag between curly brackets using the {TagName1}
AND {TagName2} syntax.
• Use the parameters in the Initial Sort pane to set the default sorting order. Select a sort
type from the Column combo-box, and then select Asc or Desc to sort in ascending or
descending order. You can configure up to three levels of sorting.
Note: If you configure all three levels with sort types other than Activation Time, then
the project will automatically sort on a fourth level according to Activation Time, in
descending order.
You cannot change the type of this fourth-level sort, but you can toggle its default
order — from descending to ascending — by manually editing your project file
(project_name.app) to change the following setting:
[Objects]
DescendingAlarmListTime=TRUE or FALSE
TRUE sorts in descending order, FALSE sorts in ascending order. Please note that
this setting only works for projects created with or updated to Visual Designer
v6.1+SP5 or later.
Click the Allow sort in runtime checkbox if you want to allow the user to change the
sort order during runtime.
Advanced
Click the Advanced button to open the Advanced dialog where you can specify advanced
properties for the Alarm Control object.
• Use the parameters in the Date & Time Format pane to control which date and time
information displays in the alarm message. Click (enable) a checkbox to include that
element in the display. Note: MS stands for milliseconds.
Note: Watch the Sample text to preview how the information will look in the alarm
message.
• Use the parameters in the Ack pane to control how alarms are acknowledged.
• Security field: Type a numeric value to specify which security level can acknowlege
an alarm message. Only those users with the specified level can respond.
• Ack All trigger field: Type a tag to receive a value. When the tag changes value, it
indicates that all messages in the alarm object have been acknowleged.
• Ack trigger field: Type a tag to receive a value. When the tag changes value, it
indicates that the message at the top of the alarm object has been acknowleged.
• Confirm checkbox: Click (enable) this box to display a confirmation dialog when the
user tries to acknowledge a single alarm.
• Enable comment (individual ack only) checkbox: Click (enable) this box to allow the
user to enter comments about the alarm, just after acknowledging it.
• Use the parameters in the runtime dialog triggers pane to contol
• Columns field: Type a tag to receive a value. When the tag changes value, it opens a
dialog allowing the user to customize the columns visible in the object.
• Filters field: Type a tag to receive a value. When the tag changes value, it opens a
dialog allowing the user to filter the columns visible in the object.
• Use the parameters in the Delete Message pane to control who can delete alarm
messages from the Alarm History:
• Security: Use this field to specify which security level can delete alarm messages.
Only those users with the specified security level will be allowed to delete an alarm
message.
• Confirm: Click (enable) this box to require the user to confirm a message deletion
before Visual Designer actually deletes the selected alarm message.
• Print Trigger: When the tag configured in this field is toggled, the current state of the
Alarm/Event Control object is sent to the default printer.
• PDF Trigger field: When the tag configured in this field is toggled, the current state of
the Alarm/Event Control object is saved as a PDF file at the location specified by PDF
Filename.
• PDF Filename field: Enter a complete file path and name where the PDF file is to be
saved. You can also enter a tag name using the {tag} syntax.
Note: PDF Trigger and PDF Filename are not supported in projects running on Windows
Embedded or Thin Client.
• Multiline checkbox: When this option is checked, the print output or PDF will be
formatted according to the available column space, and the text within each cell will be
wrapped so that all of it is shown.
• Total items field: Type an integer tag to see how many alarms remain after Visual
Designer filters the alarm object using parameters specified on the Filters dialog.
• Auto Format checkbox: When checked, decimal values in the Display Value, Previous
and Value columns will be formatted according to the virtual table created by the
SetDecimalPoints() function.
• Selected tag field: Type a string tag to enable the end user to click on an alarm message
to see the name of the tag associated with that alarm event.
• First Row Text field: Type a string tag. This tag will receive the text of all fields from the
first row of the Alarm/Event Control. The fields are tab delimited. Whenever the first row
changes — either due to a new Alarm/Event, or simply because the rows are reordered
— the value of the configured tag is updated.
• Summary Changes field: Type an integer tag. This tag will receive a running count of the
number of changes in the Alarm/Event Control. For example, when a new Alarm occurs
or when an Alarm is acknowledged, the value of the configured tag will be incremented.
Reordering the rows is not counted as a change.
You can make the on-screen Alarm Control object scroll up, scroll down, page up, page
down, go to home (beginning) of page, or go to end of page by configuring tags in the
corresponding fields. Whenever the values of the configred tags change, the Alarm
Control object will navigate that way. This is useful for adding navigation controls to the
screen; for example, if you configure the same tag to the Up field in this dialog and a
Pushbutton object, then the Alarm Control object will scroll up whenever the Pushbutton
object is pressed.
When you are finished, click OK to close the Advanced dialog.
Trend worksheet
The Trend folder enables you to configure history groups that store trend curves. You can
use the Trend worksheet to declare which tags must have their values stored on disk, and
to create history files for trend graphs. The project stores the samples in a binary history file
(*.hst), and shows both history and on-line samples in a screen trend graph.
The Trend worksheet is executed by the Background Task module (see Execution Tasks).
It handles the saving of trend data to the history, but it does not display that data to the
operator; the Trend Control screen object, available on the Graphics tab of the ribbon, must
be created and configured in a screen in order to display trend data.
To create a new Trend worksheet, do one of the following:
• On the Insert tab of the ribbon, in the Task Worksheets group, click Trend;
• Right-click the Trends folder in the Project Explorer, and then click Insert on the shortcut
menu; or
• Click New on the Application menu, click the File tab, and then select Trend Worksheet.
To edit an existing Trend worksheet, double-click it in the Project Explorer.
• Type combo box: Click the arrow button to select a trend history format from the list.
The available options are:
• Proprietary
• File Format: Binary
• Default Path: …\project_name\Hst\GGYYDDMM.HST, where:
• YY = Two last digits of the year
• MM = Month
• DD = Day
Note: Visual Designer provides the HST2TXT.EXE and TXT2HST.EXE programs,
which enable you to convert trend history files from binary ( .hst ) to text
( .txt ) and vice versa. For more information about these programs, see
Converting Trend History Files from Binary to Text and Converting Trend
History Files from Text to Binary.
• Database
• Database Type: Chosen by the user
• Default Table Name:TRENDGGG ( GGG = Trend Worksheet Number; e.g.,
TREND001 for the Trend Worksheet 001)
For more information about the structure of the database table that Visual Designer
uses to save history files, see Database Interface.
CAUTION
You can specify String tags in many fields of the Trend worksheet, to change those
values during runtime, but doing so may affect how those values are saved in the trend
history:
• When the history format is Proprietary, the value of the String tag is converted to a
numerical value (if possible) and then saved to the history file. If numeric conversion
is not possible, then a value of 0 is saved.
• When the history format is Database, the actual value of the String tag is saved in
the database.
• Database Configuration: Opens the Database Configuration dialog, where you can
enter the requisite settings to link the project to an external SQL Relational Database for
the purpose of saving the trend history.
• Save On Trigger checkbox and field: Click (enable) and type a tag name to save trend
samples when someone changes the specified tag. (Tag change can be an event from
the Scheduler.)
• Save On Tag Change checkbox: Click (enable) to always save the trend sample when a
value change occurs in any of the tags from that group.
• Advanced: Click to display the Trend Advanced Settings dialog. For information about
completing the fields in this window, see Batch History Configuration.
Use the Body parameters on this worksheet as follows:
• Tag Name field: Type the tag name to be saved in the history file.
• Dead Band field: Type a value to filter acceptable changes when Save on Tag Change
is used. For example, Dead Band has value = 5. If the tag value is 50 and changes to 52,
the system will not register this variation in the database, because it is less than 5. If the
change is equal to or greater than 5, the new value will be saved to the history file.
• Field field: Name of the field in the database where the tag will be stored. If this field is
left blank, the name of the tag will be used as the tag name. Array tags and classes will
have the characters "[", "]" and "." replaced by "_". Examples:
MyArray[1] MyArray_1
MyClass.Member1 MyClass_Member1
MyClass[3].Member2 MyClass_3_Member2
Note: The Trend task can accept only up to 240 tags in a single worksheet. If you manually
configure more than 240 tags in the same worksheet, then the Trend task will
generate an error when you run the finished project.
See also:
• Converting Trend History Files from Binary to Text
• Converting Trend History Files From Text to Binary
• Creating Batch History
• Configuring a Default Database for All Task History
Hst2txt.exe 01952010.hst
The program creates a .hdr (header) file and the .txt file, which are both plain text
files that can be viewed using any text editor (for example, Notepad).
• The .hdr file contains the name of the tags configured in the Trend Worksheet.
• The .txt file contains the tag values saved in the history file.
4. After the program converts the file, type Exit to close the DOS window.
Note: Alternatively, you can use the HST2TXT math script in a Math worksheet to convert
binary files into text format automatically without having to use a DOS window.
See also:
• Converting Trend History Files From Text to Binary
Txtt2hst.exe 02950201.txt
The program creates a .hdr (header) file and converts the .txt file into a .hst
binary file.
4. After the program converts the file, type Exit to close the DOS window.
Note: You cannot create a math script for the TXT2HST.EXE program and use it in a Math
worksheet to convert text files into binary format as you can for HST2TXT.EXE. The
math script shortcut is available for binary files only.
See also:
• Converting Trend History Files from Binary to Text
• Creating Batch History
• Configuring a Default Database for All Task History
Group_Number Integer Trend group number. This is the number of the worksheet that you
are creating to specify the tags that will be stored on your batch
history.
Batch_Name String Name of the batch
Start_Time TimeStamp Date and Time that the batch was started.
End_Time TimeStamp Date and Time that the batch was finished
Pri_Table String Reserved
Sec_Table String Reserved
Description String Batch description
Deleted Boolean 0: Batch has not been deleted
1: Batch has been deleted
Note: You can customize the name of the table and the name of the columns created in the
database by editing the project_name.APP file, as follows:
[Trend]
DefaultName=NewName
[TrendGroupPRI|SEC]
BatchHistory=TableName
For example:
[TREND001PRI]
BatchHistory=MyTableForPrimaryDB
[TREND001SEC]
BatchHistory=MyTableForSecondaryDB
[Trend]
Group_Number=Trend_Worksheet
Batch_Name=Load_Number
Batch History Configuration
When you add a Trend worksheet (see Trend folder) and click the Advanced button, the
following window will display:
batch file (if you are using proprietary format), or add a new register to the BatchHistory
table on your database, indicating that a batch has been started. Note that historical data
will be saved according to the configuration in the fields Save Trigger and Save On Tag
Change options on the Trend Worksheet.
• Name (input): This field represents the batch name; its meaning depends on the format
selected on the Trend Worksheet:
• If you selected Proprietary in the Type field, the Name should comply with the
format [Path]<FileName>, where:
• Path: An optional field. If the path is not specified, the batch history file will be
stored in the same path as the project_name.app file.
• FileName: Name of the batch history file.
• If you selected Databasein the Type field, the value in this field will be stored in the
Batch_Name field of the BatchHistory table.
Note: You can enter tag names between curly brackets in this field (e.g., C:
\MyBatches\{MyTagWithName}{MyTagWithNumber}.hst).
• Delete (input): When the tag specified in this field changes its value, the batch will be
deleted. With the Proprietary format, the batch history file will be removed. With the
Database format, it will set the Delete field in the BatchHistory table to true, but the
saved historical data will remain. The Trend object only sees batches that have the delete
field set to 0 (zero).
• Existent (output): The tag entered on this field will receive the value 1 if the batch
specified in the Name field already exists; otherwise the tag will receive the value 0.
• Description (output): This field is available only when using the Database format.
When the tag in the Start/Stop field changes to TRUE, the register that is added to the
BatchHistory table will display the string in this field.
Note: You can enter tag names between curly brackets in this field (e.g., {MyTag})
• Save data even if batch is not running: If this field is unchecked, the historical data will
be saved only when the tag in the Start/Stop field is TRUE.
Note: The Batch Historical data can be displayed to the user in either Graphical or Table
format. See Trend Folder or Grid Object to display information in these formats.
• Disk Space Control pane: The following options are available:
• History Life Time (days) field: Specify how many days to keep the history file on the
disk. After the specified period, Visual Designer automatically erases the file. Use this
option only for files based on a date.
• Compress After (days) field: Specify how many days to keep the trend history file
( *.hst ) on the disk before compressing the file. After the specified period, Visual
Designer automatically compresses the file. Use this option only for files based on a
date. This option is not available for Windows Embedded target systems.
• Disable All Data Saving field: Enter a tag to provide a temporary disable function. When
the tag value is TRUE (different from zero [0]), the trend task stops recording data for this
worksheet.
See also:
• Converting Trend History Files from Binary to Text
• Converting Trend History Files From Text to Binary
• Configuring a Default Database for All Task History
2. Click the arrow to the right of the History Format field. Select Database.
3. Click the Database Configuration button. This opens the Database Configuration
dialog. Enter the applicable data in this window. Click OK when you are finished.
4. Click the File drop-down menu, then click Save to save the changes to the Trend.
Trend Table on a Relational Database
The fields saved in the History Trend are described in the following table:
Field Name Data Type Remarks
Time_Stamp TimeStamp TimeStamp (Date and Time) when the data was saved.
<TagName> Integer or Real (depending on the tag type) Visual Designer will create one field (column) in the database for each tag
configured in the Trend worksheet.
In addition to the elements that are common to all Object Properties dialogs, the Object
Properties: Trend Control dialog contains the following elements:
Area / Element Name Description
Border Type Sets the type of border around the graph area of the trend control. (There are no
borders around the trend control's legend or toolbar.)
Color Sets the color of the border, if the border type is Solid. For more information,
see Selecting colors and fill effects.
Background No Fill / Fill Enables the background fill for the graph area of the trend control. (There are no
backgrounds for the trend control's legend or toolbar.) If the fill is not enabled,
then the graph is transparent to whatever other screen objects are behind the
trend control.
Color Sets the color and fill effect of the background fill, if it is enabled. For more
information, see Selecting colors and fill effects.
Points Opens the, which allows configuration of the trend control's data points (or
pens). For more information, see Trend Control: Points dialog.
Axes Allows configuration of the trend control's X and Y axes, as well as its horizontal
or vertical orientation. For more information, see Trend Control: Axes dialog.
Toolbar Allows configuration of the user toolbar that is displayed above the trend
control. For more information, see Trend Control: Toolbar dialog.
Data Sources Allows configuration of multiple data sources for the trend. For more
information, see Trend Control: Data Sources dialog.
Legend Allows configuration of the legend that is displayed below the trend control. For
more information, see Trend Control: Legend dialog.
Advanced Allows configuration of the trend control's advanced properties, such as runtime
options and tag triggers. For more information, see Trend Control: Advanced
dialog.
Although the Trend Control object supports flexible configurations to meet the specific
needs of your project, most of the settings are set by defaults based on the most common
interfaces. Therefore, in many cases, you will only configure data points (displayed during
runtime), which can be done easily by clicking the Points button from the Object Properties
window.
Points dialog
The Points dialog is used to configure the data points for a Trend Control screen object. The
value of each data point is represented as a pen in the trend display. You can dynamically
change which data points are visible during runtime, regardless of how many data points are
associated with the screen object.
Accessing the dialog
To access the Points dialog for a specific Trend Control screen object, first access the
Object Properties dialog for that screen object and then click Points.
The dialog in detail
Point A unique ID number for the point, which is assigned automatically when the point is created in this
interface.
Label The label associated with the Point can be displayed on the Legend, during runtime, providing a
short reference to the user for each Point.
Color The color of the pen usedColor of the pen used to draw the values of the Point on the Trend Control
object.
Data Source The data source for this point. Tag is available by default, but all other sources must be configured
in the Data Sources dialog.
Tag/Field The meaning of this parameter depends on the Data Source type associated with the data point:
• Tag: Type the name of the tag with values to display. If the tag is configured in the Trend task,
the history data is automatically retrieved; otherwise, only the online values are displayed.
• Batch: Type the name of the tag with values to be retrieved from the Batch History file
generated by the Trend Task, and displayed on the object.
• Database: Type the name of the field (column) in the SQL Relational Database that holds the
data Point values.
• Text File: Type the number of the column that holds the Point values. The number 0 refers to
the first column, 1 refers to the second column, and so on.
Min / Max The scale of the Y-axis for this point. This overrides the default scale that is set in the Axes dialog.
NOTE: The Min and Max properties can hold real numeric values up to six decimal places. If you
need more precision than that, then you must configure the Min and Max properties with Real tags
and then store the values in those tags.
Style The line and marker styles for this point; click the button to open the Pen Style dialog.
Options Additional options for this point; click the button to open the Options dialog.
Hide Tag trigger — when the value is TRUE, the data point is hidden in the trend display.
Line Settings State You have the option of defining a Hi Limit and a Lo Limit for each data Point,
with the Options dialog. The Pen Style Dialog allows you to configure different
settings for the pen (e.g., color), both when its values are within the limits
(Normal State) and not within the limits (Out of Limits state).
Use Normal Available only for the Out of Limits state. When checked, the pen will always
Settings be displayed with the settings for the Normal state, even if the data point values
are not within the limits configured for it.
Type The type of line (e.g., solid, dashed, dotted) that connects the data points.
Weight The weight of the line that connects the data points.
Expansion The algorithm used to connect the points, as follows:
• : Consecutive points are directly connected to each other by an
analog line. This option is suitable for numerical values.
• : Consecutive points are connected only through horizontal or
vertical steps (depending on the orientation of the trend display). This
option is suitable for Boolean values.
Marker The shape used to mark each data point. If no shape is selected, then only the
connecting line between points is displayed.
Marker size The size of the data point marker.
Color The color of the trend line and data point markers.
Fill Fill Type The type of fill between the trend line and the number line.
Pattern File The graphic file used to fill the trend area. Available only Fill Type is set to
Custom Pattern.
Click the browse button to open a Windows file browser and then select the
desired graphics file. The file should be located in your project folder.
See below for an example of trends with custom fill patterns.
Color The color used to fill the trend area. Available only when Fill Type is set to Solid
Color.
Fill Transparency The transparency level of the fill. (If the fill is transparent, then other trends
(%) behind it can be seen through it, making the entire graph easier to read.)
Available for both Custom Pattern and Solid Color.
Note: When viewing your project on either a Windows Embedded device or a Thin Client
(any OS), the Pen Style dialog — available during runtime — allows the user to change
the pen color only.
Options dialog
Description This text can be displayed in the legend, providing a short description about the data point, during
runtime. When tags are used, the default description is the one configured for the tag.
Eng. Unit This text can be displayed in the legend, providing the engineering unit (i.e., the unit of
measurement) associated with the data point, during runtime. When tags are used, the default units
are the ones configured for the tag.
Lo Limit When the data point value is below this limit, its pen can be displayed with a different style (e.g.,
color) during runtime. See Pen Style dialog for further information. When tags are used, the default
Low Limit is the Low Alarm value configured for the tag.
Hi Limit When the data point value is above this limit, its pen can be displayed with a different style (e.g.,
color) during runtime. See Pen Style dialog for further information. When tags are used, the default
High Limit is the High Alarm value configured for the tag.
Hide Scale You can configure a tag in this field to control the visibility of the scale (Y axis) associated with this
pen during runtime by changing the value of this tag (0=Show ; 1=Hide).
Break Interval Maximum interval between two consecutive points. If the time between two consecutive samples is
higher than this number (in seconds), the Trend Control assumes that there was no data collection in
this period and does not draw a line linking both samples. When the X Axis is configured as numeric,
the value on this field represents a numeric scalar value. If the X Axis is configured as date/time, the
value for this field is given in seconds.
This field has some special values:
• -1 : Do not connect the points.
• -2 : Connect only points in ascending order.
X-Axis Offset Off-set for this data point from the X-Axis scale configured for the object. This option is useful when
you want to display data from two or more data points using a different X scale (period of time/
value) for each one, so you can compare them. When the X Axis is configured as numeric, the value
on this field represents a numeric scalar value. If the X Axis is configured as date/time, the value for
this field is given in seconds.
Cursor Value You can configure a tag in this field. During runtime, the trend control updates the value of this tag
with the value of the intersection between the data point pen and the vertical cursor (if any).
Y-Axis Log Base Type a tag name or numeric value. When the value is 1, the Y-axis of the trend is displayed on a
logarithmic (e.g., 1, 10, 100, 1000) rather than linear scale.
Annotation ID N/A
Style Modifier N/A
Axes dialog
Period (when Data Min / Max Minimum and maximum values displayed on the X-axis.
Type is Numeric)
The Min and Max properties can hold real numeric values
up to six decimal places. If you need more precision than
that, then you must configure the Min and Max properties
with Real tags and then store the values in those tags.
Eng. Units Engineering Unit (e.g., Kg, BTU, psi) that is associated with
the X-axis during runtime.
Grid Divisions You can configure the number of divisions (vertical or
horizontal lines) drawn on the object for the X and/or Y-axis
respectively, as well as the color of these lines.
Color
Time Bar When checked, the Time bar is displayed below the X-
axis during runtime; otherwise, it is hidden. The time bar
is a standard interface that can be used by the operator to
change the X-axis scale during runtime.
Scroll Bar When checked, the Scroll bar is displayed below the X-
axis during runtime; otherwise, it is hidden. The time bar
is a standard interface that can be used by the operator to
navigate through the X-axis scale during runtime. Optionally,
you can configure a tag in the Scroll bar field, which defines
the period for the scroll bar. If this field is left empty, the
period is equal to the current value for Duration of the X-
axis.
Cursor The cursor is an optional ruler orthogonal to the X-axis,
which can be used during runtime to obtain the value of
any pen at a specific point (intersection of the pen with
the cursor). When you click this button, the Cursor dialog
launches, where you can configure the settings for the
optional vertical cursor as follows:
Positon Defines the position of the X-axis, as well as its direction
and orientation, as follows:
Y-axis Grid Divisions You can configure the number of divisions (vertical or
horizontal lines) drawn on the object for the X and/or Y-axis
respectively, as well as the color of these lines.
Color
Scale Min / Max Default minimum and maximum values displayed in the Y-
axis. Used when more than one pen shares the same scale
(Multiple Sections disabled), and/or for the points whose
Min and Max fields are not configured (left blank).
Multiple When checked, the Y scale is divided automatically into one
Selections section for each pen; otherwise, all pens share the same Y
scale.
Format Launches a dialog for configuring the format of the labels
displayed by the Y-axis.
Note: The tags configured in the Period/Range fields are automatically updated when the
user changes the X scale dynamically during runtime, using the Time bar embedded in
the object.
• Data Type: The X-axis can display either Date/Time values or numeric values, according
to this setting.
Data Type Scale Format
Date/Time
Numeric
Note: The number of decimal points for the X or Y scale (Decimals) can be configured
with a tag. Therefore, this setting can be modified dynamically during runtime.
• Cursor: The cursor is an optional ruler orthogonal to the X-axis, which can be used during
runtime to obtain the value of any pen at a specific point (intersection of the pen with the
cursor). When you click this button, the Cursor dialog launches, where you can configure
the settings for the optional vertical cursor as follows:
Property Description
• Position: Defines the position of the X-axis, as well as its direction and orientation, as
follows:
Property Description
Placement Side of the trend control on which the X-axis will be placed.
Direction Direction of the X-axis.
Orientation Orientation of the X-axis.
Vertical Label The orientation of the text labels on the vertical axis, regardless of whether the vertical axis
Orientation is X or Y.
Toolbar dialog
The Toolbar dialog is used to customize the toolbar on the Trend Control screen object.
Accessing the dialog
To access the Toolbar dialog for a specific Trend Control screen object, first access the
Object Properties dialog for that screen object and then click Toolbar.
The dialog in detail
The Show toolbar option controls whether the entire toolbar is shown during runtime. You
may hide the toolbar to save space or to prevent users from changing the trend display.
Also, each command/tool in the toolbar has the following properties:
Column Name Description
Command The name of the command/tool. For more information about each tool, see
Show The option to show the tool on the toolbar.
Activation Tag An optional tag trigger — when the value of the tag changes, the command is triggered as if the
tool was clicked.
This can be used to script changes in the trend display, You can configure a tag in this field
(optional). When the tag changes value, it triggers the respective command. This option is useful
when you want to create customized interfaces to trigger the commands, instead of (or redundant
with) the embedded toolbar.
Tooltip The tooltip that is displayed when the mouse cursor hovers over the tool.
The data source defines the location of the values from the data point(s) associated with it.
Many points can share the same data source — you do not need to create one data source
for each data point.
The data source tag is available by default to the Trend Control object. You can add additional
data sources with the New button. The name you enter will be used as an alias to link the
data points to this new data source.
The other fields in this dialog allow you to edit the data source settings:
• Source Type: Select the source type of the location of the data point values.
• X-Axis: Enter the name of the field (column) from the data source that holds the X axis
data.
• Max. Buffer: The maximum amount of data (in bytes) that will be held in runtime
memory.
• Load Progress: The tag in this field will receive a real value (0-100) that represents the
percentage of the Data Source load progress.
• Sort: This option is useful for plotting data from a Text file. When enabled (checked), it
sorts the data and shows the Cursor column value until the Max. Buffer is filled. When
disabled (unchecked), the data are not sorted and the Cursor column value is not shown.
• Keep Open: This option keeps the data source open as long as the screen that contains
the Trend Control object is open. This improves the performance of the runtime project,
but keeping the data source open may cause other problems like database connection
errors (when Source Type is Database) and file write conflicts (when Source Type
is Batch or Text File). To close the data source after the data has been loaded, clear
(uncheck) this option.
• Data Source Settings: Click to define the settings for the selected Source Type.
The following table summarizes the settings for each Source Type:
Data Source Type Description X-Axis field Data Source Settings
Batch Batch generated by the Trend Disabled. The X-Axis data will
task of Visual Designer be retrieved automatically on
the correct position from the
proprietary Batch file generated
by Visual Designer.
Enter the data point values in Batch Name for their retrieval.
You can configure a tag between curly brackets in this field to
change this setting dynamically during runtime.
Text File Text file (e.g., CSV file) with Number of the column that
data point values separated by a holds the X-Axis data. The
specific delimiter number 0 refers to the first
column, 1 refers to the second
column, and so on.
Enter the name of the text file that holds the data points. The
default path is the current project folder. You can configure a
tag between curly brackets in this field to change this setting
dynamically during runtime.
You can also choose one or more delimiters for the data stored
in the text file. The value of each row is written in the text file
between two delimiters. When using a comma as a delimiter,
the grid object is able to read data from CSV files. You can even
choose a custom delimiter by checking the Other option. Please
refer to Appendix A for an example of configuring text files.
Legend dialog
Remove Press button to completely remove this pen from the legend and the
Trend chart.
Hide Select (check) option to hide this pen in the Trend chart.
Pen Style Press button to change the pen's line style, weight, color, markers,
and so on.
Scale Select (check) option to show the pen's scale on the Trend chart.
• Properties: Allows you to configure the properties for the field highlighted in the
Available or Visible box:
Property Description
Property Description
• Maximum size: Defines the size of the legend in terms of number of rows. For instance,
the user might have 8 points being displayed in the trend object, if the maximum size is
set to two, the legend will have a scroll bar to allow the user to scroll to the other points.
• Number of items: Number of points (default) displayed on the legend. You can allow the
user to add/remove points during runtime regardless of the value in this field.
• Selected Item: You can configure a numeric tag in this field. The object writes in this tag
the number of the selected row. In addition, you can select different rows by writing their
values in this tag.
• Fonts: Sets the font for the text displayed in the legend.
Advanced dialog
Run Mode Update trigger When the tag configured in this field changes value, the trend object is updated
Options (refreshed).
Update interval When the update trigger is issued and the X Axis if of type numeric, the value on
this field will be added to the minimum and maximum values of the X Axis.
Load indicator Type the name of a project tag. While the trend control is loading external data,
the tag receives a value of 1, and when the trend control has finished loading
the data, the tag receives a value of 0.
Move to current When this box is checked, X axis shifts to the current time automatically when
time on run the object is triggered to Play mode, during runtime.
Retrieve When this box is checked, the object retrieve the data outbound the object (first
bounding points only). Uncheck this option can improve the performance, since the points
samples outbound the object will not be retrieved from the history. On the other hand,
Load trigger When the tag configured in this field changes value (e.g., toggles), the settings
from the temporary file are loaded and applied to the Trend object during
runtime.
NOTE: After the screen where the Trend object is configured is saved, the
settings are not automatically loaded from the temporary file when the screen is
opened again, unless the Load trigger command is executed before the screen
is closed.
File Name If this field is left blank, the temporary file is saved
in your project's Web sub-folder with the syntax
ScreenNameObjectIDTrendControl.stmp (e.g.,
MyScreen10TrendControl.stmp). The Thin Client station saves/
loads the temporary file in the standard Temp directory of the operating system
(e.g., \Documents and Settings\CurrentUser\Local
Settings\Temp).
You can configure a customized file name for the temporary file in this field or
even configure a string tag between curly brackets, so the user can change the
name of the configuration file dynamically during runtime by changing the value
of this tag. If you do not specify any path, the file is saved in your project's Web
sub-folder by default.
Auto Save When this box is checked, the current settings of the Trend are automatically
saved in the temporary file when the screen where the Trend is configured is
closed during runtime. If the box is not checked, the settings are saved only
when the Save trigger command is executed.
Custom Point Screen This interface allows you to create your custom dialog to modify or insert pens
Selection to the object.
Name of the screen which must be launched when the user triggers a command
to modify or insert a new pen to the object during runtime.
Point Number Point number (from the Points dialog), indicating the point associated to the pen
that will be inserted or modified during runtime.
Add Indicator Flag that indicates that the user triggered an action to insert a new pen (value 1)
instead of modifying a pen that is already been visualized (value 0).
Export to File Trigger When the tag configured in this field changes value (e.g., toggles), the current
state of the trend control is exported to an image file. The toolbar and scroll
bar are not included. The legend and time display are included only if the trend
control is configured to show them.
File Name The file path and name of the exported file.
If no path is specified, then the file is saved in the project directory. If no
extension is specified, then it is determined by Format.
Size The image file is exported at full size by default. However, you can specify the
width and height (in pixels).
Options VK (Virtual Virtual Keyboard type used for this object.
Keyboard)
Ignore X Filter When this box is checked, the X Filter is ignored to avoid adding the WHERE or
querying clause to the Data Sources.
Enable Enable the external translation for the text displayed by this object.
translation
Auto Format When checked, decimal values in the Current, Cursor, Max, Min and Scale
columns will be formatted according to the virtual table created by the
SetDecimalPoints() function.
NOTE: For the Auto Format to work, decimals formatting on the X-axis must be
disabled — that is, the Decimals field in the Axes dialog must be left blank.
Runtime Interface
When enabled, some embedded interfaces can help the user to interact with the Trend
Control during runtime. This section describes these interfaces:
• Toolbar: The commands available in the embedded Toolbar are described in the
following table:
Command Icon Description Activation Tag
Run Sets the Trend to the Play Mode. In this mode, the X axis is 0 = Play Mode on
continuously updated (Online Mode). This option is disabled (grayed
out) when the trend is already in Play Mode. 1 = Play Mode off
Stop Sets the Trend to the Stop Mode. In this mode, the X axis is not 0 = Stop Mode on
continuously updated (History Mode), so the user can visualize history
data in a frozen period of time. This option is disabled (grayed out) 1 = Stop Mode off
when the trend is already in Stop Mode.
Period Launches an embedded dialog, where the user can modify the X axis When the Activation Tag changes value (e.g.,
scale main settings. toggles), this command is executed.
Window Zoom Allows the user to click on the Trend area and drag the cursor to
select the area that must be visible when the cursor is released. This
option is disabled (grayed out) when the Multiple Section option
(for the Y scale) is active.
Horizontal Zoom Allows the user to click on two points in the Trend area, defining the
horizontal scale that must be available.
Vertical Zoom Allows the user to click on two points in the Trend area, defining the
vertical scale that must be available. This option is disabled (grayed
out) when the Multiple Section option (for the Y scale) is active.
Zoom In Allows the user to zoom in (display half of the current X and Y scales) 0 = Zoom In on
each time they click on the Trend area.
Zoom Out Allows the user to zoom out each time they click on the Trend area. 0 = Zoom Out on
1 = Zoom Out off
Cancel Zoom Cancels the current Window, Horizontal or Vertical Zoom and When the Activation Tag changes value (e.g.,
returns the Trend display to its original scale. toggles), this command is executed.
Legend Properties Launches an embedded dialog, where the user can modify the Legend
main settings.
Pen Style Launches an embedded dialog, where the user can modify the style of
the selected pen.
Add Pen Launches a dialog, where the user can add a new pen to the Trend
object.
Remove Pen Removes the selected pen from the Trend display.
Multiple Sections Switches the Y scale to Multiple Sections (a section for each pen) or 0 = Multiple Sections on
Single Section (all pens share the same Y scale section).
1 = Multiple Sections off
Auto Scale Changes the Y axis scale to fit all values from the pens that are When the Activation Tag changes value (e.g.,
currently being monitored. toggles), this command is executed.
Print Prints the current state of the Trend display. (Historical data are not When the Activation Tag changes value (e.g.,
printed.) toggles), this command is executed.
• Legend: The commands available in the embedded Legend are described in the
following table:
Command Icon Description
Selection Launches a dialog, where the user can replace the data point associated with
the selected pen on the legend
Remove Removes the selected pen from the Trend object
Pen Style Launches an embedded dialog, where the user can modify the style of the
selected pen.
Scale When this box is checked, the Y axis scale is visible; otherwise, it is hidden.
The scale can be hidden only when the Multiple Sections option is off.
• Scroll bar: Using the Scroll bar, the user can slide through the X axis values, according to
the period configured for this scale.
• Time bar: Using the Time bar, the user can modify the Duration, as well as the Start
Date/Time and/or the End Date/Time, for the data displayed on the object. Changing
these values will affect the tags associated with the X axis scale (if any).
graph) is represented by a row (a line in the file). Suppose that the user wants to display a
chart with the information in the following table:
0 0 10
1 1 20
2 2 30
3 3 40
We have one variable that represents the X Axis and two variables (Y1 and Y2) that will
represent different lines in the chart. The first step is to convert the data into a text file. If we
adopt the comma as our separator the file will be as shown below:
We strongly recommend that you save the file in the same folder where the project is. By
doing so, you do not have to specify the entire path and your project will still work, even if it
is copied to a different computer.
Once you have added the Trend Control to your screen, double-click on the object to
open the Object Properties and click on Axis…. Change the Data Type of the X Axis to
Numeric, and set the ranges as shown in the picture below:
Click OK on this window and then, in the Object Properties window, click on the Data
Sources… button. The following window will display:
We need to create a data source in order to access to the text file. Click on the New…
button, specify the Data Source name MyTextFile and then click Create. You should see
the following information now:
On the X Axis field we need to indicate which column in our text file represents the X Axis.
In our example we are using column zero, so enter 0 for this field, then click Data Source
Settings…. The following window will display:
If you have copied the text file to the project folder, you only have to specify the file name,
otherwise, enter with the complete path where the file is located (use the browse button as
needed). Click OK on this window and OK again to finish the data source configuration and
close the Data Source configuration Window.
Now we need to define our Y1 and our Y2. They will be represented by points on our Trend
Control. Double-click on the Trend Control again to access the Object Properties window
and then click on Points…. Your next step is to define the points according to the following
figure:
After following these steps, run your project and you should see something similar to the
figure below:
Suppose that you have an access database at your C drive named mydata.mdb and that you
want to generate a chart based on the information in the following table:
The first step is to add the Trend Control to your screen. Now double-click on the object
to open then Object Properties and click on Data Sources…. The following window will
display:
We need to create a data source in order to access to the database. Click the New… button,
specify the Data Source name MyDB and then click Create. You should see the following
information now:
Change the Source Type to Database and specify Time_Stamp in the X Axis field. Then
click on the Data Source Settings… button, the following window will display:
Uncheck the checkbox Use project default and click on the browse button … in order to
configure the connection string. The following window will display:
Select the Microsoft Jet 4.0 OLE DB Provider and click Next ». In the following window, you
should specify the database path:
Click OK to finish the Connection String configuration. Now uncheck the option Use default
name and select the table from your database as shown below:
Click OK on this window and OK again to finish the data source configuration and close the
Data Source configuration window.
Now we need to define Temperature and Pressure. They will be represented by points on
our Trend Control. Double-click on the Trend Control again to access the Object Properties
window and then click Points…. Your next step is to define the points according to the
following figure:
If you run the trend, it will start with the current date/time. In order to see the data in the
chart you will have to properly configure the start date/time as shown below:
Grid object
The Grid object allows you to read/write data in a tabular format from the data source
configured in the object.
To draw one, do the following:
1. Click the Grid tool
2. Click on the screen, click the left mouse button, and drag the mouse across the screen to
create a box of the desired size (while holding down the mouse button).
3. Release the mouse button, and the Grid Object will display.
Right-click on the Grid Object, and select Properties from the menu. The Object Properties
dialog will open. Use this dialog to configure the Grid Object's parameters:
• Data Source: Select the data source type. The object supports three data sources:
Data Source Description
Text File Displays data from a text file in the ASCII or Unicode format (e.g., CSV text files).
Class Tag Displays values from a Class Tag, where the members of the tag are fields (columns) of the
grid object, and each array position is one row of the grid object.
Database Displays data from an SQL Relational Database, using ADO (ActiveX Database Object) to
exchange data with the database.
• E-Sign: When you check this option, the user will be prompted to enter an electronic
signature before entering or modifying data on the object.
• VK: Select a Virtual Keyboard type used for this object. The option <Use Default> selects
the default Virtual Keyboard configured in the Viewer settings (Viewer on the Project tab
of the ribbon). You can also specify a different Virtual Keyboard for this Grid object.
• Security: Enter the security system access level required for the object/animation.
• Disable: You can enter an expression in this field to disable data input or action by the
user.
• Highlight Color: Select a background color for the selected row, during runtime.
• Text Color: Select a text color for the selected row, during runtime.
• Win Color 1: Select a background color for the odd rows.
• Win Color 2: Select a background color for the even rows.
• Fonts: Click to launch the Fonts dialog, where you can configure the font settings for the
text displayed in the Grid object.
• Columns: Click to launch the Columns dialog, where you can configure the settings
(such as label, column, width, etc.) for the columns of the Grid object.
• Data: Click to launch the Data dialog, where you can specify a data source for the Grid
object.
• Advanced: Click to launch the Advanced dialog, where you can configure several
settings for the Grid object.
Columns dialog
You can configure the settings for each column displayed by the Grid object during runtime,
as follows:
• Column: The ID Number defines the position of the column in the table.
• Label: Enter a Title for each column, which will display as the heading (first) row of the
Grid object.
Note: You can configure tags between curly brackts in the Label field to modify it
dynamically during runtime. When the label is blank (e.g., ""), then the width of
the column is set to 0 during runtime. This option is useful to hide columns during
runtime.
• Field: Enter the name of the field (column) in the SQL Relational Database to which the
Grid object is linked. If this field is left in blank, the text configured in the Label field will
be used as the Field name. (This setting is available only when the Data Source type is
set to Database.)
• Type: Select the Type of interface that will be used in the column. The options are:
Type Description
Note:
• When the Data Source type is set to Database, it is important to make sure
that the Type for each column configured in the object matches the Type of
the respective field in the database.
• When the Data Source type is set to Database, you can configure valid SQL
statements directly in the field (e.g., List(DISTINCT [Cell_Name]) AS
[Cell Name]). You can also configure tag names between curly brackets to
modify this setting during runtime (e.g., {MyFieldName}).
Note: If Picture is the column type, the Grid object displays a default icon ( ) if the
picture file is not found during runtime. You can configure a different picture to
be displayed when the file is not found by copying the picture file to the Web sub-
folder of your project folder and configuring its name on the project_name.app
file, as follows:
[Objects]
GridDefaultPicture=PictureFileName
• Width: Enter a width of the column, in pixels.
• Align: Select an Alignment for the data shown in the column. There are three options:
Left, Right or Center.
• Input: Click (check) to allow the user to enter data in this column during runtime.
• Key: Use this field to designate a shortcut for sorting the values. A shortcut is a
combination of keys pressed on a keyboard at one time (e.g., CTRL+C, CTRL+V, etc.).
This option is especially useful when creating projects for runtime devices that do not
provide a mouse or touchscreen interface and only have a keyboard for interacting with
the project during runtime.
• Unit: Enter the name of the engineering unit (i.e., the unit of measurement), if any,
that applies to the data displayed. You can also enter a String tag using the {tagname}
syntax, which allows you to change the value of Unit during runtime.
• Decimal Points: Enter the number of decimal places to be displayed. You can also enter
an Integer tag using the {tagname} syntax, which allows you to change the value of
Decimal Points during runtime.
Note: When the Data Source type is set to Class Tag, and the Columns dialog is left
blank, the object displays the values from all members of the Class tag with the
following default column settings:
• Label = <Name of the Member from the Class tag>
• Type = Text
• Width = <Minimum size to display the name of the member from the class tag
on the header of the grid object>
• Align = Center
• Input = Enabled (checked)
• Key = <None>
• Unit = <Unit of the Member from the Class tag>
The Unit of a class member or tag is set using the Tag Properties tool.
• Show ID Column: Check to display the number of each row, automatically.
• Allow sorting columns: Check to enable the user to sort the values in the columns
during runtime, either by clicking on the label or by using the shortcut configured for each
column. This option is disabled if the Show header option from the Advanced dialog is
not checked.
Note: Use the Move Up and Move Down buttons to reorder the display of the columns.
Data dialog
This dialog allows you to configure the data source for a Grid object.
Grid Data – Text File
When the Data Source type is set to Text File, you can configure the following settings:
• File: Enter the name of the text file source. You can either type the file name and its path
or click the … button to browse for it. (If the file is stored in your project folder, you can
omit the path in the name.)
Note: You can configure tag names between curly brackets {TagName} in the File field.
• Delimiters: Set the delimiter(s) used in the data source file. For instance, if the data will
be read from a CSV (comma separated values) file, you would select the Comma option.
You can even choose a custom delimiter by checking the Other option and typing the
custom delimiter in the field beside it.
• Read only checkbox: When this option is checked, the Grid object will only read data
from the specified file. The object will not write anything to the file.
Grid Data – Class Tag
When the Data Source type is set to Class Tag, you can configure the following interface:
• Class Tag: Enter the name of the main class tag source. (Do not specify a specific
member of the class tag.) You can specify the initial array position in this field (e.g.,
Mytag[10]); otherwise, 0 (zero) will be used as the initial position by default.
• Number of Items: Enter the number of array positions from the Class Tag that should
be displayed.
• View: When the tag configured in the optional field changes value (e.g., toggles) during
runtime, the grid object launches a dialog, allowing the user to show/hide each column or
modify their positions.
Please refer to the Database Configuration dialog for further information about this dialog.
Advanced dialog
This dialog allows you to configure the advanced settings for a Grid object.
• User Enable: If the value of this tag is TRUE (different from 0), the user can select
different rows of the object by clicking on them during runtime. This field can be
configured with a tag or with a numeric value.
• Selected Values: The values from each column of the selected row are written to
each position of the array tag configured in this field. Moreover, you can modify the
value of the cells currently selected in the Grid object by changing the value of array tag
configured in this field. The initial array position (offset) can be configured in this field.
• Number of Rows: The grid object writes the number of rows currently available in the
grid object to the tag configured in this field.
• Row Number: The Grid object writes the number of the row currently selected during
runtime. In addition, you can select different rows by writing their values in this tag.
• Condition: Enter an expression to filter the grid data; only rows that match the
expression will be displayed. The expression must use the following syntax:
For example…
When Data Source (in the Grid Object Properties dialog) is set to Text File or Class
Tag, the Column is the value specified in the Label. When Data Sourse is set to
Database, the column is the value specified in the Field. (In this case, if the Field is left
blank, then the column value specified is the Label.)
Also, expressions for Database must be formatted like a SQL Where statement. The
following table shows which operators should be used:
equal to = LIKE
not equal to <> NOT LIKE
wildcard, single character ? _
wildcard, unlimited characters * %
C1 = 'ab?d'
C1 LIKE 'ab_d'
Finally, you can combine several expressions simultaneously in the Condition field, using
the logic operators AND, OR, and NOT. For example:
Note: You can configure tags between curly brackets {TagName} in the Condition field
to change the filtering condition during runtime.
• Print Trigger: When the tag configured in this field is toggled, the current state of the
Grid object is sent to the default printer.
• PDF Trigger field: When the tag configured in this field is toggled, the current state of
the Grid object is saved as a PDF file at the location specified by PDF Filename.
• PDF Filename field: Enter a complete file path and name where the PDF file is to be
saved. You can also enter a tag name using the {tag} syntax.
Note: PDF Trigger and PDF Filename are not supported in projects running on Windows
Embedded or Thin Client.
• Multiline checkbox: When this option is checked, the print output or PDF will be
formatted according to the available column space, and the text within each cell will be
wrapped so that all of it is shown.
• Reload: When the tag configured in this field is toggled, the object reloads the data from
the data source and displays it.
• Save Trigger: When the tag configured in this field is toggled, the data source (Text
File or Database) is updated with the current values of the grid object. This field is not
available when the Data Source type is Class Tag, because the values are automatically
updated in the tags as you change a cell in the grid.
• Insert Trigger: When Auto refresh after insert trigger is enabled (checked), the tag
configured in this field is used as a trigger to refresh the database table. Whenever the
value of the tag changes, a new row is added to the table and the values of the array
configured in the Inserted Values field are automatically inserted.
• Inserted Values: If the Insert Trigger is being used, then the array tag configured in this
field provides the values that will be inserted. This field must only contain an array tag,
although it can be of any size.
• Save on data change: When this option is checked, the values are updated on the data
source (Text File or Database) as soon as the user enters a new value on the grid, during
runtime. This option is disabled when the Data Source type is Class Tag, because the
values are automatically updated in the tags as the user changes the value of the cells in
the grid.
• Enable Slider/Resize: If this box is not checked, the user is unable to scroll the list by
dragging the slider button, or to change the cell's size during runtime.
• Conditional checkbox: When this option is checked, the user cannot uncheck a
checkbox on the Grid during runtime, unless all preceding checkboxes in the same
column are already unchecked. This option is especially useful when you want to oblige
the user to follow a pre-defined sequence. This field is not available when the Data
Source type is Class Tag.
• Show Header: When this option is checked, the header of the Grid object is visible
during runtime, displaying the label of each column.
• Show gridlines: When this option is checked, the gridlines of the Grid object are visible
during runtime.
• Ext. translation: When this option is checked, the text displayed by the Grid object will
be susceptible to the Translation Tool during runtime.
• Disable TAB to navigate through cells: When this option is checked, the user can only
navigate through the cells of the Grid Object with the arrow keys, rather than the Tab
key. You should disable the Tab key for navigation if you want it to be used for switching
to the next object that supports focus on the screen.
• Concatenate Label for picture: When this option is checked, the reference name for
the picture is the result of the concatenation of the name in the Field column with the
value of the Label column. The result will be <Label name>_<Field value>.
• Export: This interface allows you to export the data from the grid object to a class-array
tag, regardless of the Data Source selected for the object. The following fields must be
configured to support this feature:
Field Description
Class tag Type the main tag name of the class-array tag that will receive the exported values. Each
row from the grid object will be exported to one array position of the array tag, by matching
column labels. The initial array position can be configured in this field; 0 is the default.
Field Description
Trigger When the tag configured in this field changes value (e.g., toggles), the data is exported from
the Grid object to the class-array tag configured in the Class tag field.
Note: The Export feature is an easy and powerful tool to transfer data from different data
sources to tags. After exporting the data to tags, you can use different tasks to
manipulate the data, such as the FileWrite() function, or the Recipe or Report tasks
to save the data in text files (e.g., CSV files).
• Auto Format: When this option is checked, decimal values in columns of Numeric type
will be formatted according to the virtual table created by the SetDecimalPoints()
function. This option will work only in columns for which Decimal Points are not already
configured. For more information, please see Grid Object: Columns dialog.
Background Tasks
Background tasks are, as the name implies, project features that run in the background, as
opposed to the graphical screens with which the user interacts.
The background tasks are executed by the Background Tasks module (see Execution Tasks),
and they are defined by task worksheets in the Project Explorer.
Alarm worksheet
The Alarms folder enables you to configure alarm groups and tags related to each group.
The Alarm worksheet defines the alarm messages generated by the project. The primary
purpose of an alarm is to inform the operator of any problems or abnormal condition during
the process so he can take corrective action(s).
The Alarm worksheet is executed by the Background Task module (see Execution Tasks). It
handles the status of all alarms and save the alarm messages to the history, if configured to
do so, but it does not display the alarm messages to the operator; the Alarm/Event Control
screen object, available on the Graphics tab of the ribbon, must be created and configured in
a screen in order to display alarms.
To create a new Alarm worksheet, do one of the following:
• On the Insert tab of the ribbon, in the Task Worksheets group, click Alarm;
• Right-click the Alarms folder in the Project Explorer, and then click Insert on the shortcut
menu; or
• Click New on the Application menu, click the File tab, and then select Alarm
Worksheet.
To edit an existing Alarm worksheet, double-click it in the Project Explorer.
You can create multiple Alarm groups (worksheets) and each group can be configured with
independent settings, such as message colors, history log enabled/disabled, and so forth.
Each Alarm worksheet is composed of two areas:
• Header: Settings applied to all tags and alarms configured in the same alarm group.
These settings allow you to configure the formatting of the message and the actions that
must be triggered based on alarm events (e.g., print alarms, send alarms by email, and so
forth). For more information, see Header Settings.
• Body: Configure alarm messages and associate them to conditions linked to tags. For
more information, see Body Settings.
Note:
• You can configure the Alarm Group to send notifications by Email automatically,
based on alarm events. For more information, see Email Settings.
• The alarm properties associated to each tag (configured in the body of the alarm
group) can also be edited by the Tag Properties dialog (Properties on the Home
tab of the ribbon). However, before associating a tag to an alarm group, it is
necessary to create the alarm group and configure the settings on its header,
which will be applied to all tags associated to the group.
• As of Visual Designer v6.1+SP2, the Alarm task has been modified to avoid
automatically acknowledging alarms by another alarm. For example, the Hi (Lo)
alarm should not be automatically acknowledged when the HiHi (LoLo) alarm
becomes active. To enable the previous behavior, set the following key in your
project (.APP) file:
[Alarm]
UseLegacyPriorityAck=1
CAUTION
The settings configured in the body of each Alarm worksheet are stored in the Tags
Database archive(s). Therefore, changes to the tags database may affect the content of the
Alarm worksheets (body). Notice that each tag/type cannot be available in more than one
Alarm group simultaneously because the Alarm Group is a property associated to each Tag/
Alarm Type (e.g., Tag: Level; Alarm Type: Hi; Alarm Group: 2).
Trend worksheet
The Trend folder enables you to configure history groups that store trend curves. You can
use the Trend worksheet to declare which tags must have their values stored on disk, and
to create history files for trend graphs. The project stores the samples in a binary history file
(*.hst), and shows both history and on-line samples in a screen trend graph.
The Trend worksheet is executed by the Background Task module (see Execution Tasks).
It handles the saving of trend data to the history, but it does not display that data to the
operator; the Trend Control screen object, available on the Graphics tab of the ribbon, must
be created and configured in a screen in order to display trend data.
To create a new Trend worksheet, do one of the following:
• On the Insert tab of the ribbon, in the Task Worksheets group, click Trend;
• Right-click the Trends folder in the Project Explorer, and then click Insert on the shortcut
menu; or
• Click New on the Application menu, click the File tab, and then select Trend Worksheet.
To edit an existing Trend worksheet, double-click it in the Project Explorer.
• Body area (bottom section), where you define each tag in the group. This section
contains several columns (only two are shown in the preceding figure).
Use the Header parameters on this worksheet as follows:
• Description field: Type a description of the worksheet for documentation purposes.
• Type combo box: Click the arrow button to select a trend history format from the list.
The available options are:
• Proprietary
• File Format: Binary
• Default Path: …\project_name\Hst\GGYYDDMM.HST, where:
• YY = Two last digits of the year
• MM = Month
• DD = Day
Note: Visual Designer provides the HST2TXT.EXE and TXT2HST.EXE programs,
which enable you to convert trend history files from binary ( .hst ) to text
( .txt ) and vice versa. For more information about these programs, see
Converting Trend History Files from Binary to Text and Converting Trend
History Files from Text to Binary.
• Database
• Database Type: Chosen by the user
• Default Table Name:TRENDGGG ( GGG = Trend Worksheet Number; e.g.,
TREND001 for the Trend Worksheet 001)
For more information about the structure of the database table that Visual Designer
uses to save history files, see Database Interface.
CAUTION
You can specify String tags in many fields of the Trend worksheet, to change those
values during runtime, but doing so may affect how those values are saved in the trend
history:
• When the history format is Proprietary, the value of the String tag is converted to a
numerical value (if possible) and then saved to the history file. If numeric conversion
is not possible, then a value of 0 is saved.
• When the history format is Database, the actual value of the String tag is saved in
the database.
• Database Configuration: Opens the Database Configuration dialog, where you can
enter the requisite settings to link the project to an external SQL Relational Database for
the purpose of saving the trend history.
• Save On Trigger checkbox and field: Click (enable) and type a tag name to save trend
samples when someone changes the specified tag. (Tag change can be an event from
the Scheduler.)
• Save On Tag Change checkbox: Click (enable) to always save the trend sample when a
value change occurs in any of the tags from that group.
• Advanced: Click to display the Trend Advanced Settings dialog. For information about
completing the fields in this window, see Batch History Configuration.
Use the Body parameters on this worksheet as follows:
• Tag Name field: Type the tag name to be saved in the history file.
• Dead Band field: Type a value to filter acceptable changes when Save on Tag Change
is used. For example, Dead Band has value = 5. If the tag value is 50 and changes to 52,
the system will not register this variation in the database, because it is less than 5. If the
change is equal to or greater than 5, the new value will be saved to the history file.
• Field field: Name of the field in the database where the tag will be stored. If this field is
left blank, the name of the tag will be used as the tag name. Array tags and classes will
have the characters "[", "]" and "." replaced by "_". Examples:
Tag Name Default Field
MyArray[1] MyArray_1
MyClass.Member1 MyClass_Member1
MyClass[3].Member2 MyClass_3_Member2
Note: The Trend task can accept only up to 240 tags in a single worksheet. If you manually
configure more than 240 tags in the same worksheet, then the Trend task will
generate an error when you run the finished project.
See also:
• Converting Trend History Files from Binary to Text
• Converting Trend History Files From Text to Binary
• Creating Batch History
• Configuring a Default Database for All Task History
Recipe worksheet
A Recipe worksheet is used to load tag values from or save tag values to an external file
during runtime. It is typically used to execute process recipes, but you can store any type of
information (such as operation logs, passwords, and so on) in the external file.
To create a new Recipe worksheet, do one of the following:
• On the Insert tab of the ribbon, in the Task Worksheets group, click Recipe;
• Right-click the Recipes folder in the Project Explorer, and then click Insert on the
shortcut menu; or
• Click New on the Application menu, click the File tab, and then select Recipe
Worksheet.
To edit an existing Recipe worksheet, double-click it in the Project Explorer.
• File Name field: Type the name of the external file, using static text ( File1 ) or a
indirect tag ( {FileNameTag} ).
• Register Number field: Type a tag to define the register number to be read or written
into a DBF file. (This field is for legacy purposes only and is no longer used.)
• Save As XML: Select (check) to save information in XML format, or deselect (uncheck)
to save in DAT format.
You can load information in a .DAT file into different tags using a second Recipe
worksheet, but you must load information in an .XML file into tags with the same name
as the tag from which the data originated.
Note: As with HTML pages, you must be running the Web server to view XML data from
the Web. Unlike the HTML pages in the runtime system, XML pages do not need
to have the project running to view the XML data. (You must be running Internet
Explorer version 5.0 or higher to view XML data.)
• Unicode checkbox: Click (enable) to save the recipe in Unicode format (two bytes per
character) or (disable) to save the recipe in ANSI format (one byte per character).
Note: When saving a worksheet, you can save it using any name you choose (you
are not required to use a predefined file name). A configuration file using the
default extension .RCP (or .XSL if you specify Save As XML) contains the recipe
configuration and the File Name field contains the data file name to be read or
written.
Use the Body parameters on this worksheet as follows:
• Tag Name field: Type tag names to update with file contents or with values to write to a
file. If the tag is an array, you must specify the first position to use.
If the tag is an Array or a Class (or both), then the development application automatically
enables every array position and class member by default. To configure a specific array
position and/or class member, type it in the Tag Name field as normal. For example,
level[3].member.
• Number of Elements field: Specify how many positions of the array tag are in use.
Note: You can configure a tag name between curly brackets ({tagname}) in this field,
allowing the user to dynamically change the Number of Elements configured in the
Recipe for each array tag, during runtime.
To execute a Recipe worksheet, use the Recipe function anywhere an expression is
allowed.
Report worksheet
A Report worksheet is used to design a report that is dynamically generated during runtime
(using the current values of the included tags) and then either sent to a printer or saved to a
file.
To create a new Report worksheet, do one of the following:
• On the Insert tab of the ribbon, in the Task Worksheets group, click Report;
• Right-click the Reports folder in the Project Explorer, and then click Insert on the
shortcut menu; or
• Click New on the Application menu, click the File tab, and then select Report
Worksheet.
ODBC worksheet
The ODBC interface runs in a network environment and uses the standard Windows ODBC
configuration. The ODBC task is capable of data interchange between Visual Designer and
any database supporting this interface.
Note: In addition to configuring the ODBC worksheet, you must configure the Windows
ODBC standard driver. Visual Designer refers to the User DSN (Data Source Name),
which you configure through the Control Panel. For more information, refer to your
Windows documentation.
Also, the ODBC interface is not available for projects running on Windows Embedded
target systems.
To create a new ODBC worksheet, do one of the following:
• On the Insert tab of the ribbon, in the Task Worksheets group, click ODBC;
• Right-click the ODBC folder in the Project Explorer, and then click Insert on the shortcut
menu; or
• Click New on the Application menu, click the File tab, and then select ODBC
Worksheet.
To edit an existing ODBC worksheet, double-click it in the Project Explorer.
A new worksheet displays, as follows.
ODBC worksheets are executed under the ODBC Runtime task. However, creating a new
worksheet does not automatically enable the task; you must use the Execution Tasks dialog
(Tasks on the Home tab of the ribbon) to configure the task to start at runtime. For more
information, please see Execution Tasks.
The ODBC worksheet is divided into two areas:
• Header area (top section), which contains information for the whole group, defines tags
to start read and write events, sets return values, handles database access parameters,
and so forth; and
• Body area (bottom section), where you define each tag in the group and relate tags to
fields in the current register from the database table.
Use the Header parameters on this worksheet as follows:
• Description field: Type a description of the worksheet for documentation purposes.
• Data Source Name field: Type the same Data Source Name (DNS) specified in the
Windows Control Panel containing information about specific database access.
• User field: Type a user name to access to the database.
• Password field: Type the user's password.
Math worksheet
A Math worksheet is used to implement program logic (using the Built-in Scripting
Language) that should be continuously executed during runtime, rather than on specific
actions like the user pressing a button on a screen.
Note: The Math worksheet is functionally similar to the Script worksheet, except that it uses
the Built-in Scripting Language instead of VBScript.
To create a new Math worksheet, do one of the following:
• On the Insert tab of the ribbon, in the Task Worksheets group, click Math;
• Right-click the Math folder in the Project Explorer, and then click Insert on the shortcut
menu; or
• Click New on the Application menu, click the File tab, and then select Math Worksheet.
To edit an existing Math worksheet, double-click it in the Project Explorer.
Script worksheet
A Script worksheet is used to implement program logic (using VBScript) that should be
continuously executed during runtime, rather than on specific actions like the user pressing a
button on a screen.
Note: The Script worksheet is functionally similar to the Math worksheet, except that it uses
VBScript instead of the Built-in Scripting Language.
To create a new Script worksheet, do one of the following:
• On the Insert tab of the ribbon, in the Task Worksheets group, click Script;
• Right-click the Script folder in the Project Explorer, and then click Insert on the shortcut
menu; or
• Click New on the Application menu, click the File tab, and then select Script
Worksheet.
To edit an existing Script worksheet, double-click it in the Project Explorer.
The code configured in each Script worksheet is executed by the Background Task. The
project scans the worksheets sequentially (based on the worksheet number) and executes
only the groups in which the condition configured in the Execution field of the worksheet is
TRUE (i.e., non-zero).
Note: You must use the syntax supported by the Built-in Scripting Language in the
Execution field. Only the body of the worksheet supports VBScript.
Variables declared in the worksheet have local scope for that specific group only. They are
not available for any other VBScript interface.
You cannot define procedures (i.e., functions and subs) in the Script worksheet. However,
you can call procedures defined in the Global Procedures or in the Startup Script.
Example:
$TagNumOfFiles = myVar
End If
CAUTION
When any Script worksheet is saved during runtime (on-line configuration), the Startup Script
will be executed again and the current value of the local variables of any Script worksheet
will be reset.
The code configured in this worksheet is executed just once when the Background Task
module (BGTask) is started. This interface is useful for initializing variables or executing
logics that must be implemented when the project is run.
You can declare and initialize variables and define procedures. However, variables or
procedures declared in this interface will be available ONLY to the Script worksheets
executed by the Background Task module — they are not available to any VBScript interface
from the Graphic Module.
Example:
'Variables available for all Script groups from the Script task can
be declared and initialized here
Dim MyVar, Counter
MyVar = 100
'Procedures available for all Script groups from the Script task can
be implemented here
'The code configured here is executed just once when the Background
task is started
If $GetOS() = 3 Then
MsgBox ("Welcome! This project is running under Microsoft Windows
Embedded operating system.")
Else
MsgBox("Welcome! This project Is running under Microsoft Windows
desktop operating system.")
End If
Scheduler worksheet
A Scheduler worksheet is used to execute program logic (using the Built-in Scripting
Language) at a specific date/time, on a regular time interval, or upon a triggering event.
To create a new Scheduler worksheet, do one of the following:
• On the Insert tab of the ribbon, in the Task Worksheets group, click Scheduler;
• Right-click the Scheduler folder in the Project Explorer, and then click Insert on the
shortcut menu; or
• Click New on the Application menu, click the File tab, and then select Scheduler
Worksheet.
To edit an existing Scheduler worksheet, double-click it in the Project Explorer.
• Date field: This field is used only with the Calendar Event type. Type a specific date
using the MM/DD/YYYY format, and when that Date and Time occurs, Expression is
evaluated.
Valid values are 01 to 12 for months, 01 to 31 for days, and 1900 to 2099 for years. If
the field is left blank, then the event occurs daily at the specified Time.
• Tag field: Type a tag that will receive the value returned by Expression (if any).
• Expression field: Type an expression to be evaluated. This field is used by all events.
• Disable field: Contains a disable condition for the specified function. Leave this
field blank or use an expression value equal to zero to execute the function. Use an
expression value equal to one and the function will not execute (Disable = 1).
Database/ERP worksheet
In addition to ODBC, Visual Designer also supports Microsoft .NET ActiveX Data Objects
(ADO.NET) for interfacing between the project tags database and other external databases.
A Database/ERP worksheet is used to associate project tags with external database fields.
Note: For more information about ADO.NET support in Visual Designer — including how to
communicate with remote databases using the Visual Designer Database Gateway
software — please see Database Interface.
To interface with an external database, you must first configure a connection to the database
and then build a worksheet that associates project tags with the database fields.
Database Connections
To create a new connection to a target database:
1. In the Project Explorer, open the Database/ERP folder and then right-click on
Connections.
2. Choose Insert from the shortcut menu.
The Database Connection dialog is displayed.
3. In the Name field, enter the name that you want to use to reference the target database.
You can create multiple database connections, but each connection must have a unique
name.
4. In the Connection String field, click the browse button … to open a standard Data Link
Properties dialog. Use the dialog to configure a connection string for the target database.
Note: The list of Database Providers shown in the Data Link Properties dialog depends
on the providers actually installed and available in the station where you are
running the development application. For more information about using the Data
Link Properties dialog, please refer to Windows Help.
5. In the User Name and Password fields, enter an appropriate login for the target
database. The login should already be created on the database server, and it should have
enough privileges to read from and write to the database tables.
6. If you are connecting to a remote database through the Studio Database Gateway, then
click the Advanced button to open the advanced settings dialog, as shown below.
7. In the Host field, enter the IP address of the station that is running the Visual Designer
Database Gateway software (STADOSvr.exe). In the Port field, enter the port number
on which the software has been configured to run.
Other settings to configure, if necessary:
• Disable Primary Keys checkbox: Visual Designer will try to define a primary key to
the table in order to speed up the queries. If you are using a database that does not
support primary keys (e.g., Microsoft Excel), then you should check this box.
• Disable Milliseconds in Date/Time Columns checkbox: Visual Designer will try
to include milliseconds when saving a date/time in the database. If you are using a
database that does not support milliseconds, then you should check this box.
8. Click OK to close the dialog and save the connection configuration.
Database connections are saved as XML files in the \project_name\Config sub-folder.
Each file is given the same name as the name of the connection (as entered in the Name
field of the Database Connection dialog), with the .XDC file extension. For example, the
connection configuration DB1 is saved in the file…
\project_name\Config\DB1.XDC
Database Worksheet
Note: This feature emulates Structured Query Language (SQL) database operations. You
should be familiar with how SQL commands are formed and executed before you use
this feature.
Database worksheets allow asynchronous execution of database operations, and they offer
a user-friendly interface for building SQL commands. Use one of the following methods to
create a new database worksheet:
• On the Insert tab of the ribbon, in the Task Worksheets group, click Database; or
• Right-click on the Database/ERP folder in the Project Explorer, and then click Insert on
the shortcut menu; or
Database worksheets are saved in the \project_name\Config directory, with the .XDB
file extension. Each new worksheet is automatically numbered in the order of its creation.
For example, the first worksheet created is saved in the file…
\project_name\Config\DB001.XDB
Database worksheets are executed under the Database Client Runtime task. However,
creating a new worksheet does not automatically enable the task; you must use the
Execution Tasks dialog (Tasks on the Home tab of the ribbon) to configure the task to start
at runtime. For more information, please see Execution Tasks.
Also, database worksheets run only on the server, and all triggers must be configured with
server tags.
Worksheet Header
The header of the database worksheet is configured as follows:
• Description field: Enter a description of the worksheet, for documentation purposes.
• Status field: Enter the name of a numeric tag that will receive status codes for database
operations during runtime:
• Completed field: Enter the name of a numeric tag that will be toggled when database
commands are successfully executed.
• Error Message field: Enter the name of a string tag that will receive detailed error
messages, if errors occur during runtime.
• Connection combo-box: Click to select a connection to the target database. All available
connections are listed, as configured with the Database Connection dialog described
above.
• Type combo-box: Click to specify how the result set will be selected for the worksheet:
• Table: Enter a table name and an optional filter condition. (The filter condition is
equivalent to the SQL "Where" clause.) All rows of the table that match the filter
condition are selected.
• SQL: Enter a custom SQL "Select" statement.
Note: For Table, Condition and SQL Statement, you can enter the names of project
tags that contain the desired information. This lets you programmatically change
the selection during runtime. However, tag names must be enclosed in curly
brackets ({}) to distinguish them from literal strings. Also, you must release an
existing selection before you open a new one; see Close Query below.
• Cursor Triggers area…
• Select field: Enter any tag; when the value of the tag changes, a new cursor opens
the first row of the result set and copies those values to the tags configured in the
worksheet body.
• Next field: Enter any tag; when the value of the tag changes, the cursor moves to
the next row of the result set and copies those values to the tags configured in the
worksheet body.
• Advanced button: Click to open the Advanced Cursor Options dialog…
• Close Query field: Enter any tag; when the value of the tag changes, the cursor
releases the result set.
• Previous field: Enter any tag; when the value of the tag changes, the cursor
moves to the previous row of the result set and copies those values to the tag
configured in the worksheet body.
• Total number of rows field: Enter a numeric tag that will receive the total
number of rows in the result set.
• Current row number field: Enter a numeric tag that will receive the number of
the current row (i.e., the position of the cursor). When a result set is first opened
using the Select trigger, this number is 1. Each Next trigger increments this
number, and each Previous trigger decrements it.
• Table Triggers area…
• Insert field: Enter any tag; when the value of the tag changes, a new row is inserted
with the current values of the tags configured in the worksheet body.
• Update field: Enter any tag; when the value of the tag changes, all rows of the result
set are overwritten with the current values of the tags configured in the worksheet
body.
• Delete field: Enter any tag; when the value of the tag changes, all rows of the result
set are deleted.
Note: Table triggers are available only when Type is set to Table, because these
operations work on the entire table row.
Worksheet Body
In the body of the worksheet, you can map project tags to the columns (fields) of the result
set. For each row of the body, enter a Tag Name and its corresponding Column. Which
columns are available depends on how the result set is selected, and how it is selected may
change during runtime, so be sure to map all necessary columns.
Communication tasks/worksheets are used to exchange tag values with other Visual
Designer projects, remote devices such as PLCs and transmitters, and any other systems
that implement supported protocols like OPC and DDE.
To enable communication, configure the worksheets in the Comm tab of the Project
Explorer.
• Select button: Click to select the driver currently highlighted in the Available Drivers
field.
• Selected Drivers field: Lists all selected drivers and their descriptions (if available).
• Remove button: Click to remove a driver currently highlighted in the Selected Drivers
field.
When you click OK in the Communications Driver dialog, you create a subfolder for the
selected driver(s) in the Drivers folder located on the Comm tab.
You can right-click on a driver subfolder to access the Settings option, which opens the
Communications Parameters dialog.
CAUTION
The Modem option is not supported for Pocket PC v3.00 or older.
Note: This section covers only the None option, which enables the driver to
connect using a normal serial channel. Please refer to "Using TCP/IP and UDP
Encapsulation" and "Using Modem Connections" below for more information about
other encapsulation modes. "Serial Encapsulation Tests" below lists the drivers
that have been tested with modem, TCP/IP and UDP modes.
• COM field: Click to select a serial communication port.
• Baud Rate, Data Bits, Stop Bits, and Parity fields: Click to select parameters for a
serial port configuration.
• Long1, Long2, String1, and String2 fields: These fields are driver custom settings. In
the example above, the driver uses Long1 to set up the error detection method and
String1 to define the PLC family type.
• Advanced button: Click to open the Advanced settings dialog. Use this dialog to change
the default driver parameters.
The development application provides two interfaces, which you can use to configure the
driver (associating project tags to device addresses):
• MAIN DRIVER SHEET: Provides the easiest method for configuring communication
between project tags and device addresses. This interface allows you to automatically
group tags to provide the best performance during runtime. You cannot use this interface
to control the time needed to scan a group of tags individually.
• STANDARD DRIVER SHEETS: Allows you to control the time needed to scan a group of
tags individually.
You can use both sheets at the same time.
Using TCP/IP and UDP Encapsulation
Most of the serial drivers allow the use of TCP/IP or UDP/IP encapsulation. The
encapsulation mode has been designed to provide communication with serial devices
connected to terminal servers on your ethernet or wireless networks. A terminal server can
be seen as a virtual serial port. It converts TCP/IP or UDP/IP messages on your Ethernet or
Wireless network to serial data. Once the message has been converted to a serial form, you
can connect standard devices that support serial communications to the terminal server. The
following diagram provides one example of applying this solution:
You can enable the modem connection by following the steps below:
1. Right-click on the driver's folder, and then choose Settings from the shortcut menu.
This will give you access to the communication parameters.
2. In the Serial Encapsulation menu, select Modem:
CAUTION
The Modem option is not supported for Pocket PC v3.00 or older.
CAUTION
The settings configured by clicking on this button are not saved with your project. The
information is saved on the operating system registry, and they are valid only in the
computer that you are interacting with. If you install your project on another computer,
you will have to reconfigure these settings.
• Connection button: Click to open the Connection Control window. The default
connection settings should suffice for most of the projects. However, you can take full
control over the connection, and also enable incoming calls, by clicking on this button.
• Dial out trigger field: When the value of the tag configured in this field changes, the
driver will try to connect to the remote device. If the connection has already been
established, the command is ignored. You do not have to use this field if you are
using Auto Connect.
• Hang up trigger field: When the value of the tag configured in this field changes,
the driver will disconnect from the remote device. If the device is disconnected the
command is ignored. You do not have to use this field if you are using Disconnect call
if idle for more than.
• Auto Connect field: When this option is enabled, the driver will try to connect to
the remote device before sending any information. If the connection fails, the next
attempt will be made after the Retry Interval has expired.
• Disconnect call if idle for more than field: When this option is checked, the
driver will automatically disconnect from the remote device if no communication is
performed after the time you specified.
• Enable incoming calls field: Check this option if you want to enable the driver to
receive calls from the remote device. You can use the Hang up trigger to drop the call
once it has been established. Notice that one driver can use both incoming calls and
outgoing calls.
• Status area
• Code field: Enter with a tag that will receive one of the following codes when the
driver is running:
• 0 = Disconnected
• 1 = Connected
• 2 = Dialing
• 3 = Dropping
• 4 = Closing Line
• Description field: Enter with a tag that will receive a complete description of the
current status. The description is associated with the Code field; however, it brings
some additional information about the current status.
Serial Encapsulation Tests
Most of the serial drivers should work with every serial encapsulation mode. However,
most of the drivers were developed before the encapsulation modes had been created. The
following table lists the drivers fully tested with certain encapsulation modes; if the driver
that you intend to use is not listed and you are unsure whether it will work, please contact
your distributor.
MODSL X X X
ABKE X X X
MODBU X X
OMETH X
• Min and Max fields (become active only when you enable the Min and Max checkbox):
Type a range of values, which can be converted into an engineering format.
The project uses these fields to determine a minimum/maximum range of values for
data from the field equipment. The scaling is done automatically. You must configure
the engineering range using the Min and Max parameters on the Tag Properties dialog.
This range affects all tags in the worksheet, except those with customized Min and Max
values, as specified in the Body area of the driver sheet (Min and Max columns).
Use the Body area parameters as follows:
• Tag Name field: Type the name of a project tag to be used by the communication driver.
• Station field: Type the number of the equipment station within the network. The syntax
in this field varies with each communication driver. Refer to the appropriate driver's
documentation for further information.
Note: For some drivers, if you've configured the driver to do serial encapsulation via TCP/
IP or UDP/IP, then the station may be specified using the following format:
IP_address:port_number|station
For example:
10.169.25.18:1234|Station5
To see if this feature is supported on your selected driver, refer to the driver's
documentation.
Note: You can configure a tag name (string) between curly brackets in this field. In this
case, the tag value will be the Station used by the driver. Therefore, you can
change the station dynamically during runtime.
Configuring a string tag between curly brackets in the Station field of the Main
Driver Sheet (MDS) is especially useful when configuring projects for redundant
PLCs. Changing the value of the tag configured in the Station field, you can switch
automatically from one PLC to the other in case of a failure of the primary PLC
(hot/Stand-by).
• I/O Address field: Type the address of the field equipment related to the project tag.
The syntax in this field varies with each communication driver. Refer to the appropriate
driver's documentation for further information.
• Action field: Specify the communication direction, using one of the following options:
• Read (the project continuously reads the address from the field device and updates
the Tag value.)
• Write (the project writes the tag value to the field device when the tag value
changes.)
• Read+Write (Combines the procedures of both the Read and Writeparameters.)
• Scan field: Specify how the read commands are enabled for each tag, using one of the
following options:
• Always permanently enables the read command so that the tag updates regularly,
regardless of whether it's currently being used.
Note: By default, the project will trigger a read every 600 milliseconds, which is the
rate at which the system tag BlinkSlow updates. To change the rate, add the
following key to the project file (i.e., project_name.APP):
[Options]
MainDrvAlwaysTrigger=tagname
• Screen enables the read command only when the tag is used in at least one open
screen.
Note: To improve performance, select Screen whenever possible. The project may
not need to keep updating tags that will not be displayed.
• Div field: Specify the division constant when scale adjustment is required. This value is
a division factor in a read operation and a multiplication factor in a write operation. Do
not use this field if you are already using Min or Max in the configuration body.
• Add field: Specify the addition constant when scale adjustment is required. This value is
an addition factor in a read operation and a subtraction factor in a write operation. Do
not use this field if you are already using Min or Max in the configuration body.
CAUTION
You must give special attention to this worksheet when you enable the Increase Priority
option. If the worksheet keeps triggering communication commands, the project may
never be able to execute the other driver sheets.
• Read Trigger field: Type a tag that triggers the project to read the worksheet
automatically when you change this tag's value.
• Enable Read when Idle field: Type a tag or constant value. Use a tag (or constant) value
greater than zero, to enable reading from the equipment.
CAUTION
If you use a constant value (other than zero), be sure that your project requires a
continuous reading because this value places a reading request in every communication
scan.
• Read Completed field: Type in a tag and the communication driver toggles the tag when
it completes a read command.
• Read Status field: Type in a tag and the communication driver updates the tag with the
status of the last read command.
• Write Trigger field: Type a tag value to activate a group reading. Whenever you change
this tag value, the program writes an equipment worksheet.
• Enable Write on TagChange field: Type a tag or constant value (not zero) to enable the
communication driver to check the worksheet continuously for changes in the tag value.
If a change occurs, the project writes this value to an address in the field equipment.
• Write Completed field: Type in a tag and the communication driver toggles the tag in
this field when a write command completes.
• Write Status field: Type in a tag and the communication driver updates the tag with the
status of the last write command.
• Station field: Type the equipment station number within the network. The syntax
in this field varies with each communication driver. Refer to the appropriate driver's
documentation for further information.
Note: For some drivers, if you've configured the driver to do serial encapsulation via TCP/
IP or UDP/IP, then the station may be specified using the following format:
IP_address:port_number|station
For example:
10.169.25.18:1234|Station5
To see if this feature is supported on your selected driver, refer to the driver's
documentation.
• Header field: Specify the data type and/or initial address to be read or written in the
equipment. The syntax in this field varies with each communication driver. Refer to the
appropriate driver's documentation for further information.
Note: You can use text in the Station and Header fields with tag values using the text
{tag} syntax.
• Min and Max checkbox (not labeled): Click (check) to specify the minimum and
maximum values for field equipment data.
• Min and Max fields (become active only when you enable the Min and Max checkbox):
Type a range of values to be converted into an engineering format. These fields
determine the minimum and maximum range of values. These values affect all tags in
the worksheet.
For example, Memory holds values from 0 to 4095, which means 0% to 100% in the
user interface. So for this example, you must specify 0 to 100 for the min and max tag
parameters.
Use the Body area parameters as follows:
• Tag Name field: Type a tag name for the communication driver to use.
• Address field: Type a field equipment address (or address offset) related to the
project tag. The syntax in this field varies with each communication driver. Refer to the
appropriate driver's documentation for further information.
• Div field: Specify a division constant to use when scale adjustment is required. The
project uses this value as a division factor in a read operation and a multiplication factor
in a write operation. Do not use this field if you are already using Min or Max in the
configuration body.
• Add field: Specify an addition constant to use when scale adjustment is required. The
project uses this value as an addition factor in a read operation and a subtraction factor
in a write operation. Do not use this field if you are already using Min or Max in the
configuration body.
Note: The maximum number of tags in each driver communication worksheet is 512.
For some drivers, this number may be smaller. For more information, refer to your
driver documentation.
For read operations:
If you leave the cells empty in the Div and Add fields, this function is ignored.
• Percent Deadband (valid for analog items only): Specify how much percent change in an
item value should cause a notification by the server.
• Status: Type the name of a tag to receive the status of the connection. Good status is 1.
• Remote Server Name: Node name or IP address of server on node network.
• Read before writing checkbox: Check this option to force your project to read the
original values of items on the OPC server just before writing new values to the server.
The project does this by first buffering the new values to be written and then reading the
original values from the server. Only after the project is synchronized with the server are
the new values written from the buffer to the server.
• Read after writing checkbox: Check this option to force your project to read back the
new values of items on the OPC server just after the project has written those values.
CAUTION
The Read before writing and Read after writing options are offered because the OPC
Client/Server specification says that the value of an item on the client — in this case,
your project — should not change unless the server sends the change. That way, the
client always stays in sync with the server.
Your project, however, may be designed to change those values according to runtime
processes or user input. Therefore, the best way to change the values while staying in
sync with the server is to make it seem like the changes originate on the server. With
both options enabled, the following sequence of events happens on every scan of the
OPC worksheet:
1. The new values on the client are buffered.
2. The original values on the server are read to the client — that is, the client is
synchronized with the server.
3. The new values are written from the buffer to the server.
4. The new values on the server are read to the client — that is, the client is again
synchronized with the server.
At the end of each scan, the values reflect what's happening in your project even though,
technically speaking, the project is merely staying in sync with the server.
Both options should be enabled in most projects. In some projects, however, this may
cause items to bounce between the original values and the new values. If this is a
problem, try moving those items to another OPC worksheet where the Read before
writing and Read after writing options are disabled.
• Accept Tag Name in the Item column checkbox: When this option is checked, the text
configured between curly brackets in the Item field is resolved as a Tag Name (string
tag). In this case, the value of this tag is used as the name of the item from the OPC
Server, allowing the user to point to different item names during runtime, by changing
the value of the tag(s) configured in the OPC Client worksheet (Item column).
When the Accept Tag Name in the Item column option is unchecked, all characters
configured in the Item column are considered part of the Item name (including the curly
brackets).
• Tag Name: Type the names of tags linked to the server items.
• Item: Enter the name of the server's items. After selecting an OPC Server, you can
select items from the Server using the OPC Browser. Right-click in the Item field and
select the OPC Browser option.
Note: You can configure a tag name between curly brackets (e.g., {TagName} ) in this
field, allowing the user to change the item names dynamically, during runtime.
• Scan: Specify one of the following:
• Screen: The project performs an update when you open a screen containing the
specified tag.
• Always: The project performs an update in the Read Update Rate specified in the
worksheet header.
• Div field: Specify the division constant when scale adjustment is required. This value is a
division factor in a read operation and a multiplication factor in a write operation.
• Add field: Specify the addition constant when scale adjustment is required. This value is
a addition factor in a read operation and a subtraction factor in a write operation.
To run the OPC Client runtime task, you can choose to run it automatically on start up, or run
the task manually by clicking Tasks (either local or remote) on the Home tab of the ribbon.
After running this program, a small icon displays in your system tray.
To close the OPC Client runtime task, right-click the icon in the system tray, and click Exit.
Note: Visual Designer and CEView also provide an OPC Server communication task named
Studio.Scada.OPC. This task starts automatically when any OPC Client (local or
remote) attempts to connect to the Studio.Scada.OPC server. An OPC Client can
exchange data with the tags database (Project Tags, System Tags, and Shared tags)
using the OPC interface.
In addition, you can start the OPC Server task automatically when you run the project.
Select the OPC Server task in the Execution Tasks dialog (Tasks on the Home tab of
the ribbon), click the Startup button, and specify Automatic.
Note: You can also use the OPC interface to exchange data between remote stations
running Visual Designer or CEView. You must configure the OPC Client in one station
and you must execute the OPC Server in the other station.
OPC Troubleshooting
When you are using OPC and have problems establishing communication, you should first
verify the messages in the LogWin.
If you are running the project on a Windows Embedded target system, there are two ways
to check the log:
1. Remote LogWin
2. Local Log
For information about using these logs, please refer to Using the LogWin task.
If you find error messages in the log, look them up in this manual/help system, and follow
the documented steps for solving the problems. (Use <CTRL> + F to find them in the
manual; use the Index to find them in the context sensitive help system.)
If you feel that you need to contact your distributor for technical support, make sure that you
provide them with the following information:
1. Log file
2. Software vendor and product name of the OPC Server/Client that you are using
3. If possible, a copy or an evaluation version of the OPC Server for testing purposes
4. The contact information for your OPC Server/Client technical support
Three possible errors and their resolutions are listed below…
Security
Error Code: 0x80070005 or -2147024891
Reason for error: When the OPC Client tries to connect to the OPC Server, the DCOM
layer usually requires authentication. The computer that is running the OPC Server needs to
recognize the user logged on to the OPC Client computer, and such a user needs to have
privileges to access the OPC Server.
Solution: The first step is to create a single user in both computers that has Administrator
privileges and the same password. Log on with this user to both ends, and then try to
establish the connection.
Name Resolution
Error: Couldn't create connection with advise sink, error: -2147022986
(0x80070776)
Reason for error: There is a problem resolving the computer name.
Solution: This problem can be solved by specifying the IP address of the server instead of
specifying the computer name.
Proxy for Windows CE
Error: OPCServer: IIndCP::Advise - Could not query callback interface:
0x80040155
Reason for error: Your Windows Embedded device is missing the OPCCOMN_PS.dll.
Solution: You should download the .dll to the device and register it. The .dll should be
available with your Visual Designer distribution, most probably in […]\EATON\Visual
Designer\Redist\Wince x.x\processor\
If you do not find the .dll in the folder for your processor, contact your Visual Designer
distributor.
The existing OPC COM based specifications have served the OPC Community
well over the past 10 years, but as technology moves on so must our
interoperability standards. Here are the factors that influenced the decision to
create a new architecture:
• Microsoft has deemphasized COM in favor of cross-platform capable Web
Services and SOA (Service Oriented Architecture)
• OPC Vendors want a single set of services to expose the OPC data models
(DA, A&E, HDA ...)
• OPC Vendors want to implement OPC on non-Microsoft systems, including
embedded devices
• Other collaborating organizations need a reliable, efficient way to move
higher level structured data
• On the Insert tab of the ribbon, in the Communication group, click OPC Client and
then select OPC UA Connection from the drop-down list; or
• In the Comm tab of the Project Explorer, right-click OPC UA Connections and then
click Insert on the shortcut menu.
The UA Server Configuration dialog is displayed:
Use this dialog to find the discovery server, which publishes a list of OPC UA servers on
the network, and then select the server to which you want to connect.
4. In the User Name and Password boxes, type your login credentials for the OPC UA
server.
5. If the OPC UA server is configured to require a secure connection, then you must take
the extra steps of installing the server certificate in your project and generating a client
certificate to be installed on the server:
a. Get the server certificate and then save it in the Config sub-folder of your project
folder (e.g., […]\My Documents\Visual Designer v7.0 Projects
\project_name\Config\). The method for getting the server certificate depends
on the server, so please consult the server vendor.
b. In the UA Server Configuration dialog, click Security. The OPC UA Security dialog
is displayed.
c. In the Server Certificate list, select the server certificate. (All certificates saved in the
Config sub-folder should be listed here.)
d. In the Security Policy and Message Security Mode lists, select the appropriate
options for how the OPC UA server is configured. Again, please consult the server
vendor.
e. Click Generate Certificate. The client certificate is generated and saved in the Config
sub-folder.
f. Click OK to close the OPC UA Security dialog.
g. Install the client certificate on the OPC UA server. The method for doing this depends
on the server, so again, please consult the server vendor.
For more information, download the white paper "The OPC UA Security Model for
Administrators" from the OPC Foundation.
6. Click OK. The connection is saved in the OPC UA Connections folder in the Project
Explorer.
Configuring a new OPC UA Client worksheet
To configure a new OPC UA Client worksheet:
1. Do one of the following:
• On the Insert tab of the ribbon, in the Communication group, click OPC Client and
then select OPC UA Client from the drop-down list; or
• In the Comm tab of the Project Explorer, right-click OPC UA and then click Insert on
the shortcut menu.
A new OPC UA Client worksheet is displayed:
2. In the Description box, type a description of the worksheet. This is for documentation
purposes only and does not affect the execution of the worksheet.
3. In the Connection list, select the OPC Server connection that you configured earlier.
4. For more connection options, click Advanced.
Read actions Enable When this value is TRUE (non-zero), the client will constantly request updates
subscription from the server.
NOTE: This is enabled by default. If it is disabled, then you must use read
triggers (see below).
Maximum group The maximum number of tag reads that may be performed in a single read
size operation.
For example, if you have 1000 items/rows configured in the worksheet
and Maximum group size is set to 100, then 10 read operations will be
performed during each scan of the worksheet.
Synchronous When the value of this tag/expression changes, the worksheet is scanned
read trigger and all tag values are read from the server. The project waits for the scan to
complete before continuing.
Asynchronous When the value of this tag/expression changes, the worksheet is scanned
read trigger and all tag values are read from the server. The project continues running
without waiting for the scan to complete.
Read count The name of a tag (Integer type) that will receive a count of the number of
read operations performed since the project was run.
Status The name of a tag (Integer type) that will receive a status code for the last
read operation performed by a trigger.
Status message The name of a tag (String type) that will receive the corresponding status
message.
Maximum aging The maximum age (in milliseconds) of values that will be accepted from the
server's cache. If a value is older than this, then the server will be forced to
get the latest value from the target device.
Write actions Enable write on When this value is TRUE (non-zero), a write will be automatically performed
tag change whenever the value of the project tag changes.
NOTE: This is enabled by default. If it is disabled, then you must use write
triggers (see below).
Maximum group The maximum number of tag writes to be performed in a single write
size operation.
Synchronous When the value of this tag/expression changes, the worksheet is scanned
write trigger and all tag values are written to the server. The project waits for the scan to
complete before continuing.
Asynchronous When the value of this tag/expression changes, the worksheet is scanned
write trigger and all tag values are written to the server. The project continues running
without waiting for the scan to complete.
Write count The name of a tag (Integer type) that will receive a count of the number of
write operations performed since the project was run.
Status The name of a tag (Integer type) that will receive a status code for the last
write operation performed by a trigger.
Status message The name of a tag (String type) that will receive the corresponding status
message.
Reload trigger Indirect tags (e.g., {MyTag}) configured in the body of the worksheet will
be reloaded only when the value of this tag/expression changes.
Refresh IDs on startup When this option is selected, the node IDs in the worksheet will be refreshed
from the specified item paths every time the project is run.
NOTE: Refreshing IDs like this may cause the project to take longer to start
up, so if you select this option, then you should also specify a root node (see
below) to limit how much of the server's list of items must scanned.
Note: Visual Designer's OPC UA Client does not normally use the Triggering Mode
that is defined the OPC UA protocol. Instead, it allows any change in any tag/
expression to be used as a trigger. If you want to use Triggering Mode, configure
one worksheet to read the trigger values and then configure another worksheet
that specifies the read values as triggers.
5. Click OK to close the Advanced dialog and return to the worksheet.
6. In the Status box, type the name of a tag (Integer type) that will receive connection
status codes during project runtime.
7. In the Status Message box, type the name of a tag (String type) that will receive the
corresponding status messages.
8. In the Publish Rate box, type the frequency (in milliseconds) at which the client will
request updates from the server.
9. In the Disable box, type a tag/expression. When the value is TRUE (non-zero), the
worksheet will not be executed.
10. In the Root node or view box, specify the server node that will serve as the root for all
items in the worksheet body. Specifying a root node makes it easier to find items and
improves runtime performance.
11. For each row of the worksheet body, specify the following:
• Tag Name: The name of a project tag.
You may use indirect tags (e.g., {MyTag}), but if you do, then be sure to configure
the Reload trigger option above.
• Item: The server item with which the project tag should be associated.
To browse the server's list of items, right-click in this field and then click Browse on
the shortcut menu.
• Scan: If Always, then the row is continuously scanned during runtime. If Screen,
then the row is scanned only when a project screen that uses the specified tag is
open.
• Div: For scaling — the value is divided by this number when reading from the server,
and it is multiplied by this number when writing to the server.
• Add: For scaling — this number is added to the value when reading from the server,
and it is subtracted from the value when writing to the server.
• Node ID: The node ID is automatically generated from the full path of the server item.
12. Save and close the worksheet.
Enabling the OPC UA Client task
To enable the OPC UA Client task for runtime:
1. On the Home tab of the ribbon, in either the Local Management or Remote Management
group (depending on where the project server will be), click Tasks.
The Execution Tasks dialog is displayed.
2. In the list of tasks, select OPC UA Client.
3. Click Startup.
The Startup dialog is displayed.
4. Select Automatic, and then click OK.
5. Click OK again to close the Execution Tasks dialog.
The OPC Xi interface is the result of collaboration among several OPC vendor
companies from the process industry to develop an easily integrated and
secure solution for a variety of plant communications. OPC Xi's primary
objective was to provide a .NET-based migration path from OPC Classic.
Additionally, OPC Xi may be used as a standard .NET WCF interface for newly
developed OPC servers.
In other words, OPC Xi is intended to be a new version of OPC that leverages Microsoft's
latest technologies. For more information, go to http://www.opcfoundation.org/Xi/.
Configuring a new OPC Xi server connection
To configure a new connection to an OPC Xi server:
1. Do one of the following:
• On the Insert tab of the ribbon, in the Communication group, click OPC Client and
then select OPC Xi Connection from the drop-down list; or
• In the Comm tab of the Project Explorer, right-click OPC Xi Connections and then
click Insert on the shortcut menu.
6. In the User Name and Password boxes, type your login credentials for the OPC Xi
server.
Note: If the OPC Xi server is using Microsoft Active Directory, then User Name must be
in the domain\username format.
7. Select Callback to have the server send values to the client only when the values
change, or select Polling to have the client periodically request values from the server.
In most cases, you should select Polling to keep the connection active.
8. Click OK. The connection is saved in the OPC Xi Connections folder in the Project
Explorer.
Configuring a new OPC Xi Client worksheet
To configure a new OPC Xi Client worksheet:
1. Do one of the following:
• On the Insert tab of the ribbon, in the Communication group, click OPC Client and
then select OPC Xi Client from the drop-down list; or
• In the Comm tab of the Project Explorer, right-click OPC Xi and then click Insert on
the shortcut menu.
A new OPC Xi Client worksheet is displayed:
2. In the Description box, type a description of the worksheet. This is for documentation
purposes only and does not affect the execution of the worksheet.
3. In the Connection list, select the OPC Server connection that you configured earlier.
4. For more connection options, click Advanced.
Read actions Enable When this value is TRUE (non-zero), the client will constantly request updates
subscription from the server.
NOTE: This is enabled by default. If it is disabled, then you must use a read
trigger (see below).
Maximum group The maximum number of tag reads that may be performed in a single read
size operation.
For example, if you have 1000 items/rows configured in the worksheet
and Maximum group size is set to 100, then 10 read operations will be
performed during each scan of the worksheet.
Synchronous When the value of this tag/expression changes, the worksheet is scanned
read trigger and all tag values are read from the server. The project waits for the scan to
complete before continuing.
Asynchronous N/A for OPC Xi Client.
read trigger
Read count The name of a tag (Integer type) that will receive a count of the number of
read operations performed since the project was run.
Status The name of a tag (Integer type) that will receive a status code for the last
read operation performed by a trigger.
Status message The name of a tag (String type) that will receive the corresponding status
message.
Maximum aging N/A for OPC Xi Client.
Write actions Enable write on When this value is TRUE (non-zero), a write will be automatically performed
tag change whenever the value of the project tag changes.
NOTE: This is enabled by default. If it is disabled, then you must use a write
trigger (see below).
Maximum group The maximum number of tag writes to be performed in a single write
size operation.
Synchronous When the value of this tag/expression changes, the worksheet is scanned
write trigger and all tag values are written to the server. The project waits for the scan to
complete before continuing.
Asynchronous N/A for OPC Xi Client.
write trigger
Write count The name of a tag (Integer type) that will receive a count of the number of
write operations performed since the project was run.
Status The name of a tag (Integer type) that will receive a status code for the last
write operation performed by a trigger.
Status message The name of a tag (String type) that will receive the corresponding status
message.
Reload trigger Indirect tags (e.g., {MyTag}) configured in the body of the worksheet will
be reloaded only when the value of this tag/expression changes.
Refresh IDs on startup N/A for OPC Xi Client.
• Disable: Type a tag name in this field. When this tag has any value other than 0, this
TCP/IP worksheet will be disabled. Using this field, you can enable/disable the TCP/IP
Client worksheet during runtime.
• Server IP Address field: Type the IP address and Port (optional) of the target server —
for example, 169.254.182.158:123. The Port should be the same on both the Client
and Server stations.
You can also specify a String tag enclosed in curly brackets (e.g., {tagname}) if you
want to dynamically change this address during runtime.
• Send Fields checkbox:
• Disable this box and the TCP/IP Client/Server tasks exchange only the tag values, and
their TimeStamp and Quality.
• Enable this box and the TCP/IP Client/Server tasks also exchange the Min, Max, Ack,
Unit, LoLoLimit, LoLimit, HiLimit, HiHiLimit, RateLimit, DevSetPoint, DevpLimit, and
DevenLimit tag fields.
Note: It is possible to add other fields to the TCP/IP communication or to disable any
field individually. Contact your vendor for more information.
• Tag Name field: Type the tags you want to share with the server.
If the tag is an array or a class (or both), the project automatically enables every array
position and class member for TCP/IP communication by default.
To configure a specific array position and/or a specific class member, type the
array position and/or class member in square brackets following the tag name. For
example,level[3].member.
• Remote Tag field (optional): Type the name of a tag to be linked with the tag you
specified in the Tag Name field. If you leave this field blank, the project uses the same
tag name used in the client and in the server.
Note: If you need to share an array, the tag in the server should contain the same number
of elements as the tag in the client. If the tag is a class, the class definition should
be the same in both server and client programs. If you do not follow these rules,
unpredictable results can occur.
You can run the TCP/IP Client task automatically on start up or run the program manually
by clicking Tasks (either local or remote) on the Home tab of the ribbon. After running this
program, a small icon displays in your system tray.
Only the Client task uses the ConnectionRetryTimeout parameter.
• To run Visual Designer as a client to a NetDDE connection, use the same DDE interface
worksheets with the proper configuration to address a Visual Designer project.
Note: When running NetDDE, Visual Designer accepts the WRITE triggers only. To read
data, you must configure a write command on the server computer.
To open a new DDE worksheet, right-click on the DDE folder and click the prompt screen.
A new DDE worksheet displays, as in the following figure.
When the driver detects a change occurs, it writes the changed tag on the equipment,
along with the tag's address.
• Write Status field: Contains the status of the writing command.
Use the DDE client Body area parameters as follows:
• Tag Name field: Type a tag to read or write the Visual Designer database from the DDE
server application.
• Item field: Type the ITEM part of the DDE address on the server. Refer to your server
software documentation for information about the proper syntax for APP, TOPIC, and
ITEM.
You can configure the Topic and Item fields with tags on the address using the syntax:
text{tag}. Visual Designer evaluates the value of {tag} to a string and uses it on the
address. For example:
• Topic: topic_{tag_topic_name}_example
• Item: {tag_item_name} or A{tag_number}
Configuring a NetDDE connection is similar to configuring a DDE connection, except for the
Header Application name and topic. Before starting your tests, verify that you enable the
DDE Server on the station with which you want to exchange data.
Note: When connecting to servers other than Visual Designer, please refer to the server
documentation for information about the proper syntax of APP, TOPIC, and ITEM.
Use the NetDDE Client worksheet Header parameters to define the tags that start reading
and writing, and tags that receive the connection status, as follows:
• Application Name field: Type computer name\NDDE$, where computer name must
be a valid network computer name.
• Topic field: Type the UNISOFT$ topic name to connect to another Visual Designer
station.
Use the DDE client worksheet Body parameters to relate each tag to each ITEM part of the
DDE server address, as follows:
• Tag Name field: Specify the Visual Designer local database tag name that is related to
some remote tag name.
• Item field: Specify the remote tag name that is related to the local tag name.
Note: By default, the DDE Client module supports DDE Servers that handle string data in the
UNICODE format. If the DDE Server handles string data in the ASCII ANSI format, the
following setting must be configured manually in the project_name.app file (you
can use Notepad to edit this file):
[Options]
DDEANSI=1
Project Security
Visual Designer includes a project security system that manages how users and user groups
can access a project, during both development and runtime.
This means that for a user to be able to edit and/or use an item, the item's access level must
fall within the range specified for that user's group.
For example, UserA of GroupA has a security access level range of 1-10 and UserB of
GroupB has a security access level range of 5-15. To continue the example:
• Item #1 has Access Level = 1
• Item #2 has Access Level = 7
• Item #3 has Access Level = 12
• Item #4 has Access Level = 20
Consequently,
• Only UserA can access Item #1
• Both users can access Item #2
• Only UserB can access Item #3
• Neither user can access Item #4
Note: The default access level for all items is 0, and all users can use all items at that level.
For screen objects and object animations, the access level can be set in the individual
Object Properties dialog. (If the option is not available in the main dialog, then it should be
available in one of the sub-dialogs.)
4. In the Access Level box, type an access level for editing the worksheet.
5. Click OK.
This page always shows how the security system is currently configured.
2. Click Next.
The second page of the wizard is displayed.
12. Review your configuration, and then click Finish to close the wizard.
1. In the Server IP and Server Port boxes, type the IP address of a runtime project that is
set to Distributed – Server.
2. In the Connection timeout box, type the timeout (in seconds) after which the client will
attempt to reconnect to the server. (A typical connection timeout is 3 seconds.)
3. In the Synchronization Period box, type the frequency (in seconds) at which the
client will synchronize its security system configuration with the server's. (A typical
synchronization period is 10 seconds.)
4. In the Force Cache Reload box, type the name of a project tag (Integer or Boolean
type). If the tag value is TRUE (non-zero) and the specified server has a timestamp older
than the client, then the local security system will be updated with outdated server
information.
5. In the Status Tag box, type the name of a project tag (Integer type) that will receive
server connection status codes during runtime:
Status Description
0 No cache
1 Updated cache
2 Outdated local cache
3 Outdated server cache
4 Disconnected from server
6. Click OK.
1. In the Domain box, type the domain name of the LDAP server.
2. In the User and Password boxes, type your logon credentials for the LDAP server.
Note: You must have sufficient privileges to get lists of groups and users. Please consult
your LDAP administrator.
3. In the Connection timeout box, type the timeout (in seconds) after which the client will
attempt to reconnect to the LDAP server. (A typical connection timeout is 4–5 seconds.)
4. In the Retry interval box, type the frequency (in seconds) at which the client will try to
connect to the LDAP server if the connection could not be established.
5. Click Check Connection to confirm that the project can connect to the specified domain.
If it cannot, review and correct your settings.
6. Click OK.
Note: The project security system will cache the most recent users in case the project
loses its connection to the LDAP server. These users will still be able to log onto the
project. You can make the cache size unlimited by setting Cache size to 0, and you
can make the cache never expire by setting Cache expiration to 0.
In the LDAP Advanced Settings tab of the dialog, there are additional settings that should
be configured only by experienced LDAP administrators:
CAUTION
Extending a server's LDAP schema cannot be undone.
(If you have User Access Control (UAC) enabled, then you will be asked if you want to
allow Microsoft Management Console to make changes. Click Yes.)
A console window is displayed.
e) In the list of available snap-ins, select Active Directory Schema, and then and click
Add.
b) Right-click Active Directory Schema > Attributes, and then click Create Attribute
on the shortcut menu.
A message is displayed explaining that your schema will be permanent changed.
c) Click Continue.
A Create New Attribute dialog is displayed.
d) In the dialog, complete the fields as follows.
• Common Name: proprietarySCADAInfo
• LDAP Display Name: proprietarySCADAInfo
• Unique X500 Object ID: 0.7.7777.77777777.777.7.7
Note: An unique Object ID should be used.
• Description: proprietarySCADAInfo
• Syntax: Octect String
• Minimum: 0
• Maximum: 10240
a) In the Console Root tree-view, select Active Directory Schema > Classes
b) In the list of classes, right-click person, and then click Properties on the shortcut
menu.
The Properties dialog is displayed.
d) Click Add.
The Select Schema Object dialog is displayed.
e) In the list of schema objects, select proprietarySCADAInfo, and then click OK.
Group Account The user group that you are currently configuring.
NOTE: There are two default groups for all projects: Guest and (Default
Rights).
NOTE: If the security mode is set to Domain (LDAP), then please note that the
built-in groups in Microsoft Active Directory will not appear in this list of groups
and cannot be added to the project.
New Creates a new group. In the New Group Account dialog, type the name of the
new group and then click OK.
Delete Deletes the currently selected group.
Reset Resets the privileges of the currently selected group to match the (Default
Rights) group.
This does not lock the group to the default; you can make further changes. To
lock the group, see Use Default Rights below.
Security Level – Range The range of access levels that this group may access in the runtime project.
Runtime
Runtime Access Start Project Members of the group may run the project.
Close Project Members of the group may stop the project.
Database Spy Members of the group may write values to the project database using the
(write) Database Spy window.
NOTE: This only applies to projects running locally. For projects running
remotely, see Enable Remote Debugging Tools below.
Task switch Members of the group may switch away from the runtime project to another
enabled Windows task.
(This option does not apply to projects running on Windows Embedded target
systems; the user may always switch away from the runtime project.)
Edit Security Members of the group may make changes to the project security system during
System runtime.
NOTE: Be careful not to clear this option for your own group, or you may not be
able to undo your own changes.
Enable Remote Members of the group may use Remote Database Spy and Remote LogWin.
Debugging Tools
Windows Task Members of the group may open the Windows Task Manager.
Manager
(This option does not apply to projects running on Windows Embedded target
systems; the user may always open the Windows Task Manager.)
NOTE: Clearing this option means disabling the Task Manager during runtime,
which requires Administrator privileges. You will need to run the project with
elevated privileges.
Runtime group A user created during runtime by calling the CreateUser function may be
assigned to this group.
Web Thin Client Access Members of the group may access the runtime project by using a Web Thin
Client.
Secure Viewer Access Members of the group may access the runtime project by using a Secure Viewer.
Min password size To make user passwords more complex and therefore more secure, you can
require that they contain a certain number of alpha (A-Z, a-z), numeric (0-9),
Min number of special characters and special (punctuation) characters. When the user is prompted to change
his password — for example, when his old password expires (see Password
Min number of numeric characters
Min number of alpha characters aging below) — the new password will not be accepted unless it meets these
requirements.
Case-sensitive If this option is selected, then passwords are case sensitive — that is,
passwords created with both upper and lowercase characters must be entered
the same way by the user.
NOTE: In projects created with Visual Designer v6.1+SP2 through v6.1+SP6, all
passwords were case sensitive.
Password aging Longevity (in days) of the password for all users in this group. After the specified
number of days, the project will force the user to change his password: when
the user tries to log in, the Change Password dialog is automatically displayed
and the user cannot complete the logon process until he provides a new
password.
By default, the user must choose a new password that is different from the
old password. To change this so that the user can re-use the same password,
manually edit the project file (project_name.app) to include the
following setting:
[Security]
ChangePasswordMode=1
E-signature time-out Timeout period (in minutes) of the E-sign prompt for all users in this group. The
user must enter his user name and password before the specified timeout to use
project features that require an e-signature.
Disable e-signature When the value in this box is TRUE (non-zero), users in this group cannot use
any project features that require an e-signature.
You can configure a project tag in this box, so that e-signature is dynamically
enabled/disabled during runtime.
Auto Log Off Log Off after Number of minutes after which the current user must be logged off
automatically. If this field is left in blank (or with the value 0), the current user is
never logged off automatically.
Counting from When this option is selected, the current user is automatically logged off after
logon the period of time configured in the Log Off after field elapsed since when the
current user was logged on the system.
Counting from When this option is selected, the current user is automatically logged off after
user's last action the period of time configured in the Log Off after field elapsed since the last
Note: If a user is assigned to more than one group (see Creating and configuring users),
then the groups' settings may conflict with each other. How the settings are resolved
depends on which settings they are:
• The settings in the Group Account dialog above are permissive — that is, the
most permissive setting from all of a user's groups applies to the user. For
example, if any of the groups can create and modify tags, then the user can create
and modify tags.
• The settings in the Group Account Advanced dialog (both tabs) are restrictive —
that is, the most restrictive setting from all of a user's groups applies to the user.
For example, if one group has a minimum password size of 8 and another group
has a minimum password size of 12, then the user's minimum password size
is 12. (For Auto Log Off in particular, Counting from logon overrides Counting
from user's last action.)
After the project initializes, if no users log on (or when the current user logs off), then the
project automatically logs on the default user (Guest). In addition to the default Guest user,
there is a Guest group, which has default privileges that enable all tasks. We recommend
that you evaluate and edit the Guest group's privileges to specify a minimal amount of
privileges for the start up procedure.
To create a new user, click New to open the New User Account dialog.
To delete a user, click the User combo-box button, select the user name from list, and then
click Delete.
To configure a user, use the following procedure:
1. Click the User combo-box button and select a user from the list.
2. If necessary, click the User is blocked checkbox to block the selected user.
Note: The Runtime user option indicates that a user was created during runtime using
the CreateUser function. It cannot be selected for a user created using the
procedure described here.
3. Click the new Settings button to open the User Settings dialog:
Enable Security System Indicates whether the project security system is currently enabled. If it is, then
the users and groups' specified access privileges are enforced.
Main Password Opens a dialog where you can specify a main administrative password for the
entire project.
Security Mode Mode The current security mode of the project.
Server Settings Opens the Server Settings dialog, where you can configure the server settings
for Distributed – Client or Domain (LDAP).
Run Wizard Opens the security system configuration wizard.
Backup Opens the Import/Export dialog, where you can export or import the security
system configuration.
Accounts Groups Opens the Group Account dialog, where you can create and configure groups.
Management
Users Opens the User Account dialog, where you can create and configure users.
Display list of Displays a list of available users (in the Log On dialog) when a user is prompted
users at logon to log on. The user may select from this list rather than type his user name.
Log On on E- Forces a user to log on with their own user account when they're prompted to
Signature e-sign an event. If this is not selected, then the current user account remains
logged on regardless of who e-signs the event.
Default User This user is automatically logged on when no other user is logged on, such as
when the previous user times out or manually logs off.
NOTE: This user's privileges should be heavily restricted, to prevent your project
from being left vulnerable.
Virtual Keyboard The type of virtual keyboard that is displayed on the client when the user is
prompted to log on.
1. In the main Security System dialog, click Backup. The Import/Export dialog is
displayed.
2. Click Export to file. A standard Save As dialog is displayed.
3. Specify a file name and location for the file, and then click OK.
The exported file is encrypted, using the main password configured in the Security System
dialog.
Note: You can also export the configuration during runtime by calling the
ExportSeruritySystem function.
Importing the configuration from a file
If your project's security mode is set to Local Only, then you can import a configuration
from a previously exported file.
To import the security system configuration:
1. In the main Security System dialog, click Backup. The Import/Export dialog is
displayed.
2. Click Import from file. A standard Open dialog is displayed.
3. Locate the configuration file (*.dat) that you want to import, and then click OK. You will
be prompted for the configuration's main password.
4. Type the password, and then click OK. The Import from File dialog is displayed.
5. Select an import method:
• Import only settings that do not conflict: Merge the imported settings with the
current project settings. In the case of conflicts, keep the current settings.
• Import all settings and replace conflicts: Merge the imported settings with the
project settings. In the case of conflicts, use the imported settings.
• Replace the current settings: Completely replace the current project settings with
the settings imported from the file.
6. Click OK.
Note: You can also import the configuration during runtime by calling the
ImportSecuritySystem function.
Importing the configuration from another project
If your project's security mode is set to Distributed – Server, then you can import a
configuration from another project if:
• The other project's security mode is set to Distributed – Client, and its server settings
are configured to use your project as the server; and
• The other project is currently running on the same network.
To import the security system configuration:
1. In the main Security System dialog, click Backup. The Import/Export dialog is
displayed.
2. Click Import from client station. The Import Security from Client Station dialog is
displayed.
The dialog shows a list of runtime projects that are using your project as their security
system server. Each project/client listing includes a time stamp that shows when it last
cached the security system configuration.
3. Select a client station, and then click Import from client. You will be prompted for the
configuration's main password.
4. Type the password, and then click OK.
Logging on/off
If the project security system has been enabled and the default "Guest" user's privileges
have been restricted, then you must log on to fully use the development application and/or
the runtime project.
Note: The project security system must be enabled before you can use this feature.
To log on to the development application, click Log On on the Project tab of the ribbon.
To prompt a user to log on to the runtime project, do one of the following:
• Call the LogOn function somewhere that an expression can be configured — for
example, draw a Button object in a screen and then apply the Command animation to it,
so that pressing the button shows a logon prompt; or
• Select the Log On on E-Signature option (in the main Security System dialog),
which forces the user to log on whenever he performs some action that requires an e-
signature.
In either the development application or the runtime project, the Log On dialog is displayed:
CAUTION
If the security mode is set to Domain (LDAP) and a user created on the LDAP server is
required to change his password the first time he logs onto the domain, then he must do
that before he will be able to log onto the Visual Designer project.
• Automatically if the user enters the wrong password too many times. (The number of
attempts allowed is configured in the Group Account dialog.)
To check whether a user is blocked, do one of the following:
• Look at their user icon in the Project Explorer, which will be marked with a red circle; or
• Call the GetUserState function during runtime.
The file is no longer protected. You can open the file without being prompted for the
password.
Assigning a password to all files
To assign a single password to all files in your project:
1. On the Home tab of the ribbon, in the Tools group, click Verify. The Verify Project dialog
is displayed.
2. Click Set password for all files. The Edit Protection dialog is displayed.
3. Type the current password for your project, if any.
4. Type the new password, and then type it again to confirm.
5. Click OK. The verification routine proceeds.
6. Click Close to close the Verify Project dialog.
All files in your project are now protected. The next time you try to open one, you will be
prompted for the password.
Clearing the password from all files
To assign a single password to all files in your project:
1. On the Home tab of the ribbon, in the Tools group, click Verify. The Verify Project dialog
is displayed.
2. Click Set password for all files. The Edit Protection dialog is displayed.
3. Type the current password for your project.
4. Leave the New password and Confirm password boxes empty.
5. Click OK. The verification routine proceeds.
6. Click Close to close the Verify Project dialog.
Your project files are no longer protected.
Automatic Translation
You can quickly translate your project's user interface to multiple languages, leveraging the
power of automatic translation through Google Translate, and you can switch your project's
language during runtime with a simple function call.
8. If you want to overwrite any previous translations, select Replace existent translations.
Please note that this will overwrite both automatic translations and manual edits.
9. Click OK.
The application processes the Source column of the worksheet through Google
Translate and then populates the Target column with the results.
10. Review and manually edit the translation results as needed.
Use the Filters to search the worksheet for a text string; as you type a few characters,
the list is dynamically filtered to show only the strings that match.
11. Save and close the worksheet.
Changes made to the Translation Table will not take effect until you either call the
SetLanguage function or restart the runtime project.
Note: The Translation Table is saved as a tab-delimited text file in your project folder, at
[…]\My Documents\Visual Designer v7.0 Projects\project_name\Web
\Translation.trn. You can open and directly edit this file with Microsoft Excel, if
you choose to do so.
1. In the Graphics tab of the Project Explorer, double-click a project screen to open it for
editing.
2. On the Graphics tab of the ribbon, in the Active Objects group, click Button.
3. Draw a Button object in the project screen.
4. Double-click the Button object.
During project runtime, clicking each button will set the language of the entire project to that
language, using the translated text from the Translation Table.
Once the option is cleared on an object, its text will no longer be translated during project
runtime. The text is still added to the translation table and may be processed though the
automatic translation engine, along with all other project texts, but the resulting translation
will not actually be applied to the object during runtime.
Output (LogWin)
You can use the Output window to view debugging messages generated during project
runtime. The window displays OPC, DDE, and TCP/IP transactions, module activation, trace
tags, and so on.
2. In the Log Options tab of the dialog, select the specific types of messages that you
want the log to show.
Option Description
Field Read Commands and Field Write Show any read and/or write commands that are sent
Commands to connected devices.
Protocol Analyzer Show messages generated by configured device
drivers.
OPC Messages Show messages generated by OPC communications.
TCP/IP Messages Show messages generated by TCP/IP
communications.
Recipe/Report Show messages generated by the Recipe and Report
tasks.
Display Open/Close Display a message whenever a screen is opened or
closed.
Logon/Logout Display a message whenever a user logs on or logs
out. (For more information, see Security.)
Trace Messages Show messages generated by the Trace()
function. This function is used to generate
customized messages from within your project.
Database Messages Show messages generated by the ODBC and
ADO.NET database interfaces.
DDE Messages Show messages generated by DDE communications.
Insert date/time Timestamp each message.
3. In the Log Tags tab of the dialog, click Add to browse for project tags.
The Output window will display a message whenever the value of a selected tag
changes.
4. Click OK to save your settings and close the Log Settings dialog.
Database Spy
The Database Spy window is a debugging tool that allows you to: monitor and force values
to project tags; execute and test functions; and execute and test math expressions.
1. On the Home tab of the ribbon, in either the Local Management group or the Remote
Management group (depending on where the project is being served from), click Tasks.
The Execution Tasks dialog is displayed:
Note: The IP address 192.168.1.52 is only an example. Please verify the IP address of
the computer to which you want to connect.
3. Click OK to connect to the specified address. If the connection is good, then the Remote
Database Spy window is displayed.
Note: You cannot add or remove tags remotely; the Database Spy tag list must be
configured on the remote computer itself.
When you are done, click Close to disconnect from the remote computer.
Remote LogWin
You can use the Remote LogWin tool (located in the Tools menu) to monitor the Output
log (LogWin) of an Visual Designer project running on a remote computer. The project must
have the LogWin execution task enabled, and the remote computer must be in runtime.
To use the Remote LogWin tool:
1. On the Home tab of the ribbon, in the Remote Management group, click LogWin. The
Remote Computer dialog is displayed.
2. Enter the IP address of the remote computer, as shown below.
Note: The IP address 192.168.1.52 is only an example. Please verify the IP address of
the computer to which you want to connect.
3. Click OK to connect to the specified address. If the connection is good, then the Remote
LogWin window is displayed.
Visual Designer is installed on the Server station only. Also, the project (screen files, tags
database, configuration worksheets, etc.) is stored on the Server only. You do not need to
install the development application or the runtime project on the Thin Client. This solution
provides a high level of flexibility because any computer physically linked to the Server
station (via a TCP/IP link) can access the graphical screen and online/history data from the
Server without installing the development application or the runtime project on the Thin
Client stations.
All background tasks (Math, Scheduler etc) and communication tasks (e.g., Driver, OPC, DDE
TCP/IP) are executed only on the Server station. The Thin Client is able to load the graphical
interface configured on the Server (screens with objects and animations) and display the
online values from the tags configured in the server, as well as history data (Alarm, Events
and Trend history data).
Note: Since VBScript and the Visual Designer Scripting Language can be associated with a
screen as well as a Command animation for an Object, these Scripts can execute on a
Thin Client.
Any computer or device (e.g., a PDA powered by Windows Mobile 5.0) running Microsoft
Internet Explorer 6.0 (or later) or our Secure Viewer program can be a Thin Client for your
project. Moreover, Visual Designer provides a sophisticated Security System to prohibit
unauthorized access to the project.
From the Thin Client, you are able to visualize data from the Server and capable of
changing set points, acknowledging alarms and/or sending commands to the Server. When
configuring the project, you can optionally enable or disable all commands from the Thin
Client to the Server. Even if the Server has disabled all command from the Thin Client, the
Thin Client can still read data from the Server but cannot send any data to the Server.
Thin Client Competitive Advantages
Visual Designer is built on a Client/Server architecture that supports true Thin Clients. This
capability is built into Visual Designer and is not an add-on. This means that:
• The Visual Designer Server supports a large number of concurrent Thin Clients (up to 128
IE-based and 128 Secure Viewer-based). Each Thin Client can view the same or different
screens as another Thin Client.
• The Visual Designer Server knows which display each Thin Client viewing and
automatically "pushes" any updated Tag values to the Thin Client, keeping the Thin Client
display current and eliminating the need for screen refreshes
• The Visual Designer Server can support runtime language switching for each Thin Client.
This means that one Thin Client can be viewing a screen in English while another Thin
Client can display the same screen in Spanish.
Many competitive products offer either a static display on a Thin Client (i.e., it must be
manually "refreshed" to get the latest data), a Terminal Server solution (requires the Server
to build multiple instances of the project to support each Thin Client), or offer a Thin Client
solution similar to Visual Designer but with expensive "add-on" software products.
Other Thin Client advantages include:
• Optional Secure Viewer that does not allow navigation outside the Visual Designer
project. Secure Viewer is not based on Microsoft's Internet Explorer.
• Ability to run VBScript and the Built-in Scripting Language on the Thin Client
• Can build Thin Client projects using Windows Embedded devices as the Server.
• Ability to support redundant Web Servers and Data Servers, with automatic switchover.
Thin Client Licensing
The maximum number of Thin Client stations connected simultaneously to the Server
depends on the settings of the license installed on the Server. The user does not have to
install any license on the Thin Client. For more information, see License Settings.
2. Open the Execution Tasks dialog (Tasks on the Home tab of the ribbon) and be sure the
TCP/IP Server task is set to Automatic.
Step 2: Configure Database
1. In the Development Environment, select the Global tab of the Project Explorer. Open the
Project Tags folder.
2. Be sure the project tags are properly set to either Server or Local. If the tags are to be
exposed to the Web Client, then set them to Server, otherwise set to Local.
Step 3: Develop your Screens and create HTML screens
1. Develop your project screen. Depending on your Thin Client screen size, you may want
to develop a separate set of screens with a different resolution. Auto Screen scaling is
supported (enabled in a prior step), but auto screen scaling naturally has limitations.
2. Save and close all project screens.
3. Be sure you have defined a Startup Screen (Viewer on the Project tab of the ribbon).
4. You can save individual screens as HTML by selecting the Save as HTML or Save
Screen Group as HTML options in the Application menu, or save all Screens and Screen
Groups as HTML by selecting the Save All as HTML option.
5. If you are just updating a Screen, and especially when you make any configuration
changes to the Web settings, you should run the Verify Project tool (i.e., on the Home
tab of the ribbon, in the Tools group, click Verify).
6. The HTML (web) pages will be stored in the Web sub-folder of your project folder.
Step 4: Install NTWebServer
1. NTWebServer is Eaton's lightweight Web Server for Windows NT/XP/2000/Server 2003/
Vista environments. NTWebServer.exe is found in […]\EATON\Visual Designer
\Bin
2. Copy NTWebServer.exe from the \Bin folder and paste it into the Web sub-folder of your
project folder.
3. From the Web sub-folder, double click on NTWebServer to start it.
4. A new window should pop-up. At the bottom, there should be a message indicating
that NTWebServer is listening. If a message appears that NTWebServer failed to open
a socket, it is most likely caused by Microsoft IIS (Web Server) running in a background
mode. If this is the case, you will need to stop IIS, and then restart NTWebServer
Note: A Web server typically operates on, or "listens to," a computer's TCP/IP port 80.
Only one running process can listen to a given port, so if another process on
your computer — for example, some third-party SCADA software — is already
listening to port 80, then it and the Web server process may conflict with each
other. You must either configure one of the processes to listen to a different
port or use Task Manager to end the conflicting process. If you cannot identify
the conflicting process, then in Windows, open Command Prompt and enter the
following command to get a list of all networking processes:
netstat -a -o
Step 5: Start the runtime project
1. On the Home tab of the ribbon, click Run.
Step 6: Launch Microsoft Internet Explorer and connect to the Web Server
1. Click on the Start button (or Alt Tab) to access the Microsoft Internet Explorer program.
2. Start Internet Explorer, and type the address of the starting (home webpage). E.g.
http://127.0.0.1/startup.html
3. Note that the startup.sg (or whatever your startup display or screen group name is) will
have a HTML file extension on it when accessed from Internet Explorer.
4. Sign on as Guest with no password, assuming no security has been enabled.
Procedure B: Thin Client using NTWebServer, Network IP
Once Procedure A has been completed, the next step is to enable network connected Thin
Clients, instead of using the local loopback. You need to know the IP address of your PC,
as seen from the network. You can get this information from the Network Settings in the
4. Expand the Web Sites tree structure to see the Default Web Site.
5. Right click on the Default Web Site and select Properties to get the Default Web Site
Properties dialog.
6. Click on the Home Directory tab. Click on the Local Path Browse button and point to
your project's Web subfolder.
7. Click on the Web Site tab. Make sure the TCP port is set to 80. You can click the
Advanced button to enable the IIS Web Server to respond to specific IP addresses and
IP Port numbers.
8. If your Web Server is behind a Proxy, be sure to check the HTTP Keep-Alives Enabled
checkbox. It does not hurt anything if this is always checked.
9. Click on the HTTP Headers tab. Click on the MIME Map File Types button to open the
File Types dialog. Next, click on the New Type button to add a new MIME type. Put the
file extension in the Associated Extension field. In the Content type (MIME) field, put
MIME type followed by a / character, followed by the file extension name (application/
studio). E.g.
Associated Extension: .scc
10. Click on the Directory Security tab. From this tab, you can change the settings for
Anonymous User Access and Authentication Control as well as Secure Communications
(i.e., using SSL 3.0).
11. Click on the Anonymous User Access and Authentication Control Edit button to get
the Authentication Methods dialog. Normally, you do not have to do anything in this
dialog but depending on the Security system your network administrator has installed,
you may need to adjust settings in this dialog.
12. The Secure Communications Server Certificate button opens a wizard that lets you
define a Certificate for support of secure communications using SSL.
About MIMEs
• MIME, or Multipurpose Internet Mail Extensions, types instruct a Web browser how
to handle files received from a server. For example, when a Web browser requests
an item on a server, it also requests the MIME type of the object. Some MIME types,
like graphics, can be displayed inside the browser. Others, such as word processing
documents, require an external helper program to be displayed.
When IIS delivers a Web page to a client Web browser, it also sends the MIME type of
the data it is sending. If there is an attached or embedded file in a specific format, IIS
also tells the client program the MIME type of the embedded or attached file. The client
program then knows how to process or display the data being received from IIS.
IIS serves only files with known extensions registered in the MIME types list or with
the operating system. IIS allows you to configure additional MIME types and change or
remove MIME types. Removing a MIME type in IIS does not block access to that MIME
type by other programs if it is also registered with the operating system.
IIS is preconfigured to recognize a default set of global MIME types. These MIME types
are recognized by all Web sites you create in IIS. MIME types can also be defined at the
Web site and directory levels, independent of one another or the types defined globally.
When you view MIME types at the Web site or directory level, only the types unique to
that level are displayed, not all types inherited from the next level up.
• IIS returns a 404.3 error if a client request refers to a file name extension that is not
defined in the MIME types
• MIME configuration is usually only required for Windows Server 2003, not Windows XP
or Vista due to Windows 2003 default settings.
• MIME types should include all file extensions found in the Web directory. These include:
• .app
• .bin
• .csv
• .gis
• .html
• .ico
• .ini
• .lst
• .scc
• .sg
• .stmp
• .tra
• .txt
Step 2: Start IIS and start the Visual Designer Project
1. Be sure NTWebServer is terminated.
2. Click on the IIS Start button.
3. Run the project.
Notes:
• If IIS is not installed on your PC, you can add it (to Windows XP Pro/Windows 2000
or Windows Server 2003) by opening the Control Panel, then selecting Add/Remove
Programs > Add/Remove Windows Components and checking the Internet
Information Services (IIS) checkbox in the Windows Components Wizard. You can click
on the Details button to select various components of IIS to install. Note that you may
need to have your Windows installation disk.
• You can get more information on IIS by opening a browser and entering http://localhost/
iishelp in the browser navigation address bar. Note that IIS must be running.
• NTWebServer is a Windows program, while IIS is a Windows service.
• It is STRONGLY SUGGESTED that you use IIS instead of NTWebServer in a runtime
mode. It is more reliable and higher performance than NTWebServer.
Troubleshooting:
• If you get a Cannot find Server error message,
• From the browser, ping the server IP address (primary and/or backup). You can
ping using the IP address or use the NetBios name to ping the server (e.g., from a
command prompt enter
• Ping 152.57.100.25 or Ping ServerName.
• Be sure IIS is running
• Be sure your project is running
• Make sure the TCP/IP Server (in the project's Tasks) is running
Web Browser
The Web Browser is located on the Thin Client PC and provides the graphical interface
function with the user. Web pages (HTML) is passed to the browser via demand
("pull") and data is "pushed" to the browser by the Data Server whenever a Tag or Tags
referenced on the Screen displayed on the Web Client is updated in the Tag Database.
ISSymbol
ISSymbol is a Eaton-provided ActiveX Control that facilitates the interaction between
the browser on the Web Client and the Web Server as well as the Data Server. There
are ISSymbol ActiveX Control versions for Windows XP/Vista/7 and all Windows
Embedded platforms.
The ISSymbol ActiveX Control is used for both the Internet Explorer-based and Secure
Viewer-based browsers.
Web Tunneling Gateway
The (Primary) Web Tunneling Gateway is a bridge between the Web Server and the
Data Server that is used in one of two situations. The first is whenever data security
is required (e.g., Visual Designer data exchanged with the Thin Client needs to be
encrypted). The second situation is when the Data Server is "hid" behind a corporate
firewall, and only the Web Server IP address (or URL) is exposed.
Visual Designer supports a backup (Secondary) Web Tunneling Gateway to be used
if the Primary Web Tunneling Gateway becomes unavailable. The Thin Client will
automatically switch over to the secondary Web Tunneling Gateway.
The Web Tunneling Gateway is automatically installed when Visual Designer is
installed on your PC if the installation program detects that IIS is present.
Note:
• The Web Tunneling Gateway is automatically installed if IIS is detected during the
installation process. Otherwise, it must be manually installed.
• The main function of the Web Tunneling gateway is to encapsulate data packets in
HTTP or HTTPS for communication through a firewall.
CAUTION
Make sure your Web browser is enabled to download signed ActiveX controls, in order to
download ISSymbol automatically. Otherwise, you will need to register ISSymbol manually in
the Thin Client station. Check your Web browser's documentation about security settings if
you have questions about how to configure these settings.
[…]\EATON\Visual Designer\Redist\CE_version\processor_type\Bin\
For example, for a MIPS IV processor running Windows CE 5.0 or later:
regsvrce.exe "\ISSymbol_directory\ISSymbolCE.ocx"
For example:
is also left off most Windows Mobile devices — then please contact Customer
Support.
How It Works
After you open the Web browser, you must type the URL for one web page available in the
Web Server station (e.g., http://127.0.0.1/main.html) into the Address field. At this
point, the Thin Client executes the following process:
1. The Web browser downloads the HTML page of the screen you specified.
2. The Web browser checks for ISSymbol control registration in the local computer. If it
does not find it, the Web browser attempts to download the ISSymbol component from
the URL configured in the project (settings saved in the HTML page). Since the ISSymbol
control is properly registered in the Thin Client station, the Web browser loads it.
From this point on, ISSymbol takes over the communication with the server station, and
the Web browser is used only as a host for ISSymbol.
3. ISSymbol connects to the data server. You configure the data server IP Address in the
project settings (Thin Client on the Project tab of the ribbon). This setting is embedded
in the HTML page.
4. ISSymbol prompts a window on the Thin Client, asking for the User Name and
Password. The data you enter is codified by Binary Control and sent to the server. The
server station checks the validity of the data and whether you have the rights to open
the startup screen. If so, the process continues. If not, you are prompted with an error
message indicating that the User Name and Password are invalid. In this case, the
process will not continue.
Note: Step 4 is skipped if the Security System is disabled during the configuration of the
project.
5. ISSymbol downloads the necessary files to display the screen specified by the user
(screen files, tags database, translation files and so forth).
6. ISSymbol connects to the data server and reads the value of the tags that are displayed
in the screen you specified.
7. ISSymbol displays the screen on the Web browser and keeps updating the objects
according to the values read from the server. Whenever the value of any tag displayed on
the open screen(s) changes on the server, the new value is sent to the Thin Client (and
vice-versa). Therefore, there is no pooling between the Thin Client and the server station.
This method increases the communication performance and optimizes the traffic in the
network.
Notice that there are two servers in this process:
• Web server (HTTP Server): Provides the files from the server to the Thin Client via HTTP
protocol over TCP/IP.
• Data server (TCP/IP Server module from Visual Designer): Provides tag values and/or
history data from the project running on the server to the Thin Client station(s).
Although both servers are usually running in the same computer, Visual Designer provides
the flexibility to run each server in a different station, if necessary. See Web-based
application typical architectures for further information.
the Advanced button, you access additional settings. The following pictures illustrate these
dialoges:
The following table describes the meaning of the main Web settings illustrated in the above
dialoges:
Setting Description
Data Server IP Address When the Web Tunneling Gateway is disabled: The Thin Client Control
(ISSymbol) uses the Data Server IP Address to connect to the Visual
Designer TCP/IP Server Task.
When the Web Tunneling Gateway is enabled: The Web Tunneling
Gateway uses the Data Server IP Address to connect to the Visual
Designer TCP/IP Server Task.
Secondary Data Server IP Address Same as the Data Server IP Address. However, the Secondary IP
Address is used only when the connection with the Data Server IP
Address fails.
Web Tunneling Gateway IP Address The Thin Client Control (ISSymbol) uses the Web Tunneling Gateway IP
Address to connect to the Web Tunneling Gateway.
Web Tunneling Gateway Secondary IP Address Same as the Web Tunneling Gateway IP Address. However, the Web
Tunneling Gateway Secondary IP Address is used only when the
connection with the Web Tunneling Gateway IP Address fails.
Thin Client LAN Thin Client station (Web Browser + ISSymbol control) that connects the Server via the
LAN.
Thin Client WAN Thin Client station (Web Browser + ISSymbol control) that connects the Server via the
WAN.
IP_SERVER_LAN IP Address of the Server on the LAN.
IP_SERVER_WAN IP Address of the Server on the WAN.
IP_ROUTER_LAN IP Address of the Router on the LAN.
IP_ ROUTER_WAN IP Address of the Router on the WAN.
ScreenName Name of the project screen, saved as HTML, that is open on the Thin Client station.
Example 1: Web Server and Thin Client in the same Intranet (LAN)
This is the very common architecture, as well as the simplest to configure. In this
architecture, both the Web Server (e.g., Microsoft IIS) and the Data Server (i.e., the Visual
Designer TCP/IP Server module) are running on the same PC. The Thin Client connects to
the Web Server to download the HTML screen file(s). Then it connects to the Data Server
to exchange data with the Visual Designer runtime project. Since both the Thin Client and
the Server station are connected to the same network, the Thin Client can access the Server
station directly through its IP address (or host name).
Configuration:
Setting WTG Enabled Web Gateway Disabled
Note:
• URL From Thin Client LAN: http://IP_SERVER_LAN/ScreenName.html
• Home directory of the web server (HTTP server) on the server station: Web sub-
folder of the project
Example 2: Web Server with Intranet (LAN) and Internet (WAN) Connections
This architecture has both the Web Server (e.g., Microsoft IIS) and the Data Server (i.e., the
Visual Designer TCP/IP Server module) running on the same PC. Thin Clients can connect to
the Server through either an Intranet (LAN) connection to the Server or an Internet (WAN)
connection to the Server (e.g., two different Ethernet ports).
Configuration:
Setting Web Gateway Enabled Web Gateway Disabled
Note:
• URL From Thin Client LAN: http://IP_SERVER_LAN/ScreenName.html
• URL From Thin Client WAN: http://IP_SERVER_WAN/ScreenName.html
• Home directory of the Web Server (HTTP server) on the Server station: Web sub-
folder of your project folder
• You must assign a Fixed IP address to the Web Server on the Internet (WAN),
and the project must be running in this Server. Consult your ISP provider or IT
department for further information about how to get a Fixed IP address for your
Server.
Example 3: Web Server with Intranet (LAN) and Router Internet (WAN) Connections
This architecture has both the Web Server (e.g., Microsoft IIS) and the Data Server (i.e., the
Visual Designer TCP/IP Server module) running in the same PC. Thin Clients can connect
to the Server through either an Intranet (LAN) connection or an Internet (WAN) connection.
There is a Router between the Intranet (LAN) and the Internet (WAN).
Configuration:
Setting Web Gateway Enabled Web Gateway Disabled
Note:
• URL From Thin Client LAN: http://IP_SERVER_LAN/ScreenName.html
• URL From Thin Client WAN: http://IP_ROUTERR_WAN/ScreenName.html
• The Router must be configured to forward the TCP Port(s) from its public IP
(IP_ROUTER_WAN) to the Server private IP (IP_SERVER_LAN).
If the Web Gateway is enabled, only the HTTP Port (80, by default) or the HTTPS
Port (SSL Port 443, by default) must be forwarded from IP_ROUTER_WAN to the
IP_SERVER_LAN.
If the Web Gateway is disabled, both the HTTP Port (80, by default) and
the Studio TCP/IP Server Port (1234, by default) must be forwarded from
IP_ROUTER_WAN to the IP_SERVER_LAN. Consult the Router documentation for
further information about how to configure Port Forwarding on it.
• Home directory of the Web Server (HTTP server) on the Server station: Web sub-
folder of your project folder
• You must assign a Fixed IP address to the Router on the Internet (WAN), and the
project must be running in this Server. Consult your ISP provider or IT department
for further information about how to get a Fixed IP address for your Server.
2. In the Data Server IP Address field, type the IP address of the PC where the runtime
project will reside.
3. Check the checkboxes for Auto Screen Scaling, Enable File Compression and Enable
Tooltips. If you want to disable the Web Client from issuing commands to the Server,
check the Disable Remote Client Commands checkbox.
4. If the Web Client is to use a Virtual Keyboard, check the Virtual Keyboard checkbox and
any additional settings for the Virtual Keyboard at the Thin Client.
5. By clicking on the Advanced button, you can define a backup URL (i.e., backup Website
for web pages) and a Secondary Data Server IP address. This is for a redundant Web
Server and/or a redundant Data Server, respectively. Web Tunneling can also be enabled
in this dialog. The URL for the ISSymbol OCX can also be defined if it is not found on the
Web Server.
6. By clicking on the IP Security button, you can define a range of IP addresses that will be
accepted by the Data Server. If a request for data comes from an IP address outside of
the defined ranges, the request will not be acknowledged. This is an Embedded Firewall
function.
2. Enter the Port number (1234 is the default) for the Data Server. You can also define the
Data Send Period (i.e., time period for updated communication of data values to the Web
Client).
3. Optionally enable Binary Control of the data. It is more secure, but is slower. The
default is disabled.
2. Be sure the TCP/IP Server is set to Automatic. This should be the default state, but can
be manually configured by selecting the Startup button.
3. Be sure the TCP Port number is properly set (see Communication Settings above),
otherwise the TCP/IP Server will start then stop.
Note:
• This configuration information (from Step 1 & 2) gets embedded in the Web Pages
generated from the Visual Designer development environment when you Save As
HTML.
• If you change any of these settings, you MUST run the Verify Project tool.
Using the SetWebConfig Function
The SetWebConfig() built-in function allows the developer to programmatically configure
the Data Server and Web Client configuration, and the resulting configuration settings are
automatically updated in your project's HTML files (located in the Web sub-folder). This
function always runs on the Visual Designer Server, and works in both a Windows and
Windows Embedded environment.
For more information, see SetWebConfig() function.
Configuring the Web Server to Support IE and Secure Viewer
Visual Designer is capable of supporting both Interned Explorer (IE)-based browsers and
Secure Viewer-based browser at the same time. To do this however, you need to take some
care in how you configure your system.
From the Web-server side
• All HTML files go into the project Web sub-folder.
• Configure your Web Server (e.g., IIS) to have its root folder point to the project folder.
• Put ISSymbolVM.cab in the project folder if an Internet connection to Eaton's Web site
is not available and the ISSymbol ActiveX control is not installed on the IE-based Web
Client.
http://192.168.1.100/Web/startup.html
netstat -a -o
NTWebServer and CEWebServer
NTWebServer and CEWebServer are lightweight, zero-configuration Web servers included
free with Visual Designer. You can use them to demonstrate your project and run basic
tests without making the financial and technical investment in a full-featured Web server.
However, they are not robust and they do not support SMA or WTG. For real-world
applications, we recommend that you use Microsoft IIS as described below.
NTWebServer can be run on any supported Windows PC, and it can be found in the Visual
Designer program directory at […]\EATON\Visual Designer\Bin\NTWebServer.exe.
Copy it to your project's Web sub-folder before you run it; it must be located in the same
folder as the pages it will serve. After you run it, that folder becomes the top level (or "home"
directory) of the Web site.
CEWebServer can be run on any supported Windows Embedded device, and it can be found
in the Visual Designer program directory at […]\EATON\Visual Designer\Redist
Versions of IIS
Version of Windows Version of IIS Notes
Windows CE and Windows Mobile 5.0 IIS for CE .NET Must be included in Platform Builder. Default is maximum of
and later 10 simultaneous connections.
IIS supports all features of Visual Designer and it is robust enough to serve almost any Visual
Designer project in a production environment. It's the Web server that we recommend for
most users. However, to properly install and configure it, you should be experienced with
administering Windows on a network.
For the sake of system security, IIS is turned off by default when the operating system is
installed. To turn it on, use the Windows Features dialog (in Windows 7, Control Panel >
Programs > Programs and Features > Turn Windows features on or off):
If you want to use SMA and/or WTG in your Visual Designer project, then make sure ASP
and ISAPI Extensions are also turned on:
Once IIS is turned on, you can use Administrative Tools (in Windows 7, Control Panel >
System and Security > Administrative Tools) to configure it. For more information, please
refer to Microsoft's extensive documentation.
Apache for Windows
If IIS is not available to you or if you choose not to use it, then the second most popular Web
server for Windows is the open-source Apache. However, it requires even more expertise
than IIS to properly install and configure, so please review the documentation thoroughly
before you attempt it.
depends on the project requirements. The Secure Viewer is targeted at plant floor use,
while the Internet Explorer browser is generally more appropriate for desktop applications or
where the Thin Client needs to connect to different project servers.
Configuring Microsoft Internet Explorer
There is really very little that needs to be done to configure Microsoft Internet Explorer to be
used as a Web Browser for a Thin Client. The primary items are:
• Make sure ActiveX Controls are enabled.
The settings to control this are generally found in Tools > Internet Options > Security.
Click on the Custom Level button and be sure to allow the ISSymbol ActiveX Control to
be installed, then you can return to a higher security level. (Otherwise, be sure to install
the ISSymbol ActiveX Control manually).
• Be sure VBScript is supported on your PC. This is generally not an issue with desktop
PCs, but it can be an issue on Windows Embedded devices. You will need to be sure the
VBRun.dll is installed and registered on your PC.
If you are going to use Microsoft Internet Explorer as your Web browser for Thin Client
projects, you may want to remove some navigation bars and buttons to reduce the amount
of space taken up by these items.
You can create an icon on the desktop that is a shortcut to your startup web page on the
Web Server. This will take you to the web page when you click on the icon. Additionally,
you can put this shortcut in the Startup folder so that the Web page is automatically started
whenever the browser is started.
Installing the Secure Viewer
Installing on Windows PC
You will need to install the Secure Viewer from your CD (or download from the Eaton Web
site). Follow the following steps:
1. Request the Secure Viewer installer from your software vendor, save it to the designated
computer, and start it.
2. Follow the instructions of the installation wizard. There are only two settings that must
be configured during installation:
• URL: Enter the URL or filepath of the project file (project_name.app) on the Web
Server.
• Server IP: Enter the IP address or hostname of the Data Server (a.k.a. TCP/IP Server).
3. Finish the installation and click Finish to close the installer.
The installation wizard automatically installs and registers the Thin Client ActiveX component
(ISSymbol.ocx), so if you have correctly configured the URL and Server IP settings, then the
Secure Viewer should be ready to go.
Note: For additional security of the runtime environment, add a shortcut to the Secure
Viewer (Viewer.exe) to the Startup directory in Windows. Viewer.exe will install into
the \Bin sub-folder where the Visual Designer program installs.
Installing on Windows Embedded
You can also install the Secure Viewer on a Windows Embedded device, by copying the
necessary files to the device's non-volatile memory. To install Secure Viewer:
1. Determine the OS version and processor type of the Windows Embedded device,
and then find the corresponding sub-folder in the Visual Designer program directory.
For example, for Windows CE 5.0 running on a MIPS processor, find the […]\EATON
\Visual Designer\Redist\WinCE 5.0\MIPS\Bin sub-folder.
2. Select the following files in the sub-folder:
• IndVkStd.dll
• ISSymbolCE.ocx
• Tagi.bin
• Viewer.exe
• ViewerCfg.exe
3. Copy the files to non-volatile memory on the Windows Embedded device.
4. Register the ISSymbol control on the Windows Embedded device by executing the
following command from the Prompt window:
regsvrce.exe "\ISSymbolPath\ISSymbolCE.ocx"
Example:
Note: On WIndows Vista and Windows 7, the Secure Viewer configuration utility must
have Administrator privileges to run properly. It should be installed with those
privileges by default, but if you still have problems, then check the file properties for
ViewerCfg.exe and make sure Run as Administrator is selected.
The configuration utility provides the following options:
• Save button: Immediately save the current settings to a viewer.ini in the same
directory as the ViewerCfg.exe utility.
• Import button: Load a viewer.ini file from another directory.
• Export button: Save the viewer.ini file to another directory.
• Data Server IP field: Enter the IP address (or host name) of your data server station.
The data server station is the computer or device where the TCP/IP Server module is
running.
• TCP Port field: Enter the port number of the Data Server, if it is different than the default
port of 1234.
• URL field: Enter the URL or filepath of the project file (*.app) on the Web Server.
• Enable Splash Window option: Check (enable) this option to see a splash window when
you start the Secure Viewer.
• Enable Progress Bar option: Check (enable) this option to see a progress bar while the
Secure Viewer loads the project file.
• Advanced button: Click to access additional configuration options:
• Secondary Data Server IP field: Type the IP address (or host name) of the secondary
data server station. If the primary data server fails, the Secure Viewer will attempt to
connect to the secondary data server automatically.
• Backup URL field: Type the URL of the backup location of the project file.
• Date Format: Adjust the date format on the Secure Viewer station to match the Data
Server. This is to maintain compatibility with any Alarm/Event Control or Trend Control
objects that you have in your project.
• Timeout for switching stations field: Enter the number of seconds that the Secure
Viewer should wait before attempting to connect to the secondary Server, in the
event that the primary Server fails. (For more information, see Web tab on page 78.)
• Log on as Guest option: Check (enable) to have the Secure Viewer automatically log
on as Guest, eliminating the need to enter a Username or Password.
• Disable Commands option: Check (enable) to prevent the Secure Viewer from
sending user commands back to the Server. It will only display current information
from the Server.
• Web button: If you have configured a Web Tunneling Gateway to bridge your intranet
to the Internet, then enter the addresses for the gateway here.
The second way to change the configuration of the Secure Viewer is to manually edit the
viewer.ini file with a text editor. The structure of the file is as follows:
[Options]
nosplash= // Enable (0) or disable (1) the splash window
noprogressbar= // Enable (0) or disable (1) the progress bar
ds1= // Data Server Primary
ds2= // Data Server Secondary
dsp= // Data Server Port
wtg1= // Web Tunneling Gateway Primary
wtg2= // Web Tunneling Gateway Secondary
url= // URL from project file (*.app)
proxyip= // Proxy Address
proxyp= // Proxy Port
ceemul= // Enable (1) or disable (0) CEView emulation
Example
PC with Visual Designer runtime project (has both Web Server (NTWebServer or IIS) and
Data Server):
• IP Address is 192.168.1.106
• Project name is SecureViewerTest
[Options]
url=http://192.168.1.106//SecureViewerTest.app
noprogressbar=1
ds1=192.168.1.106
nosplash=1
ds2=
dsp=1234
wtg1=
wtg2=
user=Guest
[OEM]
Splash=Splash.bmp //this is a splash screen
Note:
• Your Visual Designer runtime license must support a Secure Viewer (Thin Client)
otherwise the connection to the Data Server will be refused.
• Be sure to put NTWebServer in your project folder (not Web sub-folder) or point IIS
to your project folder.
In addition, Groups can have advanced settings, allowing features like minimum password
size, password aging, e-signature on Objects with Command animations, Account Auto-
lockup (e.g., lock up after a number of invalid attempts to access), and User Account
blocking (temporarily disable – e.g., when employee is on vacation).
If System Security is enabled, these Password Protection features are also available at the
Thin Client station. When a User at a Thin Client station attempts to connect to the Web
Server, they will be prompted for a User Name and a Password. If either is invalid, the User
will not be let on to the system.
Within a project, the various screen objects and their animations, and Screen access can
have a security level assigned to it. The current User logged on must have a access level
range which matches the desired Object or Screen. The following is a representative
method of assigning security access levels by Group.
2. In your Web Server, be sure SSL capabilities are enabled and that a SSL Certificate of
Authentication is present.
3. Be sure SSL is enabled in the Web Client
4. Set up all other Web configurations to support the WTG.
Method 5: VPN
A VPN is a Virtual Private Network. It is called virtual since it really uses the public Internet to
transport data from one computer to another. But since this network is encrypted and uses
other security mechanisms enabled by the ISP, is it a very secure Private Network. While
VPN's are inherently secure, they are more costly that a simple public Internet connection.
Port Usage
There are various ports that are used by Visual Designer and/or related software. These are:
Port # Program
Port # Program
You may need to accommodate one or more of these port's usage in your Firewall settings.
3. On the Project tab of the ribbon, in the Web group, click Thin Client.
4. Configure the Data Server IP Address to use the IP Address of the Server station
(computer on which you are running) at runtime.
The Thin Client station exchanges on-line data (tag values) with the station specified in
this field.
5. Type the URL path to your main.html file (in the Web folder) into the URL field.
The URL depends on the Home directory configured in the Web Server of your Server
station.
Note: Microsoft provides Web Servers for any Microsoft operating system. Consult your
Microsoft documentation about installing and configuring a Web Server.
6. After configuring the Web settings, click OK to close the Project Settings dialog.
7. Save and close all screens and worksheets, and then verify the project (Verify on the
Home tab of the ribbon) to update the Web settings to your Web page.
CAUTION
You must verify the project again any time you change the project settings.
To test your Web-based application, use the following steps:
1. Click Run (on the Home tab of the ribbon, in the Local Management group) to run your
project locally on the Server station.
2. Open an Internet Browser (Microsoft Internet Explorer or Netscape) and type the URL
address to open your main.html screen from the Server station.
3. When the Log On dialog displays in the Browser, type guest into the User Name field,
then click OK to open the main.html screen in the Browser.
Notice that you can modify the level of any tank locally (Server station) using the Viewer
run-time module or remotely (Thin Client) using the Browser.
You can use the parameters on this dialog to control the flow of data between your
target and development stations:
• Baud Rate: Select a baud rate from this drop-down combo box.
• Control RTS: Select (check) this to use a "Request to Send" control, where Visual
Designer sends an RS-232 signal from the transmitting station to the receiving
station requesting permission to transmit.
• Control CTS: Select (check) this to use a "Clear to Send" control, where Visual
Designer sends an RS-232 signal from the receiving station to the transmitting
station to indicate the receiving station is ready to accept data.
When you finish setting these parameters, click OK to close the Serial Advanced
Settings dialog.
• TCP/IP: Enable this button to establish a TCP/IP connection to the development
station.
Note: For better performance, we recommend using a TCP/IP connection instead of a
Serial Link connection.
3. When you are finished, click OK to close the Setup dialog, but leave the Remote Agent
program running in the remote workstation.
Continue to "Configuring the Development Station."
1. On the Home tab of the ribbon, in the Remote Management group, click Connect. The
Remote Management dialog is displayed:
2. Select the Target tab and use the following options to specify the target system to
which you are going to connect.
• Network IP: Select this button and type the IP address of the target system into the
text box if you specified a TCP/IP connection when you configured the target system.
• Serial Port: Select this button and select a port from the combo-box list if you
specified a Serial Port connection when you configured the target system.
• Microsoft ActiveSync: Select this button to connect to devices on which ActiveSync
is enabled.
3. Click the Connect button to connect to the target system.
If the target system is a Windows Embedded device, then you can click Install System
Files to install the CEView runtime engine on the station.
4. Select the Project tab.
5. In the Target box, verify the directory for the project files on the target system. If the
path is incorrect, then click the browse button to the right of the Target field to select a
new directory. (Assuming you are properly connected to the target system, you should
be able to browse it like any network drive.)
Note: You can download the project files only to folders that are below where the
CEServer is installed and running. For example, if CEServer is installed at
\Storage Card\CEView\, then the project files should be installed at
\Storage Card\CEView\project_name\.
6. Click Send to Target to download the entire project to the target system. (Or click Send
File to select an individual file to send.)
CAUTION
When you send a project to the target system, the new project replaces the old one
automatically and immediately, even if the old project is still running. Also, if you uncheck
(disable) the Only newer files option, then the development application will delete all
of the old files in the project folder before downloading the new files. As such, you may
want to manually stop the old project (by clicking Stop) before you send the new one.
That way, you can make sure it stops gracefully and doesn't disrupt any other processes.
It's not strictly necessary to stop the project, however, so if your project is robust enough
to handle the switch then you can send new files whenever you need to.
Note:
• Once you've initially configured the Remote Management settings, you can
use Send project to target (on the Home tab of the ribbon) to send updated
project files at any time without opening this dialog.
• You can compress the project files to make them download more quickly over
a slow network connection. To do this, select the Enable File Compression
check box in the Communication tab of the Project Settings dialog.
• If the download is interrupted, then the development application will request
confirmation to continue and advise you that the project may not run properly.
7. After the download is complete, click Run to start the project on the target system.
[Setup]
AppName=Applicaion Path
Where project_name is the location of the Visual Designer project files on the Windows
Embedded device. For example:
[Setup]
AppName=\Harddisk\Test\CEserverTest
The next time the Windows Embedded device boots up and opens the Remote Agent
dialog (CEServer.exe), it will read this setting and automatically run the specified project.
There are three ways to edit the CEServer.ini file:
• Edit the file directly on the Windows Embedded device using an attached keyboard
or the touchscreen keypad. The file should be located in the same directory as the
CEServer.exe file, which was installed earlier.
• Mount the Windows Embedded device as a shared volume on your PC and edit the file
there.
• Edit the file in the […]\EATON\Visual Designer\Redist directory before you install
the system files on the Windows Embedded device.
CAUTION
This last method changes the default copy of CEServer.ini that is included with Visual
Designer. Use this method only if:
• You back up the file before editing it;
• You are installing the same system files on multiple, identical Windows Embedded
devices; and
• You already know the location (file path) of the Visual Designer project files on the
device (perhaps by using the normal installation method on a test device).
Database Interface
Configuring a database interface with Visual Designer is basically linking tasks from Visual
Designer (Alarms, Events or Trends) to tables of external databases via a specific Database
Provider that supports the database you have chosen.
Each history task (Alarm, Events or Trend) can be configured to save data either to files with
the proprietary format from Visual Designer or to external SQL Relational Databases. Use
the Options tab to configure the database to save Alarm and Event history. (See the Trend
Folder for instructions for saving history for the trend tasks.)
Visual Designer supports ADO.NET to provide an intuitive, simple, flexible and powerful
interface with standard technologies from MDAC (Microsoft Data Access Components)
such as OLE-DB (Object Linking Embedded — Database) and ODBC (Open Database
Connectivity). By using this capability, you can connect to any database that is MDAC
compatible (please see the Conformance Table for the list of databases already tested)
The following tasks support the database interface:
• Alarms: The project can save and/or retrieve the alarm history messages in a relational
database.
• Events: The project can save and/or retrieve the event messages in a relational database.
• Trends: The project can save and/or retrieve the Trend history values in a relational
database.
• Viewer: Database information can be displayed both in table format (Alarm/Event Control
and Grid objects) or in a graphical format (Trend Control object).
• Web: Because the items listed below are already available in Visual Designer Web
interface, you can deploy a project that stores/saves data in a relational database and
have it working over the Web.
Using its embedded database interface, Visual Designer can easily provide data from the
plant floor to third-party systems (e.g., ERP) or get data from them.
Visual Designer can interface with any relational database supported by a valid ADO.NET
Provider, OLE DB provider or ODBC driver. However, the conformance tests were executed
with the following databases:
Note: For information about how to configure a specific database, please refer to the
following:
• Database Appendix A: Using ODBC Databases
• Database Appendix B: Using Microsoft SQL Server
• Database Appendix C: Using ORACLE Databases
• Database Appendix D: Using Microsoft Access Databases
Visual Designer uses Database Providers (ADO.NET) to interface with SQL Relational
Databases. Database Providers are libraries developed to access data from different
databases through SQL commands. The ADO.NET Provider for a specific database can be
supplied by the operating system or by the database manufacturer.
The following picture illustrates how Visual Designer can interface with different databases
using a different Database Provider for each database.
The previous picture shows some of the most popular ADO.NET Providers for databases.
Notice that the Microsoft ADO.NET Provider for ODBC Drivers allows you to access the
database through an ODBC driver. See Database Appendix A: Using ODBC Databases
for information about how to use this provider. It is also possible that you do not have an
ADO.NET provider, but an OLE DB provider is available. By using the Microsoft ADO.NET
Provider for OLE DB you can get access to the database; the Microsoft Jet OLE DB provider
gives access to applications in the Microsoft Office package by using this approach.
Note: It is important to note that Visual Designer provides the interface for ADO.NET
Providers. However, the ADO.NET Providers and/or the ODBC Driver/OLE DB
Provider must be supplied either by the operating system or by the database
manufacturer. If your Connection String does not refer to a valid ADO.NET Provider,
the OLE.DB Provider will be used.
Although most projects typically link to only one type of database, Visual Designer gives
you the flexibility to link each task to a specific database supported by a Database Provider.
Furthermore, by using this architecture, you do not need to worry about the specific
characteristics of each database (it is mostly handled by the Database Provider for each
database or by the Visual Designer Database Gateway interface). Therefore, the project
settings are mostly uniform, regardless of the specific database chosen by you.
The project is running on the Server station (where Visual Designer or CEView is installed).
The project can communicate with the Visual Designer Database Gateway (running in a
remote computer) via TCP/IP. The Gateway implements the interface with the Database
through the Database Provider available in the computer where it is running.
The Studio Database Gateway does not require complex configuration. Just copy the files
STADOSvr.exe and StADOSrv.ini from the \BIN sub-folder of Visual Designer and
paste them under any directory of the computer that will be used as the Gateway station
and execute the STADOSvr.exe program. There are advanced settings associated with
the Visual Designer Database Gateway, but they should be changed only under special
circumstances. See Studio Database Gateway for information on how to configure the Visual
Designer Database Gateway advanced settings.
Note: The Studio Database Gateway is a TCP/IP Server for the Visual Designer project and
it uses the TCP Port 3997 by default. You can specify a different port number when
executing the STADOSvr.exe program according to the following syntax:
When you right-click on the icon, the following shortcut menu is displayed:
The Hide option controls whether the Studio Database Gateway window is displayed
on the desktop. (The gateway software runs continuously after you launch it, regardless
of whether the window is displayed.) If you disable the Hide option, then the window is
displayed:
Any failure that occurs during operations with databases will be displayed both in this
window and also in the LogWin window. The messages are reported by exceptions
generated by the ADO.NET Provider. (Please refer to Database Troubleshooting for more
information about error messages in the gateway module.)
You can configure the output in this window by using the Log menu:
• Show Log menu option: Shows the Visual Designer Database Gateway log files.
• Show Messages pane: Select Errors Only to show only error messages in the log,
or select All Messages to show all database messages.
• Additional Information pane: Configure to show additional information about each
database message.
• Message Type checkbox: Click (check) this option to show the type of the
message.
• Date/Time checkbox: Click (check) this option to show the timestamp of the
message.
Advanced Settings
The Studio Database Gateway has Advanced Settings that are configured in the
StADOvr.ini file. If you are having problems interfacing with a specific database, you
will probably need to change some of these settings or add new providers to the file. The
following parameters are available:
Section of .INI Parameter
File Accepted Values Description
Providers SaveMSec 1 : Disable 2 : Enable 3 : Separate Column This setting specifies the default behavior for the provider
when saving milliseconds. The default can be changed on the
Advanced Settings in the Database Configuration Dialogs.
Assembly Any string that contains a .Net Framework Assembly option for all providers. The assembly has all the
assembly classes required to interface with the database. Most of the
providers are inside the System.Data assembly.
ConnectionClass Any connection class inside the assembly The Connection Class is the one that implements the
System.Data.IDbConnection interface.
DateAdapterClass Any data adapter class inside the assembly The Data Adapter class is used on operations where updates
to the database are necessary. It must be compatible with
the connection class specified and it should implement
IDbDataAdapter.
CommandBuilderClass Any command builder class inside the assembly The Command Builder class is also responsible for updates on
databases. It must be compatible with the connection class.
Provider Name of the provider One of the parameters in the connection string is the "Provider".
The Studio ADO Gateway compares the value on the connection
string with the value for this parameter in each provider and
defines the proper one to be used.
ColumnDelimiterPrefix Any character or group of characters Specify a character that will be placed before column names on
SQL statements
ColumnDelimiterSuffix Any character or group of characters Specify a character that will be placed after column names on
SQL statements
TableDelimiterPrefix Any character or group of characters Specify a character that will be placed before table names on
SQL statements
TableDelimiterSuffix Any character or group of characters Specify a character that will be placed after table names on SQL
statements
ValueString Any string This value indicates how constant values are identified on SQL
statements. For Microsoft SQL databases for instance, the value
should be @Value, for ODBC question mark (?)
ValueStringPrefix Any string This value indicates a prefix to be used before the values. Oracle
values, for instance, require the prefix. The SQL statements use
value identifiers by using their prefixes, but the parameters in the
Connection class do not use the prefix.
ValueAddNumber 0 or 1 Indicates whether a sequential number should be added to the
ValueString to identify the parameter or not. For Microsoft SQL
database, this parameter should have the value 1, because
parameters are identified by using @Value1, @Value2, …,
@ValueN. For ODBC, this parameter should be 0.
BoolType Any string representing a valid data type for the When trying to create columns to store boolean values, the data
database type specified on this parameter will be used. You need to make
sure that the data type specified is able to save boolean values.
IntegerType Any string representing a valid data type for the When trying to create columns to store integer values, the data
database type specified on this parameter will be used. You need to make
sure that the data type specified here is able to store 32 bit
values.
RealType Any string representing a valid data type for the When trying to create columns to store real values, the data type
database specified on this parameter will be used. You need to make sure
that the data type specified here is able to store 64 real values.
StringType Any string representing a valid data type for the When trying to create columns to store string values, the data
database type specified on this parameter will be used. You need to make
sure that the data type specified is able to save the number of
characters that you are willing to save on your project.
TimeStampType Any string representing a valid data type for the When trying to create columns to store TimeStamp values, the
database data type specified on this parameter will be used.
EnableTop 0 or 1 When this field is set to 1, the ADO will place the TOP in the SQL
statement to limit the amount of registers required.
SingleConnection 0 or 1 When this field is set to 1, the ADO will open only one
connection with the database, regardless of how many tasks or
computers are requesting services from it. The synchronization
between the tasks will be performed by the gateway, and they
will not be able to be executed simultaneously if this option is
enabled.
Communication TimeOut 2 Time out to perform insert and update operations
LongTimeOut 5 Time out to perform connection and query updates
SyncTimeOut 60 Time out to perform synchronization
Connection RegBufSize 128 Size of the internal buffer used by the database API.
The paramters are grouped into three sections — Providers, Communication, and
Connection — but all of the parameters for configuring database providers are listed in the
Providers section of the file. The default values are specified in the beginning of the file,
using the prefix "Default" in each parameter as shown below:
[Providers]
DefaultSaveMSec=3
DefaultAssembly=System.Data
DefaultConnectionClass=System.Data.OleDb.OleDbConnection
DefaultDataAdapterClass=System.Data.OleDb.OleDbDataAdapter
DefaultCommandBuilderClass=System.Data.OleDb.OleDbCommandBuilder
DefaultValueString=@Value
DefaultValueAddNumber=1 DefaultBoolType=INTEGER
DefaultIntegerType=INTEGER DefaultRealType=REAL
DefaultStringType=VARCHAR(255) DefaultTimeStampType=DATETIME
DefaultSingleConnection=0
Count=5
The providers are identified by the "Provider" parameter followed by a number. When
connecting to a database, the Provider parameter in the connection string is compared to
the provider's identification, in order to determine which provider will be used. If there is no
provider with the value on the connection string, all the default values are assumed. Besides
its identification, each provider can have its own value per each parameter. Again, if no value
is specified, the default is used. Below is an example with seven providers:
Count=7
Provider1=MICROSOFT.JET.OLEDB
SaveMSec1=3
ColumnDelimiterPrefix1=[
ColumnDelimiterSuffix1=]
SingleConnection1=1
Provider2=SQLOLEDB
ConnectionClass2=System.Data.SqlClient.SqlConnection
DataAdapterClass2=System.Data.SqlClient.SqlDataAdapter
CommandBuilderClass2=System.Data.SqlClient.SqlCommandBuilder
ColumnDelimiterPrefix2=[
ColumnDelimiterSuffix2=]
TableDelimiterPrefix2=[
TableDelimiterSuffix2=]
RealType2=FLOAT
Provider3=MSDASQL
ConnectionClass3=System.Data.Odbc.OdbcConnection
DataAdapterClass3=System.Data.Odbc.OdbcDataAdapter
CommandBuilderClass3=System.Data.Odbc.OdbcCommandBuilder
ValueString3=?
ValueAddNumber3=0
StringType3=VARCHAR(128)
EnableTop3=0
Provider4=ORAOLEDB
Assembly4=System.Data.OracleClient
ConnectionClass4=System.Data.OracleClient.OracleConnection
DataAdapterClass4=System.Data.OracleClient.OracleDataAdapter
CommandBuilderClass4=System.Data.OracleClient.OracleCommandBuilder
ValueString4=Value
ValueAddNumber4=1
ValueStringPrefix4=:
BoolType4=Number(1)
IntegerType4=Number(10)
RealType4=Number
StringType4=VARCHAR(255)
TimeStampType4=TIMESTAMP(0)
EnableTop4=0
Provider5=ASAPROV
Assembly5=iAnywhere.Data.AsaClient
ConnectionClass5=iAnywhere.Data.AsaClient.AsaConnection
DataAdapterClass5=iAnywhere.Data.AsaClient.AsaDataAdapter
CommandBuilderClass5=iAnywhere.Data.AsaClient.AsaCommandBuilder
ValueString5=?
ValueAddNumber5=0
ColumnDelimiterPrefix5=[
ColumnDelimiterSuffix5=]
TableDelimiterPrefix5=[
TableDelimiterSuffix5=]
Provider6=MYSQLPROV
Assembly6=ByteFX.MySqlClient
ConnectionClass6=ByteFX.Data.MySqlClient.MySqlConnection
DataAdapterClass6=ByteFX.Data.MySqlClient.MySqlDataAdapter
CommandBuilderClass6=ByteFX.Data.MySqlClient.MySqlCommandBuilder
ValueString6=@Value
ValueAddNumber6=1
StringType6=VARCHAR(128)
EnableTop6=0
Provider7=MSDAORA
Assembly7=System.Data.OracleClient
ConnectionClass7=System.Data.OracleClient.OracleConnection
DataAdapterClass7=System.Data.OracleClient.OracleDataAdapter
CommandBuilderClass7=System.Data.OracleClient.OracleCommandBuilder
ValueString7=Value
ValueAddNumber7=1
ValueStringPrefix7=:
BoolType7=Number(1)
IntegerType7=Number(10)
RealType7=Number
StringType7=VARCHAR(255)
TimeStampType7=TIMESTAMP(0)
EnableTop7=0
Database Configuration
The Database Configuration dialog allows you to configure the necessary settings to link
Visual Designer to an external database file.
• Database combo-box: Allows you to select either Primary or Secondary. With Primary, all
settings displayed in the Database Configuration window apply to the Primary Database
interface. Otherwise, they apply to the Secondary Database interface. You can configure
the Secondary database in the following modes:
• Disabled: In this mode, Visual Designer saves data in the Primary Database only. If
the Primary Database is unavailable for any reason, the data is not saved anywhere
else. This option may cause loss of data if the Primary Database is not available.
• Redundant: In this mode, Visual Designer saves data in both Primary and Secondary
Databases. If one of these databases is unavailable, Visual Designer keeps saving
data only in the database that is available. When the database that was unavailable
becomes available again, Visual Designer synchronizes both databases automatically.
• Store and Forward: In this mode, Visual Designer saves data in the Primary
Database only. If the Primary Database becomes unavailable, Visual Designer saves
the data in the Secondary Database. When the Primary Database becomes available
again, Visual Designer moves the data from the Secondary Database into the Primary
Database.
Note: The Primary and Secondary can be different types of databases. However, they
must have the same fields.
Using the Secondary Database, you can increase the reliability of the system and use
the Secondary Database as a backup when the Primary Database is not available. This
architecture is particularly useful when the Primary Database is located in the remote
station. In this case, you can configure a Secondary Database in the local station to save
data temporarily if the Primary Database is not available (during a network failure, for
instance).
• Use project default checkbox: When this option is checked, Visual Designer uses
the settings configured in the Default Database for the task that is being configured
(Connection string, User name, Password, Retry Interval and Advanced Settings). When
this option is not checked, you can configure these settings individually to the current
task.
• Connection string field: This field defines the database where Visual Designer will write
and read values as well as the main parameters used when connecting to the database.
Instead of writing the Connection string manually, you can press the browse button (…)
and select the database type from the Data Link Properties window.
Note: The list of Database Providers shown in the Data Link Properties window depends
on the providers actually installed and available in the computer where you are
running Visual Designer. Consult the operating system documentation (or the
database documentation) for further information regarding the settings of the
Provider for the database that you are using.
• User name field: User name used to connect to the database. The user name configured
in this field must match the user name configured in the database.
• Password field: Password used to connect to the database. The password configured in
this field must match the password configured in the database.
• Retry Interval field: If Visual Designer is unable to connect to the database for any
reason, it retries automatically to connect to the database after the number of seconds
configured in this field have passed.
• Advanced button: After pressing this button, you have access to customize some
settings. For most projects, the default value of these settings do not need to be
modified and should be kept.
• Milliseconds combo box: You can configure how the milliseconds will be saved
when saving the date in the database. Each database saves the date in different
formats; for example, some databases do not support milliseconds in a Date field.
The following options are available:
• Default: Uses the format pre-defined for the current database. The databases
previously tested by Eaton are previously configured with the most suitable
option. When selecting Default, Visual Designer uses the setting pre-configured
for the current database type. If you are using a database that has not been
previously configured, the Default option attempts to save the milliseconds in a
separate field.
Note: The default option for each database is configured in the StADOSvr.ini
file, stored in the \BIN sub-folder of Visual Designer. See Studio Database
Gateway for information about how to configure the StADOSvr.ini file.
• Disable: Does not save the milliseconds at all when saving the date in the
database.
• Enable: Saves the milliseconds in the same field where the date is saved.
• Separate Column: Saves the milliseconds in a separated column. In this case,
the date is saved in one field (without the milliseconds precision) and the number
of milliseconds is saved in a different column. This option is indicated where you
want to save timestamps with the precision of milliseconds but the database that
you are using does not support milliseconds for the Date fields.
• Save time difference checkbox: When this option is checked (default), Visual
Designer saves the Time Zone configured in the computer where the project is
running in each register of the database. This option must be enabled to avoid
problems with daylight savings time.
• Database Gateway: Enter the Host Name/IP Address where the Visual Designer
Database Gateway will be running. The TCP Port number can also be specified, but if
you are not using the default, you will have to configure the Visual Designer Database
Gateway with the same TCP Port. See the Studio Database Gateway section for
information about how to configure the advanced settings for the Visual Designer
ADO Gateway.
• Disable Primary Keys: For some modules, Visual Designer will try to define a
primary key to the table in order to speed up the queries. If you are using a database
that does not support primary keys (e.g., Microsoft Excel), then you should select
(check) this option
Table Pane
This area allows you to configure the settings of the Table where the data will be saved. All
tasks can share the same database. However, each task (Alarm, Events, Trend worksheets)
must be linked to its own Table. Visual Designer does not check for invalid configurations on
this field, therefore you should make sure that the configuration is suitable for the database
that you are using.
• Use default name checkbox: When this option is checked (default), Visual Designer
saves and/or retrieves the data in the Table with the default name written in the Name
field.
• Automatically create checkbox: When this option is checked (default), Visual Designer
creates a table with the name written in the Name field automatically. If this option is not
checked, Visual Designer does not create the table automatically. Therefore, it will not
be able to save data in the database, unless you have configured a table with the name
configured in the Name field manually in the database.
• Name: Specifies the name of the Table from the database where the history data will be
saved.
Note: To specify a sheet in a Microsoft Excel spreadsheet file, use the following syntax:
[sheetname$]
• Refresh button: If the database configured is currently available, you can press the
Refresh button to populate the Name combo-box with the name of the tables currently
available in the database. In this way, you can select the table where the history data
should be saved instead of writing the Table name manually in the Name field.
Run-Time Pane
This area allows you set runtime values. The following fields are available:
• Status (output) checkbox: The tag in this field will receive one of the following values:
Value Description
0 Disconnected from the database. The database is not available; your configuration is incorrect or
it is an illegal operation.
1 The database is connected successfully.
2 The database is being synchronized.
• Reload (output): Specify a reload tag if you are using curly brackets in any of the
configuration fields. When you want to reconnect to the database using the updated
values on your tags, set the tag on this field to 1. Visual Designer will update the
configuration when trying to perform an action in the database, setting the tag back to 0
when it is finished.
See also:
Configuring a Default Database for All Task History.
Please refer to Database Configuration dialog for help completing the fields in this window.
Database Troubleshooting
Visual Designer database interface provides powerful tools that will help you to identify
configuration problems with databases. If you are having problems interfacing with a
database, you should first enable the Database Messages in the Logwindow. You can do so
by following the steps below:
1. In the Visual Designer Development environment, make sure to show the Output
window (Output Window check box on the View tab of the ribbon).
2. Right-click in the Outputwindow (usually located in the lower-right corner of the
development environment), and then click Settings on the shortcut menu:
After enabling this option, the Output window will display error messages related to the
database. The FAQ section below lists some common errors that you can see in the Output
window.
GENERAL QUESTIONS
Q: I configured my database, but the runtime modules (Alarm, Trend, and Events) are not
being saved to the database. I only see the following error message in the Output window:
[StDB]
MaxConnections=number_of_connections
Keep in mind that increasing the maximum number of connections may decrease project
performance.
Q: I configured my Connection String using the browser and the Data Link Properties
Window. When I click the Test button, it says "Test succeeded". However, when I run my
project, the Database Interface displays error messages, and I am not able to save data.
A: The Data Link Properties Window uses OLE DB to interface with the Database. Visual
Designer Database Interface uses ADO.NET; therefore, you can have the OLE DB provider
on your machine and be missing the ADO.NET provider. It is also possible that you are
using an ADO.NET provider that is not listed in the StADOSvr.ini file. Please refer to
Studio Database Gateway for more information about adding ADO.NET providers to the
StADOSvr.ini file.
Q: Why, when I update information in one line in the Grid object, is it updating more than
one line in my database?
A: The grid object issues an update command in the database using the values in all the
columns for the specific row that you are trying to update. If you have rows with duplicate
values, you might see this problem. If your table has a primary key or any other unique field
that you do not want to display in the Grid object, you can add it to the Columns but specify
the Width 0. This will fix the problem.
Q: Why do I have to use a separate Column to store the milliseconds on my database?
A: Some databases do not support milliseconds in the Time Stamp field. Visual Designer
Database interface, by default, requires another column for the milliseconds. If your
database can handle milliseconds, or if you do not want to record the milliseconds, you can
change the default behavior in the Advanced settings. Note that some databases are able
to store milliseconds, but they have lower precision. If you mix different databases with
different precisions in redundant mode, you can get synchronization problems.
Q: My project works fine when I run in emulation mode. But when I send to the Windows
Embedded device, it cannot communicate with my database.
A: It might be the case that your Windows Embedded device does not have the .Net
Framework or that it does not have the provider that you are using. Try to use the gateway
remotely by following the instructions in Linking the Database Through a Remote DB
Provider.
Q: When I try to connect to the database, why do I receive the message, Error to
create connection class?
A: The .Net Provider that you are trying to use is not installed on your machine. This error
message is usually followed by the provider name; if you are using the Sybase database, for
instance, the message is followed by [iAnywhere.Data.AsaClient.AsaConnection].
The Provider is the iAnywhere.Data.AsaClient. You can check if the provider is installed on
your machine by going to the Control Panel > Administrative Tools > Microsoft .Net
Framework x.x Configuration. The provider should be listed in the Assembly Cache.
Q: What if I have the provider assembly (usually a .dll file) but it is not listed in the
AssemblyCache?
A: If your assembly has a strong name, you can register it in the Assembly Cache using
the gcautil program. Or it should work if you copy your assembly to the same folder as the
StADOSvr.exe (usually the […]\EATON\Visual Designer\Bin folder).
Q: I am not able to access my table from the Grid when I use a specific condition. But if no
condition is applied, it works fine. Why is that?
A: You should check for the following items:
1. Follow the Troubleshooting steps, and look for error messages in the log. An error
message can tell you if you have made a mistake, such as entering with a wrong column
name or specifying an invalid data format.
2. Some databases have problems when you use reserved words as column names.
Therefore, you should avoid using column names such as Time, Date, Numeric, etc.
3. If your column name starts with AND or OR (e.g., ORange), enter the name surrounded
by square brackets. For example, instead of ORange=10, enter [ORange]=10.
4. If you are using SQL Server CE, you might have some problems when querying string
fields. It has been identified that filters do not work with NCHAR data types; however,
they do work if you declare these fields as NVARCHAR(<Number>). You might try to
recreate your table by using this data type. An example of a command that creates a
table with strings that can be queried is displayed below:
server name. For instance, the server name specified by 192.168.89.98, has 13 characters, it
could be reduced to 3 by adding the following line in the file:
192.168.89.98 ora
Now you can configure the Server Name configuration using ORA/TNS instead of
192.168.89.98/TNS.
MYSQL
Q: When I try to access the database from my local machine it works fine, but when I move
my project to a remote machine, it says Access Denied.
A: Each user on a MySQL database has a property associated with it that indicates the
computer fromwhich it can get access to the database. By default, this property is set to
localhost, so you will only be able to access the database if you are accessing from the
local computer. You should read the MySQL manual for information about changing this
setting.
Q: Sometimes when I try to synchronize a remote MySQL database with a local MySQL
database, or if I try to use application redundancy, a connection to the ADO.NET interface is
opened and never closed.
A: Go to the Database Configuration dialog and uncheck the Automatically Create option.
SYBASE
Q: I configured my Sybase database using the Browse button. When I click the test button,
the test succeeds, but when I try to run my project I get the following error: Database:
Error: Parse error: DSN 'MyDatabase' does not exist. What am I doing
wrong?
A: Please refer to Database Appendix F - Using Sybase for more information about this
problem.
Q: Why, when I try to connect to the Sybase database, am I receiving the error Error to
create connection class [iAnywhere.Data.AsaClient.AsaConnection]?
A: You do not have the ADO.NET Provider installed on your computer. The database setup
program has an option to install the Provider. Rerun the setup program, and make sure to
check that option.
SQL SERVER CE
Q: Why does the gateway show TypeLoad failure when I try to access my SQL Server
CE database?
A: This problem usually happens when you do not have the SQL Server CE .NET Provider
installed on your CE Device.
Q: Why am I getting the error message, There is a file sharing violation. A
different process might be using the file?
A: You have another progarm with the SQL Server CE database open. For instance, this will
happen if you are using the SQL Server CE configuration software.
Appendices
Note: Microsoft .NET Framework 2.0 is automatically installed with Visual Designer
v6.1+SP5 and later.
The Database Configuration dialog allows you to provide connection strings that will connect
to an ODBC DSN. The connection string can be built automatically by clicking on the Browse
button (…). When the Data Link window displays, you should select the option Microsoft
OLE DB Provider for ODBC Drivers as shown below:
Select the DSN that you want to connect to and click OK. If you want to specify the user
name and password on this window instead of specifying on the Object Properties dialog,
remember to check the Allow saving password checkbox.
2. Select the Microsoft OLE Provider for SQL Server and click Next. The following window
will display:
3. Fill out the fields on this window with your database information. If you are not using
Windows NT Integrated security, remember to check the Allow saving password
checkbox to save the password when the Data Link Properties window is closed.
Note: These procedures were tested using Microsoft SQL Server 2000.
2. Select the Microsoft OLE Provider for Oracle and click Next. The following window will
display:
3. Fill out the fields on this window with your database information. Remember to check
the Allow saving password checkbox to save the password when the Data Link
Properties window is closed. The server name information has the following format:
Server/TNS
Where:
• Server: Computer where the Oracle Database is running
• TNS: Oracle TNS name
CAUTION
At the time that this document was written, the Server Name field could not be
configured with more than 16 letters. If more than 16 letters were specified, you would
receive the following error: ORA-00162: external dbid length 19 is greater
than maximum (16), where 19 is the number of letters in the Server Name. Please
see Database Troubleshooting for more hints to work around this problem.
4. Click OK to finish the Connection String configuration.
Note: These procedures were tested using ORACLE 10g Release 1.
1. In the Database Configuration property sheet, click the Browse button (…).
The Data Link Properties property sheet is displayed:
4. In the Data Source text box, type the complete file path for your ACCDB file.
Although the file can be located anywhere on your computer or network, it may be useful
to keep it in your project folder. For example:
If you do this, however, then you must update the file path whenever you move the
project folder.
5. Specify the User name and Password, if any, for the ACCDB file.
6. Click Test Connection.
If a connection can be successfully established, then an appropriate message is
displayed.
7. Click OK to save your changes and return to the Database Configuration property
sheet.
Note: Be sure to select (check) the Disable Primary Keys option in the Database
Configuration dialog. If you do not, then Visual Designer will not be able to connect
to your Access database
IMPORTANT
Desktop office applications such as Microsoft Access and Microsoft Excel cannot efficiently
handle large amounts of data. If you try to save all of your project's historical data in an
Access database or Excel spreadsheet, then the queries will become slow and you might
get unexpected results. Therefore, we recommend that Access or Excel be used only as a
Secondary Database, with the Store and Forward option enabled, or to relay data to third-
party software.
To handle large amounts of historical data, we recommend that you use either Visual
Designer's proprietary format or a dedicated relational database such as Microsoft SQL
Server or ORACLE.
Note: The database interface was fully tested with these versions of SQL CE. However,
other versions might also be supported; please contact Customer Support for more
information.
Examples:
• Access a database file at the fixed location \Harddisk\MyDatabase.sdf:
The exact path depends on how your device's non-volatile memory is organized. Please
consult the manufacturer's documentation.
• Access a database file at the location specified by the String tag DatabaseFile:
CAUTION
When using a Database worksheet or the DB/ERP functions to access a SQL CE database,
remember…
• Column/field names must match exactly or the database commands will fail; and
• Visual Designer data types will be converted into possibly unexpected SQL data types.
The following table shows how they're converted:
Using Sybase
You need to install the AsaClient provider on your computer; the tests with Visual Designer
were performed using the architecture explained in the topic Linking the Database Through a
Remote DB Provider.
If you are using the browse button to automatically generate the connection string, the string
returned will have the following format:
This format requires that you create an ODBC DSN with the same name as the Data Source
(in this case, Test) in order to communicate with the database. If the DSN is not created, the
following error will display in the LogWin when connecting to the database:
To void an ODBC DSN, you can enter with the connection string manually as shown in the
example below:
Note: These procedures were tested using Sybase Server Anywhere 9.0.1.1751.
You do not need to have Excel installed on the same computer as Visual Designer; Visual
Designer can directly read from and write to an existing XLS/XLSX file. However, you do
need to use Excel to create the initial file — either a blank spreadsheet for new data or a
populated spreadsheet for reference data. Once you've created the file, you can move it to
any location and establish a connection to it there.
Note: This procedure was last tested using Microsoft Excel 2007 (12.0.6331.5000).
To establish a connection between your Visual Designer project and your XLS/XLSX file:
1. In the Database Configuration property sheet, click the Browse button (…).
The Data Link Properties property sheet is displayed:
4. In the Data Source text box, type the complete file path for your XLS/XLSX file.
Although the file can be located anywhere on your computer or network, it may be useful
to keep it in your project folder. For example:
If you do this, however, then you must update the file path whenever you move the
project folder.
5. Click the All tab.
6. Select Extended Properties and then click Edit Value.
The Edit Property Value dialog is displayed.
7. In the Property Value text box, type one of the following values:
• For a Microsoft Excel 2003 spreadsheet file, type Excel 11.0.
• For a Microsoft Excel 2007 spreadhseet file, type Excel 12.0.
IMPORTANT
Desktop office applications such as Microsoft Access and Microsoft Excel cannot efficiently
handle large amounts of data. If you try to save all of your project's historical data in an
Access database or Excel spreadsheet, then the queries will become slow and you might
get unexpected results. Therefore, we recommend that Access or Excel be used only as a
Secondary Database, with the Store and Forward option enabled, or to relay data to third-
party software.
To handle large amounts of historical data, we recommend that you use either Visual
Designer's proprietary format or a dedicated relational database such as Microsoft SQL
Server or ORACLE.
Using MySQL
Visual Designer can interface with MySQL databases, but to do so, you must install an
ADO.Net provider for MySQL.
The provider required by Visual Designer is MySQL Connector/Net, and at the time of this
writing, the necessary software can be downloaded from the official MySQL site. (Please
note that the linked site is beyond our control and may change without notice.)
Once the provider is installed, you can use the Database Configuration property sheet to
configure a MySQL database connection. However, unlike for other database types, you
cannot use the Data Link Properties dialog (which is accessed by clicking ... to the right of
the Connection string box) to form the connection string. Instead, you must directly enter
the connection string using this basic format:
Port=number; Specifies what port to use for the connection. The default
port is 3306, but any port can be specified as long as it
matches the server configuration.
If a port of -1 is specified, then the connection will use the
named pipes network protocol (see Protocol below).
Note: These procedures were tested using MySQL v5.1.11 and MySQL Connector/Net
v6.2.0.
Troubleshooting
General Troubleshooting
If you do find yourself in need of technical assistance, there are certain things that you will
need to know before you contact technical support. Regardless of the problem, you will
need to know the sequence of events that led to you discovering the problem. It must be
explained in as much detail as possible and you should be careful not to ad-lib, as it may
drastically affect troubleshooting time and procedures. It's also best to be in front of the
computer you are having problems with, and to keep a pen and paper handy.
Before Contacting Technical Support
Some things you should try before you contact technical support are:
• Check out the documentation
The application help and release notes can be accessed on the Help tab of the ribbon,
and more documentation is available on our website. You may find that your particular
issue has already been documented.
• Consider recent changes on your system
If something used to work, think about what may have changed. New software
installation or general system changes can affect performance and general functionality
of other software on your system.
• Try reproducing the problem in a new file
If the problem can not be reproduced in a new test file, compare the new file with your
original file to find and eliminate the differences. This will help narrow down the cause of
the issue.
• Try reproducing the problem on another machine
If the problem goes away on another machine, compare what is different between the
two systems. If this is the case, there is most likely a system conflict.
Verifying Your Project
If you change, reorder or delete any tags in the Tags database, or if you reconfigure any
settings in the Web tab of the Project Settings dialogue, then you must verify your project
to realign all of your screens and worksheets to the current state of your database. On the
Home tab of the ribbon, in the Tools group, click Verify.
Related Publications
The Visual Designer Getting Started Guide is designed for first-time users. This publication
contains information about the basic functions of Visual Designer, and it is provided in the
Documentation folder on the Visual Designer installation CD.
The driver User Guides explain how to configure the direct communication drivers, according
to their unique protocol characteristics. One customized user guide is included with
each driver. These publications are provided in the […]\EATON\Visual Designer
\Drv directory, or from the Help tab of the ribbon. (On the Help tab of the ribbon, in the
Documentation group, click Communication Drivers. When the Object Properties dialog is
displayed, highlight the driver you're using and then click Help.)
Please have this file ready to send to Technical Support for analysis.
When you contact us, please have your system information ready. You can get this by using
the Support Information command located in the Help menu.
If your problem or question is not urgent, you may choose to contact us through our Web
site at www.eaton.com.
parameters; however, the tag type must match the component parameter type
(Boolean, integer, string or real).
Q. How do I designate one screen that will open each time I start the project?
A. On the Project tab of the ribbon, in the Settings group, click Viewer, and then in the
Project Settings dialog, type the startup screen name in the Startup screen box.
Q. How do I insert a background picture on the screen?
A. Right click on the screen and select the option Screen Attributes from the popup menu.
Enable the checkbox Enable Background and choose the picture format in the combo-box
besides this label. Copy the picture file to the Screen sub-folder of the project and rename it
with the same name of the screen (ScreenName.scr file). Using the Shared image option,
it's possible to copy a bitmap file to the Screen sub-folder and share this picture with more
than one screen. In this case, it's necessary to type the bitmap name in the Shared image
field.
Tasks
Q. How do I convert the History Trend to an ASCII file?
A. To convert a History Trend file to an ASCII format, copy the file "StudioPath\bin
\hst2txt.exe" to the path "\project_name\hst\". Alternatively, you can use the
HST2TXT function in a Math worksheet to convert binary files into text format automatically
without having to use a DOS window.
Q. How do I exchange data with FOX Pro by an ODBC protocol?
A. When exchanging data with FOX Pro database, it's necessary to set the parameter
UseQuote=0 from the [ODBC] section in the project_name.app file.
Q. How do I set a DATE field for an ODBC interface with an Oracle package?
A. Configure the "Column" cells in the ODBC worksheet with the syntax ColumnName.ts
(for example: MyDate.ts ).
Q. How do I execute a Math worksheet during the startup and another Math worksheet
during the project shutdown?
A.
• Startup: Execute a Math worksheet during the startup by creating a Math worksheet
and filling in its Execution field with the expression <TagName>=0 (for example,
StartTag=0 ). In the last line of the Math worksheet, set the value 1 to the <TagName>
tag. The <TagName>tag type should be Boolean.
• Shutdown: Instead of executing the ShutDown() function directly, execute one
Math worksheet and configure the ShutDown() function in the last line of this Math
worksheet.
Communication
Q. How do I set a "communication error" alarm?
A. Configure a tag in the Write Status or Read Status field of the driver worksheets and
configure an alarm whenever this tag is not 0 (zero).
Q. How do I communicate with a Siemens S7-200 PLC without using Prodave software?
A. Siemens S7-200 PLC has a Freeport that can implement any protocol via PLC
programming. There is PLC free software distributed by Siemens that implements Modbus
protocol in the PLC Freeport (for further details contact Siemens support). Using this
software in the PLC with Visual Designer's Modbus driver (MODBU), you can exchange
information between them.
Q. How do I start and stop communication drivers during runtime?
A. There are three functions available to handle the execution of the communication drivers
during runtime:
For example:
Note: The Asc2Str(34) function is used to concatenate quotation marks for paths
where there are space chars.
• Stop a specific driver configured in the project: EndTask("DriverDriverName")
For example: EndTask("DriverMODBU")
Note: You can start or stop other tasks using the StartTask(TaskName) and
EndTask(TaskName) functions. For example, StartTaks("Viewer"),
Endtask("Viewer").
Q. What are the parameters of the Visual Designer DDE Server?
A. The Visual Designer DDE Server and NetDDE Server parameters are shown in the table
below:
Comm. Type Application Topic Item
For example:
='\PC\NDDE$'|'UNISOFT$'!second
Note:
• When running under Windows NT or Windows2000, it is necessary to make sure
that the services Network DDE and Network DDE DSDM are started. (Use the
Services shortcut from Control Panel to start these services).
• When running under Windows 98, it is necessary to run the program
WindowsPath etdde.exe in both computers (for example, c:\Windows
etdde.exe ).
Q. Is the Visual Designer OPC interface compliant with OPC specification v1.0a or v2.0?
A. The Visual Designer OPC Client and OPC Server modules are compliant with both OPC
specification v1.0a and v2.0.
Q. How do I get errors from Intellution / GE Fanuc iFIX applications?
A. If your project is communicating via TCP/IP with an iFIX application, then you should add
the following key to your project file (i.e., project_name.APP):
[TCP]
SetQualityToBadOnError=1
After you do this, if the iFIX application generates an error during runtime, then the quality of
the affected tags in your project will be set to BAD. You can get this information by reading
the Quality tag field (i.e., tagname->Quality).
General
Q. What operating systems are compatible with Visual Designer and CEView?
A. See table below. "N" means that the operating system is NOT supported, and "Y" means
that the operating system is supported.
Operating System Visual Designer CEView
v3.x thru v4.2 thru v6.1 or
Name Version v2.x v4.1 v6.0 higher v3.x v4.x v5.x v6.x
Q. How do I start Visual Designer automatically when the computer is powered on?
A. Create a shortcut to […]\EATON\Visual Designer\Bin\RunStudio.exe and then
place it in your Startup folder (C:\WINDOWS\Documents and Settings\All Users
\Start Menu\Programs\Startup\).
Q. How do I disable Dr. Watson?
A. The step-by-step procedure to disable Dr. Watson under Windows NT is described below:
1. Execute the program WindowsPath\RegEdit.exe (for example, C:\WinNT
\Regedit.exe )
2. Select the path HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT
\CurrentVersion\AeDebug
3. Set the value 0 (zero) to the parameter "Auto" from the path selected.
4. Close the Registry Editor window.
CAUTION
Special cautions must be taken when editing parameters in the Registry Editor program
because some of them can modify the overall behavior of the operating system.
There are two ways to modify the data format in Visual Designer:
• Off-Line: Set the parameters Order=<DateFormat> (for example, DMY ) and
Separator=Separator (for example, / or .) from the [International] section from the
[…]\EATON\Visual Designer\Bin\Program Settings.ini file.
Note: You will need to verify your project to apply date settings to previously saved Web
pages.
• On-Line: Use the function SetDateFormat( strSeparator, strDateFormat ). For
example, SetDateFormat("/","MDY").
Q. What features are not supported by CEView?
A. The main features not supported by CEView are: DDE, NetDDE, ODBC, PasteLink, and a
number of functions.
Q. How do I show a splashwindow when starting a project in CEView?
A. To enable your project to show a splash window during startup, add the following key to
the device's CEView.ini file:
[OEM]
SpashWnd = Path to bitmap File // default is Splash.bmp
SplashWndTime = Time in milliseconds // default is 1000
Q. How do I see runtime messages and errors on a "blind" Windows Embedded device —
that is, a device that has no display?
A. If the device has a network connection, then you can use the Remote LogWin tool to
view the device's messages as they are generated.
You can also save the messages to a dump file (dump.txt) and access the file at your
convenience. To create the file, add the following key to the device's CEView.ini file:
[OEM]
BlindDevice = 1
6. Open the project tags database and set the option Server instead of Local in the Scope
column for all tags that must exchange value between the Server and the Thin Client
station.
7. Verify the project (Verify on the Home tab of the ribbon) to update the HTML files with
these new settings.
8. If there is no Web Server running on the computer, copy the program
NTWebServer.exe from the Bin sub-folder of the program directory into the Web
directory (e.g., \project name\Web) and run it. The path where this Web Server
program is executed will be the root directory of the server. The Web Server is necessary
to export data (web files) in HTTP protocol to the Thin Clients.
9. Run the project on the Server station.
10. Using a browser (for example, Internet Explorer v4.1+SP1 or newer version) in the Thin
Client station, type the URL address to download the screen that had been saved in
HTML format (for example, http://ServerIPAddress/ScreenName.html).
Note: The Thin Client requires an ActiveX component ( ISSymbol.ocx ) to handle
the screens on the browser. If the Thin Client is connected to the Internet, this
component is downloaded and registered automatically. Otherwise, it's necessary to
copy it to the \OSPath\System32 directory of the Thin Client and register it by the
command regsvr32 ISSymbol.ocx. This file can be found in the \BIN folder from
the Visual Designer installation directory.
Q. How do I maintain communication between a Thin Client connecting via proxy and a Web
Gateway application running on Microsoft IIS?
A. Microsoft Internet Information Services (IIS) has a configuration option to keep HTTP
connections alive. When this option is enabled, it may conflict with Thin Clients that are
connecting via proxy. To disable this option:
1. Start Internet Services Manager.
2. In the Internet Information Services window, open the local server ( * server
name ).
3. Right-click on Default Web Sites and select Properties from the shortcut menu. The
Default Web Site Properties dialog is displayed.
4. Select the Web Site tab of the Default Web Site Properties dialog.
5. In the Connections pane of the Web Site tab, uncheck the HTTP Keep-Alives Enabled
option.
6. Click OK to save the change and close the dialog.
Q. How do I send an email from the Visual Designer project?
A. Follow the procedure below:
• Execute the function CNFEMail(strSMTP,strFrom,strPOP3,strUser,
strPassword,numTimeOut) to configure the overall parameters used to send emails.
After executing this function once, the parameters set by it are kept in the system until
the project is shut down. So, most projects execute this function just once, after starting
the project;
• Execute the function SendEMail(strSubject,strMessage,strTO) and/
or SendEMailExt(strSubject,strMessage,strTO,strCC,strBCC,
strFile1,...,strFileN) each time that an email message must be sent. The main
difference between both functions are listed in the next table:
Characteristic SendEmail SendEmailExt
Supports TO addresses Y Y
Supports CC addresses N Y
Supports BCC addresses N Y
Supports attached files N Y
Q. The runtime task (TCP/IP, OPC, DDE, ODBC, etc) does not work.
A. Make sure the runtime task is set to Automatic in the Execution Tasks dialog (Tasks on
the Home tab of the ribbon). Select a runtime task that must be executed (for example, TCP/
IP Server), click Startup, and then set it as Automatic.
Q. The browser from the Thin Client does not display the screen and launches a warning
message regarding ISSymbol.ocx.
A. Make sure the runtime task is set to Automatic in the Execution Tasks dialog (Tasks on
the Home tab of the ribbon). Select a runtime task that must be executed (for example, TCP/
IP Server), click Startup, and then set it as Automatic.
Q. The browser of the Thin Client launches an error message missing the ISSymbol.ocx
and does not display the screens from the Server.
A.ISSymbol.ocx is the ActiveX object used by the browser from the Thin Client to view
the web pages. If the Thin Client is connected to the Internet, the ISSymbol.ocx control is
automatically downloaded and registered in the Thin Client station. Otherwise, it's necessary
to copy it to the \WinNT\System32 folder of the Thin Client station and register it manually.
Once it is registered your browser will be able to see the pages.
Note: Use the command regsvr32 ISSymbol32.ocx to register the ActiveX component
in the Thin Client.
Q. The screens are shown on the Thin Client (Browser); however, the data (tags values) are
not read from the Server.
A. Make sure the parameter in the column Scope from the project tags database is set as
Server instead of Local. The tags set as Server keep the same value in the Server and in
the Thin Client (Browser). The tags set as Local have independent values in the Server and
in the Thin Client (Browser).
CAUTION
It's necessary to verify the project (Verify on the Home tab of the ribbon) after modifying the
tags settings. Otherwise, the changes will not be updated in the Web pages.
Q. The "On Up" expressions configured in the Command animation are not executed.
A. The "On Up" expressions from the Command animation are not executed if the mouse
pointer is dragged out the object area before releasing it. If the checkbox Release from the
Command Object Properties window is enabled, the On Up expression is executed even if
the mouse pointer is dragged out the object area before releasing it.
Q. The Trend History does not work after adding or removing tags in the Trend worksheet.
A. When a tag is inserted or removed FROM a Trend worksheet, the format of the
history files ( *.hst ) is modified. The same .hst file cannot have two different formats;
otherwise, the data will not be retrieved from it properly by the Trend object. If you need
to add or remove tags for history files, there are two valid procedures: Create a new Trend
worksheet or delete the old *.hst files.
Q. The value of indirect tags ( @TagName ) is not shown in the Thin client program.
A. When a screen is saved as HTML, Visual Designer saves a ScreenName.tagl file
in the \WEB subfolder. This file has the list of all tags configured in the screen (objects
and animations). When a screen is opened in the Thin Client browser, the tags listed in
the ScreenName.tagl are "enabled" for TCP/IP communication with the server station.
It provides an optimized communication between the server station and the Thin Client
stations.
When using indirect tags in this way ( @IndirectTag ), the tags pointed will not exchange
data with the Server, unless they had been configured in the screen. In other words, the
tags that will be pointed in the screen MUST be configured in any object of the screen to
enable the TCP/IP communication for these tags with the server station.
Note: Add a transparent rectangle (no fill and no line) in the screen corner. Apply the
Command animation to this rectangle and configure the tags (which can be pointed by
indirect tags during runtime in the Thin Client station) in the Expression fields (keep
the Tag Name fields blank). These tags will be added to the ScreenName.TAGL file,
and they will be available for TCP/IP communication with the Server station.
Q. Which functionalities are not supported by PocketPC platforms (for example, IPaq,
Cassiopeia, Jornada)?
A. Windows CE devices powered PocketPC do not support some functionality which are
supported by Windows CE devices powered by the "standard" Windows CE version:
Functionality not supported by PocketPC devices
DCOM (Distributed Component Object Model): It means that all features based on DCOM (for example, remote OPC
communication) are not supported by PocketPC devices.
DialGetClientIP() function does not work for PocketPC devices
Q. How do I enable the "Hibernate" options from the operating system after installing Visual
Designer on a notebook?
A. Follow the procedure below:
1. Run the Registry Editor ( <Start button>\Run egedit ).
2. Select the following path from the Registry Editor: HKEY_LOCAL_MACHINE\System
\CurrentControlSet\Services\ Proteq\Parameters
3. The IoPortAddress parameter from the path mentioned above is set with the
hexadecimal value, 0x00000111. Set this parameter with the hexadecimal address of
the LPT1 parallel port of your notebook (for example, 0x00000378 ).
4. Close the Registry Editor and reboot the computer.
Note: The Hexadecimal address of the LPT1 parallel port of the notebook can be gotten
from the Control Panel ( System\Hardware\Device Manager\Ports (COM &
LPT)\Printer Port (LPT1)\Properties\Resources ). Pick the initial address
of the I/O Range. Usually it is the hexadecimal address 0x00000378.
The Help menu commands and options are discussed on the following pages.
• Technical Reference
• Home Page
• Release Notes
• Communication Drivers
• Support Information
• About
Technical Reference
To open the help system for the Visual Designer software, click Help on the Help tab of the
ribbon.
Note: This documentation is also available as a PDF on the Visual Designer installation CD.
License Agreement
To display a PDF copy of the Visual Designer software license, click License Agreement on
the Help tab of the ribbon.
Release Notes
To view the release notes for Visual Designer, click Release Notes on the Help tab of the
ribbon.
The release notes are distributed as a styled XML file, so you must have an XML-capable
browser like Internet Explorer 7 or Internet Explorer 8 to view the file as intended.
Home Page
To go to the Eaton company site, click Product Web Site on the Help tab of the ribbon.
Communication Drivers
To see the available documentation for the communication drivers, click Communication
Drivers on the Help tab of the ribbon.
From this dialog, you can select an installed driver then click the Help button to open Adobe
Acrobat® Reader™ and display a detailed document about that driver in PDF format.
Support Information
The Support Information dialog displays basic information about your computer's operating
system, your Visual Designer installation and license, and your project settings. If you need
to contact Customer Support, then you should have this information ready to answer their
questions.
To open the dialog, click Support on the Help tab of the ribbon. The dialog will be displayed:
To copy the information to the Clipboard, click Copy. You can then paste the information into
another window or text field, such as the body of an email message.
To save the information to a file, click Save to File. A standard Save As dialog will be
displayed.
When you are done, click Close.
About
To get more information about the Visual Designer software, click About on the Help tab of
the browser.
This section describes the functions that make up the built-in scripting language. Each
function description includes complete syntax, possible returned values, and examples of
usage.
0101 (decimal 5)
AND 0011 (decimal 3)
= 0001 (decimal 1)
| X | Y Bitwise OR:
0101 (decimal 5)
OR 0011 (decimal 3)
= 0111 (decimal 7)
^ X ^ Y Bitwise XOR:
0101 (decimal 5)
XOR 0011 (decimal 3)
= 0110 (decimal 6)
~ ~ X Bitwise NOT:
0110 (decimal 6)
ROTATE RIGHT
= 0011 (decimal 3)
0110 (decimal 6)
ROTATE LEFT
= 1100 (decimal 12)
Note: For more complex logic, try the Logical and Loop functions.
Arithmetic operators
Operator Usage Description
+ X + Y Add (plus)
- X - Y Subtract (minus)
* X * Y Multiply by
/ X / Y Divide by
Arithemtic operators are resolved from left to right according to the standard order of
evaluation. To change the order, enclose in parentheses the part of the equation to be
resolved first. For example, the following equation produces a result of 11 because
multiplication is evaluated before addition; the equation multiplies 2 by 3 and then adds 5 to
the result:
5+2*3
In contrast, if you use parentheses to change the syntax, 5 and 2 are added together and
then multiplied by 3 to produce 21:
(5+2)*3
Note: For more complex math, try the Arithmetic, Statistical, Logarithmic and Trigonometric
functions.
• Asynchronous means that the function can be executed on either the project server
or the project client without waiting for the other. The project continues to run without
interruption.
Finally, the function is either supported or unsupported on each of the target system types:
• Windows includes Server and Client stations running on a full desktop or server version
of Microsoft Windows.
• Embedded includes Server and Client stations running on some version of Windows
Embedded.
• Thin Client includes Client stations running the Secure Viewer program or in a Web
browser.
For more information about these system types, see System Requirements.
Syntax diagram and parameters
A basic syntax diagram shows how the function should be entered and what parameters it
takes.
In most cases, a parameter can take either a literal value or the name of a project tag that
contains the value. The data type of the parameter is indicated by its prefix:
• bool means the parameter can take either a literal Boolean value or the name of a
Boolean tag. For example, either 0 or boolTag.
• num means the parameter can take either a literal numerical value or the name of an
Integer or Real tag. For example, either 45.6543 or numTag.
• str means the parameter can take either a text string enclosed in quotation marks or the
name of a String tag. For example, either "My string" or strTag.
The additional prefix opt indicates that a parameter is optional. If you do not specify a value
for the parameter, then the function will take the default value mentioned in the parameter
description.
In the few cases where a parameter must take a project tag or some other special input, it
will be fully explained in the parameter description.
Returned value
This section describes the value returned by the function, if any.
Some functions return a calculated value, depending on the nature of the function.
Other functions return an error code that indicates how well the function was executed. The
possible codes and their meanings are provided in a table.
Notes
This section describes any additional notes or cautions on the use of the function.
Examples
This section shows how the function can be called in your project. Multiple examples are
provided to show how the function can take both literal values and project tags, as well as
how the function may be called if it has optional parameters.
Trace
Trace is a built-in scripting function that displays a text message in the Output window. It
is typically used to debug the project.
Syntax
Trace(strOutputMessage)
strOutputMessage
The text of the message to be displayed.
Examples
Display static text that reports a specific event:
Trace(Date)
Concatenate static text, tag references, and function calls to form a complex message:
Trace("The current second of the minute is " + Second + " and the
system tick is " + GetTickCount() + " ms.")
Arithmetic functions
These functions are used to perform advanced arithmetic operations and bit manipulation on
numeric values.
Abs
Abs is a built-in scripting function that gets the absolute value of a specified numeric value.
Syntax
Abs(numValue)
numValue
The numeric value from which the function takes the absolute value.
Returned value
The absolute value of the specified numeric value.
Examples
Div
Div is a built-in scripting function that gets the dividend of two specified numeric values.
Function Group Execution Windows Embedded Thin Client
Div Arithmetic Synchronous Supported Supported Supported
Syntax
numNumerator
The numerator of the division operation.
numDenominator
The denominator of the division operation.
Returned value
This function returns the dividend only as a whole number. The remainder is omitted.
Note: Use the Mod function to get the remainder instead of the dividend.
Examples
Format
Format is a built-in scripting function that formats a numerical value and returns it as a
string.
Function Group Execution Windows Embedded Thin Client
Format Arithmetic Synchronous Supported Supported Supported
Syntax
Format(strFlag,numValue)
strFlag
A description of how the given numerical value should be formated, according to the
syntax %width.precisionFormat, where:
• width is the minimum number of characters to be returned by the function. If the
value to be returned is shorter than this, then it is padded with either blank spaces
(" ") or zeroes ("0"); see examples below. The value is not truncated even if the
result is longer than the specified width. Applicable for flags d, x, X, o, b, f, e, E, g,
G, s, c and h.
• .precision is the number of decimal places for a floating-point number. Applicable
for flags f, e, E, g and G.
• F is the specific format:
Format Description
d Decimal
x Hexadecimal (alphabetic characters in
lowercase)
Format Description
X Hexadecimal (alphabetic characters in
uppercase)
o Octal
b Binary
f Floating-point
e Scientific notation (e in lowercase)
E Scientific notation (E in uppercase)
g Rounded (e in lowercase, when
applicable)
G Rounded (E in uppercase, when
applicable)
s String
c ASCII character (i.e., the numerical value
is interpreted as an ASCII character code)
h Hour (hh:mm:ss)
Alternatively, the format can be set using the syntax ##.###, where the numerical
value is rounded to the specified number of decimal places.
numValue
The numerical value to be formatted.
Returned value
This function returns a string that contains the formatted numerical value.
Notes
Format is similar to the printf function in other programming languages, and it allows
most of the same formatting options. However, unlike printf, Format can be used to
format only one numerical value at a time.
This function is particularly useful for formatting values to be printed in reports.
Examples
GetBit
GetBit is a built-in scripting function that gets the value of a single bit in a numeric value.
Function Group Execution Windows Embedded Thin Client
GetBit Arithmetic Synchronous Supported Supported Supported
Syntax
tagName
The name of an Integer tag from which the bit value will be gotten.
Note: To directly specify the name of a tag, rather than take the value of the
tag, you must enclose the tag name in double-quotes. For example,
GetBit( "Second", 1 ).
numBitNumber
A numeric tag or value specifying the position (0…31) of the bit to get.
Returned value
Returns the value ( 0 or 1 ) of the specified bit.
Notes
You also can use the Bit field to read/write values from specific bits in an integer tag. For
example, enter Second->b0 to access the LSB (Least Significant Bit of the Second tag), and
Second->b31 to access the MSB (Most Significant Bit of the Second tag).
Examples
Tag GetBit( "numSource", 4 ) // If the tag numSource holds a value of 15, then
this function returns 0.
Tag GetBit( "numSource", 1 ) // If the tag numSource holds a value of 19, then
this function returns 1.
Mod
Mod is a built-in scripting function that gets the remainder from a division operation.
Syntax
numNumerator
Integer or Real tag containing the Numerator of the function.
numDenominator
Integer or Real tag containing the Denominator of the function.
Returned value
Returns the remainder (as a real number) after dividing numNumerator by
numDenominator.
Note: Use the Div function to get the whole number dividend of the operation.
Examples
Pow
Pow is a built-in scripting function that gets the result of raising a numeric value to a
specified exponent.
Syntax
numBase
Integer or Real tag containing the Base of the function.
numExponent
Integer or real tag containing the Exponent of the function.
Returned value
Returns the result of raising the base to the exponent.
Examples
ResetBit
Resets a single bit in an Integer tag to 0.
Syntax
tagName
The name of an Integer tag where the bit value will be reset.
Note: To directly specify the name of a tag, rather than take the value of the
tag, you must enclose the tag name in double-quotes. For example,
ResetBit( "Second", 1 ).
numBitNumber
A numeric tag or value specifying the position (0…31) of the bit to reset.
Returned value
0 No error
1 Invalid parameter
2 Tag does not exist
Notes
You can use the Bit field to read/write values from specific bits in an integer tag. For
example, enter Second->b0 to access the LSB (Least Significant Bit of the Second tag), and
Second->b31 to access the MSB (Most Significant Bit of the Second tag).
Examples
Round
Rounds numValue to the nearest integer.
Syntax
Round( numValue )
numValue
A Real tag that holds the value to be rounded.
Returned value
Returns the integer result of the round function.
Examples
SetBit
Sets a single bit in an Integer tag to 1.
Syntax
tagName
The name of an Integer tag where the bit value will be set.
Note: To directly specify the name of a tag, rather than take the value of the
tag, you must enclose the tag name in double-quotes. For example,
SetBit( "Second", 1 ).
numBitNumber
A numeric tag or value specifying the position (0…31) of the bit to set.
Returned value
0 No error
1 Invalid parameter
2 Tag does not exist
Notes
You can also use the Bit field to read/write values from specific bits of an integer tag. For
example, enter Second->b0 to access the LSB (Least Significant Bit of the Second tag), and
Second->b31 to access the MSB (Most Significant Bit of the Second tag).
Examples
Sqrt
Takes the square root of numValue.
Function Group Execution Windows Embedded Thin Client
Sqrt Arithmetic Synchronous Supported Supported Supported
Syntax
Sqrt( numValue )
numValue
Integer or Real tag to be square rooted.
Returned value
Returns the square root of the value in the numValue tag.
Note: If numValue has a negative value, then this function returns the value 0 and sets the
quality of the returned tag to BAD.
Examples
Swap16
Swaps the two lower bytes of a tag.
Function Group Execution Windows Embedded Thin Client
Swap16 Arithmetic Synchronous Supported Supported Supported
Syntax
Swap16( numValue )
numValue
Integer tag that holds the numeric value of the bytes to be swapped.
Returned value
Returns the numeric value after swapping the bytes.
Examples
Swap32
Swaps two words in a tag.
Function Group Execution Windows Embedded Thin Client
Swap32 Arithmetic Synchronous Supported Supported Supported
Syntax
Swap32( numValue )
numValue
Integer tag that holds the numeric value of the words to be swapped.
Returned value
Returns the numeric value after swapping the words.
Examples
Trunc
Truncates the value of numValue.
Function Group Execution Windows Embedded Thin Client
Trunc Arithmetic Synchronous Supported Supported Supported
Syntax
Trunc( numValue )
numValue
Real tag to be truncated.
Returned value
Returns the integer portion of the real number value of numValue.
Examples
Statistical functions
These functions are used to get certain statistics — such as average, maximum, and
minimum — from two or more numeric values.
Avg
Calculates the average value of a set of numbers.
Function Group Execution Windows Embedded Thin Client
Avg Statistical Synchronous Supported Supported Supported
Syntax
Max
Returns the maximum value of a set of numbers.
Syntax
numValue (1…N)
Integer or Real tags containing the numbers to be analyzed.
tagArray
Name of array tag (Real or Integer) containing the values to be analyzed.
numSample
The number of array elements to be analyzed.
optNumIgnore
Integer or Real tags containing the value to be ignored in the analysis.
Returned value
Returns the maximum value of the set.
Examples
Min
Returns the minimum value of a set of numbers.
Syntax
Examples
Rand
Generates a random number between 0 and 1.
Function Group Execution Windows Embedded Thin Client
Rand Statistical Synchronous Supported Supported Supported
Syntax
Rand()
Logarithmic functions
These functions are used to perform logarithmic operations on numeric values.
Exp
Calculates the value of e (2.718282) raised to the power of numValue.
Function Group Execution Windows Embedded Thin Client
Exp Logarithmic Synchronous Supported Supported Supported
Syntax
Exp(numValue)
numValue
Integer or Real tag containing the exponent of e.
Returned value
Returns the value of e^( numValue ).
Examples
Log
Calculates the natural log of numValue.
Syntax
Log(numValue)
numValue
Integer or Real tag from which the natural log is taken.
Returned value
Returns the value of ln( numValue ).
Note: If numValue has a negative value, then this function will return the value 0 and it will
set the quality of the returned tag to BAD.
Examples
Log10
Calculates the log base 10 of numValue.
Syntax
Log10(numValue)
numValue
Integer or Real tag, from which the log base 10 is taken.
Returned value
Returns the value of log10( numValue ).
Note: If numValue has a negative value, then this function will return the value 0 and it will
set the quality of the returned tag to BAD.
Examples
Logical functions
These functions are used to perform logical operations (e.g., if/then, true/false) on tags and
expressions.
False
Determines whether the specified tag or expression is logically false.
Function Group Execution Windows Embedded Thin Client
False Logical Synchronous Supported Supported Supported
Syntax
False(TagOrExpression)
TagOrExpression
Tag or expression to be used in the function.
Returned value
Note: You may find this function useful if you need to return an actual value of 0 when the
expression returns some value other than 0.
Examples
If
Determines whether the contents of numExpression are logically true, then returns the
value of numThen or optNumElse accordingly.
Function Group Execution Windows Embedded Thin Client
If Logical Synchronous Supported Supported Supported
Syntax
numExpression
Tag or expression used as the condition in the function.
numThen
Tag or expression used if the condition is logically true.
optNumElse
Optional tag or expression used if the condition is logically false.
Returned value
Notes
The numExpression parameter can be a combination of logic statements (AND, OR, and NOT).
For example, If(TagA>TagB AND TagA=10,1,0).
The numThen parameter can be another function, including the If() function. Therefore,
you can use If() functions in cascade. For example, if(TagA>TagB,If(TagA<TagC,1,
2),3).
Examples
Toggle
Returns the toggled value from the contents of numValue tag.
Function Group Execution Windows Embedded Thin Client
Toggle Logical Synchronous Supported Supported Supported
Syntax
Toggle( numValue )
numValue
Boolean tag containing the value to be toggled.
Returned value
Numerical result (0 or 1) of the value to be toggled.
Notes
This function does not actually change the value of the tag, but it can be used in a command
or operation that does.
Examples
True
Determines whether the specified tag or expression is logically true.
Function Group Execution Windows Embedded Thin Client
True Logical Synchronous Supported Supported Supported
Syntax
True(TagOrExpression)
TagOrExpression
Tag or expression to be used in the function.
Returned value
Note: You may find this function useful if you need to return an actual value of 1 when the
expression returns some value other than 0.
Examples
String functions
These functions are used to manipulate text strings or convert them into numeric values.
Asc2Str
This function converts one or more Unicode character codes to a string.
Syntax
numChar (1-N)
A Unicode character code (in decimal).
Returned value
Returns a string comprising the converted codes.
Notes
Although the name of this function implies it only supports ASCII characters, it is in fact a
legacy of previous versions of the software. The current version supports the full Unicode
character set.
Examples
CharToValue
This function converts a string to Unicode character codes and then stores those values in
an integer array.
Syntax
CharToValue("tagString","tagArray")
tagString
The name of the string tag, whose value will be converted.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
tagArray
The name of the integer array that will receive the converted values. If no array index
is specfied, then the default is 0.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
Returned value
Returns the number of array elements used, which should be equal to the number of
characters in the string.
Examples
If StrTag = "ABC", then Array[0] = 65, Array[1] = 66, and Array[2] = 67:
If StrTag = "ABC", then Array[10] = 65, Array[11] = 66, and Array[12] = 67:
CharToValueW
This function converts a string to Unicode character codes, combines each two codes into a
double-byte word, and then stores those values in an integer array.
Syntax
CharToValueW("tagString","tagArray")
tagString
The name of the string tag, whose value will be converted.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
tagArray
The name of the integer array that will receive the converted values. If no array index
is specfied, then the default is 0.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
Returned value
Returns the number of array elements used, which should be equal to half the number of
characters in the string.
Notes
Because of how each two character codes are combined into single value, this function only
supports Unicode character codes 0 through 255. For character codes greater than 255, or
when double-byte words are not needed, use the CharToValue function.
Examples
If StrTag = "Studio", then Array[0] = 29779 ("St"), Array[1] = 25717 ("ud"), and Array[2] =
28521 ("io"):
If StrTag = "Studio", then Array[10] = 29779 ("St"), Array[11] = 25717 ("ud"), and Array[12] =
28521 ("io"):
ClassMembersToStrVector
Transfers values from a Class tag to an Array tag.
Syntax
strClassTag
String value containing the Class tag name.
numStartPos
Start position (array index) of strClassTag.
numNumPos
Number of positions (array indexes) to be transferred from strClassTag.
strArrayTag
String value containing the array tag that will receive the values from strClassTag.
optBooStartPosTarget
Start position (array index) of strArrayTag. If omitted, the default value 1 is used.
Returned value
Notes
If strClassTag has more than one member, the value of each member will be transferred to
strArrayTag. Therefore, it is importatnt to make sure that the array size of strArrayTag is big
enough to receive all values from strClassTag.
Examples
NCopy
Copies a defined section of a larger string.
Syntax
strSource
The source string.
numStartChar
Integer tag containing a number corresponding to the first character being copied.
numQtdChar
The number of characters to be copied.
Returned value
Returns a string that is part of the source string (as defined by the function).
Examples
Note: The first character in the string will be assigned the value 0.
Num
Converts a string into a float.
Syntax
Num( strValue )
strValue
The number of characters to be converted into float format.
Returned value
Returns the number (formerly in a string format) in float format.
Examples
Note: The float string cannot use characters other than the numbers (0..9) and a decimal
point (.), or the function returns the value 0.0.
Str
Converts a number into a string.
Syntax
Str( numValue )
numValue
Integer or float tag containing a number to be converted to a string.
Returned value
Returns the string, in a float format.
Examples
Str2Asc
This function onverts a character to its corresponding Unicode character code.
Syntax
Str2Asc(strChar)
strChar
The character to be converted.
Returned value
Returns the Unicode character code (in decimal) for the specified character.
Notes
Although the name of this function implies it only supports ASCII characters, it is in fact a
legacy of previous versions of the software. The current version supports the full Unicode
character set.
Examples
StrCompare
Compares two strings to see if they are identitical.
Syntax
strValue1
A string, or a tag of String type. This is the first string in the comparison.
strValue2
A string, or a tag of String type. This is the second string in the comparison.
Returned value
Examples
StrCompareNoCase
Compares two strings to see if they are identitical, ignoring the case of letters (i.e., the
lower-case "a" is considered to have the same value as the upper-case "A").
Syntax
strValue1
A string, or a tag of String type. This is the first string in the comparison.
strValue2
A string, or a tag of String type. This is the second string in the comparison.
Returned value
Examples
StrFromInt
Converts an integer into its string representation in another base number system, such as
binary (base-2) or octal (base-8).
Syntax
numValue
The numeric value to be converted into a string.
numBase
The base number system to convert into.
Returned value
This function returns a string representation of the given integer, in the specified base
number system. The returned value can be stored in any tag of String type.
Notes
You can specify a real number instead of an integer, but only the whole part of the number
will be converted. To convert the entire real number, use the StrFromReal function
instead.
Also, if you do not need to change the base, then use the Str function instead.
Examples
StrFromReal
StrFromReal is a built-in scripting function that converts a real numerical value to a string
value, in either floating-point or exponential notation.
Syntax
StrFromReal(numValue,numPrecision,{ strType | f | e | E })
numValue
The numerical value to be converted.
numPrecision
The number of decimal places to be shown in the resulting string. Please note that the
value will be rounded rather than truncated.
strType
A single-character code that specifies how the resulting string should be formatted, as
described in the following table:
Value of strType Description
Returned value
This function returns a string representation of the given numerical value, with the specified
precision and notation.
Examples
StrFromTime
Converts a timestamp from UTC standard notation into a formatted string, adjusted to reflect
the Time Zone setting in the Control Panel of the local computer.
Syntax
numUTCTime
An integer, or a tag of Integer type. A timestamp given in UTC standard notation.
numType
An integer, or a tag of Integer type. Specifies the format of the resulting string, as
described in the following table:
Value of
numType Description
1 Displays the date in the same format that is selected in the Control Panel on the local
computer.
2 Displays the time in the same format that is selected in the Control Panel on the local
computer.
3 Displays a standard 24-character string that shows both date and time.
4 Displays the abbreviated name of the day of the week.
5 Displays the full name of the day of the week.
Returned value
This function returns a string representation of the given timestamp, with the specified
formatting. The returned value can be stored in any tag of String type.
Notes
The Coordinated Universal Time (UTC) standard counts the number of seconds elapsed
since 12:00 AM GMT on January 1, 1970. Each day consists of 86,400 seconds.
Examples
Note: The examples below are for a computer set to Eastern Standard Time (or UTC
−05:00).
Tag Name Expression
StrGetElement
Gets a specific element from a string source.
Function Group Execution Windows Embedded Thin Client
String
StrGetElement Synchronous Supported Supported Supported
Syntax
strSource
The source string.
strDelimiter
Char used as delimiter between the elements.
numElementNumber
Number of the element which will be returned by the function. The first element has
the number 1. The second element has the number 2 and so forth.
Returned value
Returns the element (string value) retrieved from strSource.
Examples
StrLeft
Copies the first characters of a larger string.
Function Group Execution Windows Embedded Thin Client
StrLeft String Synchronous Supported Supported Supported
Syntax
strSource
The source string.
numQtdChar
The number of characters to be copied.
Returned value
Returns a string containing the left-most characters in the source string.
Examples
StrLen
Determines the length of a string.
Syntax
StrLen( strSource )
strSource
The string.
Returned value
Returns an integer that is the number of characters in the string.
Examples
StrLower
Converts a string to all lower case characters.
Syntax
StrLower( strSource )
strSource
The string to be converted.
Returned value
Returns the string, where all the characters are in lowercase.
Examples
Tag StrLower( "Studio version 7.0" ) // Returned value = "studio version 7.0"
Tag StrLower( "Technical Reference" ) // Returned value = "technical
reference"
StrRChr
Isolates the final occurrence of a character sequence within a string.
Function Group Execution Windows Embedded Thin Client
StrRChr String Synchronous Supported Supported Supported
Syntax
strSource
The source string.
strCharSequence
The reference string.
Returned value
Returns a string of characters following the last occurrence of a character within the source
string.
Examples
Tag StrRChr( "Studio version 7.0", "i" ) // Returned value = "ion 7.0"
Tag StrRChr( "Technical Reference", "n" ) // Returned value ="nce"
StrRight
Copies the last characters in a larger string.
Function Group Execution Windows Embedded Thin Client
StrRight String Synchronous Supported Supported Supported
Syntax
strSource
The source string.
numQtdChar
The number of characters to be copied.
Returned value
Returns a string containing the right-most characters in a source string.
Examples
StrSetElement
Sets a specific element in a string source.
Function Group Execution Windows Embedded Thin Client
String
StrSetElement Synchronous Supported Supported Supported
Syntax
strSource
The source string.
strDelimiter
Char used as delimiter between the elements.
numElementNumber
Number of the element where the string value will be written by the function. The first
element has the number 1. The second element has the number 2 and so forth.
strValue
String value that will be written to the numElementNumber of the strSource string tag.
Returned value
Returns the string value updated with the strValue.
Examples
StrStr
Isolates the first occurrence of a character sequence within a string.
Function Group Execution Windows Embedded Thin Client
StrStr String Synchronous Supported Supported Supported
Syntax
strSource
The source string.
strCharSequence
The reference string.
Returned value
Returns the string of characters following the first occurrence of a character within the
source string.
Examples
Tag StrStr( "Studio version 7.0", "i" ) // Returned value = "io version
7.0"
StrStrPos
Finds the first occurrence of a character within a string.
Function Group Execution Windows Embedded Thin Client
StrStrPos String Synchronous Supported Supported Supported
Syntax
strSource
The source string.
strCharSequence
The reference string.
Returned value
Returns an integer corresponding to the first occurrence of a character within the source
string.
Examples
StrTrim
Removes unwanted spaces from a string.
Function Group Execution Windows Embedded Thin Client
StrTrim String Synchronous Supported Supported Supported
Syntax
strReference
A string, or a tag of String type that contains the source string.
optNumFlag
An optional integer or tag of Integer type:
Value of
optNumFlag Description
0 Removes all spaces from both the beginning and the end of the string.
1 Removes all spaces only from the beginning of the string.
2 Removes all spaces only from the end of the string.
3 Removes all spaces except for single spaces between words.
Returned value
This function returns a string equal to strReferance minus the specified space characters.
The returned value can be stored in any tag of String type.
Examples
Tag StrTrim( " Studio version 7.0 " ) // Returned value = "Studio
version 7.0"
Tag StrTrim( " Studio version 7.0 ", 0 ) // Returned value = "Studio
version 7.0"
Tag StrTrim( " Studio version 7.0 ", 1 ) // Returned value = "Studio
version 7.0 "
Tag StrTrim( " Studio version 7.0 ", 2 ) // Returned value = "
Studio version 7.0"
Tag StrTrim( " Studio version 7.0 ", 3 ) // Returned value =
"Studio version 7.0"
StrTrimAll
Eliminates a specific char from the whole string.
Function Group Execution Windows Embedded Thin Client
StrTrimAll String Synchronous Supported Supported Supported
Syntax
strReference
A The source string.
optStrTrimChar
Char that will be removed from the string. If this parameter is omitted, the space char
will be removed from the string, by default.
Returned value
Returns a string equal to strReference minus the characters removed by the function.
Examples
Tag StrTrimAll( "Studio version 7.0 ", " ") // Returned value =
"Studioversion7.0"
StrUpper
Converts a string to all uppercase characters.
Function Group Execution Windows Embedded Thin Client
StrUpper String Synchronous Supported Supported Supported
Syntax
StrUpper( strSource )
strSource
The string.
Returned value
Returns the string with all characters are in uppercase.
Examples
ValueToChar
This function converts an integer array of Unicode character codes to a string.
Syntax
ValueToChar("tagArray",numQtdChars)
tagArray
The name of the integer array containing the values to be converted. If no array index
is specified, then the default is 0.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
numQtdChars
The number of values to be converted (minimum of 1), starting with the specifed array
index.
Returned value
Returns a string comprising the converted values.
Examples
If Array[0] = 65, Array[1] = 66, and Array[2] = 67, then the returned value will be "ABC":
ValueToChar( "Array", 3 )
If Array[10] = 65, Array[11] = 66, and Array[12] = 67, then the returned value will be "ABC":
ValueToChar( "Array[10]", 3 )
ValueWToChar
This function converts an integer array of Unicode character codes to a string, where each
value in the array is a double-byte word.
Syntax
ValueWToChar("tagArray",numQtdChars)
tagArray
The name of the integer array containing the double-byte values to be converted. If no
array index is specified, then the default is 0.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
numQtdChars
The number of values to be converted (minimum of 1), starting with the specifed array
index.
Returned value
Returns a string comprising the converted values.
Notes
Each value in the array must be a double-byte word, and each word will be split into two
bytes for conversion. As such, this function only supports Unicode character codes 0
through 255. For character codes greater than 255, or when double-byte words are not
needed, use the ValueToChar function.
Examples
If Array[0] = 29779, Array[1] = 25717, and Array[2] = 28521, then the returned value is
"Studio":
ValueWToChar( "Array", 3 )
If Array[10] = 29779, Array[11] = 25717, and Array[12] = 28521, then the returned value is
"Studio":
ValueWToChar( "Array[10]", 3 )
ClockGetDate
Calculates the date, based on how many seconds have elapsed since 12:00 AM GMT on
January 1, 1970 (taking into account the current time zone of the computer).
Function Group Execution Windows Embedded Thin Client
ClockGetDateDate & Time Synchronous Supported Supported Supported
Syntax
ClockGetDate( numSeconds )
numSeconds
The number of seconds elapsed since 12:00 AM GMT on January 1, 1970.
Returned value
Returns the date calculated in string format.
Examples
Tag ClockGetDate( 0 ) // If the computer is in the Central time zone. Returned value =
12/31/1969
Tag ClockGetDate( 1018886359 ) // If the computer is in the Central time zone.
Returned value = 04/15/2002
Note: This function takes into account the current Time Zone as specified in the Control
Panel of the local computer.
ClockGetDayOfWeek
Calculates the day of the week, based on how many seconds have elapsed since 12:00 AM
GMT on January 1, 1970 (taking into account the current time zone of the local computer).
Function Group Execution Windows Embedded Thin Client
Date & Time
ClockGetDayOfWeek Synchronous Supported Supported Supported
Syntax
ClockGetDayOfWeek( numSeconds )
numSeconds
The number of seconds elapsed since 12:00 AM GMT on January 1, 1970
Returned value
Returns the day of the week (calculated in integer format) as follows:
0 Sunday
1 Monday
2 Tuesday
3 Wednesday
4 Thursday
5 Friday
6 Saturday
Examples
Note: This function takes into account the current Time Zone, as specified in the Control
Panel of the local computer.
ClockGetTime
Calculates the time based on how many seconds have elapsed since 12:00 AM GMT
on January 1, 1970 (taking into account the current time zone as specified on the local
computer).
Function Group Execution Windows Embedded Thin Client
ClockGetTimeDate & Time Synchronous Supported Supported Supported
Syntax
ClockGetTime( numSeconds )
numSeconds
The number of seconds elapsed since 12:00 AM GMT on January 1, 1970.
Returned value
Returns the time calculated in string format.
Examples
Tag ClockGetTime( 0 ) // If the computer is in the Central time zone. Returned value =
18:00:00
Tag ClockGetTime( 1018886359 ) // If the computer is in the Central time zone.
Returned value = 10:59:19
Note: This function takes into account the current Time Zone, as specified in the Control
Panel of the local computer.
Note: To convert the number of seconds strictly into the HH:MM:SS format, you must use
the Format() function instead of the ClockGetTime() function.
DateTime2Clock
Calculates how many seconds have elapsed since 12:00 AM GMT on January 1, 1970
(taking into account the current time zone specified on the local computer.)
Function Group Execution Windows Embedded Thin Client
Date & Time
DateTime2Clock Synchronous Supported Supported Supported
Syntax
strDate
The date to be used in the calculation.
strTime
The time to be used in the calculation.
Returned value
Returns the number of seconds that have elapsed since 12:00 AM GMT on January 1, 1970.
Examples
Note: This function takes into account the current Time Zone, as specified in the Control
Panel of the local computer.
GetClock
Calculates how many seconds have elapsed since 12:00 AM GMT on January 1, 1970, at the
moment the function was run (taking into account the current time zone, as specified on the
local computer).
Function Group Execution Windows Embedded Thin Client
GetClock Date & Time Synchronous Supported Supported Supported
Syntax
GetClock( )
Returned value
Returns the number of seconds that have elapsed since 12:00 AM GMT on January 1, 1970,
at the moment the function was run.
Examples
Tag GetClock() // If executed at 10:59:19 AM April 15th 2002 CST. Returned value =
101886359
Tag GetClock() // If executed at 00:00:00 January 1st 1970 GMT. Returned value = 0
Note: This function takes the current Time Zone into account, as specified in the Control
Panel of the local computer.
Hour2Clock
Converts time in the HH:MM:SS format into seconds.
Function Group Execution Windows Embedded Thin Client
Hour2Clock Date & Time Synchronous Supported Supported Supported
Syntax
Hour2Clock( strTime )
strTime
The number of hours, minutes, and seconds in HH:MM:SS format.
Returned value
Returns the number of seconds equivalent to the total number of hours, minutes, and
seconds specified.
Examples
SetSystemDate
Sets the date in the operating system's clock.
Function Group Execution Windows Embedded Thin Client
Date & Time
SetSystemDate Synchronous Supported Supported Supported
Syntax
SetsystemDate( strDate )
strDate
The date in MM/DD/YYYY format in which to set the clock.
Returned value
Returns no values.
Examples
SetSystemTime
Sets the time in the operating system's clock.
Function Group Execution Windows Embedded Thin Client
Date & Time
SetSystemTime Synchronous Supported Supported Supported
Syntax
SetSystemTime( strTime )
strTime
The time in HH:MM:SS format in which to set the clock.
Returned value
No Returned Value.
Examples
Trigonometric functions
These functions are used to perform trigonometric operations (e.g., sine, cosine, tangent) on
numeric values.
ACos
Calculates the Arc Cosine of a value.
Function Group Execution Windows Embedded Thin Client
ACos Trigonometric Synchronous Supported Supported Supported
Syntax
ACos( numValue )
numValue
Numerical tag from which the Arc Cosine will be taken.
Returned value
Returns the Arc Cosine of numValue in radians.
Examples
ASin
Calculates the Arc Sine of a value.
Function Group Execution Windows Embedded Thin Client
ASin Trigonometric Synchronous Supported Supported Supported
Syntax
ASin( numValue )
numValue
Numerical tag from which the Arc Sine will be taken.
Returned value
Returns the Arc Sine of numValue in radians.
Examples
ATan
Calculates the Arc Tangent of a value.
Function Group Execution Windows Embedded Thin Client
ATan Trigonometric Synchronous Supported Supported Supported
Syntax
ATan( numValue )
numValue
Numerical tag from which the Arc Tangent will be taken.
Returned value
Returns the Arc Tangent of numValue in radians.
Examples
Cos
Calculates the Cosine of a value.
Function Group Execution Windows Embedded Thin Client
Cos Trigonometric Synchronous Supported Supported Supported
Syntax
Cos( numAngle )
numAngle
The Angle (in radians) from which to calculate the Cosine.
Returned value
Returns the Cosine of numAngle.
Examples
Cot
Calculates the Cotangent of a value.
Function Group Execution Windows Embedded Thin Client
Cot Trigonometric Synchronous Supported Supported Supported
Syntax
Cot( numAngle )
numAngle
The Angle (in radians) from which to calculate the Cotangent.
Returned value
Returns the Cotangent of numAngle.
Note: Although mathematically the tangent of Pi is infinite, Visual Designer only returns the
largest number possible.
Examples
Pi
Calculates the value of pi.
Function Group Execution Windows Embedded Thin Client
Pi Trigonometric Synchronous Supported Supported Supported
Syntax
Pi()
This function takes no parameters. You must still include the parentheses, however, or it will
be evaluated as a tag rather than a function.
Returned value
Returns the value of pi.
Examples
Sin
Function Group Execution Windows Embedded Thin Client
Sin Trigonometric Synchronous Supported Supported Supported
Description
Calculates the Sine of a value.
Syntax
Sin( numAngle )
numAngle
The Angle (in radians) from which to calculate the Sine.
Returned value
Returns the Sine of numAngle.
Examples
Tan
Calculates the Tangent of a value.
Function Group Execution Windows Embedded Thin Client
Tan Trigonometric Synchronous Supported Supported Supported
Syntax
Tan( numAngle )
numAngle
The Angle (in radians) from which to calculate the Tangent.
Returned value
Returns the Tangent of numAngle.
Note: Although mathematically the tangent of Pi() is infinite, Visual Designer only returns
the largest number possible.
Examples
Screen functions
These functions are used to open and close project screens.
Close
Close is a built-in scripting function that closes an open project screen.
Function Group Execution Windows Embedded Thin Client
Close Screen Asynchronous Supported Supported Supported
Syntax
Close(strScreen{ | ,optNumID })
strScreen
The name of the screen (not including the .scr extension) to be closed.
Note: Some Web servers are case-sensitive. If you plan to deploy your project as a
Web application, then you should use only lowercase letters for the screen
name.
optNumID
The specific ID or instance number of the screen to be closed, if there is more than
one screen with the same name open. (The ID is assigned when the screen is opened
with the Open function.)
This is an optional parameter. If no value is specified, then the default ID is 0.
Returned value
This function does not return any value.
Notes
This function cannot be used with Tasks or in the Global Procedures script.
Also, in some cases, you do not need to call this function to close a screen because the
screen will be closed automatically when another screen replaces it. For more information,
see Screen Attributes.
Examples
Close the screen named "main":
Close( "main" )
Close( "alarms" )
Close( "main", 10 )
Open
Open is a built-in scripting function that opens a project screen.
Function Group Execution Windows Embedded Thin Client
Open Screen Asynchronous Supported Supported Supported
Syntax
strScreen
The name of the screen (not including the .scr extension) to be opened.
Note: Some Web servers are case-sensitive. If you plan to deploy your project as a
Web application, then you should use only lowercase letters for the screen
name.
optNumX1
optNumY1
optNumX2
optNumY2
The coordinates, in pixels, for the top-left (X1,Y1) and bottom-right (X2,Y2) corners of
the screen.
These are optional parameters. If no values are specified, then the default screen size
and location are used. For more information, see Screen Attributes.
Please note the following special circumstances:
• You can open the screen at the mouse's current position by using
Open( "screen", 1 ), or Open( "screen", 1, #1, #1, #1, … ) if the
parameters at the end are needed.
• If optNumX1 equals optNumX2 and optNumY1 equals optNumY2, then the default
screen size is used but the screen is centered at (X1,Y1).
• If optNumX2 is less than optNumX1 and/or optNumY2 is less than optNumY1, or if
all four parameters are set to #1, then the parameters are ignored and the default
screen size and location are used.
optNumResizeFlag
Specifies whether objects in the screen will be resized when the screen is opened:
Value Description
0 Screen objects will not be resized.
1 Screen objects will be automatically resized
to fit the new dimensions of the screen, as
specified by the coordinates described above.
The resizing is done at the moment the screen
is opened, so if the user changes the screen size
after the screen is opened, then the objects will
not be resized again.
This parameter is required if all four coordinates are specified.
optNumID
An ID or instance number to be assigned to the screen, because you can open
multiple instances of the same screen file. (This ID is required when a screen is closed
using the Close function.)
This is an optional parameter. If no value is specified, then the default ID is 0.
optStrMnemonicList
A string that describes how the custom properties of any generic objects or linked
symbols in the screen will be completed when the screen is opened. This string has
the syntax…
#Label:Value
…where Label is the name of the property and Value is the tag, expression or literal
value that the property will receive. You can declare more than one mnemonic as long
as the mnemonics are separated by spaces. For more information, see "Examples"
below.
Returned value
This function will return one of the following values:
Value Description
0 Success
1 Error
Notes
This function cannot be used with Tasks or in the Global Procedures script.
Examples
Open the screen "main" using the default screen size and location:
Open( "main" )
Open( "main", 1 )
Open the screen at the mouse's current position and assign it an ID of 10:
Open the screen using the default screen size but centered at the coordinates (500,250), and
assign it an ID of 10:
Open the screen using the default screen size and location, and replace the custom
properties Mne1 and Mne2 with Tag1 and Tag2, respectively:
OpenPrevious
OpenPrevious is a built-in scripting function that re-opens the last screen to be closed.
Function Group Execution Windows Embedded Thin Client
OpenPreviousScreen Asynchronous Supported Supported Not Supported
Syntax
OpenPrevious({ | optNumX1,optNumY1,optNumX2,optNumY2 })
optNumX1
optNumY1
optNumX2
optNumY2
The coordinates, in pixels, for the upper-left (X1,Y1) and lower-right (X2,Y2) corners of
the screen.
These are optional parameters. If no values are specified, then the default screen size
and location are used. For more information, see Screen Attributes.
Returned value
This function will return one of the following values:
Value Description
0 Success
1 Error
Notes
This function cannot be used with Tasks or in the Global Procedures script.
Examples
Open the previous screen using its default size and location:
OpenPrevious()
Open the previous screen in the top-left corner of the display and sized to 800x600:
ShowInplaceInput
This function shows a simple text input dialog at a specified location in the project client/
viewer.
Function Group Execution Windows Embedded Thin Client
Screen
ShowInplaceInput Asynchronous Supported Supported Not supported
Syntax
ShowInplaceInput("tagOutput",numStartXPos,numStartYPos{ |
,optNumMin,optNumMax{ | ,{ optNumEnablePasswordMode | 0 | 1 }{ | ,{
optNumShowOSVK | 0 | 1 } } } })
tagOutput
The name of a tag that will receive the input.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
numStartXPos
The starting X position of the top-left corner of the input dialog — that is, the number
of pixels between that corner and the left side of the display.
numStartYPos
The starting Y position of the top-left corner of the input dialog — that is, the number
of pixels between that corner and the top of the display.
optNumMin
The minimum numeric value that will be accepted by the input dialog.
This is an optional parameter. If no value is specified, then the dialog will accept any
value.
optNumMax
The maximum numeric value that will be accepted by the input dialog.
This is an optional parameter. If no value is specified, then the dialog will accept any
value.
optNumEnablePasswordMode
An option to enable password mode, which obfuscates the operator's input as if it's a
password:
Value Description
0 Show input as plain text.
1 Obfuscate input.
This is an optional parameter. If no value is specified, then the default is 0.
optNumShowOSVK
An option to show the default Virtual Keyboard, which is configured in the project
settings:
Value Description
0 Do not show Virtual Keyboard.
1 Show Virtual Keyboard.
This is an optional parameter. If no value is specified, then the default is 0.
Returned value
This function returns the following possible values:
Value Description
0 Success.
-1 Invalid tag specified for tagOutput.
-2 Invalid number of parameters.
-3 Viewer is not running.
Examples
ShowMessageBox
This function shows a simple message box with either an OK button or Yes / No buttons.
Function Group Execution Windows Embedded Thin Client
Screen
ShowMessageBox Asynchronous Supported Supported Not supported
Syntax
strMessage
The message body that will be displayed in the box.
optNumButtons
A numeric flag that specifies which kind of confirmation buttons to display in the
message box:
Value Description
0 OK button
4 Yes / No buttons
Note: To add an exclamation mark to the box — to make it an alert or warning rather
than a plain message — add 48 (vbExclamation) to this parameter. For more
information, see "Examples" below.
This is an optional parameter. If no value is specified, then the default is 0.
optStrTitle
The title of the message.
This is an optional parameter. If no value is specified, then no title will be displayed.
Returned value
This function returns the following possible values:
Value Description
1 Operator clicked OK.
6 Operator clicked Yes.
7 Operator clicked No.
Examples
Security functions
These functions are used to manage users and groups in the project's security system.
BlockUser
BlockUser is a built-in scripting function that blocks an existing user from logging onto a
project.
Function Group Execution Windows Embedded Thin Client
BlockUser Security Synchronous Supported Supported Supported
Syntax
BlockUser(strUserName)
strUserName
The name of the user to block.
Returned value
This function returns the following possible values:
Value Description
0 User blocked successfully.
1 Invalid number of parameters.
2 Wrong parameter type.
3 Specified user does not exist.
4 User currently logged on does not have the rights to block
(i.e., user does not have Edit Security System).
5 The operation on the distributed security system failed.
6 User cannot be blocked.
7 The current Security Mode does not allow user to be
blocked/unblocked.
8 Internal error.
Examples
Block the user named Bob:
BlockUser( "Bob" )
BlockUser( badUsers[3] )
BlockUser( UserName )
CheckESign
CheckESign is a built-in scripting function that prompts the runtime user to electronically
sign an event by entering their username and password. It can be called to secure specific
expressions and scripts, just as the E-Sign option secures screen objects.
Function Group Execution Windows Embedded Thin Client
CheckESign Security Synchronous Supported Supported Supported
Syntax
CheckESign()
This function takes no parameters. Calling the function displays a security dialog, where the
user must enter their username and password.
Returned value
This function returns the following possible values:
Value Description
0 Username and/or password not accepted.
Value Description
1 Username and password accepted.
Notes
Usernames and passwords are stored in the Security Folder.
Examples
CheckESign()
CreateUser
This function creates a new user in the project security system.
Function Group Execution Windows Embedded Thin Client
CreateUser Security Synchronous Supported Supported Supported
Syntax
CreateUser(strUserName,strGroup,strPassw{ | ,optStrUserFullName })
strUserName
The name of the user to be created.
strGroup
The name of the group to which the user will belong.
strPassw
The user's password.
optStrUserFullName
The full name of the user.
Returned value
This function returns the following possible values:
Value Description
-1 Internal error; contact Technical Support.
0 New user created successfully.
1 Invalid number of parameters.
2 Wrong parameter type.
3 User name already exists.
4 Group does not exist.
5 Failed to save to configuration file.
6 Invalid user.
7 User full name already exists.
8 Reentrant function call not allowed.
9 User clicked Cancel button when using the standard
Create User dialog.
10 Invalid password, check the minimum password size
specified for the group.
11 Invalid group. (Group may not have Runtime group option
selected.)
12 Would open dialog.
Value Description
13 User currently logged on does not have the rights to create
user (i.e., user does not have Edit Security System).
14 The current Security Mode does not allow user to be
created.
Notes
Users created with this function are not shown in the project's Security folder because
they are stored in a secondary database. To manage this database, use the ExtUser.exe
program (located in the Bin sub-folder of the application folder).
Examples
ExportSecuritySystem
This function exports the security system configuration to an encrypted file.
Function Group Execution Windows Embedded Thin Client
Security
ExportSecuritySystem Synchronous Supported Supported Supported
Syntax
ExportSecuritySystem(strFileName,strPassword)
strFileName
The complete file path and name where you want to save the configuration file.
strPassword
The main password for the security system. This same password will be used to
protect the exported file.
Returned value
This function returns the following possible values:
Value Description
-2 Wrong parameter type.
-1 Invalid number of parameters.
0 Couldn't write security data.
1 File exported successfully.
Examples
ExportSecuritySystem( "C:\security.txt" )
GetUserFullName
This function gets the full name (if any) of a specified user in the project security system.
Function Group Execution Windows Embedded Thin Client
Security
GetUserFullName Synchronous Supported Supported Supported
Syntax
GetUserFullName(strUserName,"tagUserFullName")
strUserName
The name of a user in the project security system.
tagUserFullName
The name of a tag (String type) that will receive the full name of the specified user.
If the specified user does not have a full name defined, then the tag will receive an
empty string ("").
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
Returned value
This function returns the following possible values:
Value Description
0 Specified user does not exist.
1 Success; specified user exists.
Examples
Get the full name of the currently logged user (via the system tag UserName):
GetUserNames
Function Group Execution Windows Embedded Thin Client
GetUserNamesSecurity Synchronous Supported Supported Executed on Server
Syntax
tagUsers
Name of the array tag that will receive users.
optNumUserType
0 Return all users
1 Only users created during runtime
2 Only users created using the development environment
opttagGroups
Name of the array tag that will receive the group for each specific user.
Returned value
The number of users, or a negative number that can be one of the following:
Examples
GetUserPwdAging
Returns the time remaining before the password for a specific user expires.
Syntax
GetUserNames( strUser )
strUser
User name whose password aging is checked.
Returned value
Note: If the function is not executed properly (e.g., User Name is invalid), or if the specified
user is not logged on, then the function returns BAD quality.
Examples
GetUserState
Use to see the current status of a selected user.
Syntax
GetUserState(strUserName)
strUserName
The name of the user
Returned value
This function returns the following possible values:
Value Description
-3 Specified user does not exist.
-2 Wrong parameter type.
-1 Invalid number of parameters.
0 Specified user is unblocked.
1 Specified user is blocked.
Examples
ImportSecuritySystem
This function imports a security system configuration from an external file.
Syntax
ImportSecuritySystem(strSecuritySystemPassword,strFileName,strFilePassword{ |
,optNumMode })
strSecuritySystemPassword
The main password for the project's current security system configuration. (The
security system must be enabled.)
strFileName
The complete file path and name of the configuration file that you want to import. (The
file must have been previously exported from a Visual Designer project using either
the Security System configuration tool or the ExportSecuritySystem function.)
strFilePassword
The password for the specified configuration file.
optNumMode
A numeric flag indicating how the imported settings should be handled:
Value Description
0 Append the imported settings to the current
settings. In the event of a conflict, replace with
the imported settings.
1 Append the imported settings to the current
settings. In the event of a conflict, keep the
current settings.
2 Completely replace the current settings with the
imported settings.
Examples
RemoveUser
Removes a user from the system.
Function Group Execution Windows Embedded Thin Client
RemoveUser Security Synchronous Supported Supported Supported
Syntax
RemoveUser( strUserName )
strUserName
The name of the user to be removed.
Returned value
This function returns the following possible values:
Value Description
0 User removed successfully.
1 Invalid number of parameters.
2 Wrong parameter type.
3 User currently logged on does not have the rights to remove
(i.e., user does not have Edit Security System).
4 User cannot be removed.
5 Specified user does not exist.
6 Component-level failure.
7 Failed to save to configuration file.
8 The current Security Mode does not allow user to be
removed.
Examples
Note: You can use this function to remove only those users you created using the
CreateUser( ) function.
SetPassword
Use to specify a new user password.
Function Group Execution Windows Embedded Thin Client
SetPassword Security Synchronous Supported Supported Supported
Syntax
strUserName
The name of the user.
optStrNewPassword
Optional The new password
Note: If you omit the this parameter, then the SetPassword function will launch an
Enter a new password dialog, so the user can enter a new password.
Returned value
This function returns the following possible values:
Value Description
-1 Internal error; contact Technical Support.
0 Password set successfully.
1 Invalid number of parameters.
2 Wrong parameter type.
3 Specified user does not exist.
4 Reentrant call not allowed.
5 User clicked Cancel.
6 Group does not exist.
7 Password too weak.
8 Invalid password.
9 Invalid user.
10 User currently logged on does not have the rights to set user
password (i.e., user does not have Edit Security System).
11 Server offline.
12 Error.
13 Confirm password does not match.
14 Would open dialog.
15 The current Security Mode does not allow user password to
be changed.
Examples
UnblockUser
Use to unblock a blocked user in the system.
Function Group Execution Windows Embedded Thin Client
UnblockUser Security Synchronous Supported Supported Supported
Syntax
UnblockUser( strUserName )
strUserName
The name of the user to unblock.
Returned value
This function returns the following possible values:
Value Description
0 User blocked successfully.
1 Invalid number of parameters.
2 Wrong parameter type.
3 Specified user does not exist.
4 User currently logged on does not have the rights to unblock
(i.e., user does not have Edit Security System).
5 The operation on the distributed security system failed.
6 Specified user cannot be blocked.
7 The current Security Mode does not allow user to be
blocked/unblocked.
8 Internal error.
Examples
AppActivate
AppActivate is a built-in scripting function that activates (i.e., brings to the front) another
application window that is already open.
Function Group Execution Windows Embedded Thin Client
AppActivate Module Activity Asynchronous Supported Supported Supported
Syntax
AppActivate(strAppTitle{ | ,{ optNumActiv | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 }{ | ,optNumTimeout } })
strAppTitle
The full title (as shown in the title bar) of the application window.
optNumActiv
Controls how the specified window is to be activated:
Notes
AppActivate is similar to the function ShowWindow in the Microsoft Windows API, and it
allows many of the same options. For more information, please refer to the Windows API
documentation.
Examples
Show the Microsoft Word document named test.doc:
AppIsRunning
AppIsRunning is a built-in scripting function that verifies another application window is
open and running.
Function Group Execution Windows Embedded Thin Client
AppIsRunningModule Activity Synchronous Supported Supported Supported
Syntax
AppIsRunning(strAppTitle{ | ,optNumTimeout })
strAppTitle
The full title (as shown in the title bar) of the application window.
optNumTimeout
The timeout period (in milliseconds) for the function to be successfully executed. If, for
whatever reason, the function is not executed in this period, then it is aborted.
This is an optional parameter. If no value is specified, then the default timeout is five
seconds (or 5000 milliseconds).
Returned value
This function will return one of the following values:
Value Description
0 ERROR: The specified application window is not open or
otherwise did not respond within the timeout period.
1 SUCCESS: The specified application window is open and
running.
Notes
AppIsRunning is similar to the function IsWindow in the Microsoft Windows API. For
more information, please refer to the Windows API documentation.
Examples
Verify the Microsoft Word document named test.doc is open and running:
AppPostMessage
AppPostMessage is a built-in scripting function that sends a Windows system message to
another application window.
Syntax
AppPostMessage(strAppTitle,strMessage,numWParam,numLParam{ |
,optNumTimeout })
strAppTitle
The full title (as shown in the title bar) of the application window.
strMessage
The name or code of the system message.
Note: The CLOSE, MINIMIZE, MAXIMIZE and RESTORE messages can be given as
string values enclosed in quotes. All other message codes must be given as
numeric values.
numWParam
Additional message-specific information.
numLParam
Additional message-specific information.
optNumTimeout
The timeout period (in milliseconds) for the function to be successfully executed. If, for
whatever reason, the function is not executed in this period, then it is aborted.
This is an optional parameter. If no value is specified, then the default timeout is five
seconds (or 5000 milliseconds).
Returned value
This function will return one of the following values:
Value Description
0 ERROR: The system message was not sent, or the specified
application window did not respond, within the timeout
period.
1 SUCCESS: The system message was successfully sent.
Notes
AppPostMessage is similar to the function PostMessage in the Microsoft Windows API,
and it allows many of the same options. For more information, including a list of available
system messages, please refer to the Windows API documentation.
Examples
Close the Calculator application:
AppSendKeys
Sends keyboard commands to the active application.
Function Group Execution Windows Embedded Thin Client
AppSendKeys Module Activity Synchronous Supported Not supported Supported
Syntax
strKeys (1-N)
String tags containing the keyboard commands to be used.
Returned value
No returned values.
Examples
Note: You can specify <ALT>, <CTRL>, or <SHIFT> in the text to send a code equal to the
Alt, Ctrl, or Shift keyboard commands. To send the < character, specify << in the
text.
CleanReadQueue
Removes all reading messages from the communications module.
Function Group Execution Windows Embedded Thin Client
Module Activity
CleanReadQueue Synchronous Supported Not supported Executed on Server
Syntax
CleanReadQueue()
CleanReadQueue()
Note: You should not use this function in new projects, but it is still valid for projects built
using earlier versions of Visual Designer.
CloseSplashWindow
Closes the Visual Designer splash screen.
Syntax
CloseSplashWindow()
CloseSplashWindow()
DisableMath
DisableMath is a built-in scripting function that pauses the execution of all Math
worksheets.
Syntax
DisableMath()
DisableMath()
EnableMath
EnableMath is a built-in scripting function that resumes the execution of all Math
worksheets.
Syntax
EnableMath()
EnableMath()
EndTask
Stops the Visual Designer module that is currently running.
Function Group Execution Windows Embedded Thin Client
EndTask Module Activity Asynchronous Supported Supported Executed on Server
Syntax
EndTask(strTask)
strTask
The name of the task to stop (must be one of the following):
BGTASK Background Tasks
VIEWER Viewer
DBSPY Database Spy
LOGWIN LogWin
DRIVERDriverName Driver
UNIDDECL DDE client
UNINDDE DDE server
UNIODBC ODBC
TCPSERVER TCP/IP Server
TCPCLIENT TCP/IP Client
OPCCLIENT OPC
Returned value
No returned values.
Examples
EndTask( "Viewer" )
EndTask( "DriverDriverName" )
Where DriverName is the name of the driver's .dll file. For example:
EndTask( "DriverMODBU" )
ExitWindows
Exits the Windows operating system in a specified manner.
Function Group Execution Windows Embedded Thin Client
ExitWindows Module Activity Asynchronous Supported Not supported Supported
Syntax
ExitWindows(numExitCode)
numExitCode
A numeric code specifying how Windows should be exited:
Value Description
0 Restart
1 Log off
2 Shut down
Returned value
No returned values.
Examples
ExitWindows( 1 )
IsScreenOpen
Verifies that a project screen is open.
Function Group Execution Windows Embedded Thin Client
IsScreenOpenModule Activity Asynchronous Supported Supported Not supported
Note: This function cannot be used with Tasks or in the Global Procedures script.
Syntax
IsScreenOpen(strScreen{ | ,optNumID })
strScreen
The name of the project screen to be verified.
optNumID
The specific instance number of the screen. (This number is assigned when the screen
is opened with the Open function.)
This is an optional parameter. If no value is specified, then the default ID is 0.
Returned value
Examples
IsTaskRunning
Verifies that a background task is running.
Function Group Execution Windows Embedded Thin Client
Module Activity
IsTaskRunning Synchronous Supported Supported Executed on Server
Syntax
IsTaskRunning(strTask)
strTask
The name of the task to be verified.
Returned value
Examples
Is the project viewer (Viewer.exe) running?
IsTaskRunning( "Viewer" )
IsViewerInFocus
Verifies that the project viewer (Viewer.exe) is in focus on the display.
Function Group Execution Windows Embedded Thin Client
Module Activity
IsViewerInFocus Synchronous Supported Not supported Not supported
Syntax
IsViewerInFocus()
Examples
IsViewerInFocus()
KeyPad
Displays a Virtual Keyboard to prompt the runtime user to enter a tag value.
Function Group Execution Windows Embedded Thin Client
KeyPad Module Activity Asynchronous Supported Supported Supported
Syntax
strTagName
The name of the tag to which the Virtual Keyboard will write.
This name must be enclosed in quotes; if it is not, then the project will try to get the
contents of the tag.
optStrKeyboardName
Type of Virtual Keyboard that will be launched (e.g., AlphaNumeric, EnhKeypad,
or Keypad ). If this parameter is omitted, then the default Virtual Keyboard will be
launched.
optNumIsPassword
If this parameter is set with any value different from 0 (zero), the characters typed in
the Virtual Keyboard will appear as asterisks ("*"). This option is useful when the user
is typing a password.
optStrHint
The value specified for this parameter is displayed in the title bar of the Virtual
Keyboard window, if the Show Hint option is selected in the project settings.
optNumMin, optNumMax
Minimum and maximum numeric values for the Tag when using the Keypad keyboard
type, if the Show MIN/MAX fields option is selected in the project settings. (These
values are ignored for all other keyboard types.) These parameters are optional, but
you must specify both to have them implemented. If you specify only one parameter
— for example, Min but not Max — then it will be ignored.
Returned value
Error Description
0 Success
1 Error
2 Tag does not exist
3 Reentrant error, function is already executing
4 Invalid number of parameters
5 Internal error, contact Technical Support for more information
Examples
LogOff
This function logs off the current user and then logs on the default user (typically "guest").
Function Group Execution Windows Embedded Thin Client
LogOff Module Activity Asynchronous Supported Supported Supported
Syntax
LogOff()
Returned value
This function returns the following possible values:
Value Description
0 Error.
1 Success.
Examples
LogOff()
LogOn
This function either logs on a specified user or displays a Log On dialog.
Function Group Execution Windows Embedded Thin Client
LogOn Module Activity Asynchronous Supported Supported Supported
Syntax
LogOn({ | optStrUsername,optStrPassword })
optStrUsername
The name of the user to log on.
optStrPassword
The specified user's password.
optStrUsername and optStrPassword are optional parameters. If they're not specified, then
the project will instead display a Log On dialog, to prompt the station's current operator —
whoever it is — to log on.
Returned value
This function returns the following possible values:
Value Description
0 Error (e.g., username or password is invalid) or cancellation.
1 Success.
Examples
Display a Log On dialog:
LogOn()
Math
Executes the specified Math worksheet.
Function Group Execution Windows Embedded Thin Client
Math Module Activity Synchronous Supported Supported Executed on Server
Syntax
Math( numWorksheet )
numWorksheet
The number of the math worksheet to be executed.
Returned value
No returned values.
Examples
Math( 6 )
CAUTION
Running a Math worksheet from inside another module will pause that module until the
Math worksheet finishes. Consequently, use this function only when absolutely necessary to
avoid decreasing the performance of the other modules.
PostKey
Posts key codes to the currently displayed project screen.
Note: This function cannot be used with Tasks or in the Global Procedures script.
Syntax
numKeydownOrKeyup
Numerical tag containing a 0 (to indicate a KeyDown event) or a 1 (to indicate a KeyUp
event).
numwParam
Numerical tag containing key code to be sent.
numlParam
Numerical tag containing message lParam.
Returned value
No returned values.
Examples
PostKey( 0, 0x24, 0 )
Recipe
Executes the specified Recipe worksheet.
Syntax
Recipe( strFunction )
strFunction
String tag specifing the operation to be performed and the Recipe worksheet to be
used in the [Operation]:[Recipe sheet] format.
Operations:
Save Saves data to a data file.
Load Loads data from a data file.
Delete Deletes a data file.
Init Initializes a data file with a value of 0 in all the tags.
Returned value
0 No error
1 If the tag is numeric
2 Expression does not contain ":"
3 Previous command to the invalid ":"
4 Task not found by the system
5 Disk error
Examples
Note:
• You must be running the Background Task to execute the recipe functions.
• When this function is called on a Thin Client, the command is sent to the Server
(via TCP/IP) and the Recipe task on the Server executes the command. Therefore,
be aware that tags configured with a Scope of Local rather Server will still be
updated on the Server.
Report
Executes the specified Report worksheet and sends the output to hard disk, printer, or PDF.
Function Group Execution Windows Embedded Thin Client
Report Module Activity Synchronous Supported Supported Supported
Syntax
strFunction
String specifying the operation to perform and the Report worksheet to output, using
the syntax "Operation:Report worksheet", where…
Operation is either Disk (saves data file to hard disk), Prn (sends report to default
printer), or Pdf (generates a PDF file of the report); and
Report worksheet is the name of the Report worksheet file ( *.rep ) to output.
optNumOrientation
Set the paper orientation as follows: 0 (default) is Portrait, 1 is Landscape. This
parameter is ignored if the Operation is other than Prn.
Note: Some features of this function are not supported when running the project on
a Windows Embedded device: it cannot generate PDFs; it cannot change paper
orientation using the optNumOrientation parameter; and it does not support
Report worksheets in RTF format.
Returned value
Value Description
0 Success
1 strFunction is configured with a numeric value (invalid)
2 strFunction does not contain ":" (invalid)
3 strFunction contains an invalid output type before the ":"
4 Background Task is not running (see Tip below)
5 Disk error (e.g., disk full, read-only file cannot be overwritten, or invalid path)
6 Specifed Report worksheet does not exist
Note: The Background Task must be running in order to execute this function. Otherwise,
the operation will not be executed and the function will return the value 4 indicating
error. For more information, see Execution Tasks.
Examples
Report( "Disk:Report1.rep" )
Report( "Prn:Report2.rep", 0 )
Report( "Prn:Report3.rep", 1 )
Report( "Pdf:Report1.rep" )
RunGlobalProcedureOnServer
Runs a function or sub-routine, as declared in the Global Procedures interface. The
procedure is run on the server, but it can be called by any local or remote client.
Syntax
strNameProcedure
The name of the function or sub-routine to be run.
param1, param2, …
Parameters that are passed to the procedure. Parameters must be passed as strings.
Returned value
This function returns whatever value is returned by the called procedure.
Examples
Given the following procedure that is declared in the Global Procedures interface:
Function AddMe(intNumber)
If intNumber >= 6 Then
AddMe = 0
Else
AddMe = intNumber + 2
End If
End Function
RunVBScript
Executes a statement in VBScript language.
Function Group Execution Windows Embedded Thin Client
RunVBScript Module Activity Synchronous Supported Supported Supported
Syntax
strScript
Script statement that must be executed by the function.
optTagReturnError
Name of the tag that will receive the error (if any) generated by the statement (e.g.,
"Division by zero"). The tag name must be configured between double-quotes and it
must be a String tag.
Returned value
0 Error
1 Success
Examples
Note: This function is useful to execute VBScript statements from interfaces that support
the built-in language only (e.g., Scheduler groups). You can also call VBSCript
functions created in the Global Procedures.
Note: The runtime station must support the VBScript statements configured in this function
in order to execute them.
SecureViewerReload
SecureViewerReload is a built-in scripting function that closes the Secure Viewer program
and then reloads it with a new configuration file.
Function Group Execution Windows Embedded Thin Client
Module Activity
SecureViewerReload Synchronous Not Supported Not Supported Secure Viewer only
Syntax
SecureViewerReload(strFileName)
strFileName
The file path of an INI file (*.ini) that describes the new configuration. (If the file is
located in the same folder as Viewer.exe, then only the file name is needed.) The
file should be structured the same and contain all of the same settings as the default
configuration file (Viewer.ini).
This parameter must specify either the name of a String tag or a text string enclosed in
quotes.
Returned value
This function does not return any value.
Examples
SecureViewerReload( configFile1 )
SendKeyObject
Sends key event codes to objects in the currently displayed project screen. You can use this
function to trigger Command animations on these objects.
Function Group Execution Windows Embedded Thin Client
Module Activity
SendKeyObject Synchronous Supported Not supported Not supported
Note: This function cannot be used with Tasks or in the Global Procedures script.
Syntax
numEvent
The event code for "On Down", "On While" or "On Up" of the Command animation, as
follows:
0 On Down
1 While Down
2 On Up
Note: The "On While" event requires special attention. Each time the
SendKeyObject() function is executed, Visual Designer executes the
expressions configured for the "On While" sheet (from the object's Command
animation) just once.
strMainKey
The key to be sent to the screen. The following values are accepted:
• "F1" … "F20"
• "+ "
• "-"
• "/"
• "*"
• "HOME"
• "END"
• "INSERT"
• "DELETE"
• "DOWN"
• "UP"
• "LEFT"
• "RIGHT"
• "PAGEUP"
• "PAGEDOWN"
• "SPACE"
• "RETURN"
• "BACKSPACE"
• "ESCAPE"
• "A" … "Z"
numShift
A numeric value or tag; whether to include Shift with the key (0 is no, 1 is yes).
numCtrl
A numeric value or tag; whether to include Ctrl with the key (0 is no, 1 is yes).
numAlt
A numeric value or tag; whether to include Alt with the key (0 is no, 1 is yes).
strTargetScreen
The name of the screen to receive the key event code.
Note: The numShift, numCtrl, numAlt and strTargetScreen parameters are
optional. However, if you configure one of them, then you must configure the
others as well.
optNumID
The specific instance number of the screen. (The ID is assigned when the screen is
opened with the Open() function.) This is an optional parameter; the default ID is 0.
Returned value
This function returns no values.
Examples
SetAppPath
Sets the new file path for the project folder. After this function is executed, Visual Designer
will look for all of the project files (i.e.,screens, alarms, trends, database, events) in this
folder.
Syntax
SetAppPath(strPath)
strPath
The file path.
Returned value
Examples
SetAppPath( "C:\Studio\" )
Note: If the computer is on a network, you can use the //IP address or host
name/Path syntax to define a location on another node of the network.
SetViewerInFocus
SetViewerInFocus is a built-in scripting function that moves the project viewer in front of
all other open windows and then maximizes it to fill the display.
Function Group Execution Windows Embedded Thin Client
Module Activity
SetViewerInFocus Synchronous Supported Not Supported Supported
Syntax
SetViewerInFocus()
SetViewerInFocus()
SetViewerPos
Sets the height, width, and position of the project viewer or thin client.
Function Group Execution Windows Embedded Thin Client
SetViewerPosModule Activity Synchronous Supported Not supported Supported
Syntax
numLeft
A numeric flag that specifies the left-side position of the Viewer in pixels.
numTop
A numeric flag that specifies the top-side position of the Viewer in pixels.
optNumWidth
Optional numeric tag specifying the Viewer width in pixels.
optNumHeight
Optional numeric tag containing the Viewer height in pixels.
Returned value
0 Error
1 Success
Examples
Note: When you omit the optional parameters (numWidth and numHeight), Visual Designer
gets size of the Viewer window from the project resolution.
ShutDown
Shuts down all of the active project modules.
Syntax
ShutDown()
ShutDown()
StartTask
Starts a project module that is not currently running.
Syntax
StartTask(strTask)
strTask
The name of the task to start (must be one of the following tasks):
Value Description
BGTask Background Tasks
Viewer Viewer
DBSpy Database Spy
LogWin LogWin
Driver Driver
UniDDECl DDE Client
UniNDDE DDE Server
UniODBC ODBC
TCPServer TCP/IP Server
TCPClient TCP/IP Client
OPCClient OPC Client
Returned value
No returned values.
Examples
StartTask( "Viewer" )
Note: The StartTask( "Driver" ) function starts all drivers configured in the project.
To start a specific driver, you must use the WinExec() function.
ViewerPostMessage
Posts a Windows System Message to the specified project screen.
Note: This function cannot be used with Tasks or in the Global Procedures script.
Syntax
strScrTitle
The name of the screen to which the message will be posted.
numMessage
The number of the Windows System Message to be posted.
numwParam
A numeric value or tag; additional message-specific information, which is passed to
wParam of the Windows System Message.
numlParam
A numeric value or tag; additional message-specific information, which is passed to
lParam of the Windows System Message.
optNumID
The specific instance number of the screen. (The ID is assigned when the screen is
opened with the Open() function.) This is an optional parameter; the default ID is 0.
Returned value
This function returns no values.
Notes
This function emulates the PostMessage function in Microsoft Windows. For more
information, including a complete list of available Windows System Messages, please
consult Microsoft Developers Network.
Examples
WinExec
WinExec is a built-in scripting function that executes a Windows command as if it was
entered at the command prompt.
Function Group Execution Windows Embedded Thin Client
WinExec Module Activity Asynchronous Supported Supported (see Supported
notes)
Syntax
WinExec(strCommand{ | ,{ optNumState | 0 | 1 | 2 | 3 | 4 | 7 }{ | ,{
optNumSync | 0 | 1 },"optTagReturnOrHandle" } })
strCommand
The command to be executed.
optNumState
The initial state of the program (if any) that is run by the command:
Value Description
0 Hides the program and gives control to another
one.
1 Activates and displays the program.
2 Activates the program and displays it as an icon.
3 Activates the program and maximizes it.
4 Shows the program at its recent size. The
program is still active.
7 Shows the program as an icon. The program is
still active.
This is an optional parameter. If no value is specified, then the default value is 1.
Note: This parameter is not supported on Windows Embedded target systems;
regardless of what value is actually specified, the function is executed as if the
default value is specified.
optNumSync
A setting that specifies whether the command will execute synchronously or
asynchronously:
Value Description
0 Execute asynchronously; the function will return
immediately.
1 Execute synchronously; the function will return
when the command has finished executing.
Value Description
0 Command was not executed successfully.
1 Command was executed successfully.
Please note that this indicates only whether the command started its execution successfully,
particularly if it is executed asynchronously. It does not indicate when or how the command
finished its execution.
Examples
Start Notepad, and then immediately continue to the next line of the script:
WinExec( "C:\Windows\System32\notepad.exe", 4 )
Start MS Paint, and then immediately continue to the next line of the script:
WinExec( "C:\Windows\System32\mspaint.exe" )
Call a batch file, execute it in hidden mode, wait until it's finished before continuing, and
then store the exit code in the tag return:
Call a VBScript file, execute it in hidden mode, and then immediately continue, storing the
handle in the tag handle:
Note: Calling VBScript files is not supported on Windows Embedded target systems.
WinExecIsRunning
Indicates whether a program started by the WinExec function is still running.
Function Group Execution Windows Embedded Thin Client
Module Activity
WinExecIsRunning Synchronous Supported Supported Supported
Syntax
numHandle
Handle number stored in the tag in the optStrReturnorHandle parameter of the
WinExec function.
"optTagReturn"
Tag that receives the code returned by the program executed by the WinExec
function.
Returned value
0 Successful execution.
-1 Invalid parameter(s).
-2 Failed to open file. Disk is write protected or file name is invalid.
Examples
File functions
These functions are used to read from, write to, print, move, and delete external files.
DeleteOlderFiles
Deletes files that are older than a date matching the configured mask from the configured
path.
Function Group Execution Windows Embedded Thin Client
File
DeleteOlderFiles Synchronous Supported Supported Supported
Syntax
strPath
The path to the files that will be deleted.
strMask
The mask of the files to be deleted.
strDate
The cut-off date. Any files older than this date will be deleted.
Note: This parameter must be configured using the date format specified for the
project (such as MDY or DMY ) with the appropriate separator ( /, :, ., and so
forth.).
Returned value
Returns the number of files deleted.
Examples
DirCreate
Creates the specified directory.
Syntax
strDirectory
The name and file path of the directory to create.
optBooEmptyOnly
Optional flag. If omitted or if this parameter has the value 0, the directory is created
only if all previous directories exist. If this parameter has the value different from 0, the
full path specified in the strDirectory parameter is created.
Returned value
-1 Invalid parameters
0 Failed to create the directory (e.g., Drive does not exist.)
1 Directory created successfully.
Examples
DirDelete
Deletes the specified directory.
Syntax
strDirectory
The name and file path of the directory to delete.
Note: This parameter supports wildcards ( * and ? ).
optBooEmptyOnly
Optional flag. If this parameter has a value of 1, then the directory is deleted only if it
is empty. By default — that is, if the parameter is omitted or has a value of 0 — the
directory is deleted whether it is empty or not.
Returned value
Value Description
#2 Attempted to delete a non-empty directory when this action is not allowed (i.e.,
optBooEmptyOnly does not equal 0).
#1 Invalid parameters.
0 Failed to delete the directory (i.e., directory does not exist).
1 Directory deleted successfully.
Examples
DirLength
Returns the size of a specific directory.
Description
Returns the size of a specific directory.
Syntax
DirLength(strPath)
strPath
The path of the directory that will be checked.
Returned value
Notes
CAUTION
This function executes synchronously, which means that the project pauses while it waits
for the function to return. As such, if the specified directory is unusually large, then the
project could be paused for several seconds while size of the directory is calculated.
Examples
Tag DirLength("C:\Studio") // Returns the size (in bytes) of all files and sub-folders
from C:\Studio.
DirRename
Renames directories.
Function Group Execution Windows Embedded Thin Client
DirRename File Synchronous Supported Supported Executed on Server
Syntax
DirRename(strPath,strDirectoryFrom,strDirectoryTo)
strPath
The path of the directory that will be renamed.
Note: This function supports wildcard ( * and ? ).
strDirectoryFrom
The original name of the directory that will be renamed.
strDirectoryTo
The target name used to rename the original directory.
Returned value
−1 Invalid parameters
0 Failed to rename the directory (e.g., strDirectoryFrom does not exist.)
1 Directory renamed successfully.
Examples
FileCopy
Copies the file(s) configured in the strSourceFile parameter to the path/file configured in the
strTargetFile parameter.
Function Group Execution Windows Embedded Thin Client
FileCopy File Synchronous Supported Supported Supported
Syntax
FileCopy(strSourceFile,strTargetFile{ | ,optNumTimeOut })
strSourceFile
The file path and name the file(s) to be copied.
Note: This function supports wildcards (* and ?).
strTargetFile
The file path where the file(s) are to be copied.
optNumTimeOut
Numerical tag containing an integer to set the timeout time for the operation.
If you use the optNumTimeOut parameter, the function returns the value −1 after the
specified timeout time and the scan continues. Though the function returns a −1, it
does not cancel the copying procedure. Instead, it creates an internal process to finish
the copying procedure.
Returned value
Notes
CAUTION
This function executes synchronously, which means that the project pauses while it waits
for the function to return. As such, if the function is called to copy files from or to another
volume across a slow network, then the project could be paused for long time.
Examples
FileDelete
Deletes the specified file.
Function Group Execution Windows Embedded Thin Client
FileDelete File Synchronous Supported Supported Supported
Syntax
FileDelete(strFile)
strFile
The file path and name of the file to delete.
Returned value
Examples
FileLength
Gets the size of a file.
Function Group Execution Windows Embedded Thin Client
FileLength File Synchronous Supported Supported Supported
Syntax
FileLength(strFile)
strFile
The file path and name of the file.
Returned value
Returns the size of the specified file in bytes.
Examples
FileRename
FileRename is a built-in scripting function that renames a specified file.
Function Group Execution Windows Embedded Thin Client
FileRename File Synchronous Supported Supported Supported
Syntax
FileRename(strOldName,strNewName)
strOldName
The path and old name of the file.
strNewName
The path and new name of the file.
Returned value
This function does not return any value.
Examples
FileWrite
Writes a string to a specified ASCII or Unicode file. If the file doesn't exist, then the function
will create the file.
Function Group Execution Windows Embedded Thin Client
FileWrite File Synchronous Supported Supported Supported
Description
Writes a string to a specified ASCII or Unicode file. If the file doesn't exist, then the function
will create the file.
Syntax
FileWrite(strFileName,strWriteText{ | ,optNumAppend })
strFileName
A string value enclosed in quotes, or the name of a String tag that contains the value,
specifying the file name.
By default, the file will be written in your project folder (i.e., the folder that contains the
file project_name.APP). To write in another folder, specify the complete file path.
strWriteText
A string value enclosed in quotes, or the name of a String tag that contains the value,
specifying the text to be written to the file.
optNumAppend
A numerical value, or the name of an Integer tag that contains the value, specifying the
text encoding of the file:
Value Description
0 Creates a new ASCII file with the given file name. If the file already exists, then it is
overwritten.
1 Appends to an existing ASCII file with the given file name. If the file doesn't exist, then a new
file is created.
2 Creates a new Unicode (UTF-16LE) file with the given file name. If the file already exists, then
it is overwritten.
3 Appends to an existing Unicode file with the given file name. If the file doesn't exist, then a
new file is created.
This is an optional parameter. If any value other than 0 through 3 is given, or if the
parameter is not used, then 0 is the default.
Returned value
0 Successful execution.
−1 Invalid parameter(s).
−2 Failed to open file. Disk is write protected or file name is invalid.
Examples
FindFile
FindFile is a built-in scripting function that searches for all files that match a given search
string.
Syntax
strFile
The name of the file(s) to search for.
You may use wildcards (*) to find multiple files. For example, *.gif to find all GIF
files or log*.txt to find all log files in a sequence (e.g., log001.txt, log002.txt,
log003.txt).
By default, the function only searches the project folder, but you may specify a file
path (either relative or absolute) to search elsewhere. For example, if strFile is defined
as…
…then the function will search the Logs directory on the specified network volume.
optTagFilesFound
An array (of String type) that will receive the names of the matching files. The array
name must be enclosed in quotes; if it is not, then the function will try to get the
contents of the array.
This is an optional parameter. If no value is specified, then the file names will not
be saved and the function will only return the number of files found. For more
information, see "Returned value" below.
Note: The array will receive only the file names and not their paths, even if you define
strFile to search outside the default directory.
optNumTimeout
The timeout period (in milliseconds) for the function to be successfully executed.
This is an optional parameter. If no value is specified, then the project will continue
searching until it has completely searched the specified directory.
Returned value
This function will return one of the following values:
Value Description
-1 Function timed out.
0 No matching files found.
n Number of matching files found.
Notes
This function may be called by any project client, but it is always executed on the project
server. By default, it only searches the server's project folder, and if strFile includes a relative
file path, then it must be relative to the that same directory.
Furthermore, because the function is executed synchronously on the project server, if strFile
is poorly defined and/or optNumTimeout is not used, then the entire project — both the
server and the clients — may hang while it searches for the files.
Finally, optNumTimeout is not supported if the project server is a Windows Embedded
device.
Examples
Find all text files in the Server's project folder:
FindFile( "*.txt" )
Find all Microsoft Word files in the project folder and then send the names of the matching
files to StringArray, within a timeout period of 1000 milliseconds:
FindPath
Verifies whether a directory exists.
Syntax
FindPath(strPathName)
strPathName
The file path for which to search.
Returned value
Examples
GetFileAttributes
Reads the attributes of a specified file.
Function Group Execution Windows Embedded Thin Client
File
GetFileAttributes Synchronous Supported Supported Supported
Syntax
GetFileAttributes(strFile)
strFile
The file path and name of the file from which to read the attributes.
Returned value
−1 Error
1 Read only
2 Hidden
4 System
16 Directory
32 Archive
128 Normal
256 Temporary
Examples
GetFileTime
Reads the time and date the file was last modified.
Function Group Execution Windows Embedded Thin Client
GetFileTime File Synchronous Supported Supported Supported
Syntax
GetFileTime(strFileName,numFormat)
strFileName
The file path and name of the file to be read.
numFormat
A numeric flag specifiying the format of the returned data:
• 0: Returns the date and time from the file.
• 1: Returns only the file date.
• 2: Returns only the file time.
Returned value
Returns the date and or time the file was last modified.
Examples
GetHstInfo
Returns the Start Time, End Time, and Duration of the specified history (*.HST) file.
Function Group Execution Windows Embedded Thin Client
GetHstInfo File Synchronous Supported Supported Supported
Syntax
GetHstInfo(strFileName,numInfoType)
strFileName
The file path and name of the history file to be read.
numFormat
A numeric flag specifying the type of information to be returned:
• 0: Returns the Start Time of the file.
• 1: Returns the End Time of the file.
• 2: Returns the Duration (in hours) of the file.
Returned value
If the file cannot be read or the specified information cannot be returned, then an error is
generated:
-1 Failed to retrieve the Start Time; verify the history file exists and is valid.
-2 Failed to retrieve the End Time; verify the history file exists and is valid.
-3 Internal program error; please contact Technical Support.
-4 The Studio TCP/IP server returned a Time that is incompatible with the format specified in the
project screen or Web page. Please use the Verify Project tool to update the project and try again.
Examples
GetLine
Gets a specified line or search string from a text file and then stores the line in a String tag.
Function Group Execution Windows Embedded Thin Client
GetLine File Synchronous Supported Supported Supported
Syntax
strFileName
A string value enclosed in quotes, or the name of a String tag that contains the value,
specifying the name of the file to be searched. The name can be a fully qualified file
path (e.g., C:\File.txt) or a simple file name (e.g., File.txt). In the latter case,
the project will search for the file in the following paths:
• Local Station: The project will search for the file in the project folder and Web sub-
folder.
• Thin Client: If the parameter optRunFromServer is set to 0, the path where the
file will be searched is undetermined. If is set to 1, it will search for the file in the
URL typed in the Browser, and if the file is not found, in the Backup URL.
Note: For Web-enabled projects, we recommend setting the optRunFromServer
parameter to 1 and placing your files in the project's Web sub-folder.
Search
There are two options for this parameter, based on the data type of the value you give
it:
• If it is a string value or tag, then the function will search the text file for the first
occurance of the string and then copy the entire line that contains the occurance to
the tag specified by tagStore. Additional occurances are counted (see Returned
Values below) but not copied.
• If it is a numeric value or tag, then the function will go to that line number in the
text file and then copy the line to the tag specified by tagStore. The first line of
the file is line 0.
tagStore
Name of the String tag receiving the contents of the line pointed to by the function.
This name must be enclosed in quotes; if it isn't, then the function will use the
contents of the tag rather than its name.
optNumCase
Optional numeric tag specifying whether the search is case-sensitive.
• 0: Not case-sensitive
• 1: Case-sensitive
optOverflowTag
Optional numeric tag receiving the result of overflow verification.
• 0: OK
• 1: Overflow
optRunFromServer
Optional numeric tag ignored when the function is called on local stations. On Thin
Clients, this parameter indicates the following:
• 0: Retrieves the file from the Thin Client machine (do not use this value with non-
fully qualified names)
• 1: Retrieves the file from the Web Server. If the file name is not a URL, then the
function will ignore the project path and search for the file in the URL where the
screen files are located.
Returned value
If the function is successfully executed, then it returns the total number lines in which the
search string was found. Otherwise, the function returns one of the following errors:
Notes
Note: This function only supports ASCII and UTF-16LE text encoding. (UTF-16LE is the
Unicode implementation that is natively supported by Windows.) If you use this
function to get text from a UTF-8 or UTF-16BE encoded file, then you may see some
invalid characters.
IMPORTANT
This function can only read up to 509 characters in a single function call. If a line has more
than 509 characters (i.e., 507 alphanumeric + CR + LF), then the function will read it as two
or more lines. This will also increase the effective line count for the purposes of the Search
parameter. So, for line 100 that has 1024 characters (i.e., 1022 alphanumeric + CR + LF), the
function must be called three times:
After this, line 101 of the source file is actually counted by the function as line 103.
Therefore, to avoid unnecessarily complicated line counting, you should make sure the
source file is limited to 509 characters per line.
Examples
HST2TXT
Export information from the Trend history file(s) in proprietary binary format ( *.hst ) to a
plain text ( *.txt) or comma-delimited ( *csv ) file.
Function Group Execution Windows Embedded Thin Client
HST2TXT File Asynchronous Supported Supported Supported
Syntax
strStartDate
The start date of the data.
strStartTime
The start time of the data.
numDuration
Numerical tag containing duration of the data in hours.
numGroup
Numerical tag containing trend group number.
strTargetFile
String tag containing path and name of the file to be written.
optStrSeparator
Optional The data separator character for file. If omitted, the function uses the TAB
character (\t) to separate the values in the text file.
optNumMilliseconds
Optional numeric tag. If this parameter is false (0), the text file created will not show
milisecond-precision on the timestamp of each history sample.
optStrFormat
String tag, which specifies the order of the Month (M), Day (D), and Year (Y) for the
time-stamp format exported to the text file:
• "DMY": Day, Month, Year
• "MDY": Month, Day, Year
• "YMD": Year, Month, Day
If omitted, the function uses the format DMY for the timestamp in the text file.
optNumInterval
Optional numeric tag specifying the sampling interval. Only line itmes at this interval
are written as text to the target file; all other line items in the Trend history are
discarded.
For example, if optNumInterval has a value of 10, then only every tenth line item is
written out.
Returned value
Examples
Note: When using the comma character (,) as optStrSeparator, the function creates a
file in the CSV format (Comma Separated Values). It is a useful tool for exporting the
Trend history data from the proprietary binary format into a file that can be opened
with Microsoft Excel.
HST2TXTIsRunning
Returns the status of the HST2TXT function.
Function Group Execution Windows Embedded Thin Client
File
HST2TXTIsRunning Synchronous Supported Not supported Executed on Server
Syntax
HST2TXTIsRunning()
Examples
HST2TXTIsRunning()
LookupContains
This function verifies that an external file contains the specified keyword in its key column.
Syntax
LookupContains(strKey)
strKey
The keyword to look for in the file's keywords column.
Returned value
This function returns the following possible values:
Value Description
0 Specified keyword not found.
1 Specified keyword found.
Notes
The external file must already be loaded by calling the LookupLoad function.
Examples
LookupContains( "customer167" )
LookupGet
This function gets a value from an external file by cross-referencing from a specified
keyword.
Syntax
LookupGet(strKey)
strKey
The keyword to look for in the file's keywords column.
Returned value
This function returns (as a string) the cross-referenced value from the file's specified values
column.
If no value is found, then this function returns strKey.
Notes
The external file must already be loaded by calling the LookupLoad function.
Examples
LookupGet( "customer167" )
LookupLoad
This function loads an external file — typically, a delimited text file — that can be used to
look up table values. One column of the file is designated as the keywords column, and
another column is designated as the values column.
Function Group Execution Windows Embedded Thin Client
LookupLoad File Synchronous Supported Supported Supported
Syntax
LookupLoad(strFileName,numColKey,numColValue,strDelimiters)
strFileName
The file path and name of the external file.
numColKey
The number of the column/field that contains the keywords.
numColValue
The number of the column/field that contains the desired values.
strDelimiters
The delimiter that separates the columns/fields.
Returned value
This function returns the number of rows/lines in the specified file.
If the specified file cannot be found, then this function returns a negative number as an error
code.
Notes
This function only loads the specified file; it doesn't do anything with the file. To use the file,
call the LookupContains and LookupGet functions.
Also, to load another file, simply call this function again. Only one file can be loaded at a
time, however; the new file replaces the old in the project's memory.
Examples
PDFCreate
Creates a PDF file from the specified source file.
Function Group Execution Windows Embedded Thin Client
PDFCreate File Synchronous Supported Not supported Supported
Syntax
PDFCreate(strSourceFile{ | ,optStrPdfFile })
strSourceFile
String specifying the file path and name of the desired source file ( *.doc, *.txt, or
*.rtf ). If a complete path is not specified, then the function will look for the source
file in the project folder.
optStrPdfFile
Optional string specifying the file path and name of the created PDF file. If a file path
is not specified, then the PDF file will be saved in the same location as the source file.
If this parameter is omitted — that is, if no file path or name is specified at all — then
the PDF file will be saved in the same location and with the same name as the source
file. Only a new extension is added. For example, \path\MyDocument.rtf becomes
\path\MyDocument.pdf.
Note: When entering the file name without a path, a leading backlash ("\") is optional.
Returned value
Value Description
0 Success
1 Error in PDF profile information
3 Error saving PDF file
4 Job canceled
101 Error initializing PDF resource
102 Specified source file not found
103 Error generating PDF file
104 Wrong number of parameters
105 Wrong parameter type
Note: This function only supports the execution of one job at a time. If more than one user
or command attempts to call the function at the same time, then the function will fail
and return a value of 101.
Examples
PDFCreate( "C:\Report1.rtf" )
PDFCreate( "C:\Report2.doc", "C:\Converted1.pdf" )
PDFCreate( "C:\Report3.txt", "C:\Data\Converted1.pdf" )
Print
Prints a text file.
Function Group Execution Windows Embedded Thin Client
Print File Asynchronous Supported Supported Supported
Syntax
Print(strFilePath{ | ,optNumOrientation })
strFilePath
Path and name of the text file that will be printed.
optNumOrientation
Set the paper orientation as follows:
• 0 (default) = Portrait
• 1 = Landscape
Returned value
No returned values.
Note: The optNumOrientation parameter is not supported when running the project on a
Windows Embedded target system.
Examples
Print("C:\ReadMe.txt")
Print("C:\ReadMe.txt", 1)
Print(TagFileName, 0)
Note: This function can be used to print the contents of text files only. Information in any
other format (e.g., pictures, binary files, etc.) cannot be printed with this function.
RDFileN
Launches a File Browser window allowing you to select a file.
Syntax
tagSelectedFile
Name of the string tag receiving the name and path of a selected file. The tag name
must be enclosed in quotes, or the project will try to get the contents of the tag.
Moreover, it must be a valid tag name — it cannot be a VBScript variable name, for
example.
strSearchPath
The file path (directory) to search.
strMask
The mask used to filter the files.
optNumChangeDir
Optional numeric tag that indicates whether the operator will be able to change the
browsing directory. If this parameter is omitted or set TRUE ( 1 ), then the window
opened by this function will allow the operator to navigate to different directories. If
it is set FALSE ( 0 ), then the window will be restricted to the directory specified by
strSearchPath.
Returned value
0 Success
1 One of the parameters is not a string
2 Parameter 1 contains an invalid tag name
3 The user canceled the operation
Examples
WebGetFile
Downloads a file from a specified address and then saves it locally.
Function Group Execution Windows Embedded Thin Client
WebGetFile File Synchronous Supported Supported Supported
Syntax
WebGetFile(strURL,strLocalPath)
strURL
The URL (i.e., the Web address) of the file you want to download.
strLocalPath
The complete local file path where you want to save the file.
Returned value
−1 Timeout
0 File not found
1 File saved successfully
Examples
Graphic functions
These functions are used to manipulate and print project screens.
AutoFormat
Automatically formats a real number to a preset number of decimal places, according to the
virtual table of settings created by the SetDecimalPoints function. (This is similar to the
Format function, except that you do not need to specify the number of decimal places.)
Function Group Execution Windows Embedded Thin Client
AutoFormat Graphic Synchronous Supported Supported Supported
Syntax
AutoFormat(numValue)
numValue
The real number to be formatted.
Returned value
This function returns a formatted string.
Examples
In the following examples, the SetDecimalPoints function has already been used to set 3
decimal places for values greater than equal to 1.5 and 1 decimal place for values less than
or equal to −3.
GetScrInfo
Retrieves information from the project about an open screen.
Syntax
strScreenName
The name of the screen for which information is required.
tagResult
The name of the tag that will receive the information retrieved by the function. This
name must be enclosed in quotes, or the project will try to get the contents of the tag.
optNumResultType
A numeric flag specifying the type of information to be retrieved by the function:
Value Description
0 Default value. Writes the TOP, LEFT, BOTTOM
and RIGHT screen coordinates to each
consecutive position of the array tag specified
by the tagResult parameter.
1 Writes the TOP screen coordinate to the tag
specified by the tagResult parameter.
2 Writes the LEFT screen coordinate to the tag
specified by the tagResult parameter.
3 Writes the BOTTOM screen coordinate to the
tag specified by the tagResult parameter.
4 Writes the RIGHT screen coordinate to the tag
specified by the tagResult parameter.
0 Success
-1 The first and/or second parameters are not strings.
-2 Memory allocation error.
-3 optNumResultType is zero, but tagResult does not specify an array tag.
-4 Invalid tag by the tagResult parameter.
Examples
PrintSetup
Opens the standard setup dialog from the operating system, from where the printer can be
selected and configured.
Note: This function cannot be used with Tasks or in the Global Procedures script.
Syntax
PrintSetup()
PrintSetup()
PrintWindow
Prints a screenshot of a project screen. The screen does not need to be open and active; the
function can print a screen running in the background or even closed screen file.
Note: This function cannot be used with Tasks or in the Global Procedures script.
Syntax
PrintWindow( strScreenName
, optNumOrientation, optNumID, optStrMnemonicList )
strScreenName
The name of the screen to be printed. If this parameter is omitted, then the currently
active screen will be printed. (This parameter must be omitted when executing the
function on a Windows Embedded target system.)
optNumOrientation
A numeric flag specifying the paper orientation:
Value Description
0 Portrait
Value Description
1 Landscape
Default value is 0.
Note: The optNumOrientation parameter is not supported when running the project on
a Windows Embedded target system.
optNumID
The specific instance number of the screen. (The ID is assigned when the screen is
opened with the Open function.) This is an optional parameter; the default ID is 0.
optStrMnemonicList
A string that describes how the custom properties of any generic objects or linked
symbols in the screen will be completed when the screen is printed. This string has
the following syntax…
#Label:Value
…where Label is the name of the property and Value is the tag, expression or literal
value that the property will receive. You can declare two or more mnemonics, as long
as they are separated by spaces. See the Examples section below for an example.
Note: The optStrMnemonicList parameter does not work for a screen that is already
open; if the screen has been opened, then the custom properties have already
received their default values.
Returned value
This function does not return any value.
Examples
Note: You can use this function to print graphical reports that include Alarm/Event Control
and Trend Control objects.
ResetDecimalPointsTable
Resets the virtual table of settings created by the SetDecimalPoints function.
ResetDecimalPointsTable()
Syntax
ResetDecimalPointsTable()
Returned value
This function does not return any value.
Examples
RGBColor
Returns the number of the color defined by the RGB (Red, Green, Blue) codes.
Function Group Execution Windows Embedded Thin Client
RGBColor Graphic Synchronous Supported Supported Supported
Syntax
RGBColor(numRed,numGreen,numBlue)
numRed
Red code from the RGB code.
numGreen
Green code from the RGB code.
numBlue
Blue code from the RGB code.
Returned value
This function returns the number of the color defined by the RGB (Red, Green, Blue) codes.
Examples
TagColor RGBColor(51,153,102) // This function returns the value 13434828, which is the
color code for Sea Green.
TagColor RGBColor(TagRed,TagGreen,TagBlue) // This function returns the color code
of the RGB values set in the tags TagRed, TagGreen and TagBlue, respectively.
Note: See the list of RGB Codes and Color values for the most used colors in the Color
Interface section.
RGBComponent
RGBComponent is a built-in scripting function that gets the level of a color component (red,
green, or blue) in a specified color.
Function Group Execution Windows Embedded Thin Client
RGBComponentGraphic Synchronous Supported Supported Supported
Syntax
RGBComponent(numColor,{ numComponent | 0 | 1 | 2 })
numColor
The decimal code for a 24-bit RGB color, which can be any integer value between 0
and 16777215. (This color model is also known as "Truecolor" or "millions of colors.")
numComponent
The color component for which you want to get the level: 0 is red, 1 is green, and 2 is
blue.
Returned value
This function returns an integer value between 0 or 255, which represents the level of the
color component in the specified color.
Notes
For a list of frequently used RGB color codes and their equivalent "plain English" names, see
Color Interface.
Examples
Get the level of red in color code 13434828 (i.e., sea green):
RGBComponent( 13434828, 0 )
Get the level of the component specified by TagComponent in the color specified by
TagCode:
SaveScreenShot
This function takes a screen shot of the project screen and saves it to an image file.
Syntax
optStrScreenName
The name of a project screen file (*.scr). If no file path is specified, then
the file must be located in the Screen sub-folder of the project folder (e.g.,
\project_name\Screen\screen_name.scr).
For projects running on Windows, the screen may be either open or closed. For
projects running on Windows Embedded, the screen must be open.
This is an optional parameter; if no value (or "") is specified, then the currently open
and active screen is used.
optStrOutputFile
The name of the output file. If no file path is specified, then the file is saved
in the Web sub-folder of the project folder (e.g., \project_name\Web
\screen_name.jpg)
This is an optional parameter; if no value is specified, then either the value of
optStrScreenName or simply ScreenShot.jpg is used.
optNumFormat
The format of the image file:
Value Description
0 BMP
1 JPG
2 PNG
3 GIF
4 TIFF
Value Description
5 Auto
This is an optional parameter; if no value is specified, then the default is 1 (JPG).
Returned value
This function returns the following possible values:
Value Description
-1 Wrong number of parameters.
-2 Wrong parameter types.
-3 Invalid directory.
-4 Second parameter cannot be empty.
-5 Wrong format / invalid option for third parameter.
-6 Failed to save file.
-7 Failed to create compatible bitmap.
0 Success.
Notes
The Viewer task must be running for this function to be executed. The function can be called
by the Background Task (e.g., by a Script or Math worksheet), but it will fail if the Viewer
task is not running.
Examples
Save the currently active screen to \project_name\Web\ScreenShot.JPG:
SaveScreenShot()
SaveScreenShot( "main.scr" )
Save the currently active screen as a BMP with the name of the currently logged user:
SetDecimalPoints
Sets the number of decimal places to be displayed, for a specified range of real numbers.
This setting will be used by all screen objects and animations that have the Auto Format
option enabled, as well as by the AutoFormat function.
Function Group Execution Windows Embedded Thin Client
Graphic
SetDecimalPoints Synchronous Supported Supported Supported
Syntax
SetDecimalPoints(numBaseValue,numDecimalPoints)
numBaseValue
The base value of the range of real numbers. For negative values, the range includes
all real numbers less than or equal to that value. For positive values, the range includes
all real numbers greater than or equal to that number. (You can set the other limit of
the range by calling the function again with a new set of parameters.)
numDecimalPoints
The number of decimal places to be displayed, for the range of real numbers specified
by numBaseValue.
Returned value
0 Error
1 Success
Notes
If you call this function more than once with different parameters for each call, then you can
build a virtual table of format settings. You can set a different number of decimal places for
each range of real numbers, and all of the settings are saved for the duration of runtime or
until you reset the table using the ResetDecimalPointsTable function.
Note: This formatting does not change the actual value of any tag or expression. It only
changes how the value is displayed by on-screen objects.
Examples
Tag SetDecimalPoints( 1.5, 3 ) // Displays 3 decimal places for all real numbers
greater than or equal to 1.5.
Tag SetDecimalPoints( #3, 1 ) // Displays 1 decimal place for all real numbers less
than or equal to −3.
SetDisplayUnit
Finds all tags and all Grid object and Trend Control object values that have a specific
engineering unit (as stored in the Unit tag field), and then sets the DisplayUnit, UnitDiv,
and UnitAdd fields on those tags.
Syntax
SetDisplayUnit(strUnitOrigin,strDisplayUnit,numDiv,numAdd)
strUnitOrigin
The engineering unit to be matched.
strDisplayUnit
The new value for the DisplayUnit tag field.
numDiv
The new value for the UnitDiv tag field.
numAdd
The new value for the UnitAdd tag field.
Returned value
0 Success.
-1 Wrong number of parameters.
-2 strUnitOrigin parameter is empty.
-3 numDiv parameter is invalid (equal to 0).
Notes
This function only affects how the tag values are displayed on screen; it does not change the
actual tag values in any way.
Examples
Tag SetDisplayUnit( "C", "F", 0.555556, 32 ) // For all tags and object
values with a Unit of "C", the DisplayUnit tag field is set to "F", the UnitDiv tag field is set to
0.555556, and the UnitAdd tag field is set to 32.
SetTagDisplayUnit
Sets the DisplayUnit, UnitDiv, and UnitAdd properties on a specific tag.
Function Group Execution Windows Embedded Thin Client
Graphic
SetTagDisplayUnit Synchronous Supported Supported Supported
Syntax
SetTagDisplayUnit(strTagName,strDisplayUnit,numDiv,numAdd)
strTagName
The name of the specific tag on which the DisplayUnit, UnitDiv and UnitAdd tag
fields will be set.
Note: If this parameter is given a tag, then that tag should contain the name of the tag
on which the tag fields will be set.
strDisplayUnit
The new value for the DisplayUnit tag field.
numDiv
The new value for the UnitDiv tag field.
numAdd
The new value for the UnitAdd tag field.
Returned value
0 Success.
-1 Wrong number of parameters.
-2 Specified tag doesn't exist.
-3 numDiv parameter is invalid (equal to 0).
Examples
Translation functions
These functions are used to access the translation tool during runtime.
Ext
Translates specified text using the active translation file.
Function Group Execution Windows Embedded Thin Client
Ext Translation Synchronous Supported Supported Supported
Syntax
Ext(strText)
strText
The text to be translated.
Returned value
Returns the text translation using the active translation file.
Examples
SetLanguage
This function sets the language of the project to one of the languages configured in the
Translation Table.
Syntax
SetLanguage(numLanguageCode)
numLanguageCode
The code for the langauge that you want to set as the current translation. The
language must already be configured in the Translation Table.
Returned value
This function returns the following possible values:
Value Description
0 Error
1 Success
Notes
Language codes are defined by ISO 639-1.
Examples
Set the language to "English – United States":
SetLanguage( 1033 )
SetLanguage( 1036 )
SetTranslationFile
Sets the active translation file and translates all enabled text within the project.
Syntax
SetTranslationFile(strFileName{ | ,optStrColumnName })
strFileName
The name of a translation file
optStrColumnName
The name of the column from the translation file, which must be used to translate the
texts in the project. When omitted, the second column from the translation file will be
used by default.
Returned value
0 Success.
−1 Invalid number of parameters.
−2 Wrong parameter type.
−3 Translation file could not be found or opened.
Examples
Note: You must enable the Translation option from the Project Settings dialog for this
function to work.
CAUTION
You must have a translation file in the Translation Tool.
Multimedia functions
These functions are used to play external audio and video files.
Play
Plays a specified WAV audio file.
Note: For this function to work on a Thin Client, the target WAV file must be located in the
same file path on the remote station.
Description
Plays a specified WAV audio file.
Syntax
Play(strFileName{ | ,optNumSynchronous })
strFileName
The file path and name of the WAV file to play.
optNumSynchronous
A numeric flag specifying whether the function executes synchronously or
asynchronously:
Value Description
0 Asynchronous (i.e., the project continues
without waiting for the function to return)
1 Synchronous (i.e., the project pauses while it
waits for the function to return)
This is an optional paramter; if no value is specified, then the default is 0.
Returned value
This function does not return any value.
Examples
Play( "C:\Sounds\Wav\alarm.wav" )
DbVersion
DbVersion is a built-in scripting function that gets the version number of your project tags
database.
Function Group Execution Windows Embedded Thin Client
DbVersion System Info Synchronous Supported Supported Supported
Syntax
DbVersion()
DbVersion()
GetAppHorizontalResolution
Gets the default horizontal screen resolution (in pixels) of the project.
Function Group Execution Windows Embedded Thin Client
System Info Synchronous
GetAppHorizontalResolution Supported Not supported Executed on Server
Syntax
GetAppHorizontalResolution()
GetAppPath
Returns the file path of the project folder.
Syntax
GetAppPath()
Note: This function must return the current path of the project, including the "\" at the end of
the path.
GetAppVerticalResolution
Gets the default vertical screen resolution (in pixels) of the project.
Syntax
GetAppVerticalResolution()
Examples
GetComputerIP
Returns the first IP Address of the local computer.
Function Group Execution Windows Embedded Thin Client
System Info
GetComputerIP Synchronous Supported Supported Supported
Syntax
GetComputerIP()
GetComputerName
Returns the local computer name.
Function Group Execution Windows Embedded Thin Client
System Info
GetComputerName Synchronous Supported Not supported Supported
Syntax
GetComputerName()
GetCursorX
Gets the X-coordinate of the mouse cursor on the screen.
Function Group Execution Windows Embedded Thin Client
GetCursorX System Info Synchronous Supported Supported Supported
Syntax
GetCursorX()
GetCursorY
Gets the Y-coordinate of the mouse cursor on the screen.
Function Group Execution Windows Embedded Thin Client
GetCursorY System Info Synchronous Supported Supported Supported
Syntax
GetCursorY()
GetDisplayHorizontalResolution
Gets the horizontal resolution (in pixels) of the display connected to the local station.
Function Group Execution Windows Embedded Thin Client
System Info Synchronous
GetDisplayHorizontalResolution Supported Supported Supported
Syntax
GetDisplayHorizontalResolution()
GetDisplayVerticalResolution
Gets the vertical resolution (in pixels) of the display connected to the local station.
Function Group Execution Windows Embedded Thin Client
System Info Synchronous
GetDisplayVerticalResolution Supported Supported Supported
Syntax
GetDisplayVerticalResolution()
GetFreeMemoryCE
Returns the free memory available in a Windows Embedded device.
Function Group Execution Windows Embedded Thin Client
System Info
GetFreeMemoryCE Synchronous Not supported Supported Supported
Syntax
GetFreeMemoryCE({ | optNumType })
optNumType
A numeric flag that specifies which type of free memory the project should retrieve
from the device:
Value Description
0 Total free program memory
Examples
Tag GetFreeMemoryCE()
GetHardKeyModel
Returns the model name of your Hardkey.
Function Group Execution Windows Embedded Thin Client
System Info
GetHardKeyModel Synchronous Supported Not supported Executed on Server
Syntax
GetHardKeyModel()
GetHardKeySN
Returns the serial number of the Hardkey.
Syntax
GetHardkeySN()
GetIPAll
Returns the number of IP Addresses assigned to the local station and stores the IP
Addresses in a string array tag.
Syntax
tagArrayIP
Name of the string array tag receiving the IP addresses found. This name must be
enclosed in quotes, or the project will try to get the contents of the array tag.
optRefresh
Optional tag that triggers a refresh of this function, if you use it in a Text Data Link
animation. Every time this tag changes value, the project will refresh the function.
Returned value
Examples
GetMemoryCE
Returns the total memory available in a Windows Embedded device.
Function Group Execution Windows Embedded Thin Client
GetMemoryCE System Info Synchronous Not supported Supported Supported
Syntax
GetMemoryCE({ | optNumType })
optNumType
A numeric flag that specifies which type of memory the project should retrieve from
the device:
Value Description
0 Total program memory
1 Total storage memory
2 Total memory
This is an optional parameter; if no value is specified, then the default is 0.
Returned value
Examples
Tag GetMemoryCE( 1 )
GetNetMACID
Gets the MAC ID unique code from the currently installed network adapter(s).
Function Group Execution Windows Embedded Thin Client
GetNetMACID System Info Synchronous Supported Supported Supported
Syntax
optStrMACID
Name of a string tag, which receives the MAD ID of the network adapter. If there
is more than one network adapter currently installed in the station, the user can
configure a string array tag in this parameter, so each array position receives the MAC
ID from one network adapter.
optStrAdapterName
Name of a string tag, which receives the name of the network adapter. If there is more
than one network adapter currently installed in the station, the user can configure a
string array tag in this parameter, so each array position receives the name from one
network adapter. This parameter is optional.
Returned value
Value Description
Examples
NumNIC GetNetMACID("MACIDTag")
NumNIC GetNetMACID("MACIDTag", "AdapterName")
NumNIC GetNetMACID("MACIDTag[1]", "AdapterName[1]")
GetOS
Reports the current operating system.
Syntax
GetOS()
0 Windows 3.11
1 Windows 95/98/ME
2 Windows 2000/XP/Vista/7
3 Windows CE/Mobile
Examples
GetPrivateProfileString
Reads a specified parameter from an .ini file using the standard .ini format.
Function Group Execution Windows Embedded Thin Client
System Info
GetPrivateProfileStringSynchronous Supported Supported Supported
Syntax
strSection
The section name to be read.
strName
The parameter name to be read.
strDefault
The default setting for this parameter. If the parameter is not found in the .ini file,
the function will return this default setting.
strFileName
The path and name of the .ini file to be read.
Returned value
Returns the value of the specified parameter.
Examples
GetProductPath
Gets the path to the program directory.
Function Group Execution Windows Embedded Thin Client
System Info
GetProductPath Synchronous Supported Supported Supported
Syntax
GetProductPath()
GetRegValue
Gets a the value of a variable in the Windows registry.
Function Group Execution Windows Embedded Thin Client
GetRegValue System Info Synchronous Supported Supported Not supported
Syntax
numMainKey
Numeric tag with the following possible values:
0 HKEY_LOCAL_MACHINE
1 HKEY_CLASSES_ROOT
2 HKEY_CURRENT_USER
3 HKEY_USERS
4 HKEY_CURRENT_CONFIG
5 HKEY_PERFORMANCE_DATA
strKey
Path where the value is located in the Main Key.
strVariableName
Name of the variable to get. The maximum length is 255 characters.
Returned value
If the function succeeds, then the function returns the variable value. Otherwise one of the
following error codes will be returned:
Examples
GetRegValueType
Gets the data type of the value of a variable in the Windows registry.
Function Group Execution Windows Embedded Thin Client
System Info
GetRegValueType Synchronous Supported Supported Not supported
Syntax
numMainKey
Numeric tag with the following possible values:
0 HKEY_LOCAL_MACHINE
1 HKEY_CLASSES_ROOT
2 HKEY_CURRENT_USER
3 HKEY_USERS
4 HKEY_CURRENT_CONFIG
5 HKEY_PERFORMANCE_DATA
strKey
Path where the value is located in the Main Key.
strVariableName
Name of the variable to get. The maximum length is 255 characters.
Returned value
Examples
GetServerHostName
Gets the host name of the project's Server station.
Function Group Execution Windows Embedded Thin Client
System Info
GetServerHostName Synchronous Not supported Not supported Supported
Syntax
GetServerHostName()
GetTickCount
Gets the current value of the clock ticks counter.
Function Group Execution Windows Embedded Thin Client
GetTickCountSystem Info Synchronous Supported Supported Supported
Syntax
GetTickCount()
Examples
InfoAppAlrDir
Returns the file path of the project's Alarm sub-folder.
Function Group Execution Windows Embedded Thin Client
System Info
InfoAppAlrDir Synchronous Supported Supported Supported
Syntax
InfoAppAlrDir()
InfoAppHSTDir
Returns the file path of the project's History sub-folder.
Function Group Execution Windows Embedded Thin Client
System Info
InfoAppHSTDir Synchronous Supported Supported Supported
Syntax
InfoAppHstDir()
InfoDiskFree
Returns free disk space on the local computer.
Function Group Execution Windows Embedded Thin Client
InfoDiskFreeSystem Info Synchronous Supported Not supported Supported
Syntax
InfoDiskFree(strDisk)
strDisk
The name of the disk volume to be checked.
Returned value
Returns disposable free space in the disk in bytes.
Examples
InfoResources
Returns the local computer's disposable resources.
Function Group Execution Windows Embedded Thin Client
System Info
InfoResources Synchronous Supported Supported Supported
Syntax
InfoResources(numSelect)
numSelect
A numeric flag that specifies which resource to examine:
Value Description
0 System functions (%)
1 GDI functions (%)
2 USER functions (%)
3 Memory (in bytes)
Examples
IsActiveXReg
Determines whether an ActiveX control is registered with the operating system.
Function Group Execution Windows Embedded Thin Client
IsActiveXRegSystem Info Synchronous Supported Supported Supported
Syntax
numType
A numeric flag that specifies a format for the strProgIDorFileName parameter:
0 Verify by Program ID
1 Verify by File Name
strProgIDorFileName
The program ID or file path of the ActiveX control.
Returned value
Examples
IsAppChangedOnServer
When executed on the Client, this function checks to see if the project files available on the
Server are newer than the files currently on the Client.
Syntax
InfoDiskFree({ "optTagUpdateTrigger" })
optTagUpdateTrigger
An alphanumeric string enclosed in quotes, or the name of a String tag that contains
the desired string. This string, in turn, should be the name of the tag that will trigger
the function — when the value of this tag changes, the function is automatically
executed. (Normally, a function executes only when it is explicity called, such as with
the Command animation.) To execute the function at a regular interval, you can use
one of project's system tags like Day or Month.
This parameter is optional.
Returned value
0 No
1 Yes
Notes
For this function, "Server" means the station that is actually running your project and has the
TCP/IP Server module enabled, and "Client" means a Thin Client or Secure Viewer that is
communicating with the Server via TCP/IP. For more information, see Configuring a Web
Solution.
Note: If the files on the Server are newer — that is, if this function returns TRUE — then you
can use ReloadAppFromServer to update the Client.
Examples
Tag IsAppChangedOnServer()
Tag IsAppChangedOnServer( "CheckVersion" ) // Function is automatically
called when the value of CheckVersion changes.
NoInputTime
Returns the time elapsed since the last keyboard action.
Syntax
NoInputTime({ "optTagUpdateTrigger" })
optTagUpdateTrigger
Optional tag that triggers an update when this function is used in a Text Data Link
animation. Every time this tag's value changes, the project triggers the function.
Returned value
Returns the time (in seconds) since the last keyboard action.
Examples
Tag NoInputTime()
Note: You cannot implement this function directly from a Text object.
ProductVersion
Returns the program version number.
Syntax
ProductVersion()
RegSaveCE
Saves the Windows Embedded system registry. This function will only work if the save
registry capability is enabled in the Windows Embedded device image.
Syntax
RegSaveCE()
Returned value
0 Success.
−1 Failed to save HKEY_CLASSES_ROOT.
−2 Failed to save HKEY_CURRENT_USER.
−3 Failed to save HKEY_LOCAL_MACHINE.
−4 Failed to save HKEY_USERS.
−5 Function executed in NT platform.
Note: This function calls the RegFlushKey function from the Windows CE API. The
implementation of this function is OEM dependent therefore it is not guaranteed to
work with all the Windows Embedded devices.
Examples
ReloadAppFromServer
When executed on the Client, this function reloads the necessary project files from the
Server while maintaining the current state of the project on the Client.
Function Group Execution Windows Embedded Thin Client
System Info
ReloadAppFromServer Synchronous Supported Supported Supported
Syntax
ReloadAppFromServer()
Tag ReloadAppFromServer( )
SaveAlarmFile
Use this function to enable/disable the saving feature for alarm history and to set the path
where the alarm history files must be handled.
Function Group Execution Windows Embedded Thin Client
System Info
SaveAlarmFile Synchronous Supported Supported Not supported
Syntax
numType
Tag containing the number and operation, as follows:
0 Disable save the alarm file to the local disk
1 Enable save the alarm file to local disk
2 Enable save the alarm file to local disk and to the remote path specified in the
OptRemotePath parameter
optRemotePath
Tag containing the name of the remote computer where the alarm file will be saved
simultaneously to the local computer and to the remote path when numType equals 2.
Returned value
0 Success
1 2nd parameter is not a string
2 2nd parameter is missing
Examples
Tag SaveAlarmFile( 0 )
Tag SaveAlarmFile( 1 )
Rag SaveAlarmFile( 2, "Z:\Apps\AppDemo" )
SetAppAlarmPath
Sets the Alarm path for the current project.
Syntax
SetAppAlarmPath(strPath)
strPath
The new Alarm path for the current project.
Returned value
This function does not return any value.
Examples
SetAppAlarmPath( "C:\Studio\Alarm\" )
SetAppHSTPath
Sets the file path (directory) where Trend history files will be saved, in the proprietary format
( .HST ).
Syntax
SetAppHSTPath(strPath)
strPath
The file path (directory) where Trend history files will be saved.
Returned value
This function does not return any value.
Notes
This function is useful when you intend to change the file path during runtime. You can
also set the file path to a network drive by mapping it on the local station, or by using the
following syntax:
Please note that this function does not copy existing history files from the default directory
to a new one; it only sets the file path for new history files saved after the function is called.
Examples
SetAppHstPath("C:\Studio\History\")
SetDateFormat
Sets the format and separator for the date string.
Syntax
strSeparator
The separator character for the date string.
strFormat
String tag, which specifies the order of the Month (M), Day (D), and Year (Y) in the
date string.
DMY Day, Month, Year
MDY Month, Day, Year
YMD Year, Month, Day
Returned value
0 No error
1 Invalid parameter
Examples
SetKeyboardLanguage
Sets the language of any Virtual Keyboards in the project.
Syntax
SetKeyboardLanguage(strLanguage)
strLanguage
String tag with the language code used for the Virtual Keyboards. The currently
available options include:
EN English (default)
GE German
Returned value
0 Success
1 Error
Examples
SetRegValue
Sets the value of a variable in the Windows registry.
Syntax
numMainKey
Numeric tag with the following possible values:
0 HKEY_LOCAL_MACHINE
1 HKEY_CLASSES_ROOT
2 HKEY_CURRENT_USER
3 HKEY_USERS
4 HKEY_CURRENT_CONFIG
5 HKEY_PERFORMANCE_DATA
strKey
Path where the value is located in the Main Key.
strVariableName
Name of the variable to be set. The maximum length is 255 characters.
numType
Two types are currently supported:
0 DWord
1 String
strOrNumValue
Variable value.
Returned value
0 Success.
−1 Invalid number of parameters or invalid Main Key.
−2 Invalid type.
−3 Failed to read the variable value; verify that you have the proper security rights.
Examples
CAUTION
This register can affect the Windows system configuration. You should be extremely careful
and edit the registry only when you are certain about the configuration.
SetWebConfig
Configures the Web settings for the current project. The settings configured in the function
are updated on the HTML files of the project.
Function Group Execution Windows Embedded Thin Client
SetWebConfigSystem Info Synchronous Supported Supported Executed on Server
Syntax
strServerIP
Data Server IP Address. IP address (or hostname) of the computer where the TCP
Server module of Visual Designer is running.
optStrBackupURL
Optional alternative URL for the project's Web pages. The Thin Client will look for the
Web pages in this URL if it does not find them in the same URL written in the Address
field of the Web browser.
optStrPathFile
Optional file path and name of the HTML file to be updated. If you specify only the file
path without a file name, then all of the HTML files in the specified file path will be
updated.
Note: You can specify an individual file (e.g., you only want to update one file. This is
especially useful for projects running on Windows Embedded target systems.
optNumHostPort
Optional TCP Port number that the Thin Client must use to exchange data with the
TCP Server module of Visual Designer.
optStrSecondaryServerIP
Optional alternative data server IP address. The Thin Client will attempt to connect to
the TCP Server module of Visual Designer in this IP Address if it is not able to connect
to the TCP Server module running in the IP Address specified in the strServerIP
parameter.
optNumProtocolFlag
Optional When you use the Web Tunneling Gateway option, this parameter specifies
whether the Thin Client will use either HTTP to exchange data with the Web Server or
HTTPS (SSL – Secure Socket Layer). If this flag has the value 0, the Thin Client will use
HTTP. If this flag has the value 1, the Thin Client will use HTTPS (SSL).
optNumGtwPort
Optional TCP Port number that the Thin Client must use to exchange data with the
Web Server when using the Web Tunneling Gateway.
optStrGtwIP
Optional IP Address (or hostname) of the computer where the Web Tunneling
Gateway is running.
optStrSecondaryGtwIP
Optional Alternative IP Address (or hostname) of the computer where the Web
Tunneling Gateway is running. The Thin Client will attempt to connect to the Web
Tunneling Gateway in this IP Address if it is not able to connect to the Web Tunneling
Gateway running in the IP Address specified in the optStrGtwIP parameter.
optStrISSymbolURL
Optional URL from where the updated version of ISSymbol (ActiveX control) must be
downloaded if it is not properly registered in the Thin Client station.
Note:
• You can use tags or expressions as arguments of this function. Therefore, you
can use this function to configure the web settings automatically during runtime,
according to the network settings of each project (IP address, Web Server URL,
and so forth).
• Only the first parameter of this function (strServerIP) is mandatory. All other
parameters are optional. The parameters that are not configured in the function
assume the default value configured in the Web tab of Project Settings.
• The following parameters should be omitted unless you intend to use the
Web Tunneling Gateway: optNumProtocolFlag, optNumGtwPort, optStrGtwIP,
optStrSecondaryGtwIP, and optStrISSymbolURL.
Returned value
Error Description
0 No error
1 Invalid number of parameters
2 Invalid Server IP address 1
3 Invalid URL
4 Invalid optional path
5 No Web pages found
Examples
SNMPGet
Gets information from computers or network devices through the SNMP protocol.
Syntax
strAddress
The address of the machine/computer (e.g., "127.0.0.1" or "localhost" ).
strCommunity
SNMP community name when communicating with the computer (e.g., "public" ).
strOID
OID to be consulted (e.g., ".1.3.6.1.2.1.1.1.0" ).
strTagName
Name of the tag that will receive the requested value.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
Returned value
Value Description
0 No error
−1 Invalid number of parameters
−2 Invalid parameter
−3 Cannot connect to the remote machine
−4 Cannot connect to the remote machine
−5 GET operation failed
−6 Invalid OID
−7 Invalid tag name
−8 Invalid tag type
−9 This function is not supported in the current OS
Examples
SNMPSet
Uses the Simple Network Management Protocol (SNMP) to set a value on a target computer
of network device.
Syntax
strAddress
The address of the target computer or device (e.g., "127.0.0.1" or "localhost" ).
strCommunity
The SNMP community name (e.g., "public" ) when communicating with the target
computer or device.
strOID
The Object ID (OID) to be set.
Value
The value to be set to the specified OID.
optNumType
A numeric value, or a tag of Integer type, specifying the data type of Value. This is an
optional parameter, but if it is included, then it must have one of following values:
Value Type Description
Returned value
Value Description
0 No error
−1 Invalid number of parameters
−2 Invalid parameter
−3 Cannot connect to the remote machine
−4 Cannot connect to the remote machine
−5 SET operation failed
−6 Invalid OID
−7 Invalid tag name
−8 Invalid tag type
−9 This function is not supported in the current OS
Examples
WritePrivateProfileString
Writes a specified setting to the project viewer initialization file, using the standard .ini
format.
Function Group Execution Windows Embedded Thin Client
System Info Synchronous
WritePrivateProfileString Supported Supported Supported
Syntax
WritePrivateProfileString
( strSection, strName, strValue, strFileName )
strSection
The section name to be written.
strName
The parameter name to be written.
strValue
The value to be written.
strFileName
The path and name of the .ini file to be written.
Returned value
The function returns 1 if the file was updated successfully.
Notes
When running on Windows Embedded this function will rewrite the entire file, therefore its
use is not recommended for lengthy files on Windows Embedded devices. The function will
also add the following lines at the end of the file when on a Windows Embedded device:
[FileBackUpControl]
Valid=1
Examples
ExecuteAlarmAck
This function acknowledges an active alarm on the specified tag. The advantage of using
this function is that if used from the Thin Client, the Alarm task will store the user name and
station from which the alarm was acknowledged.
Function Group Execution Windows Embedded Thin Client
Tags Database
ExecuteAlarmAck Synchronous Supported Supported Supported
Syntax
strTagName
Name of the tag on which the alarm will be acknowledged.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
optStrComment
An optional comment to send to the Alarm task, along with the user name and station.
optStrAlarmType
If more than one alarm is active on the specified tag, you can specify which alarm
(e.g., Hi, Lo, HiHi, LoLo) to acknowledge. Otherwise, the function acknowledges the
most recently activated alarm.
Returned value
Value Description
0 Successfully executed.
-1 Invalid number of parameters.
Value Description
Examples
ForceTagChange
Forces the database to write a value to a tag and act as if it were a tag change even if the
new value is equal to the old value.
Function Group Execution Windows Embedded Thin Client
Tags Database
ForceTagChange Synchronous Supported Supported Supported
Syntax
strTagName
The name of the tag being forced to accept the new value.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
numValue
The new value to be written to the specified tag.
Returned value
This function does not return any value.
Examples
GetTagValue
Gets the value of the specified tag from the project tags database.
Function Group Execution Windows Embedded Thin Client
GetTagValue Tags Database Synchronous Supported Supported Supported
Syntax
strTagName
The name of the tag of which you want to get the value.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
optNumRefresh
Tag that you want to use as a trigger to refresh the function. When the value of the
specified Tag changes, the function is executed again. (Normally, a function executes
only when the object on which it is configured changes in some way, such as when a
Pushbutton object is clicked.) To execute the function at a regular interval, you can use
one of project's system tags such as Second, Minute or Hour.
Returned value
This function only returns the value of the Tag specified by strTagName. If the specified
Tag does not exist, then the function returns null.
Note: The value of the Tag specified by optNumRefresh does not affect the function's
returned value in any way.
Examples
RunGlobalProcedureOnFalse
This function directly executes a VBScript procedure when the value of a specified tag/
expression becomes FALSE.
Function Group Execution Windows Embedded Thin Client
Tags Database
RunGlobalProcedureOnFalseSynchronous Supported Supported Supported
Syntax
RunGlobalProcedureOnFalse("strCondition",strProcedureOnFalse)
strCondition
A project tag or expression.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
strProcedureOnFalse
The name of the procedure (in the Procedures folder) to execute when the value of
strCondition becomes FALSE (zero).
Returned value
This function returns the following possible values:
Value Description
0 Error
1 Success
Notes
Once this function is called, it remains active until the runtime project is stopped. That
means every time the tag/expression becomes FALSE, the procedure is executed. However,
the procedure is executed only once when the tag/expression becomes FALSE; it is not
continuously executed while the tag/expression is FALSE.
The procedure is executed on the Client. To execute a procedure on the Server, use the
RunGlobalProcedureOnServer function.
Examples
When the value of TagOnFalse becomes FALSE (zero), execute the procedure
UsingOnFalse:
RunGlobalProcedureOnTrigger
This function directly executes a VBScript procedure when the value of a specified tag
changes.
Function Group Execution Windows Embedded Thin Client
Tags Database Synchronous
RunGlobalProcedureOnTrigger Supported Supported Supported
Syntax
RunGlobalProcedureOnTrigger("strTagName",strProcedureOnTrigger)
strTagName
The name of a project tag.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
strProcedureOnTrigger
The name of the procedure (in the Procedures folder) to execute when the value of the
specified tag changes.
Returned value
This function returns the following possible values:
Value Description
0 Error
1 Success
Notes
Once this function is called, it remains active until the runtime project is stopped. That
means every time the value of the tag changes, the procedure is executed.
The procedure is executed on the Client. To execute a procedure on the Server, use the
RunGlobalProcedureOnServer function.
Examples
When the value of TagTrigger changes, execute the procedure UsingTrigger:
RunGlobalProcedureOnTrue
This function directly executes a VBScript procedure when the value of a specified tag/
expression becomes TRUE.
Function Group Execution Windows Embedded Thin Client
Tags Database
RunGlobalProcedureOnTrue Synchronous Supported Supported Supported
Syntax
RunGlobalProcedureOnTrue("strCondition",strProcedureOnTrue)
strCondition
A project tag or expression.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
strProcedureOnTrue
The name of the procedure (in the Procedures folder) to execute when the value of
strCondition becomes TRUE (non-zero).
Returned value
This function returns the following possible values:
Value Description
0 Error
1 Success
Notes
Once this function is called, it remains active until the runtime project is stopped. That
means every time the tag/expression becomes TRUE, the procedure is executed. However,
the procedure is executed only once when the tag/expression becomes TRUE; it is not
continuously executed while the tag/expression is TRUE.
The procedure is executed on the Client. To execute a procedure on the Server, use the
RunGlobalProcedureOnServer function.
Examples
When the value of TagOnTrue becomes TRUE (non-zero), execute the procedure
UsingOnTrue:
SetTagValue
Sets the value of the specified tag in the project tags database.
Function Group Execution Windows Embedded Thin Client
SetTagValue Tags Database Synchronous Supported Supported Supported
Syntax
strTagName
The name of the tag that you want to set.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
TagValue
The new value to be set to the specified tag.
Returned value
Value Description
Examples
Loop functions
These functions are used to implement repeating, incrementing loop within a script.
For … Next
Implements a For … Next loop within a Math worksheet or Command animation. The
section of the script affected by the loop begins with the For() function call and ends with
the Next notation. The Next notation directs back to the beginning of the loop.
Function Group Execution Windows Embedded Thin Client
For Loop N/A Supported Supported Supported
Syntax
numInitialValue
The initial step (increment) of the loop.
numFinalValue
The final step (increment) of the loop.
numStep
The step (increment) of the loop.
Returned value
Returns the step on which the loop is currently running.
Examples
Tag For( 1, 5, 1 )
Next
Note: You must partner every For function with a Next notation. As shown in the example,
you must place the Next notation in the tag field of the math script.
ODBC functions
These functions are used interact with an external database via Open Database Connectivity
(ODBC).
Note: These functions are provided to support legacy database interfaces. In most cases,
we recommend that you use the newer Database/ERP connections manager and
functions.
ODBCBeginTrans
Begins a transaction with the connected data source.
Function Group Execution Windows Embedded Thin Client
ODBC
ODBCBeginTrans Synchronous Supported Not supported Executed on Server
Syntax
ODBCBeginTrans(numHandler)
numHandler
The handler returned by the ODBCOpen function.
Returned value
0 Success
1 Invalid handler
2 Database not open
3 Error beginning transaction
Examples
Tag ODBCBeginTrans( 5 )
ODBCBindCol
Binds a column to a tag.
Syntax
numHandler
The handler returned by the ODBCOpen function.
strColName
The Database column name.
strColType
The SQL data type (one of the following):
• SQL_BIT
• SQL_TINYINT
• SQL_LONGVARCHAR
• SQL_CHAR
• SQL_VARCHAR
• SQL_DECIMAL
• SQL_NUMERIC
• SQL_DATE
• SQL_TIME
• SQL_TIMESTAMP
• SQL_DOUBLE
• SQL_REAL
• SQL_SMALLINT
• SQL_INTEGER
strTagName
The name of the tag to bind to the column.
Returned value
0 Success
1 Invalid Handler
Notes
Every time you finish binding columns, you must call the ODBCQuery function.
Examples
ODBCCanAppend
Returns whether the database will allow you to add new records.
Syntax
ODBCCanAppend(numHandler)
numHandler
The handler returned by the ODBCOpen function.
Returned value
Examples
Tag ODBCCanAppend( 5 )
ODBCCanTransact
Returns whether the database allows transactions.
Syntax
ODBCCanTransact(numHandler)
numHandler
The handler returned by the ODBCOpen function.
Returned value
Examples
Tag ODBCCanTransact( 2 )
ODBCCanUpdate
Returns whether the database can be updated.
Function Group Execution Windows Embedded Thin Client
ODBC
ODBCCanUpdate Synchronous Supported Not supported Executed on Server
Syntax
ODBCCanUpdate(numHandler)
numHandler
The handler returned by the ODBCOpen function.
Returned value
Examples
Tag ODBCCanUpdate( 6 )
ODBCClose
Closes a connection to the database.
Function Group Execution Windows Embedded Thin Client
ODBCClose ODBC Synchronous Supported Not supported Executed on Server
Syntax
ODBCClose(numHandler)
numHandler
The handler returned by the ODBCOpen function.
Returned value
0 Success
1 Invalid Handler
Examples
Tag ODBCClose( 5 )
ODBCCommitTrans
Commits a transaction. Call this function upon completing transactions.
Function Group Execution Windows Embedded Thin Client
ODBC
ODBCCommitTrans Synchronous Supported Not supported Executed on Server
Syntax
ODBCCommitTrans(numHandler)
numHandler
The handler returned by the ODBCOpen function.
Returned value
0 Success
1 Invalid handler
2 Database not open
3 Error committing transaction
Examples
Tag ODBCCommitTrans( 1 )
ODBCDelete
Deletes the current record.
Function Group Execution Windows Embedded Thin Client
ODBCDelete ODBC Synchronous Supported Not supported Executed on Server
Syntax
ODBCDelete(numHandler)
numHandler
The handler returned by the ODBCOpen function.
Returned value
0 Success
1 Invalid handler
2 Database not open
3 Delete error
Notes
After a successful deletion, you must explicitly call one of the "move" functions (i.e.,
ODBCMove, ODBCMoveFirst, ODBCMoveLast, ODBCMoveNext, ODBCMovePrev) to move
off the deleted record.
Examples
Tag ODBCDelete( 5 )
ODBCExecuteSQL
Directly executes an SQL statement.
Syntax
numHandler
The handler returned by the ODBCOpen function.
strSqlCommand
A valid SQL statement.
Returned value
0 Success
1 Invalid handler
2 Database not open
3 Invalid parameter
4 Error executing SQL command
Note: This function does not return any records, regardless of the statement that is
executed.
Examples
ODBCInsert
Inserts a new record in the database.
Function Group Execution Windows Embedded Thin Client
ODBCInsert ODBC Synchronous Supported Not supported Executed on Server
Syntax
ODBCInsert(numHandler)
numHandler
The handler returned by the ODBCOpen function.
Returned value
0 Success
1 Invalid handler
2 Database not open
3 Insert error
Notes
This function uses the values of the tags bound by the ODBCBindCol function to create the
new record.
Examples
Tag ODBCInsert( 7 )
ODBCIsBOF
Returns whether you have gone above the first record of the record set. (Call this function
before scrolling from record to record.)
Syntax
ODBCIsBOF(numHandler)
numHandler
The handler returned by the ODBCOpen function.
Returned value
0 Record found
non-zero Record set contains no records or you move backward, above the first record
You also can use this function along with the ODBCIsEOF function to determine whether
the record set contains any records or is empty. Immediately after calling the ODBCQuery
function, and if the record set contains no records, ODBCIsBOF returns non-zero. When
you open a record set with at least one record, the first record is the current record
and ODBCIsBOF returns a zero (0). If the first record is the current record, and you call
ODBCMovePrev, ODBCIsBOF will subsequently return a non-zero.
Examples
Tag ODBCIsBOF( 1 )
ODBCIsDeleted
Reports whether the current record was deleted.
Syntax
ODBCIsDeleted(numHandler)
numHandler
The handler returned by the ODBCOpen function.
Returned value
If you move to a record and this function returns a non-zero, then you must move to another
record before you can perform any other operations.
Examples
Tag ODBCIsDeleted( 8 )
ODBCIsEOF
Reports whether you have gone beyond the last record of the record set. (Call this function
as you scroll from record to record.)
Syntax
ODBCIsEOF(numHandler)
numHandler
The handler returned by the ODBCOpen function.
Returned value
0 Record found.
non-zero Record set contains no records or you moved forward, after the last record.
You can use this function along with the ODBCIsBOF function to determine whether the
record set contains any records or is empty. Immediately after calling the ODBCQuery
function, and if the record set contains no records, ODBCIsBOF returns non-zero. When
you open a record set with at least one record, the first record is the current record
and ODBCIsEOF returns a zero (0). If the last record is the current record, and you call
ODBCMoveNext, ODBCIsEOF will subsequently return a non-zero.
Examples
Tag ODBCIsEOF( 5 )
ODBCIsFieldNULL
Reports whether a specified field in a record set was flagged as NULL.
Syntax
ODBCIsFieldNULL(numHandler,strColName)
numHandler
The handler returned by the ODBCOpen function.
strColName
The column name.
Returned value
Examples
ODBCIsFieldNullable
Reports whether a specified field is nullable (i.e., can be set to a NULL value).
Function Group Execution Windows Embedded Thin Client
ODBC
ODBCIsFieldNullable Synchronous Supported Not supported Executed on Server
Syntax
ODBCIsFieldNullable(numHandler,strColName)
numHandler
The handler returned by the ODBCOpen function.
strColName
The column name.
Returned value
Examples
ODBCMove
Moves the current record pointer within a record set, either forward or backward.
Function Group Execution Windows Embedded Thin Client
ODBCMove ODBC Synchronous Supported Not supported Executed on Server
Description
Moves the current record pointer within a record set, either forward or backward.
Syntax
ODBCMove(numHandler,numOffset)
numHandler
The handler returned by the ODBCOpen function.
numOffset
The number of rows to move forward or backward:
• Positive values move forward, toward the end of the record set.
• Negative values move backward, toward the beginning of the record set.
• A value of 0 refreshes the current record.
Returned value
0 Success
1 Invalid handler
2 Database not open
3 Move error
Examples
Tag ODBCMove( 2, 3 )
Tag ODBCMove( 8, 2 )
ODBCMoveFirst
Moves to the first record within the record set.
Function Group Execution Windows Embedded Thin Client
ODBC
ODBCMoveFirst Synchronous Supported Not supported Executed on Server
Syntax
ODBCMoveFirst(numHandler)
numHandler
The handler returned by the ODBCOpen function.
Returned value
0 Success.
1 Invalid handler.
2 Database not open.
3 Move error.
Examples
Tag ODBCMoveFirst( 4 )
ODBCMoveLast
Moves to the last record within the record set.
Function Group Execution Windows Embedded Thin Client
ODBCMoveLastODBC Synchronous Supported Not supported Executed on Server
Syntax
ODBCMoveLast(numHandler)
numHandler
The handler returned by the ODBCOpen function.
Returned value
0 Success
1 Invalid handler
2 Database not open
3 Move error
Examples
Tag ODBCMoveLast( 7 )
ODBCMoveNext
Moves to the next record within the record set.
Function Group Execution Windows Embedded Thin Client
ODBCMoveNextODBC Synchronous Supported Not supported Executed on Server
Syntax
ODBCMoveNext(numHandler)
numHandler
The handler returned by the ODBCOpen function.
Returned value
0 Success
1 Invalid handler
2 Database not open
3 End of record set reached
4 Move error
Examples
Tag ODBCMoveNext( 9 )
ODBCMovePrev
Moves to the next record within the record set.
Function Group Execution Windows Embedded Thin Client
ODBCMovePrevODBC Synchronous Supported Not supported Executed on Server
Syntax
ODBCMovePrev(numHandler)
numHandler
The handler returned by the ODBCOpen function.
Returned value
0 Success
1 Invalid handler
2 Database not open
3 Beginning of record set reached
4 Move error
Examples
Tag ODBCMovePrev( 2 )
ODBCOpen
Opens a connection to the database and returns a numeric handler to be used by other
ODBC functions.
Syntax
strDsn
The name of the data source.
strUser
The user name.
strPassw
The password.
strTable
The name of the database table
strFilter
The SQL WHERE clause.
strSort
The SQL ORDER BY clause.
Returned value
Notes
This function does not read or write any data; it simply creates a handle to manipulate the
database. You must bind the columns using the ODBCBindCol function, and then you must
call the ODBCQuery function to retrieve the first record.
Examples
ODBCQuery
Retrieves the currently selected record from a database.
Syntax
ODBCQuery(numHandler)
numHandler
The handler returned by the ODBCOpen function.
Returned value
0 Success
1 Invalid handler
2 No columns bound
3 Cannot open database
4 Cannot restart database
5 Query error
Notes
If you modify the column binding, or if you modify the filter and sort, then you must call this
function again.
Examples
Tag ODBCQuery( 6 )
ODBCRollBack
Reverses the changes made during a transaction.
Syntax
ODBCRollBack(numHandler)
numHandler
The handler returned by the ODBCOpen function.
Returned value
0 Success
1 Invalid handler
2 Database no open
3 Error rolling back transaction
Examples
Tag ODBCRollback( 4 )
ODBCSetFieldNULL
Flags a field data member in the record set as NULL (specifically having no value) or as non-
NULL.
Syntax
numHandler
The handler returned by the ODBCOpen function.
strColName
The column name.
numValue
A numeric tag that specifies the field data as NULL if 0 and non-NULL if non-zero.
Returned value
0 Success
1 Invalid handler
2 Database not open
3 Invalid parameter
4 Invalid column name
Examples
ODBCSetFilter
Constrains the records selected in a database.
Syntax
ODBCSetFilter(numHandler,strFilter)
numHandler
The handler returned by the ODBCOpen function.
strFilter
The a SQL WHERE clause.
Returned value
0 Success
1 Invalid handler
2 Invalid parameter
Notes
You may find this function useful for selecting a subset of records, such as "all salespersons
based in California" ("state = 'CA'"). Remember to call ODBCQuery after calling this
function.
Examples
ODBCSetSort
Sorts the records selected in a database.
Function Group Execution Windows Embedded Thin Client
ODBCSetSort ODBC Synchronous Supported Not supported Executed on Server
Syntax
ODBCSetSort(numHandler,strSort)
numHandler
The handler returned by the ODBCOpen function.
strSort
The SQL ORDER BY clause.
Returned value
0 Success
1 Invalid handler
2 Invalid parameter type
Notes
You can use this feature to sort the records in one or more columns. Remember to call
ODBCQuery after calling this function.
Examples
ODBCUnbindCol
Unbinds a column that was previously bound using the ODBCBindCol function.
Function Group Execution Windows Embedded Thin Client
ODBC
ODBCUnbindCol Synchronous Supported Not supported Executed on Server
Syntax
ODBCUnbindCol(numHandler,strColName)
numHandler
The handler returned by the ODBCOpen function.
strColName
The column name.
Returned value
0 Success
1 Invalid handler
2 Invalid parameter type
3 Column not bound
Examples
ODBCUpdate
Updates the current record.
Syntax
ODBCUpdate(numHandler)
numHandler
The handler returned by the ODBCOpen function.
Returned value
0 Success
1 Invalid handler
2 Database not open
3 Update error
Notes
This function uses the values of the tags bound by the ODBCBindCol function to update the
current record.
Examples
Tag ODBCUpdate( 1 )
Email functions
These functions are used to configure and send email from within a project.
CnfEmail
This function configures the email settings used by other features in the project that can
send email, such as Alarm worksheets and the SendEmail and SendEmailExt functions.
Syntax
CnfEmail(strSMTP,strFrom,strPOP3,strUser,strPassword{ | ,optNumTimeout{ | ,{
optNumAuthType | 1 }{ | ,optStrSMTPUser,optStrSMTPPassword } } })
strSMTP
The hostname or IP address of the outgoing email server, which is also known as the
SMTP server. You can include a port number if the server does not use one of the
standard SMTP ports.
Note: For projects that will run on Windows Embedded devices, you must specify an
IP address.
strFrom
The email address from which emails will be sent and at which emails may be
received. This should be a valid address on the POP3 server (see strPOP3 below).
strPOP3
The hostname or IP address of the incoming email server, which is also known as
the POP3 server. You can include a port number if the server does not use one of the
standard POP3 ports.
Note: For projects that will run on Windows Embedded devices, you must specify an
IP address.
strUser
The username to be used to log onto the POP3 server.
strPassword
The password to be used to log onto the POP3 server.
optNumTimeout
The timeout limit (in seconds) to be used when sending email. If no response is
received from the SMTP server within this period of time, then the operation is
aborted.
This is an optional parameter; if no timeout is specified, then the project will keep
trying forever until it receives a response. You should specify some timeout, however,
to make sure that your project won't freeze.
optNumAuthType
optStrSMTPUser
optStrSMTPPassword
By default, SMTP servers do not require authentication for outgoing email. If your
server does require authentication, set optNumAuthType to 1 and then specify the
username and password.
Please note that if your SMTP username and password are the same as
your POP3 username and password, then you can skip optStrSMTPUser and
optStrSMTPPassword. The project will automatically use the values from strUser and
strPassword.
Returned value
Value Description
0 Success
1 Invalid format for strSMTP
2 Invalid format for strFrom
3 Invalid format for strPOP3
4 Invalid format for strUser
5 Invalid format for strPassword
6 Invalid format for optNumTimeout
7 Wrong number of parameters
8 Error getting host IP address (invalid POP3 server)
9 Error connecting to POP3 server
10 Error sending username
11 Error sending password
12 SMTP server does not support selected authentication mode
13 Invalid SMTP username
14 Authentication failed
Notes
The email configuration created by this function works only within the Windows process
where the function was called.
For example, if you place a Button object in a screen and then set the object to call this
function when it is pressed, then the resulting email configuration will work only on the
Client station where the screen is displayed and the button is pressed. It will not work on
any other Client stations nor on the Server station, because the project viewer running on
the Client station only exchanges data (i.e., changes in tag values) with the data server
running on the Server station. One cannot directly call functions on the other; it can only use
triggers to force the other to call functions. Please note that is true even when the Client
station and the Server station are the same physical device, because the project viewer and
the data server are still two separate processes in Windows.
If you want an email configuration to apply to your project's Background Task — for
example, to be able to send emails when alarms become active — then you must call this
function in some place like the project's Startup Script, a Script Group, or a Math worksheet.
Examples
GetStatusSendEmailExt
Returns status of the last email sent using the SendEmailExt function.
Function Group Execution Windows Embedded Thin Client
Email
GetStatusSendEmailExt Synchronous Supported Supported Supported
Syntax
GetStatusSendEmailExt({ | optTagName })
optTagName
Optional tag that causes the function to update its return value. This parameter is
optional but you must use it when configuring this function for an object animation
(e.g., Text Data Link, Position).
Returned value
Examples
SendEmail
This function sends an email message.
Function Group Execution Windows Embedded Thin Client
SendEmail Email Synchronous Supported Supported Supported
Syntax
SendEmail(strSubject,strMessage,strTo)
strSubject
The subject of the email.
strMessage
The message body of the email, up to 255 characters long.
strTo
The email address of the intended recipient.
Returned value
Value Description
0 Success
1 Invalid format for strSubject
Value Description
Notes
Before you can send any email, you must first use the CnfEmail function to configure the
email settings. Incorrect settings can result in several different error codes (see "Returned
value" above).
Also, SendEmail cannot be used to send an email that contains Unicode characters. To do
that, use the SendEmailExt function instead.
Examples
SendEmailExt
Sends e-mail messages with attached files.
Function Group Execution Windows Embedded Thin Client
SendEmailExtEmail Asynchronous Supported Supported Supported
Syntax
strSubject
The e-mail subject (up to 255 characters).
strMessage
The e-mail message (up to 255 characters).
strTo
The recipient's address. You can specify more than one recipient, using a semicolon
(;) to separate the addresses.
optStrCc
The recipients' addresses to be Cc'ed. You can specify more than one recipient, using
a semicolon (;) to separate the addresses.
This is an optional parameter, but if you need to use subsequent parameters, then you
can specify a null string ("") here.
optStrBcc
The recipients' addresses to be Bcc'ed. You can specify more than one recipient,
using a semicolon (;) to separate the addresses.
This is an optional parameter, but if you need to use subsequent parameters, then you
can specify a null string ("") here.
optStrFile (1-N)
Complete file paths and names of file attachments.
Returned value
Notes
Before you can send any email, you must first use the CnfEmail function to configure the
email settings. Incorrect settings can result in several different error codes (see "Returned
value" above).
Examples
Dial-up functions
These functions are used to configure the computer's modem (if any) and establish dial-up
connections to other computers.
Note: These functions are not supported on Windows 7.
DialError
Returns the error codes regarding each connection.
Syntax
numType
A numeric flag that specifies the content of the strPhonebookEntryorModem
parameter.
• 0: Phonebook Name
• 1: Modem Name
• 2: Direct Connection Name
strPhonebookEntryOrModem
The Phonebook Name, Modem Name, or Direct Connection Name used to make the
connection. The numType parameter specifies which of these methods is used.
optError
Optional The name of the string tag receiving the Error Message.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
optRefresh
Optional tag, which causes the function to update its return value. This parameter is
optional but you must use it when configuring this function for an object animation
(e.g., Text Data Link, Position).
Returned value
Value Description
0 OK
−1 Error: INDRas.DLL not found.
−2 Error: INDRas.DLL damaged.
−3 Error: invalid number of parameters (minimum=2).
-4 Invalid value for the numType parameter (0 or 1).
-5 PhoneBook or Modem does not exist.
600 An operation is pending.
601 The port handle is invalid.
602 The port is already open.
603 Caller's buffer is too small.
604 Wrong information specified.
605 Cannot set port information.
606 The port is not connected
607 The event is invalid.
608 The device does not exist.
609 The device type does not exist.
610 The buffer is invalid.
611 The route is not available.
612 The route is not allocated.
613 Invalid compression specified.
614 Out of buffers.
Value Description
Value Description
651 Your modem (or other connecting device) has reported an error.
652 Unrecognized response from the device.
653 A macro required by the device was not found in the device .INF file section.
654 A command or response in the device .INF file section refers to an undefined acro.
655 The <message macro was not found in the device .INF file secion.
656 The <defaultoff macro in the device .INF file section contains an undefined macro.
657 The device .INF file could not be opened.
658 The device name in the device .INF or media .INI file is too long.
659 The media .INI file refers to an unknown device name.
660 The device .INF file contains no responses for the command.
661 The device.INF file is missing a command.
662 Attempted to set a macro not listed in device .INF file section.
663 The media .INI file refers to an unknown device type.
664 Cannot allocate memory.
665 The port is not configured for Remote Access.
666 Your modem (or other connecting device) is not functioning.
667 Cannot read the media .INI file.
668 The connection dropped.
669 The usage parameter in the media .INI file is invalid.
670 Cannot read the section name from the media .INI file.
671 Cannot read the device type from the media .INI file.
672 Cannot read the device name from the media .INI file.
673 Cannot read the usage from the media .INI file.
674 Cannot read the maximum connection BPS rate from the media .INI file.
675 Cannot read the maximum carrier BPS rate from the media .INI file.
676 The line is busy.
677 A person answered instead of a modem.
678 There is no answer.
679 Cannot detect carrier.
680 There is no dial tone.
681 General error reported by device.
682 ERROR_WRITING_SECTIONNAME
683 ERROR_WRITING_DEVICETYPE
684 ERROR_WRITING_DEVICENAME
685 ERROR_WRITING_MAXCONNECTBPS
686 ERROR_WRITING_MAXCARRIERBPS
Value Description
687 ERROR_WRITING_USAGE
688 ERROR_WRITING_DEFAULTOFF
689 ERROR_READING_DEFAULTOFF
690 ERROR_EMPTY_INI_FILE
691 Access denied because username and/or password is invalid on the domain.
692 Hardware failure in port or attached device.
693 ERROR_NOT_BINARY_MACRO
694 ERROR_DCB_NOT_FOUND
695 ERROR_STATE_MACHINES_NOT_STARTED
696 ERROR_STATE_MACHINES_ALREADY_STARTED
697 ERROR_PARTIAL_RESPONSE_LOOPING
698 A response keyname in the device .INF file is not in the expected format.
699 The device response caused buffer overflow.
700 The expanded command in the device .INF file is too long.
701 The device moved to a BPS rate not supported by the COM driver.
702 Device response received when none expected.
703 The Application does not allow user interaction the connection requires interaction with the user to
complete successfully
704 ERROR_BAD_CALLBACK_NUMBER
705 ERROR_INVALID_AUTH_STATE
706 ERROR_WRITING_INITBPS
707 X.25 diagnostic indication.
708 The account has expired.
709 Error changing password on domain The password may be too short or may match a previously used
password.
710 Serial overrun errors were detected while communicating with your modem.
711 RasMan initialization failure Check the event log.
712 Biplex port initializing Wait a few seconds and redial.
713 No active ISDN lines are available.
714 No ISDN channels are available to make the call.
715 Too many errors occurred because of poor phone line quality.
716 The Remote Access IP configuration is unusable.
717 No IP addresses are available in the static pool of Remote Access IP addresses.
718 Timed out waiting for a valid response from the remote PPP peer.
719 PPP terminated by remote machine.
720 No PPP control protocols configured.
721 Remote PPP peer is not responding.
Value Description
Notes
This function is not supported on Windows 7.
Examples
DialGetClientIP
This function gets the IP address of a Remote Access Service (RAS) client station.
Function Group Execution Windows Embedded Thin Client
Dial-up
DialGetClientIP Synchronous Supported (see Supported Supported
note)
Syntax
numType
The type of information specified by strPhoneBookOrModem: 0 is a Phonebook Name,
1 is a Modem Name, and 2 is a Direct Connection Name.
strPhoneBookOrModem
The Phonebook Name, Modem Name, or Direct Connection Name used to make the
connection.
tagClientIP
The name of a String tag that will receive the IP address.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
optTagRefresh
The name of a tag that, whenever the value of the tag changes, will trigger the
function to refresh its returned value.
Also, this parameter is optional but you must include it when you configure the
function on an object animation such as Text Data Link or Position.
Returned value
This function returns the following possible values:
Value Description
This is the value returned by the function itself. The IP address is written to the tag specified
by tagClientIP.
Notes
This function must be executed on the RAS client station, not on the server station.
(Essentially, the station gets its own IP address.)
Also, this function is not supported on Windows 7.
Examples
Use the Phonebook Name "Office DialUp" and write the resulting IP address to
ClientIPTag:
DialGetClientIP( 1, "USRobotics_SportsterFaxModem",
"ClientIPAddress", Second )
Use the Direct Connection Name "DirectDial" and write the resulting IP address to IPAdd:
DialGetServerIP
DialGetServerIP is a built-in scripting function that gets the IP address of a Remote Access
Service (RAS) server station.
Group Execution Windows Embedded Thin Client
Dial-up Synchronous Supported (see Notes) Not Supported Supported
Syntax
numType
The type of information specified by strPhoneBookOrModem: 0 is a Phonebook Name,
1 is a Modem Name, and 2 is a Direct Connection Name.
strPhoneBookOrModem
The Phonebook Name, Modem Name, or Direct Connection Name used to make the
connection.
tagServerIP
The name of a String tag that will receive the IP address.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
optTagRefresh
The name of a tag that, whenever the value of the tag changes, will trigger the
function to refresh its returned value.
Also, this parameter is optional but you must include it when you configure the
function on an object animation such as Text Data Link or Position.
Returned value
This function returns the following possible values:
Value Description
Value Description
This is the value returned by the function itself. The IP address is written to the tag specified
by tagServerIP.
Notes
This function must be executed on the RAS client station, not on the server station.
(Essentially, the station gets the IP address of the server to which it is connected.)
Also, this function is not supported on Windows 7.
Examples
Use the Phonebook Name "Office DialUp" and write the resulting IP address to
ServerIPTag:
DialGetServerIP( 1, "USRobotics_SportsterFaxModem",
"ServerIPAddress", Second )
Use the Direct Connection Name "DirectDial" and write the resulting IP address to IPAdd:
DialStatus
Returns the status of the dial-up connection.
Function Group Execution Windows Embedded Thin Client
DialStatus Dial-up Synchronous Supported (see Supported Supported
note)
Note: This function is not supported on Windows 7.
Syntax
numType
A numeric flag that specifies the content of the strPhonebookEntryorModem
parameter.
• 0: Phonebook Name
• 1: Modem Name
• 2: Direct Connection Name
strPhonebookEntryOrModem
The Phonebook Name, Modem Name, or Direct Connection Name used to make the
connection. The numType parameter specifies which of these methods is used.
optStatus
Optional The name of the string tag receiving the status message.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
optRefresh
Optional tag that causes the function to update its return value. This parameter is
optional, but you must use it when configuring this function for an object animation
(e.g., Text Data Link, Position).
Returned value
Value Description
Value Description
Examples
DialUp
Establishes a dial-up connection.
Function Group Execution Windows Embedded Thin Client
DialUp Dial-up Asynchronous Supported (see Supported Supported
note)
Note: This function is not supported on Windows 7.
Syntax
numType
A numeric flag that specifies the content of the strPhonebookEntryorModem
parameter.
• 0: Phonebook Name
• 1: Modem Name
• 2: Direct Connection Name
strPhonebookEntryOrModem
The Phonebook Name, Modem Name, or Direct Connection Name used to make the
connection. The numType parameter specifies which of these methods is used.
strUserName
The Username to use for logging on.
strPassword
The Password to use for logging on.
optStrDomain
Optional The domain name to specify when logging on.
strPhoneNumber
The phone number to dial (used only when the parameter numType=1).
Returned value
Notes
The operating system's RAS Server executes the dial-in for Windows PC stations
automatically.
Examples
DialUpToCE
Runs the DialUpToCE program, which sends the information necessary to CERasSvr.exe
calls back to the Server.
numModem
The modem used to dial to the Windows CE remote station.
strDialPhone
The telephone number of the Windows CE remote station.
strMyNumber
The telephone number sent to the Windows CE remote station. CERasSvr.exe will
call back to this phone number.
strUser
The user name to be sent to Windows CE remote station. CERasSvr.exe will use
this name to connect to the Windows XP/Vista/7 computer after calling back to it.
strPassword
The password to be sent to Windows CE remote station. CERasSvr.exe will use this
password to connect to the Windows XP/Vista/7 computer after calling back to it.
optStrDomain
Optional The domain name to specify when logging on.
optAutoDial
Optional tag, which can be set to one of the following:
• 1: Triggers the DialupToCE connection automatically when the function is
executed
• 0: Requests confirmation before triggering the DialupToCE connection
automatically when the function is executed
optAutoClose
Optional tag, which can be set to one of the following:
• 1: Closes the DialUpToCE dialog automatically after dialing the Windows CE
remote station
• 0: Leaves the DialUpToCE dialog open
Returned value
Notes
The DialUpToCE program was developed to dial a remote Windows CE station. Because
Windows CE v3.00 does not provide a RAS Server, you must be running the CERasSvr.exe
program on the Windows Embedded device to answer a call, and call back to a Windows XP/
Vista/7 computer using parameters sent by the DialUpToCE function. You must configure
the RAS Server service on the Windows XP/Vista/7 computer to answer the call back from
the Windows Embedded device and set the TCP/IP connection.
Examples
FindAllDevices
Returns the list of all the available modems and direct connection interfaces (COM ports) in
the local station.
FindAllDevices( "tagArray" )
tagArray
Name of a string array tag receiving the list of available modems and direct connection
interfaces.
Returned value
Returns the number of modems and/or interfaces found.
Examples
FindModem
Returns the list of all available modems in the local station.
FindModem( "tagArray" )
tagArray
Name of a string array tag receiving the list of available modems.
Returned value
Returns the number of modems found.
Notes
You can use this function to get the serial interface name for a dial-up connection via
modem, and then use this information to fill the strPhonebookEntryOrModem parameter for
the DialError, DialStatus, DialUp, and HangUp functions.
Examples
HangUp
Hangs-up a dial-up connection.
numType
A numeric flag that specifies the content of the strPhonebookEntryorModem
parameter.
• 0: Phonebook Name
• 1: Modem Name
• 2: Direct Connection Name
strPhonebookEntryOrModem
The Phonebook Name, Modem Name, or Direct Connection Name used to make the
connection. The numType parameter specifies which of these methods is used.
Returned value
0 OK.
-1 Error: INDRAS.DLL not found
-2 Error: INDRAS.DLL damaged
-3 Invalid value for the numType parameter (0 or 1)
-4 PhoneBook or modem does not exist
-5 No configured modems exist
Examples
PhoneDialUp
Dials to a phone number using Telephony Application Program Interface (TAPI).
Function Group Execution Windows Embedded Thin Client
PhoneDialUp Dial-up Asynchronous Supported (see Not supported Supported
note)
Note: This function is not supported on Windows 7.
Syntax
strPhoneNumber
Telephone number the function will call.
optStrModemName
Name of the modem used to dial. If you do not specify a modem, the function will use
the first modem found on the operating system.
Returned value
0 OK (dial triggered)
−1 Invalid number of parameters
−3 INDTAPI.DLL library not found
Examples
PhoneDialUp ( "512-123-4567" )
PhoneDialUp ( StringPhoneNumberTag )
PhoneDialUp ( StringPhoneNumberTag,
StringModemNameTag )
PhoneDisableListen
Stops listening to the modem for incoming calls.
PhoneDisableListen( optStrModemName )
optStrModemName
Name of the modem used to dial. If you do not specify a modem, the function will use
the first modem found on the operating system.
Returned value
Examples
PhoneDisableListen()
PhoneDisableListen( "Hayes Compatible Modem on COM1" )
PhoneDisableListen( StringModemNameTag )
PhoneEnableListen
Resumes listening to the modem for incoming calls.
PhoneEnableListen( optStrModemName )
optStrModemName
Name of the modem used to dial. If you do not specify a modem, the function will use
the first modem found on the operating system.
Returned value
Examples
PhoneEnableListen()
PhoneEnableListen( "Hayes Compatible Modem on COM1" )
PhoneEnableListen( StringModemNameTag )
PhoneHangUp
Hangs up a dial-up connection previously established with the PhoneDialUp function.
PhoneHangUp( optStrModemName )
optStrModemName
Name of the modem used to dial. If you do not specify a modem, the function will use
the first modem found on the operating system.
Returned value
Examples
PhoneHangUp()
PhoneHangUp( "Hayes Compatible Modem on COM1" )
PhoneHangUp( StringModemNameTag )
PhoneStatus
strStatus
Name of the tag that will receive the status description text
optStrModemName
Name of the modem used to dial. If you do not specify a modem, the function will use
the first modem found on the operating system
Returned value
Examples
XGet
This function gets the current value of a Property on an ActiveX Control or .NET Control
object.
Function Group Execution Windows Embedded Thin Client
XGet ActiveX and .NET Asynchronous Supported ActiveX Controls Supported
Control only (see Notes)
Syntax
strName
The unique name of the ActiveX Control or .NET Control object, as configured in the
Name field of the Object Properties dialog.
strProperties
The Property that you want to get the value of. Available Properties are listed in the
Configuration (for an ActiveX Control) or Members (for a .NET Control) dialog.
Returned value
Returns the value of the specified Property.
Notes
This function cannot be used in Tasks or in the Global Procedures script. Also, this function
is not supported for .NET Control objects running on a Windows Embedded station.
Examples
Get the current value of the Color property on the ActiveX Control object named "ActXRec":
XRun
This function runs a Method on an ActiveX Control or .NET Control object.
Function Group Execution Windows Embedded Thin Client
XRun ActiveX and .NET Asynchronous Supported ActiveX Controls Supported
Control only (see Notes)
Syntax
strName
The unique name of the ActiveX Control or .NET Control object, as configured in the
Name field of the Object Properties dialog.
strMethod
The Method that you want to run. Available Methods are listed in the Configuration
(for an ActiveX Control) or Members (for a .NET Control) dialog.
Parameter(1…N)
Data of various types that are required by the Method to run. The number of
parameters can range from 0 to 255 and depends on the specified Method. The
data types (e.g., Boolean, Integer, Real or String) of referring tags must match the
parameters on the Method.
Returned value
Returns the Method result as reported by the ActiveX Control or .NET Control object. Not all
Methods return results.
Notes
This function cannot be used in Tasks or in the Global Procedures script. Also, this function
is not supported for .NET Control objects running on a Windows Embedded station.
Examples
Run the XPos method on the ActiveX Control named "ActXCir," with four original values
passed to the method:
Run the XPos method on the ActiveX Control named "ActXCir," with four referring tags
passed to the method:
XSet
This function sets the value of a Property on an ActiveX Control or .NET Control object.
Syntax
XSet(strName,strProperties,Value)
strName
The unique name of the ActiveX Control or .NET Control object, as configured in the
Name field of the Object Properties dialog.
strProperties
The Property that you want to set the value of. Available Properties are listed in the
Configuration (for an ActiveX Control) or Members (for a .NET Control) dialog.
Value
A tag, expression, or data value of any type; the value to which you want to set the
Property.
Returned value
This function does not return any value.
Notes
This function cannot be used in Tasks or in the Global Procedures script. Also, this function
is not supported for .NET Control objects running on a Windows Embedded station.
Examples
Set the value of the Display property on the ActiveX Control named "ActXDisplay" to "Status
Normal":
SendEvent
Sends an event to the Event Logger.
Description
Use to send an event to the Event Log file. When the Comment option is enabled, the user
is prompted to enter a comment after executing the SendEvent() function. This comment
will be saved in the Event Log file.
Syntax
strEvent
The text to be saved in the Event Logger.
optBoolFlag
If omitted or 0 (zero), the event does not have a comment. Otherwise, there is a
comment associated to the event.
optStrComment
The text of the comment for the event saved in the database. If omitted, a standard
dialog prompts the user to type a comment.
Returned value
0 Success
1 Event Logger is disabled in the Event Settings dialog
2 Event Logger is enabled, but Custom Messages are disabled in the Event Settings dialog
Notes
This function is synchronous. Therefore, the execution of the function finishes only after the
event data (including the comment, if any) is saved in the database file. It is recommended
that you do not configure this function in background tasks (e.g., Math and Scheduler),
unless you do not plan to use the comment or configure it directly (type from the dialog) in
the function.
Examples
FTP functions
These functions are used to configure the FTP settings for the project, as well as to get files
from and put files on a remote server.
CnfFTP
This function configures the FTP settings used by other features in the project that can
transfer files, such the FTPGet and FTPPut functions.
Syntax
strServer
The address of the FTP server.
optStrUser
The username for the FTP account.
This parameter is optional; if no value is given, then the username "anonymous" is
used by default.
optStrPwd
The password for the FTP account.
This parameter is optional; if no value is given, then the password is left blank.
optNumPassiveMode
A numeric flag that specifies whether Passive FTP mode is enabled. (Passive FTP can
be used to bypass some firewall configurations.)
0 Passive FTP mode is disabled.
1 Passive FTP mode is enabled.
This parameter is optional; if no value is given, then Passive FTP mode is disabled by
default.
optNumPort
The TCP/IP port number.
This parameter is optional; if no value is given, then port 21 is used by default.
Returned value
0 Success
−1 Invalid number of parameters
−2 Invalid server name
−3 Invalid user name
Note: This function does not actually conncect to the server, so these error codes do not
show the quality of the connection. They only show whether the FTP settings have
been successfully configured.
Notes
You must call this function at least once to configure these settings before you can use the
FTPGet and FTPPut functions to transfer files.
Example
FTPGet
Gets a file from a remote server and saves it on the local machine.
Function Group Execution Windows Embedded Thin Client
FTPGet FTP Asynchronous Supported Supported Supported
Syntax
strRemoteFile
The full path and name of the desired file on the remote server, using the syntax
"/file path/file name.extension". Some FTP servers are case sensitive, so
you should always use correct capitalization.
strLocalFile
The full path and name where you want to save the file on the local machine, using the
syntax "C:\file name.extension".
numTransferType
A numeric flag that specifies the file transfer type. This parameter is optional; if no
value is given, then the transfer type is unknown (0) by default.
0 Unknown
1 ASCII
2 Binary
10 Unknown, without caching
11 ASCII, without caching
12 Binary, without caching
Note: In most cases, you should use option 10. This automatically detects the format
(ASCII or Binary) of the remote file and sets the transfer type accordingly, and
it also forces the project to download the file from the actual FTP server rather
than from an intervening proxy or cache server.
numOverWrite
A numeric value that specifies whether the local file (specified by strLocalFile)
may be overwritten if it already exists. This parameter is optional; the default value is
0.
0 Do not overwrite — return an error if the file already exists.
1 Overwrite.
Returned value
Notes
Before you can call this function, you must configure the FTP settings (i.e., server address
and login) using the CnfFTP function.
Also, this function is executed asynchronously, so you must call the FTPStatus function to
see if the transfer has been completed successfully.
Example
FTPPut
Puts a file on a remote server.
Syntax
strLocalFile
Full qualified name of the local file (e.g., "C:\file.extension")
strRemoteFile
Full qualified name of the remote file (e.g., "/Folder/File.extension"). Note that
some FTP servers are case sensitive, so you have to enter the name of the file with
the correct capitalization.
numTransferType
0 Unknown
1 ASCII
2 Binary
Default is 0.
Returned value
Notes
Before you can call this function, you must configure the FTP settings (i.e., server address
and login) using the CnfFTP function.
Also, this function is executed asynchronously, so you must call the FTPStatus function to
see if the transfer has been completed successfully.
Example
FTPStatus
This function returns the current status of a file transfer started with FTPGet or FTPPut.
Function Group Execution Windows Embedded Thin Client
FTPStatus FTP Synchronous Supported Supported Supported
Syntax
FTPStatus("strStatusTag")
strStatusTag
Name of the string tag that will receive the current status description when the
function returns.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
Returned value
-9 Transfer pending
Example
Database/ERP functions
These functions are used interact with external databases and ERP systems using SQL-like
commands.
DBCursorClose
Closes the cursor and releases the result set.
Note: This feature emulates SQL (Structured Query Language) database operations. You
should be familiar with how SQL commands are formed and executed before you use
this feature.
Syntax
numCur
The cursor handle of the result set. The cursor handle is returned by DBCursorOpen
or DBCursorOpenSQL.
optStrErrorTag
The name of a String tag that will receive detailed error messages, if errors occur
during runtime.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
This is an optional parameter.
Returned value
In case of error, returns a negative number. Otherwise, returns 0.
Notes
When the cursor is closed, it is destroyed and cannot be used again. You must create a new
cursor using DBCursorOpen or DBCursorOpenSQL.
Examples
As used in a Math worksheet:
Tag Name Expression
DBCursorColumnCount
Gets the total number of columns in a SQL result set.
Note: This feature emulates SQL (Structured Query Language) database operations. You
should be familiar with how SQL commands are formed and executed before you use
this feature.
Syntax
numCur
The cursor handle of the result set. The cursor handle is returned by DBCursorOpen
or DBCursorOpenSQL.
optStrErrorTag
The name of a String tag that will receive detailed error messages, if errors occur
during runtime.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
This is an optional parameter.
Returned value
Returns the number of columns. In case of error, returns a negative number.
Notes
See also DBCursorRowCount.
Examples
As used in a Math worksheet:
Tag Name Expression
DBCursorColumnInfo
Gets information about a column in a SQL result set. The column is specified by number
rather than by name, so this function can be used to retrieve unknown column names.
Note: This feature emulates SQL (Structured Query Language) database operations. You
should be familiar with how SQL commands are formed and executed before you use
this feature.
Syntax
numCur
The cursor handle of the result set. The cursor handle is returned by DBCursorOpen
or DBCursorOpenSQL.
numColumn
The number of the column about which you want to get information. Remember that a
result set may include only some of the columns in the original database table.
numTypeInfo
The type of information you want to get about the column:
Value Description
0 Column name
1 Column data type
optStrErrorTag
The name of a String tag that will receive detailed error messages, if errors occur
during runtime.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
This is an optional parameter.
Returned value
In case of error, returns a negative number. Otherwise, returns 0.
Examples
As used in a Math worksheet:
Tag Name Expression
DBCursorCurrentRow
Returns the row number of the current row (i.e., the cursor position) in a SQL result set.
Note: This feature emulates SQL (Structured Query Language) database operations. You
should be familiar with how SQL commands are formed and executed before you use
this feature.
Syntax
numCur
The cursor handle of the result set. The cursor handle is returned by DBCursorOpen
or DBCursorOpenSQL.
optStrErrorTag
The name of a String tag that will receive detailed error messages, if errors occur
during runtime.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
This is an optional parameter.
Returned value
Returns the number of the current row. In case of error, returns a negative number.
Examples
As used in a Math worksheet:
Tag Name Expression
DBCursorGetValue
Gets the value of the specified column of the current row (i.e., the cursor position) in a SQL
result set.
Note: This feature emulates SQL (Structured Query Language) database operations. You
should be familiar with how SQL commands are formed and executed before you use
this feature.
Syntax
numCur
The cursor handle for the result set. The cursor handle is returned by DBCursorOpen
or DBCursorOpenSQL.
strColumn
The name of the column.
optStrErrorTag
The name of a String tag that will receive detailed error messages, if errors occur
during runtime.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
This is an optional parameter.
Returned value
Returns the value of the specified column. If the value is NULL or the cursor is invalid, then it
returns an empty string with quality BAD.
Examples
As used in a Math worksheet:
Tag Name Expression
DBCursorMoveTo
Moves the cursor to the specified row in a SQL result set and copies that row's values to
the mapped tags. If the specified row doesn't exist — that is, if it's outside the range of the
result set — then the function returns an error code and doesn't change the mapped tags.
Note: This feature emulates SQL (Structured Query Language) database operations. You
should be familiar with how SQL commands are formed and executed before you use
this feature.
Syntax
numCur
The cursor handle of the result set. The cursor handle is returned by DBCursorOpen
or DBCursorOpenSQL.
numRow
The row of the result set to which the cursor will be moved.
optStrErrorTag
The name of a String tag that will receive detailed error messages, if errors occur
during runtime.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
This is an optional parameter.
Returned value
In case of error, returns a negative number. Otherwise, returns 0.
Examples
As used in a Math worksheet:
Tag Name Expression
nErrorCode DBCursorMoveTo( nCursor, 4 ) // Moves the cursor to the fourth row of the
result set and copies those values.
DBCursorNext
Moves the cursor to the next row in a SQL result set and copies that row's values to the
mapped tags. If there is no next row — that is, if the current row is the last — then the
function returns an error code and doesn't change the mapped tags.
Function Group Execution Windows Embedded Thin Client
Database/ERP
DBCursorClose Synchronous Supported Supported Supported
Note: This feature emulates SQL (Structured Query Language) database operations. You
should be familiar with how SQL commands are formed and executed before you use
this feature.
Syntax
numCur
The cursor handle of the result set. The cursor handle is returned by DBCursorOpen
or DBCursorOpenSQL.
optStrErrorTag
The name of a String tag that will receive detailed error messages, if errors occur
during runtime.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
This is an optional parameter.
Returned value
In case of error, returns a negative number. Otherwise, returns 0.
Examples
As used in a Math worksheet:
Tag Name Expression
DBCursorOpen
Selects a set of rows and columns in a database table, initializes the cursor at the first row
of the result set, copies that row's values to mapped tags, and then returns a cursor handle
that can be referenced by other DB/ERP functions.
Note: This feature emulates SQL (Structured Query Language) database operations. You
should be familiar with how SQL commands are formed and executed before you use
this feature.
Syntax
strDBConn
The name of the database connection. Connections are configured in the Database/
ERP folder.
strTable
The name of the table in the database.
optStrCondition
A string specifying which rows of the table to select. This is equivalent to the SQL
WHERE clause, and the string should follow the same syntax.
This is an optional parameter. If no rows are specified, then all rows of the table will be
selected.
optStrColumns
A string specifying which columns of the table to select. This list of column names
should be comma-delimited.
This is an optional parameter. If no columns are specified, then all columns of the table
will be selected.
optStrTags
A string specifying the project tags to which the columns will be mapped. This list of
tag names should be comma-delimited and in the same order as the columns specified
by optStrColumns. As the cursor is moved through the result set, the values in the
current row are copied to these tags.
This is an optional parameter. If no tags are specified, then no values will be copied.
optStrOrder
The order in which the rows will be sorted. This is equivalent to the SQL ORDER BY
clause, and the string should follow the same syntax.
This is an optional parameter. If no order is specified, then the rows will be left in the
default order of the table.
optStrErrorTag
The name of a String tag that will receive detailed error messages, if errors occur
during runtime.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
This is an optional parameter.
Returned value
Returns a numeric value that represents the cursor handle. In case of error, returns a
negative number.
Notes
This function is equivalent to a SQL SELECT statement, except that it breaks the clauses of
the statement into separate function parameters. If you know SQL and want to construct
your own SELECT statement from scratch, you may use DBCursorOpenSQL instead.
See also DBCursorClose.
Examples
As used in a Math worksheet:
Tag Name Expression
DBCursorOpenSQL
Selects a set of rows and columns in a database table, initializes the cursor at the first row
of the result set, copies that row's values to mapped tags, and then returns a cursor handle
that can be referenced by other DB/ERP functions. (This function is equivalent to a SQL
SELECT statement.)
Note: This feature emulates SQL (Structured Query Language) database operations. You
should be familiar with how SQL commands are formed and executed before you use
this feature.
Syntax
strDBConn
The name of the database connection. Connections are configured in the Database/
ERP folder.
strSQL
A string that gives a complete, syntactically correct SQL SELECT statement.
Note: In SQL, curly brackets ({}) are typically used to enclose an expression that must
be evaluated before the entire SQL statement is executed. For example:
DBCursorPrevious
Moves the cursor to the previous row of the result set and copies that row's values to the
mapped tags. If there is no previous row — that is, If the current row is the first — then the
function returns an error code and doesn't change the mapped tags.
Function Group Execution Windows Embedded Thin Client
Database/ERP
DBCursorPrevious Synchronous Supported Supported Supported
Note: This feature emulates SQL (Structured Query Language) database operations. You
should be familiar with how SQL commands are formed and executed before you use
this feature.
Syntax
numCur
The cursor handle of the result set. The cursor handle is returned by DBCursorOpen
or DBCursorOpenSQL.
optStrErrorTag
The name of a String tag that will receive detailed error messages, if errors occur
during runtime.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
This is an optional parameter.
Returned value
In case of error, returns a negative number. Otherwise, returns 0.
Examples
As used in a Math worksheet:
DBCursorRowCount
Gets the total number of rows in a SQL result set.
Note: This feature emulates SQL (Structured Query Language) database operations. You
should be familiar with how SQL commands are formed and executed before you use
this feature.
Description
Gets the total number of rows in a SQL result set.
See also DBCursorColumnCount().
Syntax
numCur
The cursor handle of the result set. The cursor handle is returned by DBCursorOpen
or DBCursorOpenSQL.
optStrErrorTag
The name of a String tag that will receive detailed error messages, if errors occur
during runtime.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
This is an optional parameter.
Returned value
Returns the number of rows. In case of error, returns a negative number.
Notes
See also DBCursorColumnCount.
Examples
As used in a Math worksheet:
Tag Name Expression
DBDelete
Deletes selected rows from a database table. (This function is equivalent to a SQL DELETE
statement.)
Note: This feature emulates SQL (Structured Query Language) database operations. You
should be familiar with how SQL commands are formed and executed before you use
this feature.
Syntax
strDBConn
The name of the database connection. Connections are configured in the Database/
ERP folder.
strTable
The name of the table in the database.
strCondition
A string that specifies which rows of the table to select. This is equivalent to the SQL
WHERE clause, and the string should follow the same syntax.
Note: To delete all rows in the table, make the condition statement a single space ("
").
optStrErrorTag
The name of a String tag that will receive detailed error messages, if errors occur
during runtime.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
This is an optional parameter.
Returned value
Returns the number of rows deleted from the table. In case of error, returns a negative
number.
Examples
As used in a Math worksheet:
Tag Name Expression
DBExecute
DBExecute is a built-in scripting function that executes a custom SQL statement on an
external database. If the statement is a query (e.g., SELECT), then the database values are
copied to specified array tags.
Syntax
strDBConn
The name of the database connection. Connections are configured in the Database/
ERP folder in the Project Explorer.
strSQL
A complete, syntactically correct SQL statement.
Note: In SQL, curly brackets ({}) are typically used to enclose an expression that must
be evaluated before the entire SQL statement is executed. For example:
if you need to maintain the syntax of the function in order to continue through to
optStrErrorTag, then give this parameter a value of 0.
optStrErrorTag
The name of a String tag that will receive detailed error messages, if errors occur
during runtime.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
This is an optional parameter.
Returned value
This function returns the total number of rows affected by the SQL statement. If an error
occurs, then it returns a negative number.
Please note this is the value returned by the function itself; in the case of a SQL SELECT
statement, the database values are copied to the array tags specified by optStrTags.
Notes
This feature emulates SQL (Structured Query Language) database operations. You should be
familiar with how SQL statements are formed and executed before you use this feature.
Examples
DBInsert
Inserts one new row into a database table. (This function is equivalent to a SQL INSERT
statement.)
Note: This feature emulates SQL (Structured Query Language) database operations. You
should be familiar with how SQL commands are formed and executed before you use
this feature.
Syntax
strDBConn
The name of the database connection. Connections are configured in the Database/
ERP folder in the Project Explorer.
strTable
The name of the table in the database.
strValues
A string that lists the values to be written in the new row. This list of values should be
comma-delimited, and string values must be enclosed in single quotes.
optStrColumns
A string that lists the columns into which the values will be written. This list of column
names should be comma-delimited and in the same order as the values specified by
strValues.
This is an optional parameter. If no columns are specified, then the values will be
written in the default column order of the database table.
optStrErrorTag
The name of a String tag that will receive detailed error messages, if errors occur
during runtime.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
This is an optional parameter.
Returned value
In case of error, returns a negative number. Otherwise, returns 1.
Examples
As used in a Math worksheet:
Tag Name Expression
DBSelect
DBSelect is a built-in scripting function that selects a result set from an external database
(equivalent to a SQL SELECT statement), maps the columns to array tags in your project,
and copies the values from the result set to the array tags.
Syntax
DBSelect(strDBConn,strTable,strTags,strColumns,strCondition,strOrder{ |
,optNumMaxRows{ | ,optStrErrorTag } })
strDBConn
The name of the database connection. Connections are configured in the Database/
ERP folder in the Project Explorer.
strTable
The name of the database table from which you want to select.
strTags
A comma-delimited list of the names of array tags in your project, to which the
columns of the database table will be mapped. The database values will be copied
to these array tags, with the first row of the result set being copied to array index 0.
Make sure the arrays are large enough to receive all of the rows in the result set.
strColumns
A comma-delimited list of which columns in the database table to select. The list order
should correspond to the list in strTags.
To select all of the columns in the table, in their original order, give this parameter an
empty string ("").
strCondition
A statement specifying which rows in the database table to select. This is equivalent
to the SQL WHERE clause and must follow the same syntax.
To select all of the rows in the table, give this parameter an empty string ("").
strOrder
A statement specifying the order in which the rows should be sorted. This is
equivalent to the SQL ORDER BY clause and must follow the same syntax.
To leave the rows in their original order, give this parameter an empty string ("").
optNumMaxRows
The maximum number of rows to be copied. In most cases, to copy all of the rows,
specify a number greater than the expected number of rows in the result set.
This is an optional parameter; if no value is specified, then only the first row of the
result set will be copied.
optStrErrorTag
The name of a String tag that will receive detailed error messages, if errors occur
during runtime.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
This is an optional parameter.
Returned value
This function returns the total number of rows in the result set. If an error occurs, then it
returns a negative number.
Please note this is the value returned by the function itself; the database values are copied
to the array tags specified by strTags.
Notes
This feature emulates SQL (Structured Query Language) database operations. You should be
familiar with how SQL statements are formed and executed before you use this feature.
Examples
DBUpdate
Selects a result set and then writes the same value to all rows of a specified column. (This
function is equivalent to a SQL UPDATE statement.)
Note: This feature emulates SQL (Structured Query Language) database operations. You
should be familiar with how SQL commands are formed and executed before you use
this feature.
Syntax
strDBConn
The name of the database connection. Connections are configured in the Database/
ERP folder in the Project Explorer.
strTable
The name of the table in the database.
strValues
A string that lists the values to be written to the columns. This list of values should be
comma-delimited, and string values must be enclosed in single quotes.
strColumns
A string that lists the columns into which the values will be written. This list of column
names should be comma-delimited and in the same order as the values specified by
strValues.
optStrCondition
A string that specifies which rows of the table to select. This is equivalent to the SQL
WHERE clause, and the string should follow the same syntax.
This is an optional parameter. If no rows are specified, then all rows of the table will be
selected.
optStrErrorTag
The name of a String tag that will receive detailed error messages, if errors occur
during runtime.
Note: The tag name must be enclosed in quotes, as shown in the syntax diagram, or
else the project will try to get the value of the named tag.
This is an optional parameter.
Returned value
Returns the number of rows updated. In case of error, returns a negative number.
Examples
As used in a Math worksheet:
Tag Name Expression
SyncAlarm
Synchronizes the alarm database.
Function Group Execution Windows Embedded Thin Client
SyncAlarm Database/ERP Asynchronous Supported Supported Executed on Server
Syntax
optStrStartDate
String with the start date. If this parameter is not specified, then the current date is
used.
optStrEndDate
String with the end date. If this parameter is not specified, then the function uses the
same as the start date.
Returned value
Value Description
Value Description
Notes
This function is executed asynchronously, so it doesn't return the result of the
synchronization. To get that information, use the SyncAlarmStatus function.
Examples
SyncAlarmStatus
Returns the status of a previously called SyncAlarm function.
Syntax
SyncAlarmStatus()
Value Description
Examples
Tag SyncAlarmStatus()
SyncEvent
Synchronizes the event database.
Syntax
optStrStartDate
String with the start date. If this parameter is not specified, then the current date is
used.
optStrEndDate
String with the end date. If this parameter is not specified, then the function uses the
same as the start date.
Returned value
Value Description
Notes
This function is executed asynchronously, so it doesn't return the result of the
synchronization. To get that information, use the SyncEventStatus function.
Examples
SyncEventStatus
Returns the status of a previously called SyncEvent function.
Function Group Execution Windows Embedded Thin Client
Database/ERP
SyncEventStatus Synchronous Supported Supported Executed on Server
Syntax
SyncEventStatus()
Value Description
Value Description
1 Still synchronizing
0 No synchronization is being executed.
-1 The format is not set to "Database".
Examples
Tag SyncEventStatus()
SyncTrend
Synchronizes the trend database.
Function Group Execution Windows Embedded Thin Client
SyncTrend Database/ERP Asynchronous Supported Supported Executed on Server
Syntax
numGroup
Trend group/worksheet number.
optStrStartDate
String with the start date. If this parameter is not specified, then the current date is
used.
optStrEndDate
String with the end date. If this parameter is not specified, then the function uses the
same as the start date.
Returned value
Value Description
Notes
This function is executed asynchronously, so it doesn't return the result of the
synchronization. To get that information, use the SyncTrendStatus function.
Examples
Tag SyncTrend(1) // Synchronizes the group 1 database using the current date
Tag SyncTrend(1, "10/20/2004") // Synchronizes the group 1 database only for the
day 10/20/2004
SyncTrendStatus
Returns the status of a previously called SyncTrend function.
Syntax
SyncTrendStatus(numGroup)
numGroup
Trend group/worksheet number.
Returned value
Value Description
Examples
Tag SyncTrendStatus( 1 )
Appendix: VBScript
Overview of VBScript
VBScript is a simple, standard and flexible scripting language that allows you to implement
logics and algorithms within your project.
Visual Designer implements Visual Basic Scripting Edition 5.5 or higher. Because Visual
Designer hosts VBScript, you can take advantage of every feature provided by this language,
such as:
• Syntax, operators and functions.
• The ability to create new variables and procedures (functions and/or sub-routines).
• Access to properties, methods and/or events from COM objects, including ActiveX
controls.
• The ability to execute the logics in any platform that supports VBScript, including
Microsoft Windows-based PCs (running as the Visual Designer Server station), Microsoft
Windows Embedded devices (via CEView), and Internet Explorer (via the Thin Client).
Note: If you are not sure if the image loaded on your device supports VBScript, please
consult the hardware manufacturer. The hardware manufacturer must enable the
support for VBScript on the Windows Embedded device, so CEView will be able to
execute the scripts configured in the VBScript language on the device.
The aim of this documentation is to provide an overview about the integration of VBScript
with Visual Designer. Furthermore, it can be used as a quick reference for the most used
features of the language. For a full description of the language as well as its interfaces and
functions, please consult Microsoft. (At the time of this writing, the VBScript documentation
could be accessed directly at the Microsoft Developer Network. This link, however, is
beyond our control and may change without notice.)
Screen Script Screen where the script is configured Server (Viewer) + Thin Clients Declaration of Variables
Declaration of Procedures
Execution
Command animation Object where the script is configured Server (Viewer) + Thin Clients Declaration of Variables
Execution
ActiveX Events Object where the script is configured Server (Viewer) + Thin Clients Declaration of Variables
Startup Script All Script Sheets from Tasks Server (BGTask) Declaration of Variables
Declaration of Procedures
Execution
The following picture illustrates the scope of each VBScript interface and the order that they
are scanned by Visual Designer:
The illustration shows that the Global Procedures are shared by the Graphic Module and
the Background Task. However, the other VBScript interfaces are either from the Graphic
Module or from the Background Task, and they do not share variables or procedures
between them. They are independent of each other.
Note: Although the Graphics Script is scanned by Visual Designer before the Screen Scripts,
the procedures and variables declared in the Graphics Script interface are NOT
available for any script interface configured on the screens. You must use the Global
Procedures interface to implement procedures that must be available for all screens.
When writing your code in a VBScript interface, you can access any tag from the Visual
Designer tags database or any function from the Built-in Scripting Language by applying the
"$" prefix to the tag/function name, as in the examples below:
$Time 'Returns the value of the tag Time from the tags database
$MyTag 'Returns the value of the tag MyTag from the tags database
$Open("main") 'Executes the Open() built-in function to open the
"main" screen
Therefore, you can create scripts using built-in functions from Visual Designer, tags from the
Visual Designer tags database, VBScript functions, VBScript variables, ActiveX properties,
methods or events, and any other interface available. The Visual Designer tags are shared by
all modules from Visual Designer, including the Graphic Module and the Background Task.
Global Procedures
This Global Procedures interface is used create a library of VBScript functions and
sub-routines that can be called by any other scripting interface in Visual Designer. The
procedures declared here are never directly executed during runtime; they must be explicitly
called by another script.
CAUTION
Visual Designer will not prevent you from declaring two or more functions with the same
name. (This includes functions imported from external files; see "Importing Functions from
an External File" below.) However, if you do, then your project may behave unexpectedly
during runtime. Make sure that all of your functions are named correctly.
Option Explicit
'Keep the Option Explicit statement in the first line of this
interface.
Sub MyMessage(message)
MsgBox(message,0)
End Sub
Note: You can declare local variables within each procedure, but you cannot declare
global variables in this interface. In most cases, you should use tags instead.
3. Save your changes. The functions and sub-routines are added to the Global Procedures
folder in the Project Explorer.
'$region:foldername
Option Explicit
'Keep the Option Explicit statement in the first line of this
interface.
'$region:My Subroutines
Sub MyMessage(message)
MsgBox(message,0)
End Sub
'$region:My Functions
Function MyAdd(number1, number2)
MyAdd = number1 + number2
Call MyMessage("The sum is" & MyAdd & ".")
End Function
2. Save your changes. The procedures are organized into subfolders in the Project
Explorer.
Importing Functions from an External File
You can also import functions from an external file and add them to the Global Procedures
folder. This is useful if you have a library of existing functions that you want to reuse.
To import functions:
1. Save and close all open screens and worksheets.
2. Right-click the Global Procedures folder and then choose Import… from the shortcut
menu.
3. In the File field, click Browse to open a standard Windows file browser and select a
global procedures file. (This is a plain text file that has been saved with the .gis file
extension.)
4. Select Replace functions if they already exist to overwrite functions in the Global
Procedures folder with functions imported from the file, if the functions have the same
names.
5. In the Functions area, you can import All functions from the global procedures file
(*.gis) or Only selected functions.
6. Click Import.
After the functions are imported, they should be available in the Global Procedures folder.
Graphic Module
Graphics Script
The Graphics Script interface can be edited by its icon from the Graphics tab of the Project
Explorer:
This interface can be used to execute logics on the following events, based on pre-defined
sub-routines:
• Graphics_OnStart() : The code configured within this sub-routine is automatically
executed just once when the graphic module is started. This interface is useful for
initializing variables or executing logics that must be implemented when running the
project.
• Graphics_WhileRunning() : The code configured within this sub-routine is
automatically executed continuously while the graphic module is running. The rate in
which this sub-routine is called depends on the performance of the platform where the
project is running.
IMPORTANT
Do not change the name of the predefined sub-routines. If you do, then the system will not
be able to automatically execute them.
Example:
$NewTag = Graphics.MyNewProcedure($OldTag)
Screen Script
To edit the screen script for a project screen, do one of the following:
• On the Graphics tab of the ribbon, in the Screen group, click Script; or
• Right-click in the screen and then select Screen Script option from the shortcut menu.
This interface can be used to execute logics on the following events, based on preconfigured
sub-routines:
• Screen_IsClosedByReplace(): This procedure determines whether the screen is
automatically closed when another screen is opened to replace it. If the procedure is
given a value of 0 or FALSE, then automatic closing is disabled. When the function is
given a positive value (e.g., 1) or TRUE, or if the procedure is not declared at all, then
automatic closing is enabled.
CAUTION
Do not change the names of the preconfigured sub-routines described above. If you do, then
the system will not be able to call them.
Note:
• The execution of the Screen Script sub-routines on the server is totally
independent of the execution on the Thin Client stations. In other words, these
sub-routines are executed asynchronously.
• The procedures and/or variables declared in the Screen Script interface have
local scope. They can be called only from the specific screen on which they are
declared.
Example:
Command Animation
To edit the Command animation interface, do the following:
1. Select the object.
2. Click the Command animations icon in the Animations group.
3. Right-click on the object. The Object Properties dialog for the Command animation will
open.
Use this interface to execute logics when the user clicks on the object where the Command
animation is applied (during runtime) or presses the shortcut (Key) associated with the
Command animation.
Variables declared in this interface are available for this interface only (local scope). In other
words, they are not available for any other object in the project. You cannot implement
procedures in this interface. You can, however, call procedures implemented in the Global
Procedures or in the Screen Script interface for the same screen where the Command
animation is configured.
Note: For more information, see Command animation.
Example:
'The script below will be executed when the user clicks on the
object
'where this animation is configured
$MyValue = InputBox("Please enter the new set-point", "Set-point")
ActiveX Events
To edit the ActiveX Events interface, select the Script option from the Events tab of the
ActiveX object inserted on the screen.
1. Click the ActiveX Control icon in the Active Objects toolbar.
2. Select the ActiveX Control that you wish to use and then click OK.
3. The object that symbolizes the selected ActiveX Control will display. Right-click on this
object to open the Object Properties dialog.
4. Click the Configuration button. The Configuration dialog will open. Click the Events tab.
Use this interface to execute logics when an ActiveX object triggers an event.
Variables declared in this interface are available for this interface only (local scope). In other
words, they are not available for any other object in the project.
You cannot implement procedures in this interface. You can, however, call procedures
implemented in the Global Procedures or in the Screen Script interface for the same screen
where the ActiveX object is configured.
Note: For more information, see ActiveX Control object.
Example:
'The script below will be executed when the Calendar Control ActiveX
'triggers its "AfterUpdate" event
$MyYear = CalendarControl1.Year
$MyMonth = CalendarControl1.Month
$MyDay = CalendarControl1.Day
Background Task
The code configured in this worksheet is executed just once when the Background Task
module (BGTask) is started. This interface is useful for initializing variables or executing
logics that must be implemented when the project is run.
You can declare and initialize variables and define procedures. However, variables or
procedures declared in this interface will be available ONLY to the Script worksheets
executed by the Background Task module — they are not available to any VBScript interface
from the Graphic Module.
Example:
'Variables available for all Script groups from the Script task can
be declared and initialized here
Dim MyVar, Counter
MyVar = 100
'Procedures available for all Script groups from the Script task can
be implemented here
'The code configured here is executed just once when the Background
task is started
If $GetOS() = 3 Then
MsgBox ("Welcome! This project is running under Microsoft Windows
Embedded operating system.")
Else
MsgBox("Welcome! This project Is running under Microsoft Windows
desktop operating system.")
End If
Script worksheet
A Script worksheet is used to implement program logic (using VBScript) that should be
continuously executed during runtime, rather than on specific actions like the user pressing a
button on a screen.
Note: The Script worksheet is functionally similar to the Math worksheet, except that it uses
VBScript instead of the Built-in Scripting Language.
To create a new Script worksheet, do one of the following:
• On the Insert tab of the ribbon, in the Task Worksheets group, click Script;
• Right-click the Script folder in the Project Explorer, and then click Insert on the shortcut
menu; or
• Click New on the Application menu, click the File tab, and then select Script
Worksheet.
To edit an existing Script worksheet, double-click it in the Project Explorer.
The code configured in each Script worksheet is executed by the Background Task. The
project scans the worksheets sequentially (based on the worksheet number) and executes
only the groups in which the condition configured in the Execution field of the worksheet is
TRUE (i.e., non-zero).
Note: You must use the syntax supported by the Built-in Scripting Language in the
Execution field. Only the body of the worksheet supports VBScript.
Variables declared in the worksheet have local scope for that specific group only. They are
not available for any other VBScript interface.
You cannot define procedures (i.e., functions and subs) in the Script worksheet. However,
you can call procedures defined in the Global Procedures or in the Startup Script.
Example:
CAUTION
When any Script worksheet is saved during runtime (on-line configuration), the Startup Script
will be executed again and the current value of the local variables of any Script worksheet
will be reset.
Language Reference
Operators
Arithmetic Operators
Symbol Name Description
Comparison Operators
Symbol Name Description
> Greater than Comparison is True if the first expression is greater than the second
expression.
<= Less than or equal to Comparison is True if the first expression is less than or equal to the
second expression.
>= Greater than or equal to Comparison is True if the first expression is greater than or equal to
the second expression.
Is Object equivalence Compares two object reference variables. Comparison is True if both
object names refer to the same object.
Logical Operators
Symbol Name Description
Assignment Operators
Symbol Name Description
Constants
Color Constants
Constant Value Description
Comparison Constants
Constant Value Description
vbSunday 1 Sunday
vbMonday 2 Monday
vbTuesday 3 Tuesday
vbWednesday 4 Wednesday
vbThursday 5 Thursday
vbFriday 6 Friday
vbSaturday 7 Saturday
0
vbUseSystemDayOfWeek Use the day of the week specified in your system settings for the
first day of the week.
vbFirstJan1 1 Use the week in which January 1 occurs (default).
vbFirstFourDays 2 Use the first week that has at least four days in the new year.
vbFirstFullWeek 3 Use the first full week of the year.
vbGeneralDate 0 Display a date and/or time. For real numbers, display a date and
time. If there is no fractional part, display only a date. If there
is no integer part, display time only. Date and time display is
determined by your system settings.
vbLongDate 1 Display a date using the long date format specified in your
computer's regional settings.
vbShortDate 2 Display a date using the short date format specified in your
computer's regional settings.
vbLongTime 3 Display a time using the long time format specified in your
computer's regional settings.
vbShortTime 4 Display a time using the short time format specified in your
computer's regional settings.
Miscellaneous Constants
Constant Value Description
vbObjectError -2147221504 User-defined error numbers should be greater than this value.
String Constants
Constant Value Description
Tristate Constants
Constant Value Description
VarType Constants
Constant Value Description
Properties
Description
Returns or sets a descriptive string associated with an error.
FirstIndex
Returns the position in a search string where a match occurs.
Global
Sets or returns a Boolean value that indicates if a pattern should match all occurrences
in an entire search string or just the first one.
HelpContext
Sets or returns a context ID for a topic in a Help File.
HelpFile
Sets or returns a fully qualified path to a Help File.
IgnoreCase
Sets or returns a Boolean value that indicates if a pattern search is case-sensitive or
not.
Length
Sets or returns a Boolean value that indicates if a pattern search is case-sensitive or
not.
Number
Returns or sets a numeric value specifying an error. Number is the Err object's default
property.
Pattern
Sets or returns the regular expression pattern being searched for.
Source
Returns or sets the name of the object or application that originally generated the
error.
Value
Returns the value or text of a match found in a search string.
Statements
Call
Transfers control to a Sub or Function procedure.
Class
Declares the name of a class, as well as a definition of the variables, properties, and
methods that comprise the class.
Const
Declares constants for use in place of literal values.
Dim
Declares variables and allocates storage space.
Do…Loop
Repeats a block of statements while a condition is True or until a condition becomes
True.
Erase
Reinitializes the elements of fixed-size arrays and deallocates dynamic-array storage
space.
Execute
Executes one or more specified statements.
ExecuteGlobal
Executes one or more specified statements in the global namespace of a script.
Exit
Exits a block of Do…Loop, For…Next, Function, or Sub code.
For Each…Next
Repeats a group of statements for each element in an array or collection.
For…Next
Repeats a group of statements a specified number of times.
Function
Declares the name, arguments, and code that form the body of a Function procedure.
If…Then…Else
Conditionally executes a group of statements, depending on the value of an
expression.
Option Explicit
Forces explicit declaration of all variables in a script.
Private
Declares private variables and allocates storage space. Declares, in a Class block, a
private variable.
Property Get
Declares, in a Class block, the name, arguments, and code that form the body of a
Property procedure that gets (returns) the value of a property.
Property Let
Declares, in a Class block, the name, arguments, and code that form the body of a
Property procedure that assigns (sets) the value of a property.
Property Set
Declares, in a Class block, the name, arguments, and code that form the body of a
Property procedure that sets a reference to an object.
Public
Declares public variables and allocates storage space. Declares, in a Class block, a
private variable.
Ramdomize
Initializes the random-number generator.
ReDim
Declares dynamic-array variables, and allocates or reallocates storage space at
procedure level.
Rem
Includes explanatory remarks in a program.
Select
Executes one of several groups of statements, depending on the value of an
expression.
Set
Assigns an object reference to a variable or property, or associates a procedure
reference with an event.
Stop
Suspends execution.
Sub
Declares the name, arguments, and code that form the body of a Sub procedure.
While
Executes a series of statements as long as a given condition is True.
With
Executes a series of statements on a single object.
Methods
Clear
Clears all property settings of the Err object.
Execute
Executes a regular expression search against a specified string.
Raise
Generates a runtime error.
Replace
Replaces text found in a regular expression search.
Test
Executes a regular expression search against a specified string and returns a Boolean
value that indicates if a pattern match was found.
Write
Sends strings to the script debugger.
WriteLine
Sends strings to the script debugger, followed by a newline character.
Functions
Function Names
Function Names
Keywords
Empty
The Empty keyword is used to indicate an uninitialized variable value. This is not the
same thing as Null.
False
The False keyword has a value equal to 0.
Nothing
The Nothing keyword in VBScript is used to disassociate an object variable from any
actual object.
Null
The Null keyword is used to indicate that a variable contains no valid data. This is not
the same thing as Empty.
True
The True keyword has a value equal to -1.
Errors
VBScript Runtime Errors
Error Number Description
When you type the name of a class tag followed by the dot character ( . ) on any VBScript
interface, a list box will automatically open with the list of all members from the class tag:
When you type the name of a tag followed by the hyphen and greater than characters ( -> )
on any VBScript interface, a list box will automatically open with the list of all fields available
for this tag:
The items are displayed in alphabetic order, and each item has an icon to identify its main
type, as follows:
Icon Type
Boolean Tag
Integer Tag
Real Tag
String Tag
Class Tag
When you type the name of an ActiveX control that is inserted on the screen followed by
the dot character ( . ) on any VBScript interface from the screen where the ActiveX object is
inserted, a list box will automatically open with the list of all properties and methods from
the object:
The items are displayed in alphabetic order, and each item has an icon to identify its main
type, as follows:
Icon Type
Complete Word
Complete word finishes a tag, member, field, function, or ActiveX property/method name
once you have entered enough characters to disambiguate the term. After you type the first
few letters of the name, you can press Ctrl+Space to complete the name automatically.
Declarations Class
Miscellaneous Eval
Execute
Objects RegExp
Script Engine ScriptEngine
Identification
ScriptEngineBuildVersion
ScriptEngineMajorVersion
The following table lists VBA features that VBScript does not have.
Category Omitted Feature/Keyword
GoSub...Return, GoTo
On Error GoTo
On...GoSub, On...GoTo
Line numbers, Line labels
Conversion CVar, CVDate
Str, Val
Data Types All intrinsic data types except Variant
Type...End Type
Date/Time Date statement, Time statement
DDE LinkExecute, LinkPoke, LinkRequest, LinkSend
Debugging Debug.Print
End, Stop
Declaration Declare (for declaring DLLs)
Optional
ParamArray
Static
Error Handling Erl
Error
Resume, Resume Next
File Input/Output All traditional Basic file I/O
Financial All financial functions
Object Manipulation TypeOf
Objects Clipboard
Collection
Operators Like
Options Deftype
Option Base
Option Compare
Option Private Module
Select Case Expressions containing the Is keyword or any comparison operators
Expressions containing a range of values using the To keyword
Strings Fixed-length strings
LSet, RSet
Mid Statement
StrConv
Using Objects Collection access using !
Screen Events
In addition to the Screen Script, you can configure logics using the Built-in Scripting
Language for the On Open, While Open and On Close events for the screen (see the
Screen Logic interface from the Screen Attributes dialog). If you configure the Screen Script
(VBScript language) and the Screen Logic (Built-in Scripting Language), Visual Designer will
respect the following execution order:
Event Order of execution
When opening the screen • Screen_OnOpen() sub-routine from the Screen Script interface (VBScript language)
• On Open from the Screen Logic interface (Built-in Scripting Language)
When closing the screen • On Close from the Screen Logic interface (Built-in Scripting Language)
• Screen_OnClose() sub-routine from the Screen Script interface (VBScript language)
VBScript Procedures
In VBScript, there are two kinds of procedures; the Sub procedure and the Function
procedure.
Sub Procedures
A Sub procedure is a series of VBScript statements (enclosed by Sub and End Sub
statements) that perform actions but don't return a value. A Sub procedure can take
arguments (constants, variables, or expressions that are passed by a calling procedure).
If a Sub procedure has no arguments, its Sub statement must include an empty set of
parentheses ().
The following Sub procedure uses two intrinsic (built-in) VBScript functions, MsgBox and
InputBox, to prompt a user for information. It then displays the results of a calculation
based on that information. The calculation is performed in a Function procedure created with
VBScript. The Function procedure is shown after the following discussion.
Sub ConvertTemp()
temp = InputBox("Please enter the temperature in degrees F.", 1)
MsgBox "The temperature is " & Celsius(temp) & " degrees C."
End Sub
Function Procedures
A Function procedure is a series of VBScript statements enclosed by the Function and
End Function statements. A Function procedure is similar to a Sub procedure, but can
also return a value. A Function procedure can take arguments (constants, variables or
expressions that are passed to it by a calling procedure). If a Function procedure has no
arguments, its Function statement must include an empty set of parentheses. A Function
returns a value by assigning a value to its name in one or more statements of the procedure.
The return type of a Function is always a Variant.
In the following example, the Celsius function calculates degrees Celsius from degrees
Fahrenheit. When the function is called from the ConvertTemp Sub procedure, a variable
containing the argument value is passed to the function. The result of the calculation is
returned to the calling procedure and displayed in a message box.
Sub ConvertTemp()
temp = InputBox("Please enter the temperature in degrees F.", 1)
MsgBox "The temperature is " & Celsius(temp) & " degrees C."
End Sub
Function Celsius(fDegrees)
Celsius = (fDegrees - 32) * 5 / 9
End Function
Function Celsius(fDegrees)
Celsius = (fDegrees - 32) * 5 / 9
End Function
To get data out of a procedure, you must use a Function. Remember, a Function procedure
can return a value; a Sub procedure cannot.
Using Sub and Function Procedures in Code
A Function in your code must always be used on the right side of a variable assignment or in
an expression. For example:
Temp = Celsius(fDegrees)
or
To call a Sub procedure from another procedure, type the name of the procedure along with
values for any required arguments, each separated by a comma. The Call statement is not
required, but if you do use it, you must enclose any arguments in parentheses.
The following example shows two calls to the MyProc procedure. One uses the Call
statement in the code; the other doesn't. Both do exactly the same thing.
Notice that the parentheses are omitted in the call when the Call statement isn't used.
Creating Constants
A constant is a meaningful name that takes the place of a number or string and never
changes. VBScript defines a number of intrinsic constants.
You create user-defined constants in VBScript using the Const statement. Using the Const
statement, you can create string or numeric constants with meaningful names and assign
them literal values. For example:
Note that the string literal is enclosed in quotation marks ( " " ). Quotation marks are the
most obvious way to differentiate string values from numeric values. You represent Date
literals and time literals by enclosing them in number signs ( # ). For example:
You may want to adopt a naming scheme to differentiate constants from variables. This
will prevent you from trying to reassign constant values while your script is running. For
example, you might want to use a "vb" or "con" prefix on your constant names, or you might
name your constants in all capital letters. Differentiating constants from variables eliminates
confusion as you develop more complex scripts.
Declaring Variables
A variable is a convenient placeholder that refers to a computer memory location where you
can store program information that may change during the time your script is running. In
VBScript, variables are always of one fundamental data type, Variant.
You declare variables explicitly in your script using the Dim statement, the Public statement,
and the Private statement. For example:
Dim DegreesFahrenheit
You declare multiple variables by separating each variable name with a comma. For example:
You can also declare a variable implicitly by simply using its name in your script. That is not
generally a good practice because you could misspell the variable name in one or more
places, causing unexpected results when your script is run. For that reason, the Option
Explicit statement is configured by default in the Global Procedures interface to require
explicit declaration of all variables. Unless you delete this statement, you need to declare all
variables explicitly; otherwise, VBScript will generate errors during runtime indicating that the
variable does not exist.
An expression should have the variable on the left side and the value you want to assign to
the variable on the right. For example:
MyVar = 100
FALSE 0 0
TRUE 1 −1
[Script]
VBBoolean=value
If VBBoolean is set to 0, then the project will behave as described above: all VBScript
functions and operations will read/write a value of −1 for TRUE to Boolean tags. This is
the default setting for projects created with Visual Designer v6.1+SP3 or earlier and then
updated to v6.1+SP4, in order to maintain backward compatibility.
If VBBoolean is set to 1, then VBScript — as it is implemented within Visual Designer —
will read/write a value of 1 for TRUE to Boolean tags. (This does not affect Integer or Real
tags.) This is the default setting for projects created with Visual Designer v6.1+SP4 or later.
Note: Be careful when defining a custom property on a Linked Symbol using the
#Label:@Pointer syntax. For example:
[Script]
TruncRealToInt=value
If TruncRealToInt is set to 1, then the project will behave as described above: Real
values will be truncated at the decimal point without rounding. (For example, a value of 5.56
will be written as 5 to an Integer tag.) This is the default setting for projects created with
Visual Designer v6.1+SP4 or earlier and then updated to v6.1+SP5, in order to maintain
backward compatibility.
If TruncRealToInt is set to 0, then VBScript functions and operations will round Real
values to the nearest integer. (For example, a value of 5.56 will be written as 6 to an Integer
tag.) This is the default setting for projects created with Visual Designer v6.1+SP5 or later.
Note: This setting only affects the behavior of VBScript in Visual Designer. It does not affect
the behavior of the Built-in Scripting Language.
When multiplication and division occur together in an expression, each operation is evaluated
as it occurs from left to right. Likewise, when addition and subtraction occur together in an
expression, each operation is evaluated in order of appearance from left to right.
The string concatenation (&) operator is not an arithmetic operator, but in precedence it
falls after all arithmetic operators and before all comparison operators. The Is operator is an
object reference comparison operator. It does not compare objects or their values; it checks
only to determine if two object references refer to the same object.
−3 2
−2 1
−1 0
0 −1
1 −2
2 −3
3 −4
Note: By default, when you attempt to write any numeric value other than 0 to a Boolean
tag, the tag automatically assumes a value of 1. Therefore, if VBScript's NOT operator
is applied to a Boolean tag with a value of 1, then the value of the tag does not
change; the operator returns a value of −2, but the tag cannot accept this value so it
again assumes a value of 1.
You can configure Visual Designer to treat Boolean tags like Boolean variables in
VBScript, so that the NOT operator in VBScript will work as expected. For more
information, please see Boolean Tags and Boolean Variables.
NOT Operator in Built-in Language
In contrast, the NOT operator in the Built-in Scripting Language toggles the given numeric
value as if it is a natural boolean. The table below illustrates the behavior of the NOT
operator in the Built-in Scripting Language for the syntax…
0 1
≠0 0
Sub FixDate()
Dim myDate
myDate = #2/13/95#
To run more than one line of code, you must use the multiple-line (or block) syntax. This
syntax includes the End If statement, as shown in the following example:
Sub AlertUser(value)
If value = 0 Then
AlertLabel.ForeColor = vbRed
AlertLabel.Font.Bold = True
AlertLabel.Font.Italic = True
End If
End Sub
Sub AlertUser(value)
If value = 0 Then
AlertLabel.ForeColor = vbRed
AlertLabel.Font.Bold = True
AlertLabel.Font.Italic = True
Else
AlertLabel.Forecolor = vbBlack
AlertLabel.Font.Bold = False
AlertLabel.Font.Italic = False
End If
End Sub
Sub ReportValue(value)
If value = 0 Then
MsgBox value
ElseIf value = 1 Then
MsgBox value
ElseIf value = 2 then
Msgbox value
Else
Msgbox "Value out of range!"
End If
End Sub
You can add as many ElseIf clauses as you need to provide alternative choices, but
extensive use of the ElseIf clauses often becomes cumbersome. A better way to choose
between several alternatives is the Select Case statement.
Making Decisions with Select Case
The Select Case structure provides an alternative to If…Then…ElseIf for selectively
executing one block of statements from among multiple blocks of statements. A Select
Case statement provides capability similar to the If…Then…Else statement, but it makes
code more efficient and readable.
A Select Case structure works with a single test expression that is evaluated once, at the
top of the structure. The result of the expression is then compared to the values for each
Case in the structure. If there is a match, the block of statements associated with that Case
is executed, as in the following example:
Notice that the Select Case structure evaluates an expression once at the top of the
structure. In contrast, the If…Then…ElseIf structure can evaluate a different expression
for each ElseIf statement. You can replace an If…Then…ElseIf structure with a Select
Case structure only if each ElseIf statement evaluates the same expression.
Sub ChkFirstWhile()
Dim counter, myNum
counter = 0
myNum = 20
Do While myNum > 10
myNum = myNum - 1
counter = counter + 1
Loop
MsgBox "The loop made " & counter & " repetitions."
End Sub
Sub ChkLastWhile()
Dim counter, myNum
counter = 0
myNum = 9
Do
myNum = myNum - 1
counter = counter + 1
Loop While myNum > 10
MsgBox "The loop made " & counter & " repetitions."
End Sub
Sub ChkFirstUntil()
Dim counter, myNum
counter = 0
myNum = 20
Do Until myNum = 10
myNum = myNum - 1
counter = counter + 1
Loop
MsgBox "The loop made " & counter & " repetitions."
End Sub
Sub ChkLastUntil()
Dim counter, myNum
counter = 0
myNum = 1
Do
myNum = myNum + 1
counter = counter + 1
Loop Until myNum = 10
MsgBox "The loop made " & counter & " repetitions."
End Sub
Sub ExitExample()
Dim counter, myNum
counter = 0
myNum = 9
Do Until myNum = 10
myNum = myNum - 1
counter = counter + 1
If myNum < 10 Then Exit Do
Loop
MsgBox "The loop made " & counter & " repetitions."
End Sub
Using While…Wend
The While…Wend statement is provided in VBScript for those who are familiar with its
usage. However, because of the lack of flexibility in While…Wend, it is recommended that
you use Do…Loop instead.
Using For…Next
You can use For…Next statements to run a block of statements a specific number of times.
For loops, use a counter variable whose value increases or decreases with each repetition of
the loop.
The following example causes a procedure called MyProc to execute 50 times. The For
statement specifies the counter variable x and its start and end values. The Next statement
increments the counter variable by 1.
Sub DoMyProc50Times()
Dim x
For x = 1 To 50
MyProc
Next
End Sub
Using the Step keyword, you can increase or decrease the counter variable by the value you
specify. In the following example, the counter variable j is incremented by 2 each time the
loop repeats. When the loop is finished, the total is the sum of 2, 4, 6, 8, and 10.
Sub TwosTotal()
Dim j, total
For j = 2 To 10 Step 2
total = total + j
Next
MsgBox "The total is " & total
End Sub
To decrease the counter variable, use a negative Step value. You must specify an end value
that is less than the start value. In the following example, the counter variable myNum is
decreased by 2 each time the loop repeats. When the loop is finished, the total is the sum of
16, 14, 12, 10, 8, 6, 4, and 2.
Sub NewTotal()
Dim myNum, total
For myNum = 16 To 2 Step -2
total = total + myNum
Next
MsgBox "The total is " & total
End Sub
You can exit any For…Next statement before the counter reaches its end value by using the
Exit For statement. Because you usually want to exit only in certain situations, such as
when an error occurs, you should use the Exit For statement in the True statement block
of an If…Then…Else statement. If the condition is False, the loop runs as usual.
Eaton Corporation
Electrical Sector
1111 Superior Ave.
Cleveland, OH 44114
United States
877-ETN-CARE (877-386-2273)
Eaton.com