CitectSCADA User Guide
CitectSCADA User Guide
10
November 2008
Legal Notice
DISCLAIMER
Citect Pty Ltd makes no representations or warranties with respect to this manual and, to the maximum extent
permitted by law, expressly limits its liability for breach of any warranty that may be implied to the replacement of this manual with another. Further, Citect Pty Ltd reserves the right to revise this publication at any
time without incurring an obligation to notify any person of the revision.
COPYRIGHT
Copyright 2008 Citect Pty Ltd All rights reserved.
TRADEMARKS
Citect Pty Ltd has made every effort to supply trademark information about company names, products and
services mentioned in this manual.
Citect, CitectHMI, and CitectSCADA are registered trademarks of Citect Pty. Ltd.
IBM, IBM PC and IBM PC AT are registered trademarks of International Business Machines Corporation.
MS-DOS, Windows, Windows NT, Microsoft, and Excel are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.
DigiBoard, PC/Xi and Com/Xi are trademarks of Digi International Inc.
Novell, Netware and Netware Lite are are either registered trademarks or trademarks of Novell, Inc. in the
United States and other countries..
dBASE is a trademark of dataBased Intelligence, Inc.
All other brands and products referenced in this document are acknowledged to be the trademarks or registered trademarks of their respective holders.
GENERAL NOTICE
Some product names used in this manual are used for identification purposes only and may be trademarks of
their respective companies.
Contents
Legal Notice.....................................................................................2
Contents
Chapter: 5 Tools...........................................................................65
Configuration Tools...............................................................................65
Runtime Tools.......................................................................................66
Drivers...................................................................................................66
Using CitectSCADA.....................................................................81
Chapter: 8 Planning a Project.....................................................83
4
Contents
Contents
Contents
Contents
Contents
Contents
Linking templates....................................................................295
Creating your own templates..................................................295
New Style dialog box ..............................................................296
Using a Browse Sequence..................................................................296
Specifying a Startup Page ..................................................................297
Sizing the Page...................................................................................297
Page (screen) resolution ........................................................298
Page size at runtime...............................................................298
Defining Page Properties ....................................................................298
Page Properties - General......................................................299
Page Properties - Appearance ...............................................300
Page properties - Keyboard Commands ................................301
Page Properties - Events........................................................303
Page Properties - Environment ..............................................304
Setting Default Page Settings .............................................................304
Page defaults..........................................................................305
Understanding the Drawing Environment ...........................................305
Grids .......................................................................................306
Grid Setup dialog box .............................................................306
Guidelines...............................................................................306
Guidelines Setup dialog box...................................................307
Options ...................................................................................307
Colors .....................................................................................309
Edit Favorite Colors dialog box...............................................310
Swap Color dialog box............................................................313
Adjust colors dialog box..........................................................314
Zooming..................................................................................314
Using libraries.........................................................................315
Using symbols ........................................................................316
Bitmaps...................................................................................317
Import dialog box ....................................................................318
Contents
Contents
Contents
13
Contents
Contents
Contents
Contents
Contents
Contents
Glossary.......................................................................................703
Index.............................................................................................721
19
Contents
20
Getting Started
This section contains information on CitectSCADAv7.10 and describes the following:
Getting Technical Support
Upgrading to CitectSCADA v7.10
About CitectSCADA
Tools
Components of a project
Typical system scenarios
22
Training
Various training facilities are also available. Contact your local Citect distributor for more
information.
See Also
Contact information
Contact information
For contact information in your region, consult the support web site at:
http://www.citect.com/support/contact-support.html
23
24
25
See Also
Migration Tool
Clustering
Clustering allows you to group different sets of the runtime components within a single
project, allowing multiple independent systems to be monitored and controlled.
There are countless variations in how a clustered system can be configured. The most appropriate configuration will depend on the requirements for the solution to be deployed
and the environment in which it is being deployed. For more information see Typical system scenarios.
See Also
Included projects
Implementing Clustering
Local Variables
Local variables allow you to store data in memory when you start your runtime system.
They are created each time the system starts, and therefore do not retain their values when
you shut down.
Local variables are useful when you need each process to have a separate copy of the data.
Each process has its own copy of each local variable configured in the project, and the values in a local variable are available only to the process that wrote them.
See Also
Configuring Local Variables
Memory Mode
I/O Devices can now be configured to run in memory mode:
An I/O Device running in memory mode is created in memory and its values stored in
memory at runtime.
Devices using memory mode are not connected to any hardware, and write their values
to a cache. Memory mode is useful when you are configuring a system for the first time,
as you can design and test your system before connecting a physical I/O Device.
Note: Memory mode replaces Memory I/O Devices, which are no longer supported. Devices configured as Memory I/O Devices will be converted to local variables during the upgrade to v7.10.
See Also
Using Memory Mode
26
Publisher-Subscriber Model
CitectSCADA now uses a Publisher-Subscriber data acquisition model. Client computers
subscribe to configured tags and receive notification when the tag values change. Cicode
functions can also be triggered by the change of a tag, removing the need to poll, and improving the efficiency of the system.
See Also
TagSubscribe
TagUnsubscribe
A set of new configuration parameters have been added to provide control over the CitectSCADA network interfaces. These parameters help you protect your system by allowing
control over unused features of the product. The following services can be enabled / disabled: DDE, Remote CTAPI, ODBC, OLEDB and FTP.These services are disabled by default.
User login required for control actions
A user is now required to be configured and logged in to CitectSCADA to allow the display
process to perform a tag write (control) action. CitectSCADA projects should be designed
to avoid Cicode task that perform tag writes that are not issued by a user.
We advise that projects should be configured to take advantage of the change to provide
increased system security protection. If your system has existing network security protection in place and does not require the additional security protection, it can be turned off using the following parameters to avoid the impact of the changes:
Parameter for the client/display node: See [LAN] SecureLogin in the Parameters help file
for more information.
Parameter for the server node: See [LAN] AlllowLegacyConnections in the Parameters
help file for more information.
These parameters may be required during an upgrade process when there is a mix of old
and new version CitectSCADA nodes in a running system.
See Also
System Parameters
28
Multi-Signature Support
CitectSCADA now provides the facility for up to four users to approve an action or tag
write operation using the new Cicode functions MultiSignatureForm and MultiSignatureTagWrite.
Two further Cicode functions, VerifyPrivilegeForm and VerifyPrivilegeTagWrite, enable
you to restrict access to a specific action or tag write for a user with a specific set of privileges.
to that effect, and will allow you to deselect the driver prior to continuing with the installation.
Note: If you choose to ignore any warning, the driver will be installed but correct operation
of the driver is not guaranteed.
The communication driver installation can also be invoked individually at any time after
the product installation to install additional drivers.
30
Platform
Install Path
Configuration files
such as the citect.ini file
Pre-Vista
Vista
ProgramData/Citect/CitectSCADA 7.10/Config
User directory
Pre-Vista
Vista
ProgramData/Citect/CitectSCADA 7.10/User
Pre-Vista
Vista
ProgramData/Citect/CitectSCADA 7.10/Data
Pre-Vista
Data directory
Log files
ProgramData/Citect/CitectSCADA 7.10/Logs
Description
{SumType,n}
Description
Alarm Tag with Cluster Name prefix
Alarm type (string), not localized.
31
Field Name
Description
{TypeNum,n}
{AlmComment,n}
{Cluster,n}
{CUSTOM1,n}
{CUSTOM2,n}
{CUSTOM3,n}
{CUSTOM4,n}
{CUSTOM5,n}
{CUSTOM6,n}
{CUSTOM7,n}
{CUSTOM8,n}
{LocalTimeDate,n}
{Paging,n}
{PagingGroup, n}
Cluster Name
Alarm custom fields as configured.
Alarm paging
The CitectSCADA alarm facility constantly monitors equipment data and alerts operators
of any equipment fault or alarm condition. When an alarm is triggered it is displayed on
the standard alarm display page. The operator has to be continuously sitting in front of an
HMI monitoring the system. CitectSCADA v7.10 provides the facility to link alarms with a
remote paging system for operators.
Two Alarm Properties have been added to enable CitectSCADA to interface with any thirdparty paging system. The Paging property is a flag to indicate that the alarm is going to be
paged, the PagingGroup property is a freeform text field indicating the sequence of people
to notify in the event the alarm occurred.
See your third-party paging system documentation for information on how to interface
with CitectSCADA.
32
New Parameters
The following parameters are new in version 7.0 and v7.10. For a complete list of all the system parameters, refer to the help file.
Alarm Parameters:
[Alarm.ClusterName.ServerName]Clusters
[Alarm.ClusterName.ServerName]CPU
[Alarm.ClusterName.ServerName]Events
[Alarm.ClusterName.ServerName]ShutdownCode
[Alarm.ClusterName.ServerName]StartupCode
Note: The default alarm property write behavior was to write the new value to DBF/RDB.
This has changed in version 7.0 onwards. Refer to the parameter [Alarm]UseConfigLimits.
Backup Parameters:
[Backup]SaveiniFiles
Client Parameters:
[Client]Clusters
[Client]ComputerRole
[Client]Events
[Client]ForceClient
[Client]FullLicense
[Client]ShutdownCode
33
[Client]StartupCode
[Client]WaitForConnectAtStartup
CtCicode Parameters:
[CtCicode]FastFormat
CtEdit Parameters:
[CtEdit]Config
The directory where the CitectSCADA configuration files such as citect.ini are located.
[CtEdit]Logs
Dial Parameters:
[Dial]MissedScheduleTolerance
Driver Parameters:
[<DriverName>]OverriderOSProtection
Determines whether to override the protection mechanism built-in to the I/O Server for drivers that may not be compatible
with Windows Vista.
General Parameters:
[General]Multiprocess
IOServer Parameters:
34
[IOServer.ClusterName.ServerName]Clusters
[IOServer.ClusterName.ServerName]CPU
[IOServer.ClusterName.ServerName ]Events
[IOServer.ClusterName.ServerName]ShutdownCode
[IOServer.ClusterName.ServerName]StartupCode
Report Parameters:
[Report.ClusterName.ServerName]Clusters
[Report.ClusterName.ServerName]CPU
[Report.ClusterName.ServerName]Events
[Report.ClusterName.ServerName]ShutdownCode
[Report.ClusterName.ServerName]StartupCode
Trend Parameters:
[Trend.ClusterName.ServerName]Clusters
[Trend.ClusterName.ServerName]CPU
[Trend.ClusterName.ServerName]Events
[Trend.ClusterName.ServerName]ShutdownCode
[Trend.ClusterName.ServerName]StartupCode
Alarm Parameters:
[Alarm]ArgyleTagValueTimeout
Code Parameters:
[Code]HaltOnInvalidTagData
Client Parameters:
[Client]AutoLoginMode
Set to enable auto login. Users can select one of seven modes.
CtApi Parameters:
[CtAPI]AllowLegacyConnections
35
[CtAPI]AllowLegacyServices
When enabled the Citect Web Service and the Citect OLEDB Provider
can connect to the CTAPI server.
DDE Parameters:
[DDE]AllowCicode
[DDE]AllowWrites
Kernel Parameters:
[Kernel]ErrorBuffers
Lan Parameters:
[LAN]AllowLegacyConnections
[LAN]AnonymousLoginName
[LAN]SecureLogin
[LAN]ServerLoginEnabled
[LAN]ServerLoginName
ODBC Parameters:
[ODBC]Server
Page Parameters:
[Page]AllowHScroll
[Page]AllowHScrollBar
[Page]AllowVScroll
[Page]AllowVScrollBar
Obsolete Parameters
The following parameters are no longer supported from version 7.0:
Alarm Parameters:
[Alarm]CPU
36
[Alarm]Primary
[Alarm]Process
[Alarm]Server
Client Parameters:
[Client]Display
[Client]Manager
[Client]Primary
[Client]Process
[Client]Standby
Code Parameters:
[Code]AlarmShutdown
[Code]AlarmStartup
[Code]AutoReRead
[Code]IOServerShutdown
[Code]IOServerStartup
[Code]ReportShutdown
[Code]ReportStartup
[Code]Shutdown
[Code]Startup
[Code]TrendShutdown
[Code]TrendStartup
37
DNS Parameters:
[DNS]<Server name>
Event Parameters:
[Event]Alarm
[Event]IOServer
[Event]Name
[Event]Report
[Event]Trend
General Parameters:
[General]BadOptimise
[General]CitectRunningCheck
IOServer Parameters:
[IOServer]BlockWrites
[IOServer]CPU
[IOServer]Name
[IOServer]Process
[IOServer]SaveBackup
[IOServer]Server
LAN Parameters:
[LAN]Bridge
38
[LAN]CancelOnClose
[LAN]Disable
[LAN]GroupName
[LAN]KillPiggyBackAck
[LAN]LanA
[LAN]NetBIOS
[LAN]NetTrace
[LAN]NetTraceBuff
Defines the protocol stack that CitectSCADA uses for NetBIOS communication
Enables/disables NetBIOS
Determines whether the NetBIOS window is enabled on startup
Sets the number of trace buffers.
[LAN]NetTraceErr
[LAN]NetTraceLog
[LAN]Poll
[LAN]RemoteTimeOut
The timeout period for remote I/O Device write requests from a Control Client to the I/O Server
[LAN]Retry
The number of times to retry establishing communications after a timeout before an alert message is generated
[LAN]SendTimeOut
[LAN]SesRecBuf
[LAN]SesSendBuf
[LAN]TimeOut
Proxi Parameters:
[Proxi]<I/O Server name>
Report Parameters:
[Report]Primary
[Report]Process
[Report]Server
Server Parameters:
[Server]Name
Trend Parameters:
[Trend]BlockByIODevice
[Trend]CPU
39
[Trend]Process
[Trend]Redundancy
[Trend]Server
[Trend]StaggerRequestSubgroups
Win Parameters:
[Win]CtrlEsc
Com Parameters:
[Com]StartTimeout
New Functions
The following functions are new in version 7.0:
Miscellaneous Functions
40
AccControl
AccumBrowseClose
AccumBrowseFirst
AccumBrowseGetField
AccumBrowseNext
AccumBrowseNumRecords
AccumBrowseOpen
AccumBrowsePrev
ProcessIsClient
ProcessIsServer
ServiceGetList
Gets information about services running in the component calling this function.
Alarm Functions:
AlarmDspLast
AlmSummaryAck
AlmSummaryClear
AlmSummaryClose
AlmSummaryCommit
AlmSummaryDelete
AlmSummaryDeleteAll
AlmSummaryDisable
Disables the alarm at the current cursor position in an active data browse
session.
AlmSummaryEnable
AlmSummaryFirst
AlmSummaryGetField
AlmSummaryLast
AlmSummaryNext
AlmSummaryOpen
AlmSummaryPrev
AlmSummarySetFieldValue
AlmTagsAck
AlmTagsClear
Clears the alarm tag at the current cursor position in an active data browse
session.
AlmTagsDisable
41
AlmTagsEnable
AlmTagsFirst
AlmTagsGetField
AlmTagsNext
AlmTagsNumRecords
AlmTagsOpen
AlmTagsPrev
AssGetScale
Gets scale information about the associations of the current Super Genie
from the datasource
AssInfoEx
Cluster Functions
ClusterActivate
ClusterDeactivate
ClusterFirst
ClusterIsActive
ClusterNext
ClusterServerTypes
ClusterStatus
Allows the user to determine the connection status from the client to a
server on a cluster.
ClusterSwapActive
42
SubscriptionAddCallback
SubscriptionGetAttribute
SubscriptionRemoveCallback
TagGetProperty
TagGetScale
TagSubscribe
TagUnsubscribe
Tag Functions
TagInfoEx
TagWriteEventQue
Task Functions
TaskCluster
Trend Functions
TrnBrowseClose
TrnBrowseFirst
TrnBrowseGetField
TrnBrowseNext
TrnBrowseNumRecords
TrnBrowseOpen
TrnBrowsePrev
TrnGetCluster
TrnGetPenComment
Report Functions
RepGetCluster
MultiSignatureForm
MultiSignatureTagWrite
43
UserLogin
UserVerify
VerifyPrivilegeForm
VerifyPrivilegeTagWrite
Miscellaneous Functions
KernelQueueLength
KernelTableInfo
KernelTableItemCount
ProcessRestart
ServerRestart
Tag Functions
TagRDBReload
Windows Functions
WinStyle
Obsolete Functions
The following functions are not supported from version 7.0. If your project uses any of
these functions, an error will be raised during compilation.
Cluster Functions
ClusterGetName
ClusterSetName
Display Functions
DspCol
44
Task Functions
ReRead
Causes CitectSCADA to re-read the I/O Device data associated with the current Cicode
task.
Tags are now subscribed at the start of a
function and updated tag values are sent to
the subscribing function.
Tag subscriptions are made at the update
rate of:
You should verify that the subscription update rate matches the requirements of your
function.
After removing ReRead from looping code
you may need to extend the period of the
Sleep function.
This is to replace the pause ReRead created
while it read all the tag values.
WndPutProfile
Modified Functions
The following functions have been modified in version 7.0:
Alarm Functions
AlarmAck
Acknowledges alarms.
AlarmAckRec
AlarmActive
AlarmClear
AlarmClearRec
AlarmDelete
45
AlarmDisable
Disables alarms.
AlarmDisableRec
AlarmDsp
Displays alarms.
AlarmDspLast
AlarmEnable
Enables alarms.
AlarmEnableRec
AlarmFirstTagRec
AlarmGetDelayRec
AlarmGetFieldRec
AlarmGetThresholdRec
AlarmNextTagRec
AlarmNotifyVarChange
AlarmSumAppend
AlarmSumCommit
AlarmSumDelete
AlarmSumFind
AlarmSumFirst
AlarmSumGet
AlarmSumLast
AlarmSumNext
AlarmSumPrev
AlarmSumSet
AlarmSumSplit
AlarmSumType
IODeviceControl
IODeviceInfo
Miscellaneous Functions
AccControl
ServerInfo
46
ServerInfoEx
Shutdown
Report Functions
RepGetControl
Report
Runs a report.
RepSetControl
SPC Functions
SPCAlarms
SPCProcessXRSGet
SPCProcessXRSSet
SPCSpecLimitGet
SPCSpecLimitSet
SPCSubgroupSizeGet
SPCSubgroupSizeSet
AssPage
AssPopUp
AssTag
AssVarTags
AssWin
47
Tag Functions
TagGetProperty
TagGetScale
TagRamp
TagRead
TagScaleStr
TagWrite
Task Functions
MsgOpen
Trend Functions
TrendDspCursorTag
TrnAddHistory
TrnDelHistory
TrnEventSetTable
TrnEventSetTableMS
Sets event trend data and time data (including milliseconds) for a specified trend
tag.
TrnFlush
TrnGetDefScale
TrnGetPen
TrnGetTable
TrnInfo
TrnNew
TrnSelect
Window Functions
WinCopy
WinFile
WinNewAt
WinPrint
Obsolete Functions
Previously available "Point" related functions are now no longer available, and if used will
detect and return an error indicating that they are not supported. In order to obtain the
same result as was previously invoked by those function, replace them with the Tag based
equivalent using the appropriate Tag arguments and conditions.
The "point" functions that are no longer available are listed below along with their replacement functions:
Function
ctPointGetProperty
Replacement
ctTagGetProperty
ctPointNew
ctPointRead
ctPointWrite
ctTagWrite or ctListWrite
If you are using the point functions on single tags, you should use the ctTagRead, ctTagWrite functions instead. If you are building up multiple tags into one point, you should use
ctListNew and add tags to the list through ctListAdd. Then use ctListWrite, ctListRead and
ctListData to write and read from the tags.
The following functions are not relevant to tag based operations. They are obsolete and
there is no replacement function.
ctPointBitShift
ctPointClose
ctPointCopy
ctPointDataSize
ctPointToStr
ctStrToPoint
ctTagToPoint
49
50
Upgrading Procedures
To upgrade an existing project to v7.0 or v7.10 from v6.x, you should perform each of the
following procedures:
Upgrade CTAPI Applications
Configure I/O Devices
Run the Citect Installer
Launch CitectSCADA
Define Clusters
Run the Migration Tool
Configure Network Addresses
Configure Servers
Configure Tags to Use Clustering
Compile the Project
Run Computer Setup Wizard
51
52
Example and CSV_Example projects, it is recommended that you delete the existing Example and CSV_Example projects using Citect Explorer before starting the installation.
Launch CitectSCADA
An automatic upgrade of your projects will occur when you initially start CitectSCADA.
To launch CitectSCADA, click Start | All Programs | Citect | CitectSCADA 7.10 | CitectSCADA Explorer. The following message will display:
Migration Tool
The automatic update that occurs when you initially launch CitectSCADAv7.10 does not
fully upgrade your projects, and must be followed by the use of the Migration Tool if migrating from v6.x. The automatic update is a passive action which updates the database
field definition for any database that has been changed between the two versions and copies new files that are required in v7.10. Prior to the automatic upgrade proceeding you are
given the option of cancelling the upgrade. The upgrade can be invoked at a later time by
setting the [CtEdit]Upgrade parameter to 1 (True) in the Citect.ini file.
After the automatic update has completed you should then prepare your projects prior to
running the Migration Tool.
The Migration Tool is a separate application which should be manually run after the automatic upgrade has been executed, and initiated by you after you have prepared the project
for final migration. This tool will accommodate the important changes in project functionality that are incorporated in v7.0 and v7.10.
It is important that you prepare your existing projects for a successful upgrade using this
tool.
Some of the features introduced in v7.10 of CitectSCADA require changes in the project
data from version 6.x
See Also
Memory devices
Alarm devices
Included projects
Using the Migration Tool
Memory Devices
In previous versions of CitectSCADA an I/O Device could be defined as a memory device
by setting the port value to "Memory". This was generally done for one of the following
purposes:
53
To provide for future devices that were not currently connected to the system, but their
points needed to be configured at this stage of project.
For virtual devices where there was no corresponding physical I/O Device and you
needed data storage with all of the functionality normally associated with I/O variables
such as alarms.
To act as a variable which was local to the process being used in place of Cicode global
variables.
You can still use I/O Devices for future or virtual devices in version 7.0, but you should
manually set the Port parameter to an unused value other than Memory, and set the Memory property of the device to True to indicate that it is an offline in-memory device before
running the Migration Tool.
You need to review your project to identify which memory I/O Devices are local variable
holders and which ones need to be changed to non-memory so that the Migration tool does
not convert their variables.
The Migration Tool will set any I/O Devices port which is identified as a Memory device
to the new Local Variable, and the original device record will be deleted.
See Also
Configure I/O Devices
Alarm Devices
Converting Memory Variables
Alarm Devices
In previous versions of CitectSCADA Alarm devices were defined as devices with their
Protocol property set to "Alarm". In version 7.0 the function of configuring such a device is
now replaced by setting the Publish Alarm Properties property to True on the Alarm Server.
All Alarm devices with their Protocol property set to "Alarm" will be deleted from I/O Devices table by the Migration Tool. Before running the Migration Tool you should identify
these devices and set the Publish Alarm Properties property to True on the Alarm Server.
See Also
Alarm Server Definitions
The Migration tool can delete all the memory and alarm device records. If you want to convert the variables and delete the devices at a later time, deselect the "Remove obsolete
Memory and Alarm Devices" option
See Also
Converting Memory Variables
Converting Memory Variables
A memory variable is a variable with its I/O Device Port property set to either "Memory"
or "MEM_PLC".
If there are multiple I/O Devices with the same name, possibly on different I/O Servers,
then the device would not be considered as a memory device regardless of its port value.
In other words the Migration tool will not process the variables for memory devices with
duplicate names.
See Also
Inserting new local variables
54
Name
Data Type
Date Type
(Empty)
Array Size
Zero Scale
Full Scale
Comment
Comment
With the exception of the Array Size, which has been introduced in version 7.0 exclusively
for local variables, all fields receive their values from the same or similar field.
See Also
Deleting Variable Tags
Deleting Variable Tags
Once the Migration Tool has created the local variable records it will insert all those variable tag records that have been converted in the previous step, and delete the original variable tag.
If an error is detected during the insertion of the local variables, the deletion of the variable
tags will not be performed. If this occurs it is possible to have two records with same name
and data, one in the local variable (the newly inserted record) and one in the variable tags
(the original record that has not been deleted). You need to delete either of the variables
manually, or restore the backed up project after removing the cause of the error then run
the Migration Tool again.
See Also
Default Scale
Deleting Obsolete I/O Devices
Default Scale
The Scale properties in both variable tags and local variables are optional. If a Scale value
is not specified the default value is indicated by a parameter in the Citect.ini file. The parameter name is "DefaultSliderScale" under the [General] section in the Citect.ini file. The
default values for Scale is 0-32000, unless the default slider scale is true in which case the
default value depends on the type for example Integer, String etcetera.
The Migration tool will read this parameter and if it is not set, or set to false, then it will
explicitly set any empty Scale property to a value in to the range of 0 to 32000. This will be
done even if either of the Zero Scale or Full Scale parameters has a value, in which case the
empty Scale parameter will receive the default value.
55
If the DefaultSliderScale in the Citect.ini file set to True, the Scale parameters will not be
populated with a default value if they are empty, rather they will be interpreted at runtime.
Deleting Obsolete I/O Devices
Deleting obsolete I/O Devices is an optional step in the Migration Tool and will be performed after all the memory variables are converted. If the delete option is chosen, then all
obsolete Memory devices and Alarm devices will be deleted as the final step of the Migration Tool operation.
See Also
Included Projects
Included Projects
Each project may contain multiple included projects. Additionally any included project
may contain its own included project so creating a cascading project.
The Migration Tool needs to process the original project and all included projects in a single
step. The reason for this is that variables can be defined in one project that refer to I/O Devices defined in another included project.
The Migration Tool performs this procedure sequentially on the "master" project then each
included project.
In the case where two master projects share the same project as an included project, it is important that you do not select the "Remove obsolete Memory and Alarm devices" check box
when you process a project that contains shared included projects. This is because the removal is performed at the conclusion of the migration process on each master and included
projects sequentially. This could cause the deletion of an I/O Device in the first master
project which is referenced by a tag in a shared included project which is processed in a later step.
If two separate "master" projects contain the same included project, run the Migration Tool
on each "master" project without selecting to delete obsolete devices.
To remove obsolete devices it is recommended that once the Migration Tool has completed
successfully (without the check box being selected), you should run it a second time with
the check box selected. This will safely remove the devices since all tag conversions were
completed in the first pass of the Migration Tool.
Using the Migration Tool
Note: Before you use the Migration Tool is strongly recommended that you familiarize
yourself with the process that it performs, and the preparatory steps that you need to carry
out with your existing projects as described under Migration Tool.
To run the Migration Tool:
Backup the projects that you intend to migrate.
From the Citect Explorer or Citect Editor menu bar select Tools | Migration Tool to display the Migration Tool dialog.
Either accept the project displayed in the edit box, or browse for the project that you
wish to upgrade. If the project contains included projects, only select the "master"
project. Any includes will be processed automatically.
Select the Remove obsolete Memory and Alarm devices check box if you wish to delete
these devices after successful migration.
56
Note: Do not select this check box if the project contains any included projects which are
shared with more than one master project when you run the tool for the first time on
such projects. Run the tool a second time using this option if the migration is successful
after it is run the first time if you want to delete the devices.
Click Migrate to begin the migration process, or click Close to exit without performing
the migration.
The migration process will begin and display a progress dialog indicating the stage of
the conversion and the name of the project being migrated. If you wish to cancel the migration at this point click the Abort button.
Note: Aborting a migration will stop the migration process, and any changes already
completed will not be rolled back. You will have to restore your project from the backup
created in the first step.
When the migration process is concluded a confirmation dialog box will display indicating the number of variables converted and the number of I/O Devices deleted (if device deletion was selected at the start of migration)
Click the Close button to close the dialog.
Define Clusters
Even if you do not intend to use clusters in your project, you must define at least one. All
tags and servers will default to run in the defined cluster.
In the Project Editor, select Servers | Clusters. The Cluster dialog box displays:
In the ClusterName field, enter the name of the cluster (maximum of 16 characters). The
name must be unique to the project and must not contain spaces.
In the Comment field, enter any useful comment. This property is optional and is not
used at runtime.
Click Add.
See Also
Configure Network Addresses
57
Configure Servers
All Primary and Standby Alarms, Reports, Trends, and I/O Servers are now defined using
the Project Editor. This involves specifying a network address and a cluster for each server.
Default Ports
Each server has a unique default port assigned to it. This default port may only be used
with that type of server. Attempting to use a default port on another type of server will result in a compilation error of:
"Invalid port number (2073-2082,20222,21) are reserved"
The following table lists the default port numbers and their associated server type.
Default Port
Server Type
Server Role
21
FTP Server
2073
CTAPI
CTAPI Communications
2074
Client
Cicode Debugging
2075
Reports Server
2076
Alarm Server
2077
Trends Server
2078
IO Server
2079
IDC
2080
Alarm Server
2082
10 Server
20222
ODBC
58
For each alarm, in the Cluster Name field, select the name of the cluster that will run the
alarm. If there is only one cluster defined in the project, you can leave this field blank. The
alarms will default to the defined cluster.
If the project has multiple clusters, and you do not select a cluster name in this dialog, then
CitectSCADA considers the alarm to run on all defined clusters.
Using the F2 key in the Alarm Server Definitions dialog, open the extended properties page
and set the Publish Alarm Properties to "True" if you want the alarm properties to be published and be viewed as normal variable tags, and have the Alarm Server listen as if it were
an I/O connector.
Click Replace to save the changes.
See Also
Configure Report Tags to use Clustering
Configure Report Tags to use Clustering
In the Project Editor, select System | Reports. The Reports dialog box will display:
For each report, in the Cluster Name field, select the cluster that will run the report. If there
is only one cluster defined in the project, you can leave this field blank. The reports will default to the defined cluster.
If the project has multiple clusters, and you do not select a cluster in this dialog, then CitectSCADA considers the report to run on all defined clusters.
Click Replace to save the changes.
See Also
Configure Trend Tags to use Clustering
Configure Trend Tags to use Clustering
In the Project Editor, select Tags | Trend Tags. The Trend Tags dialog box will display:
For each trend, in the Cluster Name field, select the cluster that will run the trend. If there
is only one cluster defined in the project, you can leave this field blank. The trends will default to the defined cluster.
If the project has multiple clusters, and you do not select a cluster in this dialog, CitectSCADA considers the trend to run on all defined clusters.
Click Replace to save the changes.
See Also
Configure SPC Tags to use Clustering
Configure SPC Tags to use Clustering
In the Project Editor, select Tags | SPC Tags. The SPC Tags dialog box will display:
For each SPC tag, in the Cluster Name field, select the cluster that will run the SPC tag. If
there is only one cluster defined in the project, you can leave this field blank. The SPC tags
will default to the defined cluster.
If the project has multiple clusters, and you do not select a cluster in this dialog, CitectSCADA considers the tag to run on all defined clusters.
Click Replace to save the changes.
59
See Also
Configure Accumulators to use Clustering
Configure Accumulators to use Clustering
In the Project Editor, select System | Accumulators. The Accumulators dialog box will display:
For each accumulator, in the Cluster Name field, select the cluster that will run the accumulator. If the project has only one cluster defined, you can leave this field blank. The accumulator will default to the defined cluster.
If the project has multiple clusters, and you do not select a cluster in this dialog, CitectSCADA considers the accumulator to run on all defined clusters.
Click Replace to save the changes.
See Also
Compile the Project
Troubleshooting
The following results should be noted and carefully considered when upgrading to
CitectSCADAv7.10:
Compiler Errors
Upgrading a Project that uses Distributed Servers
Compiler Errors
Before you configure your project to run in version 7.0, compiling the project will generate
a number of compiler errors. These may include messages concerning deprecated and deleted functions, as well as the detected error No Clusters defined. This detected error will
be resolved once you define a cluster in the project.
See Also
Troubleshooting
60
In each Cluster Project, specify the appropriate cluster for alarms, trends, reports, SPC
tags, and accumulators.
You may need to modify the buttons and pages in the Global Display Project, particularly if they are using Cluster functions which have been modified or deprecated.
See Also
Deprecated and Removed Functions
61
62
Deploying CitectSCADA
The project is then deployed across a client-server network architecture. The servers are
used to manage communication with plant equipment and collate production data, while
the clients provide the interface for operators and managers to assess and interact with the
system.
This architecture allows the flexibility to adapt CitectSCADA to any production scenario,
with support for scalability, server clustering, and system redundancy.
Running a project
When a project is eventually compiled and implemented in runtime, your production staff
can visually monitor the system, initiate production processes and respond to alarm conditions.
Historical and trend data can also be collated and distributed to assess operational performance metrics such as production volume, efficiency, and maintenance requirements.
63
64
Chapter: 5 Tools
CitectSCADAs architecture can be divided into three distinct areas of functionality:
Configuration
Runtime
Drivers
Configuration involves all the tasks required to prepare and build a project, while runtime
is the implementation of a project in a live production environment.
Drivers enable communication with devices via a number of communication protocols.
The driver defines the specific project settings required for CitectSCADA to communicate
with a particular device.
When considering the tools included with CitectSCADA, it is easiest to look at their roles
in either configuration or runtime.
See Also
Configuration Tools
Runtime Tools
Drivers
Configuration Tools
The following tools enable you to configure a project and its components, and set up computers to use CitectSCADA:
CitectSCADA Explorer
65
Chapter: 5 Tools
A utility for editing configuration files and generating reports to compare and analyze
files
See Computer Setup Editor
online help
Runtime Tools
The following tools enable you to run, monitor, and control projects during runtime:.
CitectSCADA Web Client
Process Analyst
CitectSCADA Runtime
Manager
An application used to manage and control the CPU configuration of the project,
and the running state of each component
See "Launching Runtime Manager" in the
Runtime Manager online help
Drivers
CitectSCADA can communicate with an array of I/O Devices, including PLCs (Programmable Logic Controllers), loop controllers, and distributed control systems (DCS).
The I/O Devices may be local (directly connected to an I/O Server) or remote (connected to
CitectSCADA via an intermediate communications means like a phone line).
Drivers enable communication with devices via a number of communication protocols (including Ethernet, TCP/IP, and Serial). The driver defines the specific project settings required for CitectSCADA to communicate with a particular device. This includes
information about:
Boards
Ports
Devices
Tag addressing
66
Chapter: 5 Tools
For detailed information on drivers and how to use them in your system, see Communicating with I/O Devices
67
Chapter: 5 Tools
68
Graphics components
The graphical components of a project represent the content used to create the screens presented on clients. They include:
Pages
Templates
Symbols
Genies
Super Genies
As you create project pages in Graphics Builder, the included components are added to the
relevant subdirectory in the current projects Graphics folder.
69
Tags
Tags are used to identify the end points in the infrastructure you are using CitectSCADA
to monitor and control. The name you give to a tag becomes a label for a register address,
allowing it to be intuitively applied across graphics pages and in alarm notifications.
Three tag types are included in a projects Tags folder in Citect Explorer:
Variable tags
Trend tags
SPC tags
Selecting one of these tag types in Citect Explorer calls up the associated configuration dialog in Project Editor.
Alarms
Alarms are used to identify conditions in a system that require attention. CitectSCADA
supports seven different alarm types:
Digital
See Digital Alarms
Analog
See Analog Alarms
Time-stamped
See Time-stamped Alarms
Advanced
See Advanced Alarms
Multi-Digital
See Multi-digital Alarms
Time-stamped Digital
See Time-stamped Digital Alarms
Time-stamped Analog
See Time-stamped Analog Alarms
You can also use alarm categories within your project to help identify and manage alarms.
System components
The system components of a project allow you to customize, manage, and track your runtime system. They include:
Keyboard key
70
Keyboard commands
Reports
Events
Commands that execute in response to specific runtime triggers, such as a Cicode expression or variable tag. When the event trigger is
true, the command will execute
See Configuring Events
Accumulators
Variable tags tracking continuous runtime data. Data can be monitored and displayed by animating or trending the variable tags
Devices
Users
Label
Parameters
Included projects
Communications components
The communications components of a project are the configured representation of the communications hardware in your system. They include:
Board
Port
71
Modem
I/O Devices
I/O Device
address
Network addresses
Alarms servers
Reports servers
Trends Servers
I/O Servers
Cicode / CitectVBA
CitectSCADA offers two programming languages with which you can control and manipulate CitectSCADA components:
Cicode
CitectVBA
A Visual Basic for Applications (VBA) and VBScriptcompatible Basic scripting language.
See Introducing CitectVBA.
72
Standalone system
A standalone installation of CitectSCADA runs all the server and client components of a
system on a single computer. These include:
73
I/O Server
Alarm Server
Trends Server
Reports Server
Control Client
This model is also useful in plants that contain devices with a serial port or limited communications capabilities. By placing I/O Servers on the factory floor to interface with these devices, you can optimize communications on slow or low-bandwidth networks and improve
overall performance.
Despite the geographical distribution of I/O Servers across many sites, this type of system
can be configured as a single cluster system, as a cluster is able to support many I/O Servers.
The diagram below demonstrates how to approach the deployment of this type of system
across the server machines using a single cluster.
74
A second cluster will only become necessary if your project requirements call for more than
one redundant pair of alarms, trends or reports servers.
Client-Server system
CitectSCADAs client-server architecture allows the components of a system to be distributed across a number of computers on a LAN, creating a system that offers geographical
flexibility and performance benefits.
Each component is simply identified within the project by an address, allowing the location
and hardware requirements for each to be considered independently.
The diagram below demonstrates how this example can still be configured within a single
cluster.
75
Note that each server also acts as a Control Client across the system architecture.
In the case of I/O Server redundancy, a standby server is maintained in parallel to the primary server. If a hardware error is detected, the standby server can assume control of device communication with minimal interruption to the system. You can also use redundant
I/O Servers to split the processing load.
Alarm, report and Trends Servers can also be implemented as redundant servers. This improves the likelihood that clients will continue to have access to data from a standby server
in the case a primary server becomes inoperative. CitectSCADA maintains identical data
on both servers.
76
In the diagram below, the primary and standby I/O Servers are deployed independently,
while the alarms, trends and reports servers are run as separate processes on common primary and standby computers. In this case, the entire system can be configured as a single
cluster.
Each site is represented in the project with a separate cluster, grouping its primary and
standby servers. Clients at each site are only interested in the local cluster, whereas clients
at the central control room are able to view all clusters.
The deployment of a control room scenario is fairly straightforward, as each site can be addressed independently within its own cluster. The control room itself only needs Control
Clients.
77
CitectSCADAs support for dynamic clustering means each site can be monitored and controlled from the central control room if required. For example, if an operator at a particular
site only works during regular business hours, then the monitoring can be switched to the
central control room after hours.
78
The example above would require the creation of two clusters, so that the project can include two sets of primary and standby servers. The clusters represent the redundant pairs
of servers, and would be deployed across the two sites as follows:
The clusters offer the benefit of keeping a logical structure to the project during configuration, despite the unusual distribution of redundant server pairs.
If you introduce clustering, you have the flexibility to run multiple servers of the same type
on a single computer. As long as a client has access to all the clusters configured in a project,
it doesnt matter if a set of servers is distributed across a number of clusters.
In the diagram below, two servers have been configured to act as standby units for each
other, supporting two sets of redundant Trends and Alarm Servers.
Both machines have an even balance of Trends and Alarm Servers, making effective use of
the CPU and disk space. By distributing the servers across two clusters, the servers are also
able to act as redundant units to each other. This has reduced the required number of computers from a maximum of eight down to just two.
80
Using CitectSCADA
This section contains information on using CitectSCADA and describes the following:
Planning a Project
Administering Projects
Securing Projects
Configuring Your System
Implementing Clustering
Building Redundancy Into Your System
Tagging Process Variables
Linking, Importing, and Exporting Tags
Defining and Drawing Graphics Pages
Configuring and Processing Alarms
Configuring Events
Using Accumulators
Logging and Trending Data
Understanding Statistical Process Control
Reporting Information
Using Security
Using Labels
Using Devices
Exchanging Data with Other Applications
Using Genies and Super Genies
Working with Multi-Language Projects
Using OPC Server DA2.0
Communicating with I/O Devices
Using the Communications Express Wizard
Building Your Project
82
Operational Requirements
By developing a set of operational requirements for your project, youll define a comprehensive list of needs and objectives that your system must support to effectively monitor
and control production.
The things you should consider to determine the operational requirements include:
Architecture
Security
Reliability
Monitoring
Data Collection
Architecture
Production Processes
The operating processes within your production facility need to be considered to determine how they can be logically represented and supported within your project. If the processes are dependent on each other, you also need to consider how the interaction between
them will be managed, particularly if unexpected circumstances occur.
Security
User access
You need to consider who will be using the system and which parts of a project they will
need to have access to. If security is a concern, you can restrict access on an individual basis,
or through the creation of groups of users (for example operators, supervisors, managers).
See Also
Maintaining User Records
Areas of control
Depending on how your plant is structured, you may need to define areas within your
project based on functional areas (for example goods received, dispatch, and processing) or
geographical areas. Areas of control work in tandem with CitectSCADAs user-based security to effectively manage control of the production processes.
See Also
Defining Areas
Reliability
The nature of your production processes will determine the importance of system reliability. Consider issues such as:
The need for uninterrupted operation
the impact and cost of down-time
the need to collect and protect system data
the severity of alarm conditions.
This will help determine if your project should include redundancy, the type of redundancy required, and the most appropriate way to implement it.
For more information, refer to Redundancy.
84
Monitoring
System monitoring is a key function of a SCADA system and needs to be considered in
terms of the required interaction between personnel and production processes.
You need to consider if the delivery of data is time-critical. For example, alarm conditions
should be presented in real time, trend data may be delivered with a slight delay, while
maintenance data can be accumulated and viewed as required.
The system may also need to be monitored at different levels, from machinery operators to
control room personnel managing plant-wide processes. For each level of monitoring, consider the data that needs to be presented, and the specific performance and diagnostic conditions that need to be flagged.
Data collection
Consider the kind of data you need to collect from the production process, and how it will
be used. Depending on your requirements, CitectSCADA can collect:
Production data
Purchasing requirements
Batch processing statistics
Equipment status and performance data
Maintenance scheduling information
Process performance data
Dynamic visual analysis data
An assessment of the likely amount of accumulated data should also be carefully considered, as it will significantly impact on your computer hardware and network performance
requirements.
For more information, refer to Logging and Trending Data.
See Also
Project Design
Project Design
Once you have developed a clear set of operational requirements, you need to plan how to
design your project to best meet these requirements. When designing your project, you
should consider the following issues:
Naming Standards
By adopting naming standards, you can configure project components with meaningful
names that convey useful information, such as the location or type of component. The standard that you use depends on the type of information that will be useful to system operators. A naming standard helps promote consistency throughout the project, making it
easier to quickly identify components, and reducing duplication and user training. Naming
standards may be useful for devices, variable tags, reports, graphics objects, and pages.
Page Templates
Page templates are predefined page layouts that you can use to build the display screens
(graphics pages) for your project. Templates allow you to create new pages quickly, and allow your runtime system to have a consistent look and feel. They can incorporate standard
85
navigational and support tools that are common to every page. CitectSCADA includes a
number of standard templates, and you can also design new templates to suit the requirements of your system.
See Also
Using Page Templates
Clustering
Clustering allows you to group independent sets of CitectSCADAs server components
within a single project, allowing multiple systems to be monitored and controlled simultaneously.
The most appropriate configuration will depend on the requirements for the solution to be
deployed and the environment in which it is being deployed.
Some typical clustering configurations include:
Standalone system
Distributed I/O system
Client-Server system
Redundant server system
Clustered control system
Redundant and distributed control system
Load sharing system
CitectSCADAs implementation of clustering allows for the flexible deployment of graphics pages that can access data from different clusters dynamically. A page can be allocated
a cluster context when it is called, and any elements on that page will be assigned the same
cluster, unless they have a cluster explicitly specified. See About cluster context.
See Also
Typical system scenarios
Rules of Clustering
About cluster context
Many CitectSCADA items require a cluster to be specified in order for them to work correctly. This ClusterName can either be explicitly specified when the item is called or displayed, or an item can use the default cluster context of the calling process or page. If your
system has only one cluster, then no cluster name needs to be specified. See Cluster context
rules.
86
Cluster context, therefore, is the default cluster used for tag resolution and execution of expressions and Cicode functions. In the case of tags, a cluster is explicitly supplied by prefixing the tag name with the cluster name. For built-in Cicode functions ClusterName is
usually an optional parameter.
Server processes (Alarm, Trend, Report) have their default cluster context set to their own
cluster, so that, for example, Alarm definitions that contain variable tags without clusters
explicitly supplied will attempt to resolve those tags to their own cluster. Cicode tasks
started from server code will inherit the servers cluster unless one is explicitly given.
Graphics pages have no cluster context by default. A pages cluster can be supplied statically in the page appearance properties, can be inherited from a previous context, or can be
applied dynamically using an optional parameter in the Cicode function that displayed the
page. Any Cicode tasks started from a page will inherit the cluster context of that page.
See Also
Cluster context rules
Cluster context rules
Single cluster systems always use that cluster and do not require the use of cluster prefixes.
Variable Tags referenced in an Alarms, Reports or Trends Server context are implicitly
resolved to that cluster unless explicitly stated otherwise using a cluster prefix such as
ClusterName.TagName.
Cicode called in an Alarms, Reports or Trends Server context runs with the servers
cluster context as default.
Server to Server connections (for example, SPC Alarms) are within the cluster by default.
Client pages can have a cluster context associated with them.
Client pages can be configured with a cluster context or inherit the cluster from the previous (or parent) page.
Client pages can have the configured cluster context overridden dynamically at runtime.
Client pages have no default cluster and do not inherit context in multi-cluster systems
by default.
The TaskNew Cicode function inherits the callers (either page or task) cluster context
unless explicitly overridden.
See Also
About cluster context
Included projects
If you have a large production environment, you can simplify the configuration and management of your system by designing your project as a collection of smaller "included"
projects.
Included projects can operate independently, however, they share resources and operate
interdependently during runtime. This means you can create and test projects representing
functional or physical sections of a plant, and then gradually bring them online. Ongoing
maintenance can then be managed with a minimal impact on production.
For more information, refer to Including projects.
87
Redundancy
Redundancy can be implemented at different levels of your system, depending on the reliability requirements of your project. The following types of redundancy are available:
Device Redundancy
Multiple data paths to a device can be configured within CitectSCADA. Therefore, if the
primary path becomes unavailable, data can still be monitored over the secondary path.
Server Redundancy
Primary and Standby Alarms, Reports, and Trends Servers can be configured so that if a
primary server becomes unavailable to process a clients request, the request can be channelled to a standby server for processing.
LAN Redundancy
To avoid service interruptions when the primary network isnt operating, a redundant
LAN can be implemented that will provide an alternative path to a server should it be required.
See Also
Building Redundancy Into Your System
Projects
You will first need to create a new project, and familiarize yourself with tasks like storing,
including, and archiving it.
Before running the project, the process of compiling it will alert you to any errors in the configuration.
See Also
Building Your CitectSCADA Project
Administering Projects
Compiling the Project
Configure the device in the project, either manually or using the Communications Express Wizard.
See Also
Using the Communications Express Wizard
Communicating with I/O Devices
Tagging Process Variables
Graphics Components
Graphics components are the means through which operators view and interact with the
runtime system. Graphics pages can be designed to provide operators at different system
areas or levels with relevant monitoring and control options.
To create graphics components that meet your operational requirements, you should be familiar with how to create graphics pages, use page templates, and configure graphical objects like Genies and Super Genies.
See Also
Defining and Drawing Graphics Pages
Using Genies and Super Genies
Using Objects
Defining Common Object Properties.
Understanding Object Types
Alarms
The CitectSCADA alarm system monitors your production processes and alerts operators
to unexpected events that may require attention.
There are two types of alarms that you may need to configure:
Hardware alarms - alert you to inoperative or partially operative equipment
Configured alarms - allowyou to specify relevant alarm conditions for your facility (for
example, the value of a variable tag monitoring the level, temperature, or status of a specific piece of equipment). There are seven types of configured alarms, depending on the
type of alarm condition you need to set up.
To help operators process alarms, you can create graphics pages that provide alarm information (such as the action an operator must perform to correct the situation).
See Also
Configuring and Processing Alarms
Configured alarms
Formatting an Alarm Display
Data Collection
Data collection in CitectSCADA incorporates two main aspects:
Trends - The trends system allows you to collect and monitor plant data. Depending on
your requirements, data can be collected on a periodic basis, or when a specific event
occurs. The data can then be saved to disk for analysis or displayed on a graph or report.
To use trends in your system, you will need to be familiar with how to configure trend
tags and display trend data in a graph or report.
89
Reports - Reports provide information on the status of your plant and processes. You
can configure reports with the following information so that they meet your operational
requirements:
Period/Trigger: Reports can be run on a request basis, periodically, or when a specific event occurs.
Report format: You can use a text editor to create a file that specifies how a report is
displayed.
Report output: Reports can be output to a file, device, or displayed on a graphics
page.
See Also
Logging and Trending Data
Reporting Information
System Components
CitectSCADA includes the following system components, which provide further options
for monitoring, control, and user interaction:
Commands and Controls - Configurable keyboard commands and slider controls allow
operators to interact with the runtime system.
Events - Events (such as variable tags or expressions) can be configured that trigger a
specific action, like a command.
Accumulators - Accumulators track incremental runtime data. The data is stored as
variable tags in an I/O Device, and updated regularly while the trigger is active.
Statistical Process Control - SPC allows to you to track quality by collecting and interpreting process variables associated with a product.
Labels - System wide substitutions can be configured for commonly executed commands and expressions.
Devices - High-level CitectSCADA data (including reports and logs) can be transferred
to other system elements such as printers, databases, or files.
Remote Access - A project can be accessed remotely or wirelessly in the following ways:
CitectSCADA Web Client - The CitectSCADA Web Client allows you to view a live
project within a Web browser.
Internet Display Client - An Internet Display Client can be used to run a runtimeonly version of a project over the Internet from a remote location.
See Also
Defining Commands and Controls
Configuring Events
Using Accumulators
90
Deployment
Once you have built your project, you need to configure each computer in your system. The
configuration information is stored on each computer in a citect.ini file. The information includes:
The role the computer has in the Citect network
The project being run
The CPU Configuration
The Citect Events enabled for each component
The Cicode run for each component on startup
The cluster configuration
The security settings applied
The Computer Setup Wizard displays a series of pages where you can configure these settings. The selected options are written to the citect.ini file. You should run the wizard on
each computer as the final step before running your project.
See Also
Running the Computer Setup Wizard
91
92
Creating a project
To create a new project:
Start Citect Explorer.
Click the New Project button, or from the File menu, select New Project.
Enter a Name for the project you wish to create [mandatory].
Enter a Description, and the Location where the new project files are stored.
Select a Template style and Template resolution to set the appearance of the graphics
pages.
Click OK to create the project, or Cancel.
See Also
New Project dialog
New Project dialog
This dialog box lets you create a new project. To create a new project, enter a value in the
Name field (the other field entries are optional), then click OK.
Once created, project properties can be viewed and edited using the Project Properties dialog, which contains the items described below.
Name
A unique name for the project. The project name is restricted to 64 characters. It can contain
any characters other than the semi-colon (;) or the single quote (). Since the project name is
a unique identifier, CitectSCADA does not permit you to create or restore a project with the
same name.
Description
93
A description of the project. This field is useful for giving an explanation of the role of the
project. You are urged to complete this field.
Location
The directory path where the project files are stored. As the Name field is entered, the directory is automatically generated in the Location field. You can override this by manually
entering the location or clicking Browse.
[Page defaults] Template style
The style (appearance) of the graphics pages in the runtime system. The style you select is
the default style for any new pages you add to the project. You can change the style of existing pages and templates using the Page Properties, accessed through the Graphics Builder.
Most users prefer the Standard style. You can view the pre-defined styles by looking in the
Include project under Graphics, Templates.
[Page defaults] Template resolution
The default screen resolution of the standard graphics pages (such as alarms pages and
standard trend pages):
Screen Type
VGA
640
480
SVGA
800
600
XGA
1024
768
SXGA
1280
1024
User
****
****
95
Specifies that no changes can be made to the project. If an attempt is made to modify the
project with this option selected, a message will prompt the user to disable the option before continuing.
Note: If you change any properties, you must click OK to save the changes to the project.
Project Page Properties
(Page Defaults) [Template] Resolution
The default screen resolution of the standard graphics pages (such as alarms pages and
standard trend pages):
Screen Type
VGA
640
480
SVGA
800
600
XGA
1024
768
SXGA
1280
1024
User
****
****
Note: You can override this default for your own pages at the time when you create them
or any time afterward.
(Page Defaults) [Template] Style
The style (appearance) of the graphics pages in the runtime system. The style you select is
the default style for any new pages you add to the project. You can change the style of existing pages and templates using the Page Properties, accessed through the Graphics Builder.
Most users prefer the Standard style. You can view the pre-defined styles by looking in the
Include project under Graphics | Templates.
Note: You can override this default for your own pages at the time when you create them,
or any time afterward.
(Page Defaults) [Template] Show title bar
Determines whether the Windows title bar displays (at the top of each graphics page). The
title bar contains the title of the window, maximize, minimize and close buttons (at the
right hand end of the title bar), and the control menu button (at the left hand end of the title
bar).
To display a page in full screen (without a title bar), the size of the page must be the same
size as the display (or larger). If the page is smaller than the display, the title bar still displays, even if full screen mode is enabled. Standard templates styles are available for both
page sizes.
Note: You can override this default for your own pages at the time when you create them,
or any time afterward.
(Page Defaults) Background color
The color that will display in the background of all new graphics pages.
96
Copying projects
You can copy the contents of one project into an existing or a new project.
To copy a project:
Open Citect Explorer.
Select the Copy icon, or select Copy Project To from the File menu.
In the Copy Project dialog box, select the source project from the drop-down list under
Project name.
Select an existing destination project to copy to or select a new project.
Click OK to copy the project, or click Cancel.
See Also
Copy Project dialog
Copy Project dialog
This dialog box lets you copy all the contents from one project into another. To copy a
project, specify the source [From] and destination [To] projects, then click OK.
[From] Project name
The name of the source project being copied. If more than one project exists, you can choose
a project name from the drop-down list.
[To] (Existing or New) project
You can copy to either an Existing or a New project name and location.
Existing Project: The source project is written over (replaces) an existing project location
under an existing project name.
New Project: The source project is copied to the new location under a new project name.
A new project must be given a new name not currently being used, and which complies
with the naming requirements as detailed below.
[To] Name
The name of the destination project being copied to.
When copying to an existing project, you must choose a project name from the existing
project names drop-down list.
When copying to a new project, you must create a new and unique name for the project.
The project name is restricted to 64 characters, and can contain any characters other than
the semi-colon (;) or single quote (). Since the project name is a unique identifier, CitectSCADA will not permit you to create or copy to a project with an existing same name.
After the new project is created, you can change the Name through the Project Properties.
When copying to an existing project location, you can choose to delete the existing contents
of the destination project, including subdirectories, before the source project is copied, by
checking both the Clear location before copying, and the Clear subdirectories check boxes. This
removes many files that may be left behind to interfere with the copied project. If you do
not clear the project location before copying, only common files in the destination project
are overwritten.
[To] Clear location before copying
97
Specifies to delete the contents of the existing destination project before copying the source
project to the destination location. This removes many files that may be left behind to interfere with the copied project.
[To] Clear subdirectories
Specifies to delete the contents of all the sub directories of the existing destination project
before copying the source project to the destination location. This removes many files that
may be left behind to interfere with the copied project.
Location
The directory path where the destination project files are stored. As the Name field is entered, the directory is automatically generated in the Location field. You might override this
by manually entering the location or clicking Browse.
Check that the project names and location are correct in the confirmation dialog box. Click
Yes to copy the project, or No to cancel.
You can only print the contents of the current project. Included projects will not be printed.
You can specify the print font, font size, and page size in the Options for the Project Editor
(in the Tools menu).
Deleting a project
To delete an existing project:
Open Citect Explorer.
Select a project from the list.
From the File menu, select Delete Project.
A message box asks you if you want to proceed. Click Yes to delete the project, or click
No to cancel.
You cannot delete a project that is currently open or any installed project. You also cannot
delete the Include project that is supplied with CitectSCADA.
Note: You cannot recover a deleted project that hasnt been backed up.
See Also
Linking projects
Linking projects
CitectSCADA installations on different computers over the same network can share the
same project. After a project has been created on one computer, other computers on the
same network can link to the same project, but only if the project location is on a shared or
network drive. Once linked, the remote project is visible in the local Citect Explorer, and
can be edited and compiled over the network. Only one version of a project ever exists, and
this version should be kept on the computer it was created upon.
Note: Linking to a project provides the developer with normal access and control to the
project, even though it might be on a remote machine over the network.
Note: It is possible to delete a linked project, even though it might be on a remote machine
over the network. You should unlink a project rather than delete it over the network.
Linked projects will not be included into the compile of any other project unless they have
specifically been Included into that project from within Project Editor.
For details, see Including projects.
To link to a project:
Open the Citect Explorer.
Click the Add Link button, or select Add Project Link from the File menu.
Use the Select Project Directory dialog to choose a project location.
Click OK to link the project, or click Cancel.
If the new project has the same name as an existing one, you are prompted to change it before proceeding. Edit the properties in the Project Properties dialog.
To remove a link to a project:
Open the Citect Explorer.
Select a project from the list.
Click the Remove Link button, or select Remove Project Link from the File menu.
You are prompted if you want to proceed. Click Yes to remove the link, or No to cancel.
99
See Also
Including projects
Time Synchronization
Previous versions of CitectSCADA employed a message-based time Synchronization server to verify clocks on computers running a CitectSCADA project maintained time synchronization. To support CitectSCADA running under standard user rights with User Access
Control (UAC) switched on in Windows Vista, our existing Time Server functionality needed to be replaced.
Note: This has also made the Cicode function TimeSet obsolete, and any usage of it should
be removed from your existing code.
In order to maintain time synchronization CitectSCADAv7.10 now installs a Windows service called TimeSyncService, which runs under the built-in LocalSystem account. The purpose of this service is to maintain the time on the local computer against one or more time
sources. A time source is a computer on which the time service is running.
A Time synchronization utility is provided by CitectSCADA to assist you to configure time
synchronization, and control the service as part of your administration environment. The
dialog stores and reads settings in the TimeSyncConfig.xml file, which is installed in the CitectSCADA Config directory by default. See New Locations for Configuration and Project
Files for information about configuration file locations. Using the configuration utility, you
can specify an alternative path to the config file, such as a network share. This can be useful
where you have multiple computers using the same configuration data and to change any
setting you only need to change it on one machine.
To display the Time Synchronization dialog, open Citect Explorer and from the Tools menu
select the Time Synchronization menu item.
See Also
Time Synchronization Dialog
100
Field
Description
Current status
Field
Description
Startup type
TCP/IP Port
Last synchronization
Displays the value of the LastSyncTime registry setting. This is the Local
time at which the last successful Synchronization occurred.
Synchronize every
Sync now
Add button
Remove
Note: When you add a time source to the list, the current time on that machine will be displayed, provided the service is running on that remote machine and listening on the same
port number. If "Not available" then the service is not running, or is running and using a
different port number, or that port number is being blocked by a firewall. The column in
the list box is provided as a diagnostics function to ensure that the machine names entered
can be synchronized against. The time displayed in this box is an approximate only.
See Also
Time Synchronization
101
Archiving projects
Once you have configured your system, you should back up (or archive) the project. This
will avoid the loss of any configuration data in the event your primary storage becomes inoperative or inaccessible.
Note: When you are developing a project, you should adopt a regular backup strategy. Before performing a backup, verify that you have refreshed any linked tags in your project.
CitectSCADA lets you back up a project to a local drive (hard drive), network location, or
removable media (floppy drive, memory stick).
This section of the help includes information on the following archiving tasks:
Backing up a project
Backing up INI files
Configuring a backup with password encryption
Running a backup from the command line
Restoring a project
Backing up a project
The CitectSCADA Backup program archives files using a standard compression routine,
producing PKZip v2.04g compatible files. The default extension for CitectSCADA backup
files is .CTZ, though any extension (including .ZIP) can be used. This means you can also
use the PKZip utility to extract files from a compressed CitectSCADA backup.
Note: Files produced with this backup program cannot be restored by CitectSCADA versions earlier than 5.10.
To back up a project:
Open Citect Explorer.
Click the Backup button,
or select Tools | Backup. The Backup Project dialog box
displays:
In the Name field, select the name of the project to back up.
In the Backup file field, enter the path to the backup file location, including the file
name. You can either type the path in directly or use the Browse button.
The backup file name defaults to <project>.CTZ. If the extension is omitted then .CTZ is
used.
When you back up a project to a floppy disk, the backup program will ask you if you
wish to delete the files on the floppy disk before starting the backup.
If the destination drive is configured as A: or B: and is detected as removable, you will
have the option to delete any existing files on the disk.
Under Options, select the required options from the following list:
Use compression: You can use data compression when you are backing up a project
to save space.
Save compiled: By default, CitectSCADA backs up the project in uncompiled mode.
If you select this option, CitectSCADA backs up both the compiled and uncompiled
projects, resulting in a larger backup file.
Save sub-directories: If you select this option, CitectSCADA also backs up all data
in any sub-directories within the project directory. The directory structure is maintained in the backup, and you can choose to restore the sub-directories when restoring the project. For example, if you wish to back up your Process Analyst Views, save
102
them in a sub-directory of the project and select this option. When you restore the
project, you will have the option to also restore the Process Analyst Views directory.
Use encryption: As an added security measure, you can back up your project in an
encrypted format. If you select this option, CitectSCADA requests a password. CitectSCADA writes the project to disk in a format that encodes the password along
with the protected project. The project can only be restored if the password is entered.
Save configuration files: Select this option to back up all *.ini files from the Config
folder. This will also backup the TimeSyncConfig.xml file used to store the time synchronization settings configured in the Time Synchronization utility.
Click OK.
See Also
Backing up INI files
103
Description
-d<name>
database name
-m<ext>
include extension
-x<ext>
exclude extension
-e
-p<password>
encrypt/decrypt password
-s[+/-]
recurse subdirectories
-f<level>
-u[+/-]
-g[+/-]
-c[+/-]
compress files
-b<path>
-r<path>
path to restore to
-i<filename>
-f1
-a
Examples
To back up (in version 3) c:\data use the following command:
CTBACKUP -g- -bc:\data
CTBACK32 -g -rc:\data
104
Restoring a project
You can restore backed up and archived projects using the Restore Project program. This
program allows you to overwrite any current project with a backed up version, or restore
a backed up project as a new project.
Note: Be careful when restoring files as all files in the destination and sub-directories will
be deleted before restoring. If you accidentally set your restore path to the root directory of
the drive, the program will delete your entire disk drive.
To restore a project:
Open Citect Explorer.
Click the Restore button
or select Tools | Restore. The Restore Project dialog box will display.
In the Backup file field, enter the name of the project to restore.
Under To, select Current project, to overwrite a project with the backed up one, or
New project to restore a backed up project as a new one.
105
Including projects
With large systems, it might be more convenient to develop the application using a series
of smaller projects, instead of one large project. For example, you could use a separate
project for each section of the plant, or for each main process. This way, you can develop
and test each of the smaller projects before including them in the main project.
CitectSCADA projects will not be included into the compile of any other project unless they
have specifically been included into that project from within the Citect Project Editor.
Note: If a project exists remotely on the same network as the local installation and it is on
a shared or network drive, it can be linked to the local Citect Explorer. This is different to
including a project. Linking makes a project visible in the local Citect Explorer. Once
linked, it can be selected as the current project for editing over the network.
Any linked project (visible in Citect Explorer) can be included within a local project, and is
subsequently included in the compile of the local Project.
Be careful not to confuse include files with included projects:
Include Files contain CitectSCADA commands and/or expressions and are used as substitutions in a CitectSCADA command or expression property field.
Included Projects are separate and (usually smaller) projects that can be included in another CitectSCADA project so that they appear together as one project.
Each CitectSCADA system is supplied with a number of include projects. These projects
contains pre-defined database records.
See Also
Included Projects dialog
CitectSCADAs included projects
Included Projects dialog
This dialog box lets you include another project in the current project. With large systems,
you should develop the application using a series of smaller projects instead of one large
project.
You can include up to 240 projects. (You have to set [CtEdit]DBFiles to 310 in order to enable this limit.) All records in each project are globally accessible (i.e., a record defined in
one project can be used in another).
Note: Each system automatically has an include project, which contains predefined database records and graphics libraries.
Project Name
The name of the project to include in this project (64 characters maximum).
Comment
Any useful comment (48 characters maximum).
Included projects
Each CitectSCADA installation is supplied with three predefined include projects, designed to help you develop your project faster. They are:
the Include project - a template project with trending and alarm pages.
the CSV_Include project - a Windows XP-styled set of templates with common toolbars
and advanced visualization tools.
the CSV_Instant Trend project - created to support the CSV_Include projects instant
trending feature.
These projects contain pre-defined database records and graphics libraries that can be used
as the foundation for the content within your own project.
Note: Do not modify the include project for use as a runtime project. It will not compile successfully, and should be set aside for use as a template for new projects. CitectSCADA upgrades install a new version of the CSV_Include project, so you will lose changes you make
to the project when this happens.
The include projects are hidden from the project tree in Citect Explorer by default.
To show/hide a CitectSCADA Include project:
Open the Citect Explorer.
Select Show Include Project from the View menu.
See Also
Introducing CSV_Include
Automatically displays the Compile Errors form if an error is detected when the project is
compiled.
Compile enquiry message
Enables the "Do you want to compile?" message window to appear when the project has
been modified and Run is selected from the File menu. Normally, CitectSCADA compiles
the project automatically (if the project has been modified) when Run is selected.
Compile successful message
Enables the "Compilation Successful" message window to appear when the project has
been compiled.
Prompt on tag not exist
Enables the "Variable tag not found. Do you wish to create this tag?" message window to
appear when a variable tag is specified that does not exist in the database. With the message
window enabled, you can create new variable tags as they are required.
Prepare for Web deployment
Automatically runs the Web Deployment Preparation tool every time you compile a
project. Please be aware that this dramatically increases the amount of time taken for each
compile, particularly for large projects.
Log deprecated warnings during compile
If you select this option, the compiler will generate an alert message to identify any deprecated elements it detects in a project, that is any functions, parameters, or Kernel commands that are no longer supported.
By unchecking this option, the alert messages are still included in the displayed alert count,
but they are not added to the error log.
Info popup time
The delay (in seconds) from the beginning of a database search until a search information
window displays. The search information window displays the number of the traced
records and allows you to cancel the search. You can cancel the search by selecting the Cancel button in the information window.
Cicode Editor
The text editor that is used for editing Cicode function libraries and report format files. You
must enter the name of the executable file in this field. The default editor is the Cicode Editor (ctcicode.exe) supplied with CitectSCADA.
Report Editor
The editor that is used for editing Report Format Files. You must enter the name of the executable file in this field. The default editor is Write (write.exe). If you are using Rich Text
Format (RTF) reports, verify that your editor is RTF capable.
Print page size
The number of lines (1 to 66) printed on each page when printing database records.
Print font point
The font size used when printing database records.
109
110
In the Find box, type the text string you want to search for. The search is not case-sensitive, so it doesnt matter whether you enter lower- or uppercase letters.
You can enter an entire string or a portion of the string you want to find. For example,
typing BIT will return any string containing BIT, such as BIT_1, BITE, HABIT, HABITS,
and so on. You cannot enter wildcard characters, but you can include special characters,
as well as spaces if you want.
Specify your search coverage using the Look in and Search options lists.
Click Find. Search results appear in the results list when the search completes. The status text under the results list indicates the progress of the search.
Note: When you start a search, the Find button changes to a Stop button you can use to
exit the search. If you stop a search, a partial list of the results is displayed.
To replace text:
On the Edit menu in the Project Editor or Graphics Builder, click Replace.
In the Find box, type the text you want to search for.
In the Replace with box, enter the replacement text.
Specify your search coverage.
Click Find.
View the search results.
Make your replacements using Replace or Replace All.
112
Description
The name of the project in which the found text occurs.
Depends on the type of document in which the item occurs. If
the document type is a:
Database - User-friendly name of the database.
Page - Name of the page.
Cicode/VBA - Name and path of the Cicode/VBA file.
Report - Name of the report.
Field
Location
Context
If the number of results returned exceeds 200 items, use the First, Previous, Next, and Last
buttons to navigate your results in groups of 200 results.
You can toggle between the Find and Replace functionality without losing the search results, but if you close the Results page, your search results are lost.
Note: You can resize list columns by moving your mouse cursor onto the separator between the list columns. When the mouse cursor changes shape to a black bar with arrows,
drag the column to the new size. You can also double-click the vertical bar between fields
to resize that field to fit the widest item.
Removing results
You can remove a search result from the Results window. Results that are removed are not
included in exports or in replacement operations. Removing a result does not delete it, but
merely removes it from the Results window.
To remove a result:
With the result you want to remove highlighted, click Remove. The result is removed
from the Results window.
113
Exporting results
You can export search results in a tab-delimited format to a specified location. Results are
exported in the format
<Project> <Item> <Field> <Location> <Context>
If the Results window contains more than 200 results, all results are exported, not just the
ones currently displayed. If you remove an item from the results list, it will not be exported.
(For details on removing results, see Removing results.)
If you export an item that has a context, the context string is stripped of tabs and new line
characters.
Results exported are in Unicode format. Because of this, two leading characters and two
trailing characters are added to the file, but in most cases will remain hidden. When exporting results, use Excel 2000 and later, which support the Unicode format.
To export results:
With the search results you want to export listed in the Results window, click Export.
Specify the location in the dialog box and then click Save. If the file already exists, youre
given the option to overwrite the file. Status text under the results list indicates the
progress of the export.
Note: If you want to stop the export, click Stop. You cannot perform a partial export, so
clicking Stop cancels the export entirely.
Replacing results
You can replace single results or multiple results with the replacement text string you specified. You can also test a single result before replacing it. Depending on the type of document that contains the search result, the following occurs when a replacement is made:
114
Database: The result is replaced with the replacement text and the database record updated. The form containing the search result is not opened; to see the location of the
search result before or after the replacement is made, use the Go To command.
Cicode/VBA: The Cicode file containing the matched text loads (if it is not loaded already), the replacement is made, and the file saved.
Graphic: The page opens in the Graphics Builder (if it is not already) and the replacement made. If the page is open and contains unsaved changes, youre instructed to save
or discard the changes before making the replacement. If there are multiple changes to
be made to the same graphics page, the page remains open until all the changes have
been made.
Report: The found text is replaced with the replacement text and the file is saved.
Note: Replacements cannot be undone once performed. You should take care to check your
replacements before making them, especially when working with multiple replacements.
To test a result:
With the result you want to test highlighted, click Test. A dialog box appears showing
the result of the text replace.
Click Accept to accept the text replacement, or click Cancel.
To replace a single result:
With the result you want to replace highlighted, click Replace. The replacement is made
and the result removed from the Results window. The next result in the list is then selected.
To replace multiple results:
With the search results you want to replace listed in the Results window, click Replace
All. A confirmation dialog appears.
The replacements are made and removed from the Results window. (Replacements that
are not made remain in the results list. This will occur if, for example, you try to replace
a property that is read-only.)
Note: Clicking Stop during this process does not undo any replacements already made.
When attempting to make a replacement, you might encounter an alert message that alerts
you of project-related issues you should be aware of before making a replacement. For details, see Find and Replace alert messages.
Troubleshooting Searches
If you dont find a result that you expected to find, check the following points, and then
perform your search again:
Did you spell the text string correctly?
Did you include the correct number of spaces?
Are you using the appropriate Look in option?
Are you using the appropriate Search options?
Are you searching in the correct project?
Are you using the correct graphics search?
If you are using the graphics page search, do you have the correct graphics page open?
117
118
Overview
CitectSCADA has two types of project:
Read-write: allows write and delete privileges to the project folder (or for any project
file) for the current user.
Read-only: projects that deny write and delete privileges to the project folder for the
current user.
The table below shows the different characteristics of read-only and read-write projects:
Task
View existing files in project
Read-only
x
Read-write
x
Delete project
Read-only projects cannot be compiled as top-level projects (i.e., projects that are the main
(root) project as opposed to an included project) and online changes are not supported.
119
Note: If the project folder is read-only for the current user, but one or more files in the
project have read-write access for the current user, the project is considered to be a hybrid
read-only/read-write project. CitectSCADA does not support this type of project. Running
a hybrid project may result in your system becoming unresponsive. (This note does not include those folders or files that require read-write access in order to operate at runtime; see
Using CitectSCADA with Windows Security for details.)
The security model used in enabling read-only projects does not replace the existing CitectSCADA user accounts; instead, it works in conjunction with user accounts like this:
CitectSCADA user accounts govern runtime security to project elements.
Windows user accounts govern the security of configuration project elements.
120
The administrator creates two user groups to make administering users easier: ProjectXYZEngineers and ProjectXYZOperators, and assigns engineers to the first group, operators to the second.
Note: Creating user groups is optional and makes it easier to handle privileges for multiple
users. Creating user groups may be unnecessary if you only have a few users.
The administrator then assigns engineers read-write privileges to the top-level project folder, and operators read-only privileges, like this.
Select the project folder of the top-level project and display its properties.
Select the ProjectXYZEngineers user group and allow read-write privileges. (Remember that in order to use read-write projects, read, write, and delete privileges must be assigned.)
Select the ProjectXYZOperators user group and deny write privileges. See the section
Making a Project Read-Only for the specific privileges you should assign.
Apply and save the changes.
Review the changes to verify that engineers and operators have the correct privileges
for their roles.
See Also
Securing an Include Project
Note: Because there is only one OEM engineer, the administrator did not create a user
group for this single user.
Selects the project folder of the top-level project and displays its properties.
Selects the AcmeTopEngineers user group and allows read-write privileges for this
folder. (Remember that in order to use read-write projects, read, write, and delete privileges must be assigned.)
Applies and saves the changes.
Selects the include project.
Selects the user name of the OEM engineer and allows read-write privileges for this
folder.
Applies and saves the changes.
Reviews the changes made to verify the correct privileges have been assigned. In particular, the administrator should ensure that the privileges assigned to the AcmeTopEngineers user group deny read-write access to the include project.
See Also
Securing a Top-level Project
Right-click the folder and choose Properties from the context menu. The Properties dialog appears.
Select the Security tab.
Select the user and/or user group you want to modify security settings for.
Click Advanced. The Advanced Security Settings dialog appears for the selected user/
user group for the project folder.
Verify that the user or user group you want to modify permissions settings for is selected.
122
Startup
General
Graphics and pages
Backup and restore
Project upgrades
Debugging
Web deployment
Runtime issues
Most of the issues discussed above are common to both top-level projects and include
projects. The sections listed below discuss issues specific to these types of projects:
Read-only on top-level projects
Read-only on include projects
Startup
A project is determined to be read-only when Citect Explorer starts up. If the security permissions on the project folder are modified after Citect Explorer has started, the CitectSCADA configuration applications may not be able to determine accurately that the project is
read-only.
See Also
Using CitectSCADA with Windows Security
123
General
When a read-only project is opened using the Graphics Builder, Project Editor, or Citect Explorer. the title bar shows the name of the project and a Read-Only message to indicate the
project is read-only.
Opening the Express Wizard for a read-only project displays a message on the first page
indicating the project is read-only:
In addition, any menu commands, toolbar buttons, and other operations that perform a
write function are grayed out and/or unavailable. For example, the Copy command is
available in the Project Editor for a read-only project, but the Cut and Paste commands are
not.
When using the Process Analyst, you cannot create views to a project folder that is readonly and an alert message is displayed.
Graphics and pages
You cannot update graphics documents or pages in read-only projects. (You can, however,
update pages in a read-write project if that top-level project includes one or more read-only
projects.)
Opening an updated graphics page in a read-only project in Graphics Builder will attempt
to show the upgraded symbol, but only at the presentation (not disk) level.
Note: Updating graphics documents and/or pages in mid-level include projects is not recommended because it will not update pages in the top-level project. However, issuing an
update pages at the top level iterates through all included projects recursively. (If these
need to be updated, make all the relevant projects read-write first).
Backup and restore
Read-only projects can be backed up by any user, regardless of their privileges. However,
the backup functionality does not archive the current security permissions. Consequently,
if the project is restored on another machine, the security settings need to be reapplied.
Projects cannot be restored into an existing read-only project; attempting to do so will display an alert message advising that the project is read-only and cannot be restored.
Project upgrades
A project upgrade occurs when any of the following occurs:
[CtEdit]Upgrade=1 is added to the citect.ini file.
A project link is added via Citect Explorer.
When a project is restored.
When CitectSCADA detects that the include, system, or CSV_Include project is read-only
and the version of CitectSCADA that the project was created under does not match the current version of CitectSCADA, a message box is displayed to advise you of this.
In addition, when CitectSCADA detects that a user project is read-only and the version of
CitectSCADA that the project was created under does not match the current version of CitectSCADA, a message box is displayed to advise you of this.
Any links to the project will be removed and the project tree in Citect Explorer will be updated to indicate this.
124
If you plan to upgrade a top-level project, you must log on as a user with the appropriate
read-write security privileges for this project, add a link to the project in Citect Explorer,
and then perform the project upgrade again.
Debugging
In read-only projects you can set breakpoints when debugging code, but these breakpoints
arent saved when you exit the Cicode Editor.
Web deployment
You cannot perform Web deployment with read-only projects.
Runtime issues
By default most output operations during runtime occur in the [DATA] or [RUN] location (see
below for details). By default CitectSCADA configures the [RUN] location to the project directory. If you intend on making the project directory read-only, you must modify the
path(s) to a suitable read-write location.
almsav.dat - Alarm data by default is saved in the [RUN] location, which is usually the
project folder. You must change this location if you intend on making the project folder
read-only. Alternatively use the [Alarm]SavePrimary and [Alarm]SaveSecondary options
in the citect.ini file to control the location of the output.
Disk PLCs - If a user does not have the correct privileges for the [RUN] path, all communications will be offline for disk PLCs. You must change this location if intending to
make the project folder read-only.
User Cicode functions - Making a project read-only prevents the use of the following
user functions: UserCreate, UserDelete, UserEditForm, UsetrSetPassword, UserSetPasswordForm. Attempting to use these functions results in an error code 262 (0x0106) ("Cannot open file").
Alarm Cicode functions - Making a project read-only prevents the use of the following
alarm functions: AlarmSetDelay, AlarmSetDelayRec, AlarmSetThreshold, AlarmSetThresholdRec. Attempting to use these functions results in a hardware alarm 400 (0x0190)
("Project or file is read-only"). You also cannot modify alarm properties such as threshold or delay.
Any files in your top-level project that require runtime read-write access should be located
outside of the project folder.
Read-only on top-level projects
Before applying read-only to top-level projects, note the following:
Before applying read-only to a top-level project, perform a full compile and then apply
the relevant security attributes. Once you apply read-only privilege, you cannot compile a top-level project (see following bullet). For projects that must manipulate files in
the top-level project, you can modify the security of individual files to read-write; the
project will be regarded as read-only as long as the project folder is denied write privileges.
Note: Any files in your top-level project that require runtime read-write access should
be located outside of the project folder.
Projects that are read-write that have read-only include projects as a component can be
compiled as usual.
You can only run a read-only project if it is a top-level project.
125
Applying read-only to top-level projects prevents online changes being made to alarms,
users, trends, and pages.
See Also
Making a Project Read-Only
Securing a Top-level Project
Read-only on include projects
Note the following before applying read-only to include projects:
When compiling a top-level project with a read-only include project, the object IDs of
the included projects are skipped and not changed.
Updating graphics documents and/or pages in mid-level include projects is not recommended because it will not update pages in the top-level project. However, issuing an
update pages at the top level iterates through all included projects recursively. (If these
need to be updated, make all the relevant projects read-write first).
See Also
Making a Project Read-Only
Securing an Include Project
Write only access is available after a user has successfully logged in. Once the user logs out
it returns to view-only mode.
Users can configure anonymous login by modifying the [Client]AutoLoginMode parameter.
126
See Also
Securing Runtime Computers
127
128
See Also
Adding user records
J Smith
User Name
John Smith
Each operator must enter the User Name and Password to use the system.
Full Name
The full name of the user or class of user. Enter a value of 32 characters or less. This name
is used as a comment and for display in alarm logs and command logs.
Password
The users password. Enter a value of 36 characters or less. When you enter the password,
an asterisk (*) will display for each character entered. When you save the user record, the
password will be encrypted before it is saved to the Users.dbf.
Each operator must enter the User Name and Password to use the system.
Use the [General]PasswordExpiry parameter to specify when the password will expire.
Confirm Password
Re-enter the users password to confirm the text entered in the Password field. Enter a value of 36 characters or less. If the contents of the Password and Confirm Password fields are
different when the record is saved, a message will be displayed that indicates a mismatch
and invites you to try again.
Global Privilege
The privilege classes assigned globally to the user. Enter a value of 16 characters or less.
As you configure your system, you can assign privileges to the various elements, such as
graphics objects, alarms, accumulators, commands, and so on. For example, a user with a
Global Privilege of 3 will be able to issue any command that is assigned a privilege of 3, or
action any alarm with a privilege of 3, or click any button that is assigned a privilege of 3,
etc. Unless you are using areas, if you do not specify a global privilege, the user cannot access any command with a privilege assigned.
You can make your security more flexible by dividing your system into areas, and assigning users privileges or view-only rights to specific areas, see Additional fields on this dialog
using extended forms (press F2).
130
Note: Global privileges will override the Viewable Areas settings you have applied for a
user.
Type
The generic type of user. Enter a value of 16 characters or less. For example:
Type
Operator
Type
Supervisor
Type
Manager
Only use this property to define a user class from which individual users (of that class) are
to be created at runtime with the UserCreate() function.
Comment
Any useful comment. Enter a value of 48 characters or less.
Notes:
1. Additional fields are implemented with extended forms (press F2).
2. To login a user, you must use the Login() or LoginForm() Cicode functions.
Additional Fields
Viewable Areas
The areas the user is permitted to view. Enter a value of 16 characters or less. Remember,
however, you must still assign privileges to the elements in these areas, such as graphics
objects, alarms, accumulators, commands, etc. If you do not, the user will have full access
to them. For example, if you do not assign a privilege to, say, a command in one of these
areas, the user will be able to issue it.
To make an element (such as a button on a expression) view only for a particular user, assign it an expression and a privilege. Add the area to the users list of Viewable Areas, but
dont give the user the required privileges in that area (or the required global privilege).
Multiple areas can be defined using groups.
If you do not specify viewable areas, the user has access to the default area only (area 0).
Areas for Priv 1 . . . Priv 8
The privileges (by area) assigned to the user. Enter a value of 16 characters or less. Using
this combination of areas and privileges, you can assign a user different privileges for different areas. For example, users with privilege class 6 in areas 29 and 30 only have access
to commands in those areas that require privilege class 6. This does not affect the Global
Privileges (see above) assigned to the user. A user who has global privilege classes 1 and 2
can still access commands in all viewable areas that have privilege classes 1 and 2.
If you do not specify areas with associated privileges, access is defined by Viewable Areas
and Global Privileges alone.
Note: The privileges entered in these fields will only apply if the relevant areas are listed
in the Viewable Areas field above.
Entry Command
A Cicode command that is executed when the user logs in. You can use any Cicode command or function. Enter a value of 254 characters or less.
131
Exit Command
A Cicode command that is executed when the user logs out. You can use any Cicode command or function. Enter a value of 254 characters or less.
Command
Acknowledge alarms
Print reports
To allow a user to operate the conveyors, you assign privilege 1 to the users login record,
for example:
Global Privilege
To allow a user to acknowledge alarms, you assign privilege 4 to the users login record, for
example:
Global Privilege
To allow a user to acknowledge alarms and operate the conveyors, you assign both privilege 1 and privilege 4 to the users login record:
Global Privilege
1, 4
1, 2, 3, 4, 5
After you have allocated privileges, you can define the privilege requirements of your system elements (commands, reports, objects, alarms, etc.):
Command
CONVEYOR = 1;
Privilege
Comment
Command
Privilege
Comment
Not all system elements need a privilege classification. At least one command must be issued by all users, a command to log in to the system:
Command
132
LoginForm();
Privilege
Comment
See Also
Using hierarchical privilege
Using the privilege facility, you can easily develop a secure CitectSCADA system. You
should, however, carefully plan your security method before you set up your system. You
need to decide which commands you can group into a class, the privilege for each class of
commands, and the privileges to assign to each operator.
Note: If your plant can be divided into several discrete sections (or areas), you can add an
extra level of system security by using the CitectSCADA area facility.
Defining Areas
When implementing CitectSCADA for a large application, you would usually visualize the
plant as a series of discrete sections or areas. You can define these areas geographically (especially where parts of the plant are separated by vast distances or physical barriers) or logically (as discrete processes or individual tasks).
Note: The area facility is implemented with extended properties.
By thinking about your plant in terms of areas, you can add flexibility to your system security. Without areas, you can only assign global privileges to users. A user with a global
privilege can access any part of the system with a matching privilege. Areas, on the other
hand, allow you to add an extra level of control. Instead of assigning a global privilege, you
can assign a user different privileges for different areas. You can then assign each of your
system elements (objects, alarms, reports, accumulators, etc.) a privilege requirement, and
allocate each to a specific area. This means that a user has full control only when he or she
has access to the required area and possesses the required privileges for that area.
Some plants can be divided into just three areas - raw product arrives in the receivals area,
is transported to an area for processing, and is then transported to a packaging or despatch
area.
133
However, with larger or more complex plants you might need to define several areas, like
this:
When defining an area, you would usually encompass a section of the plant that is controlled by one operator (or controlled from one CitectSCADAControl Client).
You can also define smaller areas that are collectively controlled by an operator or Control
Client. This method can increase flexibility, but can introduce a higher level of complexity
to your system.
You can define up to 255 separate areas. You can then refer to these areas by number (1 to
255) or you can use a label to assign a meaningful name for the area (for example receivals,
pre_process, conveying, etc.).
See Also
Using areas for security
Using labels to name areas
Using groups of areas
Using areas with privileges
Specifying security requirements
Viewing areas of the plant
134
CONVEYOR = 1;
Area
10
Comment
In this example, an operator without access to Area 10 will not be able to issue the command.
See Also
Using labels to name areas
DespatchAccum
Expression
10
Comment
In this case, "DespatchAccum" could be used whenever area 10 is referred to, for example:
Command
CONVEYOR = 1;
Area
DespatchAccum
Comment
Note: If you leave the Area field blank on a form, the command does not belong to any particular area - it is assigned to all areas of the plant.
To label an area:
Choose System | Labels.
Enter a Name for the label.
Enter an expression to be substituted for the label.
Click Add to append a new record, or Replace to modify an existing record.
See Also
Using groups of areas
Despatch
Association 1
DespatchAccum
Association 2
11
Association 3
12
Comment
135
In the above example, areas 10, 11, and 12 are associated with the name "Despatch". Any
command assigned to "Despatch" belongs to areas 10, 11, and 12.
Command
CONVEYOR = 1;
Area
Despatch
Comment
Plantwide
Association 1
Receivals
Association 2
Process
Association 3
Despatch
Comment
In this example, the name "Plantwide" refers to all areas defined in the "Receivals", "Process", and "Despatch" groups.
To define a group of areas:
Choose System | Groups. The Groups dialog box appears.
Complete the Groups dialog box.
Click Add to append a new record, or Replace to modify an existing record.
See Also
Groups properties
Groups properties
Use the Groups dialog box to configure properties of groups:
Groups have the following properties:
Group Name
The name of the group. You can use this facility, for example, to define multiple areas or
multiple devices. Enter a value of 16 characters or less.
After you have defined a group, it can be used anywhere that an individual entity can be
used. You can also specify complex groups by defining a group of groups.
Association 1 . . . Association 10
A list of the entities associated with the Group Name. Enter a value of 16 characters or less.
An Association can be a number, a name, or another group. You can also specify a range of
numbers in the format <n1..n2> for example:
Association 1
4..10
AlarmPrint
Association 2
AlarmLog
Association 3
AlarmDBF
In this case, when the group name is used as a device, the information is sent to all three
devices - AlarmPrint, AlarmLog, and AlarmDBF.
136
Comment
Any useful comment. Enter a value of 48 characters or less.
J Smith
Global Privilege
2, 3
Viewable Areas
9, 10, 11, 12
Despatch
DespatchAccum
DespatchAccum, 11
Here, John Smith has global privileges 2 and 3; he can use commands with privilege classification 2 or 3 in any viewable area of the plant. He has privilege 1 in the "Despatch" areas
(10, 11, and 12), privilege 4 in the "DespatchAccum" area (10) and privilege 5 in areas 10 and
11. This means he can control system elements (alarms, reports, accumulators, objects, etc.):
Located in area 9, with privilege requirement 2 or 3.
Located in area 10, with privilege requirement 1, 2, 3, 4 or 5.
Located in area 11, with privilege requirement 1, 2, 3 or 5.
Located in area 12, with privilege requirement 1, 2 or 3.
Also, in this example, Groups and Labels have been used to make the security configuration intuitive.
See Also
Specifying security requirements
137
For example:
Command
CONVEYOR = 1;
Privilege
Area
10
Comment
In this example, an operator without privilege 1 in Area 10 will not be able to issue the command.
Privilege - area combinations
It is important to know how the various privilege - area combinations will affect your security.
Privilege specified?
Area specified?
Resulting Security
Yes
Yes
Operator must have the required privileges for the area specified.
Yes
No
No
Yes
No
No
See Also
Viewing areas of the plant
J Smith
Global Privilege
2, 3
Viewable Areas
Plantwide
Despatch
138
DespatchAccum
Alternatively, you could restrict an operator to a group of areas (for example, "Receivals")
or to a single area (for example, 12).
139
See Also
Adding Roles
Using Security
Adding Roles
You must add a role for those users you want to be able to use your system as members of
a Windows security group. Though not essential is is good practice to add the group in
Windows Security, or identify an existing group, before you add the roles for that group in
CitectSCADA. Otherwise you may add a Role to a Group that should not posses the privileges in that Role.
To add a Role record:
Choose System | Roles to display the Roles dialog box.
Complete the Roles dialog box.
Click Add to append a new record, or Replace to modify an existing record.
Use the Roles dialog box to define properties for your roles.
140
Role Name
Enter a value of 16 characters or less, for example "Operator". Role Names are restricted to
using the same syntax as Tag names. See Tag name syntax.
Windows Group Name
Enter the name of the group that you intend link to the Windows security group. Verify
that this name is same as the group name in Windows which you want the role link to. It
can contain up to 254 uppercase or lowercase characters. Verify that only use the characters
that are allowed for Windows group account name in Windows.
The Windows group name can include a domain name or a local computer name in the format of "domainname\operator", or "localcomputername\operator". If either are specified
in the group name CitectSCADA runtime will only validate for the groups on the server
specified in the name or the local computer..
Comment
Any useful comment. Enter a value of 48 characters or less.
Global Privilege
The privilege classes assigned globally to the role. Enter a value of 16 characters or less.
As you configure your system, you can assign privileges to the various elements, such as
graphics objects, alarms, accumulators, commands, and so on. For example, a role with a
Global Privilege of 3 will be able to issue any command that is assigned a privilege of 3, or
action any alarm with a privilege of 3, or click any button that is assigned a privilege of 3,
etc. Unless you are using areas, if you do not specify a global privilege, the role cannot access any command with a privilege assigned.
Note: Global privileges will override the Viewable Areas settings you have applied for a
role.
You can make your security more flexible by dividing your system into areas, and assigning roles privileges or view-only rights to specific areas.
When you have completed the fields in this dialog, if you have not already done so before
adding the role, you need to add users to the group in Windows security that you want to
have the privileges of this role.
See Also
Adding groups and users in Windows security.
Additional fields on this dialog using extended forms (press F2).
Additional Fields
Viewable Areas
The areas the user is permitted to view. Enter a value of 16 characters or less. Remember,
however, you must still assign privileges to the elements in these areas, such as graphics
objects, alarms, accumulators, commands, etc. If you do not, the user will have full access
to them. For example, if you do not assign a privilege to, say, a command in one of these
areas, the user will be able to issue it.
141
To make an element (such as a button on a expression) view only for a particular user, assign it an expression and a privilege. Add the area to the users list of Viewable Areas, but
dont give the user the required privileges in that area (or the required global privilege).
Multiple areas can be defined using groups.
If you do not specify viewable areas, the user has access to the default area only (area 0).
Areas for Priv 1 . . . Priv 8
The privileges (by area) assigned to the user. Enter a value of 16 characters or less. Using
this combination of areas and privileges, you can assign a user different privileges for different areas. For example, users with privilege class 6 in areas 29 and 30 only have access
to commands in those areas that require privilege class 6. This does not affect the Global
Privileges (see above) assigned to the user. A user who has global privilege classes 1 and 2
can still access commands in all viewable areas that have privilege classes 1 and 2.
If you do not specify areas with associated privileges, access is defined by Viewable Areas
and Global Privileges alone.
Note: The privileges entered in these fields will only apply if the relevant areas are listed
in the Viewable Areas field above.
Entry Command
A Cicode command that is executed when the user logs in. You can use any Cicode command or function. Enter a value of 254 characters or less.
Exit Command
A Cicode command that is executed when the user logs out. You can use any Cicode command or function. Enter a value of 254 characters or less.
The CitectSCADA server only verifies the account exists it does not perform the authentication.
Remote Client Authentication
When a CitectSCADA Windows login is performed on a remote client that is part of a domain, or a trusted domain, the client itself is responsible for authenticating with the domain. The CitectSCADA server only verifies the account exists it does not perform the
authentication. Essentially this mechanism is the same as a local client authentication.
Web Client Authentication
When a CitectSCADA Windows login is performed on a web client that is not a member of
the configured domain, the server is responsible for authenticating the user on the domain.
No local Windows authentication occurs on the web client machine. No auto-login can occur in this situation.
Multiple Domain Authentication
When a CitectSCADA Windows login is performed on a Control Client or View-only Client
that is part of a domain, the client itself is responsible for authenticating with the domain.
When that client has access to CitectSCADA servers on more than one domain, it is possible
that the client will only be authenticated on one of the domains.
CtAPI Authentication
In this release CtAPI does not support operations with Windows security.
143
144
Project Configuration
Select the project to run on this CitectSCADA computer. The Computer Setup Wizard will
show you all the compiled projects defined in the project list, apart from the include
projects.
If there is only one compiled project present, it will be automatically selected. If there are
no compiled projects present, an alert message is displayed and the wizard will terminate.
If this occurs, return to Citect Explorer and confirm that the required project is saved locally
and has compiled without errors.
See Also
Computer Role Configuration
Description
Server and
Control Client
Control Client
View-only
Client
This computer will only be a View-only Client. This read only option is disabled if this computer has been assigned a Server component to run.
Some of these options may be disabled depending on what servers have been configured
to run on this computer. The Computer Setup Wizard cross-references your computers
146
network identification with the network addresses configured for each server in your
project configuration.
See Also
Network Model
CPU Configuration
Network Model
Select the network model to be applied to this CitectSCADA computer. Options include:
No networking
TCP/IP
The no networking option is not available when the multi-process option is selected. From
Version 7.0 CitectSCADA uses TCP/IP to facilitate communications across a network.
Note: TCP/IP address information for Citect servers is configured within the Citect project
itself. See Network Address Definitions for more information.
When you complete the Computer Setup Wizard, the chosen network model is written to
the [LAN] section in the citect.ini file; for example:
...
[LAN]
TCPIP=1
...
See Also
Internet Server Configuration
147
See Also
Alarm Configuration
DNS Parameters
Alarm Configuration
The Alarm Configuration page will only be displayed if this machine is configured as an
Alarm Server in the Project Editor.
CitectSCADA has several options available for alarm processing:
Option
Description
Alarm scan
time
Determines the rate at which alarms are scanned and processed. A value of 500 (the default value) indicates that CitectSCADA tries to process the alarms every 500 ms. However,
if CitectSCADA cannot read all the alarm data from the I/O Device within 500 ms, the alarms are processed at a slower rate.
For example, if it takes 800 ms to read all the alarm data from
the I/O Device, CitectSCADA processes the alarms every 800
ms.
If you select a larger value for the alarm scan time, the alarms
server uses less CPU (because it does not need to process the
alarm records as often). The amount of data read from the I/O
Device is also reduced, so that other processes (Trends, Reports, and the current page) get their I/O Device data more
quickly. You can enter any value from 0 to 60000 (milliseconds).
Alarm save
period
The period for saving alarm and event data (to disk). You can
save alarm and event data periodically so that the data is restored after a planned or unplanned system shutdown. Note
that the smaller the period, the greater is the load on the system.
Summary
length
Summary timeout
Primary
alarms server
save path
The path to the primary save files. CitectSCADA uses two save
files for each alarms server, ALMSAV.DAT and ALMINDEXSAVE.DAT. The save primary path is the directory where the
primary alarms server creates its save files. When restoring the
files, the most recent (of the primary and secondary) save files
will be used.
Standby
alarms server
save path
To minimize the chance of conflicts between alarm files used by multiple Alarm Servers
from different clusters running on the same machine, the alarm files have a dynamic naming convention based on the following format:
<ProjectName>_<ClusterName>_<filename>.DAT
148
See Also
Reports Configuration
Reports Configuration
The Reports Configuration page will only be displayed if this machine is configured as a
Reports Server in the Project Editor.
Note: For a networked computer to be a Reports Server it must also be the I/O Server or
must be able to communicate with the I/O Server on the network.
CitectSCADA has several options available for report processing:
Option
Startup report
Description
Defines the name of the report to run when CitectSCADA
starts up.
Inhibit triggered
reports on startup
See Also
Trends Configuration
Trends Configuration
The Trends Configuration page will only be displayed if this machine is configured as a
Trends Server in the Project Editor.
Note: For a networked computer to be a Trends Server it must also be the I/O Server or
must be able to communicate with the I/O Server on the network.
CitectSCADA has one option available for trend processing:
Option
Description
See Also
CPU Configuration
CPU Configuration
The CPU Setup page is used to assign client and server components to specific processors
in a multi-processor machine.
This page lists each components full name, including the cluster to which it belongs, the
priority and the CPU assignment. If the Multi-process option was not selected on the Com149
puter Role Configuration page there will only be one entry listed, either Client or Client
and Servers. If the Multi-process option was selected, you have the option of selecting specific CPUs for the Client, I/O Server, Alarm Server, Trends Server and Reports Server.
To assign a CPU to a component:
Select one or more components from the list (hold the Ctrl key down to select multiple
components).
Click Modify.
Type the number of the CPU and click OK.
When you complete the Computer Setup Wizard, the CPU assignations are written to each
component section in the citect.ini file; for example:
...
[Alarm.Cluster1.AlarmServer1]
CPU=1
Clusters=Cluster1
...
[Trend.Cluster1.TrendServer1]
CPU=2
Clusters=Cluster1
...
See Also
Events Configuration
Events Configuration
Events are used to trigger actions, such as a command or set of commands. For example,
an operator can be notified when a process is complete, or a series of instructions can be
executed when a process reaches a certain stage. Select the Enable Events on this computer
check box if events are to be enabled on this CitectSCADA computer.
The Events Setup page lists each components full name, including the cluster to which it
belongs, alongside a list of events that can be enabled for each component. If the Multi-process option was not selected on the Computer Role Configuration page there will only be
one entry listed, either Client or Client and Servers. If the Multi-process option was selected, you have the option of enabling events for each component on this computer.
Note: The Computer Setup Wizard only displays named events from the selected project.
If you are using events in included projects you will need to edit your citect.ini file to add
these under the [Events] section header.
Note: Events named Global or events with no title will not appear as these are global
events. These events will run on all computers that have events enabled. These events will
run in the client process.
To enable an event for a component:
Select the component from the list.
Select the events you want to enable for that component, or click Enable All or Disable
All.
Click Next when finished.
150
When you complete the Computer Setup Wizard, the events are written to each component
section in the citect.ini file; for example:
...
[Alarm.Cluster1.AlarmServer1]
CPU=1
Clusters=Cluster1
Events=CSV_AlarmClient...
[Trend.Cluster1.TrendServer1]
CPU=2
Clusters=Cluster1
Events=CSV_TrendXClient,CSV_TrendXServer...
See Also
Startup Functions Configuration
See Also
CPU Configuration
Cluster Connections Configuration
151
See Also
Implementing Clustering
152
Option
Description
Allows the operator to use the control menu (top lefthand icon) to access the Citect Editor, Project Editor,
Graphics Builder, and Cicode Editor from CitectSCADA
at run time. Disabling this provides better security.
Shutdown on menu
Kernel on menu
See Also
Keyboard Security Configuration
Description
Provides the ability to stop CitectSCADA from starting up automatically. Automatic startup is a
potential security concern
153
See Also
General Options Setup
Description
Data Directory
The directory where the CitectSCADA data files are located. The data files are the files that are generated at
run time: trend files, disk PLC etc.
Startup page
The Page Name of the graphics page to display when CitectSCADA starts up.
See Also
Finish
Finish
Click Finish to save the setup to the citect.ini file, Cancel to quit the wizard without saving, or Back to navigate to a page that requires adjusting.
154
Rules of Clustering
When configuring CitectSCADA the following clustering rules apply:
Each cluster must have a unique name.
Each server component must have a unique name.
Each server component must belong to one cluster.
Each cluster can contain only one pair of redundant Alarm Servers. They must reside on
different machines.
Each cluster can contain only one pair of redundant Reports Servers. They must reside
on different machines.
Each cluster can contain only one pair of redundant Trends Servers. They must reside
on different machines.
Each cluster can contain an unlimited number of I/O Servers.
There are countless variations in how a clustered system can be configured. The most appropriate configuration will depend on the requirements for the solution to be deployed
and the environment in which it is being deployed. For more information, refer to Typical
system scenarios.
The diagram below is an example of a system running with two clusters across three machines. All server and client components have been deployed in accordance with the clustering rules.
155
The next diagram demonstrates circumstances which do not correctly follow the clustering
rules.
The CitectSCADA compiler or the CitectSCADA Runtime Manager detects when the rules
of clustering are not being observed and advises the user accordingly.
See Also
About cluster context
Cluster Definitions
See Rules of Clustering for additional information.
156
To define a cluster:
In the Project Editor, choose Servers | Clusters.
In the Cluster dialog box, complete the cluster properties:
Option
Description
Cluster Name
Comment
Click the Add button to append a new record, or Replace if you have modified a record.
See Also
Network Address Definitions
Description
Name
Address
Comment
Click the Add button to append a new record, or Replace if you have modified a record.
See Also
Alarm Server Definitions
157
Description
Cluster Name
Server Name
Mode
Network Addresses
Port
The port this server will listen on (maximum of 16 characters). You can leave this
field blank if you are running only one
Alarm Server on the machine, in which
case the default port number will be used.
Comment
Description
Publish Alarm
Properties
Port
Click the Add button to append a new record, or Replace if you have modified a record.
See Also
Reports Server Definitions
158
Description
Cluster Name
The name of the cluster to which this Reports Server will belong (maximum of 16
characters). If there is only one cluster
defined in the project, you can leave this
field blank. The Reports Server will default to the defined cluster
Server Name
Mode
Network Addresses
Port
The port this server will listen on (maximum of 16 characters). You can leave this
field blank if you are running only one Reports Server on the machine, in which
case the default port number will be used.
Comment
Click the Add button to append a new record, or Replace if you have modified a record.
See Also
Trends Server Definitions
Description
159
Cluster Name
Server Name
Mode
Network Addresses
Port
The port this server will listen on (maximum of 16 characters). You can leave this
field blank if you are running only one
Trends Server on the machine, in which
case the default port number will be used.
Comment
Click the Add button to append a new record, or Replace if you have modified a record.
See Also
I/O Server Definitions
160
Description
Cluster Name
Server Name
Network Addresses
Port
Peer Port
Comment
Any useful comment. This property is optional and is not used at runtime. 48 characters maximum.
Click the Add button to append a new record, or Replace if you have modified a record.
Text
Command
Comment
Production Line A
PageDisplay("ProductionLine","Cluster_A")
Display the mimic page in the context of production
line A
161
Button
two
Button
three
Text
Command
Production Line B
PageDisplay("ProductionLine","Cluster_B")
Comment
Text
Production Line C
Command
Comment
PageDisplay("ProductionLine","Cluster_C")
Display the mimic page in the context of production
line C
In each case, PageDisplay would pass the name of the host cluster to the page, depending
on which button is selected. As each production line shares a common architecture, any
tags that do not have a cluster explicitly defined will be assigned to the specified cluster as
the page is opened.
This functionality is supported by the following Cicode functions:
PageDisplay
PageGoto
WinNew
WinNewAt
You can also use the PageInfo function to determine the cluster context that has been set for
a page.
This functionality extends to any Cicode that may be called from a graphics page. You can
write Cicode that only specifies variable tag names, allowing the cluster to be defined by
the current context of the page from which it is launched.
If the Cicode is executed by the function TaskNew, you have the option to specify a cluster
by setting the ClusterName parameter.
Note: The cluster context for Cicode cannot be changed once the code is running.
162
163
Note: Although both I/O Servers are identical, it is important to recognize that the standby
server is not duplicating the primary servers functions. If it were, the load on the PLC portion of the network would be double and would significantly reduce performance. Therefore, only the primary server communicates with the PLCs at any given time.
Redundancy is provided as follows:
When the system is in operation and the primary I/O Server becomes inoperative, or if
you wish to perform some maintenance and take it offline, all clients will be reverted to
the standby server with minimal or no interruption to the system.
When the primary server is brought back online, the system returns control of the I/O
Devices back to the primary server. This is done by copying the disk image from the
standby server to the primary, allowing the clients to reconnect to it, and thereby resuming control of the system.
When the system is running, you can also use redundant I/O Servers to split the processing
load. This would result in higher performance as all I/O Servers would be running in parallel when servicing the I/O Devices.
See Also
I/O Device promotion
164
if no standby devices have a priority setting, they will be assigned priority according to
the order they were configured.
These rules apply regardless of the connections between the I/O Devices and I/O Servers
configured in a cluster.
The standby device priorities are confirmed and/or allocated during project compilation.
Notification is provided for each allocation issued by the compiler. Compile errors will occur under the following circumstances:
if a primary device has a priority setting other than the default value of 1
if standby devices have duplicated priority values.
Example
The following diagram shows four I/O Devices connected to two I/O Servers, with just one
primary device configured.
If no priorities were set for the standby devices, the compiler would allocate the following:
I/O Device1 is allocated Priority 1 by default (no compiler alert)
I/O Device2 is allocated Priority 2 (compiler warning alert)
I/O Device3 is allocated Priority 3 (compiler warning alert)
I/O Device4 is allocated Priority 4 (compiler warning alert)
This presumes the devices were configured in numerical order.
If I/O Device3 has been manually set to priority 2, the compiler would allocate the following:
I/O Device1 is allocated Priority 1 by default (no compiler alert)
I/O Device2 is allocated Priority 3 (compiler alert generated)
I/O Device3 is allocated Priority 2 (no alert generated)
I/O Device4 is allocated Priority 4 (compiler alert generated)
In this case, the setting for I/O Device3 has taken precedence. The remaining standby devices are set for promotion based on the order they were configured.
Note: The automated priorities work on an n+1 equation; if I/O Device3 has been set to Priority 5, the remaining devices would have been allocated priority 6 and 7.
See Also
Redundancy and Persistence
165
The diagram shows that there are two I/O Servers, namely IOServer1 (primary) and
IOServer2 (standby). Each connects to the public switched telephone network (PSTN) via
a modem, which is in turn connects to the I/O Devices, also over a modem. Persistence
Caches work as follows:
Every IODevices->Cache Time period, all data from an I/O Device is stored temporarily
in the memory of the I/O Server (I/O Server cache).
For every [IOServer]SavePeriod, IOServer1 saves its in-memory cache to disk.
The cache is saved in Persistence Caches -one for each cached device.
IOServer1 broadcasts to all other I/O Servers the UNC path of the Persistence Caches
(set with [IOServer]SaveNetwork).
From these Persistence Caches, IOServer2 updates its in-memory cache for its I/O Devices.
Depending on the value of the I/O Server parameter of [IOServer]SavePeriod (determines how often the Persistence Cache is saved to the hard disk in seconds), IOServer1
saves its in-memory cache to the hard disk every x amount of seconds.
Note: You can define an I/O Device on an I/O Server using the Express Communications
Wizard, or by adding a device in the I/O Devices form in CitectSCADAs Project Editor.
You are not limited to just one Standby Server, since the UNC path name set in [IOServer]SaveNetwork is broadcast to all I/O Servers. Each I/O Server updates its cache from the
Persistence Caches only for the I/O Devices defined on that server. It is then possible, there166
fore, set up several I/O Servers which update their in-memory caches with the most recently read data.
For example, we set the [IOServer]SaveFile and [IOServer]SaveNetwork parameters as follows:
On IOServer1
On IOServer2
[IOServer]
[IOServer]
SaveFile=C:\Data\IOServer1.dat
SaveFile=C:\Data\IOServer2.dat
SaveNetwork=\\IOServer1\Data\IOServer1.dat
SaveNetwork=\\IOServer2\Data\IOServer2.dat
IOServer1 would broadcast the following UNC path of the Persistence Cache to all other I/
O Servers: \\IOServer1\Data\IOServer1.dat. IOServer2 would then use the Persistence
Caches to update its in-memory cache with the device data most recently read by
IOServer1.
See Also
Data Path Redundancy
The diagram above shows that an additional data path (running in parallel) has been defined. The redundancy is provided as follows:
When you start your runtime system, CitectSCADA connects to the I/O Device using
the primary data path.
Should communications with the I/O Device be lost at any time (for example if the communications cable is cut), CitectSCADA will switch to the standby data path with minimal or no interruption to the system.
CitectSCADA reconnects through the primary data path when it is returned in to service.
On a larger system (such as one running on a network), you can also use data path redundancy to maintain device communications with multiple I/O Server redundancy, as shown
in the following diagram.
167
168
In this scenario, we have three I/O Servers connected to three I/O Devices in the following
manner:
I/O Server
IOServer1
IOServer2
IOServer3
Network Redundancy
You can use the dual NIC (or multiple network interface) capabilities of each client or server, enabling you to specify a complete and unique network connection from a client to a
server.
Consider the following diagram:
169
In Network Addresses field of the server configuration dialog box, type the dual addresses for the server separated by a comma. For example,
"AlarmPrimaryLAN1,AlarmPrimaryLAN2".
See Also
Network redundancy
Server redundancy of each component in the diagram is achieved by providing a corresponding standby server on the same network (LAN 1). Redundancy is provided as follows:
If any of the servers become inoperative or communications become inoperative, their
standby counterpart immediately assumes operation.
For I/O Server redundancy, when the inoperative I/O Server comes back online, it resumes control.
For Alarms, Reports, and Trends Server redundancy, when the inoperative primary
server returns online, the clients stay on the standby Server (unless the standby Reports
Server becomes inoperative in which case it will revert back to the original primary
server).
Note: Since CitectSCADA maintains the same data on both standby and primary servers,
it is not important whether a client receives data from the primary or standby server, and
it is quite normal for some clients to be communicating with the primary server, and others
with the standby.
171
See Also
Alarm Server redundancy
Reports Server redundancy
Trends Server redundancy
File server redundancy
FTP server redundancy
be aware that no report data is transferred between the primary and standby Reports Servers (CitectSCADA does not synchronize the report data because reports can write their data
to any type of device.
CitectSCADA clients either connect to the primary Reports Server or the standby Reports
Server. On startup, all clients try to establish a connection with the primary Reports Server.
If a connection with the primary Reports Server cannot be established, then an attempt to
establish a connection with the standby Reports Server will be made. If the primary Reports
Server reactivates and becomes available, any clients connected to the standby Reports
Server remain connected to the standby Reports Server.
See Also
Trends Server Redundancy
173
the File Server becomes inoperative. Therefore, CitectSCADA File Server redundancy will
operate correctly with these networks.
Note: Only CitectSCADA switches to a backup path. Any other applications that are using
files on the File Server will become inoperative when the File Server becomes inoperative.
This may cause the computer to wait for long periods for the File Server (or to itself become
inoperative). This includes Windows itself, so you should install Windows on a local drive.
To enable File Server redundancy, set the [CTEDIT]Backup parameter to a backup database path. For example, if your primary path is F:\CITECT\USER\DB, set the backup path
to another File Server or a local drive, such as C:\CITECT\USER\DB.
You will want to verify that the project in the Backup path is the same as the one in the Run
directory - each time you compile the project in the run directory you should copy it into
the backup directory.
See Also
FTP Server Redundancy
174
These components work in unison to expose the inputs and outputs of an I/O Device to a
CitectSCADA system.
Inputs to the I/O Device provide information about your plant, such as the speed of a
machine, status of a conveyor, or the temperature of an oven.
Outputs from the I/O Device usually initiate tasks that control the operation of your
plant, such as starting electric motors, varying their speed, or switching valves and indication lamps.
The transport medium does not need to be a direct cable as shown in the diagram; it can be
any means of carrying the message such as a high-speed wireless link or an FDDI network. Similarly, the protocol-specific message could be a simple ASCII message or a complex object-based message such as DNP 3. The important thing to note is that engineers are
free to assemble different combinations of I/O Devices, transports, and protocols.
See Also
The Role of the I/O Server
175
176
See Also
The Role of the Transport Medium
Communication Configuration
CitectSCADA uses a logical and structured communications configuration, that maps
closely to the elements shown in the diagram below.
It requires the engineer to:
Define an I/O Server in the I/O Server form;
Define the transport type in the Boards form (COMx, TCPIP, PROFI);
Define the port to communicate out of in the Ports form.
Define the protocol to use (MODBUS, DNP, ASCII).
Note: Each of these steps is simplified in order to illustrate the mapping of essential elements to the basic communication architecture. In reality, some other tasks need to be performed to setup communications.
178
The following diagram shows how the elements in the configuration environment map to
the software components in the runtime system.
Although this is not essential to know, it does help understand how drivers fit into the system.
Note: This example omits many logical runtime components for clarity (such as clients). In
addition, the runtime components shown are not visible to the user at runtime. However
all drivers can be accessed at runtime via the CitectSCADA Kernel.
A good place to start when setting up simple communications is with the Express I/O Device Setup wizard. Once you understand how the setup works, you can manually configure
arrangements that are more complex. Much of the functionality of the protocols and transports can be modified using the driver options and parameters. Each driver has its own
specific section in the online help that will guide you through configuration options.
Setting Up Communications
Setting up communications between a device and a CitectSCADA I/O Server typically involves a process that includes the following steps:
179
Preparing a Device
You need to verify your system meets the hardware and software requirements needed to
establish communication between a device and CitectSCADA.
This may include a variety of possibilities, including:
the installation of a proprietary communications card
the establishment of a device server
the installation of configuration software, etc.
The Driver Reference Help provides the hardware and software requirements for each device, and includes any additional information you need to know about setting up specific
devices. To access this help, select Driver Help from the Help menu in Citect Explorer and
Project Editor.
See also
180
181
You can use identical I/O Devices or I/O Devices supplied by different manufacturers; CitectSCADA supports most popular I/O Devices. You can connect any number of I/O Devices; the only limitation is the size of your computer. High-speed serial boards are available
for RS-232, RS-422, or RS-485 communication.
If you have several I/O Devices from the same manufacturer and these I/O Devices support
multi-drop communication, you can connect them to an RS-422 or RS-485 high-speed serial
board installed in your computer. (The RS-232 standard does not support multi-drop communication.)
Not all high-speed serial boards support RS-422. You can use an RS-232/RS-422 or RS-232/
RS-485 converter to achieve the same arrangement.
183
See Also
Using a Com Port
Debugging a COMx Driver
Using a Serial Board
Using an Ethernet Card
Ethernet is one of the most popular methods of communicating with a number of I/O Devices at high speed. It is certainly one of the easiest to configure. You can typically connect
to Ethernet capable I/O Devices using a standard Ethernet card, or integrated Ethernet port.
184
See Also
Using an Ethernet Card
Using a Serial Board
Using a Proprietary Boards and/or Intermediary Software
With some brands of I/O Devices you can install a proprietary interface board in your computer, or intermediary software. This PLC interface board/software is supplied by the PLC
manufacturer; you can connect it to a single PLC or a PLC network.
Note: With some PLCs, a high-speed serial board provides better performance than a PLC
interface board when the system is connected to more than one PLC.
185
You can mix both PLC interface boards and high-speed serial boards in a single computer.
You can, for example, connect a PLC network to a PLC interface board, and individual I/O
Devices to a high-speed serial board.
There are many possible hardware arrangements for a CitectSCADA application. CitectSCADA is a flexible system and imposes few restraints on the type (or manufacturer) of
I/O Devices that you can use, or on the way you connect them to the computer.
To set up CitectSCADA to use a proprietary board/software:
If you are using a proprietary board/software (that is, supplied by the PLC manufacturer):
Install the board/software in your computer and set it up under Windows as per the accompanying instructions. Use the latest driver from the manufacturer.
If possible, run diagnostics on the board before configuring CitectSCADA to check that
the board works correctly.
Check that the I/O Port and Interrupt settings are correct.
Configure the Boards and Ports as instructed by the PLC-specific help.
186
See Also
Running Your Test Project
Running Your Test Project
Before running your test project, verify that the Kernel is enabled on CitectSCADA startup
so that you can follow the startup procedures step by step.
To do this, edit your citect.ini file to contain the following:
[DEBUG]
Kernel=1
This will show the Kernel on startup of CitectSCADA.
Next, run the Computer Setup Wizard. Verify that the computer is defined as a standalone
CitectSCADA system and configured to run your test project.
Start the project running. When the kernel appears, double-click the title bar in the Main
window, then double-click the title bar of the kernel. Doing this in order is important, as it
will maximize the Main window, then Maximize the whole kernel. If you dont do this then
you will not see what is happening as the information in the Kernel cannot be scrolled, and
once it is off the screen it is gone. This might require a bit of practice as the startup procedure might only take 1-2 seconds or less on a fast machine.
Once you have the project running (and assuming that everything worked) the last line in
the Main window in the Kernel should tell you that your I/O Devices are online. Do not
confuse this with the message telling you that your Port channels are online. CitectSCADA
should first report that it can communicate through the port you have setup, then report
that it can communicate with the I/O Device.
See Also
When Your Test Project Does Not Compile
When Your Test Project Does Not Communicate
Check everything and run it again. Depending on the type of board driver you are using
there are different methods for debugging them. However, all of them are basically the
same. Add one item at a time and test.
See Also
Troubleshooting Device Communications
Double-click the Express I/O Device Setup icon in the Communications folder of the
current project.
Complete the Wizard.
Note: Each I/O Device/protocol combination requires a unique setup for the boards, ports,
and I/O Devices forms. See the specific Help for each device.
See Also
Express Communications Wizard - introduction
See Also
Express Communications Wizard - I/O Device communications selection
189
Description
Synchronize at
Repeat Every
Note: These values can also be set using the I/O Devices form in the Project Editor.
Examples
All based on a Synchronize at time of 10:00:00:
If you enter 12:00:00 in the Repeat every field, and start your project at 9 a.m., the I/O
Server will communicate with the I/O Device at 10 a.m., then once every 12 hours after
that, i.e. 10 p.m., then again at 10 a.m. of the following day, etc.
If you enter 12:00:00 in the Repeat every field, and start your project at 4 p.m., the I/O
Server will communicate with the I/O Server at 10 p.m., then again at 10 a.m. of the following day, etc. It will assume that communications were established at 10 a.m., so it
continue as if they had been - communicating once every 12 hours after 10 a.m.
If you enter 3 days in the Repeat Every, and start your project at 9 a.m. on a Wednesday,
the I/O Server will communicate with the I/O Device at 10 a.m., then once every 3 days
after that, i.e. 10 a.m. on the following Saturday, then at 10 a.m. on the following Tuesday, etc.
190
If you enter the 6th of December in the Repeat every, and start your project during November, the I/O Server will communicate with the I/O Device at 10 a.m. on December 6,
then again on December 6 of the following year, etc.
Select On Startup for a persistent connection. To disconnect a persistent connection,
you must call the IODeviceControl() function with type 8.
See Also
Caller ID and commands
Express Communications Wizard - Link to external database
Caller ID and commands
Caller ID
A unique identifier which identifies a remote I/O Device when it dials back to the I/O Server. The caller ID can be any combination of alpha-numeric characters and/or the character
_ (underscore).
This ID will only be used if the I/O Device initiates the call to the I/O Server. If the modem
initiates the call, you must set the caller ID on the modem.
Note: If you are multi-dropping off a single modem, use your I/O Devices to issue the caller
ID, not the modem. This is because using the modem to issue the ID will send the same ID
no matter which I/O Device the call is relevant to, which makes it difficult to identify the I/
O Device that triggered the call.
By using the I/O Device to issue the ID, the I/O Server will receive a unique caller ID for
each I/O Device. However, not all I/O Devices are capable of issuing caller IDs. If you are
multi-dropping, you should use I/O Devices that can issue caller IDs.
Option
Description
[Event Commands]
On connect
[Event Commands]
On disconnect
Note: These values can also be set using the I/O Devices form in the Project Editor.
See Also
Express Communications Wizard - Link to external database
Description
Determines whether or not you want to link the I/O Device to an external data source. If you link to an external
data source, CitectSCADA is updated with any changes
made to the external data source when a refresh is performed.
If you disconnect an existing link, you can choose to
make a local copy of all the tags in the data source or you
can delete them from CitectSCADAs variable tags data
source altogether.
191
Option
Description
Database type
Connection string
Tag prefix
192
Option
Description
Live Update
See Also
Express Communications Wizard - Serial device
Complete the I/O Devices Properties. This defines the I/O Device that CitectSCADA is
talking to, by specifying the address. The protocol is also defined at this level.
Run the Computer Setup Wizard to complete configuration. This allows you to define
your CitectSCADA computer as the I/O Server defined above. This is usually done after
you compile the project.
If using dial-up remote I/O Devices, you must complete the Modems dialog box. This
defines how CitectSCADA uses a modem to communicate with remote I/O Devices.
Note: If there is no data to read or write, CitectSCADA will not communicate with an I/O
Device regardless of whether it is defined or not. You must create a variable tag and use it
before CitectSCADA will do a read request. For example, use an integer variable to display
a number on a page.
Boards Properties
The properties of a board depend on the type of board installed in the I/O Server computer.
Note: The term "Board" is a legacy term from the time when most ports on a computer were
provided by additional boards. For example, an Ethernet card. The logical board concept is
still useful even though a physical board may not exist (it may be software).
Boards have the following properties:
Board Name
A name for the board. 16 characters maximum. For example Server1_Board1.
If you have more than one board in your I/O Server computer, the name of each board must
be unique. If you have multiple I/O Servers, the board name need only be unique within
each server. For example Server1_Board2
Board Type
The type of board. 16 characters maximum.
If you are using a serial board or your computers COM port, you should enter COMx.
194
Address
The starting address of the Board. For example 0xCC00. 8 characters maximum.
You must specify the address to match the switch settings on the board when it was installed in your computer. If you are using a serial board or your computers COM port, you
should enter 0 as the address.
Note: If more than one board is installed in the same computer, use a different memory address for each board.
I/O Port
The I/O port address of the Board. 8 characters maximum.
You must specify the address to match the switch settings on the board when it was installed in your computer.
Note: If you are using your computers COM port you should not enter the port address
here. You should specify the port number in the Ports form.
Interrupt
The interrupt number used by the Board. This is not required if using your computers
COM port.
Special Opt
Any special options supported by the board. 32 characters maximum. Please check the
Hardware Arrangements Help Topic for your specific I/O Device to see if specific options
are required.
Comment
Any useful comment. 48 characters maximum.
Ports Properties
The properties of a port depend on the type of board installed in the I/O Server, and on the
I/O Device connected to the port. Ports have the following properties:
Port Name
A name for the port connected to your I/O Device(s). 32 characters maximum. Each port
must have a unique name (i.e. you cannot assign the same Port Name to two ports in your
system). You can use any name (up to 16 characters), for example: Board1_Port1
If you have more than one board in your computer, you can use the port name to identify
the board, for example: Board2_Port1
Port Number
The port number that the I/O Device is connected to. 4 characters maximum. Do not assign
the same Port Number to two ports on a board, unless connecting to a dial-up remote I/O
Device via a modem (see the note below). Ports on different boards can be assigned the
same number.
If you are using your computers COM port you should enter the port number here - the
port number is defined in the Ports section of the Windows Control Panel.
195
Note: If you are connecting to a dial-up remote I/O Device (via a modem), you must define
a unique port name on the I/O Server for each dial-up remote I/O Device, and the port number must be -1 for each.
Board Name
The name you used for the board. 16 characters maximum. This is required to link the port
to the board. For example Server1_Board1
Baud Rate
The baud rate of the communication channel (between the CitectSCADA I/O Server and the
I/O Device). 16 characters maximum.
Note: The I/O Device hardware and serial board may support other baud rates. If you do
choose an alternative baud rate, verify that both the I/O Device and serial board support
the new baud rate.
Data Bits
The number of data bits used in data transmission. You must set your I/O Device to the
same value or a communication link cannot be established.
Stop Bits
The number of stop bits used to signify the completion of the communication. You must set
your I/O Device to the same value.
Parity
The data parity used in data transmission.
Special Opt
Any special options supported by the port. 32 characters maximum. Please check the Hardware Setup Help Topic for your specific I/O Device to see if specific options are required.
Comment
Any useful comment. 48 characters maximum.
You may use the same device name, but if you want to use I/O Device Cicode functions,
it is easier to have different I/O Device names.
In the Address field, enter the address of the I/O Device. 64 characters maximum. What
you enter in this field is determined by the type of I/O Device (and protocol) used, as
each has a different addressing strategy.
In the Protocol field, select the protocol you are using to communicate to the I/O Device.
16 characters maximum. Many I/O Devices support multiple protocols, dependent on
the communication method chosen.
In the Port Name field, specify the port on the board to which the I/O Device is connected. 32 characters maximum. This is required to link the I/O Device to the port. For example Board1_Port1.
Note: There is a limit of 255 COMx ports on a server. To avoid this limitation restricting
your number of remote I/O Devices, you can connect multiple remote I/O Devices to the
same port as long as communication details (Telephone number, baud rate, data bits,
stop bits, and parity) are identical.
In the Memory field, specify whether the I/O Device runs in Memory mode. 8 characters
maximum. The default value is FALSE. If you select TRUE, the I/O Device will be created in memory and its values stored in memory at runtime. This may be useful if you are
testing your system, before connecting physical I/O Devices, as memory mode stops CitectSCADA from communicating with physical I/O Devices. See Using Memory Mode.
In the Comment field, type inany useful comment. 48 characters maximum. This field
is optional and is not used at runtime.
Click Add to add a new record, or Replace to replace an existing one.
Extended forms fields
The following fields are implemented with extended forms (press F2).
Linked
Determines whether or not the I/O Device is linked to an external data source. 12 characters
maximum. If you link to an external data source, CitectSCADA is updated with any changes made to the external data source when a refresh is performed.
If you disconnect an existing link, you can choose to make a local copy of all the tags in the
database or you can delete them from CitectSCADAs variable tags database altogether.
If an I/O Device is linked to an external data source the Database Type, External Database,
Connection String, Tag Prefix and Live Update fields will be greyed out.
Link External Tag Database
The path and filename of the external data source for the I/O Device. 253 characters maximum. Alternatively, you can enter the IP address/directory, computer name, or URL of a
data server, etc. (for example "C:\Work.CSV" or "127.0.0.1", "139.2.4.41\HMI_SCADA" or
"http://www.abicom.com.au/main/scada" or "\\coms\data\scada").
Click Browse to select a path and filename.
Connection String
Enter a connection string to provide connection details for the data source. 128 characters
maximum. This is similar to an ODBC connection string. For example:
197
or
ServerNode=111.2.3.44; Branch=XXX
198
Primary
Standby
This channel will remain unused until the I/O Device configured with the primary channel becomes inoperative.
StandbyWrite
This channel will remain unused until the I/O Device configured with the primary channel becomes inoperative. All
write requests sent to the primary channel are also sent to
this channel.
Note: Do not use this mode for scheduled I/O devices because there is the possibility that the Standby I/O device
write queue will never be cleaned up. When writing to a
scheduled I/O device which it is not communicating, write
requests are queued up until communication resumes. In
case of using I/O device redundancy and StandbyWrite
mode, Primary and Standby I/O devices have their own
queues of pending write requests. If I/O device communication is controlled automatically by the communication
schedule, then both queues are flushed when the schedule
dial-time occurs. Where manual communication is controlled by the IODeviceControl Cicode function, only the
Primary I/O device write queue is flushed and the Standby
I/O device write queue will never be cleaned up.
Note: To use Standby or StandbyWrite modes, you must also configure a Primary I/O Device with the same I/O Device name, number and address.
Priority
Sets the order standby devices are promoted in if a primary I/O Device becomes inoperative during runtime. 8 characters maximum.
If there is more than one standby I/O Device configured for a cluster, you can use this field
to give precedence to a particular standby device. If this field is left blank, priority will be
automatically allocated to the device during project compilation, based on the priority settings of other standby devices and/or the order the devices were configured in.
See I/O Device promotion.
Log Write
Enables/disables the logging of writes to the I/O Device. When enabled, all writes are
logged to the SYSLOG.DAT file in the logs folder of the CitectSCADAUser and Data folder
selected during installation, also specified in the INI file as [CtEdit]Logs. See Tag Functions
for information about TagWriteEventQue and logging tag data.
Note: Logging all writes to an I/O Device may slow communications as the CitectSCADA
system will be writing large amounts of data to disk. However, logging of writes is useful
when debugging a system.
Log Read
Enables/disables the logging of reads from the I/O Device. When enabled, all reads are
logged in the CitectSCADA SYSLOG.DAT file.
Note: Logging all reads to an I/O Device may slow communications as the CitectSCADA
system will be writing large amounts of data to disk. However, logging of reads is useful
when debugging a system.
Cache
Enables/disables data caching. When enabled, a cache of the I/O Devices memory is retained at the I/O Server, thus improving communications turn-around time.
199
Note: Data caching should be enabled for scheduled I/O Devices, but disabled for memory
or disk I/O Devices.
Cache Time
The cache time specified in milliseconds. 8 characters maximum. When caching is enabled,
all data that is read from a I/O Device is stored temporarily in the memory of the I/O Server.
If another request is made (from the same or another client) for the same data within the
cache time, the CitectSCADA I/O Server returns the value in its memory - rather than read
the I/O Device a second time. Data caching results in faster overall response when the same
data is required by many clients.
A cache time of 300 milliseconds is recommended.
The Cache Time for a scheduled I/O Device is automatically calculated. You can view a
scheduled I/O Devices cache time using the Kernel Page Unit command.
Scheduled
Determines whether the I/O Device is configured for scheduled communications. This is
normally set using the Express Communications Wizard.
Note: If you do not specify a schedule for a dial-up remote I/O Device, the connection will
be established at startup and will remain connected until shut-down.
See Scheduled Communications.
Time
The I/O Server will attempt to communicate with the I/O Device at this time, and then at
intervals as defined below. This time is merely a marker for CitectSCADA. If you run up
your project after this time, the I/O server will not wait until the next day to begin communicating. It will operate as if your project had been running since before the start time.
Period
The time between successive communication attempts.
Examples (all based on a Synchronize at time of 10:00:00):
If you enter 12:00:00 in the Repeat every field, and start your project at 9 a.m., the I/O
Server will communicate with the I/O Device at 10 a.m., then once every 12 hours after
that, i.e. 10 p.m., then again at 10 a.m. of the following day, etc.
If you enter 12:00:00, and start your project at 4 p.m., the I/O Server will communicate
with the I/O Server at 10 p.m., then again at 10 a.m. of the following day, and so on. The
I/O Server will assume that communications were established at 10 a.m., so it continue
as if they had been - communicating once every 12 hours after 10 a.m.
If you enter 3 days, and start your project at 9 a.m. on a Wednesday, the I/O Server will
communicate with the I/O Device at 10 a.m., then once every 3 days after that, i.e. 10 a.m.
on the following Saturday, then at 10 a.m. on the following Tuesday, etc.
If you enter the 6th of December in the Repeat every, and start your project during November, the I/O Server will communicate with the I/O Device at 10 a.m. on December 6,
then again on December 6 of the following year, etc.
Select On Startup for a persistent connection. To disconnect a persistent connection, you
must call the IODeviceControl() function with type 8.
Connect Action (254 Chars.)
200
Cicode to be executed once communication with the I/O Device has been established (and
before any read or write requests are processed).
Disconnect Action (254 Chars.)
Cicode to be executed once communication with the I/O Device has been terminated (and
after all read and write requests are processed).
Phone Number (64 Chars.)
Windows 2000 Only
The telephone number that needs to be dialed to initiate contact with the I/O Device. (i.e.
for dial-up remote I/O Devices)
Caller ID (32 Chars.)
Windows 2000 Only
A unique identifier which identifies a remote I/O Device when it dials back to the I/O Server. The caller ID can be any combination of alpha-numeric characters and/or the character
_ (underscore).
This ID will only be used if the I/O Device initiates the call to the I/O Server. If the modem
initiates the call, you must set the caller ID on the modem.
Note: If you are multi-dropping off a single modem, you should use your I/O Devices to
issue the caller ID, not the modem. This is because using the modem to issue the ID will
send the same ID no matter which I/O Device the call is relevant to. This makes it difficult
for you to identify the I/O Device that triggered the call.
By using the I/O Device to issue the ID, the I/O Server will receive a unique caller ID for
each I/O Device. However, not all I/O Devices are capable of issuing caller IDs. If you are
multi-dropping, you should use I/O Devices that can issue caller IDs.
Background Poll
Specifies that all the tags for a particular device are continuously polled at a minimum
background poll rate. The options are True or False. Set this field to True if you are operating on a slow network, with a slow device, or where tags may normally only be polled infrequently.
Rate
When Background Poll is set to True, specifies the minimum rate by which the device
should be polled. You may select any predefined value from the drop-down list, or enter
your own in the format of HH:MM:SS. If you do not enter a value, the default value of 30
seconds will be used.
See Also
Communicating with Dial-up Remote I/O Devices
CitectSCADA has over 140 device drivers available, enabling communication with a vast
array of production devices across several communication types. These include generic
drivers that support industry-standard protocols such as OPC and Modbus.
The driver you will need to communicate with a particular device is determined by:
the device itself
the communication protocol the device supports
the communication channel used to connect the device to the CitectSCADA I/O Server.
To add a particular device to your CitectSCADA project, you will need to determine the
driver required to support it. If the particular driver is not installed with your current version of CitectSCADA, you will have to obtain a driver pack and install it separately.
Note: The word driver is often used when referring to communications. A driver is a component piece of software that implements a protocol or transport (or both). Drivers are
modular, such that new drivers can be easily plugged-in to existing systems.
See Also
Determining Which Driver To Use
Installing a Driver Pack
203
Required information
I/O Device
name
I/O Device
number
A unique number for the disk I/O Device (1-4095). Each I/O Device must have a unique number in the CitectSCADA system.
I/O Device
address
I/O Device
protocol
If the specified disk I/O device file is not found, CitectSCADA creates a new (empty) file with the specified
filename.
To use redundant disk I/O devices, you must use a network that supports peer-to-peer communication.
Disk files must have write permission (on both primary
and standby servers).
The frequency with which CitectSCADA writes data to the
disk I/O device(s) is determined by the [DiskDrv]UpDateTime parameter.
I/O Device
port name
205
Text Box
I/O Device
comment
I/O Device
startup
mode
Required information
Any useful comment.
If not using redundant disk I/O Devices, leave this property
blank.
If you are using redundant disk I/O Devices, use either:
Primary: Enable immediate use of this disk I/O Device
StandbyWrite: This disk I/O Device will remain unused until
the computer with the primary disk I/O device configured becomes inoperative. All write requests sent to the primary disk I/
O Device are also sent to this disk I/O Device.
To use StandbyWrite mode, you must also configure an I/O disk
device in the primary server. Both I/O Devices must have the
same I/O Device name and number.
I/O Device
Log Write,
Log Read,
Cache and
Cache Time
See Also
Redundant Disk I/O Devices
When the system is operating, CitectSCADA reads and writes runtime data to the disk I/O
Device configured in the primary server. It also writes runtime data to the disk I/O Device
configured in the standby server. (CitectSCADA maintains both disk I/O Devices identically.)
If the primary server becomes inoperative, the Disk I/O Device in the standby server is activated without interrupting the system. When the primary server becomes active, CitectSCADA automatically returns control to the primary server, and copies the Disk I/O
Device from the standby server to the primary server. The Disk I/O Device in the standby
server reverts to its standby role.
206
Error Messages
CitectSCADA has two kinds of protocol driver errors:
generic
driver-specific
Generic errors are hardware errors 0-31, and are common to all protocols.
Drivers have their own specific errors, which can be unique and therefore cannot be recognized by the hardware alarm system. The drivers convert their specific errors into generic
errors that can be identified by the I/O Server.
For example, when a driver has a fault, there is often both a driver-specific error and a corresponding generic error.
Note: For reference information related to the implementation of device drivers, including
driver alert messages, please refer to the Driver Reference Help.
See Also
Generic Driver Errors
Driver Specific Errors
Using the Driver Reference Help
208
Generic errors
The table below describes the generic protocol errors.
Error number
Error title
Description
Address is out of
range
Command cancelled
Unknown data
type
Unknown data
format
A write request contains invalid data, for example you tried to write to a floating-point address with an invalid floating-point number.
Check the CitectSCADA database.
Command is unknown
Response bad or
garbled
209
General error
10
210
Write location is
protected
Hardware error
A problem exists with either the communication channel, server, or I/O Device hardware.
Examine all hardware components. The command or data request has not been processed.
The servers operation may no longer be reliable.
11
I/O Device
warning
12
13
Driver software
error
14
An attempt has been made by an unauthorized user to access information. Check the users access rights.
211
212
15
The server is out of memory and cannot continue execution. Minimize buffer and queue allocation or expand memory in the server
computer. The command or data request has
not been processed.
16
17
Low buffer
warning
18
19
20
ach driver can only support several communication channels. You have exceeded the limit.
This error may occur if you abnormally terminate from the server and then restart it. Try
re-booting the computer to reset all drivers
and hardware. If the problem persists, contact
Citect Support. The command or data request
has not been completed.
21
Channel off-line,
cannot talk
22
23
24
25
26
27
Stand-by I/O
Device activated
28
Message overrun
A response was longer than the response buffer. If this error occurs on serial communication
drivers, garbled characters may be received.
Check the communication link and the baud
rate of the driver.
29
There is a configuration error, for example invalid special options have been set.
30
Stand-by I/O
Device error
There is an error in a standby I/O Device. Rectify the fault in the standby I/O Device.
31
Protocol-Specific Errors
Though each protocol may have multiple unique errors, the first 34 protocol-specific errors
are standard for all protocols. All protocol-specific errors are also reported under error
numbers 1 to 31 above. Although these errors have their own error number (also given in
hexadecimal), it is only used as a notation.
Note: Errors that are protocol-specific are listed in the Protocol-Specific Errors help topic
for each protocol. Refer to the documentation that was supplied with your I/O Device if you
cannot locate an error description.
Error number
1 (0x01)
Error title
Description
213
2 (0x02)
3 (0x03)
214
Parity error
4 (0x04)
Framing error
5 (0x05)
6 (0x06)
Invalid checksum
7 (0x07)
8 (0x08)
10 (0x0A)
11 (0x0B)
12 (0x0C)
15 (0x0F)
16 (0x10)
17 (0x11)
18 (0x12)
19 (0x13)
20 (0x14)
215
21 (0x15)
22 (0x16)
23 (0x17)
216
Timeout error
24 (0x18)
25 (0x19)
26 (0x1A)
27 (0x1B)
28 (0x1C)
29 (0x1D)
Command is cancelled
30 (0x1E)
31 (0x1F)
32 (0x20)
33 (0x21)
34 (0x22)
where:
Xn =
217
Y=
Z=
Example
[COMx]
WritePortName=PORT_1,PORT_2
WriteDebugLevel=1
WriteFileSize=2000
ReadPortName=PORT_1
ReadDebugLevel=1
ReadFileSize=1000
StatusPortName=PORT_2
StatusDebugLevel=1
StatusFileSize=10
LINE 2
HH:MM:SS.sss
LINE 3
LINES 4...
AA BB CC ..
where:
W&X=
Y=
Z=
AA BB CC =
Example:
WRITE Debug file Started PORT1_BOARD1 Mon Dec 15 16:07:07.998
16:07:09.810
Out 0 In 8 nBytes 8 iStatus 997
218
0e 02 00 00 00 10 00 00
16:07:10.802
Out 8 In 16 nBytes 8 iStatus 997
0e 02 00 00 00 10 00 00
..
LINE 2
HH:MM:SS.sss
LINE 3
LINES 4...
AA BB CC ..
where:
W&X=
Y=
Z=
AA BB CC =
Example
READ Debug file Started PORT1_BOARD1 Mon Dec 15 16:07:07.998
16:07:09.830
Out 0 In 0 nBytes 8 iStatus 0
0e 02 00 00 00 10 00 00
16:07:10.822
Out 0 In 8 nBytes 8 iStatus 0
0e 02 00 00 00 10 00 00
LINE 2
HH:MM:SS.sss
LINE 3
modemStatus X
Example
STATUS Debug file Started PORT_1 Debug Level 1 Wed Nov 05
15:28:55.310
15:29:55.950
modemStatus 34
..
More parameters might be added later, so check the COMx information and the Citect
Knowledge Base regularly.
See Also
Debugging a TCP/IP driver
219
Allowable Values
1- Enables logging
0 - Disables logging.
Default value - 0
LogSize - Sets the default maximum size (in kilobytes) of the TCP/IP drivers log file before wraparound occurs.
Allowable Values
Any integer
Default value - 200
PortName - PortName to log.
Default value - * , by default all ports are traced ("*").
LogTxRx - Log actual data Tx & Rxs besides setup info.
Allowable Values
1- Enables logging of Tx & Rx.
0 - Disables logging
Default value - 0
NoBufferSleepTime - Sleep time in ms to wait AFTER getting a WSAENOBUFS (no system buffers mes sage) before reading another buffer. You should never need to adjust
for this.
Default value - 0
Debugging steps
Use the following steps for debugging:
Check if you can PING your target I/O Device. If you cant, CitectSCADA cannot talk to
it. To do this open up a Command Window and type PINGaaa.bbb.ccc.ddd where
a.b.c.d is the IP address of the I/O Device you are trying to connect to. If PING does not
work, you need to go back to your Windows Networking and fix that.
Keep using your Simple As Possible Project (SAPP).
Delete any old tcpip.dat files.
Set the Debug=1 and Log=1 parameters in your citect.ini file.
Start the project. From the information in the maximized Main window of the Kernel
and the TCP/IP Debug window, you can see if CitectSCADA is sending requests to your
I/O Device to initialize communications with it.
If there are no requests being sent, your software is improperly configured, and you should
check that there were no errors on startup of CitectSCADA. If there were errors on startup,
look them up in the Help. Also check that your computer is an I/O Server (and that it matches the one in your project). To do this run the Computer Setup Wizard, and configure the
computer for a standalone configuration.
If there are requests, you can see all communications between CitectSCADA and Winsock
in a separate window, which displays the requests made by CitectSCADA to connect to the
I/O Device and the corresponding response from the I/O Device. Any errors have a Win220
sock Error code that you can look up in the Microsoft Knowledge Base. If you see a Connection OK message, CitectSCADA should be able to come online.
See Also
Debugging a protocol driver using serial communications
sending is actually what it is sending. The log files produced by using these parameters
get their information from a lower level than CitectSCADA and show you exactly what
is going through the COMx driver.
The Response from the I/O Device is not getting to CitectSCADA - This is unlikely
and usually caused by cabling that is damaged, has insufficient bandwidth, or is connected improperly.. Check your cabling as above. Also, check that you are specifying
everything you need within CitectSCADA. Many protocols require CitectSCADA to
send a unique identifier in its request packet. If this identifier is incorrect then the response cannot get back to CitectSCADA.
The I/O Device does not understand the Request - All CitectSCADA protocols can
check if an I/O Device is running. Typically the protocol attempts to read data from the
I/O Device, usually a status register or other register that should be there. However,
many pseudo-standard protocols, such as Modbus, do not conform to the exact specification for that protocol. Many protocols supplied with CitectSCADA have some extra
parameters to allow you to choose the specific initialization request from CitectSCADA.
These can be found in either the Online Help or the Knowledge Base. Check with the
manufacturer of your I/O Device to confirm that it will respond to the request that CitectSCADA sends. If you are unsure of the request being sent for initialization, use DebugStr=* to get the actual variable address that CitectSCADA is asking for in its
initialization.
Check the protocol you are using. CitectSCADA may have many different protocols for
communicating to an I/O Device. PLCs such as the AB PLC5 can use different serial protocols, depending on the method you are trying to use. Make sure you are using the correct one. If you are unsure, try the other possible protocols.
The I/O Device is not functioning properly - There is usually some sort of software
from the I/O Device manufacturer that can be used to diagnose any problems with the
I/O Device.
See Also
Debugging proprietary board drivers
222
See Also
Test Setup
Serial Port Loop-Back Cable
Test setup
No other protocols should be configured. Temporarily delete other boards and units
while performing this test.
Configure a unit for each port to be tested. The I/O Devices form should look as follows:
Name: <unique name for the I/O Device>
Number: <unique network number for the I/O Device>
Address: NA
Protocol: LOOPBACK
Port Name: <the "Port Name" in the Ports form>
The following Citect.ini options are supported:
[LOOPBACK]
LoopBack - Set this to 1 if internal loop-back is to be performed (make sure this is deleted after running the test). When set to 0, a loop-back connector which ties pins 2 and
3 together is required at each port.
Note: The COMx driver does not support internal loop-back. The external loop-back is
the default mode.
Size - Sets the maximum frame size. The length of each frame transmitted is random
between 1 to Size-1. The default size is 512.
Start up CitectSCADA. Each port will transmit a frame of random length. This process
is repeated when the entire frame is received.
Open the kernel, type "page driver" and press Enter. Type V to set the display mode to
verbose. The following statistics appear:
Number of characters transmitted.
Number of frames transmitted.
Number of characters received.
Elapsed time in milliseconds.
Characters received per second.
Start time in milliseconds.
Total number of errors.
Error code of last detected error.
Note: The total number of errors should be 0. If the number of errors reported is not zero, your serial hardware is not operating properly.
Serial port loop-back cable
The diagram below shows the loop-back connections to use with RS-232.
223
The diagram below shows the loop-back connections to use with RS-422 or RS-485.
Performance Considerations
Many external factors influence the performance of control and monitoring systems. The
capabilities of the computer, the I/O Device(s), and the communication pathway between
them are obvious factors. The faster they can transfer data, the faster your system operates.
(CitectSCADA always attempts to maintain a data transfer rate as fast as the I/O Device
hardware can support.) The data transfer rate is hardware dependent: once you have installed the hardware, your ability to influence this characteristic is limited.
However, there is one area where you can directly affect the performance of your runtime
system: the arrangement of data registers in the I/O Device(s).
See Also
Caching data
Grouping registers
224
Caching data
On large networked systems with many clients, you can improve communications turnaround time by using memory caching.
When caching is enabled, all data that is read from an I/O Device is stored temporarily in
the memory of the I/O Server. If another request is made (from the same or another client)
for the same data within the cache time, the CitectSCADA I/O Server returns the value in
its memory, rather than rereading the I/O Device. Data caching results in faster overall response when the same data is required by many clients.
A cache time of 300 milliseconds is recommended. Avoid using long cache times (in excess
of 1000 milliseconds), as this may negatively impact the timely delivery of information to
the system.
Note: Do not use data caching for disk I/O devices as they implement a cache themselves.
How data caching works
Data caching prevents unnecessary rereads of I/O Device data within a short period of
time. Unnecessary reads can be generated when more than one client requests the I/O Server to read data from a PLC or similar I/O Device within a short (typically 300 ms) period of
time.
Normally, upon request from a client, an I/O Server reads status data from an I/O Device,
and passes it back to the requesting client.
If the server receives subsequent requests from other clients before the original data is returned to the first client, it optimizes the read by automatically sending the original data
back to all requesting clients. (Page General Blocked Reads shows this count).
If a client requests the same data immediately after the server returned the data to a client,
the server rereads the device unnecessarily.
Setting the data cache time to 300 ms (or similar) prevents identical repetitive reads within
that cached time frame. If further clients request the identical data from the same server up
to 300 ms after the server has sent that data to an earlier client, the cached data on the server
is sent immediately in response to the subsequent requests.
Note: Multiple clients dont have to be separate CitectSCADAs on a network. They may be
the alarms and trend clients in the same computer, so this optimization will affect even a
single node system.
CitectSCADA also uses read-ahead caching. When the data in the cache is getting old (close
to the cache time), the I/O Server will re-request it from the I/O Device. This optimizes read
speed for data that is about to be re-used (frequent). To give higher priority to other read
requests, the I/O Server requests this data only if the communication channel to the I/O Device is idle.
Keeping a persistent record of the data
To keep a persistent copy of cached device data, you can save the I/O Servers cache to disk.
For every [IOServer]SavePeriod, the data is saved to s, one for each cached device.
225
Saving the data to disk will, in most circumstances, allow you to shut down and restart the
I/O Server without having to contact each I/O Device again to get its current values. Instead, you can read the values from the devices persistence cache.
Note: When read-through caching is enabled for a remote or scheduled I/O Device, the persistence cache for that device is saved to disk when the active I/O Server disconnects from
the device. This occurs regardless of the value set in [IOServer]SavePeriod. You can enable
read-through caching by setting the parameter [Dial]ReadThroughCache.
See Also
Grouping registers
Grouping registers
When you configure a CitectSCADA system, you must define each variable (register address) that CitectSCADA will read when your system is running. When your runtime system is operating, CitectSCADA calculates the most efficient method of reading registers.
CitectSCADA optimizes communication based on the type of I/O Device and the register
addresses.
When CitectSCADA requests data from an I/O Device, the value of the register is not returned immediately; an overhead is incurred. This overhead (associated with protocol
headers, checksum, device latency, and so on) depends on the brand of I/O Device, and is
usually several times greater than the time required to read a single register. It is therefore
inefficient to read registers individually, and CitectSCADA usually reads a contiguous
block of registers. Because the overhead is only incurred once (when the initial request is
made), the overhead is shared across all registers in the block, increasing the overall efficiency of the data transfer.
However, reading a block of registers where only a small percentage of the block is actually
used is also inefficient. If the registers that your CitectSCADA system will read are scattered throughout the memory of your I/O Device, excessive communication will be required. CitectSCADA must either read many contiguous blocks (and discard the unused
registers), or read registers individually, degrading system performance. You can avoid
this by grouping the registers that CitectSCADA will read.
CitectSCADA continually reads all registers associated with alarms. (If an alarm condition
occurs, CitectSCADA can display the alarm immediately.) You should therefore group all
registers that indicate alarm conditions.
Registers associated with status displays (objects, trends, and so on) are only read as they
are required (that is, when the associated graphics page is displayed) and are appropriately
grouped according to the pages on which they are displayed.
Registers used for data logging are read at a frequency that you define. They are grouped
according to the frequency at which they are read.
The following table shows an ideal register grouping for a CitectSCADA system:
Digital Alarms
226
Analog alarms
While memory constraints and the existing PLC program might impose limitations, grouping registers into discrete blocks, even if they are not consecutive blocks, will improve system performance.
When designing your system, allow several spare registers at the end of each block for future enhancements.
See Also
Remapping variables in an I/O Device
227
You can also reassign one type of variable (for example, an integer) to another type of variable (for example, a digital variable).
To remap in CitectSCADA, first create the variables in your project as you would normally.
Then you can set up the remapping, specifying that any variable with an address in the desired range will be remapped. The I/O Server will redirect the addresses at runtime as per
the remapping instruction.
228
Note: Not all PLCs and/or CitectSCADA drivers support remapping. It is not recommend
unless necessary. Contact Citect Pty Ltd Support if you need to evaluate whether the PLC
and/or driver support remapping.
To remap a variable in CitectSCADA:
Open Project Editor.
Choose Communication | Remapping. The Remapping dialog box appears.
Option
Description
CitectSCADA variable
Length
Physical Variable
229
Remap Read
Remap Write
Comment
Remapping example
Using the CCM protocol with a GE 9030 PLC, the following remapping could be used to
optimize communication when reading some digital register values. This example is based
on the assumption that the PLC is set up correctly for remapping.
Variable tags database
The digital register values are defined as follows.
230
Motor_1_Running_Feedback
Data Type
Digital
Area1
Address
M1
Motor_1_Overload
Data Type
Digital
Area1
Address
M3
Motor_4_ Running_Feedback
Data Type
Digital
Area1
Address
M4
.
.
.
Variable Tag Name
Motor_4_ Running_Feedback
Data Type
Digital
Area1
Address
M16
Notice that the address M2 is not used. Skipping addresses does not affect performance.
Remapping database
The remapping is defined as follows.
CitectSCADA Variable
Area1|M1|
Length
16
Physical Variable
Area1|R10|
Remap Read
True
Remap Write
False
The physical variable is an integer data type; it does not need to be defined in the variable
tags database (but it can be).
In this case, reading individual bits within these larger data types is done by reading the
designated data type and getting the CitectSCADA driver to sub-divide it into individual
bits. Writing to bits within the larger data types is more complicated, as writing to one bit
within the larger data type will at the same time overwrite the other bits within that same
data type. To prevent overwriting existing bits when writing a new bit value, a read-modify-write scenario can be used to write to a bit within the larger data type. Using this approach, the CitectSCADA driver will read the larger data type, modify the appropriate bit
within the larger data type, and then write the larger data type back to the device.
While the read-modify-write approach is necessary to avoid overwriting existing bits in
the registers of larger data types, it can create an issue if the device being written to is also
configured or programmed to modify these same registers. For example, if a PLC device
modifies the registers of one of its larger data types after the CitectSCADA driver has read
these same registers, but before CitectSCADA has written the modified value, the changes
made by the PLC will be overwritten. This outcome can be avoided if CitectSCADA and
any devices using these data types are configured so that only one or the other has write
access at any given time.
This read-modify-write method has a serious operational concern: if the device modifies
the larger data type after the CitectSCADA driver has read it, but before CitectSCADA has
written the new value, any changes made by the device are overwritten. This issue could
be serious in a control system, and it is recommended that the device and CitectSCADA be
configured so that only one of these systems writes to the data types of this kind.
Consider the following example:
The initial state of a PLC register is 0x02h.
The CitectSCADA driver reads the value of this register (effectively making a copy) in
preparation for a change to bit 3.
However, before the driver writes its change back to the PLC, the PLC code changes the
value of bits 0 and 4 of this register to 0x13h.
The CitectSCADA driver then changes bit 3 of its copy of the register to 0x0Ah. When it
writes to the PLC, it overwrites the PLCs copy of the whole register (not just the
changed bit). Because the PLC code modified bits 0 and 4 in the interval between CitectSCADAs read and write, these changes are overwritten.
variable database to test whether it matches the current tag addresses. The parameter
TagAddressNoCase allows you to adjust the case-sensitivity of these checks.
In addition, CitectSCADA will also check if a project is currently running on the local machine when a compile is attempted, as this is one of the circumstances that may lead to mismatched index values.
If the project uses a tag-based driver and is currently in runtime, CitectSCADA will stop
the compiler and generate an error in the error database noting that Citect32.exe was still
running. The .ini parameter [General]CitectRunningCheck allows you to override this feature, however it is recommended that you leave it enabled so that your tag index values are
assigned as intended.
Another side effect of the delays inherent in asynchronous writes to I/O devices is that you
might assume that CitectSCADA has successfully written to the I/O Device, when in fact
233
the write operation might not yet have been completed or even attempted. In such cases, it
is still possible that a hardware- or configuration-based error will prevent the success of the
write operation. While such an unsuccessful write operation will generate an error, your
Cicode cannot be notified or use the IsError() function because the Cicode has continued
to execute past the initial I/O device write command. Therefore, when it is important to
check the success of a write operation before allowing code execution to continue, you
might insert the function TagRead() after the write and then verify the value of the variable.
TagRead() forces Cicode to re-read the I/O Device variable so that you can check the new
value. TagRead() is a blocking function. It blocks the calling Cicode task until the operation
is complete.
PLC_VAR = 1234;
sTestStr = TagRead("PLC_VAR");
IF sTestStr <> 1234 THEN
Prompt("Write not completed");
END
Here the data will be read from the physical PLC, not from the I/O Server cache, as the I/O
Server will invalidate any cached data associated with a PLC write. This will allow you to
test for a completed write. Please be aware that other Cicode tasks running at the same time
will not be waiting on the TagRead, so they might see the old or new value, depending on
if they are using the same copy of the PLC variable. You can also stop CitectSCADA from
writing to the local copy of the variable by using the function CodeSetMode(0, 0).
Makes calls to remote I/O Devices in response to a CitectSCADA request; for example, scheduled, event-based, operator request, and so
on. Also returns calls from remote I/O Devices.
Dial-in
Only receives calls from remote I/O Devices, identifies the caller,
then hangs up immediately so it can receive other calls. CitectSCADA
then returns the call using a dial-back or dial-out modem.
Dialback
Dial-in
and
dial-out
Dial-in
and
dialback
Your modem setup depends on your system requirements. When making your decision,
you should consider the following guidelines:
If you need to communicate with multiple remote I/O Devices at once, you will need a
separate modem for each I/O Device. Otherwise youll have to wait as I/O Devices are
contacted one after the other, and incoming calls may be held up.
If you have scheduled requests to I/O Devices and you also need to urgently return calls
from remote I/O Devices that dial in, you will need at least one modem for each of these
functions. For example, if you have a large number of remote I/O Devices and you require fast responses by CitectSCADA, you should provide an additional modem at the
I/O Server. This would reduce the chances of it being engaged when an I/O Device dials
in (say, with an urgent alarm).
In a big system with many remote I/O Devices or a system where calls from remote I/O
Devices can be time sensitive, its a good idea to dedicate at least one modem to DialBack. This will give you quick responses to Dial-In calls (from remote I/O Devices). It
also means your dial-out schedules wont be disrupted (if you use the same modem for
returning calls and scheduled calls, the scheduled calls are forced to wait until the dialback call is complete).
See Also
Modems at the I/O Device
Example configurations for modems at the I/O Server
235
arate port and modem must be used for each remote I/O Device with different
communication requirements.
When deciding how many modems to use, you should consider the following:
Once an I/O Device has been contacted, the connection can be retained for other I/O Devices in the group. If the I/O Server needs to request data from another I/O Device with
the same communication details, it will wait until the current request has been completed, then it will use the same connection to make the second request.
You can configure your modem to initiate telephone calls (call CitectSCADA), and/or
receive telephone calls. This is done independently of CitectSCADA.
Note: Wherever your modem is, you must verify that its Data bits, Parity, Stop bits, and
Serial Port Speed settings are compatible with the remote I/O Device as defined by the devices manufacturer or your communications link will not work.
See Also
Modems at the I/O Server
Modem
Name
Standard Modem
Max.
Speed
19200
Data Bits
8
Parity
E
Stop
Bits
1
You would then configure it in CitectSCADA as a dial-out modem and dial-in modem:
Modem Name
Standard Modem
Dial-out
TRUE
Dial-in
TRUE
Dial-back
FALSE
Example 2
In this example, your I/O Devices use a total of two different communication specifications
- 9600 7 O 1 and 19200 8 E 1.
You dont expect important calls from I/O Devices or you have only a few I/O Devices. This
means you can get by with a single modem at the I/O Server end. This modem has to receive and return calls from all I/O Devices as well as initiate calls (dial out) to all I/O Devices.
236
To configure your modem, you must first define it in Windows (through the Windows
Control Panel). Remember, youre not just defining the physical modem here. You have to
define a separate Windows (virtual) modem for each communication specification.
So far, this gives you two virtual modems - one for 9600 7 O 1 and one for 19200 8 E 1. However, Windows wont let you define both of these modems as dial-in. It only lets you define
one dial-in modem per port. If you choose the first, it wont be able to receive calls with the
second, and vice versa.
This means you have to set up a separate virtual modem that can answer calls no matter
which communication specification is used. This modem would be set with a generic communication specification of 9600 8 N 1.
So in Windows, youll end up with three logical modems (two for Dial-Out and one for
Dial-In). Assuming that the logical modems are called Standard Modem to Standard Modem #3, you would configure them as follows:
Port
Modem
Name
Max.
Speed
Data Bits
Parity
Stop
Bits
COM1
Standard Modem
9600
COM1
Standard Modem #2
19200
COM1
Standard Modem #3
9600
Dial-out
Dial-in
Dial-back
Standard Modem
TRUE
FALSE
FALSE
Standard Modem #2
TRUE
FALSE
FALSE
Standard Modem #3
FALSE
TRUE
FALSE
Example 3
In this example, there are five different communications frameworks - 9600 7 O 1, 19200 8
E 1, 4800 8 N 1, 9600 8 N 1, and 19200 8 N 1.
If you expect important calls from I/O Devices or you have many I/O Devices, you would
set up three modems at the I/O Server end:
One on COM3 dedicated to receiving calls from 9600 7 O 1 I/O Devices.
One on COM2 for dialling out to 4800 8 N 1, 9600 8 N 1, and 19200 8 N 1 I/O Devices.
One on COM1 for dialling out to 9600 7 O 1 and 19200 8 E 1 I/O Devices.
The two dial-out modems would return calls as well as initiate calls in response to scheduled requests, and so on.
To configure your modems, you must first define them in Windows (through the Windows
Control Panel). Remember, youre not just defining the physical modem here. You have to
define a separate Windows (virtual) modem for each communication framework.
Assuming that the logical modems are called Standard Modem to Standard Modem #6,
you would configure them as follows:
Port
Modem
Name
Max.
Speed
Data Bits
Parity
Stop
Bits
237
COM1
Standard Modem
9600
COM1
Standard Modem #2
19200
COM2
Standard Modem #3
4800
COM2
Standard Modem #4
9600
COM2
Standard Modem #5
19200
COM3
Standard Modem #6
9600
Dial-out
Dial-in
Dial-back
Standard Modem
TRUE
FALSE
FALSE
Standard Modem #2
TRUE
FALSE
FALSE
Standard Modem #3
TRUE
FALSE
FALSE
Standard Modem #4
TRUE
FALSE
FALSE
Standard Modem #5
TRUE
FALSE
FALSE
Standard Modem #6
FALSE
TRUE
FALSE
Example 4
In this example, your I/O Devices use three different communication frameworks: 9600 7 O
1, 19200 8 E 1, and 9600 8 N 1. However, in this example, you are expecting important calls
from I/O Devices, so you need a modem dedicated to returning calls.
Here you must configure your modems like this:
One modem on COM1 to dial all remote I/O Devices (for scheduled calls, and so on).
One modem on COM2 to receive calls from remote I/O Devices.
One dedicated modem on COM3 to return these calls.
To configure your modems, first define them in Windows (through the Windows Control
Panel). Remember, youre not just defining the physical modem here: you must define a
separate Windows (virtual) modem for each communication framework. This means you
have to configure:
Three logical modems on the port to which the physical dial-out modem is attached.
One logical modem on the port to which the physical dial-in modem is attached.
Three logical modems on the port to which the physical dial-back modem is attached.
Assuming that the required total of seven logical modems are called Standard Modem
through to Standard Modem #7, configure these modems as follows:
Port
238
Modem
Name
Max.
Speed
Data Bits
Parity
Stop
Bits
COM1
Standard Modem
9600
COM1
Standard Modem #2
19200
COM1
Standard Modem #3
9600
COM2
Standard Modem #4
9600
COM3
Standard Modem #5
9600
COM3
Standard Modem #6
19200
COM3
Standard Modem #7
9600
Dial-out
Dial-in
Dial-back
Standard Modem
TRUE
FALSE
FALSE
Standard Modem #2
TRUE
FALSE
FALSE
Standard Modem #3
TRUE
FALSE
FALSE
Standard Modem #4
FALSE
TRUE
FALSE
Standard Modem #5
FALSE
FALSE
TRUE
Standard Modem #6
FALSE
FALSE
TRUE
Standard Modem #7
FALSE
FALSE
TRUE
239
If you enter the 6th of December in the Repeat every field and start your project during November, the I/O Server will communicate with the I/O Device at 10 a.m. on
December 6, then again on December 6 of the following year, and so on.
Select On Startup for a persistent connection. To disconnect a persistent connection, call
the IODeviceControl() function with type 8.
Type in the phone number required for CitectSCADA to dial the remote modem attached to the remote I/O Device. Include any pre-dial numbers necessary to obtain a
connection to an outside PSTN line (dial tone) before dialing (for example, 0 (zero)) - if
appropriate.
On the next wizard page, if the device is configured to dial-in to CitectSCADA, create a
unique identifying caller name for the remote I/O Device so that it can be identified by
CitectSCADA.
Follow the instructions on the next page of the wizard and click Finish.
See Also
Configuring multidrop remote I/O Devices
240
If the modem is required to make calls to CitectSCADA, configure it to initiate the phone
call to a pre-determined CitectSCADA I/O Server Dial-In type modem (following manufacturer instructions).
Depending on your hardware either the modem or an intelligent PLC can be responsible for initiating calls to CitectSCADA and identifying the caller. Whichever is responsible must have a caller ID set. The caller ID can be any combination of alpha-numeric
characters and/or the character _ (underscore).
Some modems have dip-switch settings, and some have initiation strings which can include auto-dial-up numbers that are stored within the modems non-volatile memory.
Consult the manual provided with the modem for exact details.
You can use either the Express Communications Wizard or the I/O Devices form to set
the caller ID for an I/O Device.
If multi-dropping off a single modem, use your I/O Devices to issue the caller ID, not
the modem. This is because using the modem to issue the ID will send the same ID no
matter which I/O Device the call is relevant to, making it difficult to identify which I/O
Device triggered the call.
By using the I/O Device to issue the ID, the I/O Server will receive a unique caller ID for
each I/O Device. However, not all I/O Devices are capable of issuing caller IDs. If you
are multi-dropping, you should use I/O Devices that can issue caller IDs.
Set the modems Data bits, Parity, Stop bits, and Serial-Rate to match manufacturer
specifications for communication with the I/O Devices.
Some modems do not allow you to manipulate their communications settings via methods such as extended AT commands or dip switches. If this is the case, the only way of
setting the required values is to communicate with the modem using the values (for example, via HyperTerminal). Once this is done, the modem remembers the last values
used to communicate with its serial port.
Connect the modem to the I/O Devices.
To configure a modem at the I/O Server you must set it up in Windows and then set it up
in CitectSCADA.
If all of your I/O Devices are the same, you only have to do this once for each modem. However, if your I/O Devices talk using different communication specifications (data bits, parity, stop bits, and serial-rate), your modem has to be able to talk using each of these details
as well. To set this up, you have to create a modem in Windows and CitectSCADA for each
specification. (See Example configurations for modems at the I/O Server)
To set up a modem in Windows
Each modem connected to a CitectSCADA I/O Server PC must FIRST be configured
within Windows using Start | Settings | Control Panel | Phone and Modem Options.
Select the Modems tab, and click Add to launch the Install New Modem wizard.
Check the box labelled Dont detect my modem; I will select it from a list, then click
Next.
Select Standard Modem Types in the list of manufacturers.
Note: Do not select a brand name modem from the Manufacturers list, even if the name
of the modem youre installing is included in the list. Do not click Have Disk.
Select the Standard xxxx bps modem rate from the list of models to exactly match the
bit per second rate of the I/O Device that is going to be communicating via this modem.
Check the device to determine the device communication rate. If you are still unsure,
select the 9600 bps model. This can be changed later if required.
Do not click Have Disk. Click Next.
241
Select the COMx Port that the modem is connected to. Click Next.
Click Finish. Windows displays the modem in the list of modems on the Modems Properties form.
Note that no option was given for the selection and setting of the Data bits, Parity, or
Stop bits information. The Modems wizard automatically defaults to 8-none-1 for all
Standard Modem types. To change these settings to match the Data bits, Parity, Stop bits
requirements of the remote I/O Device, select a modem in the list, then click the Properties button.
Click the Advanced tab and click Change Default Preferences.
Click the Advanced tab at the next dialog to gain access to the Data bits, Parity, Stop bits
settings for the modem.
Change the Data bits, Parity, and Stop bits settings using the drop-down options, so that
they exactly match those being used by the remote I/O Device and its remote modem.
Dont change any advanced settings. (The default is Hardware flow control.)
Click OK. If a modem of the same rate is installed to the same port as an existing modem, Windows asks for confirmation that you want to install the same thing more than
once. Click Yes to install a duplicate copy of the modem.
Preconfigure the modem(s) to be used at the remote dial-up I/O Device(s). These will be
used to test modem configuration settings in the next step.
With CitectSCADA not running, confirm that the local and remote modems will properly communicate with each other by using a terminal communications program such
HyperTerminal or PhoneDialer (both supplied with Windows).
Once the modem(s) are set up and tested with proven communications in Windows, they
can then be set up in CitectSCADA.
To set up a modem in CitectSCADA:
Before completing this procedure, verify that you have set up your modem in Windows (as
described above).
Open the Citect Project Editor.
Select Communications | I/O Server and scroll to the I/O Server the modem is attached
to.
Select Communications | Modems. The Modem Properties dialog will appear.
Option
Description
The name of the modem you are configuring (as it appears in the Windows
Control Panel | Phone and Modem Options).
Comment (48
Chars.)
242
The following fields are implemented with extended forms (press F2).
Use this modem to call
back I/O Devices
If you set the ring count to 3 on IOServer1 and 4 on IOServer2, IODev_1 will attempt to call
IOServer1. If IOServer1 has not answered the call after 3 rings, IOServer2 will answer it.
See Also
Troubleshooting dial-up remote I/O Device communications
Following is a list of settings that might be helpful in resolving dial-up communications interruptions. (Since not all modems support the same in commands in the same way, this is
only a guide. Consult the modem manual for exact details.)
On the modem at the PC end
ATV1 //Enables long-form (verbose) result codes
ATQ0 //Result codes are sent on the RS-232 connection
ATE0 //Commands sent from the computer are not echoed back to the RS-232 connection
AT&C1 //DCD will follow carrier on the line
AT&K0 //Handshaking OFF
ATW0 //Upon connection, only DTE speed is reported
AT%C0 //Compression OFF
AT&D0 //DTR always on
If the modem at the PC end is configured so that calls are automatically answered even
when your CitectSCADA project is off, data being reported from the I/O devices may be
lost. Therefore, it is recommended that you turn off the PC modems auto-answer feature
before taking your project offline. To do this, set the following parameter to zero:
ATS0 = 0 // Auto answer OFF
Be aware, however, this will also impact applications that might use the modem other than
CitectSCADA, as the modem cannot answer a call while CitectSCADA is not driving its
functionality.
On the modem at the I/O Device end
ATV0 //Enables short-form result codes
ATQ1 //No result codes are sent on the
ATE0 //Commands that are sent from the
back to the RS-232 connection
AT&C1 //DCD will follow carrier on the
AT&K0 //Handshaking OFF
ATW0 //Upon connection, only DTE speed
AT%C0 //Compression OFF
AT&D0 //DTR always on
ATS0 //Set to greater than 0 (sets the
answers an incoming call).
RS-232 connection
computer are not echoed
line
is reported
Scheduled Communications
CitectSCADA allows you to schedule communications with your I/O Devices (regardless
of the type of connection: modem, radio link, etc.). For example, if you have multiple I/O
Devices on a single network or line, you can schedule reads so that the important I/O Devices are read more often than less important I/O Devices. Alternatively, a water supplier
with radio link connections to dam level monitors might schedule hourly level reads from
CitectSCADA in order to conserve band-width.
244
See Also
Specifying a schedule
Writing to the scheduled I/O Device
Reading from the scheduled I/O Device
Specifying a schedule
To configure scheduled communications with an I/O Device, you must flag it as a "Scheduled" device. This is done using the Express Communications Wizard. If your I/O Device
is not capable of scheduled communications, the scheduling options will not be presented
by the wizard.
Note: Scheduled communications will not work for drivers that are designed to handle Report-By-Exception protocols. For communicating with your I/O Device outside of schedule
use the IODeviceControl function.
To schedule communications with an I/O Device:
Select the Project Editor (or press the Project Editor icon).
Choose Communication | Express Wizard or open Citect Explorer.
Double-click the Express I/O Device Setup icon in the Communications folder of the
current project.
Follow the instructions to work through the screens, selecting the relevant I/O Device,
and so on. When the scheduling screen displays, check the Connect I/O Device to PSTN
box, even if your I/O Device is not connected via a modem (but leave the Phone number
to dial and Caller ID fields blank).
Fill out the schedule fields to achieve the desired schedule. For example (all based on a
Synchronize at time of 10:00:00).
If you enter 12:00:00 in the Repeat every field, and start your project at 9 a.m., the I/O Server will communicate with the I/O Device at 10 a.m., then once every 12 hours after that, i.e.
10 p.m., then again at 10 a.m. of the following day, etc.
If you enter 12:00:00, and start your project at 4 p.m., the I/O Server will communicate with the I/O Server at 10 p.m., then again at 10 a.m. of the following day, etc. i.e.
it will assume that communications were established at 10 a.m., so it continues as if
they had been, communicating once every 12 hours after 10 a.m.
If you enter 3 days, and start your project at 9 a.m. on a Wednesday, the I/O Server
will communicate with the I/O Device at 10 a.m., then once every 3 days after that,
i.e. 10 a.m. on the following Saturday, then at 10 a.m. on the following Tuesday, etc.
If you enter the 6th of December in the Repeat every, and start your project during
November, the I/O Server will communicate with the I/O Device at 10 a.m. on December 6, then again on December 6 of the following year, and so on.
Select On Startup for a persistent connection. To disconnect a persistent connection,
you must call the IODeviceControl() function with type 8.
If your I/O Device is not connected via a modem, you must go to the Ports form (select
Ports from the Communication menu) and change the Port number to the actual number of the COM port.
See Also
Writing to the scheduled I/O Device
245
246
WHILE TRUE DO
Sleep(2);
IODeviceControl(sDevice, 16, 0);
END
END
END
// Kill the read task and terminate the connection.
FUNCTION
HangupDevice(STRING sDevice)
TaskKill(hTask);
IODeviceControl(sDevice, 8, 0);
END
You can also force the I/O Server to read data directly from an I/O Device by enabling ReadThrough Caching. With [Dial]ReadThroughCache set, while the I/O Server is connected to a
device it will supply data to requesting clients directly from the device. The cache is not updated during this time, but is refreshed with the most recent device data just before the
server disconnects.
Note: If using modems, you might need to adjust or deactivate the inactivity timer in your
modems to stop them from disconnecting while no data is being read. The inactivity timer
is controlled by the S30 register. If your modem doesnt support this register, please consult
your modems manual.
Avoiding unnecessary multiple reads of I/O Device data
To avoid unnecessary reads of an I/O Device, you can use data caching to temporarily store
data read from the device in the memory of the I/O Server. This means that if the I/O Server
receives more than one request for device data in a short time period, instead of contacting
the I/O Device a second time and reading identical data, it can retrieve the data from the
cache.
247
248
Tag Naming
CitectSCADA puts a couple of restrictions on the names of variable tags:
Tags are restricted to using a specific syntax. See Tag name syntax.
Tags should not have the same name as Cicode functions within the project or within
any included projects. An error will result during compilation if a tag has the same
name as a Cicode function and is placed on a graphic page.
In addition, using a tag naming convention will make your project easier and faster to design, configure, commission, and maintain. See Using structured tag names for recommendations about naming conventions.
249
That is, the tag name must begin with either an alpha character (A-Z or a-z) or the underscore character (_). Any following characters must be either alpha characters (A-Z or a-z),
digit characters (0 - 9), backslash characters (\), or underscore characters (_). The use of any
other characters will result in a compiler error.
For example, _MyTag123 and my\New\Tag are both valid tag names, whereas
\NewTag\ is invalid.
Tag names that begin with a numeric character, such as 12TagName, are only valid if the
INI parameter [General]TagStartDigit is set to 1 (the default value is zero).
Note: The name of an Alarm Tag must follow this syntax but the Alarm Name does not.
Area
The Area section identifies a plant area, number, or name. If you use a prefix that identifies
tags within a particular area, you can easily duplicate all CitectSCADA functions within the
area. For example, if you have three boilers with the same controls on each boiler, you can
configure the tags for boiler number one, and copy the tags to boilers two and three. You
then only need to change the area section in the tag names to the area of the second and
third boiler. The remainder of the tags remain unchanged, for example:
Boiler 1
B1_TIC_101_PV
Boiler 2
B2_TIC_101_PV
Boiler 3
B3_TIC_101_PV
If you do not need this facility, you can omit the Area section of the Tag Name to reduce
the number of characters in the tag.
Type
The Type section identifies the Type of parameter, process equipment, or control hardware. The ISA standard naming system is recommended.
Variable Tag
250
Meaning
B1_TIC_101_PV
B1_FIC_101_PV
B1_PUMP_101_PV
Pump
B1_VALVE_101_PV
Valve
Occurrence
The Occurrence section identifies the loop number.
Variable Tag
Meaning
B1_TIC_101_PV
B1_TIC_102_PV
B1_PUMP_101_PV
Pump 101
B1_PUMP_102_PV
Pump 102
Attribute
The Attribute section identifies the attribute or particular parameter that is associated with
the loop.
Variable Tag
Meaning
B1_TIC_101_PV
Process Variable
B1_TIC_101_SP
Setpoint
B1_TIC_101_OP
Output
B1_TIC_101_P
B1_TIC_101_I
Integral
B1_PUMP_101_CMD
B1_PUMP_101_M
Auto/Manual mode
B1_TIC_101_V
Value (running/stopped)
Recommended Attributes
Genies and Super Genies supplied with CitectSCADA use the following attribute convention. If you follow this convention, you can use the Genies without having to modify them.
Mnemonic
Data
Type
Range
_CMD
Digital
0 = Off, 1 =
On
_M
Control Mode
Digital
0=Man,
1=Auto
_V
Value
Digital
0=Off,
1=On
_FAIL
Device Failure
Digital
1=OK,
0=Failed
FAULT
Device Fault
Digital
1=OK,
0=Fault
Mnemonic
Process Alarms
Data Type
Range
_ALM
General Alarm
Digital
0=Active, 1=InActive
_HHALM
Digital
0=Active, 1=InActive
_HALM
High Alarm
Digital
0=Active, 1=InActive
_LALM
Low Alarm
Digital
0=Active, 1=InActive
251
_LLAM
Digital
0=Active, 1=InActive
_DALM
Deviation Alarm
Digital
0=Active, 1=InActive
_DLALM
Digital
0=Active, 1=InActive
_DHALM
Digital
0=Active, 1=InActive
_HHTRIP
Analog
_HTRIP
Analog
_LTRIP
Analog
_LLTRIP
Analog
_DTRIP
Analog
_LDTRIP
Analog
_HDTRIP
Analog
_HHhyst
Analog
_Hhyst
Analog
_Lhyst
Analog
_LLhyst
Analog
_LDhyst
Analog
_HDhyst
Analog
Mnemonic
252
Data
Type
Range
_PV
Process Variable
Analog
_SP
Setpoint
Analog
_RSP
Remote Setpoint
Analog
_OP
Output
Analog
_OPM
Output Mode
Digital
0=Manual, 1=Auto
_SPM
Setpoint Mode
Digital
0=Local, 1=Remote
_P
Analog
_I
Integral (Reset)
Analog
_D
Derivative (Rate/Preact)
Analog
_KP
Gain Modifier
Analog
_KI
Integral Modifier
Analog
_KD
Derivative Modifier
Analog
_SPTK
Digital
0=OFF, 1=Track
0=OFF, 1=Track
_OPTK
Digital
_SPB
Setpoint Bias
Analog
_SPR
Setpoint Ratio
Analog
_DEV
Deviation
_TOT
Totalizer Value
Analog
_COUNT
Counter Value
Analog
_CRESET
Digital
_CLIMIT
Analog
_TIME
Timer Value
Analog
_TRESET
Digital
_EXP
Timer Expired
Digital
_TLIMIT
Timer Limit
Analog
_CALC1
Calculation Result 1
Analog
_LINZ1
Linearized Signal 1
Analog
_Q
Digital
0=Counting,
1=Reset
0=Timing, 1=Reset
1=OK, 0=BAD
Note: To keep the tag names shorter you can omit the underscore, but you would sacrifice
readability; for example: B1TIC101PV instead of B1_TIC_101_PV.
253
Local variables are useful when you need each process to have a separate copy of the data.
Each process has its own copy of each local variable configured in the project, and the values in a local variable are available only to the process that wrote them.
To configure a local variable:
In Project Editor, select Tags | Local Variables. The Local Variables dialog displays.
In the Name field, enter a name for the local variable (maximum 79 characters). Variable
names cannot include the -, /, % or <space> characters.
In the Data Type field (16 characters), select one of the following supported data types:
Data Type
BCD
Variable
Binary- Coded Decimal
Size
Allowed Values
2 bytes
0 to 9,999
BYTE
Byte
1 byte
0 to 255
DIGITAL
Digital
1 bit or 1 byte
0 or 1
INT
Integer
2 bytes
-32,768 to 32,767
UINT
Unsigned Integer
2 bytes
0 to 65,535
LONG
Long Integer
4 bytes
LONGBCD
4 bytes
0 to 99,999,999
REAL
Floating Point
4 bytes
-3.4E38 to 3.4E38
STRING
String
-2,147,483,648 to
2,147,483,647
Numeric and digital variables have a default value of 0 and string variables default to ""
(empty string). If you do not specify a data type, the local variable will be treated as 16-bit
integer.
In the Array Size field (8 characters), enter the size of the array (number of elements)
used to store the local variable. The array will be of the data type specified in the Data
Type field. The array can be one or two-dimensional. The maximum number of elements is 32766, which, for a two dimensional array, means that the size of the first dimension multiplied by the size of the second is less than or equal to 32766. When
specifying a multi-dimensional array, separate the dimensions with a comma, for example "20,30"."
In the Zero Scale field (11 characters), enter the value of the local variable that represents the zero point for the data. The zero scale value is used as the lower limit for trend
and bar graphs, and values below the zero scale value will cause an "Out of Range" alert
message in the runtime system.
In the Full Scale field (11 characters), enter the value of the local variable that represents
the full scale point of the data. The full scale value is used as the upper limit for trend
and bar graphs, and values above the full scale value will cause an "Out of Range" alert
message in the runtime system.
In the EngUnit field, enter the engineering units that the value represents (for example
%, deg, mm/sec, etc.). Maximum 8 characters. This property is optional. If you do not
specify engineering units, no engineering units are used.
In the Format field, Enter the display format of the value (of the variable) when it is displayed on a graphics page, written to a file, or passed to a function (that expects a
string). This property is optional. If you do not specify a format, the format defaults to
####.#. Maximum 11 characters.
254
In the Comment field, enter any useful comment (maximum 48 characters). This property is optional and is not used at runtime.
Click Add.
See Also
Configuring Variable Tags
You can use any name for a tag (79 characters) provided it follows the Tag name syntax and
isnt the same as the name of a Cicode function within the project or any included projects.
If you have many tags, use a naming convention (see Using structured tag names). This
makes it easier to find and debug your tags.
If you are using distributed servers, the name must be unique to the cluster (for example,
you cannot have the same variable tag name in more than one cluster).
Cluster Name
The name of the cluster to which the tag applies (16 characters). Select a cluster name from
the list of available clusters as defined under Cluster Definitions.
Data Type
The type of I/O Device variable (16 characters). I/O Devices support several data types that
are used to exchange data with CitectSCADA. Because of the lack of an industry standard,
most I/O Device manufacturers use individual naming conventions for their I/O Device
variables. However, all variables correspond to one of the following data types:
Data Type
Variable
Size
Allowed Values
BCD
2 bytes
0 to 9,999
BYTE
Byte
1 byte
0 to 255
DIGITAL
Digital
1 bit or 1 byte
0 or 1
INT
Integer
2 bytes
-32,768 to 32,767
UINT
Unsigned Integer
2 bytes
0 to 65,535
LONG
Long Integer
4 bytes
-2,147,483,648 to
2,147,483,647
ULONG
4 bytes
0 to 4,294,967,295
LONGBCD
4 bytes
0 to 99,999,999
4 bytes
-3.4E38 to 3.4E38
REAL
Floating Point
STRING
String
Note: If you do not specify a range for your tag, then an out of range alert message will be
generated if you write a value which is outside the range of the type.
You must specify the correct data type that corresponds to the data type of the I/O Device
variable you are configuring. Each data type has a unique address format. You must use
this format when you are specifying the address of the variable (as the Address property).
You will want to verify that you only use data types that are valid for your I/O Device. If
you do not specify a data type, the variable will be treated as 16-bit integer.
CitectSCADA supports concatenation of I/O Device registers. For example, you can define
a real data type (in CitectSCADA) as two contiguous int data types (in the I/O Device). CitectSCADA reads across the boundary of the two ints and returns a real.
If you use concatenation of registers, the address of the variables must be on all odd boundaries or all even boundaries. You cannot mix address boundaries. For example, V1, V3, V5
are valid addresses.
256
Be careful when using this feature: the I/O Device must maintain the integrity of the second
register. (If the I/O Device writes to the second int, the value of the real could be corrupted.)
The structure of some I/O Devices might not support this feature, and might therefore behave unpredictably.
String variables
While numeric variables are more common, some I/O Devices also support ASCII strings.
You can use strings to store text data (for example, from a bar code reader).
All strings must be NULL-terminated in the I/O Device. CitectSCADA uses the NULL character to check for the end of a string, and if no NULL character is present, CitectSCADA
reads (and displays) any extra characters in memory, after the end of the string.
When you are using a disk I/O Device, you can also specify a string data type for storage of
recipes, or for operator display information.
Not all I/O Devices support strings. However, if your I/O Device does support integer data
types, CitectSCADA can use these integer registers to store ASCII strings in your I/O Device. CitectSCADA strings can only be stored in contiguous blocks (consecutive registers),
and are stored as an array.
To display the data types for an I/O Device, double-click the I/O Devices book from the
Help, select your I/O Device from the list, and then select the Data Types topic.
I/O Device Name
The name of the I/O Device where the variable is stored (31 characters). If using I/O Device
redundancy, you must specify the primary I/O Device name here, not the standby.
Address
The register address in the I/O Device where the variable is stored (254 characters). The format and prefix of an address will depend on the protocol configured for the I/O Device,
which can be determined by checking the Protocol field on the I/O Devices form in Project
Editor.
Raw Zero Scale / Raw Full Scale
The unscaled (raw) values (of the variable) that represent the zero point and full scale point
for the data (11 characters). The raw values are the values that CitectSCADA reads from the
I/O Device.
Eng Zero Scale / Eng Full Scale
The scaled values that CitectSCADA calculates from the raw values (11 characters). The
Raw Zero Scale is scaled to the Eng Zero Scale and the Raw Full Scale is scaled to the Eng
Full Scale. These properties are represented in engineering units and are used as the upper
and lower limits of trends and bar graphs.
Most I/O Devices return an integer to indicate the value of an analog input. To return a usable value, the I/O Device converts an input signal (usually 4-20 mA) to a raw scale variable, usually (but not always) in the range 6400 to 32000.
To present this variable as a meaningful value, you can specify a scaling calculation. CitectSCADA then scales all values accordingly, as in the following diagram.
257
The scaled value of the variable (engineering value), not its raw value, is used throughout
the system.
The scaling properties are optional. If you do not specify scaling, Eng Zero Scale defaults
to Raw Zero Scale, and Eng Full Scale defaults to Raw Full Scale; that is, no scaling occurs.
A value that is below the specified Raw Zero Scale or above the specified Raw Full Scale
causes an "Out of Range" alert message in your runtime system.
Eng Units
(8 characters.) The engineering units that the value represents (for example %, deg, mm/sec,
etc.). This property is optional. If you do not specify engineering units, no engineering units
are used.
Format
(11 characters). The display format of the value (of the variable) when it is displayed on a
graphics page, written to a file, or passed to a function (that expects a string). This property
is optional. If you do not specify a format, the format defaults to ####.#.
Deadband
(11 characters). The deadband is the percentage of the variable tags engineering range that
a tag must be change by in order for an update to be sent through the system. Default value
is 0.
For example, if there is a variable tag with an engineering zero of 0 and an engineering full
scale of 10000, using a deadband set to 1%. If the current value of the tag is 5600, the value
of the tag in the PLC must change to a value above 5700 or below 5500 before an update
will be sent through the system.
Comment
Any useful comment (48 characters).
Linked
The Linked field in the status line of the Variable Tags form reads either Yes or No and indicates whether or not the variable tag is linked to an external data source. When you program an I/O Device using software other than CitectSCADA, an external data source is
used to store tag data. Linked variable tags are updated whenever external tag data changes, meaning you do not need to enter the information again in CitectSCADA.
258
Description
Function
Zero
Padding
Minus
Justification
Period
Decimal notation
EU
Engineering units
Exponential notation
259
Changing justification
By default, numeric variables are right-justified (within their field). You can change the default justification by using a minus (-) sign as the second character in the format string, for
example:
Format: #-###
This format string displays:
Using arrays
An array is a collection of variables (all of the same data type) that are stored in consecutive
memory registers in your I/O Device. Numeric arrays are useful when you have separate
devices (or processes) performing similar functions. You can program the I/O Device to
store, in consecutive memory registers, variables that relate to each of these processes, for
example:
261
Here, five consecutive variables (V500, V501, V502, V503, and V504) store the conveyor
speed of five conveyors (1 to 5). Instead of configuring five separate variable tags (one for
each conveyor), you can configure a single tag, as an array.
To specify a single variable tag for an array, define the first address and add the size of the
array (the number of consecutive addresses) to the register address, for example:
Variable Tag Name
Conveyor_Speed
Address
V500[5]
Here, five register addresses are referred to by the variable tag Conveyor_Speed.
Referring to array elements
Each element of an array is referred to by an index. You can extract individual variables
(from the array) by specifying the tag name and index:
<Tag Name>[Index]
For example, to refer to the third variable of the array in the above example (Conveyor 3),
use the following syntax:
Variable Tag
Conveyor_Speed[2]
The index of the first element of an array is always 0 (zero). In this example,
Conveyor_Speed[0] is the first element of the array (Conveyor 1), and Conveyor_Speed[4]
is the last element (Conveyor 5).
Note the following when using arrays:
Do not define large arrays, because each time an array element is requested, CitectSCADA reads the entire array from the I/O Device. With large arrays, system performance
could be reduced.
The size of the array must be less than the maximum request length of the protocol. The
I/O Device description help topic (for your I/O Device) displays the maximum request
length of the protocol.
You should declare all digital arrays on a 16 bit boundary. CitectSCADA rounds each
digital array down to the nearest 16 bit boundary. Consequently, all elements in the array are changed. For example, if you declare an array Test to start at bit 35, and CitectSCADA starts the array at bit 32. The index to the array also starts at bit 32; Test[0]
refers to bit 32, not bit 35.
String arrays
If you are using a CitectSCADA string data type, you must specify an array of integer data
types. One int register stores two string characters.
To calculate the size of an array (for string data types), use the following formula:
The last element of the array is always used to store the null character \0. This character
marks the end of the string.
262
To store the word "Recipe", you must specify an array with 4 elements, for example:
Variable Tag Name
Recipe_Tag
Address
V500[4]
You can then refer to the entire string by specifying the tag:
<Tag Name>
For example:
Variable Tag
Recipe_Tag
To store the word "Recipes", you would also specify an array with 4 elements. The characters are stored as follows:
Note: If your I/O Device supports string data types, you must specify the address in the format determined by the I/O Device you are using.
See Also
Using structured tag names
263
264
Linking tags
Linking is an I/O Device specific operation. When you add an I/O Device record in CitectSCADA (using the Express Communications Wizard), you can choose to link it to an external data source. The external data source is where all the tag data was saved when the
actual I/O Device was programmed. If you link to the external data source, CitectSCADA
automatically creates variable tag records for every tag in the I/O Device.
These variable tag records are dynamically linked to the tags in the external data source.
CitectSCADA is updated whenever one of the external tags is changed. For example, you
might program your I/O Devices, configure your project, then add some new tags or edit
existing tags. In this situation, CitectSCADA is automatically updated with your changes.
This update occurs when you attempt to read the changed tags in CitectSCADA (for example you compile your project, display the tag using the Variable Tags dialog box, modify or
paste the tag, or perform a manual refresh, etc.). For example, if you change the address of
a tag using a third party I/O Device programming package, the external data source is
changed. Then, when you display the variable tag record or compile your project in CitectSCADA, the change is copied from the external database to CitectSCADAs variable tags
database.
You can tell if a tag is linked because the status line at the bottom of the Variable Tags form
will read Linked: Yes. If it is linked and you change a field, your change will not be over265
written when the link is next refreshed. Generally, however, any field which takes its value
from the external data source is disabled.
Note: Some properties defined for the external tags will not be relevant to CitectSCADA.
Also, some will not be in a format that CitectSCADA can read. Each I/O Device has an associated format file in CitectSCADA. It is this file that determines what information is copied to CitectSCADAs variable tags database and how this information is to be converted.
In most cases, you will not have to edit this file.
Note the following for Citect tags linked to Unity tags:
The addition of a new tag on either side, will result in the addition of a new tag on the
other side.
The deletion of an existing tag on either side, will result in the deletion of the corresponding tag on the other side.
The modification of an existing tag on either side, will result in the modification of the
corresponding tag on the other side.
The delete operation in either Unity or Citect will take precedence over other operations
(such as modify).
If there is some contention between the Unity database and the Citect database for the
same tag, that is modifications are done from both databases at the same time, the Unity
database item will take precedence over the Citect database item.
The linked I/O Device live update synchronization will be triggered in the following
cases:
Unity configuration update.
Citect configuration update.
Manual refresh.
See Linked Tags for information about levels of support between Unity and CitectSCADA.
Importing tags
Importing tags from an external data source lets you halve your data entry time. Instead of
entering all your tag information once when you program your I/O Device and once when
you configure your project, you can program your I/O Device, then import the tags straight
into CitectSCADA, where they are treated as regular tags. (CitectSCADA automatically
creates variable tag records for every tag in the I/O Device.)
Note:CitectSCADA only supports the use of alphanumeric characters, the backslash and
underscore characters (see Tag name syntax). Any other characters will be converted to underscores on import. This may result in Duplicate Tag errors on compilation.
Like linking, the importing of tags is an I/O Device specific operation: you import all the
tags for a particular I/O Device. Unlike linking, however, imported tag records are not
linked in any way to the tags in the external data source. Therefore, importing is typically
a one-time operation. To update imported tags, you must import them again.
Note: Tags will be imported into the project in which the selected I/O Device is defined.
This could be either the project selected in the Explorer, or in one of its included projects.
For most external data sources, the import process involves two steps. First you export the
data from the I/O Device to a format that CitectSCADA can read, then you import the database into CitectSCADA. However, tag data saved using Mitsubishi or Unity FastLinx can
be read directly by CitectSCADA. This means that no export is required.
Some characteristics of the import are defined in the format files in the Config directory
(with the extension .fmt). There is one format file for each database type, and each file specifies how external data is converted to CitectSCADA variable data. In general, imported
tags are either added to the CitectSCADA variable database if the tag does not already exist, or updated if the tag exists. However, if a field is listed in the [EditableFields] section
of the format file corresponding to the import database type:
If the tag already exists, the CitectSCADA field for the tag will not
be updated with the external value.
267
If the tag does not yet exist, the CitectSCADA field for the tag will be
updated with the external value.
For example, if a tag has 10 fields to be imported and 5 of them are listed in the [EditableFields] section of the format file, then if the tag already exists in CitectSCADA the tag will
be updated with the external values for the 5 fields that are listed in [EditableFields]. If the
tag does not already exist then the tag will be created with the external values for all 10
fields.
Fields marked as editable in this way can be changed by CitectSCADA. To prevent internal
changes being lost, changes to these fields in the external database are ignored.
Note: If the external database supports to LiveUpdate and the LiveUpdate Link has been
selected for the I/O Device, existing CitectSCADA tags will be synchronized with the external database and the tags will be updated for the imported fields regardless of whether it
is marked as an editable field. An I/O Device configured as Linked or Auto-refreshed
Linked will behave as in a normal import and will not update fields marked as editable.
When you import tags into CitectSCADA, you have two options for dealing with existing
tags:
Delete all tags associated with that I/O Device prior to the import.
Update existing tags on import. Tags found in CitectSCADA and in the external data
source are updated in CitectSCADA. Tags found in CitectSCADA but not in the external
data source will remain untouched. All new tags are appended.
If you import a data source that is already linked, all of the tags in the data source are duplicated. That is, you will have two copies of each tag: one local and one linked.
See Imported Tags for information about levels of support between Unity and CitectSCADA.
Some properties defined for the external tags will not be relevant to CitectSCADA. Also,
some will not be in a format that CitectSCADA can read. To define what information is copied to CitectSCADAs variable tags database and how this information is to be converted,
you must edit the I/O Devices format file.
To import variable tags from an external database:
Open Citect Explorer.
Choose Tools | Import Tags.
Complete the Import Variable Tags dialog box as required.
See Also
Import variable tags properties
Note: Tags will be imported into the project in which the selected I/O Device is defined.
This could be either the project selected in the Explorer, or in one of its included projects.
Database type
The format of the data referenced by the external data source.
External database (128 Chars.)
References the source for the external database. Click the Browse button to either navigate
to the file or to specify configuration options. The external database can be:
An explicit path and file (for example, C:\Data\Tags.csv)
An IP address and node (for example, 127.0.0.1\HMI_Scada)
A URL (for example http://www.abicom.com.au/main/scada)
A computer name (for example \\coms\data\scada)
Tag data can be read directly from a Unity or Mitsubishi Fastlinx datasources. Click the
browse button to specify configuration options. See FastLinx for Mitsubishi Tag Import, or
Unity Link Tag Import.
Connection string (128 Chars.)
Connection details for the data source. This is similar to an ODBC connection string. For
example:
UserID = XXX; Password = YYY
or
ServerNode=111.2.3.44; Branch=XXX
**
<
<=
>=
<>
>
ACTION
AND
ANY_NUM
ARRAY
BOOL
CASE
CONFIGURATION
CONSTANT
DATE
DATE
DINT
DO
DUT
DWORD
ELSE
EN
END_CASE
END_CONFIGURATION
END_FOR
END_IF
END_VAR
END_WHILE
ENO
EXIT
FALSE
FOR
FUNCTION
IF
INT
INT
MOD
NOT
OF
OR
PROGRAM
REAL
REPEAT
STRING
STRING
TASK
TIME
TIME
TO
TRUE
TRUE
UNTIL
VAR_EXTERNA
VAR_GLOBAL
VAR_IN_OUT
VAR_INPUT
VAR_OUTPUT
WHILE
WORD
XOR
END_PROGRA
M
Cicode function names. See Functions Reference for a complete list of Cicode functions.
Using reserved words or Cicode function names may cause a syntax error in Mitsubishi
FastLinx when you export tags to the FastLinx tag name database.
See Also
FastLinx for Mitsubishi Tag Import
Unity FilePath of the Unity project file from which you want to import the tags. If the database type is Unity FastLinx Dynamic, this is a *.stu file. If the database type is Unity
FastLinx Static, this is a *.xsy file.
Unity Profile EnableEnable this if the Unity database is restricted by user profile and a user
name and password combination are needed to gain access. See the Access Security Management section of the Unity Pro online help for further information.
Unity Username and PasswordThe username and password, if it is required, for the Unity
database from which you are importing.
DCOM EnableEnable this if the database host is a DCOM server.
DCOM Server NameIf enabled, the DCOM server that the client uses to hosts the database
from which you are extracting tags.
DCOM Username and PasswordIf enabled, the username and password for the DCOM
server.
Log File PathThe path name for log files generated during the import or export process.
Logging LevelThe level of detail required in the import or export logs.
Log Pool SizeSpecifies the maximum number of log files for the given device.
ValidateClick the validate button to check the Unity Link settings are correct. This button
enables the OK button on the page.
Exporting tags
The Export feature allows you to export I/O Device data to an external data source, specifying the destination and format of your choice (for example RSLOGIX driver). This file
might then be imported into a third-party I/O Device programming package database. Alternatively, you might use it as a backup.
272
The I/O Device for which you are exporting tags. Use the menu to select an I/O Device that
has been defined using CitectSCADA.
Remove prefix from tags
Select this box to remove a known prefix from the front of the exported tag names.
Tag prefix
The prefix (8 characters max.) to be removed from exported tag names.
Delete existing tags
Select this box to delete any tags in the external database before exporting.
Note: For the Unity driver existing tags are not deleted, even if you select this check box.
ServerNode=\\Server
ServerNode=www.server.com
For Branch, OPC data can be either a tree (hierarchical) or a flat structure. The OPC
driver supports access to both types of storage. If the data is in a tree structure, it can be
accessed to the first branch level down from the root node, by entering the name of the
branch. For example:
Branch=device1
Deeper levels of branching might be supported in the future.
Note: This example uses the supplied Mitsubishi Driver
In the Import/Export or Links dialog box, enter details as follows:
External database: 127.0.0.1\HMI_Scada (you can also use the computer name instead
of the IP address)
Database type: Mitsubishi FastLinx
Connection string: UserID=Citect;Password=Citect
The Connection String must be in the format which the specialized driver (in this case
Mitsubishi FastLinx) expects; otherwise it might be ignored.
Note: Tags in your external data source must conform to the CitectSCADA standard.
Tag names that are longer than 79 characters are truncated. If this truncation results in
duplicate tags, you are informed when you compile your project. Characters other than
(a to z, A to Z, and 0 to 9) and the underscore character "_", are removed on import/link
(and before any truncation).
See Also
Format file
Format file
The format file defines the import/export/linking rules. The file maps columns from the external data source format to the internal CitectSCADA database format. In other words, it
determines what information is imported/exported/linked and how this information is
modified during the operation.
The format file also provides the information to allow CitectSCADA to use the correct driver for accessing the external data source.
Some format files are provided with CitectSCADA; however, sometimes you might need
to write or modify a format file using an editor such as Microsoft Notepad.
Following is an example of how format file rules work. (For more information, see Format
file layout.)
Column 3 in the external data source needs to be copied into the "Name" column in the
CitectSCADAs tag database. (CitectSCADA names are restricted to alphanumeric characters (a to z, A to Z, and 0 to 9) and the underscore character "_", but this is not typically
a consideration in the format file; CitectSCADA does the conversion automatically).
However, if Column 3 in the external data source happens to be blank, there is no need
to copy this record across at all (it must be rejected).
Column 1 in the external data source needs to be copied straight into the "Addr" column
in CitectSCADAs tag database, because they both mean exactly the same thing.
Columns 4, 5, 6, and 7 in the external data source all need to be copied into the "Comment" column in Variable.DBF. (It is not uncommon for external data sources to split the
comments across several fields). The fields need to be copied in that order, so that if the
275
data in Column 4 in the external data source is "Loop", Column 5 is "1", Column 6 is
"Process", and Column 7 is "variable", these fields are copied across in order, so that the
"Comment" column in Variable.DBF reads "Loop 1 Process variable". This process is
called concatenation. (For the "Comment" column, CitectSCADA automatically adds a
space between each field from the external data source.)
The data in Column 1 in the external data source determines what CitectSCADA needs
to write in the "Type" column. However the data cannot be copied across directly, because it would not make sense to CitectSCADA. Instead, it needs to go through a conversion (or filtering) process. This conversion needs its own set of rules, such as:
If Column 1 in the external data source is "BT%d:%d.%d" (where%d means "any decimal number"), CitectSCADA needs to write the string "DIGITAL" in the "Type" column.
If Column 1 in the external data source is "F%d:%d/%d" (where %d means "any decimal
number"), CitectSCADA needs to write the string "DIGITAL" in the "Type" column.
If Column 1 in the external data source is "O:%e" (where %e means "any octal number";
that is, all digits from 0 to 7), CitectSCADA must leave the "Type" column blank. It still
accepts the record (provided all other columns pass any filtering tests) but it does not
write anything in the "Type" column. The assumption is that CitectSCADA currently
does not have (or does not need) a suitable corresponding type.
If Column 1 in the external data source is "PD%d:%d.%d", CitectSCADA needs to write
the string "REAL" in the "Type" column.
If Column 1 in the external data source is "ST%d:%d", CitectSCADA needs to write the
string "STRING" in the "Type" column.
If there are no rules covering the contents of Column 1 in the external data source, CitectSCADA must reject the whole record and not copy it into the CitectSCADA database.
See Also
Format file layout
Any white space (or none at all) is acceptable around the "=" and the "->", but the whole
statement must be on one line. Most statements within a format file follow this pattern, but
in many cases there might be no "->" (the converter), or there might just be a converter without anything following it.
The following sections are required in all format files:
[General]
[Columns]
[ImportFilterMap]
[ExportFilterMap]
276
Other sections might be required depending on the complexity of the conversion between
CitectSCADA and the external data source. This is determined by the contents of [ImportFilterMap] and [ExportFilterMap].
Comments can also be added within or between sections. To do this, place a semicolon ";"
as the first character on the line. The rest of the line is then considered a comment, and is
ignored by CitectSCADA. For example:
; I am putting the [General] section here
[General]
[General] section
The General section consists of 4 lines:
[General]
Name=nameDescription= descriptionDriverName= driver nameDriverInst="a special
string"
The name and the description are not currently used by CitectSCADA. CitectSCADA uses
the driver name to load the correct driver for accessing the external data source. This driver
might be one that is part of the CitectSCADA installation, or it might be a customized driver (including a driver that you have written yourself), for accessing a particular data source
(which could be a protocol, type of hardware, server or file type). The driver must be an
OLE DB-compliant driver.
The special string allows extra information to be passed to the driver. It is added to the connection string (in Citect Explorer and the Project Editor). So the connection string can be
used for information that is likely to change often, and this special string can be used for
more persistent information (such as the comma "," delimiter for a .CSV file). The main use
of this string is as a delimiter for an input file. To specify that a comma "," is used by an input file as the delimiter, the following syntax would be used:
DriverInst="delimiter=,"
[Columns] section
The Columns section defines the format of the columns in the external data source. It is
structured as follows:
[Columns]
External column name 1 = column width -> data type
External column name 2 = column width -> data type..
External column name n = column width -> data type
The only restriction that CitectSCADA places on the data for External Column name n is that
it must be unique within the section. For convenience, you can use the names that the external data source uses (such as "Description", "PLC_id", "Iotype") or you can just make up
names like "Column1", "Column2", etc. The order in which these entries appear must be the
same as the order of the fields in the external data source. The names used for the External
277
Data Source columns in the [ImportFilterMap] and [ExportFilterMap] sections must come
from this list.
Column width is the number of characters in the field, and data type is the type of data for
that column. Currently the only acceptable data type is "STRING".
[ImportFilterMap] and [ExportFilterMap] sections
The [ImportFilterMap] and [ExportFilterMap] sections have identical syntax and functionality, except that the [ImportFilterMap] describes how to convert data from the External
data source on import, while the [ExportFilterMap] describes the opposite conversion.
These are the most complex sections in the format file. (The rest of the text will just focus
on the [ImportFilterMap], as the [ExportFilterMap] follows basically the same logic.)
The [ImportFilterMap] is structured as follows:
[ImportFilterMap]
Import Rule 1 = External column name l -> Citect Column i
Import Rule 2 = External column name m -> Citect Column j..
Import Rule nn = External column name n -> Citect Column k
The values in Import Rule nn can be any name strings, but they must be unique within the
section. Therefore, for convenience, you might want to use names like "ImportRule1",
"ImportRule2", "Mapping1", "Filter1" etc., or you might want something that is descriptive
of the conversion involved, such as "Description_to_comment".
The name used for External column name n must be identical to a name that appears in External column name n in the [Columns] section above.
The name used for Citect Column k must be the same as one of the columns in the CitectSCADA internal tags database, such as "Name", "Type", "Addr", "Comment" etc.
Thus the values for the external column and the CitectSCADA column provide information
on how to transfer data from the external column to the Citect column during import.
For example:
ImportRule1 = Description -> Comment
This indicates that there is a relationship between the data in the "Description" field in the
external data source and the data that needs to go into the "Comment" field in the CitectSCADA database.
The name that you use for Import Rule nn might be the same as the name of another optional
section in the format file: here, the extra section provides CitectSCADA with more information. In the simplest case, if there is no section with that name in the format file, the rule
simply states that the data in External column name n is to be copied directly into Citect Column k without modification or filtering.
So if the "Description" column in the external database contains "Truck Position 1" and the
above entry appears in the [ImportFilterMap] section, and there is no section called
[ImportRule1], then after the import, the "Comment" column in the CitectSCADA database
will contain the string "Truck Position 1".
278
Concatenation
To concatenate fields from the external database into one field in the CitectSCADA database, add separate entries to the [ImportFilterMap] section. Each section must contain the
name of a relevant external column and the name of the destination column in CitectSCADA. The entries must appear in the order in which the fields are to be concatenated.
So, if the external data source has a field called "IOdev" containing the value "M", and another field called "IOaddr" containing the value "61", and you want to join them together so
that the value "M61" is imported into the CitectSCADA "Addr" field, this is how it would
be done:
[ImportFilterMap]
Addr1= IOdev -> Addr
Addr2= IOaddr -> Addr
Here, you must verify that there are no sections in the format file called [Addr1] or [Addr2],
unless you need some filtering or conversion.
See Also
Field conversion
Field conversion
To modify mapped data or to apply filtering (to reject certain records), create a new section
using the name of the relevant line from the mapping section. For example, if you have the
following mapping section:
[ImportFilterMap]
Test1_to_type = Test1 -> Type
and you want to convert the data from the Test1 column before importing it, somewhere in
the file you must have a section called [Test1_to_type]:
Test1_to_type]
mapping name]
Rule 1 = External Pattern 1 -> Citect String 1
Rule m = External Pattern m
Rule n = External Pattern n -> Citect String n
279
The name used for Filtering Rule n has no intrinsic significance to CitectSCADA (except that
it uses it as a key to locate the entry). The only restriction is that it must be unique within
the section, so you can use whatever is convenient.
The value in External Pattern n is a combination of characters which CitectSCADA will look
for in the external data source column. This pattern can be any combination of the following:
Character in format file
<specific text>
<specific text>
Any string.
%d
%e
%h
%s
{
}
\
280
Meaning
!REJECT!
Insert a literal space character at the end of the output line. Without this provision, the system could not
distinguish between the end of the input line (which is
likely to be followed by characters, such as spaces, that
Windows will ignore) and a space being required at the
end of the output line.
For a more complex example, let us assume that the external data source has a column
called "Tag" which is equivalent to the "Name" field in CitectSCADA. Let us also assume
that the external database has no direct equivalent of CitectSCADAs "Type" field, yet CitectSCADA needs this field to be filled in. We need to use the "Tag" field to decide what goes
into the "Type" field of the CitectSCADA database.
If the "Tag" column in the external data source has the value "I:060/07", we have determined
that we should write the string "DIGITAL" into CitectSCADAs "Type" field. In fact, if that
field has "I:" followed by any octal value, followed by a slash "/", followed by any octal value, we want the string "DIGITAL" to appear in our "Type" field. How do we express all this
in the format file?
Firstly, there are two sets of relationships to consider, one connecting the "Tag" field in the
external data source to the "Name" field in CitectSCADA, and the other connecting it to the
"Type" field in CitectSCADA. So we need two "mappings" (entries) in the [ImportFilterMap] section:
[ImportFilterMap]
Tag_to_Name = Tag -> Name
Tag_to_Type = Tag -> Type
..
As we want the data in the "Tag" field to be copied directly into the "Name" field, we do
this by not having a [Tag_to_Name] section anywhere in the format file.
But because we are not copying directly from the "Tag" field to the "Type" field, but are just
using the data to decide what goes into the "Type" field, we need a [Tag_to_Type] section.
Recall the desired outcome: If the "tag" field has "I:" followed by any octal value, followed
by a slash "/", followed by any octal value, we want the string "DIGITAL" to appear in our
"Type" field.
281
This will match "I:060/07" or "I:0453/02343445602" (and cause the string "DIGITAL" to be
written to CitectSCADAs Type field), but will not match "I:060/98" or "I:054".
To give a few examples of how the wild-card characters (%s, * and ?) might be used, the
pattern "HE%sLD" or "HE*LD" in the format file would match "HELLO WORLD" or "HE
IS VERY BOLD" in the external data source. The pattern "HE???????LD" would match
"HELLO WORLD" but not "HE IS BALD", as each question mark "?" must match exactly
one character.
CitectSCADA will also handle multiple wildcard patterns, such as "%s/%s:%s".
For an example more useful than "Hello World", imagine that we need to copy the data
straight across without modification, but we want to verify that no blank fields are copied
across. The pattern "?%s" or "?*" will match any string that has at least one character, but
will not match a blank.
Sometimes only part of the input stream is required in the output, or the input might need
to be split up into different output columns. In these situations "tokens" are useful.
In this example of an export situation, the "Addr" field in the CitectSCADA database needs
to be split among two fields in the external database: the "IOdev" (whose value is always
"D" or "M"); and "IOaddr" (whose value is a decimal integer of no more than 3 digits). Values in the "Addr" field of the CitectSCADA database are strings such as "D62", "M546", etc.
This situation could be solved by concatenation, i.e. using one mapping to write to the IOdev field, and three other separate mappings to copy each digit separately into the IOaddr
field of the external database. But this would be complex and in some situations would not
work.
It is better to use a token to address the situation:
[ExportFilterMap]
..
Addr2IOdev = Addr -> IOdev
Addr2IOaddr = Addr -> IOaddr
..
[Addr2IOdev]
D = D* -> D
M = M* -> M
AnythingElse = * ->
..
[Addr2IOaddr]
Rule = ?{%d} -> $1
In the [Addr2IOaddr] section, the {%d} is the token string, and as it is the first (and only)
token appearing in the rule, $1 is used to reference it on the output stream side. So if the
"Addr" field of the CitectSCADA database contains "D483", "D" is written to the "IOdev"
field of the external data sink, and "483" (the token) to the "IOaddr" field.
282
Here is another example illustrating the use of multiple tokens. Suppose we need to: convert all period characters (.) to colons (:); remove the first two characters (which are blank);
and remove any unnecessary characters from the data we are expecting; that is, convert
"..BJ6452.78......" to "BJ6542:78". This can be achieved by using the following rule:
Rule = ??{*%d}.{%d}* -> $1:$2
At this point, we introduce another feature of the format file. If you use the following rule:
[Relevant mapping name]
Filtering Rule = External pattern
i.e., without "-> Citect String" included, CitectSCADA interprets this as "check that the
string matches the External Pattern, if it does, copy it across unchanged".
If this rule is used:
Filtering Rule = External pattern ->
i.e., without "Citect String", it would mean: "If the string pattern matches then accept the
record but copy a NULL string to the CitectSCADA database."
Using the above example again, we can add the restriction that any records with no data
(i.e. a blank or NULL string) in the Tag field of the external data source should not be imported into CitectSCADA. We would add a [Tag_to_Name] section, and would have just
one rule: that we accept everything except for a blank.
[Tag_to_Name]
RejectBlanks = ?*
..
Recall that CitectSCADA checks the pattern in each filter rule sequentially until a pattern
that matches the string is found in the external data source. With this in mind, a huge range
of conversions and filterings are possible by ordering the rules correctly and, in some cases,
by making use of concatenation.
For instance, if certain string types need to be converted but all others need to be copied
unmodified to CitectSCADA, you could have a section with a set of rules at the top, followed by a final rule to let everything else through unmodified.
[Tag_to_Name]
Rule n = ...... -> ......
..
LetEverythingElseThru = %s
283
For an example of how to reject a particular string or pattern, lets suppose we want to reject
any tags starting with "DFILE"(another real-life example). We would simply use the following:
[Tag_to_Name]
Rule1 = DFILE* -> !REJECT!
..
LetEverythingElseThru = %s
Clearly, it is pointless having the !REJECT! rule not followed by other rules concerning patterns that you do want to accept, as anything that does not match an input pattern is rejected. The logic behind the order that the rules appear can become particularly important
when using a !REJECT! rule. You would typically have any reject rule(s) as the first rule(s)
in the mapping. There would not be any point in putting a !REJECT! rule as the last rule in
the mapping.
!REJECT! rules can also be useful where some text file generated by another system contains some sort of header lines that are not wanted, but the rest of the data is required.
See Also
Having CitectSCADA recognize format files
Each entry in this section refers to a combination of format file and driver required for a
particular import, export, or link operation.
The text on the left of the "=" sign must refer to the name of another section which must appear in tagdriv.ini.
The text on the right of the "=" sign is exactly what will appear in the menu under "Database
type" for importing, exporting or refreshing variable tags.
284
The other sections each refer to a type of import or export described in the [External data
sources] section, and give details about the format file and driver pair. The general layout
So if we assume that the version of CitectSCADA you are installing contains 4 format files,
there would be 4 sections in tagdriv.ini, as shown in the following example:
; This file contains the driver name, driver prog id, and format file mappings
; The format file must reside in the BIN directory
[External data sources]
CSV = CSV Driver
RSLOGIX = RSLOGIX Driver
Concept ver 2.1 Ascii = Concept Ver 2.1 ASCII file
MxChange = Mitsubishi FastLinx
[CSV]
driverid = CiTrans
datastring = csv.fmt
[RSLOGIX]
driverid = CiTrans
datastring = rslogic.fmt
[Concept ver 2.1 Ascii]
driverid = CiTrans
datastring = concept ver 2_1.fmt
[MxChange]
driverid = CiTrans
datastring = MxChange.fmt
This adds 4 entries to the database type drop down menu: CSV, RSLOGIX, ASCII and Mitsubishi FastLinx.
The 4 entries in the menu match the strings on the right of the "=" sign in the [External data
sources] section.
If you add another format file, you will also need to add a matching entry to tagdriv.ini.
For example, if you add a new format file for a Simatic data source, you must add a line
similar to this to the [External data sources] section:
SIMATIC = Siemens SIMATIC Driver
You must also add the following section to the bottom of the file:
[SIMATIC]
driverid = CiTrans
datastring = SIMATIC.fmt
285
Save the file, restart Citect Explorer, and "Siemens SIMATIC Driver " appears in the menu.
Selecting this entry causes the format file in the datastring entry under the [SIMATIC] section to be used for the import, export, or link; that is, simatic.fmt.
Imported Tags
For Unity Fastlinx Dynamic and Static:
Unity PLCs
QUANTUM
PREMIUM
286
Unity Data
Types
Citect Protocols
Support Status
BOOL
EBOOL
BYTE
WORD
DWORD
INT
DINT
UINT
UDINT
REAL
TIME *
DATE *
TOD *
DT *
STRING
Unite
OPC
Not Supported
BOOL
EBOOL
BYTE
WORD
DWORD
INT
DINT
UINT
UDINT
REAL
TIME *
DATE *
TOD *
DT *
STRING
Unite
Supported
Not Supported
Modnet
Modbus
MBPlus
Modnet
Modbus
MBPlus
OPC
Not Supported
M340
BOOL
EBOOL
BYTE
WORD
DWORD
INT
DINT
UINT
UDINT
REAL
TIME *
DATE *
TOD *
DT *
STRING
Unite
Not Supported
Modnet
Modbus
MBPlus
Not Supported
OPC
Not Supported
Note: Citect recommends that you use the Unity Fastlinx Dynamic driver when importing
tags from Unity Pro into a Citect project.
Note: Arrays are supported for all data types except DATE, TOD, DT and STRING data
types. For Unity data types marked with *, Citect does not have data types that directly
match the Unity types. Instead use Citect supported data types and Cicode to convert and
simulate those data types.
In addition, the following Unity data types are not supported:
Structured data types.
Arrays which are not zero-based.
Multi-dimensional arrays.
Arrays of Unity BOOL data type are not supported for all protocols and will be excluded from the import.
Exported Tags
For Fastlinx Static:
Unity PLCs
QUANTUM
Unity Data
Types
BOOL
EBOOL
BYTE
WORD
DWORD
INT
DINT
UINT
UDINT
REAL
TIME *
DATE *
TOD *
DT *
STRING
Citect Protocols
Unite
Support Status
Not Supported
Modnet
Modbus
MBPlus
OPC
Not Supported
287
PREMIUM
M340
BOOL
EBOOL
BYTE
WORD
DWORD
INT
DINT
UINT
UDINT
REAL
TIME *
DATE *
TOD *
DT *
STRING
Unite
Supported
OPC
Not Supported
BOOL
EBOOL
BYTE
WORD
DWORD
INT
DINT
UINT
UDINT
REAL
TIME *
DATE *
TOD *
DT *
STRING
Unite
Not Supported
Modnet
Modbus
MBPlus
Modnet
Modbus
MBPlus
Not Supported
OPC
Not Supported
Note: Arrays are supported for all data types except DATE, TOD, DT and STRING data
types. For Unity data types marked with *, Citect does not have data types that directly
match the Unity types. Instead use Citect supported data types and Cicode to convert and
simulate those data types.
In addition, the following Unity data types are not supported:
Structured data types.
Arrays which are not zero-based.
Multi-dimensional arrays.
Arrays of Unity BOOL data type are not supported for all protocols.
Linked Tags
Linked I/O Device Live Update
For Unity Fastlinx Dynamic:
Unity PLCs
288
Unity Data
Types
Citect Protocols
Support Status
QUANTUM
PREMIUM
M340
BOOL
EBOOL
BYTE
WORD
DWORD
INT
DINT
UINT
UDINT
REAL
TIME *
DATE *
TOD *
DT *
STRING
Unite
OPC
Not Supported
BOOL
EBOOL
BYTE
WORD
DWORD
INT
DINT
UINT
UDINT
REAL
TIME *
DATE *
TOD *
DT *
STRING
Unite
Supported
OPC
Not Supported
BOOL
EBOOL
BYTE
WORD
DWORD
INT
DINT
UINT
UDINT
REAL
TIME *
DATE *
TOD *
DT *
STRING
Unite
Not Supported
Not Supported
Modnet
Modbus
MBPlus
Modnet
Modbus
MBPlus
Modnet
Modbus
MBPlus
Not Supported
OPC
Not Supported
Note: Arrays are supported for all data types except DATE, TOD, DT and STRING data
types. For Unity data types marked with *, Citect does not have data types that directly
match the Unity types. Instead use Citect supported data types and Cicode to convert and
simulate those data types.
In addition, the following Unity data types are not supported:
Structured data types.
Arrays which are not zero-based.
Multi-dimensional arrays.
Arrays of Unity BOOL data type are not supported for all protocols.
289
290
Click OK.
Note: To delete a page from the project, select the page name and click Delete.
To save the current page:
Click Save, or choose File | Save.
Select the Project in which to store the page. (The first eight characters of the name must
be unique to this page.)
Click OK.
To save the current page with a new name:
Choose File | Save As.
Select the project in which the page is stored.
Enter a name for the page in Page (64 characters maximum). The first eight characters
of the name must be unique to this page.
Click OK.
To save all current pages that are open
Choose File | Save All. (The first eight characters of each page name must be different.)
See Also
Use Template (new page/template) dialog box
Open/Save As dialog box
To locate a graphics page:
Choose File | Find.
Select a project from the Project Name list.
Browse through the pages in the Pages list.
Click OK to view the page.
See Also
Using Find and Replace in a project
To print a graphics page on your printer:
Choose File | Print. (This prints without a confirmation dialog.)
To close an existing page:
Choose File | Close.
Linked
To maintain the link with the original template, select this check box. A page or template
that is linked with its original template is automatically updated if the template is changed.
Note: You can cut the link to the template at any time with the Cut Link command from
the Edit menu, but you cannot re-link a page or template with its original template after the
link has been cut.
Title bar
The title to display in the title bar of the page or template.
Resolution
The screen resolution of the page or template:
Screen
Type
Width (pixels)
Height (pixels)
Default
VGA
640
480
SVGA
800
600
XGA
1024
768
SXGA
1280
1024
User
User-defined size
User-defined size
293
Preview Enable
Displays a thumbnail image of the page, template, symbol, Genie, or Super Genie.
Title bar
(For templates only.) Specifies whether to include a space for the title bar. If you use a title
bar, you will have slightly less display space on screen.
Resolution
(For templates only.) The screen resolution of the template:
Screen Type
Default
Width (pixels)
Height (pixels)
VGA
640
480
SVGA
800
600
XGA
1024
768
SXGA
1280
1024
User
User-defined size
User-defined size
To delete a page, template, symbol, Genie, or Super Genie, select it and click Delete.
294
Linking templates
When using a template to create a new page, a link can be kept to the template. A page (or
template) that is linked with its original template is automatically updated if the template
is changed.
When a page is linked to a template, the objects that form the template cannot be accessed
from the page by the usual double-click. To display the properties of these objects, hold the
Control (CTRL) key down and double-click the object you want to view properties for. Alternatively, choose Tools | Goto Object, select the group, and click OK. However, most of
these properties are read-only.
Note: You can cut the link to the template at any time using Edit | Cut Link, but you cannot
re-link a page or template with its original template after the link has been cut.
See Also
Creating your own templates
See Also
New Style dialog box
296
You do not have to use a display sequence. You can define several Page GoTo commands
that display specific pages in an hierarchical structure.
See Also
Specifying a Startup Page
297
See Also
Page size at runtime
See Also
Page Properties - General
Page Properties - Appearance
Page properties - Keyboard Commands
Page Properties - Events
Page Properties - Environment
Setting Default Page Settings
update the page every 200 milliseconds, and any While page shown events are executed
every 200 milliseconds.
Note: You can set the default page scan time using the Computer Setup Wizard.
[Logging] Log device
This is the device to which messages are logged for the pages keyboard commands. Click
the menu to the right of the field to select a device, or type a device name.
Note: You must include the MsgLog field in the format of the log device for the message to
be sent.
[Cluster context] Inherit from caller
Select this check box to make the current page inherit the default cluster context from the
page or cicode task that opened this page (for example using the PageDisplay or WinNewAt Cicode functions). If this is checked you cannot select a specific default cluster. See
About cluster context for more information.
[Cluster context] Cluster
Specifies a default cluster context for this page.
Click Apply, and then click OK. To define further properties for the page, select the relevant tabs.
See Also
Defining Page Properties
Height (pixels)
640
SVGA
800
600
XGA
1024
768
SXGA
1280
1024
User
****
****
[Template] name
300
Width (pixels)
VGA
480
The name of the template on which the page is based. Choose a template name from the
menu.
Note: If you are looking for a template that you created yourself, check that you entered the
correct Style and Resolution above.
[Template] show title bar
Determines whether the Windows title bar displays (at the top of the page). The title bar
contains the title of the window, maximize, minimize and close buttons (at the right hand
end of the title bar), and the control menu button (at the left hand end of the title bar).
To display a page in full screen (without a title bar), the size of the page must be the same
size as the display (or larger). If the page is smaller than the display, the title bar still displays, even if full screen mode is enabled. Standard templates styles are available for both
page sizes.
[View area] width
The width (in pixels) of the area that the operator can view at runtime. Click the up and
down arrows to increase and decrease the width, or type in another value directly.
[View area] height
The height (in pixels) of the area that the operator can view at runtime. Click the up and
down arrows to increase and decrease the height, or type in another value directly.
Background color
The color that will display in the background of the graphics page.
The preview field to the right of this dialog displays a picture of the selected template. Click
Apply, then click OK. To define further properties for the page, click the relevant tabs.
See Also
Defining Page Properties
301
The commands (set of instructions) to be executed immediately when the selected key sequence is entered. The key sequence command can have a maximum length of 254 characters.
To insert a tag or a function, click the Wizard button to the right of this field. This button
displays two options: Insert Tag, and Insert Function.
[Security] Same area as page
Select this check box to assign the keyboard command to the same area as the page (see
Page Properties - General). Only users with access to this area (and any required privileges)
can issue this command or log the message. If you want to assign this keyboard command
to another area, do not select this box: enter another area below.
[Security] Command area
Enter the area to which this keyboard command belongs up to a maximum of 16 characters.
Only users with access to this area (and any required privileges) can issue this command
or log the message. For example, if you enter Area 1 here, operators must have access to
Area 1 to issue this command.
Click an area from the menu or type in an area number.
[Security] No privilege restrictions
Tick this box to disable privilege restrictions; otherwise, leave it blank, and enter another
privilege below.
The result of not assigning a privilege restriction differ according to whether you have used
areas in your security setup:
No Areas: All operators have full control of the page.
Areas: An operator will only need view access to the area assigned to this page to have
full control over the page (see Adding user records).
[Security] Privilege level
Enter the privilege level that a user must possess to issue this command or log the message
(16 characters maximum). For example, if you enter Privilege Level 1 here, operators must
possess Privilege Level 1 to issue this command. You can also combine this restriction with
area restrictions (see above). For example, if you assign the keyboard command to Area 5,
with Privilege Level 2, the user must be set up with Privilege 2 for Area 5 (see Adding user
records).
Choose a privilege from the menu or type in an area number.
[Logging] Log Message
A text message sent to the MsgLog field of the Log Device when the selected action is performed by the operator at runtime (32 characters maximum). The message can be plain text,
Super Genie syntax, or a combination of the two.
If you want to include field data as part of a logged message, you must insert the field name
as part of the device format when you configure the device. For instance, in the Format field
of the Devices form, you could enter {MsgLog,20} {FullName,15}. This would accommodate the logging of messages such as P2 started by John Smith.
The log device to which the message is sent is specified through the General page properties.
302
Click Apply, and then click OK. Click Clear Property to clear property details, and disable
the property. To define further properties for the page, click the relevant tabs.
See Also
Defining Page Properties
The commands (set of instructions) to be executed immediately when the selected Event occurs (maximum of 253 characters).
To insert a tag or a function, click the Wizard button to the right of this field. This button
displays two options; Insert Tag, and Insert Function.
Click Apply, and then click OK. Click Clear Property to clear property details, and disable
the property. To define further properties for the page, click the relevant tabs.
See Also
Defining Page Properties
304
Page defaults
You use the Page Defaults dialog box to define the screen resolution and style that all
graphics pages will use.
You can override these defaults for your pages when you create them or edit them.
[Template] Resolution
Default screen resolution of the standard graphics pages (for example, alarms pages and
standard trend pages):
Screen Type
Width (pixels)
Height (pixels)
VGA
640
SVGA
800
600
XGA
1024
768
SXGA
1280
1024
User
****
****
480
[Template] Style
The style (appearance) of the graphics pages in the runtime system. The style you select is
the default style for new pages you add to the project. You can change the style of existing
pages and templates using the Page Properties.
Most users prefer the Standard style. You can view the pre-defined styles by looking in the
Include project under Graphics, Templates.
[Template] Show title bar
Determines whether the Windows title bar displays at the top of each graphics page. The
title bar contains the title of the window, maximize, minimize and close buttons (at the
right hand end of the title bar), and the control menu button (at the left hand end of the title
bar).
To display a page in full screen (without a title bar), the size of the page must be the same
size as the display (or larger). If the page is smaller than the display, the title bar still displays, even if full screen mode is enabled. Standard templates styles are available for both
page sizes
You can override this default for your own pages at the time you create them, or later.
Background color
The color that will display in the background of all new graphics pages.
Preview
This dialog also displays a preview of your page with the defaults applied.
Options
Colors
Zooming
Grids
You can use a grid to align and place objects with precision. When the grid is active, any
objects or groups of objects that you create, move, or re-size snap to the nearest grid intersection.
To display the grid:
Choose View | Grid Setup.
Click the Display Grid check box.
To snap to the grid:
Choose View | Snap to Grid.
By default, the grid is set to 8 x 8 pixels, with the origin located at the top-left corner of your
page.
To change the default grid size and location:
Choose View | Grid Setup. The Grid Setup dialog box appears.
See Also
Grid Setup dialog box
Guidelines
You can use horizontal and vertical guides as a straight-edge, to align and place objects precisely. When an edge or the center of an object gets close to a guide, that edge or center automatically snaps to the guide.
To set up guidelines:
Choose View | Guidelines Setup.
To run the guideline horizontally across your page, click Horizontal.
306
Enter a position (distance from the top of your page) for the guideline, and click Set.
To run the guideline vertically down your page, click Vertical.
Enter a position (distance from the left edge of your page) for the guideline, and click
Set.
Click the Display Guidelines check box.
Click the Snap to Guidelines check box.
Click OK.
To turn off guidelines:
Choose View | Snap to Guidelines.
To move a guideline:
Move the cursor over the guideline.
Click and hold the left mouse button.
Move the guideline to a new location.
Release the mouse button.
To create a new guideline with the mouse:
Move the cursor over the guideline.
Press and hold the Ctrl key.
Click and hold the left mouse button.
Move the guideline to a new position.
Release the mouse button and Ctrl key.
To delete a guideline with the mouse:
Drag the guideline to the edge of the page.
See Also
Guidelines Setup dialog box
Options
You can define general options for your drawing environment.
To define general options for the drawing environment:
Choose Tools | Options. The Options dialog box appears.
307
Description
Save Template
Warning
Enables the display of an alert message when you modify and then save
an existing template. When you modify
an existing template, any graphics
pages that are associated with the
template are not updated until you
perform an Update Pages to update
each page based on the template.
Modify AN Field
Disable Genie
Forms
Display Group
Button
Compile Enquiry
Message
Fast Runtime
Display
308
Option
Description
Show version
3.xx/4.xx tools
Affects the operation of Graphic Builders "Update Pages" tool. If Fast Update
Pages is checked, Graphics Builder only
updates modified pages. If not
checked, all project pages are updated.
Transparent
Paste
Click OK.
See Also
Options
Colors
True Color (16.7 million colors) is supported for all static and animated objects, including
page backgrounds, imported images, symbols, metafiles and bitmaps.
309
Wherever a particular page or object property has a color value, a current color button will
appear.
To choose a different color to the one currently displayed on the button, click on the small
black arrow to the right. This launches the Color Picker.
Color Picker
The first 11 rows of the Color Picker show a set of standard colors, including transparent
(marked with a black cross). The remaining rows display any user defined colors, referred
to as Color Favorites. This includes flashing colors, represented by a two color block, divided diagonally.
To select one of the colors displayed on the color picker, click on it.
If the required color does not appear, you have the option to create a custom color, or match
an existing color from one of your graphics pages.
To match an existing color on a graphics page:
Verify that the color you would like to match is present on the page currently displayed
in Graphics Builder.
From the Color Picker, choose the Color Selector tool (looks like an eyedropper).
Use the Color Selector to click on the color you would like to match.
The color you have chosen will now appear in the Color Value Display button.
To create a customized color:
From the Color Picker, click on the Edit button. This will make the Edit Favorite Color
dialog appear.
Use the Edit Favorite Color dialog to create the color you would like to use (See Edit Favorite Colors dialog box for details).
Name the color if required.
Use the Add button to include the color with the Color Favorites displayed on the Color
Picker.
Click OK. The color you have just created will now be selected.
See Also
Edit Favorite Colors dialog box
Swap Color dialog box
Adjust colors dialog box
310
The Color panel displays the color created by the current settings applied to the Edit Favorite Color dialog.
Note that the values displayed on the Edit Favorite Color dialog automatically adjust to
correctly represent the color currently displayed in this panel. The values in each field are
not independent.
Color wheel
The color wheel allows you to visually select a color. It represents the full spectrum of colors in a cyclic layout, with color saturation increasing towards the outside edge. Simply
click on the wheel to select a color.
Brightness bar
Allows you to visually select the brightness you would like applied to a color. Click on the
bar in the appropriate location to apply a brightness level. The bar represents luminance,
as the colors move away from pure black as they progress up the bar to pure white.
Hue
Specifies the hue value for the color currently displayed in the Color panel. Hue primarily
distinguishes one color from another. The value can be between 0 (zero) and 359, representing degrees around the color wheel. For example, zero is a pure red to the right, 180 is pure
cyan on the left.
Sat
Specifies the saturation level for the color currently displayed in the Color panel. Saturation level increases the further the selected color moves away from gray scale to a pure primary color. The value can be between 0 (zero) and 255.
Lum
Specifies the luminance of the color currently displayed in the Color panel. Luminance represents the brightness of a color, the value increasing the further the color moves away from
black towards pure white. The value can be between 0 (zero) and 255.
Note: When you create a color by using HLS values, you may find that the HLS values you
specified for a color have changed when you reopen the dialog box. This happens because
RGB values are less precise than HLS values, sometimes resulting in several HLS values being assigned the same RGB value. As a result, when the HLS values are generated from the
RGB values, some values may change.
Red
Indicates the amount of red used to create the color currently displayed in the Color panel.
The value can be between 0 (zero) and 255. Adjust this setting if you want to create a color
using RGB values.
Green
Indicates the amount of green used to create the color currently displayed in the Color panel. The value can be between 0 (zero) and 255. Adjust this setting if you want to create a
color using RGB values.
Blue
312
Indicates the amount of blue used to create the color currently displayed in the Color panel.
The value can be between 0 (zero) and 255. Adjust this setting if you want to create a color
using RGB values.
Transparent
Click this button to select transparent. Wherever transparent is used as a color, the background color, or color behind the transparent object, will be displayed.
Flashing
Check this box if you want to create a flashing color. A flashing color appears as a diagonally divided panel in the color grid. To create a flashing color, you will have to select an
On State and Off State color.
To
The color the original object color will be changed to. If you click the Swaprange check box,
it presents a range of colors in varying degrees of brightness from white to black. This allows you to swap a whole range of colors at once.
From any color
Specifies to change all colors in the object to the new color.
313
Swap range
Specifies to swap a range of colors. The From and To boxes indicate the starting colors in
the ranges.
Note: You cannot invert colors with Swap Range selected. This means, for example, that
you could not swap dark red for light green and light red for dark green in one go.
Zooming
Use the Zoom command to view an enlarged view of your drawing. The Zoom command
displays a zoom box on screen that magnifies the area around your cursor, enabling you to
position or draw objects precisely.
Procedure
314
Description
To display the
Zoom box
To hide the Zoom
box
You can change the cursor into crosshairs that extend the full width and length of the drawing area. When you move away from the drawing area, the normal pointer reappears, allowing you to select commands and tools.
Procedure
To toggle the cursor between a
crosshair cursor and a pointer
Description
Choose View | Cross Hair Cursor.
Using libraries
You can store frequently used objects or groups of objects (including bitmap objects) in a
library as symbols. You can then paste these symbols onto your page.
After you paste a symbol from the library onto a graphics page, it can be moved, re-sized,
re-shaped, brought to the front, and its properties can be edited, just like any other type of
object.
You can paste a symbol from the library to the page:
As an unlinked symbol; the pasted symbol is not updated with changes to the symbol
in the library.
As a linked symbol; the symbol on the page is updated when the symbol in the library
is changed (to alter the properties of a symbol in the library, open the library and edit it
in the library). If you edit the symbol from the page and then change the source symbol
in the library, the pasted symbol changes. For example, if you double the size of a pasted
symbol, then double the size of the symbol in the library, the pasted symbol doubles
again. You can cut the link to the library by using the Edit | Cut Link command.
When you save an object in a library, the current properties of that object are saved with it.
When you paste it as a symbol to a graphics page, they are used as defaults for the symbol.
Pasted symbols have different Appearance properties to those of normal objects: you can
only specify a visibility property.
When a symbol is pasted onto a page, the objects that form the symbol cannot be accessed
from the page by double-clicking the symbol. To display the properties of these objects,
315
hold the Control (CTRL) key down and double-click the specific object. Alternatively, you
can select Goto Object from the Tools | the group, and click OK. However, if the link to the
library is retained, most of these properties are read-only.
A symbol would be useful, for example, if you have defined a command button with a particular security classification, and you need to use it on quite a few graphics pages. You
could save it as a symbol, and each time you want to use the button, paste it from the library. Each time it is pasted, it will have the same properties.
Note: There is a comprehensive range of symbols that you can use in your project(s). These
symbols are stored in several libraries in the "Include" project. When a library is saved, the
first eight characters of the library name must be unique to that library.
Copying an object to the library
You can copy an object to the library so that you can use it later on other graphics pages.
To copy an object to the library (i.e. make it a symbol):
Click Select.
Select the object (or group of objects).
Choose Edit | Copy to Library. The Copy To dialog box appears.
Copy To dialog box
This dialog box lets you copy an object (or group of objects) to the library as a symbol.
Feature
Description
Symbol
Library
Project
Preview Enable
Note: To edit the symbol, select it and click Edit. To create a new symbol, click New.
New Library dialog box
This dialog box lets you create a new library for the symbol, Genie, or Super Genie (32 characters maximum). Enter a new Name for your new library. (The first eight characters of the
library name must be unique to this library.)
Using symbols
You can create symbols to use on your graphics pages.
To create a new symbol:
Click New, or choose File | New.
Select Type: Symbol
Note: You can also create an object (or group of objects on the page) and then choose Edit
| Copy to Library.
To open an existing symbol:
Click Open, or choose File | Open.
Select Type: Symbol.
Select the Project where the library is stored.
Select the Library where the symbol is stored.
316
Bitmaps
A bitmap image is a drawing object represented as an array of pixels (or dots), rather than
as individual entities. A bitmap is treated as a single object that you can move, copy, and
reshape. Because you can edit individual pixels in a bitmap, you can use bitmaps for vignettes and image blending.
You can create bitmaps with the Bitmap Editor, or import bitmaps from any other Windows-based bitmap editor.
In a runtime system, bitmaps are displayed differently to other objects. Bitmaps are
mapped directly to the screen (i.e., each pixel in the image corresponds to a pixel on the
screen). Objects are stored as a series of instructions, and are drawn on the screen in the
same order as they were drawn on the graphics page.
The Bitmap Editor
You use the Bitmap Editor to create and edit bitmap images. You can use bitmap images
on your graphics pages, and as animated symbols.
The background color in the Bitmap Editor is always transparent, indicated as a white pixel
with a black dot at the center. To draw with the background (transparent) color, click (and
hold) the right mouse button.
Flashing colors are represented by a diagonally split pixel, indicating the on-state and offstate colors used.
The tool bar of the Bitmap Editor has the following buttons:
Exits the Bitmap Editor and saves editing changes.
Exits the Bitmap Editor and discards changes.
Zooms in on the image.
Zooms out on the image.
Selects a color from the image to set as the current color (keyboard
shortcut is Shift+P). You can also select the current color from the color
swatch.
Displays the Bitmap Size dialog box where you can view the images
current dimensions and edit the images edge.
317
To resize a bitmap:
In Graphics Builder, click the bitmap.
Choose Tools | Bitmap Editor, or press F9.
Click Resize. The Bitmap Size dialog box appears.
Select a mode. Click Grow to enlarge the image, or Shrink to reduce it.
For each side of the bitmap, specify how many pixels you want to add or remove, then
click OK.
To set a color from a bitmap as the current color:
In Graphics Builder, click a bitmap.
Choose Tools | Bitmap Editor, or press F9.
Click Eye Dropper, and then click a color in the image. The selected color becomes the
current color, and is used when you click elsewhere on the image.
To convert an object (or objects) to a bitmap:
Select the object(s).
Choose Tools | Convert to Bitmap.
Note: The Convert to Bitmap operation is only supported in 8-bit (256) color mode.
To invoke the Bitmap editor:
Choose Tools | Bitmap Editor.
To paste a bitmap (from another application):
Create the image in an external application.
Use the external applications copy command to copy the image to your computers
clipboard.
Switch to the graphics builder.
Choose Edit | Paste.
You can edit pasted bitmaps by selecting the object and then choosing Edit | Properties.
To import a graphic:
Choose File | Import. The Import dialog box appears.
Select the file you want to import by using the Import dialog box.
Click OK (or click the file that you want to import and drag it onto a page in Graphics
Builder.
You can edit imported bitmaps by selecting the object and then choosing Edit | Properties.
To import a flashing graphic:
Choose File | Import as Flashing. The Primary Import dialog box appears.
Select the first file you want to use for your flashing image.
Click OK. The Flashing Import dialog box appears.
Select the second file you want to use for your flashing image.
Look in
The drive and directory where the graphic is stored.
File Name
The name of the graphics file.
Files of Type
The type of graphics file. The following file formats are supported:
Windows 3.0 bitmaps (*.BMP, *.DIB, *.RLE)
PCX format bitmaps (*.PCX)
Text files (*.TXT)
AutoCAD DXF Files (*.DXF), 2D only. The binary format is also supported.
Windows metafiles (*.WMF)
Encapsulated Postscript (*.EPS)
Fax Image (*.FAX)
Ventura Image (*.IMG)
JPEG (*.JPG, *.JIF, *.JFF, *.JGE)
Photo CD (*.PCD)
Portable Network Graphic (*.PNG). (PNG files with alpha channels are not supported.)
Targa (*.TGA)
Tagged Image Format (*.TIF)
WordPerfect (*.WPG)
319
320
Rectangle Objects
Ellipse Objects
Polygon Objects
Pipe Objects
Text Objects
Number Objects
Button Objects
Trend Objects
Cicode Objects
ActiveX Objects
Database Exchange
Control Objects
See Also
Using groups
Reshaping objects
Using bitmaps
Importing graphics
Using groups
You can group multiple objects. A group has a unique set of properties (much the same set
as an object) which determine the runtime behavior of the group as a whole. (The proper321
ties of the individual objects in the group remain unchanged.) By defining group properties, you can specify that the entire group changes dynamically under specific runtime
conditions (for example, when an expression returns a certain value, or a variable tag
changes state).
To edit or view the properties of a group, double-click it. If there are several groups on your
page, choose Tools | Goto Object. This allows you to see which groups and objects are on
your page, making it easier for you to select the object you want to edit. It also allows you
to display the properties of the objects (or groups) that make up the group. (You can also
edit the properties of an object in the group by holding down the Control (CTRL) key and
double-clicking the object. Alternatively, select Goto Object from the Tools menu, select
the object, then click OK.) This is useful if your page has groups within groups.
A group can be a mix of objects and other groups.
See Also
Reshaping objects
Reshaping objects
Pipe, Polyline, or Polygon objects can be edited to change their shape. Each of these objects
consist of a continuous series of lines drawn between structural anchor points called nodes.
Nodes are visible when an object is selected. Each node appears as a small square located
at specific anchor points along the object. There will be a node located at the start and end
of a polyline or pipe, and at every change of direction in an objects shape.
Pipe, Polyline, and Polygon objects can have their shapes changed in many ways. Their
nodes can be selected individually or by group and moved to a different position, thus
changing the shape of the object. The Pipe, Polyline, and Polygon objects also support node
adding and deleting.
Using bitmaps
A bitmap image is a special object, represented as an array of pixels or dots, rather than as
individual entities. Bitmaps are treated as single objects that you can move, copy, and reshape. You can create and edit bitmaps with the Citect Bitmap Editor. Because you can edit
the individual pixels in a bitmap, you can use bitmaps for more artistic images, such as
vignettes and image blending.
See Also
Importing graphics
322
Importing graphics
The Graphics Builder has several file format filters to allow you to import graphics from
other applications, such as drafting programs, illustration programs, presentation packages, scanners, etc. After a graphic is imported, you can use the graphics builder to edit the
image.
Graphics files can be dragged from a third-party application (such as Windows Explorer),
and dropped onto a page in the Graphics Builder.
By default, unavailable colors in an imported bitmap are dithered. To disable this feature,
choose Tools|Options in the Graphics Builder, and clear the Dither bitmaps on paste option. If dithering is disabled, unavailable colors are replaced by the closest match in your
color palette.
Object Properties
The properties of an object are defined in the Properties dialog box. When you draw an object, the properties dialog appear, allowing you to define the attributes.
You can also double-click the object (or choose Edit | Properties) to display the properties
dialog.
If an object is part of a group, part of a pasted Genie or symbol, or part of the pages template, you can access the objects properties by pressing CTRL and double-clicking the object. Alternatively, choose Tools | Goto Object, click the object, and then click OK.
See Also
Appearance
Movement
Scaling
Fill
Input
Slider
Access
Appearance
Click the Appearance tab to define the appearance of the object, such as line style, and
shadowing. You can also specify when the object will be hidden from the operator (for example when DIGITAL_TAG is OFF).
The check mark to the left of the Appearance tab tells you when an appearance property
has been configured. The check marks in the tabs down the right of the dialog indicate
which property is configured.
Click the other tabs to define more properties for the object. Most properties work together;
for example, an object could possess color fill, movement, and scaling properties simultaneously.
See Also
Object Properties
Movement
323
Movement
Click the Movement tab to move the object vertically or horizontally, or to rotate it, depending on the return of an expression, or the state of a tag.
The check mark to the left of the Movement tab tells you when a Movement property has
been configured. The check marks in the tabs down the right of the dialog tell you which
property is configured.
Click the other tabs to define more properties for the object. Most properties work together;
for example, an object could possess color fill, movement, and scaling properties simultaneously.
See Also
Object Properties
Scaling
Scaling
Click the Scaling tab to scale the object both vertically or horizontally, depending on the
return of an expression, or the state of a tag.
The check mark to the left of the Scaling tab tells you when a Scaling property has been configured. The check marks in the tabs down the right of the dialog indicate which property
is configured.
Click the other tabs to define more properties for the object. Most properties work together,
for example, an object could possess color fill, movement, and scaling properties simultaneously.
See Also
Object Properties
Fill
Fill
Click the Fill tab to specify the color which is to fill the object, and the level to which the
object will be filled. The fill properties can change dynamically, depending on the return of
an expression, or the state of a tag etc. (for instance, you could use this tab to visually reflect
tank levels).
The check mark to the left of the Fill tab tells you when a Fill property has been configured.
The check marks in the tabs down the right of the dialog indicate which property is configured.
Click the other tabs to define more properties for the object. Most properties work together,
for example, an object could possess color fill, movement, and scaling properties simultaneously.
See Also
Object Properties
Input
324
Input
Click the Input tab to specify the command to be executed, and the message to be logged
when an operator clicks on the object. You can also define keyboard commands for the object, and limit their scope with area and privilege security.
The check mark to the left of the Input tab tells you when an Input property has been configured. The check marks in the tabs down the right of the dialog indicate which property
is configured.
Click the other tabs to define other object properties. Most properties work together; for example, an object could possess color fill, movement, and scaling properties simultaneously.
See Also
Object Properties
Slider
Slider
Click the Slider tab to use the object as a slider. A variable can be associated with the object,
and when the operator moves the object, the value of the variable will change. Objects can
be set up to slide vertically and/or horizontally, or they can be rotated.
The check mark to the left of the Slider tab tells you when an Slider property has been configured. The check marks in the tabs down the right of the dialog indicate which property
is configured.
Click the other tabs to define other object properties. Most properties work together; for example, an object could possess color fill, movement, and scaling properties simultaneously.
See Also
Object Properties
Access
Access
Click the Access tab to assign an area or privilege to the object. Operators without appropriate access rights will not be able to use sliders, object specific keyboard commands etc.
It also allows you to disable the object under certain runtime circumstances. This means
that the object can be embossed, grayed, or even hidden.
The check mark to the left of the Access tab tells you when an Access property has been
configured. The check marks in the tabs down the right of the dialog indicate which property is configured.
Click the other tabs to define more properties for the object. Most properties work together;
for example, an object could possess color fill, movement, and scaling properties simultaneously.
Clear Property
Click Clear Property to remove the configuration details for this property.
Apply
Click Apply to bring your changes into effect. Apply allows you to view your changes
without closing the Properties dialog.
325
See Also
Object Properties
Manipulating Objects
Objects can be manipulated in various ways, such as moving, resizing, and grouping.
See Also
Selecting objects
Moving objects
Resizing objects
Deleting objects
Locking/unlocking objects
Grouping objects
Copying and pasting objects
Changing the Overlap of Objects
Aligning objects
Rotating objects
Mirroring objects
Locate an object
Selecting objects
To select a single object:
In Graphics Builder, click Select.
Click the object. The objects sizing handles appear, and the cursor changes from an arrow to a hand while on the object.
Note: To add other objects to the selection, hold the Ctrl key and click each object in turn.
To deselect an object from a group selection, while still holding the Ctrl key, click the object
again. To select all objects in the drawing, use Select All from the Edit menu. To deselect
all objects, click anywhere other than on an object.
To select a group of objects using a marquee box:
In Graphics Builder, click Select.
Click and hold the left mouse button and drag the cursor across the page. This creates a
temporary bounding box. Any objects within the box will be selected when you release
the mouse button.
Release the mouse button.
Note: To add other objects to the selection, or remove objects from the selection, hold the
Ctrl key and click each object in turn. To quickly select all objects in the drawing, you can
use Select All from the Edit menu. To deselect all objects, click anywhere other than on an
object.
See Also
Manipulating Objects
Moving objects
Moving objects
You can move an object if you want by clicking the object and dragging it to the new location.
326
If you move an object as soon as you select it, an outline of the object boundary displays as
you move it on your page. If you hold the mouse stationary for 1 sec or more before you
move the object, the object itself displays as you move it, enabling you to better see the result for a more accurate placement.
See Also
Manipulating Objects
Resizing objects
Resizing objects
You can resize objects simply.
To re-size an object:
Select the object, and then move the cursor over a sizing handle. The cursor changes to
a two-sided arrow showing the directions that you can drag the handle to resize the object.
Click and drag the handle to a new location. The objects bounding box appears as you
drag.
Release the mouse button.
Select a sizing handle at a corner of the object to change the height and width at the same
time. If you hold the CTRL key while you move a corner sizing handle, the object maintains
its aspect ratio (that is, a square remains a square).
To select an objects node:
Select the object. Node selection is only applicable to a Line, Pipe, Polyline, or Polygon
object.
Position and hold the mouse pointer over the node. The mouse pointer will change to a
small cross shape.
Click the left mouse button. The color of the selected node will change to the inverse of
the background (light on a dark background, dark on a light background).
If you have a node selected and then click another node within the same object, the first
node will deselect. To select multiple nodes, hold down the Ctrl key and click each node
you want to select. (With the Ctrl key held down, you can click a previously selected node
to deselect it.) Clicking the same node again toggles the selection of the node alternately on
and off. To deselect all nodes, click anywhere other than on a node.
To move a node of an object:
Select the node(s).
Position and hold the mouse pointer over the node. The mouse pointer will change to a
small cross shape.
Click and hold the left mouse button. The cursor changes to a positioning symbol.
Drag the selected node(s) to the desired position.
Release the mouse button.
Selecting and moving multiple nodes maintains the aspect ratio of the graphic object between the selected nodes.
To add a node to an object:
Select the object.
Position and hold the mouse pointer directly over the graphic object at the exact point
where the new node will be added. The mouse pointer will change to a pointing hand
shape.
327
Deleting objects
You can delete unwanted objects.
To delete an object (or a group of objects):
Select the object (or group of objects)
Choose Edit|Delete or press the Delete key (or a minus (-) key).
See Also
Manipulating Objects
Locking/unlocking objects
Locking/unlocking objects
On complex drawings (with many objects), selecting a discrete group of objects without including all objects (in the selected area) can be difficult (for example when an object is hidden by another object). To avoid unintentionally selecting an object, you can lock it in
position. When an object is locked, it cannot be selected, deleted, moved, or edited. Objects are locked only when the Edit menu Break Lock Mode option is not selected.
To lock an object:
Select the object.
Choose Edit | Lock Object.
To unlock an object:
Choose Edit | Break Lock Mode.
Select the object.
Choose Edit | Unlock Object.
See Also
Manipulating Objects
Grouping objects
Grouping objects
You can group objects to make them easier to manipulate.
To group objects:
Click Select.
Select the objects to group, and then click Group (or choose Arrange | Group Objects).
To ungroup objects:
328
Click Select.
Select the objects to group, and then click Ungroup (or choose Arrange | Ungroup Objects).
To change the properties of a group:
Click Select.
Double-click the group. The Properties dialog box appears.
Change the properties as required.
Alternatively, choose Tools | Goto Object, select the group, and then click OK.
See Also
Manipulating Objects
Copying and pasting objects
329
An object can be moved backwards and forwards one step at a time (rather than all the way
to the back, or all the way to the front).
To send an object (or group of objects) one step backwards:
Click Select.
Select the object (or group of objects).
Click Send Backwards or choose Arrange | Send Backwards.
An object can be moved backwards and forwards one step at a time (rather than all the way
to the back, or all the way to the front).
To bring an object (or group of objects) one step forwards:
Click Select.
Select the object (or group of objects)
Click Bring Forwards or choose Arrange | Bring Forwards.
330
See Also
Manipulating Objects
Aligning objects
Aligning objects
You can precisely align a group of objects vertically, horizontally, or both.
To align objects:
Click Select.
Select the objects.
Choose Arrange | Align. The Align dialog box appears.
Option
Vertical
Horizontal
Description
Top
Center
Bottom
Even
Vertically aligns the midpoints of the selected objects with even spacing
None
Left
Center
Right
Even
None
See Also
Manipulating Objects
Rotating objects
Rotating objects
You can rotate an object 90 right (clockwise) or 90 left (counter-clockwise).
To rotate an object (or group of objects):
Click Select.
Select the object(s).
Choose Arrange | Rotate.
To rotate a text object:
331
Click Select.
Select the object(s).
Choose Tools | Convert to Bitmap.
Choose Arrange | Rotate.
Select the direction to rotate the object (or group of objects).
The object(s) are rotated 90 degrees in the direction you select. To rotate the object(s) 180
degrees, click the direction button twice.
See Also
Mirroring objects
Manipulating Objects
Mirroring objects
You can mirror an object relative to its horizontal or vertical axis.
To mirror an object (or group of objects) relative to its horizontal or vertical axis:
Click Select.
Select the object(s)
Choose Arrange | Mirror.
Choose the axis about which to mirror the object (or group of objects).
See Also
Locate an object
Manipulating Objects
Locate an object
You use the Goto Object dialog box to find, select and access the properties of objects on
your current page or on page templates used by the current page. You can select objects,
Genies, symbols, and groups on the page (or template) as well as the graphical elements
that make up those Genies, symbols, and groups.
To locate an object (or a group, Genie, symbol, or page template) on the current page and display its
properties:
Choose Tools | Goto Object.
Locate the object (or group, Genie, symbol, or page template) in the tree structure or
type the relevant AN in the Object AN box.
Objects that are made up of several objects (or other graphical elements) have a plus
sign (+) next to them. Click the + sign to see these component objects.
Double click the object in the tree structure, or click OK to display its properties.
332
[Line] Style
The style of the line. You can choose one of the following line styles:
To change the style, choose a style from the menu to the right of this field.
[Line] Color
The color of the line.
[Fill] Filled
The Filled check box determines whether the object will be filled with a color. If you check
this box, an invisible line is drawn from one end of your line to the other. Everything between the invisible line and your line will be filled.
[Fill] Color
The color with which the object will be filled. The color that you select as your fill color here
is static.
To specify a fill color that changes with runtime conditions, click the Fill tab.
If you have enabled the Fill (Color) properties, be aware that the color you select here will
override the OFF color for Fill Color (On/Off), the ABC color for Fill Color (Multi-state), Array Color 0 for Fill Color (Array), and the At minimum color for Fill Color (Gradient).
For help on the remaining properties tabs, see Defining Common Object Properties.
To change the style, choose a style from the menu to the right of this field.
[Line] Color
The color of the line.
For help on the remaining properties tabs, see Defining Common Object Properties.
Rectangle Objects
Use the Rectangle tool to draw rectangles and squares. Rectangles and squares can be
moved, resized, reshaped, brought to the front and so on, and their properties edited just
like other types of object.
To draw a rectangle:
Click the Rectangle tool.
335
Drag the cursor to the opposite corner of the square and release the mouse button. If you
hold the Shift key (and the Ctrl key) before you start drawing the square, it is drawn
from its center outwards.
When you release the mouse button, the object properties dialog for the square is displayed.
See Also
Rectangle Properties - Appearance (General)
Understanding Object Types
To change the style, choose a style from the menu to the right of this field.
[Line] Color
The outline color of the rectangle.
[Fill] Filled
The Filled check box determines whether the rectangle will be filled with a color.
[Fill] Color
The color with which the rectangle will be filled. The color that you select as your fill color
here is static.
To specify a fill color that changes with runtime conditions, click the Fill tab. If you have
enabled the Fill (Color) properties, be aware that the color you select here overrides the OFF
color for Fill Color (On/Off), the ABC color for Fill Color (Multi-state), Array Color 0 for Fill
Color (Array), and the At minimum color for Fill Color (Gradient).
[Object type] Extra line
Adds an extra line (1 pixel width) of lowlight color to the rectangle, if the rectangle is defined as Raised or Lowered (click the 3D Effects tab).
336
[Gradient] Color
Controls the color of the gradient fill between the fill color and the gradient color. This option is available only when the Filled and Gradient Fill check boxes are selected. The gradient is updated at runtime to reflect the gradient between the two colors selected. Gradient
fills support flashing colors.
Gradients do not rotate with an object; for example, if an object contains a left-to-right gradient fill and is rotated 90 degrees (either at runtime or in Graphics Builder), the gradient
is still left to right.
[Gradient] Direction
The direction to be used for the gradient color. Use the table below as a guide to choose the
gradient color direction you want.
Example
Right to Left
Top to Bottom
Bottom to Top
337
Ellipse Objects
You use the Ellipse tool to draw ellipses, circles, arcs, and pie-slices. Ellipse objects can be
moved, resized, reshaped, brought to the front and so on, and their properties edited just
like other types of object.
To draw an ellipse:
Click the Ellipse tool.
Move the cursor to a corner of the bounding rectangle (marquee) and click (and hold)
the mouse button.
Drag the cursor to the opposite corner of the bounding rectangle and release the mouse
button. If you hold the Shift key before you start drawing the ellipse, it is drawn from
its center outwards.
When you release the mouse button, the object properties dialog for the ellipse is displayed.
To draw a circle:
Click the Ellipse tool.
338
To change the style, choose a style from the menu to the right of this box.
[Line] Color
The outline color of the ellipse.
[Fill] Filled
The Filled check box determines whether the ellipse will be filled with a color.
[Fill] Color
The color with which the ellipse will be filled. The color that you select as your fill color
here is static.
To specify a fill color that changes with runtime conditions, click the Fill tab. If you have
enabled the Fill (Color) properties, be aware that the color you select here will override the
OFF color for Fill Color (On/Off), the ABC color for Fill Color (Multi-state), Array Color 0
for Fill Color (Array), and the At minimum color for Fill Color (Gradient).
[Gradient] Color
339
Controls the color of the gradient fill between the fill color and the gradient color. This option is available only when the Filled and Gradient Fill check boxes are selected. The gradient is updated at runtime to reflect the gradient between the two colors selected. Gradient
fills support flashing colors.
Gradients do not rotate with an object; for example, if an object contains a left-to-right gradient fill and is rotated 90 degrees (either at runtime or in Graphics Builder), the gradient
is still left to right.
[Gradient] Direction
The direction to be used for the gradient color. Use the table below as a guide to choose the
gradient color direction you want.
Example
Right to Left
Top to Bottom
Bottom to Top
340
For a full ellipse, you do not need to specify Start and End angles.
[Object type] Pie-slice
Select this radio button if you want to remove a section from your ellipse (i.e., you want it
to resemble a pie-slice).
If you select this option, you can specify a Start angle, and an End angle:
Start angle
The angle (measured clockwise from 0 degrees) of the section to be removed from the ellipse. For example, if you enter a start angle of 50 degrees, your pie-slice would look something like this:
End angle
The angle (measuring clockwise from 0 degrees) of the section of the ellipse which is to remain. For example, if you enter an end angle of 150 degrees, your pie-slice would look
something like this:
341
Start and End angles can be combined for various effects. For example, a Start angle of 270
degrees, and an End angle of 150 degrees would produce the following pie-slice:
End angle
The angle (measuring clockwise from 0 degrees) defining the segment of the ellipse which
is to remain. For example, if you enter an end angle of 150 degrees, your pie-slice would
look something like this:
Start and End angles can be combined for various effects. For example, a Start angle of 270
degrees, and an End angle of 150 degrees would produce the following arc:
For help with the other properties, see Defining Common Object Properties.
Polygon Objects
Use the Polygon tool to draw polygons and polylines. Polygons can be moved, resized, reshaped, brought to the front and so on, and their properties edited just like other types of
object.
To draw a polygon:
Click the Polygon tool.
Move the cursor to where you want the polygon to start and click and hold the mouse
button.
At the end of the first line segment, release the mouse button.
Move the cursor to each point on the polygon in turn, and click the mouse button (clicking and dragging is not required after the first segment).
342
To draw horizontally or vertically only, hold the Ctrl key down when you are drawing
the polygon.
To complete the polygon, double-click the mouse button.
When you complete the polygon, the object properties dialog is displayed.
To draw a polyline:
Click the Polygon tool.
Move the cursor to where you want the polyline to start and click and hold the mouse
button.
At the end of the first line segment, release the mouse button.
Move the cursor to each point on the polyline in turn and click the mouse button (clicking and dragging is not required after the first segment).
To draw horizontally or vertically only, hold the Ctrl key down when you are drawing
the polyline.
To complete the polyline, double-click the mouse button.
When you release the mouse button, the object properties dialog for the circle is displayed.
Initially, the object will actually be a polygon. To change it to a polyline, in the objects
properties dialog define it as [Object type] Open.
See Also
Polygon Properties - Appearance (General)
Understanding Object Types
To change the style, choose the style you want from the menu to the right of this field.
[Line] Color
The outline color of the polygon.
[Fill] Filled
343
The Filled check box, determines whether the polygon will be filled with a color.
[Fill] Color
The color with which the polygon will be filled. The color that you select as your fill color
here is static.
To specify a fill color that changes with runtime conditions, click the Fill tab. If you have
enabled the Fill (Color) properties, be aware that the color you select here will override the
OFF color for Fill Color (On/Off), the ABC color for Fill Color (Multi-state), Array Color 0
for Fill Color (Array), and the At minimum color for Fill Color (Gradient).
[Gradient] Color
Controls the color of the gradient fill between the fill color and the gradient color. This option is available only when the Filled and Gradient Fill check boxes are selected. The gradient is updated at runtime to reflect the gradient between the two colors selected. Gradient
fills support flashing colors.
Gradients do not rotate with an object; for example, if an object contains a left-to-right gradient fill and is rotated 90 degrees (either at runtime or in Graphics Builder), the gradient
is still left to right.
[Gradient] Direction
The direction to be used for the gradient color. Use the table below as a guide to choose the
gradient color direction you want.
Example
Right to Left
Top to Bottom
344
Bottom to Top
Pipe Objects
Use the Pipe tool to draw pipes with automatic three-dimensional shading. Pipes can be
moved, resized, reshaped, brought to the front and so on, and their properties edited just
like other types of object.
To draw a pipe:
Click the Pipe tool.
345
Move the cursor to where you want the pipe to start, and click and hold the mouse button.
At the end of the first line segment, release the mouse button.
Move the cursor to each point on the path in turn and click the mouse button (clicking
and dragging is not required after the first segment).
To complete the pipe, double-click the mouse button.
When you complete the pipe, the object properties dialog is displayed.
Hint: To draw horizontally or vertically only, hold the Ctrl key down when drawing the
pipe.
Drawing Complex Pipe Arrangements
Use the Pipe tool to draw complex pipe arrangements (including T pieces and junctions).
The illustration below shows some pipes, and the sequence of mouse clicks needed to draw
each of them:
Hint: Use the grid to assist in accurate positioning for each click.
See Also
Pipe Properties - Appearance (General)
Understanding Object Types
Text Objects
Use the Text tool to type text on the page. Text can be moved, resized, reshaped, brought
to the front and so on, and their properties edited just like other types of object.
To add text:
Click the Text tool.
Type your text on the keyboard. (Press Enter to start a new line.)
Move the cursor to where you want to position the text and click the left mouse button.
When you click the mouse button to place the text, the object properties dialog is displayed.
See Also
Text Properties - Appearance (General)
Understanding Object Types
347
at this field, as you can apply text changes at the same time as you apply other font and
color changes.
This text changes automatically depending on the Display Value properties that you define.
Foreground
The color of the text.
Note: There are several radio buttons in Display Value (On/Off, Multi-state and so on).
When selected, these radio buttons change the appearance of the right hand side of the dialog.
See Also
Text Properties - Appearance (Display Value)
349
To display different messages about the status of a valve, you could fill out the Conditions
and State text fields as follows:
Conditions
State text
Open Feedback
ABC
Valve Inoperable
Close Feedback
ABC
Valve Inoperable
Open Output
ABC
Valve Closed
ABC
Valve Inoperable
ABC
Valve Inoperable
ABC
Valve Open
ABC
Valve Inoperable
ABC
Valve Inoperable
In this example, Open_Feedback and Close_Feedback are variable tags representing digital inputs on the valve; Open_Output is a variable tag representing an output on the valve.
So, ABC means Open_Feedback is on, and Close_Feedback and Open_Output are both
off. For this combination, the text "Valve Inoperable" will display, because the valve is open
when it should be closed. The same type of logic applies to the rest of the states.
Click Clear Property to clear property details and disable the property.
See Also
Text Properties - Appearance (Display Value)
Text Properties - Appearance Display Value (On/Off)
Text Properties - Appearance Display Value (Array)
Text Properties - Appearance Display Value (Numeric)
Text Properties - Appearance Display Value (String)
Text Properties - Appearance Display Value (Array)
Text has the following Array Display Value properties:
Array expression
Enter the expression which is to return one or more integers. For each returned integer, a
different piece of text is displayed.
If the return value is:
Less than 0 (zero), it will be set to 0 (zero), and a runtime hardware alarm will be triggered.
Greater than 255, it will be set to 255, and a runtime hardware alarm will be triggered.
A real (non-integer) number, it will be rounded off to the nearest integer.
To insert a tag or a function, click the Wizard button to the right of this field. This button
displays two options: Insert Tag and Insert Function.
Array text
The text that is to display for each integer returned by the Array expression entered above.
You can enter any keyboard character(s).
For example, to display different messages about the status of a motor, you could fill out
the Array expression and Array text fields as follows:
Array expression
350
Array text
MOTOR_STATUS
Running
Starting
Stopping
Stopped
Faulted
Isolated
To insert a tag or a function, click the Wizard button to the right of this field. This button
displays two options: Insert tag and Insert Function.
Click Clear Property to clear property details, and disable the property. To define further
properties for the object, click the relevant tabs.
For help on the remaining properties tabs, see Defining Common Object Properties.
See Also
Text Properties - Appearance (Display Value)
Text Properties - Appearance Display Value (On/Off)
Text Properties - Appearance Display Value (Multi-state)
Text Properties - Appearance Display Value (Array)
Text Properties - Appearance Display Value (Numeric)
Number Objects
Use the Number tool to represent a tag or expression as a number. When you place a number on your page, all you have to do is enter the relevant variable tag or expression. Numbers can be moved, resized, brought to the front, and so on, and their properties edited just
like other types of object.
(The same functionality is also available through the Text tool.)
To add a number to your graphics page:
Click the Number tool.
Move the cursor to where you want the number to display and click the mouse button.
The Text Properties dialog box appears where you enter the relevant variable tag or expression.
For help on the various Properties tabs, see Text Properties - Appearance (General) and
Defining Common Object Properties.
Button Objects
Use the Button tool to draw buttons on graphics page. You can then assign security rights
and attach commands to it.
Buttons can be moved, resized, reshaped, brought to the front, and so on, and their properties edited just like other types of object.
To draw a button:
Click the Button tool.
Move the mouse to where you want the button to start and press (and hold) the mouse
button.
Drag the mouse to where you want the button to finish and release the mouse button.
When you release the mouse button, the object properties dialog is displayed.
See Also
Button Properties - Appearance (General)
Understanding Object Types
352
Font
The font used to display the text. Use the scroll bar to the right to view available fonts, or
type all or part of a font name directly into this field.
Note: The Background Color property is no longer supported for button fonts. Any imported buttons from a previous version will have the Background Color set to the default
color.
Style
Select whether you would like the text to be Regular, Bold, Bold Italic, or Italic.
Size
Define the size of the text (point size). Available sizes might vary according to the selected
printer and the selected font.
Custom Fill Color
Select this check box to enable the Fill Color Up and Fill Color down boxes.
Fill Color Up
The button color when in the Up state.
Fill Color Down
The button color when in the Down state.
Note: Fill Color Up and Down options available for Text and Symbol Types only.
[Alignment] Left
Select this radio button to left-align multi-line text. The aligned text will remain in the center of the button. This has no effect on single lines of text.
[Alignment] Right
353
Select this radio button to right-align multi-line text. The aligned text will remain in the center of the button. This has no effect on single lines of text.
[Alignment] Center
Select this radio button to center-align multi-line text. The aligned text will remain in the
center of the button. This has no effect on single lines of text.
[Effect] Strikeout
Select this box to make the text appear with a line through it.
[Effect] Underline
Select this box to underline the text.
Text
This field contains the text that will display on the page. You can enter any keyboard character(s). You can edit the text here, or directly from the graphics page. It is useful to edit text
at this field, as you can apply text changes at the same time as you apply other font and
color changes.
This text changes automatically depending on the Display Value properties that you define.
Foreground
The color of the text.
[Type] Symbol
Select this option to display a symbol on the button. If you select this option, the Set button
will display to the right of the dialog.
Click Set to choose the symbol which is to display on the button. A picture of the selected
symbol will also display.
[Type] Target
When this option is selected, the button will not have any text or symbols on it, and it will
have a transparent face.
Mode
There are three different modes of transparent buttons:
BORDER_3D: The button is drawn with only the 3-D border (transparent face).
BORDER: The button is drawn with only a thin line border.
TARGET: The button is totally transparent. This constitutes a screen target.
For help on the remaining properties tabs, see Defining Common Object Properties.
Move the mouse pointer to the desired position on the page, and click with the left
mouse button.
When you click the mouse button, the object properties dialog is displayed.
Fill out the relevant properties for the symbol set, and click OK.
Note: There are several radio buttons in Symbol Sets Appearance (described below). When
selected, these radio buttons change the appearance of the right hand side of the dialog.
[Type] On / Off
Select this radio button to display one symbol when a particular expression is TRUE, and
another when it is FALSE. For example, you could display a red symbol when a particular
variable tag is in alarm, and a green symbol when it is not.
See Symbol Set Properties - Appearance General (On/Off).
[Type] Multi-state
This option is useful when you have several possible conditions, occurring together in different combinations, at different times. Select this option to display different symbols for
each combination.
For example, three digital variable tags (A,B, and C) can each be ON or OFF at any time.
You can display a different symbol for each ON/OFF combination. In other words, you
could display a different symbol for each of the following ON/OFF combinations ABC,
ABC, ABC, ABC, ABC, ABC, ABC, ABC.
See Symbol Set Properties - Appearance General (Multi-state).
[Type] Array
The Array option allows you to enter an expression which returns an integer. For each
unique integer (from 0 to 255), you can display a unique symbol. For example, you could
display a different symbol for each threshold of an analog alarm.
See Symbol Set Properties - Appearance General (Array).
[Type] Animated
Select this radio button to display an actual animation (several different symbols in sequence).
When selected, the radio buttons on the dialog box change the appearance of the right hand
side of the dialog. These radio buttons are only documented once below.
See Symbol Set Properties - Appearance General (Animated).
See Also
Understanding Object Types
The symbol entered in the ON symbol field (below) will display whenever the condition
entered here is TRUE. The symbol entered in the OFF symbol field (below) will display
whenever the condition entered here is FALSE.
To insert a tag or a function, click the Wizard button to the right of this field. This button
displays two options; Insert tag, and Insert Function.
OFF symbol
The symbol that will display whenever the condition entered above is false. Click Set to select a symbol, or Clear to clear the current selection.
For example, you could display the OFF symbol when MIX_RUNNING is false.
ON symbol
The symbol that will display whenever the condition entered above is true. Click Set to select a symbol, or Clear to clear the current selection.
For example, you could display the ON symbol when MIX_RUNNING is true.
Click Apply or OK to bring your changes into effect, or Cancel to discard them and exit.
Click ClearProperty to clear property details, and disable the property. To define further
properties for the object, click the relevant tabs.
See Also
Symbol Set Objects
Symbol Set Properties - Appearance General (Multi-state)
Symbol Set Properties - Appearance General (Array)
Symbol Set Properties - Appearance General (Animated)
Understanding Object Types
356
In this example, Open_Feedback, and Close_Feedback are variable tags representing digital inputs on the valve, and Open_Output is a variable tag representing an output on the
valve. So, ABC means Open_Feedback is ON, and Close_Feedback and Open_Output are
both OFF. For this combination, the inoperable symbol will display, because the valve is
open when it should be closed. The same type of logic applies to the rest of the states.
Click Clear Property to clear property details, and disable the property. To define further
properties for the object, click the relevant tabs.
See Also
Symbol Set Objects
Symbol Set Properties - Appearance General (On/Off)
Symbol Set Properties - Appearance General (Array)
Symbol Set Properties - Appearance General (Animated)
Understanding Object Types
357
For example, to display different symbols illustrating the various states of a motor, you
could fill out the Array expression and Array symbol fields as follows:
358
In this example, AUGER_RUNNING, is a variable tag which is TRUE when the auger is
running. The symbols in the animation frames (Frame 1 onwards) have been designed so
that when displayed in sequence, they animate a running auger. The symbol in the Off animation frame will display when AUGER_RUNNING is FALSE.
Click Apply or OK to bring your changes into effect, or Cancel to discard them and exit.
Click Clear Property to clear property details, and disable the property. To define further
properties for the object, click the relevant tabs.
For help on the remaining properties tabs, see Defining Common Object Properties.
See Also
Symbol Set Objects
Symbol Set Properties - Appearance General (On/Off)
Symbol Set Properties - Appearance General (Multi-state)
Symbol Set Properties - Appearance General (Array)
Understanding Object Types
Trend Objects
The Trend tool allows you to add a trend to the graphics page with the mouse (click and
drag).
After a trend object is drawn, it can be moved, re-sized, re-shaped, brought to the front etc.,
and its properties can be edited, just like any other type of object.
To add a trend to a page:
Click the Trend tool
359
See Also
Trend properties
Insert Trend dialog box
Understanding Object Types
Trend properties
Trends have the following general appearance properties:
Cluster Name
The name of the cluster that runs the trends being graphed. Each trend graph can only communicate with one cluster, so you cannot mix trends from multiple clusters on a single
trend graph.
Note: To mix trends from different clusters on a single trend graph you will need to use
Process Analyst.
If there is only one cluster, or, the client is connected to only one cluster, this property can
be left blank and the value of the single connected cluster is inferred.
If the client is connected to more than one cluster, then this field must be specified.
Pens
The pens (including color) to be displayed on the graph (31 characters maximum). You can
use up to eight pens.
Double-clicking a selected pen or clicking Edit allows you to change the trend tag and pen
color. To insert a trend tag, click Wizard to display theInsert Trend dialog box.
If more than one trend tag is displayed in a trend window and each has a different sample
period, the trend with the smallest sample period is used as the general display period.
Note: If the trend object is part of a group, part of a pasted Genie or symbol, or part of the
pages template, you can still access its properties: hold down the Control (CTRL) key and
double-click the object. Alternatively, choose Goto Object from the Tools menu, click the
object, then click OK. Be aware, however, that if it is part of a pasted Genie or symbol, or
part of the template, you cannot edit existing pens, only new ones.
If you are configuring an SPC control chart, you must add a suffix to the trend tag to indicate the type of SPC. There are SPC templates that are easily configured through Genies.
Use the Genies rather than defining these trend tags for yourself.The following table lists
available SPC types:
360
SPC Definition
SPC Type
<tag name>.X
<tag name>.XCL
<tag name>.XUCL
<tag name>.XLCL
<tag name>.R
<tag name>.RCL
<tag name>.RUCL
<tag name>.RLCL
<tag name>.S
<tag name>.SCL
<tag name>.SUCL
<tag name>.SLCL
PIC117_PV.XCL
Pen 2
PIC117_PV.XUCL
Pen 3
PIC117_PV.XLCL
Pen 4
PIC117_PV.X
If you are using the PageTrend() function to display this trend page, leave these fields blank.
Display all Trend Types as Periodic
When selected, enables all trend pens (both periodic and event) to be displayed as periodic.
Event and periodic trend data can then be displayed on the same graph. If this box is not
selected, event and periodic pens have different styles and must be displayed on separate
graphs.
Note: This option is set by default in the predefined templates designed for use with periodic trends. It will only need to be enabled for customized templates.
[Samples] Number of samples (5 Chars.)
The number of samples (1-32767) you can display in your trend window without scrolling
(i.e., the width of your trend object). The default depends on the number of pixels per sample and your display resolution. The width of a trend object is equal to Pixels per sample
x Number of samples.
Note: For a meaningful trend graph, Pixels per sample x Number of samples should be
less than the width of the display. For example, an XGA screen has a width of 1024 pixels.
If you use 10 pixels per sample, 102 samples can be displayed on the screen without scrolling.
[Samples] Pixels per sample (2 Chars.)
The display width of each sample. The width of a trend object is equal to Pixels per sample
x Number of samples. The default is 1 pixel.
Click Clear Property to clear property details, and disable the property. To define other
properties for the object, click the relevant tabs.
For help on the remaining properties tabs, see Defining Common Object Properties.
361
Cicode Objects
The Cicode Object tool allows you to add a Cicode Object to the graphics page with the
mouse (click and drag).
A Cicode Object can be any command (such as a function and so on). When the graphics
page is displayed at runtime, the command is run continually. Cicode objects can also be
assigned a key sequence, allowing you to enter keyboard commands when it is selected at
runtime.
After a Cicode object is added, it can be moved and so on and its properties edited, just like
other types of object.
To add a Cicode Object to a page:
Click the Cicode Object tool,
The command in this example uses the built-in function DspSymAnm(). The function displays three symbols ("Pumps.Slurry1", "Pumps.Slurry2", "Pumps.Slurry3") continually (at
AN 25).
You can also write generic functions by using the Cicode function DspGetAnCur() to get
the AN number, for example:
Command
DspSymAnm(DspGetAnCur(), "Pumps.Slurry1",
"Pumps.Slurry2", "Pumps.Slurry3");
For help on the remaining properties tabs, see Defining Common Object Properties.
After a symbol is pasted using this tool, it can be moved, resized, reshaped, brought to the
front and so on, and its properties edited just like any other type of object.
Pasted [library] symbols can be linked to their source, so that changes made to the original
are inherited by the pasted symbol.
To display the properties of the objects in the symbol (after pasting), hold the Control
(CTRL) key down and double-click the specific object. Alternatively, choose Tools | Goto
Object, click the object, then click OK.
To learn more about creating symbols, see Using libraries.
To paste a symbol from the library to the page:
Click the Paste Symbol tool or choose Edit | Paste Symbol.
To paste a linked symbol, select the Linked check box. To paste an unlinked symbol, deselect the Linked check box.
To break the link:
Select the symbol.
Choose Edit | Cut Link.
See Also
Paste Symbol dialog box
Symbol Properties - Appearance (General)
Library
The library where the symbol is stored.
Linked
To paste a symbol that maintains the link with its library, check this box. A symbol that is
linked will be automatically updated if the symbol in the library is changed.
You can cut the link at any time with the Cut Link command from the Edit menu, but you
cannot re-link a symbol with the library after the link has been cut.
If you have selected Paste Symbol as Flashing, two dialog boxes appear in sequence, allowing you to choose two images that you want to implement as a flashing symbol. The
Primary Select Symbol dialog allows you to select the initial image used, the Flashing Select Symbol dialog the second image. If the bitmaps are different in size, the flashing symbol is scaled to the size of the primary image. If one of the symbols is itself a flashing
symbol, only the primary state will be displayed.
364
After a Genie is pasted using this tool, it can be resized, rotated, moved, copied, duplicated,
pasted, brought to the front, and so on.
To display the properties of the objects in the Genie (after pasting), hold the Control
(CTRL) key down and double-click the specific object.
ActiveX Objects
You can incorporate ActiveX objects into your project. This means you can use components
that have been developed independently of CitectSCADA.
The ActiveX tool can be used to insert ActiveX objects in graphics pages. After you have
selected and positioned an ActiveX object, it can be moved, re-sized, re-shaped, brought to
the front etc., and its properties can be edited, just like any other object.
For details on configuring these additional tabs, refer to the documentation provided with
the ActiveX object.
See Also
Tag Association
Tag Association
You can create an association between a property of an ActiveX object and a variable tag.
To create an association between a property of an ActiveX object and a variable tag:
Double-click the ActiveX object. The Properties dialog box appears.
Click the Tag Association tab.
Select a property from the Properties list.
Click the Wizard | Insert Tag button.
Select a tag from the list and click OK.
See Also
"ActiveX Object Properties" in CitectSCADA User Guide
"Understanding Object Types" in CitectSCADA User Guide
If you specify a tag which might be inappropriate for the selected ActiveX property, the
Type Evaluation dialog will display an alert. This might happen if:
The types compatible with the property are different from the tag type.
The tag type is smaller than the types compatible with the property, meaning that data
could be truncated or lost.
Bindable
If an object property is "bindable", it means it can automatically send notification of value
changes to CitectSCADA, and acknowledge any value changes from an associated tag. This
means both the property and an associated tag will automatically update whenever the value for either changes.
If a property is not bindable, the property/tag association can only be synchronized according to the event selected in the Update association on Event field.
Be awares that if an object property is bindable, the Update association on Event field will
be automatically set to <Property change notification> by default. You can change this setting if you want the tag association to be updated by a more specific event.
For properties that are not bindable, you can mimic the behavior of <property change notification> by selecting After update for the Update association on Event field.
Property status
This indicates the read/write status of the selected property. With ActiveX objects, some
properties are read-only, whereas others accept value changes. If a property is marked
"read only", it indicates that its value is fixed and can only be read by CitectSCADA. If its
status is read/write, can modify the property during runtime via a tag association.
Update association on Event:
This defines when you want a value update to occur for the selected property and its associated tag. Use the menu to the right of the Event field to view events that can be used to
trigger a tag association update.
The available events that can be used with a particular property are predefined by an objects creator. They typically include user interaction events (for example, mouse clicks),
time events (such as a new day or new month), or value changes (such as "after update").
Property documentation
Most ActiveX objects have documentation describing the objects controls and functionality. Some have a separate Help file included, others, simple text prompts to explain each
property. This depends on what an objects creator has included.
The Property documentation field displays Help information for a selected property, or
give instructions to obtain the Help required for a selected property. Usually the following
message will appear:
"Click the ? button to the right to display the Help topic for this property"
The Help button displays the ActiveX object Help file (if included), usually with the topic
displayed that relates to the selected property. It should also provide information about settings provided on additional tabs the ActiveX object might call up on the properties dialog.
Clear Property
367
The Clear Property button clears the tag associations for ALL the ActiveX object properties.
To clear a tag association for a particular object property, clear the check box to the left of
the property.
If you accidentally click Clear Property, you can restore your tag associations by clicking
Cancel and reopening the ActiveX properties dialog.
Object Identification
You can identify your ActiveX object.
To identify your ActiveX object:
From Graphics Builder, double-click the ActiveX object. The Properties dialog appears.
Click the Access tab.
Click the Identification tab.
Assign your ActiveX object a name in the Object Name field.
Assign your ActiveX object an Event Class.
Click OK.
See Also
Object Properties - Access (Identification)
368
369
370
3D Effects
You can apply 3D effects to objects to make them more realistic.
To apply 3D effects to an object:
Draw the object/group (or paste a symbol). The properties tab dialog will automatically
display, unless you have turned off the Display properties on new option in the Graphics Builder. (For a group, the properties dialog will not display automatically; you must
double-click the group).
Click the Appearance tab.
Click the 3D Effects tab (to the right of the dialog).
The dialog will then display several options to enable you to manipulate your object. To
activate any of these options click the option (or the radio bullet to the left of the option).
By selecting certain options additional fields will display to enable you to further manipulate your object. Enter further details as required, using the Help button for detailed information about each field.
Click OK.
See Also
Object Properties - Appearance (3D Effects)
Defining Common Object Properties
371
Depth
The distance (in pixels) that the shadow extends below and to the right of the object. This
option alters the apparent distance between the object and its shadow, for example:
Shadow color
The color of the shadow. The shadow color will not change dynamically with runtime conditions.
[Effects] Raised
Select this option to display the object as a raised three dimensional solid, for example:
Depth
The distance (in pixels) that the sides of the object extend out from the raised surface. This
option alters the apparent distance from the raised surface down to your graphics page, for
example:
Highlight color
The color of the directly illuminated "edges" of the object.
Lowlight color
The color of the "edges" of the object that are in shadow.
[Effects] Lowered
372
Select this option to display the object as if it is actually lower than your graphics page, for
example:
Depth
The distance (in pixels) that the sides of the object extend out from the lowered surface. This
option alters the apparent distance from the lowered surface up to your graphics page, for
example:
Highlight color
The color of the directly illuminated "edges" of the object.
Lowlight color
The color of the "edges" of the object that are in shadow.
[Effects] Embossed
Select this option to display the object as if it has been embossed on your graphics page, for
example:
Depth
The distance (in pixels) that the embossed surface is lowered. This option alters the apparent distance from the embossed surface up to your graphics page, for example:
Highlight color
The color of the right and lower edges of the object.
373
Lowlight color
The color of the left and upper edges of the object.
Click Apply or OK to save your changes, or Cancel to exit. To define further properties for
the object, click the relevant tabs.
Visibility
You can determine whether an object is visible or not.
To hide/unhide an object:
Double click the object you would like to hide.
Select the Appearance tab.
Select the Visibility tab (to the right of the dialog).
Click the Wizard button to the right of the Hidden when field.
Select either Insert Tag or Insert Function depending on which you would like to relate
to your object.
Enter an expression in the Hidden when field. When this expression is true your object
will be hidden.
Click OK.
See Also
Object Properties - Appearance (Visibility)
Defining Common Object Properties
374
Movement
You can control the movement of objects.
To configure an object or group that moves:
Draw the object/group (or paste a symbol). The properties tab dialog automatically display, unless you have turned off the Display properties on new option in the Graphics
Builder. (For a group, the properties dialog will not display automatically; you must
double-click the group.)
Click the Movement tab.
Click the Horizontal, Vertical or Rotational tab (to the right of the dialog).
Enter a Movement expression (the expression that will move the object/group at runtime).
Enter further details as required, using the Help button for detailed information about
each field.
Click OK.
See Also
Object Properties - Movement (Horizontal)
Object Properties - Movement (Vertical)
Object Properties - Movement (Rotational)
Group and object movement - examples
Scale values, the defaults are 0 (zero) and 32000. For expressions without tags, the defaults
are 0 (zero) and 100.
[Movement expression] Minimum
Enter the minimum value for the expression. When this value is returned by the expression,
the object/group will shift to the left, by the At minimum offset. You can only enter a value
here if you have selected the Specify range box.
[Movement expression] Maximum
Enter the maximum value for the expression. When this value is returned by the expression, the object/group will shift to the right, by the At maximum offset. You can only enter
a value here if you have selected the Specify range box.
[Offset] At minimum
The distance (number of pixels from the original object/group center) that the object/group
will shift to the left when the Movement expression returns its minimum value.
You can change the offset value by pressing the up and down arrows to the right of the
field, or by entering another value in this field.
[Offset] At maximum
The distance (number of pixels from the original object/group center) that the object/group
will shift to the right when the Movement expression returns its maximum value.
You can change the offset value by pressing the up and down arrows to the right of the
field, or by entering another value in this field.
Note: You can shift the object/group right at minimum and left at maximum, by entering
negative distances in the Offset fields, or by swapping the expression limits (in the Minimum and Maximum fields).
Click Clear Property to clear property details, and disable the property.
See Also
Object Properties - Movement (Vertical)
Object Properties - Movement (Rotational)
imum value, the object/group will shift down to its lowest position. When the expression
returns its maximum, the object/group will shift up to its highest position. For intermediate
values, the object/group will move to the appropriate position between the minimum and
maximum offset.
To insert a tag or a function, click the Wizard button to the right of this field. This button
displays two options: Insert Tag and Insert Function.
[Movement expression] Specify range
Select this box to manually specify Minimum and Maximum values for the movement expression, rather than using the default values. For an expression containing an analog variable tag, the defaults are the Engineering Zero and Full Scale values from the last variable
tag in the expression. If the analog variable tag does not have Engineering Zero and Full
Scale values, the defaults are 0 (zero) and 32000. For expressions without tags, the defaults
are 0 (zero) and 100.
[Movement expression] Minimum
Enter the minimum value for the expression. When this value is returned by the expression,
the object/group will shift down, by the At minimum offset. You can only enter a value
here if you have selected the Specify range box.
[Movement expression] Maximum
Enter the maximum value for the expression. When this value is returned by the expression, the object/group will shift up, by the At maximum offset. You can only enter a value
here if you have selected the Specify range box.
[Offset] At maximum
The distance (number of pixels from the original object/group center) that the object/group
will shift up when the Movement expression returns its maximum value.
You can change the offset value by pressing the up and down arrows to the right of the
field, or by entering another value in this field.
[Offset] At minimum
The distance (number of pixels from the original object/group center) that the object/group
will shift down when the Movement expression returns its minimum value.
You can change the offset value by pressing the up and down arrows to the right of the
field, or by entering another value in this field.
Note: You can shift the object/group up at minimum and down at maximum, by entering
negative distances in the Offset fields, or by swapping the expression limits (in the Minimum and Maximum fields).
See Also
Object Properties - Movement (Horizontal)
Object Properties - Movement (Rotational)
This property could be used to display an aerial view of the movement of a circular stacker
in a coal mining operation.
Note: Rotational Movement cannot be used if the Rotational Slider is enabled. A group and
its objects can be configured with any movement combination (i.e. a group can move vertically while one of its objects rotates, and so on).
Objects and groups have the following rotational movement properties:
Angle expression(253 Chars.)
The value of the expression entered in this field will determine the rotation of the object/
group. During runtime, when the expression returns its minimum value, the object/group
will rotate to its anti-clockwise limit. When the expression returns its maximum, the object/
group will rotate to its clockwise limit. For intermediate values, the object/group will rotate
to the appropriate position between the minimum and maximum limits.
To insert a tag or a function, click the Wizard button to the right of this field. This button
displays two options: Insert Tag and Insert Function.
[Angle expression] Specify range
Select this box to manually specify Minimum and Maximum values for the angle expression, rather than using the default values. For an expression containing an analog variable
tag, the defaults are the Engineering Zero and Full Scale values from the last variable tag
in the expression. If the analog variable tag does not have Engineering Zero and Full Scale
values, the defaults are 0 (zero) and 32000. For expressions without tags, the defaults are 0
(zero) and 100.
[Angle expression] Minimum
Enter the minimum value for the expression. When this value is returned by the expression,
the object/group will rotate anti-clockwise, by the minimum offset. You can only enter a
value here if you have selected the Specify range box.
[Angle expression] Maximum
Enter the maximum value for the expression. When this value is returned by the expression, the object/group will rotate clockwise, by the maximum offset. You can only enter a
value here if you have selected the Specify range box.
[Angle] At minimum
The anti-clockwise angle (in degrees relative to 0 degrees) that the object/group will rotate
when the Angle expression returns its minimum value.
You can change the angle by pressing the up and down arrows to the right of the field, or
by entering another value in this field.
[Angle] At maximum
The clockwise angle (in degrees relative to 0 degrees) that the object/group will rotate when
the Angle expression returns its minimum value.
You can change the angle value by pressing the up and down arrows to the right of the
field, or by entering another value in this field.
Note:You can rotate the object/group clockwise at minimum and anti-clockwise at maximum, by entering negative angles in the Angle fields, or by swapping the expression limits
(in the Minimum and Maximum fields).
378
379
Example 2: Rotating the group and moving the object up and down
If your group is configured to rotate from 0 degrees to 60 degrees, and one of its objects is
configured to move up and down, the object will do both. It will move up and down as per
its own properties, and, at the same time, it will rotate as part of the group. Remember,
however, that up and down are relative to the original orientation of the group, not the
page. As the group rotates, vertical also rotates. When the group has rotated 15 degrees,
up is actually 15 degrees (not 0 degrees), and down is actually 195 degrees (not 180 degrees). When the group has rotated 50 degrees, up is 50 degrees, and down is 230 degrees, and so on.
Original state of group
Example 3: Rotating the group clockwise and rotating the object anticlockwise
If your group is configured to rotate from 0 degrees-60 degrees, and one of its objects is configured to rotate from 90 degrees-0 degrees, the object will do both. It will rotate as per its
own properties, and, at the same time, it will rotate as part of the group. Remember, however, that the objects rotation is relative to the group, not the page. If the group rotates 60
degrees to the right, and the object rotates 90 degrees to the left, the object has only rotated
30 degrees to the left relative to the page.
Original state of group
380
Note: By moving the ellipse as shown in the above examples, you are actually changing the
overall size of the group. It is important to remember this as it might affect object fill levels.
See Also
Movement
Defining Common Object Properties
Scaling
You can scale objects to the size you want.
To configure an object or group that changes size:
Draw the object (or paste a symbol). The object properties tab dialog will automatically
display, unless you have turned off the Display properties on new option in the Graphics Builder.
Click the Scaling tab.
Click the Horizontal or Vertical tab (to the right of the dialog).
Enter a Scaling expression (the expression that will change the size of the object at runtime).
Enter further object property details as required, using the Help button for detailed information about each field.
Click OK.
See Also
Object Properties - Scaling (Horizontal)
Object Properties - Scaling (Vertical)
Defining Common Object Properties
381
For example, an aerial view of a paper roll (in a paper mill), could display changing roll
thickness:
You can change the percentage by pressing the up and down arrows to the right of the field,
or by entering another value in this field. Percentages of greater than 100% can be entered.
Note: You can increase the width at minimum, and decrease it at maximum, by swapping
the percentages in the Scaling fields (i.e. put the high percentage in the At minimum field,
and the low in the At maximum), or by swapping the expression limits (in the Minimum
and Maximum fields).
[Center axis offset] Express
Click this radio button for the quick and easy way of selecting one of three of the objects
vertical axes (left, center, and right). These axes appear in the picture field to the right of the
dialog.
If you choose Left, all width changes occur to the right of the object. (i.e., the left edge remains anchored):
If you choose Center, width changes occur equally to both sides. (i.e., the vertical center
axis remains anchored):
If you choose Right, all width changes occur to the left of the object. (i.e., the right edge remains anchored):
configured to double in size at runtime, and one of its objects is configured to halve in size,
the object will appear to remain the same size (it halves, then doubles). Remember, however, that the objects position might change as the group gets bigger.
See Also
Object Properties - Scaling (Vertical)
384
Enter the maximum value for the expression. When this value is returned by the expression, the height of the object will be increased to its maximum. You can only enter a value
here if you have selected the Specify range box.
[Scaling] At minimum
The minimum height of the object (as a percentage of its original height). The object will be
reduced to this height when the Scaling expression returns its minimum value. You can
change the percentage by pressing the up and down arrows to the right of the field, or by
entering another value in this field. Percentages of greater than 100% can be entered.
[Scaling] At maximum
The maximum height of the object (as a percentage of its original height). The object will
grow to this height when the Scaling expression returns its maximum value.
You can change the percentage by pressing the up and down arrows to the right of the field,
or by entering another value in this field. Percentages of greater than 100% can be entered.
Note: You can increase the height at minimum, and decrease it at maximum, by swapping
the percentages in the Scaling fields (i.e. put the high percentage in the At minimum field,
and the low in the At maximum), or by swapping the expression limits (in the Minimum
and Maximum fields).
[Center axis offset] Express
Click this radio button to select one of three of the objects horizontal axes (top, middle, and
bottom). These axes appear in the picture field to the right of the dialog. Click an axis to
select it.
If you choose the top, all height changes will occur from the top of the object down. (i.e. the
top edge will remain anchored):
If you choose the middle, height changes will occur equally above and below the axis. (i.e.
the horizontal center axis will remain anchored):
If you choose the bottom, all width changes will occur to the top edge of the object. (i.e. the
bottom edge will remain anchored):
385
Fill Color
You can control the fill color to use for your objects.
To configure an object or group with changing fill color:
Draw the object/group (or paste a symbol). The properties tab dialog will automatically
display, unless you have turned off the Display properties on new option in the Graphics Builder. (For a group, the properties dialog will not display automatically; you must
double-click the group.)
Click the Fill tab.
Click the Color tab (to the right of the dialog).
Select the type of color change (On/Off, Multi-state and so on).
Enter the expression/conditions that will change the objects fill color at runtime.
Enter additional object property details as required.
Click OK.
See Also
Object Properties - Fill Color (On/Off)
Object Properties - Fill Color (Multi-state)
Object Properties - Fill Color (Array)
Object Properties - Fill Color (Threshold)
Object Properties - Fill Color (Gradient)
386
ON color
The fill color whenever the condition entered above is TRUE. For example, you could fill
the object/group with blue when MIX_RUNNING is TRUE.
Note: Group fill color is only applied if the individual objects in the group do not have their
own fill colors defined.
See Also
Object Properties - Fill Color (Multi-state)
Object Properties - Fill Color (Array)
Object Properties - Fill Color (Threshold)
Object Properties - Fill Color (Gradient)
388
The conditions you enter here (using a maximum of 128 characters per condition) will occur together in different ways, at different times. You can use each unique combination to
force a different fill color for the object/group.
To enter a condition, click the relevant line (A, B, C, and so on), click Edit, and type in the
condition. You can add more conditions (to a maximum of 5, providing 32 combinations),
using the Add button. To insert a tag or function, click the Wizard button. This button displays two options: Insert Tag and InsertFunction. You can also remove conditions by clicking Delete, but you must always provide at least one condition in this field. Conditions left
blank (instead of deleted) are evaluated as false at runtime.
State colors
The fill colors that will be used for each combination of the above conditions.
Note: The color that you select as ABC (all conditions false) will change any Fill color specified through Appearance (General) properties tab.
For example:
To fill the object/group with a different color each time the status of a valve changes, you
could fill out the Conditions and State symbols fields as follows:
In this example, Open_Feedback, and Close_Feedback are variable tags representing digital inputs on the valve, and Open_Output is a variable tag representing an output on the
valve. So, ABC means Open_Feedback is ON, and Close_Feedback and Open_Output are
both OFF. For this combination, the red is used as the fill color to indicate that the valve is
not responding to commands, because it is open when it should be closed. The same type
of logic applies to the rest of the states.
Note: Group fill color is only applied if the individual objects in the group do not have their
own fill colors defined.
See Also
Object Properties - Fill Color (On/Off)
Object Properties - Fill Color (Array)
Object Properties - Fill Color (Threshold)
Object Properties - Fill Color (Gradient)
Select this radio button to fill the object/group with one color when a particular expression
is TRUE, and another when it is FALSE. For example, you could fill an object/group with
red when a particular variable tag is in alarm, and green when it is not.
[Type] Multi-state
This option is useful when you have several possible conditions, occurring together in different combinations, at different times. Select this option to fill the object/group with a different color for each combination.
For example, three digital variable tags (A,B, and C) can each be ON or OFF at any time.
You can fill the object/group with a different color for each ON/OFF combination. In other
words, you could use a different fill color for each of the following ON/OFF combinations
ABC, ABC, ABC, ABC, ABC, ABC, ABC, ABC.
[Type] Array
The Array option allows you to enter an expression which returns an integer. For each
unique integer (from 0-255), you can fill the object/group with a different color. For example, you could use a different fill color for each threshold of an analog alarm.
[Type] Threshold
Select this radio button to dynamically change the fill color when an expression reaches a
specific value (threshold). For example, you might decide that the fill color should change
to red when the speed of a motor is greater than or equal to 4500 rpm, and to white when
less than or equal to 100 rpm, but remains gray for all speeds in between.
[Type] Gradient
Select this radio button to dynamically graduate the fill color, displaying a different color
for each unique value returned by a particular expression. This option allows you to select
two colors, to be used as the color limits. The color for each value returned is automatically
selected from within the range defined by these limits. The result is a fade from one color
to another.
Array expression (128 Chars.)
Enter the expression which is to return an integer. For each value returned, a different color
will fill the object/group.
If the return value is:
Less than 0 (zero), it will be set to 0 (zero), and a runtime hardware alarm will be triggered.
Greater than 255, it will be set to 255, and a runtime hardware alarm will be triggered.
A real (non-integer) number, it will be truncated (for example 8.1 and 8.7 would both be
truncated to 8).
To insert a tag or a function, click the Wizard button to the right of this field. This button
displays two options: Insert Tag and Insert Function.
Array colors
The fill colors that will be used for each integer returned by the Array expression entered
above (color 0 will be used when the expression returns integer 0, color 1 will be used when
integer 1 is returned and so on).
Note: The color that you select for color 0 (zero) will change any Fill color specified through
Appearance - General tab.
390
For example, to display different symbols illustrating the various states of a motor, you
could fill out the Array expression and Array symbol fields as follows:
391
Select this radio button to dynamically change the fill color when an expression reaches a
specific value (threshold). For example, you might decide that the fill color should change
to red when the speed of a motor is greater than or equal to 4500 rpm, and to white when
less than or equal to 100 rpm, but remains gray for all speeds in between.
[Type] Gradient
Select this radio button to dynamically (and smoothly) graduate the fill color, displaying a
different color for each unique value returned by a particular expression. This option allows you to select two colors, to be used as the color limits. The color for each value returned is automatically selected from within the range defined by these limits. The result
is a smooth fade from one color to another.
Color expression
The value of the expression entered in this field (128 characters maximum) determines the
fill color of the object/group. i.e. When the value of this expression reaches a threshold value (as defined below), fill color will change.
To insert a tag or a function, click the Wizard button to the right of this field. This button
displays two options: Insert Tag and Insert Function.
[Color expression] Specify range
Select this box to manually specify Minimum and Maximum values for the Color expression, rather than using the default values. (Threshold values are percentages of the range
between Minimum and Maximum.) For an expression containing an analog variable tag,
the defaults are the Engineering Zero and Full Scale values from the last variable tag in the
expression. If the analog variable tag does not have Engineering Zero and Full Scale values,
the defaults are 0 (zero) and 32000. For expressions without tags, the defaults are 0 (zero)
and 100.
[Color expression] Minimum
Enter the minimum value for the expression. In terms of thresholds, the Minimum is 0%.
You can only enter a value here if you have selected the Specify range box.
[Color expression] Maximum
Enter the maximum value for the expression. In terms of thresholds, the Maximum is 100%.
You can only enter a value here if you have selected the Specify range box.
Thresholds (%)
The thresholds and their associated colors. A threshold is entered as a percentage of the expression range (the range of values that can be returned by the expression). For example, if
the expressions minimum is 0 and its Maximum 200, the default thresholds would have
the following effects:
392
Threshold
Associated Color
Meaning
< 5%
Bright Blue
< 15%
Blue
> 85%
Red
> 95%
Bright Red
You can add up to 100 threshold color combinations. To add a combination, click Add and
enter the relevant details. To edit an existing combination, click the relevant line. You can
also remove combinations by clicking Delete.
Any values not included in a range (for example between 15% and 85% in the example
above) produce a static fill color as specified through Appearance - General tab.
Note: Group fill color is only applied if the individual objects in the group do not have their
own fill colors defined.
See Also
Object Properties - Fill Color (On/Off)
Object Properties - Fill Color (Multi-state)
Object Properties - Fill Color (Array)
Object Properties - Fill Color (Gradient)
selected from within the range defined by these limits. The result is a fade from one color
to another.
Color expression
The value of the expression entered in this field (128 characters maximum) will determine
the fill color of the object/group. By default, when the expression returns its minimum value, the fill color will be the At minimum color (as defined below). When the expression returns its maximum value, the fill color will be the At maximum color (as defined below).
When the expression returns a value half-way between its minimum and maximum, a color
will be selected from the half-way point of the range defined by the At minimum and At
maximum colors.
To insert a tag or a function, click the Wizard button to the right of this field. This button
displays two options: Insert Tag and Insert Function.
[Color expression] Specify range
Select this box to manually specify Minimum and Maximum values for the Color expression, rather than using the default values. For an expression containing an analog variable
tag, the defaults are the Engineering Zero and Full Scale values from the last variable tag
in the expression. If the analog variable tag does not have Engineering Zero and Full Scale
values, the defaults are 0 (zero) and 32000. For expressions without tags, the defaults are 0
(zero) and 100.
[Color expression] Minimum
Enter the minimum value for the expression. When this value is returned by the expression,
the fill color of the object/group will be the At minimum color. You can only enter a value
here if you have selected the Specify range box.
[Color expression] Maximum
Enter the maximum value for the expression. When this value is returned by the expression, the fill color of the object/group will be the At maximum color. You can only enter a
value here if you have selected the Specify range box.
At minimum
The fill color of the object/group when the Color expression returns its minimum value.
Note: The color that you select here will change any Fill color specified through Appearance - General tab.
At maximum
The fill color of the object/group when the Color expression returns its maximum value.
Note: Group fill color is only applied if the individual objects in the group do not have their
own fill colors defined.
See Also
Object Properties - Fill Color (On/Off)
Object Properties - Fill Color (Multi-state)
Object Properties - Fill Color (Array)
Object Properties - Fill Color (Threshold)
394
Fill Level
You can control the fill level shown in your objects.
To configure an object or group with changing fill level:
Draw the object/group (or paste a symbol). The properties tab dialog will automatically
display, unless you have turned off the Display properties on new option in the Graphics Builder. (For a group, the properties dialog will not display automatically; you must
double-click the group.)
Click the Fill tab.
Click the Level tab (to the right of the dialog).
Enter a Level expression (the expression that will change the fill level of the object/
group at runtime).
Enter additional properties as required.
Click OK.
See Also
Object Properties - Fill (Level)
Defining Common Object Properties
396
Example 2: Group the objects and configure a fill level for the group as well
In this example, the objects fill levels can still be adjusted normally. The groups fill level
determines how much of the objects you can see (and how much will be obscured by the
groups background color; white, in this case).
Touch Commands
You can assign touch commands to an object or group.
To assign a touch command to an object or group:
Draw the object/group (or paste a symbol). The properties tab dialog will automatically
display, unless you have turned off the Display properties on new option in the Graph397
ics Builder. (For a group, the properties dialog will not display automatically; you must
double-click the group.)
Click the Input tab.
Click the Touch tab (to the right of the dialog).
Enter a command in the command field (the command that will be executed when the
object/group is touched at runtime).
Enter further details as required, using the Help button for detailed information about
each field.
Click OK.
See Also
Object Properties - Input (Touch)
Defining Common Object Properties
pointer away from the object/group without releasing the mouse button, the command will
stop executing, but will start again as soon as the mouse pointer is re-positioned over the
object/group. The only exception is when you also have the Down option selected, in which
case, the command will execute continually even if the mouse pointer has been moved
away from the object/group.
To set the delay which precedes the first execution of the command (and the first log of the
message), and the delay between each repeat.
Up/Down/Repeat command
The commands (set of instructions) to be executed immediately when the selected action is
performed. The command(s) can be a maximum of 253 characters long.
To insert a tag or a function, click the Wizard button to the right of this field. This button
displays two options: Insert Tag and Insert Function.
[Logging] Log Message
The text message sent to the MsgLog field of the Log Device when the selected action is performed by the operator at runtime. The message is plain text, and can include tag name
substitutions using Genie or Super Genie syntax. When using Super Genie syntax, the data
type must be specified. The name of the tag will then be included in the text. The log message can be a maximum of 32 characters long.
To include field data as part of a logged message, insert the field name as part of the device
format when configuring the device. For instance, in the Format field of the Devices form,
you could enter {MsgLog,20} {FullName,15}. This would accommodate the logging of messages such as P2 started by John Smith.
The log device to which the message is sent is specified through the General Access tab.
Note: If the object is part of a Genie or symbol, this property can be defined after the Genie/
symbol is pasted onto a page. (Hold down the Control (CTRL) key and double-click the object.) If you define it before pasting (i.e. you define it for the original in the library), you cannot edit it after. Similarly, if the object is part of a template, it can be defined after a page
has been created using that template (again, with Control + double-click). If you define it
for the actual template, you cannot edit it for pages based on the template.
Repeat rate
This option sets the delay which precedes the first execution of the command(s), and the
delay between each subsequent repeat of the command(s).
You can change the rate by pressing the up and down arrows to the right of the field, or by
entering another value in this field.
Note: If you define a touch command for an object in a group, the groups touch command
will not work.
Keyboard Commands
You can assign a keyboard command to an object or group.
399
400
Select this box to assign the keyboard command to the same area as the object/group. Only
users with access to this area (and any required privileges) will be able to issue this command or log the message. If you want to assign this keyboard command to another area, do
not select this box; instead, enter another area below.
[Security] Command area
Enter the area to which this keyboard command belongs. Only users with access to this area
(and any required privileges) will be able to issue this command or log the message. For
example, if you enter Area 1 here, operators must have access to Area 1 (plus any required
privileges) to issue this command.
Click the menu to the right of this field to select an area, or type in an area number directly.
Note: If the object is part of a Genie or symbol, this property can be defined after the Genie/
symbol is pasted onto a page (Ctrl + double-click). Similarly, if the object is part of a template, this property can be defined after a page has been created using that template (Ctrl
+ double-click).
You can leave this field blank by selecting the Same privilege as object/group box.
[Security] Same privilege as object/group
Select this box to assign the keyboard command the same privilege as the object/group.
Only users with this privilege level will be able to issue this command, or log the message.
If you want to assign this keyboard command a different privilege, do not select this box;
instead, enter another privilege below.
[Security] Privilege level
Enter the privilege level that a user must possess to be able to issue this command or log
the message. For example, if you enter Privilege Level 1 here, operators must possess Privilege Level 1 to be able to issue this command. You can also combine this restriction with
area restrictions. For example, if you assign the keyboard command to Area 5, with Privilege Level 2, the user must be set up with Privilege 2 for Area 5.
Click the menu to the right of this field to select a privilege, or type in an area number directly.
Note: If the object is part of a Genie or symbol, this property can be defined after the Genie/
symbol is pasted onto a page (Ctrl + double-click). Similarly, if the object is part of a template, this property can be defined after a page has been created using that template (Ctrl
+ double-click).
You can leave this field blank by selecting the Same privilege as object/group box.
[Logging] Log Message
The text message sent to the MsgLog field of the Log Device when the selected action is performed by the operator at runtime. The message is plain text, and can include tag name
substitutions using Genie or Super Genie syntax. When using Super Genie syntax, the data
type must be specified. The name of the tag will then be included in the text. The message
can be a maximum of 32 characters long.
401
If you want to include field data as part of a logged message, you must insert the field name
as part of the device format when you configure the device. For instance, in the Format field
of the Devices form, you could enter {MsgLog,20} {FullName,15}. This would accommodate the logging of messages such as P2 started by John Smith.
The log device to which the message is sent is specified through the General Access tab.
Note: If a group and one of its objects are both assigned a keyboard command with the
same key sequence, the objects command will take precedence (i.e., the groups command
will not execute).
Sliders
You can create sliders to have on your graphics pages.
To configure a slider:
Draw the object/group (or paste a symbol). The properties tab dialog will automatically
display, unless you have turned off the Display properties on new option in the Graphics Builder. (For a group, the properties dialog will not display automatically; you must
double-click the group.)
Click the Slider tab.
Click the Horizontal, Vertical or Rotational tab (to the right of the dialog).
Enter the Tag to link to the slider.
Enter any additional details.
Click OK.
See Also
Object Properties - Slider (Horizontal)
Object Properties - Slider (Vertical)
Object Properties - Slider (Rotational)
Select this box if you want the variable tag to be updated continuously while the slider is
being moved. If you do not select this box, the tag will only be updated when the slider has
been released (i.e., it has been moved, and the operator has released the mouse button).
[Offset] At minimum
The distance (number of pixels from the original object/group center) that the object/group
can slide to the left. When it reaches the point defined by this distance, the tag value changes to its minimum limit.
You can change the offset value by pressing the up and down arrows to the right of the
field, or by entering another value in this field.
[Offset] At maximum
The distance (number of pixels from the original object/group center) that the object/group
can slide to the right. When it reaches the point defined by this distance, the tag value
changes to its maximum limit.
You can change the offset value by pressing the up and down arrows to the right of the
field, or by entering another value in this field.
You can increase the value of the tag with a left-slide, and decrease it with a right-slide, by
entering negative distances in the Offset fields.
Note: If an object in a group is a slider, it might change the overall size of the group when
used at runtime. If it does, the fill level of the group will adjust accordingly. If a group and
one of its objects are both defined as sliders, and they slide in the same direction or one is
rotational, the object will take precedence (i.e. only the object will operate as a slider).
See Also
Object Properties - Slider (Vertical)
Object Properties - Slider (Rotational)
Select this box if you want the variable tag to be updated continuously while the slider is
being moved. If you do not select this box, the tag will only be updated when the slider has
been released (i.e., it has been moved, and the operator has released the mouse button).
[Offset] At maximum
The distance (number of pixels from the original object/group center) that the object/group
can slide up. When it reaches the point defined by this distance, the Tag value changes to
its maximum limit.
You can change the offset value by pressing the up and down arrows to the right of the
field, or by entering another value in this field.
[Offset] At minimum
The distance (number of pixels from the original object/group center) that the object/group
can slide down. When it reaches the point defined by this distance, the tag value changes
to its minimum limit.
You can change the offset value by pressing the up and down arrows to the right of the
field, or by entering another value in this field.
You can increase the value of the tag with a down-slide, and decrease it with an up-slide,
by entering negative distances in the Offset fields.
Note: If an object in a group is a slider, it might change the overall size of the group when
used at runtime. If it does, the fill level of the group will adjust accordingly. If a group and
one of its objects are both defined as sliders, the object will take precedence (i.e. only the
object will operate as a slider).
See Also
Object Properties - Slider (Horizontal)
Object Properties - Slider (Rotational)
Select this box if you want the variable tag to be updated continuously while the slider is
being moved. If you do not select this box, the tag will only be updated when the slider has
been released (i.e. it has been moved, and the operator has released the mouse button).
[Angle] At minimum
Enter an anti-clockwise angle (in degrees relative to 0 degrees). The slider cannot rotate
anti-clockwise beyond this limit. When it reaches this limit, the Tag value changes to its
minimum limit.
You can change the angle value by pressing the up and down arrows to the right of the
field, or by entering another value in this field.
[Angle] At maximum
Enter an clockwise angle (in degrees relative to 0 degrees). The slider cannot rotate clockwise beyond this limit. When it reaches this limit, the Tag value changes to its maximum
limit.
You can change the angle value by pressing the up and down arrows to the right of the
field, or by entering another value in this field.
Note:You can increase the value of the tag with an anti-clockwise slide, and decrease it with
a clockwise-slide, by entering negative distances in the Angle fields.
[Center axis offset] Express
Click this radio button for the quick and easy way of selecting the point about which the
object/group will rotate. The express option gives you the choice of 9 points (Top Left, Bottom Right and so on), which are displayed in the picture field on the dialog. To select one,
just click it with your mouse.
[Center axis offset] Custom
Click this radio button to define your own center axis. When you select this radio button,
two fields will display to the right, allowing you to plot the position of your center axis.
Specify the distance to the right in the first field, and the distance down in the second. The
Center axis is plotted based on these two values.
For example, if you enter 8 as the horizontal offset and 13 as the vertical, the center axis will
be 8 pixels to the right and 13 pixels below the center of the object/group.
Enter negative values in the offset distance fields to move the center axis left instead of
right, and up instead of down.
Note:If a group and one of its objects are both defined as sliders, the object will take precedence (i.e., only the object will operate as a slider).
See Also
Object Properties - Slider (Horizontal)
Object Properties - Slider (Vertical)
Access
You can determine the kind of access you want to have to your objects.
General Access to Objects
Disable Access to Objects
405
Select this box to assign the object/group to the same area as the page on which it has been
drawn; otherwise, leave it blank, and enter another area in the Object/Group area field (below).
[Security] Object/Group area
Enter the area to which this object/group belongs. Users without access to this area (and
any required privileges) will not be able to make full use of the object/group. They will not
be able to use touch command, keyboard commands, movement, sliders and so on. (In order to avoid confusion for such operators, it is sometimes a good idea to disable the object/
group when it is unavailable due to lack of security rights. Disabled objects/groups can be
grayed, hidden or embossed.) For example, if you enter Area 1 here, operators must have
access to Area 1 (plus any required privileges) to make use of this object/group.
Click the menu to the right of this field to select an area, or type in an area number directly.
[Security] No privilege restrictions
Select this box to disable privilege restrictions; otherwise, leave it blank, and enter another
privilege below. The implications of not assigning a privilege restriction depend upon
whether you have used areas in your security setup:
No Areas: All operators have full control of the object/group.
Areas: An operator will only need view access to control the object/group if it does not
have privilege restrictions.
[Security] Privilege level
Enter the privilege level required for an operator to use this object/group. Operators without the required privileges will not be able to make full use of the object/group. They will
not be able to use touch command, keyboard commands, movement, sliders and so on. (To
avoid confusion for such operators, disable the object/group when it is unavailable due to
lack of security rights. Disabled objects/groups can be grayed, hidden or embossed.) For example, if you enter Privilege Level 1 here, operators must possess Privilege Level 1 to use
of this object/group. You can also combine this restriction with area restrictions. For example, if you assign the object/group to Area 5, with Privilege Level 2, the user must have Privilege 2 for Area 5.
Click the menu to the right of this field to select a privilege, or type in an privilege number
directly.
Note: If an object is part of a group, users must have access to the group in order to have
access to the object.
[Logging] Log device
This is the device to which messages will be logged for the object/groups keyboard and
touch commands. Click the menu to the right of the field to select a device, or type a device
name.
Note: You must include the MsgLog field in the format of the log device for the message to
be sent.
See Also
Disable Access to Objects
407
408
Touch commands
You can assign Touch commands to the objects that you create on your graphics pages.
Touch commands allow the operator to send commands to the runtime system, by clicking
(with the mouse or similar) on an object on the graphics page. (For buttons, the command
can be executed by highlighting the button with the cursor keys on the keyboard and pressing Enter.)
You can define several commands for an object, one command to execute when the operator clicks on the object, another for when the operator releases the mouse button, and another to operate continuously while the operator holds the mouse button down. For
example, a drive can be jogged by starting it when the mouse button is depressed and stopping it when the mouse button released; variables can be incremented while the mouse button is held, and so on.
You can also associate a tool tip (Help text) with an object; if the operator holds the mouse
pointer over the object, the tool tip will display in a pop-up window.
Note: You can define a disable condition for any object on a page (including buttons). When
the condition is active, the object is grayed and the operator cannot select it.
See Also
Touch Commands
Keyboard commands
Keyboard commands consist of a key sequence that an operator enters on the keyboard,
and an instruction (or series of instructions) that executes when the key sequence is entered.
You can define keyboard commands that operate:
For any graphics page displayed on the computer screen (system keyboard commands).
Only when a specific graphics page is displayed (page-keyboard commands).
Only when an operator positions the mouse pointer on an object on a graphics page.
You can associate tool tips with any object; if the operator holds the mouse pointer over
the object, the tool tip displays in a pop-up box.
Object keyboard commands have precedence over page keyboard commands (which have
precedence over system (global) keyboard commands). If you define a keyboard command
409
for an object that is identical to a page keyboard command, the object keyboard command
executes when key sequence is entered, but the page keyboard command is ignored.
See Also
Keyboard Commands
System Keyboard Commands
Keyboard Keys
Keyboards
Defining Key Sequences for Commands
Slider controls
Slider controls allow an operator to change the value of an analog variable by dragging an
object on the graphics page. Sliders also move automatically to reflect the value of the variable tag.
See Also
Sliders
410
Keyboard Keys
You can define keyboard keys to make it easier to issue commands.
To define a keyboard key:
Choose System | Keyboard Keys. The Keyboard Keys dialog box appears.
Enter the Key Name and Key Code (and Comment if applicable).
Click Add to append a new record, or Replace to modify an existing record.
See Also
Keyboard keys properties
Defining Commands and Controls
411
The code assigned to the key name. Enter a value of 16 characters or less. The Key Code is
what links your Key Name to the actual key. You can specify the key code either as a hexadecimal value or use the standard label already associated with the key.
Comment
Any useful comment. Enter a value of 48 characters or less.
Extended forms fields
The following fields are implemented with extended forms (press F2).
Echo
Determines if the key is echoed on the screen (when the key is used). Enter a value of 8 characters or less.
Echo
TRUE
(Display (echo) the Key Name when the key is pressed. The key name is displayed on the
graphics page in the keyboard entry line - AN1)
Echo
FALSE
(Do not display (echo) the Key Name when the key is pressed)
This property is optional. If you do not specify Echo, Echo defaults to True.
Keyboard Type (16 Chars.)
The type of keyboard. This field is only required if you have more than one type of keyboard on the same system.
If you do have more than one type of keyboard, use Keyboard Type 1 for your first type of
keyboard, use a separate number for each type (1, 2, 3, etc.), and define all keys for each
keyboard. You can use the default (Type 0) for all common keys.
Keyboards
You can use non-standard keyboards (as well as multiple keyboards) to control CitectSCADA. You can also define key names.
Using non-standard keyboards
You can use many types of keyboards with your runtime system. The most common keyboards are IBM compatible keyboards; this type of keyboard is used as a default. Many industrial keyboards do not conform with this standard; if you use a non-standard keyboard,
you must define each of the keyboards in the database.
Using multiple keyboards
Sometimes you might need to use keyboards of different types; for example, an IBM compatible keyboard in your control room and a sealed-membrane keyboard on the plant floor.
If you use more than one type of keyboard, you must define all keys for each keyboard and
assign each keyboard type to the respective computer.
You must set the keyboard type for each computer, with the [Keyboard]Type parameter.
412
Note: If you define commands that use mouse buttons, test that a double-click command
cannot be mistaken for a single-click command. A double-click is an extension of a single
click; a single click message will be received before a double-click message.
Defining key names
You can refer to a keyboard key by a meaningful name, rather than by the key itself. For
example, you can refer to the F1 key as the "Help" key and the F2 key as the "Login" key.
When you use the key in a command, you can use the name you have defined.
You can assign a key name to any key on the keyboard (including the alphanumeric keys
A - Z, a -z, and 0 - 9). However, after a key is defined as a command key it can only be used
as a command key. If you do assign a definition to an alphanumeric key (for example the
character A), that key can not be used as a data key. Each time it is pressed, the definition
for the key is recognized and not the keyboard character itself. Keyboard key definitions
are usually only used with non-alphanumeric characters (for example the function keys).
See Also
Defining Key Sequences for Commands
Defining Commands and Controls
F2
Alternatively, you can specify several keys that must be typed in sequence, for example, the
function key F2 followed by the Enter key:
Key Sequence
F2 Enter
Note: If you use more than one key for the sequence, you must separate each key with a
space.
You will want to avoid the ambiguity in keyboard commands that can occur if you define
separate commands that all use a common key. For example, if you define a key sequence
for one command as F3, and the key sequence for a second command as F3 F4, then when
F3 is pressed, the first command would execute immediately; the second command could
not execute. To avoid overlapping keyboard commands, add a delimiter to common keyboard commands, for example:
Key Sequence
F3 Enter
Command
SP1 = 50;
Key Sequence
F3 F4 Enter
Command
SP1 = 100;
These commands do not execute until the operator types the delimiter (the Enter key).
See Also
Using a hot key
Using variable data input
Passing multiple arguments
413
*Backspace
Command
KeyBs()
At run time, this command operates in exactly the same way as the Backspace key on a
standard computer keyboard, to correct typing errors. (Each time the Backspace key is
pressed, the last key in the command line is removed.)
Note: You can only define a hot key command as a system (global) command.
See Also
Using variable data input
F3 ### Enter
Command
SP1 = Arg1;
In this example, an operator can set the variable SP1 to a new value by first pressing the F3
function key, entering the new value, and pressing the Enter key, for example:
or
414
or
When the command is issued (the operator presses the Enter key), the value is passed to
the command at Arg1.
Note: If an operator does not enter any data (i.e., the key sequence:
is used), the value of Arg1 is zero, and the variable is set to zero. To prevent this from happening, use the ArgValue1 label, for example:
Command SP1 = ArgValue1;
The ArgValue1 label checks for illegal input; if the input is invalid, the value of the variable
is not changed. You can also use the StrToValue() function.
Be aware that the ArgValue1 label and the StrToValue() function halts the command. Any
instructions following either the ArgValue1 label or the StrToValue() function do not execute.
See Also
Passing multiple arguments
415
Command
In this case, an operator can set two variables with the same command, for example:
is used), the value of Arg2 is zero, and the second variable is set to zero. Do not use multiple
arguments in a command if invalid input might generate undesired behavior in the project
or in the larger system.
See Also
Passing keyboard arguments to functions
F4 ######## Enter
Command
PageDisplay(Arg1);
In this example, an operator can select any graphics page (defined in the project) with a single command, for example:
Configured alarms
You can use seven types of configured alarms:
Digital Alarms
Multi-digital Alarms
Time-stamped Alarms
Analog Alarms
Advanced Alarms
Time-stamped Digital Alarms
Time-stamped Analog Alarms
You can process each alarm individually, or assign each of your alarms to separate categories, where they can be prioritized. You can then display, acknowledge, reset, and log all
alarms in a particular category.
You can also customize the order in which alarms will be displayed on the alarm summary
page using the SummarySort and SummarySortMode parameters. (This order will override the alarm category priority order.)
To help operators with alarms, you can create graphics pages that contain information
about the alarms (such as the action an operator must perform to correct the situation). You
can display these pages automatically when the alarm occurs, or only when an operator
uses the Alarm Help keyboard command.
Alarm properties can also be used anywhere a normal variable tag can be used. For example the status of an alarm could be used to change the color of a symbol on a graphics page.
417
See Also
Using alarm delay
Alarm Categories
418
where:
nRecordID
nVersion
sInfo
A 0 or 1 is expected as a return value, with 1 determining that the record will be displayed.
Set this query by calling it via the function AlarmSetQuery. Verify that youve defined
the custom filters appropriately for your alarm tags before proceeding.
Example
You want to create a query that calls current alarms for the conveyors in your plant. This
could be drawn from the alarm tags you have identified as being associated with a conveyor, by applying the keyword "conveyor" to the field Custom Filter 1.
The query function you would create would be as follows:
INT
FUNCTION CheckCustom1(INT nRid, INT nVer, STRING sValue)
STRING sCustom;
// Get the information in CUSTOM1
sCustom = AlarmGetFieldRec(nRid, "CUSTOM1", nVer);
IF sCustom = sValue THEN
// Lets display this
RETURN 1;
ELSE
// Skip over this
RETURN 0;
END
END
Say you then want to create a button on a graphics page that lists all current conveyor
alarms. You would implement this by applying the AlarmSetQuery function to the button.
AlarmSetQuery(0, "CheckCustom1", "conveyor");
You could also create a reset button that clears the current displayed list by cancelling the
query:
AlarmSetQuery(-1, "", "")
You have the choice of calling a specific Cicode function, for example, "Customfeld1", with
the argument "pumpcontrol", or using a more generic approach with the function "Checkfield" with argument "CUSTOM1= pumpcontrol". In this case, the Cicode function parses
the passed string and checks the field specified.
419
Efficiency considerations
Cicode takes longer to implement than predefined filters. To avoid unnecessary processing
of alarms that have already been checked, smart custom filters are enabled by default to
minimize the processing required for large alarm record counts.
Smart custom filters mean that the first time a query is run, each alarm record will be
checked by your function. Subsequent screen displays or record changes will then only call
the function for changed or new records.
For most queries, this is how you would want your system to behave. However, there maybe special queries where you wish to turn this behavior off and check each alarm record.
An example might be if you were to request all changed or new alarms in the last 10 seconds. In this case the "smart" filtering will not return the desired alarms because some
records will not have changed, yet they may be included or excluded from your query.
Two mechanisms exist to control this:
If you set the global ini parameter [ALARM]EnableSmartCustomFilters to 0, it will disable smart filters for all queries.
On a per query basis, set an optional 4th argument to 1 or TRUE, for example:
AlarmSetQuery(0, "MyQueryTime", "10", TRUE);
This, when set to TRUE, forces the query to run. The default value is 0 or FALSE (allow
for smart queries).
See Also
Alarm Categories
Alarm Categories
Each alarm in your system can be assigned to a category, and each category can be processed as a group. For each category, you can set alarm display details (font and page type),
logging details (printer or data file), and the action to be taken when an alarm in the category is triggered (for example, activating an audible alarm).
Each category can have an associated priority. The alarm priorities can be used to order
alarm displays, providing useful filtering for the operator.
You can also customize the order in which alarms will be displayed on the alarm summary
page using the SummarySort and SummarySortMode parameters. (This order will override the alarm category priority order.)
You can configure up to 16376 alarm categories. If you do not specify a category for an
alarm, the alarm has the same attributes as alarm category 0. If you do not define an alarm
category 0, a default is used for the category.
To define an alarm category:
Choose System | Alarm Categories. The Alarm Categories dialog box appears.
Enter the alarm category properties.
Click Add to append a new record, or Replace to modify an existing record.
Use the Alarm Categories dialog box to configure your alarms.
See Also
Alarm Category Properties
420
The font used to display an active alarm that has been acknowledged. This property is optional. If you do not specify a font, the font defaults to 10 pt. CYAN. Enter a value of 16 characters or less.
Disabled Font
The font used to display disabled alarms. This property is optional. If you do not specify a
font, the font defaults to 10 pt. WHITE. Enter a value of 16 characters or less.
ON Action
A Cicode command that is executed when an alarm of this Category is triggered (maximum of 253 characters). For example:
Alarm ON Action
STOP_PROCESS = 1;
The digital variable STOP_PROCESS is set to ON when an alarm in this category is triggered.
Note: Do not put a Cicode blocking function in this field. The alarm system executes ON,
OFF, or ACK actions within the polling loop. A blocking function will affect the polling of
alarms, and may result in slow or delayed alarm processing.
A special case of this command occurs when the Alarm ON Action is self-referring, with a
form such as TAG1 = TAG1 + 1. This command will not work properly since tags are not
reread before processing the Alarm On action (for performance reasons). This particular
command will therefore initially set the value of TAG1 to 1 rather than incrementing it.
To correctly run a command of this type in the Alarm ON Action, use TaskNew() to run
your own Cicode function to perform the tag command:
Alarm ON Action
TaskNew("MyFunc","Data",5);
OFF Action
A Cicode command that is executed when an alarm of this Category is reset (maximum of
253 characters). For example:
Alarm OFF Action
ENABLE_PROCESS = 1;
The digital variable ENABLE_PROCESS is set to ON when an alarm in this category is reset.
Note: Do not put a Cicode blocking function in this field. The alarm system executes ON,
OFF, or ACK actions within the polling loop. A blocking function will affect the polling of
alarms, and may result in slow or delayed alarm processing.
ACK Action
A Cicode command that is executed when an alarm of this Category is acknowledged
(maximum of 253 characters).
Note: Do not put a Cicode blocking function in this field. The alarm system executes ON,
OFF, or ACK actions within the polling loop. A blocking function will affect the polling of
alarms, and may result in slow or delayed alarm processing.
Alarm Format
The screen display format for all alarms in this category (maximum of 254 characters). The
Alarm Display format specifies how the data (for all alarms in the category) are displayed
422
on the alarms page (on the screen only). Each alarm displays on the alarms page in a single
line, for example:
12:32:21RFP3 Raw Feed pump 3 Overload
The Display Format property is optional. If you do not specify a Alarm Display format, the
format defaults to:
Format
See Alarm display fields for the formatting details for each field type.
You can change this default Alarm Display Format for all alarms by setting the [Alarm]
DefDspFmt parameter.
Note: If an alarm value is longer than the field it is to be displayed in, it will be truncated
or replaced with the #OVR ("overflow of format width") alert message. When the alarm is
logged to a device (i.e. printed or written to a file or database), the format specified for the
logging device overrides the display format.
Summary Format
The summary display format for all alarms in this category (maximum of 254 characters).
The Summary Display format specifies how the alarm summary displays on the alarms
summary page (on the screen only).
The display format is defined exactly as the Alarms Display Format. However, you can also
use additional data fields.
This property is optional. If you do not specify a Summary Display format, the format defaults to:
Format
See Alarm summary fields for formatting details for each field type.
You can change the default Summary Display Format for all alarms by setting the [Alarm]
DefSumFmt parameter.
Note: When the alarm is logged to a summary device (i.e. printed or written to a file or database), the format specified for the logging device overrides the display format.
Summary Device
The device where the alarm summary is sent (maximum of 16 characters).
An alarm is logged to the summary device when it has gone off, and has been displayed for
a longer period than the time specified in the [Alarm] SummaryTimeout parameter. When
the alarm is logged to the device, it is removed from the alarm summary page.
When the alarm is printed, or written to a file or device, the format specified in the device
overrides the display format.
This property is optional. If you do not specify a Summary Device, alarm summaries are
not logged.
Log Device
The device where the alarm state changes are sent (maximum of 16 characters).
423
An alarm entry is made in the log device each time an alarm changes state (for example, on,
off, acknowledged, enabled, and disabled).
When the alarm is printed, or written to a file or device, the format specified in the device
overrides the display format.
This property is optional. If you do not specify a log device, alarm state changes are not
logged.
Log Alarm Transitions: ON
Logs the alarm details when the alarm becomes active (maximum of 6 characters). The default for this field is TRUE.
Log Alarm Transitions: OFF
Logs the alarm details when the alarm becomes inactive (maximum of 6 characters). The
default for this field is TRUE.
Log Alarm Transitions: ACK
Logs the alarm details when the alarm is acknowledged (maximum of 6 characters). The
default for this field is TRUE.
Comment
Any useful comment (maximum of 48 characters).
Digital Alarms
You can configure digital alarms to activate based on the state of one or two digital variables. The alarm becomes active when the triggering condition spans the duration of a
specified delay period.
The variables configured for a digital alarm are polled at the rate set by the Citect.ini parameter [Alarm]ScanTime. If an alarm state changes, notification will occur the next time
the variables are polled. Be aware that the time associated with the alarm state will represent the time the variable was polled, not the actual time the alarm condition occurred.
To configure a digital alarm:
Choose Alarm | Digital Alarms. The Digital Alarms dialog box is displayed.
Complete the properties. See Digital Alarm Properties.
Click the Add button to append a new record, or Replace if you have modified a record.
See Also
Digital Alarm Properties
Cluster Name
The name of the cluster that runs this alarm (16 characters maximum). If the Cluster Name
is not set, then this alarm will run on all defined clusters.
Alarm Name
The name of the physical device associated with the alarm (maximum of 79 characters).
This property is optional, it is only used when details of the alarm are displayed on the
screen or logged to a device.
Alarm Desc
The description of the alarm (maximum of 127 characters). This can include variable data.
This property is optional, it is only used when details of the alarm are displayed on the
screen or logged to a device.
Var Tag A/Var Tag B
The digital variables (tags) that trigger the alarm (maximum of 254 characters). You can
configure digital alarms to activate based on the state of one or two digital variables.
If you only use one variable to trigger the alarm, use the Var Tag A field. For example:
Var Tag A
RFP3_TOL
When the state of the variable RFP3_TOL changes to ON (1), the alarm is triggered.
Alternatively, you can define the alarm to trigger when the state of the variable changes to
OFF (0), by preceding the digital address with the logical operator NOT, for example:
Var Tag A
NOT RFP3_TOL
In this case, the alarm is triggered when the state of the variable MCOL304 changes to OFF
(0).
You can also configure digital alarms to activate based on the state of two digital variables,
for example:
Var Tag A
RFP3_TOL
Var Tag B
NOT MCOL304
In this case, the alarm is triggered when the state of both variables changes to the active
state: when the state of the variable RFP3_TOL changes to ON (1), and when the state of the
variable MCOL304 changes to OFF (0).
Note: If you leave the Var Tag B property blank, only Var Tag A triggers the alarm.
Category
The alarm category number or label (maximum of 16 characters). This property is optional.
If you do not specify a category, the alarm defaults to Category 0.
Delay (hh:mm:ss)
The alarm delay period (16 characters maximum).
A digital alarm becomes active when the state of the triggering condition remains true for
the duration of the delay period. The active alarm has an ON time of when the state became
true.
425
This property is optional. If you do not specify a delay period, the alarm is active as soon
as it is triggered by the digital tag(s).
Note: The delay period must be entered in the format HH:MM:SS (Hours:Minutes:Seconds). The value must be between 0 seconds (00:00:00) and 24 hours (24:00:00).
Help
The name of the graphics page (maximum of 64 characters) that displays when the AlarmHelp() function is called by a user-defined command. This property is optional. If you dont
specify a help page, no action occurs when the AlarmHelp() function is called.
Comment
Any useful comment (maximum of 48 characters).
Extended forms fields
The following fields are implemented with extended forms (press F2).
Privilege
The privilege required by an operator to acknowledge or disable the alarm (maximum of
16 characters).
Note: If you assign an acknowledgment privilege to an alarm, do not assign a privilege to
the command(s) that acknowledge the alarm. If you assign a different privilege to the commands, an operator must have both privileges to acknowledge the command. More importantly, the area defined here may be ignored.
Area
The area to which the alarm belongs (maximum of 16 characters). If an operator does not
have access to an area, the alarm is not visible on the alarm display. For example, if you enter Area 1 here, operators must have access to Area 1 (plus any required privileges) to acknowledge or disable this alarm.
Note: The area and privilege fields defined here must be designed to work in conjunction.
A privilege defined on a button (say) will ignore the alarm defined area.
Custom Filter1...Custom Filter8
A user-defined string for filtering active alarms (maximum 64 characters).
Used in a custom Cicode query function as search criteria, the custom alarm filter enables
operators to identify and display a subset of active alarms.
Notes:
Custom filters are visible only when the Digital Alarms form is open in Extended mode.
The fields are not case-sensitive and can contain A..Z, a..z, 0..9, and the underscore _.
A custom filter cannot start with a digit.
Paging
A read/write property that indicates whether the alarm should be paged. When the value
is 1 (TRUE) the alarm will be paged. The default value is 0 (FALSE). See Alarm Paging
Properties. This property can be read using alarm tag browsing and read or modified when
tag properties are enabled using the tag name "myCluster.myAlarm.paging".
426
Paging Group
A read only text string that indicates the paging group to which the alarm belongs. Maximum length is 80 characters. See your third-party paging system documentation for information on how to use this Paging Group string. This property can be read using alarm tag
browsing or when tag properties are enabled read using the tagname "myCluster.myAlarm.paginggroup". For example, assign the value of PagingGroup to a variable:
myString = myCluster.Alarm_1.paginggroup
See Also
Using custom alarm filters
Multi-digital Alarms
Multi-digital alarms use the output from three digital variables (for example: tags A, B, and
C) to define eight states. The states represent all possible combinations of true/false values
the variables can have.
The tag values in each state are represented in the order tag C, tag B, tag A. A true value is
represented by the tag letter, and 0 (zero) represents false.
The eight states are as follows:
State 000 - All 3 tags are false.
State 00A - Tags C and B are false and Tag A is true.
State 0B0 - Tags C and A are false and Tag B is true.
State 0BA - Tag C is false and Tags B and A are true.
State C00 - Tag C is true and Tags B and A are false.
State C0A - Tags C and A are true and Tag B is false.
State CB0 - Tags C and B are true and Tag A is false.
State CBA - All 3 tags are true.
When configuring the multi-digital alarm properties, you can set which states should trigger an alarm, and specify Cicode functions to be called when alarms become active and inactive.
The variables configured for a multi-digital alarm are polled at the rate set by the Citect.ini
parameter [Alarm]ScanTime. If an alarm state changes, notification will occur the next time
the variables are polled. The time associated with the alarm state will represent the time the
variable was polled, not the actual time the alarm condition occurred.
Examples
In the following example, tag C is left blank, and the variables BIT_12 and BIT_1 are specified for tags A and B. With state 0BA specified to activate an alarm, when tags A and B
change to ON (1) the alarm will activate.
Var Tag A
Var Tag B
BIT_12
BIT_1
Var Tag C
427
In this example, variables are specified for all three tags. If state CBA is specified to activate
an alarm, when all three variables change to ON (1) the alarm will activate.
Var Tag A
RFP3_TOL
Var Tag B
Var Tag C
BIT_1
MCOL_304
428
RFP3_TOL
BIT_1
MCOL_304
STOP_PROCESS = 1;
TaskNew("MyFunc","Data",5);
429
A Cicode function that is executed when a Multi-Digital Alarm becomes inactive (maximum of 254 characters). For example,
OFF Function
ENABLE_PROCESS = 1;
The digital variable ENABLE_PROCESS is set to ON when an alarm in this category is reset.
Note: Do not put a Cicode blocking function in this field. The alarm system executes ON or
OFF actions within the polling loop. A blocking function will affect the polling of alarms,
and may result in slow or delayed alarm processing.
Category
The alarm category number or label (maximum of 16 characters). This property is optional.
If you do not specify a category, the alarm defaults to Category 0.
Help
The name of the graphics page (maximum of 64 characters) that displays when the AlarmHelp() function is called by a user-defined command. This property is optional. If you dont
specify a help page, no action occurs when the AlarmHelp() function is called.
Privilege
The privilege required by an operator to acknowledge or disable the alarm (maximum of
16 characters).
Note: If you assign an acknowledgment privilege to an alarm, do not assign a privilege to
the command(s) that acknowledge the alarm. If you do assign a different privilege to the
commands, then an operator must have both privileges to acknowledge the command.
Area
The area to which the alarm belongs (maximum of 16 characters). If an operator does not
have access to an area, the alarm is not visible on the alarm display. For example, if you enter Area 1 here, operators must have access to Area 1 (plus any required privileges) to acknowledge or disable this alarm.
Comment
Any useful comment (maximum of 48 characters).
Suppression
The number of the Suppression Group to which the alarm belongs. This is an integer value
between 065535. Alarms in the same group display the same value in this field.
This property is used in conjunction with Suppression Level.
Note: To assign a name to a Suppression Group, define the name as a label with an integer
value.
Level (Suppression Level)
The level of an alarm within its Suppression Group (integer value). This is a value between
0 and 255, where a lower level represents a higher priority.
This property enables an active alarm to suppress lower priority alarms within the same
Suppression Group. When this occurs, only the higher priority (lower level) alarms are dis430
played. Alarms with lower priorities (higher levels) will only activate and display when the
higher priority (lower level) alarms become inactive.
If two alarms of different priorities in the same Suppression Group are triggered at the
same time, both will display in the alarm list. This is because at the time they activated, the
higher priority alarm was not already active and so could not suppress the lower priority
alarm.
If your intent is for higher priority alarms to activate before lower priority alarms in spite
of other factors, store the higher priority alarms closer to the beginning of the Alarms database. The database is scanned from beginning to end for triggered alarms, and if higher
priority alarms are higher in the database, they will activate first and be able to suppress
any lower priority alarms within the Suppression Group.
Extended forms fields
The following fields are implemented with extended forms (press F2).
Custom Filter1...Custom Filter8
A user-defined string for filtering active alarms (maximum 64 characters).
Used in a custom Cicode query function as search criteria, the custom alarm filter enables
operators to identify and display a sub-set of active alarms.
Notes:
The custom filters are visible only when the Digital Alarms form is open in Extended
mode.
The fields are not case sensitive, and can contain A..Z, a..z, 0..9, and the underscore _.
A custom filter cannot start with a digit.
Paging
A read/write property that indicates whether the alarm should be paged. When the value
is 1 (TRUE) the alarm will be paged. The default value is 0 (FALSE). See Alarm Paging
Properties. This property can be read using alarm tag browsing and read or modified when
tag properties are enabled using the tag name "myCluster.myAlarm.paging".
Paging Group
A read only text string that indicates the paging group to which the alarm belongs. Maximum length is 80 characters. See your third-party paging system documentation for information on how to use this Paging Group string. This property can be read using alarm tag
browsing or when tag properties are enabled read using the tagname "myCluster.myAlarm.paginggroup". For example, assign the value of PagingGroup to a variable:
myString = myCluster.Alarm_1.paginggroup
See Also
Using custom alarm filters
Time-stamped Alarms
Time-stamped alarms are similar to digital alarms, except that a counter is used to provide
an accurate timestamp of when a triggering condition occurs, rather than just the time the
variable was polled. Time-stamped alarms can only be associated with a single digital variable.
431
An alarms variables are polled at the rate set by [Alarm]ScanTime, however, the timer value is used to define the time associated with a change of state.
You can use one of three types of counter or timer to record the triggering of time-stamped
alarms:
Continuous counter. A continuous counter is read in the unit to determine the sequence
in which the alarms are triggered. The alarms are sorted based on the value of the
counter when the alarm was triggered (the exact time is not recorded).
Millisecond counter. If your unit supports a millisecond counter, you can program a
counter (in the unit) to count (in milliseconds) for 24 hours, and then reset (at midnight).
The value of this timer variable (in the unit) is read to determine the exact time when
the alarm was triggered.
LONGBCD timer. Using a LONGBCD timer, you can log the exact time when a timestamped alarm becomes active. This variable is read, along with the alarm tag when the
alarm activates.
To configure a time-stamped alarm:
Choose Alarms | Time-stamped Alarms. The Time-stamped Alarms dialog box appears.
Enter the alarm properties.
Click Add to append a new record, or Replace to modify an existing record.
See Also
Time-stamped Alarm Properties
Timer
The variable tag or Cicode expression that represents the counter (or millisecond timer)
configured in the I/O Device (maximum of 254 characters). The counter must be configured
and maintained by the program in the I/O Device; it is read only when the alarm is triggered.
You can use one of three types of counter or timer to record the triggering of time-stamped
alarms:
Continuous counter. A continuous counter is read in the unit to determine the sequence
in which the alarms are triggered. The alarms are sorted based on the value of the
counter when the alarm was triggered (the exact time is not recorded). You must program the counter (in the unit) to count continually to its limit, reset, and again count to
its limit.
Millisecond counter. If your unit supports a millisecond counter, you can program a
counter (in the unit) to count (in milliseconds) for 24 hours, and then reset (at midnight).
The value of this timer variable (in the unit) is read to determine the exact time when
the alarm was triggered.
LONGBCD timer. Using a LONGBCD timer, you can log the exact time when a Timestamped alarm becomes active. This variable is read, along with the alarm tag when the
alarm activates. You must program the LONGBCD variable in the following format:
BYTE
1
st
MEANING
Hours
RANGE
00-24 (most significant
byte)
2nd
Minutes
00-60
3rd
Seconds
00-60
4th
100th/sec
This field can also be used to handshake with the PLC code: The PLC is informed that
it has read the timer register and now the PLC can overwrite the last value. For example,
with the following code saved in a Cicode file:
INT
FUNCTION
AlarmTimerReset(INT iTimer, STRING sTimerTrigger)
TagWrite(sTimerTrigger, 0); //Reset the trigger
RETURN iTimer; //Return the timer value to the alarm system
END
AlmTrigger1
Timer
Timer(AlmTimer1, "AlmTrigger1")
where AlmTimer1 is the PLC register that stores the alarm time, and AlmTrigger1 is
the alarm trigger bit.
When AlmTrigger1 is set to one (1), the alarm is triggered, and the Cicode function is
called. On calling the function, the AlmTimer1 register is read. The function resets the
trigger bit (handshaking), and the value of AlmTimer1 is returned to the alarm system.
Category
433
The alarm category number or label (maximum of 16 characters). This property is optional.
If you do not specify a category, the alarm defaults to Category 0.
Help
The name of the graphics page (maximum of 64 characters) that displays when the AlarmHelp() function is called by a user-defined command. This property is optional. If you dont
specify a help page, no action occurs when the AlarmHelp() function is called.
Comment
Any useful comment (maximum 48 characters).
Extended forms fields
The following fields are implemented with extended forms (press F2).
Privilege
The privilege required by an operator to acknowledge or disable the alarm (maximum of
16 characters).
Note: If you assign an acknowledgment privilege to an alarm, do not assign a privilege to
the command(s) that acknowledge the alarm. If you do assign a different privilege to the
commands, an operator must have both privileges to acknowledge the command.
Area
Area to which the alarm belongs (maximum 16 characters). If an operator does not have access to an area, the alarm is not visible on the alarm display. For example, if you enter Area
1 here, operators must have access to Area 1 (plus any required privileges) to acknowledge
or disable this alarm.
Custom Filter1...Custom Filter8
A user-defined string for filtering active alarms (maximum 64 characters).
Used in a custom Cicode query function as search criteria, the custom alarm filter enables
operators to identify and display a subset of active alarms.
Notes:
Custom filters are visible only when the Digital Alarms form is open in Extended mode.
The fields are not case-sensitive and can contain A..Z, a..z, 0..9, and the underscore _.
A custom filter cannot start with a digit.
Paging
A read/write property that indicates whether the alarm should be paged. When the value
is 1 (TRUE) the alarm will be paged. The default value is 0 (FALSE). See Alarm Paging
Properties. This property can be read using alarm tag browsing and read or modified when
tag properties are enabled using the tag name "myCluster.myAlarm.paging".
Paging Group
A read only text string that indicates the paging group to which the alarm belongs. Maximum length is 80 characters. See your third-party paging system documentation for information on how to use this Paging Group string. This property can be read using alarm tag
browsing or when tag properties are enabled read using the tagname "myCluster.myAlarm.paginggroup". For example, assign the value of PagingGroup to a variable:
434
myString = myCluster.Alarm_1.paginggroup
See Also
Using custom alarm filters
Analog Alarms
Analog alarms are triggered when an analog variable changes beyond one or more specific
limits. Each alarm can be configured as any combination of the following types.
high and high high alarms - where the value reaches an atypical high
low and low low alarms - where the value reaches an atypical low
deviation alarm - where the values moves away from a predefined set point
rate of change alarm - where a dramatic value change occurs within a specified period
of time
The variables configured for an analog alarm are polled at the rate set by the Citect.ini parameter [Alarm]ScanTime. If an alarm state triggers, notification will occur the next time
the variables are polled. Be aware that the time associated with the alarm state will represent the time the variable was polled, not the actual time the alarm condition occurred.
To configure an analog alarm:
Choose Alarms | Analog Alarms. The Analog Alarms dialog box appears.
Enter the alarm properties.
Click Add to append a new record, or Replace to modify an existing record.
See Also
Analog Alarm Properties
435
An analog variable tag or base value that determines if a deviation alarm is to be triggered
(maximum of 254 characters). This property is optional. If you do not specify a setpoint, it
will default to 0 (zero).
High High
The value used as the triggering condition for a high high alarm (maximum of 11 characters). The high high alarm becomes active when the value of the variable tag exceeds this
value for the duration of the high high delay period. The active alarm has an ON time of
when the tag exceeded the high high value.
Because a high alarm must precede a high high alarm, when the high high alarm is triggered it replaces the high alarm. If you want an analog alarm to display more than one state
on the alarm page at the same time, configure a separate alarm for each state. (Each alarm
would monitor the same tag.)
High High Delay
The delay period for High High Alarms (16 characters maximum). The alarm will only activate if its triggering condition is met for the duration of this period.
This property is optional. If you do not set a value, the high high alarm will be activated as
soon as the tag exceeds the high high value.
Note: The delay period must be entered in the format HH:MM:SS (hours:minutes:seconds).
The value must be between 0 seconds (00:00:00) and 24 hours (24:00:00).
High
The value used as the triggering condition for a high alarm (maximum of 11 characters).
The high alarm becomes active when the value of the variable tag exceeds this value for the
duration of the high delay period. The active alarm has an ON time of when the tag exceeded the high value.
High Delay
The delay period for high alarms (16 characters maximum). The alarm will only activate if
its triggering condition is met for the duration of this period.
This property is optional. If you do not set a value, the high alarm will be activated as soon
as the tag exceeds the high value.
Note: The delay period must be entered in the format HH:MM:SS (hours:minutes:seconds).
The value must be between 0 seconds (00:00:00) and 24 hours (24:00:00).
When a tag value increases from high to high high within the high delay period, the delay
timer is reset. The high high alarm is only activated if the value remains in the high high
range for the delay period.
When the value increases from high to high high after the high delay period has expired,
a high alarm is activated and then the delay period for the high high alarm begins.
If the tag value exceeds the high high value and then falls below it before the high high
delay period expires, at the time it falls, the high alarm is triggered immediately. It has an
ON time of when the tag value exceeded the high high value.
These points also apply to tag values travelling between Low and Low Low ranges.
Low
436
The value used as the triggering condition for a Low Alarm (maximum of 11 characters).
A Low Alarm becomes active when the value of the Variable Tag drops below this value
and remains there for the duration of the Low Delay period. The active alarm has an ON
time of when the tag fell below the Low value.
Low Delay
The delay period for Low Alarms (16 characters maximum). The alarm will only activate
if its triggering condition is met for the duration of this period.
This property is optional. If you do not set a value, the Low Alarm is activated as soon as
the tag drops below the Low value.
Note: The delay period must be entered in the format HH:MM:SS (Hours:Minutes:Seconds). The value must be between 0 seconds (00:00:00) and 24 hours (24:00:00).
Low Low
The value used as the triggering condition for a Low Low Alarm (maximum of 11 characters). A Low Low Alarm becomes active when the value of the Variable Tag drops below
this value and remains there for the duration of the Low Low Delay period. The active
alarm has an ON time of when the tag fell below the Low Low value.
Because a Low Alarm must precede a Low Low Alarm, when the Low Low Alarm is triggered it replaces the Low Alarm. If you want an analog alarm to display more than one
state on the alarm page at the same time, configure a separate alarm for each state. (Each
alarm would monitor the same tag.)
Low Low Delay
The delay period for Low Low Alarms (16 characters maximum). The alarm will only activate if its triggering condition is met for the duration of this period.
This property is optional. If you do not set a value, the Low Low Alarm is activated as soon
as the tag drops below the Low Low value.
Note: The delay period must be entered in the format HH:MM:SS (Hours:Minutes:Seconds). The value must be between 0 seconds (00:00:00) and 24 hours (24:00:00).
Deviation
The value used as the triggering condition for a Deviation Alarm (maximum of 10 characters). A Deviation Alarm is activated when the value of the Variable Tag remains outside
the deviation range (determined by the Setpoint) for the duration of the Deviation Delay
period.
This property is optional. If you do not specify a deviation, no Deviation Alarm is activated.
Deviation Delay
The delay period for Deviation Alarms (16 characters maximum). The alarm will only activate if its triggering condition is met for the duration of this period.
This property is optional. If you do not set a value, the Deviation Alarm is activated as soon
as the Variable Tag falls outside the deviation range.
Note: The delay period must be entered in the format HH:MM:SS (Hours:Minutes:Seconds). The value must be between 0 seconds (00:00:00) and 24 hours (24:00:00).
437
Rate
By dividing this value by the alarm period, the "maximum rate" at which the value of the
variable tag can change is determined (maximum of 10 characters). At each Scan Time, the
value of the tag is checked. If its rate of change is greater than the maximum rate, a Rate of
Change Alarm is triggered.
For example, to verify that a tank does not fill too quickly, you might configure a rate of
change alarm, using a Rate of 300 liters, an [Alarm]Period of 60 seconds, and an
[Alarm]ScanTime of 1 second. This means that the maximum allowable rate of change for
the tank level is 5 l/sec (300 liters / 60 seconds). The actual rate of change at each ScanTime
is calculated. i.e. Every second, it checks the current level of the tank and compares it to the
level recorded a second earlier. If the actual rate of change is, say, 8 l/sec, a Rate of Change
Alarm is triggered immediately.
The variable tags deadband % must be less than the alarms rate divided by the engineering
scale of the variable tag. Otherwise, the rate of change alarm will only go off when the
change in the variable tag exceeds the deadband value.
This property is optional. If you do not specify a value, no Rate of Change Alarm is activated.
Deadband
The value that Variable Tag must return to before the Deviation Alarm becomes inactive
(maximum of 10 characters).
Format
The display format of the value (of the variable) when it is displayed on a graphics page,
written to a file or passed to a function (that expects a string) (maximum of 11 characters).
This property is optional. If you do not specify a format, the format defaults to the format
specified for Variable tag.
Category
The alarm category number or label (maximum of 16 characters). This property is optional.
If you do not specify a category, the alarm defaults to Category 0.
Help
The name of the graphics page (maximum of 64 characters) that displays when the AlarmHelp() function is called by a user-defined command. This property is optional. If you dont
specify a help page, no action occurs when the AlarmHelp() function is called.
Comment
Any useful comment (maximum of 48 characters).
Extended forms fields
The following fields are implemented with extended forms (press F2).
Privilege
The privilege required by an operator to acknowledge or disable the alarm (maximum of
16 characters).
438
See Also
Using custom alarm filters
Advanced Alarms
An advanced alarm becomes active when the result of the Cicode expression changes. The
expression is polled at the rate set by the Citect.ini parameter [Alarm]ScanTime and tests
for a change in outcome. If one occurs, an alarm state notification will occur.
To configure an advanced alarm:
From the System | Advanced Alarms. The Advanced Alarms dialog box appears.
Enter the alarm properties.
Click Add to append a new record, or Replace to modify an existing record.
See Also
Advanced Alarm Properties
439
See Also
Using custom alarm filters
441
The description of the alarm (maximum of 127 characters). This can include variable data.
This property is optional. It is only used when details of the alarm are displayed on the
screen or logged to a device.
Var Tag A/Var Tag B
The digital variables (tags) that trigger the alarm (maximum of 254 characters). You can
configure time-stamped digital alarms to activate based on the state of one or two digital
variables.
If you only use one variable to trigger the alarm, use the Var Tag A field. For example:
Var Tag A
RFP3_TOL
When the state of the variable RFP3_TOL changes to ON (1), the alarm is triggered.
Alternatively, you can define the alarm to trigger when the state of the variable changes to
OFF (0), by preceding the digital address with the logical operator NOT, for example:
Var Tag A
NOT RFP3_TOL
In this case, the alarm is triggered when the state of the variable MCOL304 changes to OFF
(0).
You can also configure digital alarms to activate based on the state of two digital variables,
for example:
Var Tag A
RFP3_TOL
Var Tag B
NOT MCOL304
In this case, the alarm is triggered when the state of both variables changes to the active
state: when the state of the variable RFP3_TOL changes to ON (1), and when the state of the
variable MCOL304 changes to OFF (0).
Note: If you leave the Var Tag B property blank, only Var Tag A triggers the alarm.
Category
The alarm category number or label (maximum of 16 characters). This property is optional.
If you do not specify a category, the alarm defaults to Category 0.
Delay (hh:mm:ss)
The alarm delay period (16 characters maximum)
A time-stamped digital alarm becomes active when the state of the triggering condition remains true for the duration of the delay period. The active alarm has an ON time of when
the state became true.
This property is optional. If you do not specify a delay period, the alarm is active as soon
as it is triggered by the digital tag(s).
Note: The delay period must be entered in the format HH:MM:SS (Hours:Minutes:Seconds). The value must be between 0 seconds (00:00:00) and 24 hours (24:00:00).
Help
The name of the graphics page (maximum of 64 characters) that displays when the AlarmHelp() function is called by a user-defined command. This property is optional. If you dont
specify a help page, no action occurs when the AlarmHelp() function is called.
443
Comment
Any useful comment (maximum of 48 characters).
Extended forms fields
The following fields are implemented with extended forms (press F2).
Privilege
The privilege required by an operator to acknowledge or disable the alarm (maximum of
16 characters).
Note: If you assign an acknowledgment privilege to an alarm, do not assign a privilege to
the command(s) that acknowledge the alarm. If you assign a different privilege to the commands, an operator must have both privileges to acknowledge the command. More importantly, the area defined here may be ignored.
Area
The area to which the alarm belongs (maximum of 16 characters). If an operator does not
have access to an area, the alarm is not visible on the alarm display. For example, if you enter Area 1 here, operators must have access to Area 1 (plus any required privileges) to acknowledge or disable this alarm.
Note: The area and privilege fields defined here must be designed to work in conjunction.
A privilege defined on a button (say) will ignore the alarm defined area.
Custom Filter1...Custom Filter8
A user-defined string for filtering active alarms (maximum 64 characters).
Used in a custom Cicode query function as search criteria, the custom alarm filter enables
operators to identify and display a sub-set of active alarms.
Notes:
The custom filters are visible only when the Digital Alarms form is open in Extended
mode.
The fields are not case sensitive, and can contain A..Z, a..z, 0..9, and the underscore _.
A custom filter cannot start with a digit.
Paging
A read/write property that indicates whether the alarm should be paged. When the value
is 1 (TRUE) the alarm will be paged. The default value is 0 (FALSE). See Alarm Paging
Properties. This property can be read using alarm tag browsing and read or modified when
tag properties are enabled using the tag name "myCluster.myAlarm.paging".
Paging Group
A read only text string that indicates the paging group to which the alarm belongs. Maximum length is 80 characters. See your third-party paging system documentation for information on how to use this Paging Group string. This property can be read using alarm tag
browsing or when tag properties are enabled read using the tagname "myCluster.myAlarm.paginggroup". For example, assign the value of PagingGroup to a variable:
myString = myCluster.Alarm_1.paginggroup
444
See Also
Using custom alarm filters
445
The name of the physical device associated with the alarm (maximum of 79 characters).
This property is optional. It is only used when details of the alarm are displayed on the
screen or logged to a device.
Variable Tag
The analog variable (tag) that triggers the alarm (maximum of 254 characters).
Setpoint
An analog variable tag or base value that determines if a deviation alarm is to be triggered
(maximum of 254 characters). This property is optional. If you do not specify a setpoint, it
will default to 0 (zero).
High High
The value used as the triggering condition for a high high alarm (maximum of 11 characters). The high high alarm becomes active when the value of the variable tag exceeds this
value for the duration of the high high delay period. The active alarm has an ON time of
when the tag exceeded the high high value.
Because a high alarm must precede a high high alarm, when the high high alarm is triggered it replaces the high alarm. If you want an analog alarm to display more than one state
on the alarm page at the same time, configure a separate alarm for each state. (Each alarm
would monitor the same tag.)
High High Delay
The delay period for High High Alarms (16 characters maximum). The alarm will only activate if its triggering condition is met for the duration of this period.
This property is optional. If you do not set a value, the high high alarm will be activated as
soon as the tag exceeds the high high value.
Note: The delay period must be entered in the format HH:MM:SS (hours:minutes:seconds).
The value must be between 0 seconds (00:00:00) and 24 hours (24:00:00).
High
The value used as the triggering condition for a high alarm (maximum of 11 characters).
The high alarm becomes active when the value of the variable tag exceeds this value for the
duration of the high delay period. The active alarm has an ON time of when the tag exceeded the high value.
High Delay
The delay period for high alarms (16 characters maximum). The alarm will only activate if
its triggering condition is met for the duration of this period.
This property is optional. If you do not set a value, the high alarm will be activated as soon
as the tag exceeds the high value.
Note: The delay period must be entered in the format HH:MM:SS (hours:minutes:seconds).
The value must be between 0 seconds (00:00:00) and 24 hours (24:00:00).
When a tag value increases from high to high high within the high delay period, the delay
timer is reset. The high high alarm is only activated if the value remains in the high high
range for the delay period.
446
When the value increases from high to high high after the high delay period has expired,
a high alarm is activated and then the delay period for the high high alarm begins.
If the tag value exceeds the high high value and then falls below it before the high high
delay period expires, at the time it falls, the high alarm is triggered immediately. It has an
ON time of when the tag value exceeded the high high value.
These points also apply to tag values travelling between Low and Low Low ranges.
Low
The value used as the triggering condition for a Low Alarm (maximum of 11 characters).
A Low Alarm becomes active when the value of the Variable Tag drops below this value
and remains there for the duration of the Low Delay period. The active alarm has an ON
time of when the tag fell below the Low value.
Low Delay
The delay period for Low Alarms (16 characters maximum). The alarm will only activate
if its triggering condition is met for the duration of this period.
This property is optional. If you do not set a value, the Low Alarm is activated as soon as
the tag drops below the Low value.
Note: The delay period must be entered in the format HH:MM:SS (Hours:Minutes:Seconds). The value must be between 0 seconds (00:00:00) and 24 hours (24:00:00).
Low Low
The value used as the triggering condition for a Low Low Alarm (maximum of 11 characters). A Low Low Alarm becomes active when the value of the Variable Tag drops below
this value and remains there for the duration of the Low Low Delay period. The active
alarm has an ON time of when the tag fell below the Low Low value.
Because a Low Alarm must precede a Low Low Alarm, when the Low Low Alarm is triggered it replaces the Low Alarm. If you want an analog alarm to display more than one
state on the alarm page at the same time, configure a separate alarm for each state. (Each
alarm would monitor the same tag.)
Low Low Delay
The delay period for Low Low Alarms (16 characters maximum). The alarm will only activate if its triggering condition is met for the duration of this period.
This property is optional. If you do not set a value, the Low Low Alarm is activated as soon
as the tag drops below the Low Low value.
Note: The delay period must be entered in the format HH:MM:SS (Hours:Minutes:Seconds). The value must be between 0 seconds (00:00:00) and 24 hours (24:00:00).
Deviation
The value used as the triggering condition for a Deviation Alarm (maximum of 10 characters). A Deviation Alarm is activated when the value of the Variable Tag remains outside
the deviation range (determined by the Setpoint) for the duration of the Deviation Delay
period.
This property is optional. If you do not specify a deviation, no Deviation Alarm is activated.
447
Deviation Delay
The delay period for Deviation Alarms (16 characters maximum). The alarm will only activate if its triggering condition is met for the duration of this period.
This property is optional. If you do not set a value, the Deviation Alarm is activated as soon
as the Variable Tag falls outside the deviation range.
Note: The delay period must be entered in the format HH:MM:SS (Hours:Minutes:Seconds). The value must be between 0 seconds (00:00:00) and 24 hours (24:00:00).
Rate
By dividing this value by the alarm period, the "maximum rate" at which the value of the
variable tag can change is determined (maximum of 10 characters). At each Scan Time, the
value of the tag is checked. If its rate of change is greater than the maximum rate, a Rate of
Change Alarm is triggered.
For example, to minimize the chance that a tank will fill too quickly you might configure
a rate of change alarm, using a Rate of 300 liters, an [Alarm]Period of 60 seconds, and an
[Alarm]ScanTime of 1 second. This means that the maximum allowable rate of change for
the tank level is 5 l/sec (300 liters/60 seconds). The actual rate of change is calculated at each
ScanTime; that is, every second it checks the current level of the tank and compares it to the
level recorded a second earlier. If the actual rate of change is, say, 8 l/sec, a Rate of Change
Alarm is triggered immediately.
This property is optional. If you do not specify a value, no Rate of Change Alarm is activated.
Deadband
The value that Variable Tag must return to before the Deviation Alarm becomes inactive
(maximum of 10 characters).
Format
The display format of the value (of the variable) when it is displayed on a graphics page,
written to a file or passed to a function (that expects a string) (maximum of 11 characters).
This property is optional. If you do not specify a format, the format defaults to the format
specified for Variable tag.
Category
The alarm category number or label (maximum of 16 characters). This property is optional.
If you do not specify a category, the alarm defaults to Category 0.
Help
The name of the graphics page (maximum of 64 characters) that displays when the AlarmHelp() function is called by a user-defined command. This property is optional. If you dont
specify a help page, no action occurs when the AlarmHelp() function is called.
Comment
Any useful comment (maximum of 48 characters).
Extended forms fields
The following fields are implemented with extended forms (press F2).
448
Privilege
The privilege required by an operator to acknowledge or disable the alarm (maximum of
16 characters).
Note: If you assign an acknowledgment privilege to an alarm, do not assign a privilege to
the command(s) that acknowledge the alarm. If you do assign a different privilege to the
commands, then an operator must have both privileges to acknowledge the command.
Area
The area to which the alarm belongs (maximum of 16 characters). If an operator does not
have access to an area, the alarm is not visible on the alarm display. For example, if you enter Area 1 here, operators must have access to Area 1 (plus any required privileges) to acknowledge or disable this alarm.
Custom Filter1...Custom Filter8
A user-defined string for filtering active alarms (maximum 64 characters).
Used in a custom Cicode query function as search criteria, the custom alarm filter enables
operators to identify and display a sub-set of active alarms.
Note:
The custom filters are visible only when the Digital Alarms form is open in Extended
mode.
The fields are not case sensitive, and can contain A..Z, a..z, 0..9, and the underscore _.
A custom filter cannot start with a digit.
Paging
A read/write property that indicates whether the alarm should be paged. When the value
is 1 (TRUE) the alarm will be paged. The default value is 0 (FALSE). See Alarm Paging
Properties. This property can be read using alarm tag browsing and read or modified when
tag properties are enabled using the tag name "myCluster.myAlarm.paging".
Paging Group
A read only text string that indicates the paging group to which the alarm belongs. Maximum length is 80 characters. See your third-party paging system documentation for information on how to use this Paging Group string. This property can be read using alarm tag
browsing or when tag properties are enabled read using the tagname "myCluster.myAlarm.paginggroup". For example, assign the value of PagingGroup to a variable:
myString = myCluster.Alarm_1.paginggroup
See Also
Using custom alarm filters
For example:
Format
{Tag,8} {Name,32}
In this case, data displays in two fields: Tag, with 8 characters; and Name, with 32 characters. The width specifier is optional; if you do not use it, the width of the field is determined
by the number of characters between the braces.
Format
Name of Alarm:{Name
In this case, Name is followed by four spaces; the data {Name} displays with 8 characters.
Note: The screen resolution of your computer determines the total number of characters
(and therefore the number of fields) that can be displayed on the alarms page.
See Also
Including fixed text
Name of Alarm:
Any spaces that you use in a text string are also included in the display.
See Also
Displaying lists and tables
The justification specifier is optional; if it is omitted, the field is left justified. If you use a
justification specifier, you must also use the width specifier.
To display field text in columns, use the tab character (^t); for example:
Format
450
{Tag,8}^t{Name,32}^t{Desc,8}
This format aligns the tag, name and description fields of the alarm when using a proportional font to display the alarms.
See Also
Variable data in alarm messages
When LineSpeed1 is a variable tag, this expression will produce the following output on the
alarm display or alarm log:
Line Broken Alarm at Line Speed 1234
The following alarm entry uses an expression instead of a tag:
Alarm Desc
When Tank1 and Tank2 are variable tags, and Offset is a Cicode function, this expression
produces the following output:
High Level at Total Capacity 4985 liters
Note: The result is formatted according to the formatting specified for the first variable tag
in the expression. Standard variable formatting specifiers can be used to define the format
for the numeric variable, over-riding the default format specified in Variable Tags.
See Also
Alarm display fields
Description
Alarm Tag
Note: If the Tag field is configured to support long
names (up to 79 characters), it might cause overlap
in an alarm display. Use a smaller display font if
long names are expected.
{TagEx,n}
451
Field Name
Description
{AlarmType,n}
Alarm type (string), not localized. Values are: Digital, Analog, Advanced, Multi-Digital, Argyle Analog,
Time Stamped, Time Stamped Digital, Time
Stamped Analog.
{TypeNum,n}
{AlmComment,n}
{Cluster,n}
{CUSTOM1,n}
{CUSTOM2,n}
{CUSTOM3,n}
{CUSTOM4,n}
{CUSTOM5,n}
{CUSTOM6,n}
{CUSTOM7,n}
{CUSTOM8,n}
{Name,n}
Alarm Name
Note: If the Name field is configured to support
long names (up to 79 characters), it might cause
overlap in an alarm display. Use a smaller display
font if long names are expected.
{Native_Name,n}
452
{Desc,n}
Alarm Description
{Native_Desc,n}
{Category,n}
Alarm Category
{Help,n}
Help Page
{Area,n}
Area
{Priv,n}
Privilege
{Priority,n}
{Type,n}
{LocalTimeDate,n}
Field Name
Description
{Time,n}
{Date,n}
{DateExt,n}
{State,n}
{Millisec,n}
{High,n}
{HighHigh,n}
{Low,n}
{LowLow,n}
{Rate,n}
{Deviation,n}
{Deadband,n}
Deadband
{Format,n}
{Value,n}
{State,n}
{ErrDesc,n}
Text string associated with a protocol (communication) error. This field is only associated with hardware errors and contains extra information
associated with whatever error is detected (for example if the error is associated with a device, the
device name is returned; if the error is associated
with a Cicode function, the function name is returned; if the error is associated with an I/O Device,
the I/O Devices alert message is returned).
{ErrPage,n}
{LogState,n}
{State_desc, n}
453
Field Name
Description
{Paging,n}
{PagingGroup, n}
Indicates the paging group to which the alarm belongs. Maximum length is 80 characters.
Any of the above fields can be displayed for any type of alarm.
Where not applicable for a particular alarm type, zero or an empty
string will be displayed.
If an alarm value is longer than the field it is to be displayed in (i.e.
n ), it will be truncated or replaced with the #OVR ("overflow of format width") alert message.
For summary pages use {SumState}. To log the state to a device, use
{LogState}. State is the current state of the alarm, SumState is the
state of the alarm when it occurred, and Log State is the state of the
alarm at the transition.
See Also
Alarm summary fields
{FullName,n}
{UserDesc,n}
{OnDate,n}
{OnDateExt,n}
454
Description
Field Name
Description
{OffDate,n}
{OffDateExt,n}
{OnTime,n}
{OffTime,n}
{DeltaTime,n}
{OnMilli,n}
{OffMilli,n}
Adds milliseconds to the time the alarm returned to its normal state.
{AckTime,n}
{AckDate,n}
{AckDateExt,n}
{SumState,n}
{SumDesc,n}
{SumType,n}
{Native_SumDesc,n}
{Comment,n}
{Native_Comment,n}
Note: You can also include in your Alarm Summary any alarm display field other than
State.
See Also
Changing the Order of the Alarm Summary Display
455
Return Type
.On*
Alarm active
Digital
.Ack
Alarm acknowledged
Digital
.Custom1
.Custom2
.Custom3
.Custom4
.Custom5
.Custom6
.Custom7
.Custom8
.Disabled
.Time
Custom Field.
String(64 bytes)
Digital
Long
.Tag
Alarm tag
String (80
bytes)
.Name
Alarm name
String (80
bytes)
.Category
456
Description
Alarm category
Integer
.Paging
Alarm paged
Boolean
.PagingGroup
String (80
bytes)
.Priority
Alarm priority
Integer
* The .On property for Analog alarms is true if any alarms associated with the alarm tag are
active.
Note: Once an alarm is disabled, it cannot be re-enabled unless you use the function AlarmEnable() or AlarmEnableRec()
For digital alarms, time-stamped digital alarms, and advanced alarms, the following properties can also be used:
Property
Description
Return Type
.Desc
Alarm description
.Delay
Alarm delay
Long
Note: Desc exists for all alarm types but will not return meaningful data for analog or timestamped analog alarms. Desc returns an empty string that indicates whether the read succeeded; the write indicates that the tag was resolved and that the write request was sent.
For analog alarms and time-stamped analog alarms, the following properties can also be
used:
Property
Description
Return Type
.Value
Real
.Setpoint
Setpoint
Real
.HighHigh
High High
Real
.High
High
Real
.LowLow
Low Low
Real
.Low
Low
Real
.DeadBand
Deadband
Real
.Rate
Rate
Real
.Deviation
Deviation
Real
.HHDelay
Long
.HDelay
High delay
Long
.LDelay
Low delay
Long
.LLDelay
Long
.DevDelay
Deviation delay
Long
For the digital properties below, only one can be true at any point in time for each alarm.
They are arranged in order of priority, from lowest to highest.
.DVL
Digital
.DVH
Digital
.R
Digital
.L
Digital
.H
Digital
.LL
Digital
.HH
Digital
Note: DVL and DVH are only evaluated if Deviation > 0. R is only evaluated if Rate > 0.
457
Some alarm properties return configuration data. If the user has not defined this information, the following defaults are provided:
Property
Default
.Setpoint
.HighHigh
3.4e+38
.High
3.4e+38
.LowLow
-3.4e+38
.Low
-3.4e+38
.Rate
.Deviation
.Deadband
.Category
.Priority
See Also
Writing to alarm properties
Setting up alarms
458
Description
Alarm acknowledged (once acknowledged
cannot be "unacknowledged")
Input Type
Digital
.Deadband
Alarm Deadband
Real
.Deviation
Real
.Disabled
Alarm disabled
Digital
.HighHigh
High High
Real
.High
High
Real
.LowLow
Low Low
Real
.Low
Low
Real
.HHDelay
Long
.HDelay
High delay
Long
.LDelay
Low delay
Long
.LLDelay
Long
.DevDelay
Deviation delay
Long
.Custom1
.Custom2
.Custom3
.Custom4
.Custom5
.Custom6
.Custom7
.Custom8
Custom field
String
.Paging
Alarm paged
Boolean
.PagingGroup
String
Analog alarm thresholds can also be changed using the AlarmSetThreshold() function.
Note the following:
The alarm tag must be unique.
The alarms databases in all included projects on the alarms server and the Control Client computer must be identical.
See Also
Supported alarm properties
Setting up alarms
Note: If you have many alarms on the alarm page or alarm summary page, use Page Up
and Page Down to scroll through the list.
To create an alarm page:
In Citect Explorer, double-click Create New Page in the Graphics|Pages folder.
- or In the Graphics Builder, choose File | New and then click Page.
Select the alarm template you want to use. Use the Alarm template to create a page to
display configurable alarms, the Summary template for summary alarms, the Disabled
template for disabled alarms, and the Hardware template for hardware alarms.
Choose File|Save.
Specify a name in the page title field. The new page name should match the template
name. For example, call the new hardware alarm page Hardware.
Click OK.
Note: You can also create your own (non-standard) alarm pages. The easiest way to do this
is by copying and modifying the standard alarm templates.
To display an alarm page at runtime:
Create an alarm (or hardware alarm) page in your project if you have not already done
so. The page should be called Alarm for a configurable alarm page, and Hardware for
a hardware alarm page.
Create a new keyboard command or a button, to call the page at runtime. You can also
add a touch command to an existing screen object.
In the command field, enter PageAlarm() to display the configurable alarms page, or
PageHardware() to display the hardware alarms page.
Configure other properties as required.
Click Add to append a new record, or Replace to modify an existing record.
Note: If using the standard page templates, you dont usually need to create a command to
display the page: the commands are already built in.
To display a customized alarm page (with a non-standard name), use the PageDisplay()
function to display the page, followed by the AlarmSetInfo() function as required.
460
See Also
Fonts properties
Fonts properties
Use the Fonts dialog box to define your font properties. Fonts have the following properties:
Font Name
The name of the font (16 characters maximum). Unlike background text, strings, and numbers (which can use any standard Windows font), you must define a font for animated text.
Font Type
Any text font supported by Windows (31 characters maximum). Choose a font type from
the menu.
You can also specify bold, italic, and underlined text. To specify any of these options, append the appropriate specifier to the Font Type, for example:
Font Type
Courier,B
Helv,I
TmsRmn,U
Courier,B,I,U
-10
specifies a ten-point font size. Be aware that you can only specify a point size as a whole
number (integer).
If you have not installed the Font Type (or Pixel Size) on your system, a default font and/
or size is used that most closely resembles the font and/or size you have specified.
If you use a point size, the size remains constant across all screen resolutions. On low-resolution screens, the font appears larger than on high-resolution screens, which might cause
461
misalignment of animation. Only use a point size to display text on computer screens of the
same resolution.
Foreground Color
The foreground color of the displayed text (i.e., the color of the text characters) (16 characters maximum). You can use a predefined color label (accessible via the menu), a user-defined custom label, or the RGB encoded number generated by the function
MakeCitectColour (see the Cicode Reference Guide).
Note: Do not confuse predefined labels with the color Name feature associated with the
Color Picker. You cannot use color names with this dialog; doing so generates a compile
error.
Foreground Flash
The secondary color applied to the font if using flashing color for your text characters (16
characters maximum). You can use a predefined color label (accessible via the menu), a
user-defined custom label, or the RGB encoded number generated by the function MakeCitectColour (see the Cicode Reference Guide).
If you do not specify a color, the text remains solid.
Background Color
The background color of the displayed text (16 characters maximum). You can use a predefined color label (accessible via the menu), a user-defined custom label, or the RGB encoded number generated by the function MakeCitectColour (see the Cicode Reference Guide).
This property is optional. If you do not specify a background color, it defaults to transparent.
Background Flash
The secondary color applied to the background if using flashing color (16 characters maximum). You can use a predefined color label (accessible via the menu), a user-defined custom label, or the RGB encoded number generated by the function MakeCitectColour (see the
Cicode Reference Guide).
If you do not specify a color, the text remains solid.
Comment
Any useful comment (48 characters maximum).
462
Once you have defined your label, you can create fonts to use in your project for alarm categories, Cicode functions, and button objects. For example, use the Fonts dialog box to define a font with the following properties:
Font Name: Plate_Font
Font Type: Arial
Pixel Size: 12
Foreground Color: Plate_Blue
For more information, refer to Knowledge base article Q4024.
See Also
Using System Fonts
463
464
Events Properties
Events have the following properties:
Name
For a single computer system, specify GLOBAL for the event name:
Name
GLOBAL
If you are using a network and want to run an event on all computers, specify GLOBAL for
the event name. If you want to run an event only on specific computers, specify an event
name and use the Computer Setup Wizard (Custom setup) to specify which computer(s)
will run the event. The event name does not have to be unique: you can specify many
events with the same name.
Enter a value of 16 characters max.
Note: Event names should agree with the Tag name syntax. The use of any other characters
such as spaces will result in a compiler error. Instead of a space, use an underscore character (_).
Cluster Name
The default cluster to be used when the event action and event trigger Cicode is run (16
characters maximum). Any tags in these Cicode expressions will resolve to this default
cluster if they dont have their cluster specified inside the expression. This field can be left
blank in single cluster systems or if every tag inside the expressions are declared in the
<ClusterName>.<TagName> format.
465
Time
The time of day to synchronize the Period in hh:mm:ss (hours:minutes:seconds). If you do
not specify a time, Period is synchronized at 00:00:00 (that is, midnight). Enter a value of 32
characters maximum.
Period
The period to check for the event, in hh:mm:ss (hours:minutes:seconds). Enter a value of 32
characters maximum. Alternatively you can specify:
A weekly period by entering the day of the week to check for the event, for example,
Monday, Tuesday, Wednesday, etc.
A monthly period by entering the day of the month to check for the event, for example,
1st, 2nd, 3rd, 4th, 5th, etc.
A yearly period by entering the day and the month to check for the event, for example,
1st January, 25th February, and so on. The day and month must be separated by a space.
If you do not specify a period or time, the period defaults to one second. If you do not specify a period, but do specify the time, the period defaults to one day.
Trigger
The Cicode expression (or Variable tag) which is used to determine whether the event Action is executed. This expression is checked every one second. Enter a value of 254 characters maximum.
Action
The commands to execute. Enter a value of 64 characters maximum.These commands will
execute in the following circumstances:
When the specified Time and Period occurs, and the Trigger condition is TRUE or
blank.
When the Trigger becomes TRUE, and the Time and Period field are blank. The Trigger
must become FALSE and TRUE again for the action to re-execute.
Comment
Any useful comment. Enter a value of 48 characters maximum.
Running Events
The Event Server must be enabled for events to work. You can run an event automatically:
At a specified time and period.
When a trigger condition becomes TRUE.
When a trigger condition is TRUE at a specified time and period.
See Also
Specifying times and periods
Using triggers
466
Comment
Run the event every hour
6:00:00
72:00:00
Monday
15th
25th June
You can also specify the time of day to synchronize the event, for example:
Period
Comment
6:00:00
12:00:00
The Time synchronizes the time of day to run the event and, with the Period, determines
when the event is run; for example:
Time
6:00:00
Period
1:00:00
In this example, the event is run every hour, on the hour. If you start your runtime system
at 7:25am, your event is run at 8:00am, and then every hour after that.
See Also
Using triggers
Using triggers
You can use any Cicode expression (or variable tag) as a trigger for an event. If the result
of the expression (in the Trigger field) becomes TRUE, and if the Time and Period fields
are blank, the event is run. For example:
Time
Period
Trigger
This event is only run when the expression (Trigger) becomes TRUE, that is, when the digital tag RCC1_MC is ON and the analog tag RCC1_SPEED is less than 10. The expression
must become FALSE and then TRUE again before the event is run again.
If you use the Time and/or Period fields, the Trigger is checked at the Time and/or Period
specified, for example:
Time
6:00:00
Period
1:00:00
Trigger
This event is run each hour, but only if the expression (Trigger) is TRUE (that is, if the digital tag RCC1_MC is ON and the analog tag RCC1_SPEED is less than 10).
See Also
Running Events
467
468
trol()
To configure an accumulator:
Choose System | Accumulators. The Accumulators dialog box appears.
Enter the accumulator properties.
Click Add to append a new record, or Replace to modify an existing record.
You use the Accumulator Properties dialog box to configure your accumulators.
See Also
Accumulator Properties
Accumulator Properties
Accumulators have the following properties:
Name
The name of the accumulator. Enter a value of 79 characters or less.
Cluster Name
The name of the cluster that this accumulator runs on (16 characters maximum). If the
Cluster Name is not set, then this accumulator will run on all defined clusters.
Trigger
The Cicode expression (or variable tag) to trigger the accumulator. If the result of the expression (in this field) is TRUE, accumulation starts. If the result of the expression (in this
field) becomes FALSE, accumulation stops. Enter a value of 254 characters or less.
The frequency with which the trigger is checked is controlled by the [Accumulator]WatchTime parameter.
Run Time
The variable (tag) that contains the run time (in seconds). Enter a value of 254 characters
or less. On startup, this value is read. Then the local copy of this variable is incremented
(while Trigger is TRUE) and the variable is written back to the I/O Device at a frequency
determined by the [Accumulator]UpdateTime parameter.
No. of Starts
469
The variable (tag) that contains the number of starts (i.e. the number of times the trigger
changes from FALSE to TRUE). Enter a value of 254 characters or less. On startup, this value is read. Then the local copy of this variable is incremented and the variable is written
back to the I/O Device at a frequency determined by the [Accumulator]UpdateTime parameter.
Totalizer Inc
Any Cicode expression (or variable tag) to add to (increment) the Totalizer variable while
the Trigger condition is TRUE. Enter a value of 254 characters or less.
Totalizer
The variable (tag) that contains the totalized value. Enter a value of 254 characters or less.
On startup, this value is read. Each time the trigger is checked and while the trigger is
TRUE, the value in the Totalizer Inc field is added to the local copy of this Totalizer variable. The new Totalizer variable is written back to the I/O Device at a frequency determined by the [Accumulator]UpdateTime parameter.
For example, if you configure an accumulator for a motor, and Totalizer Inc is the current
(amperage) used by the motor, then Run Time will contain the time (in seconds) that the
motor has run, No. of Starts will contain the number of times the motor was started, and
Totalizer will contain the total current used by the motor. The average current used by the
motor is Totalizer/Run Time.
Comment
Any useful comment. Enter a value of 48 characters or less.
Extended forms fields
The following fields are implemented with extended forms (press F2).
Privilege
The privilege required by an operator to perform operations on the accumulator (by using
accumulator functions). Enter a value of 16 characters or less.
Area
The area to which the accumulator belongs. Only users with access to this area (and any
required privileges) will be able to perform operations on the accumulator. For example, if
you enter Area 1 here, operators must have access to Area 1 (plus any required privileges)
to perform operations on the accumulator. Enter a value of 16 characters or less.
Notes:
The run time, number of starts, and totalized value are stored in variables in your I/O
Device. This allows easy access to these variables and, because they are saved in the I/
O Device, their values are saved if the project is shutdown. You can increase system performance by storing these variables in a Disk I/O Device. (If you store these variables in
your external I/O Devices, communications bandwidth will be consumed updating the
variables.
If using a network, you can use a redundant Disk I/O Device to secure these variables.
The accumulator server runs as part of the Reports Server. If you have a redundant Reports Server, you must use a primary/standby configuration to stop the accumulators
running on both Reports Servers. Use the Computer Setup Wizard to define the Reports
Servers.
470
You can control (re-read or reset) any accumulator at runtime by using the AccControl()
Cicode function.
471
472
Trending Data
The trend system can help you better understand your plant and equipments performance. Trending can be used for dynamic visual analysis (trend and SPC graphs), production records, or for regularly recording the status of equipment for efficiency and
preventive maintenance.
Using trend tags, you can specify the data you want to collect from your I/O Device variables. This information can be logged at regular intervals (periodic trend), or only when an
event occurs (event trend). Event trends are used for trending data that is not time-based,
for example, for a product as it comes off an assembly line. Trend data is usually saved on
disk for analysis or displayed on a trend graph.
The trend system is based on real-time samples. The trend system expects a return of one
data point each time it samples the data. Although gaps in the data can be filled, you will
want to verify that your field device can return data values at the rate you specify (especially if you are using sample periods of less than 100 ms).
Any amount of data can be collected and stored. The only restriction on the amount of data
that you can store is the size of the hard disk on your computer (an efficient data storage
method is used to optimize the use of storage space on your computers hard disk). For
long term storage, you can archive the data to disk or tape (without disrupting your runtime system). For efficient storage, store trend files on a compressed volume.
Note: If you are trending data across a network (distributed processing), it is recommended
that you enable time synchronization using the Time Synchronization configuration application. This verifies that all trends are synchronized to the same time.
You might also consider staggering your trend sample requests using the [Trend]StaggerRequestSubgroups parameter.
See Also
Configuring trend tags
473
LT131
Comment
LT131/COUNTER
Logs Variable Tag LT131 divided by the Variable Tag
COUNTER
Note: When a variable tag is used in the expression field of a trend tag property, the Eng
Zero Scale and Eng Full Scale fields of that variable tag must be set appropriately, or data
will be lost because the trend logs negative values as invalid.
Trigger
474
The Cicode expression (or variable tag) that triggers data logging (254 characters maximum). For example:
Trigger
LT131<50
In this example, logging occurs when the value of the variable tag (LT131) falls below 50.
For a periodic trend, data is logged only while the value of the trigger is TRUE. (The trend
graph will still scroll, but will display <GATED> where the trigger is FALSE.) In the above
example, data is logged continuously while the value of LT131 remains less than 50. Logging ceases when the value rises to (or above) 50. Logging does not occur again until the
value of LT131 falls below 50.
You do not have to specify a trigger for a periodic trend. If you do not specify a trigger for
a periodic trend, logging occurs continuously.
For an event trend, data is logged once when the value of the trigger changes from FALSE
to TRUE. In the above example, one sample is logged when the value of LT131 first becomes less than 50. Another sample is not logged until the value of LT131 rises to (or above
50) and again falls below 50.
Sample Period
The sampling period of the data (16 characters maximum). You can either enter a period of
your own, or choose one from the menu.
Sampling periods of greater than one second should be entered in hh:mm:ss (hours:minutes:seconds) format. If you enter a single digit, without the colon (:), it will be considered
a second. For example, if you enter 2, it will be interpreted as 2 seconds.
Sampling periods of less than one second must be entered as decimals. For example, to enter a period of 200 milliseconds, you would enter 0.2.
If the sample period is less than one second, then one second must be divisible by the period (to give an integer). For example, a sample period of 0.05 is valid, because 1/0.05 = 20,
whereas a sample period of 0.3 is not valid because 1/0.3 = 3.333... .
Note the following:
Your I/O Device must be capable of providing data at the specified rate, otherwise gaps
will appear in the trend data and/or the hardware alarm Trend has missed samples will
be evoked. You can fill gaps in the file and graph using the [Trend]GapFillTime parameter. Gaps in the graph only can be filled using the TrnSetDisplayMode() function.
If trends with a sample period of less than a second are shared by several clients across
a network (distributed processing), you should enable time synchronization using the
Time Synchronization configuration application This verifies that trends are synchronized with each other.
The Trigger is checked each sample period. If the Trigger is TRUE (or has just changed
from FALSE to TRUE, in the case of event trends), the value of the Expression is logged.
Examples
Sample Period
Comment
30
10:00
10:00:00
2:30:00
475
The sampling period of the fastest trend on the page is taken as the default value for the
display period of the page.
This property is optional. If you do not specify a sample period, the sampling period
defaults to 10 seconds.
Note: If you edit this property in an existing project, you should delete the associated trend
files before running the new runtime system (For location of the trend files, see File Name).
Type
The type of trend (32 characters maximum):
TRN_PERIODIC - A trend that is sampled continuously at a specified period. You can
also define a trigger to stop and start the trend (when a specified condition occurs in the
plant).
476
TRN_EVENT - A trend that is sampled once each time the value of the trigger changes
from FALSE to TRUE. Interpolation occurs between each data point to create a continuous graph.
TRN_PERIODIC_EVENT - A trend that is sampled once each time the value of the trigger changes from FALSE to TRUE. No interpolation occurs between these points, thus
providing a graph which spikes at each data point.
Comment
Any useful comment (48 characters maximum).
Extended forms fields
The following fields are implemented with extended forms (press F2).
File Name
The file where the data is to be stored (253 characters maximum). Specify the full path or
use path substitution.
When data is collected from your plant floor, it is stored in a file on the hard disk of your
computer which is then used to display a trend or SPC graph (a separate file is used for each
trend tag).
By default, CitectSCADA stores the file in the [DATA] directory on the hard disk where
you installed CitectSCADA. The default name of the file is the trend tag name. However,
you can specify an alternate file name like this:
File Name
[DATA]:TANK131
where [DATA] specifies the disk and path for the data. Use path substitution to make your
project more portable.
Notes:
You can no longer store trend files in the bin, runtime, backup or user directories or any
subdirectories of these. If you have existing Version 3.xx or 4.xx projects that use these
directories to store trend files, the path for these will have to be changed to the Data directory.
The trend system will buffer the acquired data before saving it to a file. The
[Trend]CacheSize parameters determine the buffer sizes for returned data.
The File Name property is optional. If you do not specify a file name, the file name defaults to [DATA]:<Name> on the hard disk where you installed CitectSCADA. Where
<Name> is the trend Tag Name.
If you use the File Name property, ensure that no other SPC tags or trend tags use the
same filename. Two tags accessing the same file can result in system errors which may
include lost or corrupted trend/SPC data.
477
Do not use a file extension when specifying a file name. If you edit this property (change
the file name or path) in an existing project, all existing trend data is ignored.
Storage Method
Select Scaled or Floating Point (64 characters). Scaled is a 2-byte data storage method;
floating point uses 8 bytes.
Floating point storage has a dramatically expanded data range in comparison to scaled
storage, allowing values to have far greater resolution. However, you need to consider that
it also uses a lot more disk space. Scaled should be used where compatibility with pre-V5.31
trend history files is required.
If you do not specify a storage method, it is set to Scaled by default.
Note: If you edit this property in an existing project, you must delete the associated trend
files - before you run the new runtime system. (For location of the trend files, see the File
Name.)
Privilege
The privilege required by an operator to display the trend data on a trend (16 characters
maximum).
Area
The area to which the trend data belongs (16 characters maximum).
Eng Units
The engineering units of the variable/expression being logged (8 characters maximum).
The engineering units are used by the trend scales and trend cursor displays.
Format
The format of the variable/expression being logged (11 characters maximum). The format
is used by the trend scales and trend cursor displays.
This property is optional. If you do not specify a format, the format defaults to ####.#.
No. Files
The number of history files stored on your hard disk (for this tag) (4 characters maximum).
The maximum number of files you can specify per trend tag is 999. Note that performance
and storage will be severely impacted by having a large number of history files per trend.
If you do not specify the number of files, 2 history files are stored on your hard disk.
Note: If you edit this property in an existing project, you should delete the associated trend
files - before you run the new runtime system. (For location of the trend files, see the File
Name.)
Time
The time of day to synchronize the beginning of the history file, in hh:mm:ss (32 characters
maximum). If you do not specify a time, the file is synchronized at 0:00:00 (i.e. midnight).
Note: If you edit this property in an existing project, you should delete the associated trend
files - before you run the new runtime system. (For location of the trend files, see the File
Name.)
478
Period
The period of the history file, in hh:mm:ss (32 characters maximum). Alternatively, you
can:
Specify a weekly period by entering the day of the week on which to start the history
file, for example Monday, Tuesday, Wednesday, etc.
Specify a monthly period by entering the day of the month on which to start the history
file, for example 1st, 2nd, 3rd, 4th, 5th, etc.
Specify a yearly period by entering the day and the month on which to start the history
file, for example 1st January, 25th February, etc. The day and month must be separated
by a space.
If you do not specify a period, the period defaults to Sunday (weekly).
When deciding on a period setting, be aware that the performance of a trend viewer (be
it the existing CitectSCADAclient or Process Analyst) may be impacted by the size of a
trend file. This is particularly true when displaying event-based trend data.
Note: If you edit this property in an existing project, you should delete the associated trend
files before you run the new runtime system. (For location of the trend files, see File Name.)
Trend Graphs
Trend graphs visually represent past and current activity of plant-floor data, building a picture over time of how a variable (such as product output, level, temperature, and so on)
changes or how a device or process is performing. You can monitor current activity as it
happens and scroll back through time to view trend history.
As the values of variables change over time or as events happen, the graph moves across
the page. The latest values are displayed by default. You can scroll back through historical
data to display past values of the variable (or process).
You can trend any single variable or Cicode expression. You can display any number of
trends on the screen simultaneously, even if they have different sample periods. You can
also display up to eight trend tags (pens) in any trend window.
A trend graph can only communicate with one cluster, therefore you cannot mix trends
from multiple clusters on a single trend graph. To graph trends from multiple clusters you
will need to use multiple trend graphs, or, use the Process Analyst which has no such restrictions.
Historical data collection continues even when the display is not active. You can switch between pages without affecting trend graphs. Trend data acquisition and storage of data (in
trend history files) continues even when the display is not active.
You can use the following standard trends:
A single full page trend, where one trend window displays on a graphics page.
A double full page trend, where two trend windows display on a graphics page.
A zoom trend with two trend windows and added functionality for zooming.
A pop-up trend that you can pop up anywhere (in a separate window) on your computer screen.
User-defined trends that you can position anywhere on any graphics page.
Note: Variable tags can also be visually trended using an SPC Control Chart. Statistical Process Control (SPC) is a facility that enables you to control the quality of materials, manufactured products, services, etc. This quality control is achieved by collecting, arranging,
analyzing, and testing sampled data in a manner that detects lack of uniformity or quality.
479
See Also
Creating trend pages
Trend interpolation
Trend interpolation is used to define the appearance of a trend graph when the incoming
samples fall out of synchronization with the display period or when samples are missed.
For example, a particular trend might be sampled five times between each update of the
trend graph. As only one value can be displayed for each update, a single value must be
used that appropriately represents the five samples; and that could be the highest value,
the lowest value, or an average.
To define how CitectSCADA calculates the value to use, you set a particular trend interpolator display method.
The following table shows the available interpolator display methods, grouped into condense methods (where the display period is longer than the sample period) and stretch methods (where the display period is less than or equal to the sample period).
480
Condense methods
Stretch methods
Average (default) - this displays the average of the samples within the previous
display period
The interpolation display method is set via TrnSetDisplayMode() function. You can also
use the [Trend]GapFillMode parameter, but it will interpolate values within the actual
trend file as well as on the trend graph.
Purpose
Prints a trend that is displayed on the screen.
Prints a plot of one or more trend tags.
Prints two trends (one overlaid on the other), each of
up to four trend tags.
Prints the active window
The standard trend templates have buttons that call these functions to print data.
When you print using the TrnPrint function, the Plot Setup dialog box appears. Use this dialog box to:
Specify the title of the trend.
Add a comment which is displayed beneath the title.
Specify whether the trend is going to print in black and white, or in color. The selection
that you make here will become the setting for the [General]PrinterColorMode parameter.
Define your printer setup. The printer that you select here will be set as the default
printer at the [General]TrnPrinter parameter.
Specify whether or not the form displays the next time the function is used. This check
box sets the [General]DisablePlotSetupForm parameter.
See Also
Exporting Trend Data
Purpose
Retrieves trend information and stores it in a Cicode array
TrnExportClip
TrnExportCSV
TrnExportDBF
The standard trend templates have buttons that call these functions to export data.
481
Note: You can also select part of your trend graph (click and drag) and copy the underlying
values to the Windows clipboard. You can then paste them into an Excel spreadsheet. (If
you are pasting millisecond values, you will need to create a custom format for the TIME
column to display these values correctly. To do this, select the column and select Format |
Cells. In the Number tab, select Custom for Category, and type h:mm:ss.000 AM/PM.)
See Also
Using Trend History Files
No. Files
Comment
10
The maximum number of files you can specify per trend tag is 270.
You can also specify the period between files, i.e., when a new history file is used, for example:
Period
1:00:00
6:00:00
72:00:00
482
Comment
Monday
15th
Period
Comment
25th June
You can also specify the time of day to synchronize the start of the history file; for example:
Time
Comment
6:00:00
12:00:00
18:30:00
See Also
Storage method
Storage method
You can select the storage method to use for trend tags and SPC tags. You are given a choice
of either Scaled or Floating Point. Scaled represents a 2-byte data storage method; floating
point uses 8 bytes.
Floating point storage has a dramatically expanded data range in comparison to Scaled
storage, allowing values to be more precise, but it also uses more disk space. Scaled should
be used where compatibility with pre-V5.31 trend history files is required.
You can set the required storage method via the Trend Tag or SPC Tag properties form
(press the F2 key to view the extended form). The storage method is set to Scaled by default.
See Also
Calculating disk storage
For example, if a trend record produces one sample every ten seconds for one week, and
you are using five data files (five weeks), the number of bytes required is:
Bytes required = 464 x 5 + 176 +
(7 x 24 x 60 x 60) x 5 x 2
10
483
See Also
Calculating disk storage
Floating point
Each data sample requires eight bytes of storage. This alters the equation to:
Bytes required
for each trend
(7 x 24 x 60 x 60) x 5 x 8
10
Note: The calculations above do not take into account the space required to store the history
file for each trend. This is because these files remain at a set size and therefore do not significantly impact the amount of disk space required.
Note: For efficient trends storage, use Windows file compression. By using this method you
often can reduce your files to 10% of their original size; the actual amount of compression
varies depending on the rate of change of the data.
See Also
Calculating disk storage
Reconfiguring history files
484
[SUBSTITUTION]:<filename>
For example, if you decide to store a trend data file called MYFILE in a directory called
C:\CITECT\DATA\MYTRENDS, you can specify the full path to the file, for example:
File Name
C:\CITECT\DATA\MYTRENDS\MYFILE
or define a path substitution (for example MYDATA) and specify the path as:
File Name
[MYDATA]:MYFILE
Path substitution provides greater control of data storage. You can change the location of
all data files by changing the definition of the data path - instead of locating and changing
each occurrence of the data path.
See Also
Default path definitions
Platform
Default Directory
[Bin]
Pre-Vista and
Vista
[User]
Pre-Vista
Vista
ProgramData/Citect/CitectSCADA 7.10/User
Pre-Vista
Vista
ProgramData/Citect/CitectSCADA 7.10/Data
[Data]
[Run]
Pre-Vista and
Vista
[Copy]
Pre-Vista and
Vista
[Back]
Pre-Vista and
Vista
Debugging Trending
The TrendDebug citect.ini parameter is provided to help you while logging and trending
data.
Example:
[Trend]
TrendDebug=n
These settings can be added together to have combinations of logging levels. For example
[Trend]
TrendDebug=6
486
Process Variation
To use SPC effectively, you should understand the concept of variation. When a product
characteristic is measured repeatedly, each measurement is likely to differ from the last.
This is because the process contains sources of variability.
When the data is grouped into a frequency histogram, it will tend to form a pattern. The
pattern is referred to as a probability distribution and is characterized in three ways:
Note: Most SPC techniques assume that the collected data has a normal distribution.
487
Statistical Control
A process is said to be in statistical control when the only sources of variation are from common causes. A statistically controllable process is desirable because it is predictable, while
a statistically uncontrollable process will yield unpredictable distributions.
Even though a process might not be statistically controllable, it might still meet requirements. Conversely, a process which is controllable might not meet requirements. This issue
is clarified by considering Process Capability.
See Also
Process Variation
Process Capability
A process is said to be capable when the percentage of samples outside the specification
limits is less than a predefined value. The following assumptions must also be true:
The process is statistically stable (only common causes of variation exist)
The individual measurements conform to a normal distribution
Measurement variation (due to the measuring instrument) is small
The specification limits are a reflection of the customers requirements and are selectable.
The percentage of samples that must lie within the specification limits is calculated from
the standard deviation (sigma)"3-sigmas" on either side of the mean.
488
Note: The "3-sigma" term refers to the boundaries which are located 3 standard deviations
on either side of the center. For a normal distribution 99.74% of the samples are expected
to fall within this boundary.
Ultimately capability determines whether the process is statistically able to meet the specification or not. Reducing the effects of common variation will make your process more capable, as shown here:
See Also
XRS Control Charts
489
Capability Charts
The process capability chart is the frequency histogram and distribution of all the process
mean data and is used to analyze process capability. This chart is drawn with center line,
lower specification limit and upper specification limit indicators in place. Interpreting capability charts is typically made with the Cp, Cpk, kurtosis and skewness indices.
Cp index
The inherent process capability (Cp) is the ratio of tolerance to 6-sigma. Essentially this index indicates whether the distribution would fit inside the USL and LSL limits. Its meaning
is defined as follows:
Cp > 1.0 - Indicates the process variation will fit within the specified limits (USL and
LSL) and therefore, is capable.
Cp < 1.0 - Indicates the process is not capable.
Cpk Index
The process capability based on the worst case (Cpk) is similar Cp. This index, however,
indicates where the mean lies in relation to the USL and LSL limits. It is used to mathematically clarify Cp. Its meaning is defined as follows:
490
Cpk < 0 - Indicates the process mean is outside the specified limits (USL and LSL)
Cpk = 0 - Indicates the process mean is equal to one of the specified limits.
Cpk > 0 - Indicates the process mean is within the specified limits.
Cpk = 1.0 - Indicates that one side of the 6-sigma limits falls on a specification limit.
Cpk > 1.0 - Indicates that the 6-sigma limits fall completely within the specified limits.
See Also
Pareto Charts
Pareto Charts
A Pareto chart is a tool which is used to analyze the relative frequency of deviations from
specifications or success criteria. The Pareto chart is a frequency histogram which is ordered from highest to lowest. Unlike control and capability charts, this chart uses no statistical guides.
Pareto charts emphasize Paretos empirical law that any assortment of events consists of a
few major and many minor elements. In the context of SQC, it is important to select the few
vital major opportunities for improvement from the many trivial minor ones. The Pareto
chart is particularly useful for Cost-to-fix versus Deviation-frequency analysis.
In addition to the histogram, typically a cumulative percentage is also given. From top to
bottom, the percentage represents the ratio of the sum of all values to this point, to the sum
of all values in the chart.
Click OK.
Double-click the graph display.
Enter the variable tag in the Genie pop-up.
Click OK.
Save the page.
See Also
SPC Tags
SPC Control Charts
491
SPC Tags
SPC tags specify data that is to be collected for use in SPC operations. Once data is defined
it can be dynamically analyzed (as SPC graphs and alarms) at run-time. SPC tags are similar to trend tags.
Like trends, CitectSCADA can collect and store any amount of SPC data. The only restriction on the amount of data that you can store is the size of the hard disk on your computer.
(CitectSCADA uses an efficient data storage method to optimize the use of storage space
on your computers hard disk.) For long-term storage, you can archive the data to disk or
tape (without disrupting your runtime system). You can also log data at regular intervals
(periodic trend), or only when an event occurs (event trend), in the same manner as Trend
Tags.
Note: SPC does not support Periodic-Event trends, which is a combination of the properties
of Periodic and Event trends. In addition, if you use event-based SPC tags, your display
screen refresh rate may be slower than desired or practical for your application.
When you define an SPC tag you will want to be sure to fill in the upper specification limit
(USL) and lower specification limit (LSL) if you intend to perform a capability analysis.
These values should accurately represent the users requirements, and the target value
should lie midway between the two. If these fields are left blank the capability analysis will
be meaningless.
To configure an SPC tag:
Choose Tags | SPC Tags. The SPC Tags dialog box appears.
Enter the SPC tags properties.
Click Add to append a new record, or Replace to modify an existing record.
See Also
SPC tag properties
492
The logged value of the SPC tag. Enter a value of 254 characters or less. You can log individual variables by using a Variable Tag, for example:
Expression
PT104
Comment
The value of the process variable PT104 is logged. Variable PT104 should be defined as a
variable tag. You can also log any Cicode expression or function, for example:
Expression
Comment
PT104/COUNTER
Logs Variable Tag PT104 divided by the Variable Tag
COUNTER
Trigger
The Cicode expression (or variable tag) that triggers data logging. Enter a value of 254 characters or less. For example:
Trigger
PT104<500
In this example, logging occurs when the value of the variable tag (PT104) falls below 500.
For a periodic SPC trend, data is logged only while the value of the trigger is TRUE. In the
above example, data is logged continuously while the value of PT104 remains less than 500.
Logging ceases when the value rises to (or above) 500. Logging does not occur again until
the value of PT104 falls below 500.
You do not have to specify a trigger for a periodic SPC trend. If you do not specify a trigger
for a periodic SPC trend, then logging will occur continuously.
For an event SPC trend,data is logged once when the value of the trigger changes from
FALSE to TRUE. In the above example, one sample is logged when the value of PT104 first
becomes less than 500. Another sample is not logged until the value of PT104 rises to (or
above 500) and again falls below 500.
Sample Period (16 Chars.)
The sampling period of the data, in hh:mm:ss (hours:minutes:seconds). CitectSCADA
checks the Trigger each sample period. If the Trigger is TRUE (or has just changed from
FALSE to TRUE, in the case of event SPC trends), CitectSCADA will log the value of the
Expression.
Examples
Sample Period
30
10:00
Comment
Logs data every 30 seconds
Logs data every 10 minutes
10:00:00
2:30:00
This property is optional. If you do not specify a sample period, the sampling period will
default to 10 seconds.
Note: If you edit this property in an existing project, you should delete the associated trend
files before you run the new runtime system.
Type (32 Chars.)
493
[DATA]:TANK131
where [DATA] specifies the disk and path for the data. Use path substitution to make your
project more portable.
The File Name property is optional. If you do not specify a file name, the file name defaults
to [DATA]:<Name> on the hard disk where you installed CitectSCADA. Where <Name> is
the SPC Tag Name.
494
Note: If you use the File Name property, ensure that no other SPC tags or trend tags use
the same filename. Two tags accessing the same file can result in system errors which may
include lost or corrupted trend/SPC data.
Note: Do not use a file extension when specifying a file name. If you edit this property
(change the file name or path) in an existing project, all existing SPC data is ignored.
Storage Method
Select either Scaled or Floating Point as the storage method for the SPC data (64 characters). The key difference between these two options is that Scaled is a two-byte data storage
method, whereas Floating Point uses eight bytes.
Floating Point storage has a dramatically expanded data range in comparison to Scaled
storage, allowing values to have far greater resolution. However, you need to consider that
it also uses a lot more disk space. Scaled should be used where compatibility with pre-V5.31
trend history files is required.
If you do not specify a storage method, it is set to Scaled by default.
Note: If you edit this property in an existing project, you must delete the associated trend
files - before you run the new runtime system.
Privilege (16 Chars.)
The privilege required by an operator to display the SPC data on an SPC page.
Area (16 Chars.)
The area to which the SPC data belongs. Only users with access to this area (and any required privileges) will be able to display the SPC data on an SPC page. For example, if you
enter Area 1 here, operators must have access to Area 1 (plus any required privileges) to
display the SPC data.
Eng Units (8 Chars.)
The engineering units of the variable/expression being logged. The engineering units are
used by the SPC trend scales and SPC trend cursor displays.
Format (11 Chars.)
The format of the variable/expression being logged. The format is used by the SPC trend
scales and SPC trend cursor displays.
This property is optional. If you do not specify a format, the format defaults to ####.#.
No. Files (4 Chars.)
The number of history files stored on your hard disk (for this tag).
If you do not specify the number of files, 2 history files are stored on your hard disk. The
maximum number of files you can specify is 270.
Note: If you edit this property in an existing project, you should delete the associated SPC
trend files - before you run the new runtime system.
Subgroup Size (8 Chars.)
The size of each subgroup. The default value for this value is 5. Valid values are 1 - 25 inclusive.
495
Capability charts
The process capability chart is a frequency histogram and distribution of all the sample
data currently displayed (on the Mean chart). CitectSCADA automatically takes the data
being trended, builds a distribution, adds the LSL and USL. It also calculates the Cp, Cpk,
kurtosis, and skewness indices.
The process capability is defined in relation to the upper and lower specification limits
(USL and LSL) for a given SPC Tag. These values are defined in SPC Tags and should accurately represent the users requirements.
See Also
Configuring capability charts
Pareto Charts
Pareto analysis is a technique used to identify the relative importance of problems and conditions. The Pareto chart is a frequency histogram ordered from highest to lowestCitectSCADA automatically orders the bars at run-time. The data for each bar in the
histogram represents one CitectSCADA variable - as defined in Variable Tags. Do not use
SPC tags.
Note: Typically the frequency in a histogram is of integer type, though you can use floating
point types if you want. Negative values are not valid.
497
See Also
Configuring Pareto charts
SPC Alarms
CitectSCADAautomatically monitors several special kinds of conditions that are specific to
SPC data. When specific patterns or events occur to an SPC tag, it will set the appropriate
alarm. Typically these alarms are related to, and used in conjunction with, the XRS control
charts.
SPC alarms are configured differently to standard digital alarms to provide for this extra
functionality. SPC alarms must be configured using the Advanced Alarms form. You use
the SPCAlarms Cicode function to check for the condition of the alarms:
Note: An SPC alarm can only be defined on an Alarm Server in the same cluster as the
Trends Server that contains the SPC tag (though the variable tag referenced in the SPC tag
can be on a different IOServer cluster).
Complete the Advanced Alarm form as shown here:
Advanced Alarms
Alarm Tag
Feed_Above_UCL
Alarm Desc
Un-controlled variation
Expression
SPCAlarms("Feed_SPC", XAboveUCL)
Comment
The SPC (Trends) Server checks for any specified alarm conditions. When one is detected,
it informs the Alarm Server that an alarm has occurred. Be aware of the number of subgroups displayed on your SPC charts, and the number used in SPC alarm calculations (as
set by the [SPC]AlarmBufferSize parameter). If these two values differ, SPC alarms might
not correlate with your SPC charts.
498
The following list shows the alarms types that are valid:
Name
Description
XFreak
XOutsideCL
XAboveUCL
XBelowLCL
XOutsideWL
Process mean outside the alert limits which are 67% of the UCL
and LCL.
XGradualUp
XGradualDown
XUpTrend
XDownTrend
XErratic
XStratification
XMixture
Several consecutive points are far from (outside 1 sigma of) the
center line.
ROutsideCL
RAboveUCL
RBelowLCL
Note: The above alarms rely on n number of consecutive points to generate the alarm. The
value of n can be set for each type of alarm through SPC parameters.
See Also
SPC Formulas and Constants
Where
499
Where
is the current sample value and
is the previous sample value. The number
of moving ranges in the process is always one less than the number of subgroups.
Subgroup Standard Deviation (s):
is a measure of absolute variation or dispersion. It describes how much the sample values
differ from their mean, and is estimated by:
The number of subgroup standard deviations in the process is always one less than the
number of subgroups.
Process Average ( ):
Where , , and
the process.
Process Range ( ):
Where MR2, MR3, and MRm are the subgroup moving ranges, and m is the total number of
subgroups in the process.
Process Standard Deviation ( ):
Where X1, X2, and Xn are the sample values in the subgroup, and n is the total number of
samples in the subgroup.
Subgroup Range (R):
500
is the difference between the highest and lowest samples in the group, and is defined by:
Where Xmax is the maximum sample value and Xmin is the minimum sample value in the
group.
Subgroup Standard Deviation (s):
is a measure of absolute variation or dispersion. It describes how much the sample values
differ from their mean, and is defined by:
Process Average ( ):
Where , , and
in the process.
Process Range ( ):
Where R1, R2, and Rm are the subgroup ranges, and m is the total number of subgroups in
the process.
Process Standard Deviation ( ):
Where s1, s2 and sm are the group standard deviations, and m is the total number of groups
in the process.
Average Control Limits (UCLx and LCLx):
Specify the approximated 3-sigma boundaries. For a normal distribution 99.74% of the
samples will fall within this boundary.
501
Where is the Process Range and A2 is a constant (given in the Control Chart Line Constants table).
Range Control Limits (UCLR and LCLR):
Specify the approximated 3-sigma boundaries. For a normal distribution 99.74% of the
samples will fall within this boundary.
Where is the Process Range and D3 and D4 are constants (given in the Control Chart Line
Constants table).
Standard Deviation Control Limits (UCLs and LCLs):
Specify the approximated 3-sigma boundaries. For a normal distribution 99.74% of the
samples will fall within this boundary.
Where is the Process Standard Deviation and B3 and B4 are constants given in the Control
Chart Line Constants table).
Process Capability (Cp):
Is the capability of a process to meet a specific tolerance. A process is considered capable
when the percentage of samples of a variable for that process that fall within the upper and
lower specification limits is greater than a specified value.
The inherent process capability is defined as:
Cp > 1.0 - Indicates the process variation is within the specified limits (USL and LSL) and
therefore, is capable.
Cp < 1.0 - Indicates the process is not capable.
502
Cpk < 0 - Indicates the process mean is outside the specified limits (USL and LSL)
Cpk = 0 - Indicates the process mean is equal to one of the specified limits.
Cpk > 0 - Indicates the process mean is within the specified limits.
Cpk = 1.0 - Indicates that one side of the 6-sigma limits falls on a specification limit.
Cpk > 1.0 - Indicates that the 6-sigma limits fall completely within the specified limits.
Skewness (Sk):
Is the degree of asymmetry of a frequency distribution (usually in relation to a normal distribution).
where N is the number of samples for the entire process (i.e. Subgroup Size * number of
Subgroups).
Skewness > 0 - Indicates that the histograms mean (and tail) is pushed to the right.
Skewness < 0 - Indicates that the histograms mean (and tail) is pushed to the left.
Kurtosis (Ku):
Is the degree of peakedness of a frequency distribution (usually in relation to a normal distribution).
where N is the number of samples for the entire process (i.e. Subgroup Size * number of
Subgroups).
Kurtosis < 3 - Indicates a thin distribution with a relatively high peak.
Kurtosis > 3 - Indicates a distribution that is wide and flat topped.
Averages
Ranges
Standard Deviations
Group
A2
D2*
D3
D4
B3
B4
2.660
1.128
3.267
3.267
1.880
3.267
3.267
1.023
2.574
2.568
0.729
2.282
2.266
0.577
2.114
2.089
0.483
2.004
0.030
1.970
0.419
0.076
1.924
0.118
1.882
0.373
0.136
1.864
0.185
1.815
503
0.337
0.184
1.816
0.239
1.761
10
0.308
0.223
1.777
0.284
1.716
10
0.308
0.223
1.777
0.284
1.716
11
0.285
0.256
1.744
0.321
1.679
12
0.266
0.283
1.717
0.354
1.646
13
0.249
0.307
1.693
0.382
1.618
14
0.235
0.328
1.672
0.406
1.594
15
0.223
0.347
1.653
0.428
1.572
16
0.212
0.363
1.637
0.448
1.552
17
0.203
0.378
1.622
0.466
1.534
18
0.194
0.391
1.608
0.482
1.518
19
0.187
0.403
1.597
0.497
1.503
20
0.180
0.415
1.585
0.510
1.490
21
0.173
0.425
1.575
0.523
1.477
22
0.167
0.434
1.566
0.534
1.466
23
0.162
0.443
1.557
0.545
1.455
24
0.157
0.451
1.548
0.555
1.445
25
0.153
0.459
1.541
0.565
1.435
* D2 is only used for estimating standard deviation when there is one sample per subgroup.
Reference ANSI Z1.1-1985, Z1.2-1985 & Z1.3-1985: American National Standard, Guide for
Quality Control Charts, Control Chart Method of Analyzing Data, Control Chart Method of Controlling Quality During Production.
Hints
Double-click the chart area on an SPC page to display the SPC Genie and change the SPC
variables.
The tools and menu items in these procedures automatically open the CitectSCADA form
for you. Move the cursor till it changes to a hand to find these tools or options.
504
Configuring reports
To design, configure and use a report:
Configure a device for output of the report (for example, if you want to save a report to
a file when it is run, set up an ASCII_DEV device).
Configure the report properties.
Edit the report format file. Remember that for an RTF report, the report format file must
be saved in RTF format (i.e., with an .RTF file extension).
Define your PC as a reports server using the Computer Setup Wizard.
To configure report properties:
Choose System | Reports to display the Reports dialog box.
Enter the reports properties. Click Edit to edit the report format file.
Use the Reports dialog box to configure your reports.
See Also
Reports dialog box
Note: Where Cluster Name is left blank, the name must be unique to all defined clusters.
Cluster Name
The name of the cluster that runs this report (16 characters maximum). If the Cluster Name
is not set, then CitectSCADA considers this report to run on all defined clusters.
Time
The time of day to synchronize the report, in hh:mm:ss (hours:minutes:seconds). If you do
not specify a time, the report is synchronized at 0:00:00 (i.e., midnight). Enter a value of 32
characters or less.
Period
The period of the report, in hh:mm:ss (hours:minutes:seconds). Enter a value of 32 characters or less. Alternatively you can:
Specify a weekly period by entering the day of the week when the report is to start, for
example, Monday, Tuesday, Wednesday, etc.
Specify a monthly period by entering the day of the month when the report is to start,
for example, 1st, 2nd, 3rd, 4th, 5th, etc.
Specify a yearly period by entering the day and the month when the report is to start,
for example, 1st January, 25th February, etc. The day and month must be separated by
a space.
If you do not specify a period, the report is run daily.
Trigger
Any Cicode expression (or Variable tag) to trigger the report. Enter a value of 254 characters or less. If the result of the expression (in this field) is TRUE, and the Time and Period
fields are blank, the report is run. The report is only run when the expression becomes
TRUE, and it must become FALSE then TRUE again before the report is re-run.
Report Format File
The name of the report format file. Enter a value of 253 characters or less. If you do not
specify a file extension, it defaults to .RPT. Any valid file name can be used; however, you
cannot use a Path Substitution in this field. If you specify a filename without a path, the file
saves into the directory predefined as Run. The report is assumed (by the CitectSCADA
compiler) to be ASCII unless an RTF extension is used.
Note: The file name of your report format file can be up to 64 characters long, or 253 characters including the path. It can consist of any characters other than the single quote (), and
the semi-colon (;).
Output Device
The device where the report will be sent. Enter a value of 16 characters or less.
For RTF reports that are to be saved as a file, select a device of type ASCII_DEV here. Due
to the differing natures of their content; however, it is not recommended that the same
ASCII device be used for logging both RTF and non-RTF reports.
Note: If two or more reports are running at the same time and are sending their output to
the same printer, the output of each report can become mixed. You must use semaphores
to control the access to the printer in each report. See the SemOpen Cicode function. If the
report only contains Cicode statements (and has no output data), this property is optional.
506
Comment
Any useful comment. Enter a value of 48 characters or less.
Extended forms fields
The following fields are implemented with extended forms (press F2).
Privilege
The privilege required by an operator to run this report if the report is a command-driven
report. Enter a value of 16 characters or less.
If the report is time-driven or event-driven, this property is ignored.
Note: If you assign an acknowledgment privilege to a report, do not assign a privilege to
the command(s) that run the report. If you do assign a different privilege to the commands,
an operator must have both privileges to run the report.
Area
The area to which this report belongs. Enter a value of 16 characters or less. Only users with
access to this area (and any required privileges) will be able to run this report. For example,
if you enter Area 1 here, operators must have access to Area 1 (plus any required privileges)
to run this report.
Running Reports
You can run a report by the following methods:
Automatically when CitectSCADA starts up
Automatically at a specified time and period
Automatically when an event is triggered
By using a command
A combination of the above
See Also
Running a report on startup
Specifying times and periods
Using triggers
Using commands
Comment
Run the report every hour
507
Period
Comment
6:00:00
72:00:00
Monday
15
th
25th June
You can also specify the time of day to synchronize the report, for example:
Time
Comment
6:00:00
12:00:00
The time synchronizes the time of day to run the report and, with the Period, determines
when the report is run, for example:
Time
Period
6:00:00
1:00:00
In this example, the report is run every hour, on the hour. If you start your runtime system
at 7:25am, your report is run at 8:00am, and then every hour after that.
See Also
Using triggers
Using triggers
You can use any Cicode expression (or variable tag) as a trigger for a report. If the result of
the expression (in the Trigger field) becomes TRUE, and if the Time and Period fields are
blank, the report is run. For example:
Time
Period
Trigger
This report is only run when the expression (Trigger) becomes TRUE, i.e., when the digital
tag RCC1_MC is ON and the analog tag RCC1_SPEED is less than 10. The expression must
become FALSE and then TRUE again before the report is run again.
If you use the Time and/or Period fields, the trigger is checked at the time and/or period
specified, for example:
Time
6:00:00
Period
1:00:00
Trigger
This report is run each hour, but only if the expression (Trigger) is TRUE (i.e., if the digital
tag RCC1_MC is ON and the analog tag RCC1_SPEED is less than 10).
See Also
Using commands
508
Using commands
If the Time, Period, and Trigger fields are blank, the report can only be run by a command
that calls the Cicode Report() function.
The size of each field (number of characters) is determined by either the format specification, or by the number of characters between the braces. In the above example, the variable
PV12 is formatted with four characters before the decimal point and two characters after.
You do not have to include the format, for example:
{PV12}
Here, the variable is formatted using only four characters (the number of characters between the braces).
The following rules apply when logging a report to a database device:
The format (for the report field) must not specify a field size greater than the size of the
relevant field specified in the device.
No spaces are allowed between each field specification, for example:
{TIME(1) }{PV12:####.##}{PV12:4.2}
The block of Cicode is delimited by the commands {CICODE} and {END}. After the {END} command, the report switches back into WYSIWYG mode. If the entire report is Cicode or the
last section is Cicode, the {END} command is not required.
A block of Cicode does not send any output to the device unless you use either the Print()
or PrintLn() functions. If you use one of these functions, the argument is printed to the device.
Cicode variables
You can also declare variables for use within your Cicode block. All variables should be declared at the beginning of the file (i.e. before any report format or Cicode). Add a {CICODE}
block first; for example:
{CICODE}
INT nVar1;
STRING sVar2;
Statements;
{END}
Remainder of report
Including comments
You can include comments by using the comment character ! enclosed in braces - for example:
{!This is a Comment}
A comment in the body of a report differs from a comment in a Cicode block: a comment
in a Cicode block does not require braces.
Including other report elements
The following table describes other elements you can include in reports.
To...
Do this...
Include a plot
See Also
Report example
Report example
The following is an example of a report format file (for a printer or ASCII file device):
510
----------------------------------SHIFT REPORT
----------------------------------{Time(1) } {Date(2) }
Shift Production {Shift_Prod:###.##} tons
Total Production {Total_Prod} tons
{! The following Cicode displays "Shift Report Complete" on the
screen}
{CICODE}
Print("End of Report")
Shift_Prod = 0; ! Reset the Shift production tonnage
Prompt("Shift Report Complete");
{END}
{FF}
This report produces the following output to the device and displays "Shift Report Complete" on the graphics page.
----------------------------------SHIFT REPORT
----------------------------------6:00am
12/3/92
Shift Production 352.45 tons
Total Production 15728 tons
End of Report
Meaning
The value is incorrectly associated (with a substitution string or
Genie).
#COM
#DIV/0
#ERR
#MEM
#PEND
#RANGE
#STACK
#WAIT
For example:
Report Format:
{PV_1} {SP_1} {OP_1}
If the above report is run when the value of PV_1 is out of range (for example 101.5), SP_1
is 42.35 and OP_1 is 60.0, the output of the report is:
Report Output:
#RANGE 42.35 60.0
When reports are written to a database device, you might sometimes want to disable the
alert messages and write the values to the report (even if the values are invalid). Use the
ERR_FORMAT_OFF command to disable all alert messages and write all data as values.
For example:
Report Format:
{ERR_FORMAT_OFF}
{PV_1} {SP_1} {OP_1}
If the above report is run when the value of PV_1 is out of range (for example 101.5),
SP_1 is
42.35 and OP_1 is 60.0, the output of the report is:
Report Output:
42.35 60.0
512
Suppressing reports
You can suppress reports that are triggered from I/O Devices if a communication error is
detected by using the [Report]ComBreak parameter. For example, you might configure a report to be run every hour when a bit is on. The I/O Device associated with that bit goes offline. If the [Report]ComBreak parameter is 0, the report does not run. If the parameter is 1,
and if the latest valid value that was read from that bit was 1, the report is run.
This parameter only applies to the trigger of the report, not to the data in the report.
513
514
Instead of entering the same statements when required in a command, you can define a label, and then use the label instead of the statements. When you compile your project, each
occurrence of the label is resolved; that is, the expression in the label is substituted for the
label name. For example:
When an operator issues this command, the expression defined in the label is substituted
in the command.
515
You can also use the label in combination with other statements, for example:
The main advantage of a label is that it is a global definition, recognized throughout the CitectSCADA system. If you want to change something (in the above example you might
change the file name or the way the data is logged), you only need to change it in one place
- in the label definition. All other occurrences of the label name will reflect the changes.
See Also
Using Arguments in Labels
Converting Values into Strings
516
Substituting Strings
Defining Labels
Inc(X, STEP)
Expression
X = X + STEP
Here, "X" is the variable to be incremented and "STEP" determines the amount of the increment. You can then use this label in a command, as in the following example:
Key Sequence
FastInc
Command
Inc(SP12, 10);
An operator can use this command to increment the value of SP12 by 10.
Specifying default values
You can specify a default value for an argument when you define a label, for example:
Label Name
Expression
X = X + STEP
When you subsequently use this label without any arguments in a command, the default
value is used, for example:
Key Sequence
FastInc
Command
Inc(SP12);
See Also
Converting Values into Strings
ShowVariable(TAG)
Expression
In the above example, only one argument (TAG) is passed to a function that actually requires three arguments (AN, font and message). When you use this label in a command,
the function uses AN 25 and the message displays in "BigFont". Only the third argument
(the actual message) varies.
The third argument passed to the function is:
...#TAG+"="+TAG:##.#
#TAG indicates that the name of the tag (and not its value) is displayed.
517
TAG:##.# indicates that the value of TAG is converted to a string and displayed. It is formatted with two numbers before the decimal point and one number following the decimal
point.
You can use the above label in a command such as:
Command
ShowVariable(SP12);
When you use this command in your runtime system, the command displays "SP12=<value>", where value is the actual value of SP12 at the time (for example SP12=42.0).
See Also
Substituting Strings
Substituting Strings
You can pass a string substitution as an argument in a label, for when several variables
have part of the variable name in common; for example:
Label Name
Expression
SPDev(TAG)
Prompt("Deviation=" + "IntToStr(CP##TAG## SP##TAG##));
In the above example, TAG is the common portion of the variable name, and is substituted
at each occurrence in the expression. To display the difference between two variables
CP123 and SP123, you would specify SPDev(123) in a command, for example:
Command
SPDev(123);
You cannot use a substitution within a string. In the following example, the DESC Parameter (a text description) will not be substituted as it is between quotation marks:
Prompt("Deviation for ##DESC##=" + "IntToStr(CP##TAG## SP##TAG##))
See Also
Defining Labels
Defining Labels
You can define labels to use in your system.
To define a label:
Choose System | Labels. The Labels dialog box will display.
Enter a Label Name of 128 characters or less. Whenever this name is used (i.e,. in Cicode
or a field), CitectSCADA automatically substitutes the expression below.
Enter an Expression to be substituted for the label (maximum length is 254 characters).
You can use a label to substitute a name for an entity or Cicode expression; for instance,
when you use the entity (or Cicode expression) in several database records.
Add a Comment (of 48 characters or less).
Click Add to append a new record, or Replace to modify an existing record.
518
You can use devices for various purposes; for example, to send the output of a report to a
printer, or write data to a database.
dBASE databases
SQL databases (through ODBC-compliant drivers)
Printers (connected to your CitectSCADA computer or network)
You can configure any number of devices; however, a device is a common resource. You
can, for example, configure a single device that sends the output of all your CitectSCADA
reports to a printer (when they are requested).
See Also
Using groups of devices
Configuring Devices
Formatting Data in the Device
Using Device History Files
About Print Management
520
See Also
Using devices to read data
Note: When you read from a group of devices, data is only read from the first device in the
group.
See Also
Configuring Devices
Configuring Devices
You must configure your devices before you can use them with your CitectSCADA system.
To configure a device:
Choose System | Devices. The Devices dialog box appears.
Complete the Devices dialog box using the description of the text boxes below.
Click Add to append a new record, or Replace to modify an existing record.
Devices have the following properties:
Name
The name of the device. The device name can be the name of a group of devices, or a label
for a device. Enter a value of 16 characters or less.
See Also
Using groups of devices
Using Labels
"Predefined Devices" in the CitectSCADA Technical Reference
Format
Specifies how the data is formatted in the device. The format is determined by the type of
Device, and the data that is sent to the device. Enter a value of 120 characters or less. See
Using Command Fields for information on available fields.
521
If you are logging alarms or command messages, you must specify a format, or no data is
written to the device.
Note: The log device for a command is specified wherever the command is defined. The log
device for an alarm is specified at the Alarm Categories form.
When producing reports, the format is ignored. (The format defined for the report is used
to write the report to the device.)
See Also
Formatting Data in the Device
Alarm display fields
Alarm summary fields
Using Command Fields
Header
Additional information for the device. Enter a value of 120 characters or less.
Printer devices
The header is printed on each page. A new page is created each time the form length is
reached. The [Device]FormLength parameter is used to set the form length.
ASCII file devices
Not applicable.
dBASE database devices
Contains the field name used to index the database, for example:
Header
{Name}
LPT1:
File Name
COM2:
File Name
\\PrintServer\BubbleJet1
When you specify a printer port, you must include the colon character (:), otherwise CitectSCADA tries to write to a file (device) with a name similar to the printer port (i.e. LPT1
or COM2).
522
Note: When using a UNC name in Windows 95, the printer must be in the Printers section
of the Control Panel.
ASCII file devices and dBASE database devices
The name of the active file, for example:
File Name
ALARMLOG.TXT
File Name
[DATA]:ALARMLOG.TXT
This property is optional. If you do not specify a file name, File Name defaults to \Citon the hard disk where you installed CitectSCADA. <Name> is
the first eight characters of the device name. If you use this property, verify that no other
devices have the same first eight characters in the device name.
ectSCADA 7.10\bin\<Name>
LOGFILE
File Name
REPTBL
Type
The type of device. Enter a value of 16 characters or less.
Device Type
Device Description
ASCII_DEV
ASCII file*
PRINTER_DEV
Printer
DBASE_DEV
dBASE file
SQL_DEV
SQL database
* When defining RTF report properties, an ASCII device would be selected if the report was
to be saved as a file.
This property is optional. If you do not specify a type, the device Type is ASCII_DEV unless:
The file name is a printer device (LPT1: to LPT4: or COM1: to COM4: or a UNC name),
where Type is PRINTER_DEV, or
The file name extension is .DBF, where Type is dBASE_DEV.
See Also
About Print Management
No. Files
The number of history files. Enter a value of 4 characters or less.
By default, CitectSCADA creates a single data file for each device. (This data file is called
<filename.TXT> or <filename.DBF>, depending whether the device is an ASCII device or
database device.) The number of history files you specify here are in addition to the data
file.
Note: If you do not want history files created, you must enter 0 (zero) here, and set the [Device]CreateHistoryFiles parameter to 0; otherwise, 10 history files will be created as a de-
523
fault. You must also verify that the data file is of a fixed size. (If the data accumulates, the
file eventually fills the hard disk.)
If you specify -1 the data is appended to the end of one file.
If you are logging alarm, keyboard commands, or reports to the device, specify the number
of files to be created, and the time of each file.
See Also
Time
The time of day to synchronize the beginning of the history file, in hh:mm:ss (hours:minutes:seconds). Enter a value of 32 characters or less. If you accepted the default number of
history files above, and you specify a time and period, 10 history files will be created. If you
do not specify a time, the file is synchronized at 0:00:00 (i.e. midnight).
If you omit both the time and the period, additional history files will still be created (with
the default time and period). If you dont want history files to be created, you must set the
[Device]CreateHistoryFiles parameter to 0 (zero).
Period
The period of the history file, in hh:mm:ss (hours:minutes:seconds). Enter a value of 32
characters or less. Alternatively you can:
Specify a weekly period by entering the day of the week on which to start the history
file, for example Monday, Tuesday, Wednesday, etc.
Specify a monthly period by entering the day of the month on which to start the history
file, for example 1st, 2nd, 3rd, 4th, 5th, etc.
Specify a yearly period by entering the day and month on which to start the history file,
for example 1st January, 25th February, etc. The day and month must be separated by a
space.
If you accepted the default number of history files above, and you specify a time and period, 10 history files will be created.
If you do not specify a period, the period defaults to Sunday (weekly).
If you omit both the time and the period, additional history files will still be created (with
the default time and period). If you dont want history files to be created, you must set the
[Device]CreateHistoryFiles parameter to 0 (zero).
Cluster Name
Select a cluster from the list of clusters defined previously with the Servers, Clusters command in the Project Editor (16 characters maximum). See "Cluster Definitions". If this is a
single cluster system this field can be left blank.
Process
Select the type of server (or client) on which the process runs that sends data to the device
(16 characters maximum). This field is used to prevent a history file being created while the
device is active. If there is no history processing then this field can be left blank
Comment
Any useful comment. Enter a value of 48 characters or less.
524
Overload
Overtemp
12:32:21
13:02:45
When producing reports, the device format is ignored. The format defined for the report
(i.e. the report format file) is used to write the report to the device.
To include CitectSCADA data you must specify the field name and (optionally a width for
each field to be printed or written to the file. The format has the following syntax:
{<field name>, [width[, justification]]}
{Tag,8}{Name,32}
In this case, two fields are printed or written to the file - Tag, with 8 characters, and Name,
with 32 characters. The width specifier is optional - if you do not specify a width, the width
of the field is determined by the number of characters between the braces, for example:
Format
{Name }
In this case, Name is followed by four spaces - the field is printed or written to the file with
8 characters.
Creating lists and tables
To set the justification of the text in each field, use a justification specifier. You can use three
justification characters, L (Left), R (Right), and N (None) - for example:
Format
{Tag,8,L} {Name,32,R}
The justification specifier is optional - if it is omitted, the field is left justified. If you use a
justification specifier, you must also use the width specifier.
To display field text in columns, use the tab character (^t) - for example:
Format
{Tag,8}^t{Name,32}^t{Desc,32} {Time,8,R}
525
Name of Alarm:
Any spaces that you use in a text string are also included in the string.
See Also
Formatting Data in the Device
Using a database device
{Tag,8}{Name,32}
In this case, the database is created with two database fields - Tag, with 8 characters, and
Name, with 32 characters. The size of each database field is determined by the width you
specify in the format. (Justification character are ignored.) All database fields are character
(string) field types.
You can define your own fields (as well as the standard CitectSCADA fields) for the database device, for example:
Format
{Name,16}{Water,8}{Sugar,8}{Flour,8}
{Salt,8}{Yeast,8}{Milk,8}
Dont leave any spaces between each field definition or at the end of the format string, or
CitectSCADA creates extra fields for each space (in the device). Do not specify a field name
longer than 10 characters, or CitectSCADA truncates the name to 10 characters. (The
dBASE file format limits all field names to a maximum of 10 characters.)
In this example, the database is created with seven database fields. To access the above
dBASE device, use a Cicode function similar to the following:
hDev = DevOpen("Recipe");
DevFind(hDev, "Name", "Bread");
PLC_Water = DevGetField(hDev, "Water");
PLC_Sugar = DevGetField(hDev, "Sugar");
. . .
. . .
DevClose(hDev);
526
dBASE devices
If the database does not exist, it is created with the specified format. If you do not specify a
format, and if the file name specifies an existing dBASE file, CitectSCADA uses the existing
fields in the database.
SQL devices
You must create the SQL database by an external application before it can be used.
If you edit a dBASE or SQL device record (in an existing project), the associated physical
device is not edited. For example, if the device is a dBASE type device and you add an extra
field in the device, the extra field is not added to existing database files (when you run CitectSCADA).
If you want to make changes to the file structure of an existing database and retain existing
data, you must manually edit the data using dBASE, Excel or some other database tool.
If you want to make changes to the file structure of an existing database and dont want
keep the existing data:
Close the device.
Manually delete the device file.
Make your modifications.
Open the device.
When the device is opened no device file is available and a new data file is created with
the required changes.
See Also
Formatting Data in the Device
Using a database device
527
DevSetField(hDevice,
DevSetField(hDevice,
DevSetField(hDevice,
DevSetField(hDevice,
DevSetField(hDevice,
END
"SUGAR", IntToStr(Sugar));
"FLOUR", IntToStr(Flour));
"SALT", IntToStr(Salt));
"YEAST", IntToStr(Yeast));
"MILK", IntToStr(Milk));
DevClose()
DevGetField()
DevFind()
DevWrite()
DevNext()
DevSeek()
DevAppend()
DevWrite()
DevZap()
DevControl()
DevSetField()
To write CitectSCADA data to an SQL database, use the DevWrite() function, but you must
add a new record and write to all fields in the new record. No data is written to the database
if you do not write to all fields.
For example:
FUNCTION
WriteRecipeData(INT hDevice, STRING sName, INT Water, INT Sugar, INT Flour, INT Salt,
INT Yeast, INT Milk)
DevWrite(hDevice, sName);
DevWrite(hDevice, Water);
DevWrite(hDevice, Sugar);
DevWrite(hDevice, Flour);
DevWrite(hDevice, Salt);
DevWrite(hDevice, Yeast);
DevWrite(hDevice, Milk);
END
The following functions return error 267 (File mode is invalid) when the device type is SQL:
DevFlush()
DevPrev()
DevDelete()
The follow function returns error 263 (Cannot read file) when the device type is SQL:
DevRead()
The following functions return error -1 when the device type is SQL:
DevSize()
DevRecNo()
528
FUNCTION
GetRecipe(STRING sName)
INT hDev;
hDev = DevOpen("Recipe");
IF hDev >= 0 THEN
IF DevFind(hDev, sName, "NAME") = 0 THEN
PLC_Water = DevGetField(hDev, "WATER");
PLC_Sugar = DevGetField(hDev, "SUGAR");
PLC_Flour = DevGetField(hDev, "FLOUR");
PLC_Salt = DevGetField(hDev, "SALT");
PLC_Yeast = DevGetField(hDev, "YEAST");
PLC_Milk = DevGetField(hDev, "MILK");
ELSE
DspError("Cannot Find Recipe " + sName);
END
DevClose(hDev);
ELSE
DspError("Cannot open recipe database");
END
END
To delete all records from a dBASE database, use the DevZap() function:
FUNCTION DeleteRecords(INT hDev)
DevZap(hDev);
END
To delete records from an SQL database, use the Cicode SQL functions.
Closing a database device
When finished with a device, close it to free Cicode system resources by using the DevClose() function:
DevClose(hRecipe);
See Also
Using Device History Files
20
CitectSCADA uses twenty files for the data
6:00:00
72:00:00
Monday
530
Comment
Period
15th
25th June
Comment
Use a new file every month beginning on the 15th of each
month
Use a new file every year beginning on the 25th of June
Note: Marked improvement in system performance is observed when a period of one week
or more is specified.
You can also specify the time of day to synchronize the beginning of the history file, for example:
Time
6:00:00
Comment
Synchronize the file at 6:00 am
12:00:00
18:30:00
The first file does not actually begin at this time: the first file begins when you start your
runtime system. The time and period together determine when new history files are created, for example:
Time
Period
6:00:00
Monday
In the above example, CitectSCADA creates a new file each Monday at 6:00am. If you start
your runtime system at 7:30am on Sunday, your first file only contains 22.5 hours of data.
If you leave your system running, subsequent files start each Monday at 6:00am, and contain one full week of data.
Archiving data
To archive your data for long-term storage, back up your history files before they are overwritten. Use the Windows File Manager from the Main program group to check file creation dates (of the history files) and to back up files. Refer to your Windows documentation
for a description of the File Manager.
See Also
Using Command Fields
Description
{UserName,n}
{FullName,n}
{Time,n}
{TimeLong,n}
{Date,n}
531
{DateLong,n}
{DateExt,n}
{Page,n}
{MsgLog,n}
You can use the following fields (in the command field) for Keyboard commands only:
{Arg1,n}
{Arg2,n}
...
{Arg8,n}
{Native_MsgLog,n}
KeyLog
{Date,9} {MsgLog,27} {Arg1,3} by
{FullName,11}
Then a keyboard command (object, page, or system) could be created with the following
configuration:
Log Device
KeyLog
Key Sequence
### ENTER
Log Message
Resulting in an output of the following kind: "01/01/99 Density setpoint changed to 123 by
Timothy Lee".
local port, or a captured network printer. When you log to this device, the data is printed
immediately on the printer with no extra form feeds.
For correct logging operation, reserve one printer to be your logging printer. This printer
should be a local printer, not on the network server. You can then send any other non-logging printouts, (for example, reports) to a shared network or local printer.
See Also
Using Devices
533
534
For information about DDE conversations, see DDE conversations and client syntax.
To establish a DDE conversation between applications on the same computer, see Setting up DDE conversations.
To establish DDE conversations between applications running on different computers
over the same network, see Network DDE.
To establish DDE Conversations with the CitectSCADA tag database directly, see Connecting to the CitectSCADA tag database using DDE.
Note: When reading or writing to CitectSCADA tags using DDE, you might unknowingly
add to your CitectSCADA license point count. Once the dynamic point count is greater
than the license point count, the software protection mechanism will terminate CitectSCADA runtime. Therefore, when accessing tags via DDE, its important to remain aware of
535
how many points you have used. For details, see license point count in the Installation and
Configuration Guide.
where:
<DDE server applicationname> identifies the DDE server application.
| (pipe character) separates the DDE server application name from the DDE Topic
Name with no spaces between them.
<DDE Topic name>identifies the context of the data. For DDE Servers that operate on
file-based documents, DDE topic names are typically file names. For other DDE Servers,
they are other DDE application-specific strings.
! (exclamation character) separates the DDE Topic Name from the DDE Data item name
with no spaces.
<DDE Data item name>is a string that identifies the data item that a DDE server can
pass to a DDE Client during a DDE transaction. In some instances, the DDE Data item
name is optional. Refer to the DDE application documentation for particulars.
Note: In the DDE Client syntax structure example above, every placeholder shown inside
arrow brackets ( <placeholder> ) should be replaced with the actual name of the item that
it describes. The arrow brackets and the placeholder words they contain should not be included in the statement, and are shown here only for your information.
As the DDE protocol was designed in an era before long file names, DDE only supports the
use of short (8 character) file names. To overcome this limitation, enclose the three parts of
the DDE syntax within single quotes respectively. For example:
Citect|Variable!Process Variable 1
This instructs DDE to treat the characters within the quotes as strings, thus permitting them
to contain long file names, the space character (), the pipe character (|), the exclamation or
bang character (!), or any other non alphanumeric character.
536
See Also
Setting up DDE conversations
as the DDE Topic name to access a value posted using the Cicode DDEPost() function, the
DDE Data item name is the posted name.
The DDE Data item name for Microsoft Excel is the cell range in Row number Column
number format (for example R1C1). The DDE Data item name for Microsoft Word is a
bookmark name. The DDE Data item name for Microsoft Access is dependant upon which
topic name was used. Refer to the Microsoft Access Help for details.
Note: These CitectSCADA DDE help topics and examples were originally written for Windows 3.xx and subsequently updated for Office 95 on Windows 95. Microsoft has since introduced security measures with Office 2000 and later versions which, by default, block
Office applications from being DDE Clients. For security details, see Using DDE with Microsoft Office applications.
CitectSCADA can perform as both a DDE server and as a DDE client as required. To set up
CitectSCADA to use DDE, see Exchanging CitectSCADA data via DDE.
CitectSCADA comes with an Excel workbook file which contains macros to help you insert
correct DDE Client syntax links from your CitectSCADA runtime project tag database directly into an Excel worksheet.
538
Provide access to selected variable values by posting select CitectSCADA data using
DDE
CitectSCADA behaves as a DDE client when requesting other applications to provide access to their data. When acting as a DDE Client, CitectSCADA runtime can:
Read data directly from another application
Write data directly to another application
Note: You can also execute commands in another application from CitectSCADA with the
DDEExec() function. Similarly, you can run Cicode functions from another application by
passing the functions through that applications DDE Execute command.
See Also
Connecting to the CitectSCADA tag database using DDE
If the CitectSCADA variable tag name contains spaces or non-alphanumeric characters, the
DDE data item section of the DDE Client call syntax must be enclosed within single quotes.
For example:
=Citect|Variable!Process Variable 1
CitectSCADA runtime and the DDE Client application (for example Excel) must both be
running on the same computer. For information about DDE conversations, see DDE conversations and client syntax.
To establish a DDE conversation between applications on the same computer, see Setting
up DDE conversations.
To establish DDE conversations between applications running on different computers over
the same network, see Network DDE.
This conversation is one-way, which allows an external DDE Client application (like Excel,
Word, etc.) to read the value from CitectSCADA using DDE. The Client application cannot
change this value in CitectSCADA.
You can use this function to present data under a different name than its source. For instance, the following example presents the value of variable tag PV1 as "Process1".
The following Cicode example posts the value of variable PV1 using DDE:
DDEPost("Process1", PV1)
Once posted, this value can be accessed, for example, from a cell in Excel containing the following formula:
=Citect|Data!Process1
540
For example, writing data from CitectSCADA to a Microsoft Office Application (using CitectSCADA as the DDE Client and the Office application as the DDE server), could be done
using the following Cicode DDEWrite() function examples:
! Write PV1 to Excel
! Assumes the existence of Sheet1
DDEWrite("Excel", "Sheet1", "R1C1", PV1);
! Write PV1 to Word
! Assumes the existence of TestDDE.doc already loaded in Word
! containing the bookmark named TagPV1
DDEWrite("Word", "TestDDE", "TagPV1", PV1);
! MS Access does not support direct DDE writes.
This DDE function is one-way, so to update the tag value in the remote DDE server application, this function will need to be called every time the value of this CitectSCADA variable changes.
Writing directly to a DDE server assumes a prior knowledge of the DDE server. In the
above example, the spreadsheet or document must exist and Excel or Word (as appropriate) must be running for the DDE communication to be successful.
Notes:
Instead of using the once only DDEWrite(), you could use the multiple use DDE handle
function DDEhPoke().
Verify that remote requests are enabled in the other application. For example, in Excel,
you must verify the Ignore other applications check box is cleared (the default setting).
In Excel 2003, use Tools | Options | General to adjust this setting.
The High security setting (if selected) on Microsoft Office 2000 and later versions does
not appear to affect the use of remote DDE Client requests with those Office applications. See Using DDE with Microsoft Office applications.
See Also
Reading values from a DDE application
The data from Row 1, Column 1 on Sheet 1 of Book 1 in Excel is read and stored in the CitectSCADA variable "PV1". This DDE function is one-way, and will need to be called whenever the value needs to be updated in CitectSCADA.
Reading from a DDE server assumes a prior knowledge of the DDE server. In the above example, Excel must be running and the appropriately named spreadsheet must exist. The CitectSCADA variable PV1 must also have been previously declared.
Note: Instead of using the once only DDERead(), you could use the multiple use DDE handle
function DDEhRequest().
541
Verify that remote requests are enabled in the other application. For example, in Excel, you
must confirm that the Ignore other applications check box is cleared (the default setting).
In Excel 2003, use Tools | Options | General to adjust this setting.
The High security setting (if selected) on Microsoft Office 2000 and later versions does not
appear to affect the use of remote DDE Client requests with those Office applications. See
Using DDE with Microsoft Office applications.
542
Network DDE
Network DDE is a version of the DDE protocol for use across a network. For information
about DDE, see Using DDE (Dynamic Data Exchange). For details about setting up CitectSCADA to use DDE, see Exchanging CitectSCADA data via DDE.
Just like the establishment of a DDE conversation between applications running on the
same computer, a network DDE conversation uses the same DDE protocol to share data between applications running on separate computers connected to a common network.
Network DDE is a Windows Service used to initiate and maintain the network connections,
security, and shared file space needed for using DDE over a network, and must be running
on both computers at the same time. For startup details, see Starting network DDE services.
A network DDE trusted share must be manually created for the Network DDE server application on the Network DDE server application machine. This instructs the Network
DDE Service (on the DDE server application machine), as to which application and topic to
connect with. It is this share name which the Network DDE Client application can subsequently communicate with. For details, see Setting up network DDE shares.
The Network DDE Client starts the Network DDE conversation by connecting to the Network DDE Share on the Network DDE server computer. For details, see Using network
DDE.
To test that Network DDE is operational between two machines on the same network
Microsoft Windows ships with a network DDE application called Chat. It is installed in the
folder.
On the Windows Start menu, click Start | Run, type in "winchat" (without the quotes)
and press the Enter key. Do so on both machines.
On one machine, select the Chat menu Conversation | Dial or click the dial button. The
Select Computer dialog will display.
Select the other computer from the list, and click OK. Chat will attempt to establish a
network DDE conversation between the computers.
system32
Note: If Chat is not already running on the other computer, it times-out and states that
the other computer didnt answer. If however, the other computer is already running
Chat, it will keep dialling until answered.
On the other machine, (while it is being dialed), select the Chat menu Conversation |
Answer or click the answer button. Type in a message and it will display in the Chat
window on the other machine. The conversation will continue until either machine
hangs up.
Once a Chat conversation is established, it proves that both machines are properly set-up
and capable of handling network DDE conversations. You can view the share properties
for Chat$ by using the DDEShares.exe application as described in Setting up network DDE
shares.
You dont have to run Chat to use Network DDE with CitectSCADA. This Network DDE
test only uses Chat as an example to confirm Network DDE functionality between two machines. Once you have established that Network DDE is functional, close the Chat windows, create the Network DDE Trusted Share for your Network DDE server application,
and connect to the share using Network DDE. See Connecting to a network DDE shared
application.
The DDE Shares dialog is used to create, manage, and delete global DDE shares on your
computer, and to view the DDE shares of any computer on the network. You can use this
dialog to confirm the names of shares available on any machine on the same network. From
the DDE Shares menu, select Shares | Select Computer and choose the computer name
youre interested in from the list.
DDE Shares
There are three types of DDE shares: old style, new style, and static. CitectSCADA only
supports the static type. The names of static shares follow the convention
<ShareName>$
so to set up a CitectSCADA server computer as a Network DDE share, use the name "Citect$" as the sharename on that computer. To expose the CitectSCADA runtime variable tag
database for suitable DDE linking, use the word "Variable" as the DDE Share Topic name.
Note: The trailing dollar sign ($) is required as part of the DDE share name syntax.
To create a DDE share:
In the DDE Shares dialog, click Add a Share. The DDE Shares Properties dialog appears. Verify that all the fields are blank, or unchecked, except for the Grant access to
all items radio button which must be checked.
Click Permissions. The DDE Share Name Permissions dialog appears.
Read and Link is the default permission setting. If you want to write data to the DDE
Share application, change the permission to Full Control.
Click OK.
Click OK to save the Share, and return to the DDE Shares dialog.
See Also
Using DDE Trusted Shares
The DDE Trusted Shares dialog lists the DDE shares that are trusted in the current users
context. You can view and modify trusted share properties and remove DDE shares
from the list of trusted shares.
Once setup is completed, close the DDE Share utility dialog box.
where "<ComputerName>" is the name of the computer running the DDE server application, and "NDDE$" notifies Windows on the remote computer that the calling DDE Client
wishes to establish a Network DDE channel. You cannot omit the NDDE$ string, or it wont
work.
The DDE Topic name is replaced with the following string also enclosed in single quotes:
<ShareName>
where "<ShareName>" is the name of the DDE Trusted Share previously set-up on the DDE
server computer. The DDE Share on the DDE server machine contains the details of which
546
application and topic to create the Network DDE link with. Most often, DDE server share
names end with a $ character.
Note: You must use a separate DDE share name on the remote computer for each combination of DDE application name and DDE topic name you want to share. You can not declare the topic as a wild card (*).
For example, to create a Network DDE link with the following criteria:
CitectSCADA variable tag name: "PV1"
CitectSCADA server computer name: "PlantSvr"
Remote DDE Share name: "Citect$"
you would construct a Network DDE Client call containing:
\\PlantSvr\NDDE$|Citect$!PV1
In Excel, the following formula could be placed directly into a worksheet cell:
=\\PlantSvr\NDDE$|Citect$!PV1
If prompted for a username and password, use one that has appropriate permissions on the
DDE server computer.
Note: You cannot omit the DDE syntax pipe character (|) or exclamation character (!), nor
can you enclose those characters within quotes ().
CitectSCADA comes with an Excel workbook file which contains macros to help you insert
correct DDE Client syntax links from your CitectSCADA runtime project tag database directly into an Excel worksheet.
547
When started, the Citect Tags macros expect that CitectSCADA runtime is operating on the
same machine. If not, Excel displays a dialog requesting permission to start citect.exe
(which may not succeed as citect.exe does not exist unless youre running Citect version
3 or earlier). If you further select Yes, it will search the system path for the non-existent
program and subsequently report that the application could not be found. If you select No,
and if previous values were saved with the worksheet, those are the values that will display
initially, and be replaced with #REF! when updated. In any case, no valid values will be
displayed in the example worksheets until CitectSCADA runtime is started and Excel is
subsequently refreshed or restarted.
The Citect Tags macros expect the citect.ini to exist in the config folder of the
CitectSCADAv7.10 User and Data folder selected during installation. If the file is not found
in the location, it will not search elsewhere and will instead display the ERROR Reading
Citect.INI dialog requesting the proper location. Enter the full path including the file
name, and clear Restore Defaults on Start Up to prevent the same thing happening next
time the macro is started. If you are using an alternative INI file, enter it instead.
Once running, the right-click menu in Excel contains four additional menu items, permitting you to perform two new workbook related commands, and two new CitectSCADArelated commands to the cell beneath the mouse pointer location when you perform the
right-click event. The new menu items provided with ddeformu.xls are:
Citect Settings - Workbook command
Citect Get Tags - Workbook command
Citect Select Tags - CitectSCADA command
Citect Select Trends - CitectSCADA command
Note: This feature is only compatible with Excel version 5.00 (or later).
dBASE databases
The dBASE file format has become an industry standard for data storage, and CitectSCADA supports the standard dBASE format. You can use any database editor (that supports
dBASE III files) to create a database, and to read and write database records.
To connect to a database, you must define a CitectSCADA Device. Devices specify the format and location of the database, for example:
Name
Format
Header
548
Recipe
{Name,16}{Water,8}{Sugar,8}{Flour,8}
{Salt,8}{Yeast,8}{Milk,8}
Name
File Name
[DATA]:RECIPE.DBF
Type
DBASE_DEV
Comment
SQL databases
SQL (Structured Query Language) also has become an industry standard. SQL is a command language that allows you to define, manipulate, and control data in SQL databases and in other relational databases. Most database servers support SQL. SQL gives you direct
access to database servers on other platforms, such as computers, mini-computers, and
mainframe computers.
You can use the CitectSCADA Device functions to set up the format and locations of each
of your SQL databases. Alternatively, use the SQL functions for direct control over SQL
transactions.
You must define a CitectSCADA Device to specify the format and location of the database,
for example:
Name
Recipe
In the Format field, specify the field names in the SQL database, for example:
Format
{Name,16}{Water,8}{Sugar,8}{Flour,8}
{Salt,8}{Yeast,8}{Milk,8}
The Header is the database connection string for ODBC connection, for example:
Header
DSN = ORACLEDATABASE
RECIPE
Type
SQL_DEV
Comment
See Also
Using Structured Query Language
549
Use "Simple" model for a SQL database to limit transaction information logging to transaction log file.
Use the fixed size of transaction log to restrict the log file growing.
Back up the database regularly to keep the transaction log size under control. When SQL
Server finishes backing up a database or its transaction log, it automatically truncates
the inactive portion of the transaction log. If the transaction log file is full, your database
transactions will cease.
Keep working tables as small as possible. When CitectSCADA SQL adds or appends a
new row to data table, it uses SELECT * first to get column information. If there are hundred and thousand of records in the table, this action will certainly hinder the performance and may cause lock ups as these SQL Cicode functions are block functions.
Use SQL Server trigger to remove records from the working tables to the permanent tables. In this way, sizes of the working tables that are directly interfaced with Citect are
not growing unrestricted.
Do NOT run SQL Cicode functions on a critical CitectSCADA machine. As all SQL
Cicode functions are block functions and running in the main thread, #COM or trend
miss samples are likely to occur when SQL functions are executed on IO or trend. Similarly, an alarm may miss a scan or a report may miss a trigger if the functions are running on an alarm or report server.
Refer to the documentation that accompanied your SQL server for details about connecting
to an SQL database.
See Also
Executing SQL commands
The SQLExec() function executes any SQL command that your SQL server supports. For example, to create a database table, you would execute the SQL "CREATE TABLE " command:
SQLExec (hSQL, "CREATE TABLE recipe (Name CHAR(16), Water CHAR(8), Sugar
CHAR(8), Flour CHAR(8), Salt CHAR(8), Yeast CHAR(8), Milk CHAR(8))");
To add records into the database table, use the "INSERT INTO" command. The command
has the following syntax:
INSERT INTO <filename> [(<col_name>, . . .)] VALUES (<expr>, . . .)
This command adds the values for each field in the table, for example:
SQLExec(hSQL, "INSERT INTO recipe VALUES (Bread, 10, 5, 7, 1, 1, 2)");
Column names are optional; however, if you omit column (field) names, the values are inserted into the fields in the same order as the values.
To read data from an SQL database, use the SQL "SELECT" command. You can use the "SELECT" command to read an entire set of records, or a row, from the table. You can then use
the SQLGetField() function to read the data in each field, for example:
SQLExec(hSQL, "SELECT * FROM recipe WHERE NAME = Bread");
If SQLNext(hSQL) = 0 Then
PLC_Water = SQLGetField(hSQL, "WATER");
PLC_Sugar = SQLGetField(hSQL, "SUGAR");
PLC_Flour = SQLGetField(hSQL, "FLOUR");
PLC_Salt = SQLGetField(hSQL, "SALT");
PLC_Yeast = SQLGetField(hSQL, "YEAST");
PLC_Milk = SQLGetField(hSQL, "MILK");
END
To delete database records, use the SQL "DELETE" command. The command has the following syntax:
DELETE FROM <filename> [WHERE <conditions>]
551
See Also
Using a transaction
Using a transaction
You can use a database transaction for more sophisticated database operations. A database
transaction allows you to execute a series of SQL commands and then either commit the
changes to the database, or roll back (cancel) the changes, for example:
SQLBeginTran(hSQL); ! Begin the transaction
SQLExec(hSQL, "UPDATE recipe SET water = 12 WHERE NAME = Bread");
SQLExec(hSQL, "UPDATE recipe SET milk = 1 WHERE NAME = Bread");
IF . . . THEN
SQLCommit(hSQL); ! Commit the transaction
ELSE
SQLRollBack(hSQL);! Cancel the transaction
END
Check the ODBC-compatibility level of your database driver if you cannot use transactions.
See Also
Expressing dates and times in SQL
where:
<format> (the first character after the opening square bracket) must be one of the following:
d - date
t - time
dt - date and time.
Whether you are specifying a date, time, or date and time, you must provide the full 26
character string, for example:
[d1995-02-18 00:00:00.000000]
552
Refer to the documentation that accompanied your SQL server for further information
about SQL commands.
ODBC function SQLTransact, you cannot use the Cicode functions SQLBeginTran(), SQLand SQLRollback().
Any functions you might have created in early versions are backward-compatible. Q+E
drivers are now ODBC-compliant, so you need to upgrade your old Q+E database driver to a Q+E ODBC database driver.
Commit(),
See Also
About the ODBC driver
Setting up ODBC
To use ODBC, the Access ODBC Driver must be installed. This can be obtained from Microsoft and is included with Microsoft Office. The installation programme (for example, for
Microsoft Office) will copy the necessary drivers and the Jet Engine DLL into the appropriate Windows directories when the appropriate Data Access/ODBC options are selected.
With the Driver installed on the PC the ODBC Icon can be selected from the Control Panel
and a Data Service Name set up for the desired MDB. This is used in the DSN= part of the
connect string.
The Jet Engine DLL is quite large (1 MB) and the execution speed of the runtime (and your
application) can be impacted if the Windows Virtual Memory Manager (VMM) swaps it
out of memory. The next time an SQL is executed there will be short delay while the DLL
is loaded back into memory. To force the VMM to keep the DLL in memory, design a simple dummy table with only one record and one field and set up a Cicode task that frequent554
ly (say every 10-15 seconds) calls a SELECT query based only on the dummy table. This has
no significant effect on CPU load and keeps the DLL in memory.
See Also
Getting the correct syntax with ODBC
However, excessive impact on PC resources can be avoided by careful table, query and relationship design.
If there is a need to execute the queries on a Remote Computer, the code can set up on a
Reports Server or an Event Server. This is especially relevant if the code is to be triggered
by an event in a PLC. If the code is to be triggered by a User at a Display Station, and the
query is considered too CPU intensive, the Display Station can be used to set the PLC bit
that calls to code or call the Report using the Cicode Report() function. Another possibility
is to use the Cicode MsgRPC() function to call a Cicode function (with parameters, if necessary) on a remote computer. All of these alternatives require CitectSCADA to be running
on the remote computer.
See Also
Comparing DDE with ODBC
556
ODBC compatibility
This section describes the required and optional ODBC functions that your database driver
should support:
Essential functions
Optional functions
Essential functions
The CitectSCADA SQL devices and Cicode functions only work if the database driver supports the following ODBC functions:
Level 0
Level 1
SQLAllocConnect
SQLColumns
SQLAllocEnv
SQLDriverConnect
SQLAllocStmt
SQLGetData
SQLBindCol
SQLGetFunctions
SQLColAttributes
SQLGetInfo
SQLDescribeCol
SQLGetTypeInfo
SQLDosconnect
SQLParamData
SQLError
SQLPutData
SQLExecDirect
SQLSetConnectOption
SQLExecute
SQLSetStmtOption
SQLFetch
SQLFreeStmt
SQLGetCursorName
SQLNumResultCols
SQLPrepare
SQLRowCount
SQLSetParam
Optional functions
CitectSCADA SQL devices and Cicode functions also use the ODBC functions listed in the
table below. While these functions are not essential for operation, if they are absent in a
driver, the error code 307 (SQL database error) will be returned if the ODBC driver does
not support the required ODBC functions. To get the message associated with the error, call
the Cicode function SQLErrMsg.
Level 0
SQLTransact
557
Level 1
SQLSpecial Columns
SQLTables
Level 2
SQLData Sources
SQLExtended Fetch
Without this function, CitectSCADA cannot take advantage of the native databases ability to fetch records at
random.
SQLSetScroll Options
Without this function, CitectSCADA cannot take advantage of the native databases ability to fetch records at
random.
SQLMore Results
SQLNativeSql
SQLProcedure Columns
See Also
Using CitectSCADA as an ODBC server
read only
VALUE
read/write
CitectSCADA can only function as a database server at runtime. Using tags through ODBC
at runtime can still add to your CitectSCADA License point count. Once the dynamic point
count is greater than the license point count, the software protection mechanism will shutdown CitectSCADA runtime. Therefore, when accessing tags via the ODBC server, its important to keep aware of how many points you have used. For details see License point
count in the Installation and Configuration Guide.
Setting up the CitectSCADA ODBC server:
You must have TCP/IP installed on your computer first.
Choose Start | Settings | Control Panel.
Double-click the ODBC icon.
Click Add on the User DSN tab.
Note: If you select other tabs you will see that the CitectSCADA ODBC driver has been
automatically installed.
Select the Citect Driver from the list and click Finish.
558
Enter "Citect" in the Data Source field. If you do not want to use this name, make sure
the name you use is one word.
Enter the Computer Name in the Host field. The Computer Name is specified in the
Network section of the Control Panel.
Click OK.
Accessing the CitectSCADA ODBC server using MS Query (V2.00):
All ODBC capable applications use different ways to construct queries for accessing CitectSCADA tags. The example instructions for using MS Query, given here, show a simple
implementation. MS Excel and MS Access use the same method.
Verify that you have MS Query installed on your computer.
Set up the CitectSCADA ODBC server.
Run CitectSCADA.
Run MS Query.
From the File menu (in MS Query) select New Query.
Select the CitectSCADA Data Source Name (DSN) from the Available Data Sources list.
Click the Use button.
Select the Tags table. Click the Add button and then the Close button.
You can now run a query to extract the Tag data from CitectSCADA. The simplest way
to see this is by double-clicking Names and Tags.
Accessing the CitectSCADA ODBC server using MS Query (V8.00):
Unlike Version 2.00, User DSNs are not used by Version 8.00. Instead it uses File DSNs
which by default are stored in Program Files\Common Files\ODBC\Data Source folder. File
DSNs are not stored in the Windows registry, they are text files given the .DSN extension.
When you connect to an existing data source, only the available File DSNs that are stored
on that PC are displayed. MS Query V8.00 does not display User or System DSNs. The simplest solution is to create a File DSN that points to a User DSN.
To create a file DSN that points to a user DSN:
Use a text editor (Notepad for example) and create a file containing the following two
lines:
[ODBC]
DSN=<MyUsrDSN>
where <MyUserDSN> is the name of an existing user DSN that you have created via the
ODBC icon in the Control Panel.
Click Save As on the File menu and type a name that includes a .DSN file extension. For
example, "Citect_File.dsn" is a valid name. Include the quotation marks so that the
.DSN file name extension is added correctly. Save it to the default File DSN directory
listed above, then it will appear in the DSN list box.
Open the ODBC Manager from the Control Panel and verify that you can see your newly created File.DSN.
Open the ODBC Manager from the Control Panel and verify that you have created a
User DSN called <MyUsrDSN>. For example:
Select Citect Driver and click Finish.
Type "Citect" in the Data Source field (i.e., <MyUsrDSN>).
Enter Computer Name in the Host field.
When you run MS Query, you can now select your File DSN from the list.
See Also
Reading data from an access table with ODBC
559
See Also
Appending data with ODBC
To avoid having to deal with SQL statements, you can use the standard Cicode device functions to append records to an Access table. First configure an SQL device. If the table has
many fields that do not need to be written to, define only those fields that are required in
the device definition (this keeps the device definition simple and reduces the number of
DevWrite instructions). DevOpen, DevWrite and DevClose can then be used to add records
to the table.
CitectSCADA accepts successive DevWrites until they equal the number of fields in the device definition at which time it constructs an SQL INSERT statement. The DevWrites must
contain data for fields in the same order as the device definition. You should do a DevOpen
560
followed immediately by successive DevWrites for as many records as are required then a
DevClose to avoid data being out of context.
See Also
Editing data with ODBC
Note: The ODBC/SQL environment does not let you edit the "Current Record" (there is no
current record). Consequently you cannot use DevAppend or DevSetField to add or modify
records.
See Also
Deleting rows from an Access table
See Also
Calling action queries with ODBC
561
To call an Access ACTION via ODBC, use the Call statement in SQLExec:
"{Call qdeDeleteRecipe}"
Parameter queries
Many ODBC Servers will accept PARAMETERS in a Call statement so that PARAMETERS
can be defined in a Query Definition on the server and their values supplied by ODBC Clients at run time. Unfortunately, the Access Jet Engine uses Parameter Markers which are
not supported in the standard Call statement. The method outlined here can be used as a
work-around.
For each query that requires PARAMETERS, design a arguments table with the same name
as the query but with a different prefix. For example, if the query is qryParamTest, the TABLE could be called argParamTest.
The TABLE should have, say, five fields called Param1, Param2, Param3, Param4, Param5.
This table should be added to the Access Query Definition for qryParamTest. Then the field
names can be used as PARAMETERS anywhere in the Query Definition.
A simple Cicode function can be written to which the query name (without the prefix) and
PARAMETERS are passed. The function inserts "arg" in front of the query name and executes a DELETE from the TABLE (to verify that it is empty) and then performs an INSERT
to leave the table containing ONE RECORD with the desired PARAMETERS in the appropriate fields. The function then prefixes the query Name with "qry" and calls the query.
562
Function SQLCall(INT hSQL, STRING sQueryName, STRING sArg1 = " ", STRING sArg2 = " ",
STRING sArg3 = " ", STRING sArg4 = " ", STRING sArg5 = " ")
STRING sTable, sQuery;
sTable = "arg" + sQueryName;
sQuery = "qry" + sQueryName;
SQLExec(hSQL, "DELETE FROM " + sTable);
SQLExec(hSQL, "INSERT INTO " + sTable + " (Param1, Param2, Param3, Param4, Param5)
VALUES (" + sArg1 + ", " + sArg2 + ", " + sArg3 + ", " + sArg4 + ", " +
sArg5 + ")");
SQLExec(hSQL, "{Call " + sQuery + "}");
END
The default parameters for SQLCall must be SPACES if "Allow Zero Length" is "No" in the
Access table Definitions for fields Param1, Param2 etc.
The function can be used to call many different PARAMETER queries.
An advantage of this work-around is that, even after CitectSCADA has been shut down,
the query can be called from Access and, because the PARAMETERS are still stored in the
arguments table, the resulting Recordset can be viewed in Access.
Another method is to design queries that perform any required joins, sorting and field selection the call them using a WHERE clause to select the desired rows (records).
See Also
Access and Cicode date/time conversions
Convert to strings - The Data and/or Time are converted to and from text strings using
the standard conversion functions available in each environment.
Use the #Date/Time# SQL syntax - The Jet Engine will convert and Dates and Time
strings enclosed in # markers. This date could be useful in a WHERE clause:
The American Date format is used in this case, the Jet Engine DLL ignores the local Date
and Time settings as set in Windows Control Panel.
563
Functionality
The add-in is automatically available to Excel when the add-in is installed by the CitectSCADA installation. When you open Microsoft Excel you will see a new toolbar called
Project DBF Add-in, containing the following fields and buttons:
Master.dbf location
SaveDBF table
SCADA project
SCADA table
Save DBF
Save As
Open DBF
Save Only/Save and re-index
To access the tables using the Add-In:
If the location of the Master.dbf file is not displayed in the master.dbf location field, it
will display Enter path to master.dbf. Click on this field to display a dialog box where
you can enter the location. This populates the SCADA Project field.
Click the drop down arrow in the SCADA Project Field to select the Project in which the
.dbf file (table) resides that you want to open. This populates the SCADA Table field.
Note: Any tables listed in the ExcludedProjectTables.xml are excluded from the list of tables.
Click the drop down arrow in the SCADA Table field to select the table. The table will
open in Microsoft Excel as a new worksheet named with the table name. If the table is a
read only table a warning message is displayed advising you that it is read only.
Alternatively, if the dbf file that you wish to open is not the Master.dbf file, or is not located
in the root dbf file location, click the Open DBF button and browse to the location of the dbf
file that you want to open.
To edit the contents of the table in Microsoft Excel
A table in .dbf format is displayed in Microsoft Excel in the following equivalent format:
4. A field is displayed as a column.
5. A record is displayed as a row.
6. A field within a record (data) is displayed as a cell.
You may edit any of the data in the table, shown as cells within a row. You may delete a
record shown as a row, and add a record. However you cannot change the structure of the
table by modifying the name of any Field, shown as a column, add a column or delete a
565
column. If you do change the structure an alert message will be displayed when you attempt to save the table.
If you edit a cell in the table you should take care not to exceed the maximum field length
set for that field in the table.
To save a table in Microsoft Excel
1. Select to Save and re-index the table, or Save Only, from the drop down control on the
toolbar.
If you do not re-index an indexed table the table will be saved more quickly, but you will
need to manually re-index the table when you have completed your edits. To re-index manually, select Pack from the File menu of the CitectSCADA Project Editor.
2. Click the SaveDBF table button.
When you save the table the Add-In performs the following checks prior to saving the table:
1. Verifies that the file type is .dbf.
2. Checks for any changes in table structure that may have been made. For restrictions on
changes to the table structure, refer to "To edit the contents of the table in Microsoft Excel".
3. Updates the existing table according to the data in the Microsoft Excel worksheet.
4. Re-indexes the updated table if it is was an indexed table (if Save and re-index was selected).
If the edited table in the Microsoft Excel worksheets fails any of the checks, a warning message is displayed and the existing table on disk will not be affected until you correct the
condition that caused any check to fail.
You can also save a dbf file with a different name by clicking the Save As button on the toolbar and entering a name for the file. This method of saving also includes the option of saving the dbf file with or without re-indexing the table.
Note: If you attempt to save a table in .dbf format in Microsoft Excel using the Microsoft Excel File > Save command an alert message is displayed advising you that the file cannot be saved in the current format and that
you should use the SaveDBF button on the Microsoft Excel toolbar.
566
Understanding Genies
Genies work by substituting common information into each related object (in a group of objects). For example, a typical configuration that displays a pump and its speed, uses two objects: (1) a text object that shows the speed, and (2) a symbol object that indicates the state
of the pump (by displaying different symbols):
567
To implement the above arrangement without the use of Genies, you would have to configure the Text and Symbol separately, for each instance on the page. This demonstrates
that some common combinations of objects have mostly the same configuration in each instance. The concept of a Genie allows this partial configuration to be done, with provision
for insertion of the specific information where required.
The power of a Genie is that objects are defined only once. Every time you place the Genie
onto a page, you will only have to specify the substitution information.
See Also
Creating Genies
Opening a Genie
Saving a Genie
Defining Substitutions for Genies
Using Genies
Creating Genies
Creating a new Genie is similar to creating a page, with graphical objects, but with no background. Typically you would create a new Genie using the Graphics Builder, add the objects, defining the Genie substitutions, and save the Genie in a Genie library.
To create a new Genie:
From the File menu select New.
Click the Genie button.
Now you can create your Genie objects (defining your substitution strings).
See Defining Substitutions for Genies
See Also
Opening a Genie
Saving a Genie
Opening a Genie
You can open an existing genie to work with it.
568
Saving a Genie
To save the current Genie:
Click the Save tool, or choose File | Save.
Select the Project and Library in which to store the Genie.
Enter a name for the Genie in Genie.
Click OK. (To create a new library for the Genie, click New.)
See Also
Defining Substitutions for Genies
569
Note: You are not restricted to using only variable tags as substitution strings. Any expression can be substituted, such as constants or labels. Only fields that accept text can have Genie tag substitutions. You can also define substitutions to variables that arent in the current
project by using the IFDEF function.
See Also
Using Genies
Using Genie Substitutions in Templates
Using Genies
Once you have created (defined and saved) your Genie, you can use it on any graphics
page. To use a Genie, paste it onto a page using the Paste Genie tool. Once the Genie is pasted, configure it by double-clicking the image.
For example, each time you use the above Genie, you only have to enter two values in a
single dialog - one for the speed variable tag (%SpeedTag%) and one for the status variable
tag (%StatusTag%) - instead of properties for each object in the group.
570
Double-clicking a pasted Genie displays the Genie Properties. To display the properties of
the individual objects in the Genie, hold the Control (CTRL) key down and double-click the
specific object. If, however, a link to the Genie has been retained, most of these properties
will be read-only.
The above example is a simple use of a Genie - it only contains two objects and two substitution strings. You can define Genies that use many objects, with substitution strings for
any text property (or properties) of an object.
Note: If you use structured tags, you can use substitution strings within a tag name to construct more sophisticated Genies. See Using Structured Tag Names with Genies and Super
Genies.
To paste a Genie onto a graphics page:
Click the Paste Genie tool (in the toolbox), or choose Edit | Paste Genie.
Select the library (from the Library list) that contains the Genie.
Select a Genie thumbnail from the Genie list in the Paste Genie dialog.
Double-click the thumbnail or click OK.
See Also
Paste Genie dialog box
Genies properties
The Genie dialog box displays the substitution strings that you have entered for the Genie.
The substitution tags you see on the form are defined in the Genie. The values you enter
next to the tags will be substituted into the Genie (and possibly Super Genie, if one is attached).
Note: To display the properties of the individual objects in a Genie (instead of the Genie
Properties), hold the Control (CTRL) key down and double-click the object. If, however, a
link to the Genie has been retained, most of these properties will be read-only.
See Also
Understanding Genies
572
Save it in a Super Genie library using an exclamation mark (!) prefix. This keeps the pages
hidden in the configuration environment (theyre visible only if attached to a Genie controller).
Select File | New Genie, and draw the button that the user will click at runtime to display
the popup controller. This button is called a Genie controller. It will call a Super Genie
Cicode function, which performs the substitutions and displays the popup.
Because the Super Genie function call is made from the Genie Controller, you only have to
configure it once.
Save your Genie to a Genie Library. Like Genie libraries, Super Genies libraries are global
and can be used between CitectSCADA projects.
With the Genie open, select Edit | Attach Super Genie, and select the Super Genie you just
created. From now on, pasting this Genie will call the new Super Genie.
Attaching each of your Super Genies to a Genie helps you store your Super Genies in an
orderly way in the Genie libraries. This makes them easy to maintain and easy to paste into
your projects. A Super Genie can be attached to more than one Genie controller.
573
Paste the Genie wherever you want the user to be able to use the popup controller. Select
Edit | Paste Genie, browse for the Genie you just created, and select it. A new page in your
project will automatically be created for the Super Genie.
To implement the above situation without Genies and Super Genies, you would have to
manually configure a separate page for each pump in your application, and a separate button to call each page. Using a Super Genie, you only have to configure one page manually.
The rest are created automatically.
Note: To avoid compilation errors all variable tags used in a Super Genie must be defined
in the variable tags database. Alarm tags can also be used (allowing you use alarm tag
properties).
Note: Super Genies require more system overhead than other programming approaches
such as arrays. While arrays perform well even with hundreds of variables, Super Genies
show performance degradation with as few as 50 depending on the types of variables used.
Therefore, if your application requires good performance, you should limit the number of
Super Genie variables, and conduct thorough testing of the resulting performance.
Using tags through Super Genies at runtime increases your dynamic license point count.
Super Genies called after you have reached your point limit will return #COM. For more
information see license point count in the Installation and Configuration Guide.
You dont have to implement Super Genies using a Genie Controller. See Using Super Genies without Genies.
See Also
Defining Substitutions for Super Genies
Using Super Genies without Genies
Using Constants and Arrays with Super Genies
574
where:
Data Type is optional except in the case of the STRING variable type, which must be explicitly specified. When Data_Type is left blank, CitectSCADA will correctly typecast all
variable types other than STRING at runtime.
Substitution String Number determines which variable tag (1 to 256) will be substituted
when the Super Genie is displayed (using the Super Genie functions). If you use more
than one substitution string in your Super Genie, your numbers should be sequential.
This will make the Super Genie functions easier to use.
For example, to define substitutions for the pop-up controller, use a substitution string for
the variable tag, as follows:
Note: This Super Genie should be saved as a page (called SGenie1) as opposed to a Super
Genie, so that the Super Genie can be used without a Genie controller.
575
If you do not specify a data type, it will default to TYPELESS. Typeless substitution allows
you to pass tags of BYTE, BCD, DIGITAL, INT, UINT, LONG, LONGBCD, or REAL types,
but not STRING. When you make a typeless substitution, CitectSCADA will automatically
try to convert the substituted data to the correct type at runtime.
For example, the above diagram uses ?Digital 1? as the substitution string. At runtime you
would get a hardware alert message if you passed a variable declared as INT. If instead,
you used ? 1?, at runtime you could pass a variable of any type but STRING.
Note: You might want to use typeless substitutions because they offer more flexibility, but
you should be aware that errors can be harder to find.
See Also
Using Super Genies without Genies
576
To pass a variable tag, you dont need the single quotes. For example, to pass variable tag
TAG1 into a Super Genie, you would call the Ass function as follows;
Ass(hWin, nArg, "TAG1");
See Also
Creating a Genie controller
Arrays
Super Genies can accept array elements or entire arrays as substitution. Passing an element
of an array is straightforward, and is done by reference to the element, as shown here:
AssPopUp("MyPopUp", "DigArray[42]");
To pass an entire array to a Super Genie, only the array name is used. For example:
AssPopUp("MyPopUp", "DigArray");
To pass an entire array to a Super Genie, you should be configure it to accept the array instead of a single value. Use the following syntax for the Super Genie substitution string:
?<Data Type>[<array size>] <Substitution String Number>? [<element>]
Only arrays of data type DIGITAL, INT, REAL, and LONG are supported.
Note: The <array size> is optional and if not defined then will default to 2048 digital, 128
integer or 64 real elements. You would use it to check the range of the array - so that if an
array smaller than expected is passed into the Super Genie, out of range values will default
to 0 (or a null string) rather than generate a Cicode error.
577
For example, to display element [3] in the first substitution tag (which is a digital array), the
following syntax could be used:
Expression
?DIGITAL[] 1? [3]
Alternatively, the following syntax could be used to test that an array of the expected size
is being passed into the Super Genie:
Expression
?DIGITAL[4] 1? [3]
See Also
Creating a Genie controller
579
%PV_Tag%
Level expression
%SP_Tag%
Level expression
%OP_Tag%
When you configure the Genie (with the Genie dialog), you have to enter three separate
tags: DEV1_PV, DEV1_SP and DEV1_OP. However, if you use structured tags, you can
configure the rectangles as follows:
Level expression
%Tag%_PV
Level expression
%Tag%_SP
Level expression
%Tag%_OP
In this case, you only have to enter one tag (DEV1) to generate six objects. The Genie automatically concatenates DEV1 with either _PV, _SP, or _OP, depending on where the tag is
substituted. As well as a reduction in configuration time, this Genie is easier to maintain.
Note: The above example illustrates the power of Genies. The more complex and the greater number of objects in a Genie, the greater the advantage of using structured tags. You can
also make complex Genies by using multiple variables for a Genie property. For example,
%Area%_TIC_%Occ%_PV or any combination of prefix, suffix and number of Genie variables.
See Also
Using structured tags with Super Genies
unique Super Genie variable for each real tag, and concatenate the tag with the Ass Cicode
function. For example, if you have defined a loop controller with three bar graphs (created
using the fill property in a rectangle) to display the tags DEV1_PV, DEV1_SP and
DEV1_OP, you can configure a Super Genie as follows:
Each rectangle has a separate vGenie tag:
Level expression
?INT 1?
Level expression
?INT 2?
Level expression
?INT 3?
If you do not use structured tags, you can call the Ass function for the above Super Genie
as follows:
AssPage("PageName", "DEV1_PV", "DEV1_SP", "DEV1_OP");
To concatenate information for the Super Genie, you could also write your own Cicode
function, as follows:
FUNCTION
AssMine(STRING sPage, STRING sTag)
AssPage(sPage, sTag + "_PV", sTag + "_SP", sTag + "_OP");
END
With this function, you can call your AssMine() function (for example, from a command
button), and pass a single tag (DEV1), as follows:
AssMine("PageName", "DEV1");
Writing your own Cicode function to call a Super Genie provides extra flexibility; however,
you can also use a Super Genie (for example, from a button command) to call the Ass function, as follows:
Execute command
When you use the above Super Genie, you only enter the page name and tag once.
You must pass the tag name (by enclosing it in quotation marks) to the Super Genie functions. You cannot pass the tag values. For example, if you pass %tag%_SP (no quotes), the
value of the variable and not the tag name is passed to the Super Genie, and the association
will not succeed, and a runtime error may result.
See Also
Using structured tags with Genies
581
The expression entered in the Hidden Whenfield of an objects property is used to determine if the object will display. The expression evaluates to either TRUE or FALSE and the
object is hidden when the expression is TRUE.
You define the variable tag and conditions under which the object is hidden by entering an
IFDEF statement into the Hidden When field when you configure the object. The IFDEF
statement is evaluated by the compiler and the value of the resulting expression or variable
tag will determine whether or not the object is hidden.
This can significantly reduce the number of required genies, as the configuration engineer
does not need to generate several smaller genies to cater to operations driven by a slightly
different range of tags.
See IFDEF macro for more information on using the IFDEF macro for hiding graphics objects. For more information on the IFDEF macro in general, see IFDEF.
IFDEF macro
The IFDEF statement consists of three arguments:
IFDEF (<"Tag name">, <Hidden When value if tag defined>, <Hidden When value if tag
undefined>)
The first includes a variable tag name. If the variable tag is defined in the tag database at
project compilation, the IFDEF statement is replaced in the Hidden When field by the second argument. If the variable tag is undefined, the Hidden When field will contain the
third argument.
Example 1
IFDEF("Bit_1", 0, 1)
In the above example, if Bit_1 is defined in the tag database, the value in the Hidden When
field will be 0. If Bit_1 is undefined, the value will be 1. Since the object is hidden when the
value is TRUE, the object will be hidden when BIT_1 is undefined (i.e. when the Hidden
When field contains 1).
Example 2
IFDEF("Bit_2",,"1")
If the second argument is omitted, as in Example 2, the variable tag specified in the first argument is used. If Bit_2 is defined, therefore, the Hidden When field will contain Bit_2. The
value of the variable tag Bit_2 is then used to determine if the object is hidden. A non-zero
value will equate to TRUE, causing the object to be hidden.
If Bit_2 is undefined, the Hidden When expression evaluates to 1 (TRUE) and the object is
hidden.
To enter an IFDEF statement in the Hidden When Field:
Double-click the graphics object for which you want to edit the field.
Select the Appearance tab.
582
Click the Hidden When field and enter the IFDEF statement.
Click OK.
583
584
Changing Languages
This section describes how to change the language used by CitectSCADA.
See Also
Marking text for language change
Language databases
Multiple languages
Multiple projects
Changing languages at runtime
Logging data in different languages
ASCII and ANSI character sets
OEM character sets
585
where Native Text is the identifying text to be displayed when configuring. This text will
be replaced by the local equivalent at runtime. Be aware that the brackets are required as
they specify the extent of the native language text; Width and Justify are optional (indicated by the square brackets).
For example, if English is the native language, you could enter the following alarm description:
Alarm Desc
@(Motor Inoperative)
This indicator serves two purposes: It flags the text as native, and tells CitectSCADA to
change the text from native to local at runtime.
By default, the text that you enter here can be in any combination of upper- and lowercase.
In other words, Motor Inoperative will be considered the same string as motor inoperative or
MOTOR Inoperative, and they will all have the same local language translation. Case-sensitivity can be introduced by setting the [Language]CaseSensitive parameter to 1.
Width can be assigned any value from 0 to 254. If the local text is longer than specified, it is
truncated and left-justified. If a width is not specified, the field is the length of the local text
and the text left-justified.
Justify specifies the text justification and can only be used with Width. Justify can be one
of the following values:
l or L - Left
r or R - Right
c or C - Center
n or N - None
For example, to limit the local text in the previous case to 20 characters with right justification:
Alarm Desc
Characters that are normally part of the formatting - @ , () - can also be used within the native text. To do this, place a caret (^) character before them. For example, to include a comma without introducing a formatting error:
Alarm Desc
Note: The caret (^) character does appear at runtime or in the language database.
See Also
Language databases
Language databases
When the project is compiled, CitectSCADA creates a language database (dBASE III format), consisting of two fields: NATIVE and LOCAL. Text marked with a language change
indicator is automatically entered in the NATIVE field. You can then open the database
and enter the translated text in the LOCAL field.
586
For example:
NATIVE
LOCAL
When the project is run, the translation of Line Disconnected Alarm at Line Speed {LineSpeed1}
will display in place of the English text, the translation of Main Menu page will display in
place of the English text etc.
For the language change to occur automatically when the project is run, you must specify
the language database to use before running the project by using the [Language]LocalLanguage parameter. Otherwise, you can change the language yourself at runtime using the
SetLanguage() function.
If you do not enter a local equivalent of the native text string, the native text is displayed
by default. You can specify to display "#MESS", instead of the native text by setting the
[Language]DisplayError parameter to 1 (one); the default is 0 (zero).
For single-byte languages (such as French), the database can be edited using Microsoft Excel; for double-byte languages (such as Chinese), you should use Visual FoxPro.
By default, the language database created by the compile is called English.dbf (this can be
changed using the [Language]LocalLanguage parameter). It is saved to the project directory.
Once the database is created, it us updated when you compile. Text marked since the last
compile is appended to the database; the rest of the database is unchanged.
See Also
Multiple languages
Multiple languages
Note: To use characters for Baltic, Central European, Cyrillic, Greek, Turkish, and Asian
languages, or right-to-left languages (Arabic, Hebrew, Farsi, and Urdu) the operating system must have the corresponding language version of Windows, or have installed system
support for that language.
Each local language must have its own language database, so that it can be displayed in
place of a specified native language at runtime. Also, it must be set as the local language
using the [Language]LocalLanguage parameter. With this parameter set before you compile,
CitectSCADA automatically creates/updates the relevant language database.
For example, to display text in French at runtime, set the [Language]LocalLanguage parameter to French, flag all necessary native text in the project with @(), and compile. After compiling, look in the project directory for French.dbf, open it, enter the required French
translations in the Local field, and save the database. When the project is run, all marked
native text will be replaced by the appropriate French text.
Because you can have any number of databases, you can use as many different languages
as you like.
When you compile, all text marked with a language change indicator is entered in the Native field of whatever database is set as the local language using the [Language]LocalLanguage parameter. Therefore, you should know what database is set before you compile.
587
Also, if you have several language databases with the same native language, remember
that newly marked text is only appended to the current local language database (as specified by the [Language]LocalLanguage parameter). To add this text to other databases with
the same native language, change the [Language]LocalLanguage parameter, update pages,
and recompile for each database. Remember that for each database, only relevant changes
made since the last compile are added.
See Also
Multiple projects
Multiple projects
A language database can contain entries which are not actually included in a project. This
means that a single language database can be developed that is applicable to many projects.
See Also
Changing languages at runtime
requires a Cyrillic OEM character set and French and English requires a Latin OEM character set. Because Windows can only use one OEM character set at a time (which cannot be
changed dynamically), only one of the three project languages can be correctly supported
during any given session.
The only way to support multiple languages with differing character sets within one CitectSCADA project, is to verify that the language information you store in dBASE files is
stored in the ANSI (not the OEM) format. Further, the [CtEdit]ANSItoOEM parameter
must be set to 0 (zero) to prevent a conversion from occurring automatically. The challenge
for the developer in preparing the project is in saving this information in the first place, because most applications store the language information in OEM format.
Note: A multi-language project is included in the samples directory on your installation
CD. This project allows you to enter information into the language dBASE files in ANSI format.
590
OPC Overview
OPC (OLE for Process Control) is a set of open standards communication specifications intended for the industrial automation industry. OPC provides a common way for applications to access data from sources such as PLCs and databases.
The specifications are maintained by the OPC Foundation and are reviewed constantly to
verify that they meet the needs of industry. The OPC Foundations goal is to promote interoperability (open connectivity) through the use of open standards. CitectSCADA runtime implements vDA2.05 of the OPC specifications. For details on the OPC specifications,
navigate to www.opcfoundation.org.
When an OPC Server is used to collect data from physical equipment in a plant, any OPC
Client can access data directly from the OPC Server, as shown below:
591
The CitectSCADA OPC Server can be invoked from an OPC Client on the same machine or
on a different machine. When connecting to an OPC Server running on the same machine
as the client, use the Citect.OPC connection option. When connecting to an OPC Server running on a remote machine, use the Citect.OPCRemote option.
The OPC Server starts automatically when you start the CitectSCADA runtime environment and does not require configuring.
592
Application ID (AppID)
Citect.OPC
Class ID (CLSID)
{BA198B61-32E3-11d1-A1B5-00805F35623C}
Binary file
CtOpc32.dll
Interfaces
IOPCServer
IOPCBrowseServerAddressSpace (optional)
OPCGroup:
IOPCItemMgt
IOPCGroupStateMgt
IOPCSynchIO
IOPCASynchIO
IDataObject
IConnectionPointContainer
IOPCItemProperties
OPCGroup:
IOPCAsyncIO2
IConnectionPointContainer
System Requirements
Server Organization
Flat
(OPC_NS_FLAT)
Implemented Categories
OPC DA Servers
v1.0
{63D5F430-CFE4-11D1-B2C80060083BA1FB}
OPC DA Servers
v2.0
{63D5F432-CFE4-11D1-B2C80060083BA1FB}
Citect.OPCRemote
Class ID (CLSID)
{ BA198B62-32E3-11d1-A1B5-00805F35623C}
Binary file
CtOpc32.exe
Interfaces
IOPCServer
IOPCBrowseServerAddressSpace (optional)
OPCGroup:
IOPCItemMgt
IOPCGroupStateMgt
IOPCSynchIO
IOPCASynchIO
IDataObject
IOPCCommon
IConnectionPointContainer
IOPCItemProperties
OPCGroup:
IOPCAsyncIO2
IConnectionPointContainer
593
System Requirements
Server Organization
Flat (OPC_NS_FLAT)
Note: In the OPC architecture, each variety of server is allocated a unique identifier, known
as a Class ID. OPC Clients use these 128-bit numbers, frequently displayed in the form
6B29FC40-CA47-1067-B31D-00DD010662DA, to access the particular vendors OPC Server.
To make it easier for users, these numbers are often referred to by a more manageable
string identifier called a ProgID (Program Identifier). These identifiers usually take the form
Vendor.Application with an optional version number appended; for example, the CitectSCADA OPC Server ProgID is Citect.OPC.
Once successfully installed, the CitectSCADA OPC Server is ready for use. The OPC interface that OPC Clients access starts automatically when you start the CitectSCADA runtime
environment. Further configuration is only required where the CitectSCADA OPC Server
will be accessed by a remote OPC Client. See Configuring Remote Access to the CitectSCADA OPC Server for more information.
Setting
selected
not selected
Connect
Identify
not selected
595
Select Edit Limits in the Launch and Activation Permissions section of the Default
COM Security tab.
In the Group or user names list, select Everyone then select all the check boxes in the
Allow column.
Click OK to save your changes.
Finally, youre ready to edit the default permissions for Access and Launch for each
user (or group) that participates in OPC communication (for example, "OPC Users").
In the Access Permissions section of the COM Security tab, click Edit Default. Select the
required users/groups and allow Local Access and Remote Access. Click OK to save
your changes.
In the Launch and Activation Permissions section of the COM Security tab, click Edit
Default. Select the required users/groups and allow Local Access and Remote Access.
Click OK to save your changes.
You have now configured your OPC Server.
Note: You must restart this machine so that your settings can take effect.
You are now ready to configure your OPC Client.
Windows 2000
This section describes how to configure the OPC Server on Windows 2000.
To configure the OPC Server:
Choose Start | Run. Type dcomcnfg and click OK.
The Component Services dialog will appear.
In the tree pane, locate and select Computers under Component Services.
Right-click My Computer in the pane on the right, and choose Properties from the context menu.
Select the Default Properties tab. Make sure the settings are adjusted as follows:
Property
Setting
selected
not selected
Connect
Identify
not selected
597
The process of configuring DCOM security settings differs depending on which platform
youre using:
Windows Vista and Windows XP SP2
Windows 2000
Windows Server 2003
Windows Vista and Windows XP SP2
This section describes how to configure the OPC Client on Windows Vista and Windows
XP Service Pack 2.
Note: After configuring your OPC Client, you must restart the client so that your settings
can take effect.
To configure the OPC Client:
In Windows Control Panel, double-click Security Center, and then click Windows Firewall.
Select the Exceptions tab, and then click Add Program.
Locate the OPC Servers and clients you want to add as exceptions. You must add the
Microsoft Management Console (used by the DCOM configuration utility, below) and
the OPC utility OPCEnum.exe in the Windows/System32 folder.
You might have to Browse for other executables installed on the computer to add them
as exceptions. Please be aware that only .exe files are added to the exceptions list. For inprocess OPC Servers and clients (DLLs and OCXs) you must add the .exe applications
that call them to the list instead.
Click OK to save your exceptions.
You must now add TCP port 135 to initiate DCOM communications and allow incoming echo requests.
From the Windows Firewall Exceptions tab, click Add Port.
In the Name text box type DCOM.
In the Port number text box type 135 and select the TCP option.
Click OK to save your changes.
You have now defined your exceptions, so you can restart your firewall.
You are now ready to configure DCOM for your launch, activation, and access permissions.
Choose Start | Run. Type dcomcnfg and click OK.
The Component Services dialog will appear.
In the tree pane, locate and select Computers under Component Services.
Right-click My Computer in the pane on the right, and choose Properties from the context menu.
Select the Default Properties tab. Make sure the settings are adjusted as follows:
Property
Setting
selected
not selected
Connect
Identify
598
not selected
Setting
selected
not selected
Connect
Identify
599
not selected
Use the Access Permission dialog to select Anonymous Logon, and then check Allow
for the Remote Access option.
This is needed for OPCEnum.exe to function correctly, and for any OPC Servers and clients that set their DCOM authentication level to None in order to allow anonymous connections. If you dont use OPCEnum.exe, you might not need to enable remote access for
anonymous users.
Click Apply to save your changes.
You must then edit the launch and activation permissions.
Select Edit Limits in the Launch and Activation Permissions section of the Default
COM Security tab.
In the Group or user names list, select Everyone then select all the check boxes in the
Allow column.
Click OK to save your changes.
Finally, youre ready to edit the default permissions for Access and Launch for each
user (or group) that participates in OPC communication (for example, "OPC Users").
In the Access Permissions section of the COM Security tab, click Edit Default. Select the
required users/groups and allow Local Access and Remote Access. Click OK to save
your changes.
In the Launch and Activation Permissions section of the COM Security tab, click Edit
Default. Select the required users/groups and allow Local Access and Remote Access.
Click OK to save your changes.
You have now configured your OPC Client.
Some older OPC Clients cannot locate CitectSCADA OPC Server on a client machine.
If this is the case, copy the ctopc.reg file located in the bin directory to the client machine. Double-click the file to add OPC Server-specific data to the registry.
Note: Now you must restart this machine so that your settings can take effect.
Troubleshooting
If you experience connectivity issues with your OPC Server, OPC Client, or both, refer to
the CitectSCADA Knowledge Base.
601
602
Incremental compilation
You can compile the project incrementally. With incremental compilation, CitectSCADA
only compiles the database records that were added (or changed) since the last compilation. The remainder of the project is not re-compiled.
Note: Some database records are dependent on other database records. If you change a dependent record, CitectSCADA compiles the entire database.
Before you run a system on a live plant, you should perform a complete compilation
(switch off Incremental Compile) as the compilation will be more rigorous. Similarly, when
you restore a project from floppy disk, you must perform a complete compilation the first
time (switch off Incremental Compile).
To switch to Incremental Compile:
Select the Project Editor.
Choose Tools | Options.
Select the Incremental Compile check box, and then click OK.
See Also
Debugging the compilation
Compilation options
The compiler has a number of options available to help simplify the process of resolving
compilation issues. Typically, these options modify the output of the compile error log,
making it more practical to assess specific error types and entries.
604
The options listed here can be adjusted via the Project Editor Options dialog, which is accessible from the Project Editors Tools menu.
Log "tag not defined" warnings during compile
If you select this option, the compiler will generate a tag not defined warning in the
error log for any tags detected that are not defined in the variable database.
As CitectSCADAv7.10 now allows you to include undefined tags on your graphic pages, this warning may be redundant and impractical. By unchecking this option, the
warnings are still included in the displayed warning count, but they are not added to
the error log.
Log deprecated warnings during compile
If you select this option, the compiler will generate a warning to identify any deprecated elements it detects in a project, i.e. any functions, parameters, or Kernel commands
that are no longer supported.
By unchecking this option, the warnings are still included in the displayed warning
count, but they are not added to the error log.
Warn about unused tags during full compile
This option enables the generation of warning entries for unused tags that are not used
directly in a CitectSCADA project. The warning entries are included in the compile errors form when a full compile is run. By default this option is not selected.
See Also
Setting the Project Editor options
Description
Type
Record
The number of the database record where the error has occurred.
Name
Field
Table
Error
Context
605
See Also
Compile Error Messages
606
Error Message
Description
Address on bad
boundary
When reading a long or real from the memory of an I/O Device, all addresses must be on odd or even boundaries. Addresses cannot be mixed. You can disable checking with the
[General]CheckAddressBoundary parameter.
Analog address
not supported
A floating-point number cannot be found where one is expected, or the floating-point value is out of range.
The variable tag address is not a valid format for the I/O
Device protocol you are using: check the address format.
(See the Data Types topic in the Help for each supported
I/O Device for a list of appropriate address formats for that
device).
An invalid format parameter is specified in a string conversion. Check the format specification of the variable in the
Variable Tags form.
The file cannot be opened. The file does not exist, or it has
become corrupt, or your system is out of file handles.
The file cannot be read. The end of file was found, or it has
become corrupt.
Error Message
Description
Cannot write to
file
The file cannot accept a write operation. The file has become corrupt or the disk is full.
Close comment
delimiter expected
A comment opened with /* must be closed with the */ delimiter. Add the */ delimiter or use a single line comment
that starts with an exclamation mark (!) and has no end delimiter.
Close quotation
mark expected
Database is empty
Database not
found
Disk full
The disk is full. Remove unwanted files from the disk, or replace the existing disk with a larger disk.
DO expected
END expected
File already
opened in SINGLE
mode
The file has been opened by another user. Set the [General]
ShareFiles parameter to 1 in the citect.ini file to open files
in shared mode.
The file cannot be found. Check that the file name is correct.
File locked
FUNCTION expected
607
Error Message
Description
GLOBAL function
is not allowed, use
PUBLIC
Include project
not found
An included project (specified in the Included Projects database) does not exist. Check the name of the included
project.
Incompatible
types
There is a mismatch of data types in a statement. For example, a string is specified where a number is expected.
This error can be generated when a variable tag is placed
on a graphics page and the name of the tag is identical to
the name of a Cicode function in the project or an included
project.
Incorrect number
of arguments for
function
Index key has
changed
Invalid BOOLEAN
value
A non-integer value was found where a TRUE or FALSE value is expected. For example, the controlling expression in
an IF, WHILE, or FOR statement must be an integer.
The font does not exist in the project. Check that the font
name is correct, or specify the font with the Fonts form.
A group does not exist in the project. Check that the group
name is correct, or specify the group with the Groups form.
The time is incorrectly specified in the Time, Period or Sample Period field of a Reports, Events, Trend Tags, SPC Trend
Tags, or Devices form.
Time formats must be in the format HH:MM:SS and must
be in the range of 0:00:00 - 23:59:59. Only the hour is required, for example a value 16 means 16:00 (4:00 PM).
Note that 24:00:00 is accepted for historical purposes, and
maps directly to 0:00:00.
Period formats must be either a valid date or a time in the
format HH:MM:SS with the minutes and seconds in the
range of 0 - 59. Only the seconds are required, for example
a value of 22 means 22 seconds.
Sample Period formats must either be a milliseconds value
(for example 0.200 for 200 milliseconds) or a time in the
format HH:MM:SS with the minutes and seconds in the
range of 0 - 59. Only the seconds are required, for example
a value of 22 means 22 seconds.
Label argument
error
Label is defined
twice
Label names must be unique. Check the Labels form for duplicated names.
608
The label is too big. The size of a label must not exceed 8
kb.
The report file size must be less than 63 kb. Reduce the size
of the report or configure two reports.
Error Message
Description
MODULE function
is not allowed, use
PRIVATE
No I/O Devices
defined
The database has become corrupt or the file format is unknown. Pack the database.
Operand expected
Out of file handles
Out of memory
PRIVATE variable
is not allowed, use
MODULE
Protocol expected
609
Error Message
Description
PUBLIC variable is
not allowed, use
GLOBAL
Semicolon expected
Software error
Specification file
invalid
A system file has become corrupt, or been deleted. Re-install CitectSCADA on your system. If the error persists, contact Citect Support.
Statement expected
String expected
String too big
Super Genie syntax (?) can only be used on pages. You cannot use a Super Genie in a report or Cicode function library.
Use the TagRead() and TagWrite() functions instead.
Symbol search
failed
Syntax error
Tag already defined
Tag expected
The tag does not exist. Check that the tag name is correct,
or specify the tag (with the Variables Tag form). If the tag
does exist in the variables database, the index to the database might be incorrect. This can occur if you have edited
the variables database using Excel or some other database
editor. To re-index the database choose File | Pack (in the
Project Editor).
THEN expected
610
More than 4500 user functions have been defined. To increase the number of functions allowed (up to 10000), use
the CtEdit parameter MaxCicodeFunctions This error is often
due to Cicode functions being defined in a number of included projects. Extending this parameter might affect system
performance. It should only be set when advised by Citect
Customer Service.
Error Message
Description
The maximum number of .DBF files that can be open simultaneously has been exceeded. Increase the limit by changing the [CtEdit] DbFiles parameter.
Trailing characters
in Cicode
Trailing characters
in Name
The database record name contains invalid characters. Remove any invalid characters from the record name.
The beginning of the database has been reached or the database has become corrupt. Pack the database. If the error
persists, contact Citect Support.
Unexpected end of
file
Unknown field
Unknown file
The include file cannot be found. Check the name of the include file, or that the included file is in the correct directory.
The I/O Device (unit) does not exist in the project. Check
that the I/O Device name is correct.
The protocol does not exist.
611
See Also
CitectSCADA Internet server
613
For Windows NT4 or 2000, go to the Command Prompt, type IPCONFIG, and press
Enter.
For Windows 95, select Start | Run, type WINIPCFG, and press Enter.
After completing the Computer Setup Wizard, define the passwords required by users
of your Internet Display Clients using the [Internet]Manager and/or [Internet]Display
parameters.
If the Runtime project on the Internet Server has links to any included projects, the Internet Display Client can only access the included project files if they are stored on the
same directory level as the Runtime project. For example, if the current project is located
at:
C:\Citect\User\<current
project>
then any included projects must be located on the same level:
C:\Citect\User\<included project>
Any files you want to make accessible to an anonymous FTP user should be placed in
the Internet Servers\Internet directory, located at C:\Citect\User\Internet by default.
This is where CitectSCADA stores the idc.exe file to allow remote installation of the Internet Display Client.
TheInternet directory on the Internet Server is only accessible to anonymous FTP users if
it shares the same directory level as the current Runtime project. For example, if you use
CitectSCADAs default settings, the current project folder will be located at:
C:\Citect\User\<current
project>
If the runtime project on the Internet server is stored elsewhere, an appropriately located
Internet directory must be created.
To install the Internet Display Client:
On the remote computer, start your Internet browser.
Type in the FTP address of your CitectSCADA Internet Server (for example, ftp://
sanctus.citect.com.au/idc.exe).
Save the file (IDC.exe) to a temporary folder.
Go to this temporary folder and double-click IDC.exe.
Follow the prompts to complete the installation.
To run your project over the Internet:
Verify that you have installed the Internet Display Client and set up your Internet server.
At the Internet Display Client, double-click the Citect Runtime icon in the CitectSCADA IDC program group.
In the Citect Internet Client Setup dialog, type the TCP/IP address of your CitectSCADA Internet Server (for example 10.5.6.7 or plant.yourdomain.com), then type your password.
Click OK. All the relevant data will be downloaded to your computer and your project
will run (if the CitectSCADA Internet Server is running).
To connect to a different CitectSCADA Internet Server once your project is running on the Internet Display Client:
Click Client Setup from the runtime Control menu.
615
In the Citect Internet Client Setup dialog box, complete the following properties:
Option
Description
Address
Password
Enter the password supplied to you by the CitectSCADA Internet Server administrator. Your password will be encrypted before it is sent across the Internet.
If you enter an incorrect password, the connection attempt will
fail.
Click OK. All the relevant data is downloaded to your computer and your project will
run.
Note: The Computer Setup Wizard uses the same .ini as specified for Citect Explorer. You
can specify different .ini files for both the Runtime and Explorer programs. However, if
you initiate Runtime from the Explorer, it uses the ini that is specified for the Explorer.
616
Hardware alarms
When a system error is detected (that is, a malfunction affecting CitectSCADA operation)
CitectSCADA generates a hardware alarm. Hardware alarms are usually displayed on a
dedicated Hardware Alarm page, available as a standard template.
The hardware alarm page indicates what is happening in your CitectSCADA system. If loss
of communication occurs, if Cicode cant execute, if a graphics page is not updating correctly, or if a server becomes inoperative, this page shows you. Hardware alarms consist of a
unique description and error code.
The hardware alarms do not have detailed information, but serve to point you in the right
direction. For example, if you have a Conflicting Animation alarm, CitectSCADA will not
tell you the cause. You must observe which page causes the hardware alarm, and locate the
animations yourself.
Note: Your system should have no recurring hardware alarms.
There are two hardware alarm fields that are not always shown on the hardware alarms
pages. ERRPAGE will display the name of the page that was displayed when the error was
detected. This is useful for finding errors caused by improperly programmed animations.
ERRDESC provides information that is specific to the type of the alarm. For example, if the
alarm is an I/O Device error, ERRDESC shows the name of the device.
See Also
SysLog.DAT file
SysLog.DAT file
The syslog.dat is a file maintained by CitectSCADA, that contains a useful log of CitectSCADA System information. The variety of information that can be logged to the syslog.dat is extensive; from low-level driver traffic and Kernel messages, to user defined
messages.
The Log Read and Log Write fields in the I/O Devices Properties dialog box control whether logs are made for each I/O Device.
Note:CitectSCADA locks syslog.dat while running. However, you can still view it by using the SysLog command in the Kernel.
This file is restricted in size (to 2000 kb by default). When it reaches the size limit, CitectSCADA renames it syslog.bak, and starts a new syslog.dat. You can make this restriction larger or smaller by using the [Debug]SysLogSize parameter. For example, the
following lines in the citect.ini will set the syslog.dat size to 30 Mb:
[DEBUG]
SysLogSize=30000
If you want to archive more than one system log file, you can set [Debug]SysLogArchive to
1. This adds a timestamp to the filename.
See Also
Debugging the Runtime System
617
You can also redirect the Peer Port connection for an I/O Server using the following syntax:
[AddressForwarding]
<ClusterName>.<ServerName>_PeerPort=<ipaddress>:<port>
For Alarm Servers that have alarm properties enabled, you can redirect the alarm properties connector using the following:
[AddressForwarding]
<ClusterName>.<ServerName>_AlarmProps=<ipaddress>:<port>
Address forwarding is only interpreted and used during startup of Citect Runtime. It is recommended (but not required) that the Computer Setup Wizard is run before running up a
project to confirm your changes.
Note: The CitectSCADA Web Client uses address forwarding to manage communication
across corporate firewalls. Any manual adjustments may also impact the ability to connect
a Web Client to a deployment on a Web Server.
If you only change graphics pages, CitectSCADA does a partial restart (changing only
the pages in the runtime system). Changeover is instantaneous.
If you change any databases (for example, add a new alarm tag, trend tag, or Cicode
function), CitectSCADA does a full restart to run the updated project.
See Also
Restarting a networked system online
619
When Project B is complete , you can use the online restart facility to change the runtime
system to Project B.
620
Where possible, balance all clients across both phases of the shutdown. The [Shutdown]Phase parameter defines the phase to which each CitectSCADA computer responds.
You can exclude selected computers (for example I/O Servers) from the online restart procedure with the [Shutdown]NetworkIgnore parameter.
For security, you can prevent selected computers from initiating the online restart procedure with the [Shutdown]NetworkStart parameter.
Note: If youve configured CitectSCADA to use multiprocessor support, it is recommended
that you use the Runtime Manager instead of the restart facility. The runtime manager allows you to restart different processes individually, whereas the restart facility will restart
all CitectSCADA processes on the machine.
Using a Callback function
You can use a callback function (with the OnEvent function) to perform housekeeping tasks
before the system shuts down. You would normally call OnEvent() in the main startup function (defined with the [Code]Startup parameter). Each time a Shutdown() call is made, the
callback function is run.
/* A user shutdown procedure. */
INT
FUNCTION
MyStartupFunction()
...
OnEvent(25, MyShutdown);
...
END
INT
FUNCTION
MyShutdown()
STRING sPath;
// Perform housekeeping tasks
...
sPath = ProjectCurrentGet();
621
Software Protection
CitectSCADA uses a hardware key to help prevent license infringement. The hardware key
is a physical key that plugs into either the parallel port or USB port of your computer. The
hardware key contains details of your user license, such as type and I/O point limit.
See Also
CiUSAFE dialog properties
Demo mode
4,16
Demo mode
You can run CitectSCADA without the hardware key in demonstration (Demo) mode.
Demonstration mode lets you use all CitectSCADA features normally, but with restricted
runtime and I/O.
Note: If you configure CitectSCADA to run as multiple processes on one CPU or multiple
CPUs, you cannot use CitectSCADA in demo mode. If you run CitectSCADA as one process, you can use demo mode as with previous versions of CitectSCADA.
The following demonstration modes are available:
15 minutes with a maximum of 50,000 real I/O.
10 hours with no static points and a maximum of 1 dynamic real I/O. This is useful for
demonstrations using memory and disk I/O. CitectSCADA starts in this mode if no static points are configured.
If you want to demonstrate DDE, CTAPI, or ODBC writes to CitectSCADA in this mode,
you can only write 1 point. To write to more than 1 point, you must force CitectSCADA
to start in 15 minute-50,000 I/O demo mode by creating at least one static I/O point.
For this to work, you must configure a real variable tag, with an accompanying PLC or
I/O Device. The tag must be used by a page or in Cicode. If you do not have a real I/O
Device connected, CitectSCADA gives a hardware alert message, which you can disable
using the IODeviceControl function.
8 hours with a maximum of 42,000 real I/O. This is only available through special CitectSCADA Integration Partners (CIP) keys.
623
DspKernel(1);
Comment
To close the Kernel window, call the DspKernel() function again, passing 0 in the iMode
argument:
Command
DspKernel(0);
Comment
Note: You should put the highest privilege level on the DspKernel command to prevent
your operators from opening the Kernel window.
Closing the kernel window
You can close the Kernel window by choosing Close from the Control menu of the main
Kernel window.
See Also
Inside the kernel
624
The next line of information is the start up time and CitectSCADA version number.
Channel PORT# is Online
Channel PORT# is Online
Channel PORT# is Online - You will only see these messages if the CitectSCADA computer is an I/O Server. These are messages telling you that any ports you have defined
in the I/O Server have come online. If you get a messages saying that the port is not online, or could not be opened, check the configuration of your project. PORT# is the Port
Name specified in the Ports form.
Unit UNIT# Port PORT# is Online
Unit UNIT# Port PORT# is Online
Unit UNIT# Port PORT# is Online - Only visible if the CitectSCADA computer is an
I/O Server. This indicates that the I/O Device with the Unit Number of UNIT# (as defined in the I/O Devices form), is connected to port PORT# .
Communication System Online - CitectSCADA has completed startup operations and
is now fully operational (running).
What to look for
All systems in CitectSCADA should start smoothly. When commissioning a system, you
should check the Kernel. If any element does not initialize properly or reports errors at startup, your CitectSCADA system is not working correctly and you should investigate.
Common causes of startup errors are:
Incorrect computer setup (usually solved by the Computer Setup Wizard).
Networking errors or bad hardware.
Communication errors (usually just a configuration issue).
626
Use the Main window to check that all your I/O Devices come online correctly when starting. First the ports must initialize, then the I/O Device itself will come online. When a device does not initialize as expected, CitectSCADA displays a message such as "PLC not
responding", "I/O Device Offline" or similar.
Some I/O Devices might take two attempts to come online. If so, CitectSCADA waits (usually 30 seconds) and tries again. If the I/O Device does not come online after the second attempt, check your configuration (at both ends) and cabling.
Note: The Kernel continues to report changes in the status of I/O Devices to the Main window. This information might also be reported as alarms to the Hardware Alarms page.
See Also
Using Kernel Commands
Description
Up arrow
Down arrow
F3
Left arrow
Moves the cursor back one character at a time (in the command line).
Right arrow
Moves the cursor forward one character at a time (in the command line).
Delete
Deletes the character to the right of the cursor (in the command line).
Backspace
Deletes the character to the left of the cursor (in the command
line).
Insert
Note: When typing a command in the Main window, if a message appears in the middle of
your command, you can still execute the command normally. Use theShell command to
open a new command window.
See Also
Kernel commands
Kernel commands
The table below describes the kernel commands.
Command
Description
627
Cache
Cicode
Cls
Debug
Enables the debugging of raw data transfer between CitectSCADA and a driver.
DriverTrace
Exit
Help
INI
Kernel Alarm
Kernel Trend
Kernel Report
Kernel IOServer
Kernel Client
Log
NetBIOS
Page General
Page Driver
Page Memory
Page Netstat
Page Table
Page RDB
Page Unit
Pause
Probe
Shell
Stats
SysLog
Cache
Changes the cache timeout for each I/O Device with which CitectSCADA is communicating.
Syntax
Cache <I/O Device name> <Timeout>
Where:
<I/O Device name>
628
Any valid I/O Device defined in the project (using the I/O Devices form), or * for
all I/O Devices.
<Timeout>
Timeout in milliseconds, or 0 (zero) to disable timeout.
This command allows you to tune the cache timeout while the I/O Server is communicating
with the I/O Devices. If you set the timeout to 0 (zero), the cache is disabled. If you specify
a cache timeout for an I/O Device that has the cache disabled, the cache is enabled.
Any changes made to an I/O Device only apply while the I/O Server is running. If you restart the I/O Server, the cache timeout reverts to the value configured in the project. Once
you have determined the optimum cache timeout, you should make the change persistent
by setting the value in the I/O Devices form (for the particular I/O Device).
See Also
Kernel commands
Displaying the kernel window
Cicode
Opens a child window that you can use to call Cicode functions, on either a local or remote
computer. Any built-in or user-written function can be called from this window.
Syntax
Cicode [<Name>]
Where:
<Name>
Optionally the name of a Citect Server (for example, Alarms, Reports, Trends) or
a client computer name.
If you enter the Cicode command with no Name argument, a local Cicode window is created. All Cicode commands are executed on the local computer.
In a multi-cluster systems when connecting to a server, the following syntax needs to be
specified:
<clustername>.<server>
If you enter a server or computer name as the Name argument, you can create a Cicode
window to the remote server or computer. All Cicode commands entered in a remote
Cicode window are executed on the remote computer. For example, to create a Cicode window where all commands execute on the Alarm Server, use:
Cicode Alarm
If you issue the command from a server, you can create a window to the "MyComputer"
computer:
Cicode MyComputer
If the remote computer can be found, its name is displayed in the title of the Cicode window, otherwise a local window is created.
629
Note: You can only specify a computer name if you are issuing the command on a server.
This function only supports Client to Server or Server to Client connection.
Each Cicode command is executed with its own Cicode task, so you can start tasks that take
a long time to complete. The Cicode prompt returns immediately after the Cicode task has
started and the task continues to run in the background. If the function is completed immediately, the return result of the function is displayed. If the function continues to run, the
result is not displayed and cannot be returned - the message "Task still running" and the
task handle is returned instead.
Note: Remember that there is no Privilege check on any command issued from this window, so you have full access to the system.
The Cicode prompt 0:> shows the current window number with which any object is associated. To change the current window, use the WinGoto() function (or any other Cicode
function that affects the current window).
The Cicode window does not recognise any variable names, so when you call a Cicode
function, you can only pass constants (for example numbers or strings). When you call a
function that expects a string, you should pass a string constant, for example Prompt("Hello from the Kernel"). If the string is only a single word, you do not have to use delimiters,
for example Prompt(Hello). The Cicode window tries to convert whatever you enter (as arguments) into the correct data type. If it cannot convert the arguments, it passes either 0 (zero) or an empty string to the function.
Note: Some Cicode functions are implemented as label macros by the compiler. These macros allow backward compatibility when the number of arguments to a function has been
changed. Because the Cicode window does not expand macros, you cannot call these functions directly. You must use the macro expansion. If the function you are trying to use cannot be found, try again by adding an underscore (_) to the front of the function name, for
example _DevClose(1).
You can also shut down the Citect system from this window by using the Shutdown() function.
See Also
Kernel commands
Displaying the kernel window
Cls
Clears all text from the Main or Cicode windows, and moves the cursor to the top left-hand
corner.
Syntax
Cls
Use this command to clear the current window when it has become cluttered (from displaying debug data or too many commands).
See Also
Kernel commands
Displaying the kernel window
630
Debug
Enables the debugging of all raw data that is transferred between Citect and a selected driver. All protocol traffic is displayed in the Kernel window and logged to the SysLog.DAT
file.
Syntax
Debug<Port> <Mode> [<Display>]
Where:
<Port>
A port name configured in the project (using the Ports form)
<Mode>
The mode:
ALL - Trace all low-level communication traffic to the Kernel window.
READ - Trace the low-level communication traffic of all read commands to the
Kernel window.
WRITE - Trace the low-level communication traffic of all write commands to the
Kernel window.
ERROR - Trace any low-level communication traffic that contains a protocol error. This mode only generates traces when an error is detected, so you can
leave this option on for long periods of time (to find difficult problems).
OFF - Stop the debug trace of any type of command.
Note: The TO and FROM modes are now obsolete.
<Display>
Optionally the display scenario:
MONO - Send the debug to a monochrome monitor (if one is attached) as well as
the Kernel.
MONOONLY - Send the debug to the monochrome monitor only.
To place a port in debug mode, enter DEBUG followed by the port name and the mode you
require. If you do not know the name of the port, enter DEBUG (without any arguments),
and Citect displays a list of all available ports.
Only the I/O Server communicates with the I/O Devices, so this command is generally used
only on the I/O Server.
When you enable a debug trace mode, Citect displays all protocol traffic in the Kernel window and logs it to the SysLog.DAT file. This tends to reduce Citects performance (as there
may be a lot of data), and therefore you should not enable debug trace on an I/O Server that
is important to your current operation. Use this command only during commissioning or
on a non-vital section. Excessive use of this command may cause the I/O Device to go offline.
When the debug trace is sent to a Monochrome monitor, it is displayed directly from the
interrupt routine of the driver and therefore at a much faster rate. This trace (if MONOONLY is used) causes less CPU overload of Citect while the trace is active, and provides instantaneous output. This method is useful if you are developing your own driver and your
driver crashes before the debug trace is displayed in the Kernel.
631
You can use the Shell command to create an extra command window while the trace is active. This allows you to enter more commands (in the new window).
You can use the Pause command to stop the debug output (to view the data).
See Also
Kernel commands
Displaying the kernel window
DriverTrace
Lists the commands and information issued to a driver by CitectSCADA. It can be useful
in debugging a driver, for example, it can help determine why a driver is unable to fully
initialize.
Note: Running syslog traces can draw heavily on a CPU usage. You should monitor the impact on CPU performance when implementing a large number of traces.
Syntax
DriverTrace [OFF|CMDS|VER[BOSE]|PORT=<name>|MASK=<xxxxxxxx>|DUMP]
Where:
blank
Returns the current DriverTrace settings. This can be useful to determine the current mask or port settings before implementing a new trace. Just key DriverTrace
into the Kernel and hit the return key to view the current settings.
OFF
Turns the DriverTrace off.
CMDS
Turns the DriverTrace on, but does not display the contents of the data buffer.
Note: Specific driver commands must be enabled with the Kernel command
DriverTrace[Mask], or the DriverTraceMask INI parameter.
VER[BOSE]
Turns the DriverTrace on, and displays the contents of the data buffer.
Note: Specific driver commands must be enabled with the Kernel command
DriverTrace[Mask], or the DriverTraceMask INI parameter.
PORT
Allows traces to be limited to a particular driver port, by defining a port name.
The default setting, PORT=*, will trace all ports.
MASK
A 4-byte hexadecimal number that represents a bit mask used to either include or
exclude driver commands from the DriverTrace. The driver commands and their
values are as follows:
Command
632
Bit Position
CTDRV_INIT
00000001
CTDRV_OPEN
00000002
CTDRV_INIT_CHANNEL
00000004
CTDRV_INIT_UNIT
00000008
CTDRV_READ
00000010
CTDRV_WRITE
00000020
CTDRV_CONVERT
00000040
CTDRV_CANCEL
00000080
CTDRV_CPU
00000100
CTDRV_DATABASE
00000200
CTDRV_STOP_UNIT
00000400
CTDRV_STOP_CHANNEL
00000800
CTDRV_CLOSE
00001000
CTDRV_FORMAT
00002000
CTDRV_STATS
00004000
CTDRV_DEBUG
00008000
CTDRV_INFO
00010000
CTDRV_STATUS_UNIT
00020000
CTDRV_INIT_CARD
00040000
CTDRV_UPDATE_INFO
00080000
CTDRV_UI_READ
00100000
CTDRV_UI_WRITE
00200000
CTDRV_EXIT
00400000
CTDRV_LINE_STATUS
00800000
CTDRV_SEND_BREAK
01000000
CTDRV_REINIT_CHANNEL
02000000
CTDRV_SET_PARAM
04000000
CTDRV_GET_PARAM
08000000
CTDRV_OPEN_PORT
10000000
CTDRV_CLOSE_PORT
20000000
CTDRV_STATUS_DISCONNECT
40000000
For example, the value you would use to include only the CTDRV_OPEN,
CTDRV_INIT_UNIT and CTDRV_READ commands would be: 0000001A.
Most users will want to exclude the CPU function call, as this happens often. Do
this by setting a mask of 7ffffeff.
The default <mask> is 7FFFFFFF.
DUMP
Lists the driver control blocks (DCBs) on the I/O Server awaiting delivery to a
driver and actioning from the driver.
See Also
Kernel commands
Displaying the kernel window
Exit
Closes the Cicode or Shell windows.
Syntax
Exit
633
Note: You cannot use this command to close the Main window. See Closing the kernel window.
To close all other windows, select Close from the windows control-menu box, or press Esc,
or double click the control-menu box.
See Also
Kernel commands
Displaying the kernel window
Help
Displays a list of some of the commands that are available in the Kernel.
Syntax
Help
See Also
Kernel commands
Displaying the kernel window
INI
Displays local citect.ini file. (If you are using a Citect Internet Display Client to run a project
over the internet, the .ini file in the bin directory will display). You can use the Page Up,
Page Down, and arrow keys to move through the file, but you cannot edit or save it.
Syntax
INI
Note: This window is the same that is used to display the syslog.dat file. You can display
either the citect.ini or syslog.dat in this window, but you cannot display both at the same
time.
See Also
Kernel commands
Displaying the kernel window
Log
Enables or disables the logging of I/O DEVICE reads and writes to the syslog.dat file.
Syntax
Log<I/O Device> <Mode>
Where:
<I/O Device>
The name of the I/O Device to log
<Mode>
Either: READ, WRITE, or OFF
See Also
Kernel commands
Displaying the kernel window
634
Page General
Displays general statistics information on the overall performance of Citect.
Syntax
Page General
General Statistics
Server Name
Node Name
The computer name of this computer. You can set this through
the Computer Setup Wizard. This is only used if you have Citect
in a networking configuration.
Time
CPU Index
Running
Stat Reset
Memory Total
Memory Physical
Memory Resources
Scheduler Cycles
CPU Usage
The number of tasks per second that the Citect scheduler is executing, to show how busy Citect is. This number should be between 30 and 200 tasks per second. If the computer is an I/O
Server, the task number is higher (because each protocol uses
many tasks).
635
Lost Errors
Physical Reads
Blocked Reads
The total number of times a request was made for the same I/
O Device address while the I/O Server was already reading that
address. The server blocks the two requests together as an optimization.
Digital Reads
The total number of digital points that the I/O Server has read
from all I/O Devices.
Digital Reads
per Sec
The number of digital reads per second that the I/O Server is
processing. This provides a general indication of performance.
It is dependent on the protocol.
Write Requests
Physical
Writes
636
Blocked
Writes
The total number of times a request was made for the same I/
O Device address while the I/O Server was already writing that
address. The server blocks the two requests together as an optimization.
Register
Reads
The total number of register points that the I/O Server has read
from all I/O Devices.
Register
Reads per Sec
The number of register reads per second that the I/O Server is
processing. This provides a general indication of performance.
It is dependent on the protocol.
Cache Reads
Cache
Reads(%)
Cache Flush
Cache RD
Ahead
Cache Buffers
Cache Short
Response
Times
The time taken by the I/O Server to process read and write requests (i.e. the time from when a request arrives at the server
to when it is sent back to the client). This time depends on the
physical response time of the I/O Device and how long the request had to wait in a queue for other requests to be completed.
This time increases as the servers loading increases, and is a
good indication of the total system response.
The average, minimum, and maximum times are displayed.
Typical values depend on the I/O Device protocol, however Citect should have an average response of 500 to 2000 ms. Slower
protocols or a heavily loaded system may make the response
time higher, but you should be able to get response times of
less than two seconds even for very large systems.
637
Points
The maximum number of I/O points that can exist in your Citect
system. The combined Static and Dynamic count cannot exceed
this number. The point limit is part of the Citect software protection, and is programmed into your hardware key.
Max Full
Current Full
The current number of fully functional Citect computers (Full Licenses) that are running in your Citect system.
Peak Full
The peak number of fully functional Citect computers (Full Licenses) that your Citect system has experienced since it was restarted.
Static
Max Mngr
Current Mngr
Peak Mngr
Dynamic
Max Dsp
Current Dsp
Peak Dsp
The peak number of Display-only Clients that your Citect system has experienced since it was re-started.
See Also
Kernel commands
Displaying the kernel window
Page Driver
Displays information about each driver in the Citect system. This window is only displayed
if the Citect computer is configured as an I/O Server with physical I/O Devices attached.
Syntax
Page Driver
Use Page Up and Page Down keys to scan the driver list.
Driver Statistics
Port Name
Protocol
Title
638
The name of the physical port the driver is using for communication.
The name of the protocol.
The protocol title and version string. All protocol drivers for
Citect Versions 3.xx, 4.xx, and 5.xx, are Version 2.0 type drivers.
Read Requests
Physical Reads
Blocked Reads
The total number of times a request was made for the same
I/O Device address while the driver was already reading or
about to read that address. The driver blocks the two requests
together as an optimization.
Digital Reads
The total number of digital points that the I/O Server has
read from all I/O Devices.
Digital Reads
per Sec
Write Requests
The number of digital reads per second that the I/O Server is
processing. This provides a general indication of performance.
It is dependent on the protocol.
The first number is the total number of write requests sent to
the driver from all client Citect computers, including the local
Citect client.
The second number is the write requests per second (that the
I/O Server is performing).
Physical Writes
Blocked Writes
The total number of times a request was made for the same
I/O Device address while the driver was already writing that
address. The driver blocks the two requests together as an
optimization.
Register Reads
The total number of register points that the I/O Server has
read from all I/O Devices.
Register Reads
per Sec
The number of register reads per second that the I/O Server
is processing. This provides a general indication of performance. It is dependent on the protocol.
Cache Reads
Cache Reads(%)
Error Count
639
Short buffers
The number of times the server needed a buffer for the driver
but none were available. This can reduce communication performance and result in loss of requests. Increase available
memory if this field increments too quickly (that is, more than
10 per minute).
Driver Errors
The number of low-level driver errors encountered before retries were performed. This field may continue to increment
even if no errors are reported because the driver retries and
it may complete the command on the second attempt. If this
field increments quickly (i.e. 10 or more per minute) without
other errors being reported, you may have a low-level error
that affects performance.
Out of Buffers
Time Outs
The number of timeouts encountered by the driver during operations. This field may continue to increment with no visual
errors as the driver retries the operation. If this field increments excessively, there may be a communication problem.
Retries
640
This is the number of requests that are kept in a buffer waiting to be serviced by the protocol. There is a pre defined default value for this for every protocol. If a protocol is capable
of handling multiple requests or commands at a time then this
number may be high. If the protocol is capable of only handling 1 command at a time then this will probably be 1 or 2.
Blocking Size
(Bytes)
This is the range that the I/O Driver will use when blocking
read or write requests together at runtime. The default value
for this is typically set after quite a lot of experimentation. The
value is calculated as the optimum range of data that the I/O
Device can respond to, to get the fastest response times from
your I/O Device.
For example, if the Blocking Size is 100 and you have a
graphics page that has Address1 and Address 99 on it, Citect
will read both of these addresses in one request. If you have
Address 1 and Address 101 on the page Citect will issue 2 separate read requests. The block size may not be the maximum
packet size for the protocol, since a particular type of I/O Device may respond faster to smaller requests of data than larger requests.
There is one important consideration when using this method; many I/O Devices must have their Memory tables created
by the user. If the user does not define all memory addresses
in a range, then Citect may try and read a block of memory
from the I/O Device that does not exist (giving a hardware
alarm). This is because Citect will ask for the whole range of
addresses between the starting address and the ending address. So, if in our previous example the I/O Device did not
have address 76, it would report back to Citect that it could
not read address 76. The I/O Driver does not know that it
doesnt need this address and will retry the command, and in
some cases will eventually put the I/O Device offline.
Confirm that you always have defined the memory addresses
that Citect will need to read.
Timeout Period
(ms)
This is the period of time that the I/O Driver will wait before
re-requesting data, if no answer comes from the I/O Device.
Maximum Retries
The number of times the I/O Driver will attempt to get data
from the I/O Device.
Combining this with Timeout gives you the total period before
Citect will put an I/O Device offline.
If the Timeout=2000 and Retry=2 then Citect will wait 2 seconds for a response, then retry, wait 2 seconds, retry, wait 2
seconds, Offline. Total time between losing communications
and deciding it is offline is now 6 seconds. You can modify
these parameters, but if you set them too low you will generate unneeded retries and possibly get I/O Device Offline messages.
This is the time in milliseconds that Citect will check the port
for data or write data to the port. If this is 0 then the protocol
is operating in Interrupt mode.
Transmit Delay
(ms)
This is the time that Citect will hold a packet of data between
receiving a response from the last request and sending the
new request. This is usually 0, however some protocols can
become saturated and start to misbehave. In these cases the
default value has been calculated while the protocol was being
tested, and modifying this value to something smaller will
cause problems. However, making it bigger will only have a
very slight impact on the overall response times in your system, but may make the communications more stable.
641
Watchtime (seconds)
This is the period of time that Citect will wait after deciding
an I/O Device is offline before trying to re-establish communications. This is typically 30 seconds. It can be made smaller
but must not be made smaller than the period that Timeout
and Retry will be - otherwise you will not be able to re-establish communications with an I/O Device.
Response Times
The time taken by the driver to process read and write requests (i.e. the time taken to process a single read or write
operation to the I/O Device). This time depends only on the
physical response time of the I/O Device, because no queue
waiting time is included. This field reflects any tuning of the
communication channel (for example increasing the baud rate
should reduce the response time).
Channel Usage
Special Variables
See Also
Kernel commands
Displaying the kernel window
Page Memory
Displays memory debugging information. This window is designed for use by Citect specialists, and requires a high degree of expertise to use.
Syntax
Page Memory
See Also
Kernel commands
Displaying the kernel window
wPage Queue
Queues are the main data structure used in CitectSCADA, and this allows the various
queues active on the system to be displayed. To view the different queues, press the page
up and page down keys.
On each page, the handle of the queue being viewed, its name, and its length is displayed.
The number of queues and entries within these depends entirely on the custom configuration of Citect32 and the individual project. Queue formats can vary but several common
formats exist.
642
Example
Queue Sleep
Handle 5 Length 49
Name
Hnd
State
Prty
Cpu
Min
Max
Avg
Count
Anm.Animate
sleep
user
0.4
0.000
0.003
0.000
1134
Tran.Task.Delay
15
sleep
user
0.0
0.000
0.000
0.000
2231
DISKDRV\WatchDog
22
sleep
user
0.0
0.000
0.000
0.000
Alarm.Heart
57
sleep
user
0.0
0.000
0.000
0.000
Alarm.ServerMoni
69
sleep
user
0.0
0.000
0.000
0.000
Report.Heart
72
sleep
user
0.0
0.000
0.000
0.000
Alarm.HardRelease
70
sleep
user
0.0
0.000
0.000
0.000
Trend.Client
55
sleep
user
0.0
0.000
0.000
0.000
95
Spl.Task
45
sleep
user
0.0
0.000
0.000
0.000
96
This is the most common queue type. Column meanings are as follows :
Mode (Name hidden): U for user-space task, and S for system tasks.
Name: The name of the task.
Hnd : The internal handle for the task.
State: The state of the task, it can be one of: Free, Curr, Ready, Sleep, Wait, Susp and Dodgy.
Prty: The priority of the item in the queue. It can be one of; Low, User and High.
CPU: Shows the percentage of CPU time used by this task.
Min: Minimum response time for the task (from statistics).
Max: Maximum response time for the task (from statistics).
Avg: Average response time.
Count: The number of times this task has been run.
See Also
Kernel commands
Displaying the kernel window
Page RDB
Displays information about each of Citects runtime databases (RDBs).
Syntax
Page RDB
Use the Page Up and Page Down keys to move between the tables.
The runtime databases contain your compiled project configuration information. There are
two types of RDB; resident and non-resident.
Resident databases are loaded at Citect startup and remain in memory. Examples of resident databases are Alarms, Trends, Reports, and Functions. The names of resident databases start with the underscore character (_).
643
Non-resident databases are those that are associated with pages. These databases are loaded (and unloaded) as required - when the page is displayed.
Each database is divided into 10 (or so) tables; <name>, TEXT, REQUEST, PIECE, CODE,
SCALE, RUN, WRITE, FUNC, SYMB, and <name>.
See Also
Kernel commands
Displaying the kernel window
Page Table
Contains information about Citects runtime data structures. This area is very extensive
and is initially a bit difficult to navigate. Currently there are about 50 tables of information
- most of which are only relevant in specific circumstances and are otherwise not useful.
Syntax
Page Table [<Name>]
Where:
<Name>
Optionally the name of the table to display.
Use Page Up and Page Down keys to navigate through the table list. Use Up Arrow and
Down Arrow keys to scroll the table data.
The MASTER_TABLE (Table 1) lists all of the tables. The following tables are particularly
useful:
Page Table Stats
This very useful table contains the cycle and execution times of every task that is running
in Citect. The Execution time is the time taken for the entire task to run. The Cycle time is
the time between when a task starts and when it starts again. The CPU is the percentage of
total available CPU that the task is using (fast tasks often have 00 CPU).
The Citect 0 entry is the display task (graphics page updates) for the main window. That is,
the total time taken for the Client to request data from the I/O Server, the I/O Server to get
the data and send it back to the Client, and the Client to update the display.
Note: Citect 0 corresponds to the display task for the main window. Citect 1 for the first
child window, Citect 2 for the third, and so on.
The CodeX entries correspond to Cicode tasks, where X is the handle of the task. You can
find out which task corresponds to which handle by viewing Cicode table.
Note: There will be a Trend Acq entry for every different trend sampling period you have
defined in your project.
Page Table Cicode
This table contains a list of all Cicode tasks currently running. It contains the task name,
handle and running state, as well as some statistics. CPU_Time is the total time that the task
has run for - it is incremented each time the task runs. The CPU is the percentage of total
available CPU that the task is using (fast tasks often have 00 CPU).
Page Table Tran
644
This table shows a list of all channels of communication between CitectSCADA components. A tran exists between exactly two separate components. A client tran initiates a connection, a server tran waits for a connection. Client and server in this context bears no
relation to the type of component that owns the tran.
There are two modes for viewing the tran table: Standard and Verbose. The Standard mode
shows information for all of the trans in a tabular format. It can be scrolled using the up/
down arrow keys, the top row indicates the currently selected tran. Extended information
for the selected tran can be viewed by toggling to Verbose mode by pressing the "v" key.
Once in Verbose mode, the tran to display can be changed using the Page Up/Page Down
keys.
In standard mode the tran table contains the following columns:
Field
Description
Name
Node
645
Field
Description
Type
This is either:
Client - indicates a client tran. This tran actively attempts to connect to a server tran.
Server - indicates a server tran. This tran passively
waits for a connection attempt from a client tran.
SerRnd - indicates a server-to-server redundant tran.
This is the connection between the primary and standby servers when a project is configured for server redundancy.
646
Field
Description
Mode
This is either:
Local
This tran connects two components which exist in the
same process. For instance, when CitectSCADA is run
in single process mode, all of the server components
run in the same process as the client. In this case, the
connections between these components would be
marked as Local.
OutPro (Out of Process)
This tran either has an established connection or is attempting to establish a connection between two components via TCP/IP. The components exist in different
processes. They may exist on the same computer or on
different computers.
OutPrD (Out of Process Dedicated)
A dedicated connection exists between the client and
each server process on a single machine when CitectSCADA is run in multi-process mode. These trans
use named pipe connections to verify that a communication path exists between all CitectSCADA components running on one computer regardless of the
projects TCP/IP configuration. Dedicated connections
do not exist between different computers.
Platfo (Platform Tran)
This tran uses the Platform networking module as the
transport layer between components. For v7.0, it is
only used to connect to the I/O Server.
Note: There are client-side Alarm Server platform
trans which will show up in the Tran Table. The serverside Alarm Server platform trans were not required or
implemented for v7.0 so these client-side trans will always remain in a state of Connecting. They can safely
be ignored.
Remote
This server tran is waiting for a connection attempt via
TCP/IP. Upon connection, this mode changes to OutPro.
hMsg
This value represents the handle to the session used by CitectSCADAs messaging layer. It is not used by Dedicated or
Platform trans for which it always remains -1.
647
Field
Description
Cnt
Send
Rec
Wait
Stack
Service
This column displays the type of the service used by the tran
(regardless of the tran mode). The valid services are Alarm,
IO, Report and Trend.
State
This is the current state of the tran. Valid states are Online,
Offline, Connecting (client trans only), Disconnecting, Listening (server trans only) and Disabled.
648
able Verbose mode). If the computer is a client, then not all of the I/O Device Information
is updated (because only the I/O Server has this information).
Syntax
Page Unit
If the Citect computer is a client, the status and error codes are only local to the computer
and do not reflect the true status of the I/O Device on the I/O Server. Be aware that all configured I/O Devices are displayed in this window, not just the I/O Devices for the particular
I/O Server. (Any remote I/O Devices do not reflect the true status of the I/O Device).
Use the Page Up and Page Down keys to scan the I/O Device list.
I/O Device Information
I/O Device
The name of the I/O Device defined in the project (with the
I/O Devices form).
I/O Server
The name of the I/O Server that is servicing this I/O Device.
Comment
I/O Device No
The I/O Device number defined in the project (with the I/O
Devices form).
PLC Number
Port Name
Protocol
Server Status
and Client Status
Primary
Indicates if the I/O Device is in primary mode; Yes = Primary, No = Standby. If the I/O Device is in primary mode, the
server starts a communication channel with the I/O Device as
soon as the server is activated. If an I/O Device is in standby
mode, the I/O Device remains inactive when the server starts
(until a primary I/O Device becomes inoperative).
649
Client Using
The name of the I/O Server that this client is using. This allows you to identify the primary and standby I/O Servers.
Generic Error
Error Handle
Driver Error
The driver-specific error code. Each driver has its own special
error codes. Refer to the driver specific errors (for the particular protocol) for an explanation of each of the error codes.
Error Message
Error Count
Restarts
The number of times the server has tried to establish a connection with the I/O Device. This number is normally 1, because the server establishes a connection at startup. If this
field displays a number greater than 1, there is a problem
with the communication channel.
Response Times
The time taken by the driver to process read and write requests (i.e. the time taken to process a single read or write
operation to the I/O Device). This time depends only on the
physical response time of the I/O Device, because no queue
waiting time is included. This field reflects any tuning of the
communication channel (for example doubling the baud rate
should half the response time). The average, minimum, and
maximum times are displayed.
Note: One I/O Device with a slow response can slow down
your entire system. For example, if you have an I/O Device
with a response of 2000 ms, any pages in your system that
use data from that device, will have a minimum update time
of 2000 ms.
Cached
Cache Timeout
Blocking Constant
Dial-up Connection
See Also
Kernel commands
Displaying the kernel window
Pause
Pauses debug output in the Kernel window.
650
Syntax
Pause
See Also
Kernel commands
Displaying the kernel window
Shell
Opens a new command (shell) window.
Syntax
Shell
You can use shell windows in a similar manner to a Main window. Shell windows are useful for displaying debugging information, or entering commands when the Main window
is displaying debug trace data. You can close the shell windows by selecting Close from the
windows system icon or with the Exit command.
See Also
Kernel commands
Displaying the kernel window
Stats
Resets all system statistics (used in the page general, page drivers, page table (stats), and
page I/O Device windows) to 0 (zero).
Syntax
Stats
This command allows you to reset the statistics after Citect has been running for a long
time, and therefore provides an indication of the statistics now (instead of an average over
the total time that Citect has been running).
Note: Some I/O Server statistics are automatically reset every few minutes.
See Also
Kernel commands
Displaying the kernel window
SysLog
Displays local SysLog.DAT file. The SysLog.DAT is read from disk before being displayed,
but is not updated once it is displayed. You must close and re-open the window to force it
to update. You can use the Page Up, Page Down, and arrow keys to move through the file,
but you cannot edit or save it.
Syntax
SysLog [Delete]
Use the optional Delete keyword to clear (purge) the contents of the SysLog.DAT file.
651
Note: This window is the same that is used to display the Citect.INI file. You can display
either the Citect.INI or Syslog.DAT in this window, but you cannot display both at the
same time.
See Also
Kernel commands
Displaying the kernel window
System tuning
CitectSCADA is designed for optimal performance, so it is not necessary for most users to
tune their system. However, special circumstances might require that you adjust your system for optimal performance. The Kernel allows you to locate areas that need tuning, and
the tuning itself is usually done through parameters. For example, you can improve performance of the client by using the [Page]ScanTime and [Alarm]ScanTime parameters.
Cache tuning
The cache should be tuned large enough so that unnecessary reads are not generated, and
small enough that old data is not returned while keeping the communication channel busy.
If the cache is too large, the communication channel might become idle for a while and so
waste its bandwidth. Also if the cache is too large, a CitectSCADA client might start to short
cycle on reads request, which will generate unnecessary network or internal traffic load.
Read short cycling occurs when a client requests data from the I/O Server, and the data is
returned from the cache, so it is returned quickly. The client will process the data (display
it on screen) then ask for the same data again. If the I/O Server again returns the same data
from the cache, the client will process the same data again which is redundant and a waste
of CPU and the network (to transmit the request and response). When short cycling starts
to occur, the CPU and network loading will rise while the PLC communication traffic will
start to fall.
To tune the cache you must balance the cache time between unnecessary reads and short
cycling. The method described below assumes you know how to use the CitectSCADA debugging Kernel.
652
Turn off all unit caching, use the CACHE command in the Kernel so you dont have to
re-compile your project.
Run one CitectSCADA client only on the network, use the Client in the I/O Server for
the test.
Display a typical page to generate normal PLC loading for your system.
In the Kernel use the STATS command to reset all the CitectSCADA statistics.
In the Kernel display the page PAGE TABLE STATS. This page shows the cycle and
execution time of various CitectSCADA tasks, some of which consume PLC data. The
tasks called Citect n where n is a number are the tasks which get data from the PLC and
display on screen. Look at the Avg Cycle time, this is the third column from the left. Assume that the Avg cycle time is 1200 ms. T his will mean that the current page is gathering all PLC data and displaying its data on the screen in 1200 ms.
You should always set the cache time below this average cycle time to minimize short
cycling. On average it should be less than half this time, i.e. 600 ms.
Set the cache time to half the cycle time (600 ms). You might not see any improvement
in performance with a single client, as caching will only improve performance with
multi clients. You might see improvements if you are also running trends, alarms or reports which are requesting the same data.
Add another CitectSCADA client that is displaying the same data. Reset the STATS and
check the Average cycle time. Each new client should not increase the cycle time, it
should drop slightly. Also look at PAGE GENERAL, to see that each new client should
service its reads from the cache; i.e., the % cache reads increases.
If the average cycle time drops to less than half the original time then short cycling is
occurring and you should decrease the cache time until this stops.
Tuning the cache is a trial and error process - as you change it, the read cycle time will
also change. The cache time will also depend on what the current PLC traffic is. The current traffic is dynamic as CitectSCADA will only read what is required depending on
the current page, trend, alarm and reports running. Always monitor the average cycle
time under lower loading conditions and set the cache as low as necessary to stop or
prevent short cycling.
653
654
656
System architecture
To display a live CitectSCADA project in an Internet browser, you must combine the content of the project pages and the current data these pages present using standard, Webbased communication protocols. To understand the communication architecture for the CitectSCADA Web Client, its easiest to consider the role each of the following components
play in achieving this outcome:
CitectSCADA Web Server - Performs the server-side functionality of the system. It operates by accepting requests from the client, and providing a response to the client when
the clients details are authenticated. It then directs a client to the graphical and functional content of a CitectSCADA project and the location of the runtime servers. This information is stored on the Web Server when a CitectSCADA project is configured as a
"deployment". A CitectSCADA Web Server can contain multiple deployments.
CitectSCADA Runtime Servers (including the I/O Server, Alarm Server, Trends Server and Reports Server) - Monitor the physical production facility and contain the live
variable tag data, alarms and trends that the Web Client will display.
Web Client - provides the platform to merge a deployed projects pages and content
with the raw data drawn from the runtime servers. Again, standard Web technologies
are required, so the client uses Microsoft Internet Explorer.
The following diagram shows how these components interact.
CitectSCADA Web Client communications architecture.
657
Once the Web Client has connected to the Runtime servers, steps 2 and 3 become an ongoing process, with the required content being called upon as the user navigates the project
pages.
The citect.ini file settings used by a Web Client are taken from the citect.ini file on the Web
Server at the time of connection.
This diagram has the system components set up on different computers purely for the sake
of explaining the communications model. In reality, the flexibility of the architecture allows
these components to be distributed in any required arrangement; they can even share a
common location.
Getting Started
The CitectSCADA Web Client Help is designed to guide you through the steps required to
successfully set up a Web Client system.
For detailed information on installing and configuring the web server, refer to the The CitectSCADA Installation and Configuration Guide which is available in a PDF format on the
Installation CD, or in the Documentation folder of your CitectSCADA installation.
To facilitate your installation, you should first familiarize yourself with the System architecture, and then work your way through the following steps, as they will logically guide
you through the correct set up procedure.
Note: In order to implement a web client solution you must first install Microsoft .NET
Framework 2.0 on the web client machine.
Decide which Web Server platform to use
Both Microsoft IIS and Apache Tomcat are supported as a platform for the CitectSCADA Web Server. Deciding which to use is an important first step towards setting up
your system.
Choosing which Web Server platform to use - IIS or Tomcat?
Preparing a CitectSCADA project for deployment
This section explains the adjustments that need to be made to a CitectSCADA project
prior to deployment on the Web Server.
658
Feature limitations
The following features are not supported:
Cicode Debugger
Remote shutdown
Fuzzy Logic
Kernel windows
Keyboard shortcuts that clash with Internet Explorers keyboard shortcuts
Web Client is unable to act as a CitectSCADA Server
Pages based on the default Menu Page template will only show buttons for pages previously visited
The Page Select button on the default Normal template only lists pages previously visited
The CSV_Include projects Update Page List menu item will not work
Note: If your project is based on the CSV_Include template, you must create a customized menu to access pages from the menu bar.
Cicode Function Limitations
Several Cicode functions are unavailable with the Web Client, or limited in their capabilities:
Cluster Functions
DebugBreak
DelayShutdown
FTP Functions
KerCmd
ProjectRestartGet
ProjectRestartSet
"
ProjectSet
"
Shutdown
"
ShutdownForm
"
SwitchConfig
TraceMsg
UserCreate
660
UserCreateForm
"
UserDelete
"
UserEditForm
"
UserPassword
"
UserPasswordForm
"
GetWinTitle
WinFree
"
WinMode
"
WinMove
"
WinPos
"
WinSize
"
WinTitle
"
WndShow
"
WndViewer
See Also
Preparing a projects user files for delivery
Note: If your project has included projects that use ActiveX objects, verify that these are
also zipped up in an Activex.zip file in the included projects directory.
The files are now ready for deployment on the Web Server.
To prepare any included ActiveX objects for deployment:
Identify all the ActiveX objects associated with the project you want to deploy.
Use a compression tool to zip these files up into a single file called ActiveX.zip.
Place ActiveX.zip in the main folder for the project. For example, in the case of the
CSV_Include project, this would be:
[User]\CSV_Include
Note: If an ActiveX object has an associated data source, verify that the data source can be
located by the computer hosting the Web Client. See the topic Managing associated data
sources under the section on ActiveX objects in the CitectSCADA User Guide Help.
See Also
Running the Web Deployment Preparation tool
Go to the Citect Explorer Tools menu and select Web Deployment Preparation (or click
the following icon on the Explorer toolbar):
A progress indicator appears. The size of the project significantly affects how long this
process takes; a large project with many files can take over ten minutes to process, depending on your hardware. (You can abort the deployment preparation if you want.)
When complete, a dialog appears stating the preparation was successful. Click OK.
The project is now ready for deployment on the Web Server. If you change a project,
you must do a fresh compile and run the Web Deployment Preparation tool again.
Note: You can run the Web Deployment Preparation tool automatically when you compile
a project. To do this, go to the Citect Project Editor Tools menu and select Options. Select
the Prepare for Web Deployment option and click OK. Be aware that this increases the
time taken for each compile, particularly for large projects.
Configuring a deployment
A deployment represents the implementation of a CitectSCADA project on the Web Server.
It incorporates the files and components required to display a project, and keeps a record
of the location of the servers where CitectSCADA Runtime data is generated.
The deployments configured on a Web Server are listed on the Web Client home page,
which is the page that appears when you initially log in. The configuration details for a deployment can be displayed by clicking the small plus (+) icon to the left of the deployment
name.
The type of action you can implement for a deployment depends on the permissions granted by your log in. For example, if you log in as a View-only Client, you can only view a deployment. If you are an administrator, you can edit deployments and create new ones.
The following list describes the functionality associated with each of the icons presented on
the home page.:
Add New Deployment - takes you to the Deployment Configuration page where you can create a new deployment (Administrator
Clients only).
Help - displays this help page on how to configure and use the Web
Client.
Edit Deployment - takes you to the Deployment Configuration
page and allows you to edit the selected deployment (Administrator
Clients only).
Delete Deployment - Deletes the selected deployment (Administrator Clients only).
Start Control Client - Displays the selected deployment with Control Client permissions (Control Client and Administrator Client only)
Start View-only Client - Displays the selected deployment with
View-only Client permissions
Additionally, the System Messages panel provides notification of events that impact the
current status of the Web Server.
662
Note: The citect.ini file settings used by a Web Client are taken from the citect.ini file on the
Web Server at the time of connection. This includes which clusters a Web Client has access
to. To switch clusters in a project viewed using a Web Client, use the functions ClusterActivate and ClusterDeactivate.
See Also
Preparing a Project for Deployment
Creating a new deployment
Deploying a project from within CitectSCADA
Displaying a deployment
Editing an existing deployment
Updating a deployment to reflect project changes
Deleting a deployment
Note: If youve upgraded your version of the Web Client, you can still view your legacy
deployments that you created using version 6.1 or earlier of the Web Client. For details,
see Web Client Upgrade Considerations.
Identify the source of the CitectSCADA projects content in the Project Path field.
If the project is located locally on the Web Server, you can use a normal path address.
The path must point directly to the project within the CitectSCADAUser directory. For
example, the location of the MyExample project would be:
[User]\MyExample
Note: If you are remotely administering the Web Server and use a local path address,
verify that the path represents the location of the project on the Web Server computer,
not the computer you are currently using.
If the project is not located on the Web Server, you need to use a UNC address that identifies the host network computer and the directory it can be found in. For example,
\\ComputerName\<path to application data>\User\MyExample
Note: You must share the directory a project resides in to allow the Web Server access
to it. Ideally, you should create a share from the directory (called WebShare, for example) and then use the following project path:
\\ComputerName\WebShare
663
Remember that if you are trying to access the project directory from a remote computer,
a "local" administrator log in will not provide you with appropriate access on a different
computer. You should use a network user profile that will be recognized by other computers on the same domain.
Determine if any of the I/O, Alarms, Reports or Trends Servers associated with the
project are protected by a firewall. If they are, you need to confirm with the firewall administrator if the CitectSCADA ports have been opened to allow direct access, or if the
firewall is using address forwarding.
If forwarding is being used, you will need to identify each server by typing the name in
the Server field, using the following format:
<ClusterName>.<ServerName>
If you have alarm properties enabled on an Alarm Server, you will need to configure an
alarm properties connector as a separate server to let the Web Server know which port
it is running on. Type the Alarm Server name in the Server field, using the following
format:
<ClusterName>.<AlarmServerName>_AlarmProps
For example:
ClusterOne.AlarmServerOne_AlarmProps
Type in the Address and Port for each server, as supplied by the firewall administrator.
Note: The Web Client will automatically add any servers that are redirected in this way
to the [AddressForwarding] section of the local citect.ini file. See Using address forwarding for more information.
You can add additional servers to the list by selecting the Add New Server icon.
Use the Client Control text box to specify the use of a particular version of the Web Client component when the deployment is displayed.
The menu lists all the different versions of the Web Client control currently installed on
the Web Server. Typically, you should choose the version of the control that matches the
version of CitectSCADA your project was compiled on.
Click Apply Changes.
This is important, as youll lose your changes if you jump straight back to the home
page.
All the project files are retrieved from the path indicated, and copied to the Web Server
ready for access by the Web Clients.
Once complete, information about the size of the project appears in the File Paths banner above the Project Path field. The number to the left indicates how many files are included in the project; the number to the right indicates the total size of the project.
The deployment is saved. When you return to the Web Client home page, by clicking the
home icon, your new deployment is listed.
See Also
Deploying a project from within CitectSCADA
Displaying a deployment
664
If you are using an Apache Tomcat Web Server, this will be:
[webserver]
DeployRoot="C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\CitectSCADA\deploy"
Note: When setting the [WebServer]DeployRoot ini parameter, the path must contain
"deploy" as the last subfolder name, otherwise the deployment will be unsuccessful. Use
a mapped drive instead of a UNC address if deploying to a network destination from a
Windows 2000 system. Do not map a drive directly to the deployment location, as the
path must finish with a "deploy" subfolder.
Adjust the [WebServer]WebClientCab parameter within the citect.ini file. This parameter represents the directory path and client component to use when a deployment
is run, in relation to the installed Client directory. For example:
[webserver]
WebClientCab=700/CitectSCADAWebClient_7_0_176.cab
665
Compile your project and then prepare it for deployment. Go to the Citect Explorer
Tools menu and select Web Deployment Preparation or select the following icon on the
Explorer toolbar.
Your project should now appear as a deployment within the Web Client home page
next time you log in.
Note: You can run the Web Deployment Preparation process automatically when you
compile a project. To do this, go to the Citect Project Editor Tools menu and choose Options. Select the Prepare for Web Deployment option and click OK. Be aware, however,
that this might increase the time required for a project to compile.
Determine if any of the I/O, Alarms, Reports or Trends Servers associated with the
project are protected by a firewall. If they are, you need to confirm with the firewall administrator if the CitectSCADA ports have been opened to allow direct access, or if the
firewall is using port forwarding.
If port forwarding is being used, you will need to log in to the Web Client as an Administrator, select the project, and then the Edit Deployment button:
If you have alarm properties enabled on an Alarm Server, you will need to configure
an alarm properties connector as a separate server to let the Web Server know which
port it is running on. Type the Alarm Server name in the Server field, using the following format:
<ClusterName>.<AlarmServerName>_AlarmProps
For example:
ClusterOne.AlarmServerOne_AlarmProps
Type in the Address and Port for each server, as supplied by the firewall administrator.
Note: The Web Client will automatically add any servers that are redirected in this way
to the [AddressForwarding] section of the local citect.ini file. See Using address forwarding for more information.
You can add additional servers to the list by selecting the Add New Server icon.
See Also
Displaying a deployment
Displaying a deployment
When you display a deployment, it downloads the required Web Client component file
from the Web Server, enabling you to run the associated CitectSCADA project in your Web
browser.
666
Note: The citect.ini file settings used by a Web Client are taken from the citect.ini file on the
Web Server at the time of connection. This includes which clusters a Web Client has access
to. To switch clusters in a project viewed using a Web Client, use the functions ClusterActivate and ClusterDeactivate.
To display a deployment:
Locate the deployment you want to display in the list of available deployments.
Click the relevant icon (Start Control Client or Start View-only Client) to display the
deployment.
The display options available to you depend on your login permissions. If you select the
View-only Client icon (the one with the gold lock), you can only read the current values for
the CitectSCADA project.
Once the required project files and components have been downloaded, the CitectSCADA
project appears. You can now navigate the project pages as required.
Note: An alert message might appear if the current user on the client machine does not
have Windows administrator rights when a new or updated component file (.cab file) is
downloaded. Verify that the current Windows user has administrator rights if a new deployment is run or an updated .cab file needs to be downloaded.
See Also
Editing an existing deployment
The Web Server retrieves a fresh set of pages and components for the CitectSCADA project,
which will include any recent changes.
667
See Also
Updating a deployment to reflect project changes
The Web Server retrieves a fresh set of pages and components for the CitectSCADA project,
which will include any recent changes.
See Also
Editing an existing deployment
Deleting a deployment
Deleting a deployment
To delete a deployment from a Web Server, you must log in as an Administrator Client.
To delete a deployment from the Web Server:
Select the deployment you want to delete from the list of available deployments.
Click Delete Deployment.
A dialog asks you to confirm that you want to delete the deployment. Click OK.
See Also
Configuring a deployment
Chinese
Japanese
Korean
You can also implement other languages by translating the resource message file that defines the text displayed. In the case of the languages listed above, this file has already been
translated with a version for each language stored in the installed locales folder.
See Also
How default languages are implemented
Using a language different to the current system locale setting
Implementing a non-default language
English
en
French
fr
German
de
Spanish
es
Simplified Chinese
zh
Japanese
ja
Korean
ko
Having found no match in "zh-cn", the script tries to load Simplified Chinese language,
"zh", as a match. The interface will automatically display in Chinese.
See Also
Using a language different to the current system locale setting
669
Decide which language you want to use and determine its associated language code.
(See How default languages are implemented for a list of the codes for the default languages supported by the Web Server).
For example, if you want to use Chinese, the code required would be zh.
Note: If the language you want to use is not one of the supported languages, you must
create and translate your own message file. See Implementing a non-default language.
Use a URL query to indicate the language you want to use for the Web Client deployment pages. For example, if the address field on your browser currently reads:
http://localhost/CitectSCADA
add a "/?lang=" query to the end of the address.
http://localhost/CitectSCADA/?lang=zh
Note: If you use a code that represents a regional variation of one of the default languages and that specific code cannot be matched, the Web Server can only implement the
available default version of the language. For example, using the language code for Chinese (PRC), "zh-cn", results in the Simplified Chinese being used, "zh".
Your Web browser now displays the Web Clients deployment configuration pages using
the appropriate language.
See Also
Implementing a non-default language
The file you open should include the language that will be easiest to translate. The language code at the start of each file name can be used to identify the language each file
represents; for example, the English language file is called enmsg.xml.
Save the file back to the locales directory, using the appropriate language code in the
name.
To name the file correctly, check the list of Windows Language Codes for the appropriate code. This will allow your translated resource file (XXmsg.xml) to be automatically
loaded when the Web Client home page is launched, provided it matches the current
system locale setting.
For example, to implement Hebrew on the Web Clients configuration pages, you
would name your file hemsg.xml. To use the Taiwanese variation of Chinese, you
would call the file zh-twmsg.xml.
Now change the file content. Firstly, set the correct encoding format.
The encoding format is defined in the top line of the file, which appears as follows:
<?xml version="1.0" encoding="iso-8859-1" ?>
If the language uses English characters, the format you would use is ANSI, which is defined as "iso-8859-1" (see example above).
If the language uses non-English characters, you would use Unicode, which is defined
as "UTF-8" (see example below).
670
Now translate the text that appears on the Web Client interface.
The content that needs to be translated is divided across two sections within the file:
"labels" and "messages". The labels section includes the content used to describe and
identify the elements of the interface; the messages section includes the notifications
that appear in the system messages panel.
To translate these sections, alter the text between the enclosing XML tags. Do not alter
the tags themselves. The XML tags define where each label is used.
Note: Make sure you maintain any "%" characters, as these are used to insert system information.
For example, the English file:
<!-- Labels -->
<span id="TITLE">CitectSCADA Web Client Deployment</span>
<span id="SYSMSG">System Messages</span>
<span id="DEP">Deployment</span>
<span id="DESC">Description</span>
<span id="ACTION">Action</span>
<!-- Messages -->
<sysmsg id="DELOK">% deleted.</sysmsg>
<sysmsg id="DELCAN">% will NOT be deleted.</sysmsg>
<sysmsg id="DEPNULL">You cant % an empty deployment.</sysmsg>
...
would appear as follows in Spanish:
<!-- Labels -->
<span id="TITLE">Despliegue del Cliente Web CitectSCADA</span>
<span id="SYSMSG">Mensajes del Sistema</span>
<span id="DEP">Despliegue</span>
<span id="DESC">Descripcin</span>
<span id="ACTION">Accin</span>
<!-- Messages -->
<sysmsg id="DELOK">% eliminado.</sysmsg>
<sysmsg id="DELCAN">% NO ser eliminado.</sysmsg>
<sysmsg id="DEPNULL">No puede % un despliegue vaco.</sysmsg>
Once you have translated the file and saved it with the appropriate name to the locales
folder, your Web Server will be able to support the language.
Note: When you save your file, make sure the text editor you used saves the file in the appropriate format depending on the language coding used, i.e. ANSI or Unicode (UTF-8) .
See step 3 above.
If youre planning on installing Web Client version 7.0 but want to view legacy (that is, preversion 7.0) deployments, before installing the new version, back up your old deployments
to a durable storage medium and place them in a secure location. Then, after installing the
new version, copy your old deployment(s) back to the deploy folder (see above), and the
legacy .cab file(s) to the corresponding folder in the client folder; this will make your old
deployments available for use.
Creating new deployments
When creating a new deployment, be aware that the .cab file you use (Client Control) for
the deployment must correspond to the correct version of the project you want to access or
the deployment will not succeed. For example, to create a deployment based on a version
6.0 CitectSCADA project, from the Client Control menu choose 600/filename.cab; to create
a deployment based on a version 7.0 CitectSCADA project, from the Client Control menu
choose 700/filename.cab.
Deploying a project from within CitectSCADA
If you are deploying a project from within CitectSCADA, edit the [webserver] section in
your citect.ini file to specify the correct cab file for the version of the Web Client youre
using. For example, for a version 7.0 deployment, specify a .cab file located in the 700 folder;
for a 6.0 version, specify the 600 folder.
In the World Wide Web Service dialog box, select the Active Server Page option.
On Windows 2003 Server, the default setting is to have all the web locations except localhost as an untrusted site. Consequently you must modify your browsers security
settings.
To update your Trusted Sites settings for Windows 2003 Server:
Choose Tools|Internet Options.
Click the Security tab and then Trusted Sites|Sites.
In Add this Web site to the zone field, add the web servers IP address as follows:
http://<ip address>
Note: Whenever Web Client pages do not load, display, or perform correctly, you should
verify your security settings even if you are not running Windows 2003 Server.
Q: When I try to start the Web Client, I get the alert message "Starting Citect Web Client
Failed: Can not initialize Citect system", and then the Web Client browser window stops
responding to my inputs. How do I correct this?
A: First check that you havent accidentally deleted the #DisplayClient folder from the installed Web Server directory, as this will cause this error. By default, this directory is located at:
C:\Program Files\Citect\CitectSCADA 7.10\WebServer\
deploy\#displayclient
If this is not the case, this is due to an incorrect MIME setting: the initialization files are not
being recognized in Windows 2003 as registered file extensions. To correct this, add the correct MIME type extension by doing the following:
Run the IIS manager and go to Web Sites|Default Web Site|Citect|deploy.
Choose Properties from the folders right-click menu.
Go to HTTP Headers|MIME types.
In the Extension field, enter ".*".
In the MIME type field, enter "all".
Restart your Web server and client.
General considerations
This section describes general considerations relating to the Web Client product.
Q. When I try to run a deployment in Internet Explorer, I get the following error: "Problems with this page might prevent it from being displayed properly...". What is the
cause?
A. When you first try to run a deployment, Citect will attempt to download the client component (the .cab file) associated with that deployment if it is not already present on the local
machine. If this download of the client component is triggered, and the currently signed in
user does not have Windows local administrative rights on the client, then this alert message occurs.
The solution is to verify that the person who runs a deployment for the first time is a Windows local administrator on the client machine. Once the components have been downloaded, any user will be able to access and run the deployment. The alert message will not
reoccur unless the .cab file is updated.
Q. I deployed a project from within CitectSCADA using the appropriate citect.ini [WebServer] parameters, but the project does not appear in the list of deployments on the
673
Web Server. A dialog informed me that the deployment was successful. What has happened?
A. This situation can occur if you make an error with the syntax for the [WebServer]DeployRoot parameter. If, for example, you use a curly bracket instead of a square bracket, (for ex-
The deployment is flagged as successful, but it cannot be located by the Web Server.
If you have deployed a project but it does not appear in the Web Servers list, check the location above for a subfolder called "Web Deploy". If such a folder exists, correct the syntax
used in your citect.ini file.
Q. I deleted a user from the list of users configured for access to the Web Server, but they
can still log in. How do I deny them access?
A. Sometimes a user can connect to the Web Server even after their user account has been
deleted. This can occur when the operating system does not immediately report the user
deletion to the web server. The period between the deletion of a user and the restriction of
access can be about a half an hour.
The solution is to deny all access to the user before deleting them. That way, they cannot
gain access. See the topic "Deleting a user account" in the Web Client section of the CitectSCADA Installation and Configuration Guide.
Q. When I try to run the Web Client component for the first time, I get a "System Settings
Change" message instructing me to restart my computer. What should I do?
A. This message appears on computers that contain old versions of some system files required by the Web Client Control. If these files are used by another application during installation, this System Settings Change message appears. Click OK to restart your machine
to allow the newer versions of the required files to be installed during system reboot. The
alert message will not reoccur unless another application reloads the old files.
Q. One of the ActiveX Objects included in my project cannot locate its associated data
source. Where is it?
A. If an ActiveX object has an associated data source, you need to verify the data source can
be located by the computer hosting the Web Client. See the topic Managing associated data
sources for details.
Q. Why does a pop-up saying "Client control (CitectSCADAWebClient_7_0_xxx.cab) is
not in the option list!" when I try to edit my deployment from the Web Client Deployment Configuration Page?
There are two possible reasons for this dialog:
You might have set the [Web Server] parameter WebClientControl incorrectly. The Web
page might not recognize the name or version of the .cab file. You should also check that
youve used a forward slash in front of the cab file name, as this is required for the Web
Server to locate the correct file.
A user might have deleted the required .cab file from C:Program Files\Citect\CitectSCADA 7.10\WebServer\client\700(or the specified location). Therefore, the Web
page cannot find it.
674
Chinese.dbf, Japan.dbf, and so on. Add these files under the main project path (for example, [User]\Example).
Note: You can have subfolders within the zip files, but your project must be configured to
use the same relative path structure.
During compilation, any zip files that contain supporting files required by a CitectSCADA
project are copied to the Webdeploy subfolder. During startup, the Web Client will check
the timestamp of any zip files to determine if the zip files have been updated; if the files
have been updated, the zip files will be downloaded.
Q. My project was created using CitectFacilities and incorporates the Citect TimeScheduler. The TimeScheduler is not working when I run the project on the Web Client.
Whats wrong?
A. If you want to run the Time Scheduler on a CitectSCADA Web Client, you must verify
that the user profile you log in with has appropriate network access to the configuration
tool, and the location of the configuration files. The user must be able to execute the configuration tool, and write to the configuration files.
Q. The Web Client Deployment Page displays incorrectly on Windows 2000 Advanced
Server. Show Server Details is missing, and the icons for Start client, Delete Deployment and Edit Deployment are also missing. What is wrong?
A. This appears to be caused by Windows Automatic Update installing several components at the same time after a fresh install of the operating system. Even though Internet
Explorer might have been upgraded to the latest version (for example, 6.0.2800.1106) it
might still behave as a version 5 browser; for example, it offers limited support for "iframes". If you call up About Internet Explorer from the Help menu, and a Version 5-style
dialog appears with a version 6 release number, then your computer is affected in this way.
A complete uninstall/reinstall of Internet Explorer will correct the problem.
Q. When I launch the web server, the login form prompts me for a user name and password. When I enter the valid local administrator user name and password the HTTP 500
Internal server error message pops up saying that the page cannot be displayed. What is
wrong?
1.
2.
3.
4.
676
A. The problem is caused by the fact that the computer was in an invalid state in the way
that it lost its trust relationship with the domain controller. Removing the computer and readding it to the domain will correct the problem. To do so perform the following steps:
Open the Computer properties dialog. (WinKey + Pause/Break).
On the Computer Name tab click Change Enable workgroup and enter any string, such as
"Test".
Click Ok and enter the credentials, Apply (no need to restart at this point) Click Change
again, Enable domain and enter "Citect.com".
Click Ok, enter the credentials, click OK to reboot.
code
af
Afrikaans
hu
Hungarian
sq
Albanian
is
Icelandic
ar-sa
id
Indonesian
ar-iq
Arabic (Iraq)
it
Italian (Standard)
ar-eg
Arabic (Egypt)
it-ch
Italian (Switzerland)
ar-ly
Arabic (Libya)
ja
Japanese
ar-dz
Arabic (Algeria)
ko
Korean
ar-ma
Arabic (Morocco)
ko
Korean (Johab)
ar-tn
Arabic (Tunisia)
lv
Latvian
ar-om
Arabic (Oman)
lt
Lithuanian
ar-ye
Arabic (Yemen)
mk
FYRO Macedonian
ar-sy
Arabic (Syria)
ms
Malaysian
ar-jo
Arabic (Jordan)
mt
Maltese
ar-lb
Arabic (Lebanon)
no
Norwegian (Bokmal)
ar-kw
Arabic (Kuwait)
no
Norwegian (Nynorsk)
ar-ae
Arabic (U.A.E.)
pl
Polish
ar-bh
Arabic (Bahrain)
pt-br
Portuguese (Brazil)
ar-qa
Arabic (Qatar)
pt
Portuguese (Portugal)
eu
Basque
rm
Rhaeto-Romanic
bg
Bulgarian
ro
Romanian
be
Belarusian
ro-mo
Romanian (Moldavia)
ca
Catalan
ru
Russian
zh-tw
Chinese (Taiwan)
sz
Sami (Lappish)
zh-cn
Chinese (PRC)
sr
Serbian (Cyrillic)
zh-hk
sr
Serbian (Latin)
zh-sg
Chinese (Singapore)
sk
Slovak
hr
Croatian
sl
Slovenian
cs
Czech
sb
Sorbian
da
Danish
es
Spanish (Traditional)
nl
Dutch (Standard)
es-mx
Spanish (Mexico)
nl-be
Dutch (Belgium)
es-gt
Spanish (Guatemala)
en
English
es-cr
en-us
es-pa
Spanish (Panama)
en-gb
es-do
en-au
English (Australian)
es-ve
Spanish (Venezuela)
en-ca
English (Canada)
es-co
Spanish (Colombia)
en-nz
es-pe
Spanish (Peru)
en-ie
English (Ireland)
es-ar
Spanish (Argentina)
en-za
es-ec
Spanish (Ecuador)
677
code
678
code
en-jm
English (Jamaica)
es-cl
Spanish (Chile)
en
English (Caribbean)
es-uy
Spanish (Uruguay)
en-bz
English (Belize)
es-bo
Spanish (Bolivia)
en-tt
English (Trinidad)
es-sv
et
Estonian
es-hn
Spanish (Honduras)
fo
Faeroese
es-ni
Spanish (Nicaragua)
fa
Farsi
es-pr
fi
Finnish
sx
Sutu
fr
French (Standard)
sv
Swedish
fr-be
French (Belgium)
sv-fi
Swedish (Finland)
fr-ca
French (Canada)
th
Thai
fr-ch
French (Switzerland)
ts
Tsonga
fr-lu
French (Luxembourg)
tn
Tswana
gd
Gaelic (Scotland)
tr
Turkish
gd-ie
Gaelic (Ireland)
uk
Ukrainian
de
German (Standard)
ur
Urdu
de-ch
German (Switzerland)
vg
Valley Girl
de-at
German (Austria)
ve
Venda
de-lu
German (Luxembourg)
vi
Vietnamese
de-li
German (Liechtenstein)
xh
Xhosa
el
Greek
ji
Yiddish
he
Hebrew
zu
Zulu
hi
Hindi
680
681
682
Description
Normal
Alarm
Disabled
Summary
Hardware
Trend
Double Trend
File
Displays a file
Admin Tools
Poptrend
Popup trend
Instanttrend
Instant trend
Popup_Small
Popup_Mid
Popup_Large
Popup_Xlarge
Description
CSV_AdminTools
CSV_Alarm
CSV_AlarmDisabled
CSV_AlarmSummary
CSV_AlarmHardware
CSV_Trend
CSV_TrendDouble
CSV_File
File page
See Also
Creating a New Project
Creating Pages
The Normal template creates a page in 1024 x 768 display format without a title bar, the default size for all pages in the CSV_Include project.
See Also
Creating Pages
Common functionality
The alarm page templates all share panels to the left of the alarms list that support the following functionality:
Acknowledge Tasks
Offers the option to:
acknowledge all alarms on the current page
acknowledge just the selected alarm
silence an audible alarm.
It is featured on the Active Alarms page and the Hardware Alarms page.
Alarm Page Tasks
Allows the user to navigate through the list of alarms a page at a time. The blue box indicates if more than one page is available to view.
Alarm List Filter Tasks
Allows the user to filter the current list based on plant area or by alarm category. To apply
a particular filter, you first configure an alarm group.
DoubleTrend:A 2 x 8-pen trend display spread across a divided screen. The preconfigured page CSV_TrendDouble is based on this template.
PopTrend: A four-pen pop-up display that can be launched from other graphics pages.
InstantTrend: A popup window for instant display of a variable tag.
Note: To implement the Instant Trend feature in one of your own projects, you must
add the CSV_InstantTrend project as an Included project. (See Including a project in the
current project.)
The Trend, Double Trend and PopTrend displays allow you to select and display trend tags
from your CitectSCADA project on a color-coded linear chart. Being based on information
coming from the CitectSCADA Trends Server, these displays are supported by stored historical data that can be recalled if required.
The Instant Trend display is unique as it allows the selection of up to four variable tags for
display. This allows you to visually monitor a tag without having to set it up within your
CitectSCADA project as a trend tag. You can even load tags directly into the display by
hovering the mouse over a tag value on a graphics page and keying in a plus sign (see the
parameter [TrendX]KeySeq).
There are limitations to this feature, however, as data is only available from the time the
display is launched and is lost when the display is closed. The Instant Trend feature has a
duration setting that limits the amount of time the display can remain open, you can adjust
the default setting for this via the parameter [TrendX]Duration.
For details on implementing instant trending, see Setting Up Instant Trending.
Common functionality
The trend display templates share common controls that support the following functionality:
Selected Trend Field
Range/Scale markers
Span markers
Set span button
Trend cursor
History mode
Zoom
Autoscale
Scale defaults
Export to file
Paste to clipboard
Plot trend
Trend group
Selected Trend Field
Displays information relating to the trend tag(s) currently being mapped in the trend chart,
including a name, the current value and the scale range.
685
The field is color coded to match the graphical display, hence the colorful nature of the listed fields.
To load a trend into a Selected Trend field, right-click the field. A menu appears allowing
you to select a trend or clear the field. Once you have loaded all your selected trends, you
can make a particular pen the focus of the graph by clicking this field. An arrow to the left
of the field indicates it is currently the focus trend.
Note that this field appears slightly different when using instant trending, as the graph will
be displaying current data for a variable tag, not a trend tag. In this case, the selection field
appears as below, with the tag name, current value, description and sample period displayed.
Range/Scale markers
These markers appear along the vertical axis and show the scale of the display for the currently selected pen, highlighting the lowest to highest values for the scale range.
Span markers
These markers appear along the horizontal axis, and show the span of the trend display in
time. The left-hand marker shows the current start time and date, the right shows the current end time and date. Typically the right-hand marker shows the current time; however,
this can be affected by zooming or displaying in Historical mode.
Trend cursor
Allows you to select a location on the graphical trend display and determine the time and
date for that particular point. The arrows to the left end of the display allow you to move
the cursor left or right. The Exit icon to the right closes the trend cursor.
686
History mode
Allows you to scroll forward or backward through a graph of a trend tags history. To
switch into History Mode, select the Display History Mode checkbox. The display changes
to lower version of the control shown to the left.
The four buttons allow you to move backwards or forwards through the trend graph, with
the two outer buttons shifting a page at a time, and the two inner buttons shifting half a
page. The clock icon allows you to edit the end time for the historical display.
Deselecting the box returns to the normal trend view.
Zoom
Zooms in on or out of the current display. Zoom in (+) increases the focus of the display and
continues zooming in on subsequent clicks. Zoom out (-) returns to the default.
Autoscale
Autoscales the current view, which means the scale adjusts to the lowest and highest values
reached.
Scale defaults
Returns the scale for the display to the default for the currently selected trend.
Export to file
Exports the data for the currently displayed trend to a file. A Save As dialog will appear,
allowing you to save the data as a D Base III file (.DBF file), a comma separated value file
(.CSV file) or a text file (.TXT).
Paste to clipboard
Sends the data for the currently displayed trend to the Windows clipboard.
687
Plot trend
Plots the trend to a printer. Use this button to print a trend graph instead of the Print Page
button. A dialog allows you to configure the printer setup.
Trend group
Allows you to load a trend group. A dialog lists the currently configured groups and allows
you to clear currently displayed variable tags. See Creating a Trends Group.
This would call up the file page, put the title "MyPageTitle" on the title bar, load the file
called File.txt from the Run directory, and allow the file to be edited (with the last argument
set to 2, the file can be saved).
The parameter [Navigation]FilePage determines the page thats used as the palette for this
process. The preconfigured page CSV_File is the default. You can change the setting for
Navigation[FilePage], however, you must verify that any page you specify for this parameter is based on the CSV_File template, otherwise CSV_Nav_File will not be able to execute
properly.
file, running the Computer Setup Wizard, creating alarm groups, trend groups, and
launching the Menu Configuration tool.
Citect Kernel: Launches the various components of the Citect Kernel, allowing the system to be debugged from within the runtime environment.
System / Hardware: I/O Device Stats launches a dialog displaying I/O Device statistics.
The Next and Previous buttons allow you to step through the I/O Devices connected to
the system, while the Search button allows you to view statistics for a particular device.
The Tag Debug tool allows you to browse a list of available tags and read the current value
for a selected tag. Depending on your access privileges, you may also be able to write a new
value to the tag.
The right-hand side of this page displays statistics about the CitectSCADA system:
System Information: Provides details of the CPU usage, memory usage and available
disk space for the current runtime machine.
Citect Information: Provides information about the CitectSCADA system including
version information and the number of trend, alarm and report clients currently connected
I/O Server: Provides information about the status of the CitectSCADA I/O Server your
system is connected to. The name of the I/O Server machine appears in the title bar of
this panel. The information displayed includes: Maximum - the overall maximum response time (ms)
Average: Overall average response time (ms).
Minimum: Overall minimum response time (ms).
Read Request: Total read requests per second.
Read Physical: Total physical read requests per second.
Write Request: Total write requests per second.
Write Physical: Total physical write requests per second.
Reset button: clears the current values and recalculates them.
Common Toolbars
Pages in the CSV_Include project include common toolbars for easy navigation and feature
access, as well as a consistent appearance.
The following three toolbars remain on screen during operation:
Navigation toolbar: Provides navigation buttons and direct access to key pages such as
the Trends page and Admin Tools page.
Alarm toolbar: Provides access to Alarms pages and displays the last three active
alarms.
Custom Menus toolbar: Provides menus capable of navigating to a specific page or calling a Cicode function. The content of the menus is generated at runtime using a lookup
table.
689
See Also
Navigation Toolbar
Alarms Toolbar
Creating Custom Menus
Navigation Toolbar
The Navigation toolbar includes buttons that allow the user to move between a projects
pages. If the current user has insufficient privilege or there is no option configured for a
particular button, it is unavailable to the user.
Icon
690
Name
Description
Back
Forward
Parent Page
Previous/Next
Home
Trends Page
Network Page
Displays a page called "Network" if one exists. By default, this page does not exist,
which means the button will not appear. To
use this button to call a function, or to launch
a page with a name other than network, adjust the parameter [Navigation]NetworkPage.
Tools
Print Page
Login
Help
See Also
Alarms Toolbar
Creating Custom Menus
Alarms Toolbar
The alarms toolbar provides access to current alarm information and navigation buttons
for single-click access to alarm pages. It also includes standard CitectSCADA prompt and
current date and time.
691
Name
Description
Last Alarms
Active Alarms
Alarms Summary
Hardware
Alarms
Disabled
Alarms
Alarm Silence
See Also
Creating Custom Menus
692
Global Privilege
Associated Function
[Privilege]EngTools
Editing users
[Privilege]EditUser
Project shutdown
[Privilege]Shutdown
Acknowledge alarms
[Privilege]AckAlarms
Disable alarms
[Privilege]DisableAlarms
When configuring a CSV_Include project, make sure your users have appropriate access to
the available functionality. Verify that your users can acknowledge alarms if required, and
that they have access to the full functionality of the Admin Tools page.
To adjust the global privileges for the elements previously listed for a more complex security architecture, adjust the [Privilege] parameters in the citect.ini file. Click the relevant
link in the previous table above for details.
See Also
Running the Computer Setup Wizard
693
694
Set the default display duration. The Instant Trend window only stays open for a set
period of time. Use the [TrendX]Duration parameter toadjust the default period of time
as appropriate.
Configure the Tag Selection dialog. You can decide whether or not to load a list of current tags into the Tag Selection dialog when using instant trending. Having no tags appear in the selection dialog might be useful if your project has many tags. See the
parameter [TrendX]TagListEnable in the Computer Setup Editor online help.
Check the key sequence used to load tags. You can load tags directly into the Instant
Trend display by putting the mouse cursor on a tag value on a graphics page and pressing the plus (+) key. However, make sure that this key sequence does not clash with other application functionality. To change the key sequence for this feature, see the
parameter[TrendX]KeySeq.
Instant trending does not support variable tags of the type LONG or REAL.
See Also
Trend Page Templates
Enable the CSV_AlarmClient event on any machine you want an audible alert sounded
from. You can enable this event from the Events Setup page of the Computer Setup Wizard. See Running the Computer Setup Wizard.
Verify that your users have appropriate privileges associated with their login to acknowledge alarms, otherwise they will not be able to silence an alarm. See Creating a
Privileged User and the parameter [Privilege]AckAlarms.
See Also
Alarm Page Templates
Creating Pages
When considering the pages required for your project, first determine if you can use any of
the predefined pages in the CSV_Include project:
Page name
Description
CSV_Trend
Default 8-pen Trend page, called from the Trend button on the Navigation toolbar.
CSV_Alarm
CSV_AlarmHardware
CSV_AlarmDisabled
CSV_AlarmSummary
CSV_AdminTools
There are also several pages that are accommodated by the Navigation toolbar that youll
need to create if required. Decide if the following pages would be useful in your project and
create them using the appropriate name:
Page name
Home
Network
Description
Called from the Home button on the Navigation toolbar.
Called from the Network button on the Navigation toolbar. Note
that this button does not display if a page called "Network" does
not exist.
The links between the pages listed and the buttons that call them are defined by the [Navigation] parameter settings within the citect.ini file. If you want a button to call a page
with a different name, adjust these parameter settings. For details see "CSV Include Parameters" in the CitectSCADA Technical Reference.
696
The CSV_Include project can add rollover buttons to pages without drawing and configuring multiple elements. You can add text to a page that has a button appear behind it whenever the cursor passes by adding the function DspButtonRollOver() to a buttons visibility
property. No arguments are required.
See Also
Adding user assistance to a page
where <PageName> is the name of the page included in your CitectSCADA project. Do not
include a space after the colon.
In the Value field, identify the associated HTML Help file and topic using the following
format:
<HelpFileName>|<HTMLPageName>
where:
<HelpFileName> is the name of the compiled HTML Help file youve created (for example MyHelpFile.chm)
<HTMLPageName> is the name of the compiled HTML page youd like displayed as
a help topic (for example Help_Topic.html).
If required, add a Comment.
Click Add.
The help button will now launch the identified HTML file with the selected topic showing.
To disable the help button for a project page
Select the project youve created in Project Explorer.
697
Go to Project Editor and select Parameters from the System menu. The Parameters dialog will appear.
In the Section Name field, type in "HelpButton".
In the Name field, identify the page you would like to disable the help button for using
the following format:
SetTopic:<PageName>
where <PageName> is the name of the page included in your CitectSCADA project. Do not
include a space after the colon.
In the Value field, type in DISABLED.
If required, add a Comment.
Click Add.
The help button on the identified page will now be unavailable during runtime.
Note: Make sure you do not duplicate this parameter for a single project page.
See Also
Using Pages and Templates
698
Menuname
Menuitem
Submenu
The Menu Names that appear are the five defaults: Pages, Trends, Alarms, File and Tools.
The fields you can expect to see associated with an item, as defined in the DBF table, are as
follows:
Action
Privilege
Disabled
Indicates if the item is currently disabled (embossed). For example, if the current login does not meet the required privilege
set for the item (see above), this field will be set to True and the
menu item will appear embossed to indicate its currently not active.
Checked
Btnwidth
See Also
Building custom menus
New Page
New Button
New Item
699
Delete Page
Delete Button
Delete Item
Copy page
Save
Editing an item
You configure a menu items functionality by using the Edit Item Menu dialog.
Use this dialog to identify the action an item will trigger, be it navigation to a specific page,
or execution a function. To launch this dialog, right-click the item to configure and choose
Edit Item from the menu.
You should fill out the fields as follows:
Action
Privilege
Disabled
Checked
Leave this set to False unless you want the item checked by
default.
Button Width
Leave this set to zero (0) as this sets the menu button to the
appropriate width. To set a specific width for the button, input
the width in pixels.
See Also
Common Toolbars
Alarm groups are configured by clicking the appropriate link on the Citect Configuration
panel to the left of the Admin Tools page. The functionality can also be added to a custom
menu for easier access.
To configure an alarm group:
Go to the Admin Tools page of a runtime project by clicking the Tools button.
Select Configure an Alarm Group from the Citect Configuration panel. The Configure
Alarm Groups dialog appears.
In the Alarm Group Description box, type the name you want to use to identify the
group.
In the Categories box, list the alarm categories configured in the CitectSCADA runtime
project that you want to use to define the group.
In the Area box, type the areas defined in the CitectSCADA project you want to use to
define the group.
Click Add.
The information to the right of the dialog indicates how many alarm groups are configured
and where you are currently positioned in this list. You can scroll through the list of configured groups by using the up and down arrows.
To change a group, locate it in the list, change it as appropriate, then click Replace.
See Also
Creating a Trends Group
701
See Also
Creating an Alarms Group
702
Glossary
1
10base2
Ethernet implementation on thin coaxial cable. Typically uses a BNC connection.
10base5
Ethernet implementation on thick coaxial cable.
10baseT
Ethernet implementation on unshielded twisted pair. Typically uses as RJ45 connection.
A
Accredited - Level 1
Drivers developed under the CiTDriversQA96 Driver Quality and Accreditation System, which ensures the
driver was designed, coded, and tested to the highest possible standards.
Accredited - Level 2
Drivers developed using the CiTDriversQA92 Driver Quality and Accreditation System.
accumulator
A facility that allows you to track incremental runtime data such as motor run hours, power consumption, and
downtime.
active alarm
An active alarm is an alarm in one of the following states: ON and unacknowledged; ON and acknowledged;
OFF and unacknowledged.
advanced alarm
Triggered when the result of a Cicode expression changes to true. Use advanced alarms only when alarm functionality cannot be obtained with the other alarm types. If you configure too many advanced alarms, your system performance can be affected.
alarm categories
You can assign each alarm to a category, and then process each category as a group. For example, for each category, you can specify the display characteristics, the action to be taken when an alarm in the category is triggered, and how data about the alarm is logged. You can also assign a priority to the category, which can be
used to order alarm displays, filter acknowledgments, and so on.
alarm display page
The alarm display page displays alarm information in the following format: Alarm Time, Tag Name, Alarm
Name, Alarm Description.
703
Glossary
B
baud rate
The number of times per second a signal changes in a communication channel. While the baud rate directly
affects the speed of data transmission, the term is often erroneously used to describe the data transfer rate. The
correct measure for the data rate is bits per second (bps).
BCD variable (I/O device)
BCD (Binary Coded Decimal) is a two-byte (16-bit) data type, allowing values from 0 to 9,999. The two bytes
are divided into four lots of four bits, with each lot of four bits representing a decimal number. For example
the binary number 0010 represents decimal 2. Thus the BCD 0010 0010 0010 0010 represents 2,222.
bottleneck
A bottleneck occurs when too many requests are being sent to a PLC communication link/data highway. It can
occur with all types of protocols, and is dependent on several factors, including the frequency of requests, the
704
Glossary
number of duplicated (and hence wasteful) requests, whether the protocol supports multiple outstanding requests, as well as other network traffic.
browse sequence
A series of graphics pages linked by a browse sequence, which is a linear navigation sequence within your
runtime system that uses Page Previous and Page Next commands.
byte variable (I/O device)
Byte is a one-byte data type, allowing values from 0 to 255. One byte consists of 8 bits. Each ASCII character is
usually represented by one byte.
C
cache (I/O device data cache)
When caching is enabled, all data read from a I/O device is stored temporarily in the memory of the I/O server.
If another request is made (from the same or another control client) for the same data within the cache time,
the I/O server returns the value in its memory, rather than read the I/O device a second time.
callback function
A function that is passed as an argument in another function. Callback functions must be user-written functions.
Cicode
Programming language designed for plant monitoring and control applications. Similar to languages such as
Pascal.
Cicode blocking function
A Cicode function that blocks, or waits, for an asynchronous event to complete before returning.
CiNet
CiNet is no longer supported. CiNet was designed as a low speed wide area network (for remote monitoring
applications). If you have a widely-distributed application where computers are separated by vast distances,
using a LAN to connect your control clients can be expensive. To connect control clients in this instance, use
Microsoft's remote access server (RAS) or a Microsoft-approved solution, such as Shiva LanRover.
citect.ini file
A text file that stores information about how each computer (servers and control clients) operates in the configuration and runtime environments. The Citect.INI file stores parameters specific to each computer and
therefore cannot be configured as part of the project.
client
A computer that accesses shared network resources provided by another computer called a server. 's clientserver based architecture is designed to distribute the processing tasks and optimize performance.
cluster
A discrete group of alarms servers, trends servers, reports servers, and I/O servers. It would usually also possess local control clients. For a plant comprising several individual sections or systems, multiple clusters can
be used, one cluster for each section.
command
A command performs a particular task or series of tasks in your runtime system. A command is built from
Cicode and can consist of just a function or a statement.
705
Glossary
communications link
A connection between computers and peripheral devices, enabling data transfer. A communications link can
be a network, a modem, or simply a cable. .
communications port
PC port used for sending and receiving serial data (also called serial or COM ports).
computer
A computer running . Other common industry terms for this computer could be node, machine or workstation.
Control Client
The interface between the runtime system and an operator. If you are using on a network, all computers (on
the network) are control clients.
custom alarm filter
Custom alarm filters provide a way to filter and display active alarms. Up to eight custom filter strings can be
assigned to a configured alarm. In conjunction with a user-defined query function, the custom filters enable
operators to identify and display active alarms of interest.
D
data acquisition board
Data acquisition boards communicate directly with field equipment (sensors, controllers, and so on). You can
install a data acquisition board in your server to directly access your field equipment.
data bits
Group of binary digits (bits) used to represent a single character of data in asynchronous transmission.
data communications equipment (DCE)
Devices that establish, maintain, and terminate a data transmission connection. Normally referred to as a modem.
data terminal equipment (DTE)
Devices acting as data source, data sink, or both.
data transfer
Transfer of information from one location to another. The speed of data transfer is measured in bits per second
(bps).
data type (I/O device)
Type of I/O device variable. I/O devices may support several data types that are used to exchange data with .
You must specify the correct data type whenever I/O device variables are defined or referenced in your system.
DB-15
Often called a `D' type connector due to the vague D shape of the casing. Has 15 pins arranged in two rows of
8 and 7 pins. While not as common as DB-9 or DB-25 they may be found on some computers and data communication equipment. Comes in both male (pins protruding) and female (pin sockets) configurations.
DB-25
Often called a `D' type connector due to the vague D shape of the casing. Has 25 pins arranged in two rows of
13 and 12 pins. This kind of connection is a part of the standard for RS-232-D and is found on many computers,
706
Glossary
modems and other data communication equipment. Comes in both male (pins protruding) and female (pin
sockets) configurations.
DB-9
Often called a `D' type connector due to the vague D shape of the casing. Has 9 pins arranged in two rows of
5 and 4 pins. This kind of connection is common and is often used as the serial (com) port in computers. Often
used in modems and other data communication equipment. Comes in both male (pins protruding) and female
(pin sockets) configurations.
deviation alarm
Triggered when the value of a variable deviates from a setpoint by a specified amount. The alarm remains active until the value of the variable falls (or rises) to the value of the deadband. .
dial-back modem
Only returns calls from remote I/O devices.
dial-in modem
Only receives calls from remote I/O devices, identifies the caller, then hangs up immediately so it can receive
other calls. then returns the call using a dial-back modem.
dial-out modem
Makes calls to remote I/O devices in response to a request; e.g., scheduled, event-based, operator request, and
so on. Also returns calls from remote I/O devices.
Digiboard
A high-speed serial board manufactured by the Digiboard Corporation.
digital alarms
Triggered by a state change in a digital variable. Use these alarms when a process has only one of two states.
You can use either the on (1) state or off (0) state (of a digital variable) to trigger the alarm.
digital variable (I/O device)
Usually associated with discrete I/O in your I/O device, a digital variable can only exist in one of two states: on
(1) or off (0). Allowed values for the digital data type are therefore 0 or 1. Discrete inputs (such as limit switches, photoelectric cells, and emergency stop buttons) and discrete outputs are stored as digital variables.
disk I/O device
A disk file that resides on the hard disk of a computer and emulates a real I/O device. The value of each variable
in the disk I/O device is stored on the computer hard disk. The disk I/O device is not connected to any field
equipment in the plant.
display period
Defines the rate at which trend data is displayed on the trend page.
distributed processing
For large applications with large amounts of data, you can distribute the data processing to reduce the load on
individual computers.
distributed servers
If your plant consists several sections or systems, you can assign a cluster to each individual section, and then
monitor all sections using one control client.Note: Don't use distributed servers to split up a single section or
process into discrete areas. A single cluster system with distributed processing would be better used here since
it would not be hampered by the maintenance overhead of a distributed server system (such as extra project
compilations, and so on).
707
Glossary
E
empty value
Indicates that the variant has not yet been initialized (assigned a value). Variants that are empty return a
VarType of 0. Variables containing zero-length strings (" ") aren't empty, nor are numeric variables having a
value of 0.
Ethernet
Widely used type of local area network based on the CSMA/CD bus access method (IEEE 802.3).
Event data displayed by time
As an alternative to viewing event trend data by event number, it is possible to see event trends across a timeline. When event trends are shown by time, the trend graph includes a start and end time and enables operators
to see both the time of a triggered event, and the elapsed period between events. This data can also be displayed on the same graph as a periodic trend.
event trend/SPC
To construct an event trend/SPC, takes a sample when a particular event is triggered (in the plant). This sample
is displayed in the window. The event must then reset and trigger again, before the next sample is taken.
Events are identified by the event number. .
expression
A statement (or group of statements) that returns a value. An expression can be a single variable, a mathematical formula, or a function.
708
Glossary
F
file server
A computer with a large data storage capacity dedicated to file storage and accessed by other client computers
via a network. On larger networks, the file server runs a special network operating system. On smaller installations, the file server may run a PC operating system supplemented by peer-to-peer networking software.
full duplex
Simultaneous two-way (in both directions) independent transmission (4 Wires).
G
generic protocol
A pseudo-protocol supported by disk I/O devices that provides a convenient way to represent disk data. The
generic protocol is not a real protocol (communicates with no physical I/O device).
Genie
If you have numerous devices of the same type (e.g., 100 centrifugal pumps), the display graphics for each will
behave in much the same way. Using Genies, you only have to configure common behavior once. The graphics
can then be saved as a Genie and pasted once for each device.
Genie controller
A Genie that references a Super Genie (using a Super Genie function). Using a Genie controller, the same Super
Genie can be used over and over for different applications.
global Cicode variable
Can be shared across all Cicode files in the system (as well as across include projects).
global client
A control client used to monitor information from several systems or sections (using clusters).
graphics bounding box
A faint (grayed) dotted rectangular box outline defining the exterior boundary region of a graphic object. Only
visible and active when the graphics object is selected and being resized. Contains sizing handles in each corner and (if sized large enough to display) one in the centre of each side.
graphics page
A drawing (or image) that appears on a workstation to provide operators with control of a plant, and display
a visual representation of conditions within the plant.
group (of objects)
allows you to group multiple objects together. Each group has a unique set of properties, which determine the
runtime behavior of the group as a whole.
709
Glossary
H
half duplex
Transmission in either direction, but not simultaneously.
histogram
A bar graph that shows frequency of occurrence versus value. Quite often the data is fitted to a distribution
such as a normal distribution. .
I
I/O Device
An item of equipment that communicates with plant-floor control or monitoring equipment (sensors, controllers, and so on). The most common I/O devices are PLCs (programmable logic controllers); however, supports
a wide range of I/O devices, including loop controllers, bar code readers, scientific analyzers, remote terminal
units (RTUs), and distributed control systems (DCS). can communicate with any I/O device that has a standard
communications channel or data highway.
I/O device address
The (logical) location of the I/O device in the system. Each I/O device must have a unique address in the system,
unless the I/O device is defined in other servers (to provide redundancy). If redundancy is used, the I/O device
must then have the same I/O device name, number, and address for each server.
I/O device variable
A unit of information used in . Variables are stored in memory registers in an I/O device. exchanges information with an I/O device by reading and writing variables. refers to I/O device variables by their register addresses. I/O devices usually support several types of variables; however, the most common are digital
variables and integer variables.
I/O server
A dedicated communications server that exchanges data between I/O devices and control clients. No data processing is performed by the I/O server (except for its local display). Data is collected and passed to the control
clients for display, or to another server for further processing. All data sent to an I/O device from any computer
is also channelled through the I/O server. If data traffic is heavy, you can use several I/O servers to balance the
load.
include file (.CII)
There is a maximum number of characters that you can type in a Command or Expression field (usually 128).
If you need to include many commands (or expressions) in a property field, you can define a separate include
file that contains commands or expressions. An include file is a separate and individual ASCII text file containing only one sequence of commands or expressions that would otherwise be too long or complicated to type
into the command or expression field within . The include file name is entered instead, and the whole file is
activated when called.
integer variable (Cicode)
A 4-byte (32-bit) data type allowing values from 2,147,483,648 to 2,147,483,647.
710
Glossary
K
keyboard command
Consist of a key sequence that an operator enters on the keyboard, and an instruction (or series of instructions)
that executes when the key sequence is entered. Keyboard commands can be assigned to an object or page, or
they can be project-wide.
knowledge base
Provides high-level technical information beyond the scope of standard technical documentation that is updated regularly and available at http://www.citect.com.
kurtosis
An index indicating the degree of peakedness of a frequency distribution (usually in relation to a normal distribution). Kurtosis < 3 indicates a thin distribution with a relatively high peak. Kurtosis > 3 indicates a distribution that is wide and flat topped.
L
language database
When a project is compiled, creates a language database (dBASE III format) consisting of two fields: native and
local. Any text marked with a language change indicator is automatically entered in the native field. You can
then open the database and enter the translated text in the local field.
link
A copy of a library item, possessing the properties of the library original. Because it is linked, the copy is updated whenever the original is changed.
local area network (LAN)
A system that connects computers to allow them to share information and hardware resources. With real-time
LAN communication, you can transfer data, messages, commands, status information, and files easily between
computers.
711
Glossary
M
maximum request length
The maximum number of data bits that can be read from the I/O device in a single request. For example, if the
maximum request length is 2048 bits, the maximum number of integers that can be read is: 2048/16 = 128.
millisecond trending
Allows you to use a trends sample period of less than one second.
mimic
A visual representation of a production system using an organised set of graphical pages. .
module Cicode variable
Specific to the file in which the variable is declared. This means that it can be used by any function in that file,
but not by functions in other files. By default, Cicode variables are defined as module, therefore prefixing is
not required (though a prefix of MODULE could be added if desired). Module variables should be declared at
the start of the file.
multi-digital alarms
Use combinations of values from three digital variables to define eight states. For each state, you specify a description (e.g., healthy or stopped), and whether or not the state triggers an alarm.
712
Glossary
N
native language
Generally the language of the project developer. Display items such as alarm descriptions, button text, keyboard/alarm logs, graphic text, Cicode strings and so on can be configured in the native language, and displayed, at runtime, in the language of the end-user (local language).
network
A group of computers and peripheral devices, connected through a communications link. Data and services
(e.g., printers, file servers, and modems) can be shared by computers on the network. A local network of PCs
is called a LAN.
network computer
A computer running that is connected to a LAN through a network adaptor card and network software. .
Network Dynamic Data Exchange (NetDDE)
Enables communication between Windows applications on separate computers connected across a common
network.
nodes
A structural anchor point for a graphic object, usually visible as a small square box superimposed over a graphic. Nodes will be located separately at the start, at the end, and at every change in direction within a graphic
object. .
normal distribution
Also known as a `bell' curve, the normal distribution is the best known and widely applicable distribution. The
distribution is symmetrical and popularly represents the laws of chance. 68.27% of the area lies between -1 sigma and +1 sigma, 95.45% between -2 sigma and+2 sigma, and 99.73% between -3 sigma and +3 sigma. The values of skewness and kurtosis are used to provide quantitative measures for normality. Assuming that at least
20 samples are used to construct a distribution, a good rule of thumb is to accept the data as a normal distribution when, -1.0 = skewness = 1.0 2 = kurtosis = 4.
null value
Indicates that a variant contains no valid data. Variants that are null return a VarType of 1. Null is not the same
as empty, which indicates that a variant has not yet been initialized. It is also not the same as a zero-length
string (" "), which is sometimes referred to as a null string. Null is not equivalent to zero or blank. A value of
null is not considered to be greater than, less than, or equivalent to any other value, including another value
of null. A boolean comparison using a null value will return false.
O
object
Basic building blocks of a graphics page. Most objects possess properties that allow them to change dynamically under user-definable runtime conditions allowing them to provide animated display of conditions within
the plant.
713
Glossary
object ID (OID)
An object ID associated with every tag in a project that uniquely identifies the tag for use by tag-based drivers,
automatically generated at compile. It is used instead of the actual address of the register (which is what most
other drivers use to read from and write to I/O devices).
object variable (Cicode)
An ActiveX control that can only be declared with local, module, or global scope.
open database connectivity (ODBC)
Allows applications to access data in database management systems using structured query language (SQL)
to access data.
P
pack
Packing a database re-indexes database records and deletes records marked for deletion. If you edit your databases externally to , you should pack the database afterwards.
page environment variable
A read-only variable associated with a particular page When you make the association, you name the variable,
and assign it a value. When the page is opened during runtime, creates the variable. Its value can then be read.
When the page is closed, the environment variable memory is freed (discarded).
parity
A communications error-checking procedure. The number of 1's must be the same (even or odd) for each group
of bits transmitted without error.
periodic trend
A trend that is sampled continuously at a specified period. You can also define a trigger (an event) to stop and
start the trend (when a specified condition occurs in the plant).
persistence cache
Cache data saved to a computer hard disk that allows an I/O server to be shut down and restarted without
having to re-dial each I/O device to get its current values. This cache consists of all the I/O device's tag values.
PLC interface board
You can sometimes install a PLC interface board in your server. A proprietary interface board is usually supplied by your PLC manufacturer, and you can connect it to a PLC or a PLC network. You can only use proprietary interface boards with the same brand of PLC.
point limit
An individual digital (or analog) variable read from an I/O device. only counts physical points (and counts
them only once, no matter how many times they are used). The point limit is the maximum number of I/O device addresses that can be read and is specified by your license. When you run the point count of your project
is checked against the point limit specified by your Hardware Key.
port(s)
Provide the communication gateway to your I/O device(s).
primary Alarms Server
The server that normally processes alarms.
714
Glossary
R
rate of change alarms
Triggered when the value of the variable changes faster than a specified rate. The alarm remains active until
the rate of change falls below the specified rate. Deadband does not apply to a rate of change alarm.
real variable (Cicode)
Real (floating point) is a 4-byte (32-bit) data type allowing values from 3.4E38 to 3.4E38. Use a real variable to
store numbers that contain a decimal place.
real variable (I/O device)
Real (floating point) is a 4-byte (32-bit) data type, allowing values from 3.4E38 to 3.4E38. Use a real variable to
store numbers that contain a decimal place.
record name
Usually the primary property of a database record, referenced in system through its name. Database record
names must be unique for each type of database record. Sometimes you can use identical names for different
record types. However, to avoid confusion, you should use a unique name for each database record in your
application.When you specify a name for a database record, the name must begin with an alphabetic character
(A-Z, a-z) and cn only include alphanumeric characters (A-Z, a-z, 0-9) and the underscore character (_). For
example, "Pressure," "Motor_10," and "SV122_Open" are all valid database record names. Each database record
name can contain up to 16 characters.Database record names are not case-sensitive, so "MOTOR_1," "Motor_1"
715
Glossary
and "motor_1" are all identical database record names. For this reason use a meaningful name for any database
record as well as the necessary naming conventions.
redundancy
A method of using the hardware in a system such that if one component in the system becomes inoperative,
control of the system is maintained, and no data is lost.
remote communications
Interaction between two computers through a modem and telephone line.
remote terminal
A terminal remote from the computer that controls it. The computer and remote terminal communicate via a
modem and telephone line.
report
A statement or account of plant-floor conditions. reports can be requested when required, on a periodic basis,
or when an event occurs.
report format file
Controls the layout and content of reports. The format file is edited using a text editor and can be in either
ASCII or RTF format.
Reports Server
Controls report processing. You can request reports at any time or when specific events occur.
reserved words
Words that cannot be used as a name for any database record or Cicode function.
RJ11
A type of IDC plug commonly used in data communications. Recognizable as the style of data plug used in
phone line and handset connectors. RJ11 is a 6/4 plug with 6 contacts but only 4 loaded.
RJ12
A type of IDC plug commonly used in data communications. Recognizable as the style of data plug used in
phone line and handset connectors. RJ12 is a 6/6 plug with 6 contacts.
RJ45
A type of IDC plug commonly used in data communications. Recognizable as the style of data plug used in
phone line and handset connectors. RJ45 is often used with 10baseT and is an 6/8 plug with 8 contacts.
RS-232
An industry standard for serial communication. The standard specifies the lines and signal characteristics that
are used to control the serial transfer of data between devices.
RS-422
An industry standard for serial communication. The standard specifies the lines and signal characteristics that
are used to control the serial transfer of data between devices. RS-422 uses balanced voltage interface circuits.
RS-485
An industry standard for serial communication. The standard specifies the lines and signal characteristics that
are used to control the serial transfer of data between devices. RS-485 uses balanced voltage interface circuits
in multi-point systems.
runtime system
The system that controls and monitors your application, process, or plant. The runtime system is sometimes
called the Man-Machine Interface (MMI), and is compiled from a project.
716
Glossary
S
scalable architecture
A system architecture that can be resized without having to modify existing system hardware or software. lets
you re-allocate tasks as more computers are added, as well as distribute the processing load.
schedule period
Determines how often the I/O server contacts a scheduled I/O device to read data from it. .
serial communication
Uses the communication port on your computer or a high speed serial board (or boards) installed inside your
computer.
server
A computer connected to an I/O device (or number of I/O devices). When is running, the server exchanges data
with the I/O device(s) and distributes information to the other control clients as required. A local area network
(LAN) computer that perform processing tasks or makes resources available to other client computers. In , client-server architecture distributes processing tasks to optimize performance.
simplex transmission
Data transmission in one direction only.
skewness
An index indicating the degree of asymmetry of a frequency distribution (usually in relation to a normal distribution). When a distribution is skewed to the left (for example), then the tail is extended on that side, and
there is more data on the left side of the graph than would be expected from a normal distribution. Positive
skew indicates the distribution's mean (and tail) is skewed to the right. Negative skew indicates the distribution's mean (and tail) is skewed to the left.
slider control
Allow an operator to change the value of an analog variable by dragging an object (or group) on the graphics
page. Sliders also move automatically to reflect the value of the variable tag.
soft PLC
A pure software (virtual) PLC created by software and existing only within the computer memory. Usually
provides a software interface for communication (READ and WRITE) operations to take place with the soft
PLC. Also known as a `virtual field unit' or `virtual I/O device'.
software protection
uses a hardware key that plugs into the printer port of your computer to protect against license infringement.
The hardware key contains the details of your user license. When you run , the point count in your project is
checked against the point limit specified in the hardware key.
standby Alarms Server
The Server that processes alarms if the primary alarms server is unavailable.
standby Reports Server
The server that processes reports if the primary reports server is unavailable.
standby Trends Server
The server that processes trends if the primary trends server is unavailable.
717
Glossary
stop bits
The number of bits that signals the end of a character in asynchronous transmission. The number is usually 1
or 2. Stop bits are required in asynchronous transmissions because the irregular time gaps between transmitted
characters makes it impossible for the server or I/O device to determine when the next character should arrive.
symbol
An object (or group of objects) stored in a library for later retrieval and use. By storing common objects in a
library, you reduce the amount of disk space required to store your project, and reduce the amount of memory
required by the run-time system.
T
task
Includes operations such as I/O processing, alarm processing, display management, and Cicode execution.
Any individual `instance' of Cicode is also a `task'.
template
A base drawing or time-saving pattern used to shape a graphics page. Each template contains base information
for the page, such as borders and common control buttons. provides templates for all common page types.
text box
When text is added to a graphics page, it is placed in a text box. A text box has a number of handles, which can
be used to manipulate the text object.
thread
Used to manage simultaneous execution of tasks in multitasking operating systems, enabling the operating
system to determine priorities and schedule CPU access.
timeout
The period of time during which a task must be completed. If the timeout period is reached before a task completes, the task is terminated.
time-stamped alarms
An alarm triggered by a state change in a digital variable. Time-stamped alarms have an associated register in
the I/O device to record the exact time when the alarm changes to active. Use time-stamped alarms when you
need to know the exact order in which alarms occur.
time-stamped analog alarms
Time stamped analog alarms work in the same way as analog alarms except that they are time stamped (with
the Alarm On and Alarm Off times) using millisecond precision from the time kept by the field device (i.e. the
RTU or PLC). The configuration details for time stamped analog alarms are exactly the same as for analog
alarms.
time-stamped digital alarms
Time stamped digital alarms work in the same way as digital alarms except that they are time stamped (with
the Alarm On and Alarm Off times) using millisecond precision from the time kept by the field device (i.e. the
RTU or PLC). The configuration details for time stamped digital alarms are exactly the same as for digital
alarms.
tool tip
A help message that displays in a pop-up window when an operator holds the mouse stationary over an object.
718
Glossary
U
UAC
User Account Control. Security technology introduced in Windows Vista to enable users to run with standard
user rights more easily. .
unsigned integer variable (I/O device)
A 2-byte (16 bit) data type, representing an integer range from 0 to 65,535. This is supported for all I/O devices
that can use INT types. This means you can define any integer variable as an unsigned integer to increase the
positive range.
V
variable type (Cicode)
The type of the variable (INT (32 bits), REAL (32 bits), STRING (256 bytes), OBJECT (32 bits)).
view-only client
A computer configured with manager-only access to the runtime system. No control of the system is possible,
but full access to data monitoring is permitted.
virtual
Behavioral identification rather than a physical one. For example, Windows 95 is a virtual desktop.
719
Glossary
W
wizard
A facility that simplifies an otherwise complex procedure by presenting the procedure as a series of simple
steps.
720
Index
A
access
disabling 408
object 405
access properties 406
access property, object 325
access table, reading data from 560
accumulators 469
configuring 469
action queries, calling 561
Active Alarms button 692
ActiveX objects 365
identifying 368
managing associated data sources 365
ActiveX.zip 661
adding, user records 130
address forwarding 618
Admin Tools page template 688
advanced alarms 439
Advanced Security Settings dialog 122
alarm display fields 451
alarm filters 418
alarm page template 684
alarm paging properties 32
Alarm Silence button 692
alarm summary fields 454
alarm tag name 249
alarms 417
advanced 439
advanced alarm properties 440
alarm category properties 421
analog 435
analog alarm properties 435
categories of 420
configured 417
creating pages for 459
custom filters 418
debugging hardware 617
delay 418
digital 424
digital alarm properties 424
display order 455
displaying variable data in 451
filters 418
formatting display 449
multi-digital 427
multi-digital alarm properties 428
pages, displaying 459
Index
B
Back button 690
backup utility 104
backups, project 102
bitmaps 317, 322
boards
proprietary 185
serial 182
breaking link to data source 266
Bring Forwards command 330
Bring to Front command 330
browse sequence
pages 296
Button Properties dialog box 353
buttons (objects) 352
C
cache
data 225
tuning 652
cache kernel command 628
calculating
array size 262
disk storage (trends) 483
callback functions 621
calling action queries 561
capability charts 490
capability, process 488
categories, alarm 420
center limit 489
changing
alarm summary display 455
languages 585
character sets 589
charts
capability 490
control 490
Cicode blocks in reports 510
cicode kernel command 629
Cicode objects 362
circles, drawing 338
Citect support 224
citect.ini, location 30
CiUSAFE dialog box 622
722
Index
D
data
appending 560
archiving 531
caching 225
displaying in alarms 451
editing, with ODBC 561
exchanging 535, 538
exporting trend 481
formatting device 525
logging in different languages 588
printing trend 481
reading data from access table 560
trending 473
using devices to read 521
Data folder, location 30
data sources, external 274
data types
DDE 538
variable tag 255
database device 527
database transactions 552
databases
external 548
language 586
date conversions 563
dates in SQL 552
dBASE database devices 519
dBASE databases 548
dBASE devices
format 526
dbf editing 564
DDE conversations 536
configuring 537
DDE services 543
DDE shares 545
DDE trusted shares 545
debug kernel command 631
debugging
compilation 604
COMx driver 217
I/O Devices 217
proprietary board drivers 222
protocol drivers 221
protocols 217
runtime system 616
server redirection 618
TCP/IP drivers 220
decimal notation 260
default cluster context 86
default languages for Web Client 669
723
Index
E
Edit Favorite Colors dialog box 310
Edit Item Menu dialog box 700
editing
project properties 94
using ODBC 561
editing menu items 700
effects, applying three-dimensional 371
elements, array 262
ellipse objects 338
engineering units 260
environment
drawing 305
graphics pages 304
environment variables 304
Super Genie 579
error messages
Index
F
FAQs
Web Client 672
FastLinx for Mitsubishi
defining variable tag names 271
reserved variable tag names 271
tag browser properties 270
FAT32 file system 122
field conversion 279
fields
alarm display 451
alarm summary 454
command 531
file names in DDE 542
G
Genies 567
and substitutions 572
and Super Genies 576
creating 568
opening 568
properties 572
saving 569
substitutions for 569
tag names 580
725
Index
using 570
Goto Object dialog box 332
gradient color 336, 339, 343
gradient direction 336, 339, 343
graphics objects, hiding 581
graphics pages
appearance 300
bitmaps 317
color definition 309
creating 291
defaults 304
defining colors for 309
environment 304
events 303
keyboard commands for 301
libraries 315
locating 291
opening 291
properties 298
saving 291
screen resolution 298
sizing 297
sliders 402
symbols 316
zooming 314
graphics, importing 323
graphs, trend 479
Grid Setup dialog box 306
grid, for alignment 306
group 139140
grouping
objects 328
registers 226
groups 140
groups (areas) 135136
groups (devices) 520
groups, object 321
guidelines (alignment) 306
Guidelines Setup dialog box 307
H
Hardware Alarms button 692
hardware alarms, debugging 617
Help button 691
help kernel command 634
hiding
graphics objects 581
objects 374
hierarchy, privilege 133
history
726
device 530
trend 482
history files 484
History mode 687
Home button 691
horizontal movement 375
hybrid projects 119
I
I/O Device constraints 239
I/O Device data, errors in 512
I/O Device properties 196
I/O Devices
debugging 217
disk devices 204
properties 196
reading from 246
remote multidrop 240
writing to 246
I/O Server redundancy 243
IFDEF macro, hiding graphics objects 582
Import dialog box 318
importing
graphics 323
variable tags 267
importing tags, simultaneous name and field
import 265
include files 106
Include project
securing 121
included projects 106
Included Projects dialog box 107
including projects 106
incompatible types error 608
incremental compilation 604
ini kernel command 634
input (keyboard commands) 400
input property (objects) 325
Insert Function dialog box 110
Insert Tag dialog box 110
Insert Trend dialog box 361
inserting variable tags 110
instant trending 695
Internet Display Client 613
Internet server 614
interpolation, trend 480
K
kernel 623
kernel commands 627
Index
cache 628
cicode 629
cls 630
debug 631
drivertrace 632
exit 633
help 634
ini 634
log 634
page driver 638
page general 635
page memory 642
page queue 642
page rdb 643
page table 648
page table cicode 648
page table csatopsi.subs 648
page table stats 648
page table tran 648
page unit 648
pause 650
shell 651
stats 651
syslog 651
kernel window 624625
keyboard commands 301, 399
L
labels 249, 515
arguments in 517
defining 518
for areas 135
language databases 586
languages
changing 585
changing at runtime 588
logging in different 588
multiple 587
Web Client 668
Last Alarms panel 692
layout, format file 276
level, fill 395
libraries 315
limitations
Cicode functions 659
functionality 659
line objects 322
linked symbols 315
linking
tags 265
templates 295
links, breaking 266
lists, displaying in an alarm 450
local language 585
locating objects 332
locking objects 328
log files, location 30
log kernel command 634
Login button 691
login records 129
LogRead field 196
LogWrite field 196
long file names (with DDE) 542
loop-back test 222
lower control limit 489
lower specification limit 490
M
macros 547
management
print 532
manipulating objects 326
manual configuration 193
menu configuration tool 698
menus 699
creating 698
methods, storage 483
Migration Tool 53
Mirror dialog box 332
mirroring objects 332
Misc.zip file 661
mode, demo 623
modems 235
movement 375
horizontal 375
of objects 326
properties 324
vertical 376
multi-digital alarms 427
multidrop remote I/O Devices 240
multi-dropping 239
multi-language projects 585
multiple
languages 587
projects 588
multiple language support for Web Client 668
non-default languages 670
multiple monitors, using 695
multi-process system
running independent servers 612
727
Index
N
native 29
native language 585
native security 139
navigation toolbar 690
nesting Super Genies 579
network DDE 543, 546
network DDE shared application 546
network DDE shares 544
Network Page button 691
network redundancy 169
network redundancy, configuring 170
networked system, restarting 620
New Project dialog box 93
New Style dialog box 296
New Time Synchronization Service 32
Next button 691
normal page template 683
NTFS file system 122
numbers (objects) 352
numeric variables 259
O
object alignment 306, 331
object properties 323
disable access 408
object types 333
ActiveX 365
buttons 352
Cicode 362
ellipse 338
free hand line 333
numbers 352
pasted symbol 363
polygons 342
rectangles 335
straight line 334
symbol sets 354
text 347
trends 359
objects 321
3D effects 371
access 405406, 408
access property 325
aligning 331
appearance 323
applying effects 371
copying/pasting 329
deleting 328
fill color 386388, 391
728
P
page driver kernel command 638
page events 303
page general kernel command 635
page memory kernel command 642
Page Properties dialog box 298
page queue kernel command 642
page rdb kernel command 643
Index
729
Index
Q
queries, parameter 562
R
range markers 686
reading from I/O Devices 246
read-only projects 122
effects on project 123
rectangle objects 335336
redundancy
disk I/O Devices 206
redundancy, alarms server 172
redundancy, file server 174
redundancy, ftp server 174
redundancy, network 169
redundancy, reports server 173
redundancy, servers 169
redundancy, Trends Server 173
registers, grouping 226
remapping
variables 227
replacing results 114
replacing text 111
report format file 510
reports 505
Cicode 510
comments in 510
communication errors 511
configuring 505
expressions and variables 510
fixed text 510
fonts 510
form feed 510
I/O Device data errors 512
OLE objects in 510
plots 510
report format file 510
running 507
suppressing 513
trend data 510
trend graphs 510
triggers for 508
reports server redundancy 173
reshaping objects 322
resizing objects 327
restarting the system 618
restoring projects 105
results
exporting 114
replacing 114
730
S
sample period 474
saving Genies 569
scale defaults 687
scale markers 686
scaling objects 324, 381, 384
scan time, page 299
schedules, specifying 245
scheduling
communications 244
screen resolution and graphics pages 298
search coverage, specifying 112
searches, troubleshooting 117
searching text 111
securing
include projects 121
top-level projects 120
security 29, 129, 139140
include projects 121
MS Office 542
read-only projects 122
runtime 126
specifying requirements for 138
top-level projects 120
using areas for 135
Send Backwards command 330
Send to Back command 330
serial boards 182
Index
T
tables, displaying, in alarms 450
tag
naming 249
tag browser
FastLinx for Mitsubishi 270
OPC Data Access Server 272
tag database, connecting to 539
tag import
FastLinx for Mitsubishi 270
Unity 271
tag name syntax 249
tag names 251
tag-based driver data validation 233
tags
exporting 272
importing 267
linking 265
names for 250251
supported alarm properties 456
syntax for names 249
unused 108
using alarm properties as 456
TCP/IP drivers
special options 185
TCP/IP drivers, debugging 220
technical support 23
templates 93
Admin Tools page 688
731
Index
trends
creating pages for 480
exporting data for 481
graphs of 479
interpolation 480
printing data 481
storage methods 483
trends group 701
Trends Page button 691
Trends Server 159
Trends Server redundancy 173
triggers
and reports 508
event 467
TrnGetTable() function 510
TrnPlot() function 510
troubleshooting communications 243
troubleshooting searches in projects 117
tuning
cache 652
system 652
U
Unity tag import 271
unlinked symbols 315
unlocking objects 328
unsupported functionality 659
unused tags 108
updating
server-client files 614
upper control limit 489
upper specification limit 490
User folder, location 30
user privileges 130, 132
user records, adding 129130
user, privileged 693
users 140
Users dialog box 130
using
external databases 548
Genies 570
serial board 182
Super Genies 572
symbols 316
V
validating tag-based driver data 233
values
argument 517
reading from DDE application 541
Index
Windows 140
Windows user security 139
Windows Vista compatibility 612
writing
to alarm properties 458
to I/O Devices 246
X
XP style buttons 353
XRS control charts 489
Z
Zoom buttons 687
zooming 314
W
Web Client 657
ActiveX.zip file 661
configuring a deployment 662
creating a deployment 663
default languages 669
deleting a deployment 668
deploying a project 665
displaying a deployment 666
editing a deployment 667
frequently asked questions 672
functionality limitations 659
getting started 658
implementing non-default langauges 670
introduction 657
Misc.zip file 661
multiple language support 668
preparing a project for deployment 659
preparing user files for delivery 661
setting up a system 658
system architecture 657
updating a deployment 668
using a different language to the locale
setting 669
Web Deployment Preparation tool 661
Web Deployment Preparation tool 661
733