Fixed Problems and Minor Enhancements

CitectSCADA 7.10r1 Release

Release Notification (Updated 26 November 2008)

This is a detailed listing of resolved problems and minor enhancements in this release. (See What's New in the CitectSCADA Online Help for details of new features for this version.)

See the Readme for information about restrictions and limitations with this release.

Bug Fix Index

Project Development Utilities
Example Project
Process Analyst
IO System
Remaining Modules

Enhancement Index

Project Development Utilities
Example Project
Process Analyst
Remaining Modules

Bug Fixes


36614 - IIS version for Web Server

The documentation stated Web Server has to be installed on IIS 5.0 or above. However the installer actually checked whether IIS 4.0 or above was installed. The Web Server requires IIS 5.0 or above. This problem has now been resolved.


41456 - Protocol specific licence fails under v7.

Protocol specific licence check fails incorrectly, with a message "This licence will only support the 'x' protocol". This issue has been resolved.

Project Development Utilities

36610 - Online help of built in functions improved

Documentation of two more Cicode functions have been added to the online help, and the mechanism for locating Cicode functions is slightly improved so that the optional spaces between function name and the bracket after the function name will not stop the Cicode editor locating the online help topic correctly.

36611 - CSV_InstantTrend project is always visible in the project list

This project will now only be visible in the project tree in Citect Explorer if the 'Show Include Project' option (View menu) is checked.

37077 - ActiveX property dialog

ActiveX property dialog now dynamically adjusts its size to ActiveX property page size. It allows displaying the entire ActiveX property page in case it is bigger then the default size.

41453 - Color picker missing from the "Edit Favorite Colors" window in Graphics Builder

For a German Citect installation, when editing "Favorite Colors" in Graphics Builder, the color picker is missing. This problem has now been resolved.

41454 - Hotkeys such as "Ctrl + G" (Goto object in Graphics Builder) do not operate correctly for German installations

Hotkeys such as "Ctrl + G" (Goto object in Graphics Builder) do not operate correctly for German installations. This problem has now been resolved.

41455 - Compile errors are produced with some Period field options in Project Editor forms

For a French Citect installation, compile errors are produced when certain Period field options are selected from the drop down list in Project Editor forms. Such forms include Trend Tags and Events. This problem has now been resolved.

Example Project

35573 - Trend Archiving Functionality removed from Example Project

Trend Archiving Functionality was a bad example of how to use Citect utilities for special purpose. Therefore Citect decided to remove this functionality completely from the Example and CSV_Example projects.

36135 - The top menu with an eastern character name is not correctly displayed

This has been fixed in the MenuBar OCX

37525 - In CSV_Example, incorrect HW alarms generated in some use cases fixed

One HW alarm was caused by a tag property which is an empty string, the other HW alarm was caused by using an obsolete INI parameter. The former is fixed by allowing empty tag property, and the later is fixed by removing the obsolete INI parameter.


35477 - The compiler was not updating format for the alarm properties when incremental compile on

This has been fixed.

39837 - Large Cicode programs could compile without an error, but when the Cicode was executed, a crash would occur.

This issue is resolved. When large Cicode fragments are detected, an error is reported by the compiler: 'Compound statement too large; refactor code' The Cicode will need to be modified so that large fragments of Cicode are avoided.

39839 - "Cannot write to read only variable" compile error with Bailey driver on v7.

Compiler support for the remapping functionality that the Bailey driver relies on was inadvertantly removed from the CitectSCADA compiler. This functionality has now been restored.

39842 - Startup error "Cannot locate include project"

Correctly configured projects, typically employing the Add Project Link feature or [CtEdit]Copy/Run, could receive this error at startup due to a fault in path reconstruction logic. This problem has now been resolved.


30087 - Timestamped Analog and Timestamped Digital Alarms were not supported in CTAPI

Timestamped Analog and Timestamped Digital Alarms did not have table entries for CTAPI. There are now two new ctFindFirst table entries TsDigAlm and TsAnaAlm for browsing these types alarms through CTAPI.

37965 - CTAPIAlarm and CTAPIAlarmLogV2 now work with long tag names

CTAPIAlarm and CTAPIAlarmLogV2 now work with tag names up to 79 characters long.

38176 - ctListRead isn't working for tag arrays.

The array support for ctListRead tags was accidentally removed in v7 when the interface was re-written to fit the new IO model. This issue has now been resolved.


28796 - Cicode Command DumpKernel for Verbose mode does not dump any information to Kernel.dat

Mode 0x4000 (verbose) only works when other bits are set or the global 0x8000 is used. For example, to dump netstat and I/O device data in verbose mode, set iMode to 0x4014 (0x0004 + 0x0010 + 0x4000). Using 0x4000 on its own will dump no data, it must be combined with another mode.

31144 - Correct the handling of Semaphores in the cicode function DspPopupMenu

DspPopupMenu opens a Semaphore and stores the handle to the Semaphore in a module variable. When a task dies due to the windows refresh, there is no mechanism to reset the Semaphore, and Citect needs to be restarted. In this correction, we use SemWait to re-claim the semaphore handle, if the task died. We close the semaphore if the task is dead; otherwise the semaphore is re-used.

35500 - New citect.ini preference added - [Code]HaltOnInvalidTagData

If the new parameter "[Code]HaltOnInvalidTagData" is set to 1, cicode execution is halted when a tag in a cicode expression, has a read or write error. By default this parameter is 0.

36441 - Compilation of DspSymAnmEx() and DspSymAnm() fixed

A typo was found in internal ID table which stops both DspSymAnmEx() and DspSymAnm() from compiling. Problem found and fixed.

36482 - WinNewAt function with mode 128 allows to open several windows.

By using the WinNewAt function with parameter "128 - Open a unique window. This mode prevents the same window from being opened more then once", or it is still possible to open the popup windows several times.

36648 - Getting the raw value using DspInfo|DspInfoField is no longer supported

To get the raw value of a tag, use the TagSubscribe function, specifying a value of "Raw" for the sScaleMode parameter. When using TagSubscribe, you can either call SubscriptionGetAttribute to obtain the value whenever required or register callback cicode function to run when the value changes.

36743 - Asswin function doesnt work properly with modes set to Unique window.

Asswin function does not work if we set the mode to 128 to open a unique window. Multiple windows are still opened and the message "Too many windows" displayed.

37291 - Calling the AlarmSumDelete function does not actually delete an alarm from the summary page

This function worked correctly in v6.10 but fails to delete alarms in v7.00. Correct operation of this function has been restored in v7.10.

37870 - InfoForm() function fixed after extending TagInfo() function

A V7 specific bug is fixed which returns an empty string when called with the "ADDR" parrameter. It is fixed by restoring the V6 code and extending the TagInfo() function which is the backend for InfoForm()

38174 - MsgOpen didn't use default cluster in some cases

Changed MsgOpen to use default cluster when it is not specified to be similar to other functions that have cluster parameter

38181 - No protection for invalid arguments to SleepMS() and inaccurate sleep times

Cicode function SleepMS() provided no protection for invalid, or negative, sleep periods. It was also possible, given precisely the right sleep time relative to the system clock, to cause a finite lock in the internal sleep mechanism. This could result in cicode threads waking after their intended time. These problems have now been resolved.

38186 - The StrUpper and StrLower Cicode functions do not convert Norwegian characters

Certain Cicode functions were not correctly handling locale-specific data correctly. This issue has been resolved.

38190 - AlarmComment() function does not work in v7.

The AlarmComment CiCode function was broken in v7, resulting in comments not being saved. This has now been fixed.

38191 - SubscriptionGetAttribute always returns engineering values, regardless of scalemode set.

The function SubscriptionGetAttribute with the sAttribute parameter set to "Value" always retrieves the engineering value, regardless of what was specified in the sScaleMode parameter passed to TagSubscribe.

38772 - Hundreds of calls to DspFont() can result in a Citect crash

A large number of calls to cicode function DspFont(), typically in the hundreds, can result in a Citect crash. This problem has now been resolved.

38774 - The DumpKernel() Cicode function is missing some lines from the page general kernel window

When the DumpKernel() Cicode function is invoked and general statistics is specified, the outputted general statistics have lines missing at the bottom when compared with the page general statistics in the kernel. This problem is now resolved.

38781 - MsgBrdcst() cicode function does not support clustering.

The MsgBrdcst function was not updated to support clustering in v7. This function has now been modified to accept an optional 4th parameter for cluster name. If no cluster is specified, MsgBrdcst will lookup the currently active cluster as per the logic for MsgOpen.

38782 - Calling WinNewAt() with no cluster specified results in incorrect behaviour with mode 128 "Open a unique window"

This mode prevents this window from being opened more then once", it incorrectly allows further windows of that type to be opened. This problem has now been resolved.

38785 - AlarmSumDelete Cicode does not delete an alarm from summary page as expected.

When the user invokes the AlarmSumDelete Cicode function to delete an alarm from an alarm summary page it is not removed as expected. This problem is now resolved.

39838 - MailSend() with attachments failing with MAPI error 12

This issue has been resolved.

41117 - PageInfo() with a type of 14 shows incorrectly in a web client

The Cicode function PageInfo(int) with argument 14 used in the web client can return incorrect values when either of the following two scenarios are satisfied. 1. When launching the web client window and not yet having manually resized it. 2. Manually resizing the base window so that scroll bars appear. This has been resolved.

Process Analyst

25929 - Analogue pen scale defaults to -55 to 55 in the process analyst

Adding an analogue pen to the process analyst via the graphics builder causes that pens scale to default to -55 to 55 when the process analyst is run. The expected default scale for an analogue pen is the eng zero to eng full values. This issue has now been resolved.

36723 - Manage the Load/Save/CopyTo dialog boxes according to the user's privilege

1. If the user's privilege is not high enough, the context menu for the Load/Save/CopyTo dialog boxes is disabled. 2. Modify the CopyTo dialog box to allow only *.xls and *.txt suffix


36952 - Alarm sounds reset after all the alarms are acknowledged

When alarms comes on, the sound of the highest priority alarm will start. As soon as an alarm is acknowledged, or the user pushes the mute button, no more sounds will be heard until all the alarms are acknowledged. Once all the alarms are acknowledged, and another alarm turns on, an alarm sound will be heard again.

38075 - Citect runtime crashes on shutdown if Citect.ini parameter [alarm]summaryshutdownmode=1 is set

If the citect.ini parameter [alarm]summaryshutdownmode = 1 has been set, the alarm server was crashing on shutdown.

38175 - Alarms server hanging on startup.

During startup of a project with a space in its name, the alarm server stops responding, with the Runtime manager displaying the message "Initializing Alarm System". This has now been fixed.

38177 - Disabled alarms do not persist after a restart.

After restarting an alarm server, disabled alarms become reenabled. This was because the alarm server was not retaining a list of disabled alarms, nor was it retrieving them from the redundant server. Citect has confirmed this to be a problem in CitectSCADA versions 5.41 to 6.10. A Cicode workaround was available for versions 5.42 and 5.42A (KB Q4041) but this did not work in subsequent versions. This problem has been fixed.

38185 - Alarm acknowledgements are lost on restart

Restarting the alarm and IO servers results in analog and advanced alarms being retriggered. This issue has been resolved.

38189 - Logging device delayed/buffered when writing to a DBF file.

When logging using a DBF file, data is not flushed to the file correctly. This issue has been resolved.

38773 - CSV_AlarmSummary Page does not display the full History of Alarms processed.

When a user views the CSV_AlarmSummary page only a maximum of 17 pages of alarm history is viewable when there should be more. This problem is now resolved.

38777 - Using the AlarmSetInfo() Cicode function to sort two pages of alarms by state then by priority causes incorrect results

When the user sorts a list of alarms that spans across two pages via the AlarmSetInfo Cicode function, using the sort keys state and priority the sorting of the alarms is incorrect. This problem is now resolved.

38783 - Using the AlarmSetInfo Cicode function to filter by Category does not filter correctly.

When the user configures the AlarmSetInfo Cicode function to filter by category the incorrect alarms are displayed. This problem is now resolved.

39843 - Alarm server memory leak on primary alarm server when standby alarm server is restarted.

When the alarm sever defined as standby is shutdown and restarted the alarm process on the primary increases its memory usage considerably. This has now been resolved.

41440 - View only client can acknowledge and disable alarms

By using the record ID based alarm functions such as AlarmAckRec you can acknowledge and disable alarms from a view only client.


38173 - Trend server crash when servicing interpolated event trend sample requests from the Process Analyst

When using the Process Analyst to display interpolated event trend samples, the trend server may crash. This problem has now been resolved.

IO System

38778 - Tag Subscription initially returns stale cache value with Quality set to Good.

On a Tag Subcribe a new subscription is created with a Tag Value Quality corresponding to the cached value from a previous subscription of the tag. Thus any client is initially given the stale cache value with Quality set to Good. This has now been fixed.

39840 - INT variable is evaluated in a cicode expression as having a value of 0 when device is offline

Variables read by Cicode functions start as zero. Once read they retain the last value. If the io device goes off line, they see the last value. A change of behaviour introduced in v7 meant that when Tag quality changed from Good to Bad it's value was cleared. This has been corrected to behave as earlier citect versions do.

39915 - Displayed values fail to go to #COM when an IO device with background polling enabled is disabled

Tags on IO devices with backround polling enabled are not going to #COM on the display clients graphics page when the device is disabled using the IODeviceControl cicode function.

37812 - Displayed value does not revert to original value on failed write to an array tag

If you attempt to write a value to an array tag but the write fails, the tag value displayed on the page does not revert back to the original value until you navigate off and back to that page.

38784 - Local variable Tag Quality is never set to Good.

Local variable Tag Quality is never set to Good. This affects the display of all tag on a page with a local variable Tag. This has now been fixed.

38786 - The Quality of tags on IODevices which are running in Memory mode are never set to Good.

The Quality of tags on IODevices which are running in Memory mode are never set to Good. This affects the display of all tags on any page with a tag from a memory IODevice. This has now been fixed.

40004 - Some displayed values do not go to #COM when an IO device goes offline

When an IO Device becomes offline due to a communication failure between the IOServer and the device, only some of the tags on the display clients graphics page are going to #COM.

Remaining Modules

38883 - CiText.Textbox's Print Dialog fails to cancel printing when the Cancel Button is chosen.

Cancelling from the CiText.Textbox Print Dialog has now be corrected. It will no longer continue to Print the contents of the CiText.Textbox when you choose the Cancel Button.

41349 - Pop-up page not being recognized as a Child of the Parent Window.

When a pop-up page is opened for the first time, it fails to set whether it should be a Child of the Parent Window or not. For example using either the WinNewAt() or AssWin() CiCode functions with their Mode Parameters set to 1 (Page Child Window), a second call was not closing the first Window. This has now been corrected.

22645 - If '-i' is used to specify a custom INI location, some parameters may not be read correctly

Certain INI parameters will only be read correctly if the INI file is in the %systemroot% directory, and named 'citect.ini'. Affected parameters include but are not limited to: [IPC] and [CTAPI]EventLogging. Affected drivers include BURRB, DATATAKR, ICN, MEWTOCOL, PYMAX, SINEC, SNP, UNITL and YOK_UXLS. This problem has now been resolved.

36655 - Messages written to a log device on a input command on a super genie may be truncated after any super genie substitution

Log messages that include a tag substitution for super genies that are not associated with array tags were being truncated if there was any text after the tag name. For example, "?1? is ok" was being logged as just "?1?".

38137 - Run / Copy Issue - Message "Failed to load the alarm save file"

This problem can occur on the PC being copied to, on the 2nd run up of the system. The problem was related to cluster name handling. This issue has been resolved.

38188 - ActiveX objects in templates don't work when Fast Runtime Display is disabled.

Disabling Fast Runtime Display using INI setting [ANIMATOR]FastRuntimeDisplay=0 causes ActiveX objects (including Process Analyst and menubar) embedded in templates to stop working. This issue has been resolved.

41108 - The IO Server may crash when one or more IO Devices goes offline

When one or more IO Devices go offline while they are servicing read and write requests for tags, the IO server was crashing some of the time. This crash could occur regardless of if the device was going offline due to the use of the IODeviceControl cicode function, or whether there was a loss of communication to the device.

37046 - The cluster name should be specified when using the kernel to connect to a server in a multi-cluster system

In multi-cluster systems when connecting to a server, the following syntax needs to be specified: <clustername>.<server> E.g. to connect to the alarm server on Cluster1, use: cicode Cluster1.Alarm

37237 - Citect.INI AnsiToOem parameter requires further documentation

The documentation has been ammended, including the following information. The project must be compiled and run with the same setting of the [CtEdit] ANSIToOEM parameter, otherwise string conversions and logins that rely on ANSI to OEM conversions will not work. For example, you cannot compile with the value of 0 and then run with a value of 1.

37911 - Incorrect translation of "Cluster" into French.

There has been some places where "Cluster" was translated to "Grappe". These have been reverted back to "Cluster" now.

38180 - Heavy network traffic on display client

IO devices being offline results in heavy network traffic between display client and IOServer. This issue has now been resolved.

39346 - Security vulnerability when on citect port 20222.

An intentionally malformed packet can cause a buffer overrun when directed at Citects port 20222. This vulnerability has been secured. Users are reminded to run Citect as intended on a secure isolated network.

37221 - Citect.INI [Debug]menu =0 does not disable the kernel menu item in the runtime manager.

Now the [Debug]menu enables and disables kernel menu item in the runtime manager menu.

37715 - Forced type conversion for super genie parameters when the type is specified

If a super genie parameter has specific type, a type conversion operation is added by the compiler to the code so that pre v7 projects that have string values associated would work without change. Also the default value would be an empty string, when there is no association.

38179 - CitectSCADA Display Client will not run if the path specified in the [CtEdit]Copy parameter is unavailable.

If the [CtEdit]Copy directory or any other needed Copy project directories are not available at start-up CitectSCADA will halt. This problem is now resolved.

38183 - Memory leak on #COM of an incorrect tag of a connected and correctly behaving PLC.

When attempting to communicate with a PLC using an incorrectly configured tag a memory leak could result. This issue has been resolved.

38775 - Using string tags on pages or in Cicode leads to a memory leak

A change in the way string tags are handled in v7 caused a substantial memory leak when they are used in Cicode expressions (including page display). This issue has now been resolved.

38780 - CitectSCADA Display Client will not run if the path specified in the [CtEdit]Copy parameter is unavailable.

If the [CtEdit]Copy directory or any other needed Copy project directories are not available at start-up CitectSCADA will halt. This problem is now resolved.

38794 - Cicode AssChainWin function operates incorrectly after maximum number of windows first reached.

A number of CiCode functions, including AssChainWin(), create and use a pending Genie association with the next Window opened. If the window limit is reached this association is never completed and is erroneously used with the next successful window open. This issue has been resolved.

40579 - TagInfo does not support online changes

A new cicode function has been added, TagRDBReload, that reloads the information presented by TagInfo. Also the compiler message indicating that TagInfo is deprecated has been removed.

40598 - Memory leak when executing certain cicode in a pop-up window

Certain (mostly arithmetic) operations will leak memory when called with incompatible types - this will trigger a corresponding type mismatch error



28427 - Running CitectSCADA as a standard user

Prior to v7.10, the design and runtime environments were required to be run under a Windows account that had administrator access to the local machine. In v7.10, on all supported operating systems, the design and runtime environments can be run under a standard user account (i.e. one without administrator access).

36672 - Add shortcut to online help

After installation there was no shortcut to Citect online help. This problem has now been resolved.

Project Development Utilities

37492 - Computer Setup Editor - Usability improved

1. The default option of 'Show undocumented parameters' has changed to "Yes", so new users can get help easier. 2. Internal data structure supporting variable named sections like [Report.ClusterName.ServerName] is improved so new entries are generated in the correct section of the Citect.INI file.

38050 - Computer Setup Wizard - Dialog improved

The text "milliseconds" has been added to the General Options Setup dialogue for "Page scan time" to showing the actual UNIT of the value in the edit box.

37107 - Adding more information to string overflow error in Graphics Builder

Extra information about project, page and AN number has been added for string overflow error in Graphics builder.

Example Project

39343 - Hot key F1 in CSV_Example shows is now page sensitive

In 7.10 when running the CSV_Example project, press F1 will show the online help for the project, either a context sensitive (or say page specific) help page (if the current has a help page linked to it) or the main help page if the current page does not have its own help.


35519 - AssInfo() new type 19 added

AssInfo type 19 returns associated tag full name even when the tag is not resolved Also AssGetProperty new property "AssFullName" returns the same thing Type 18 for AssInfo and "FullName" for AssGetProperty would return empty string if tag is not resolved

35528 - Citect Server Shutdown function

Added cicode function which allows user to remotely shutdown Citect servers. See function ServerRestart in citect help.

37616 - New cicode function - AlmSummaryLast

The AlmSummaryLast function places the data browse cursor at the most recent summary record from the last cluster of the available browsing cluster list. This is a replacement for AlarmSumLast cicode function that was deprecated in CitectSCADA V7.0

Process Analyst

30926 - A new "Inherit Security Settings" checkbox in Process Analyst Properties

The "Inherit Security Settings" checkbox (enabled in design time only) defines how to apply the security settings when the new PAV is loaded. If "Inherit Security Settings" is checked the system use the security settings from the design time. Otherwise, the security settings are overwrited each time the new PAV is loaded.

35207 - Span changes on an unbound pen in the Process Analyst clears the display

When using pens in the Process Analyst not bound to a tag, the sample added via the AddSample method would automatically be cleared on scale changes. This behaviour can now be controlled via the ClearOnResolutionChange property.


26566 - New hardware alarm and syslog

When there is a timeout of loading data from the primary Alarms Server, there is now a message "Timeout from RND alarm server" in both hardware alarm and syslog to indicate the fail.

Remaining Modules

35269 - Runtime manager provides feedback when exception reports are generated

If a full-user dump is selected via the Minidump registry setting, this may take 5 minute or more to write to disk. During this time, there was no user feedback to explain what the system is doing. The Runtime Manager now changes the state of a process to 'Exception' whilst an exception report is being generated and a balloon tip appears to indicate when the report has been completed.

38795 - New modes in WinNewAt(), additional INI parameters, and new function WinStyle() for scrollbar removal

To provide support for scrollbar removal and to be able to disable scrolling, new modes are available in WinNewAt(). Global settings for these options can be applied through citect.ini parameters [Page]Allow[H|V]Scroll[Bar], and can be changed after window creation through cicode function WinStyle(). Consult Citect Help for more information.

34153 - Enhancement: "trendqueues" data added to cicode dumpkernel()

A table is created for storing the property infomation from the "trendqueues", so generic table functions can be used with, and it is automatically included as just a new entry of the master-table in all places where master-table is used. For example, "trendqueues" is now part of the kernel dump inside the "tables" section.