PowerSCADA Expert 8.2 - Release Notes


PowerSCADA Expert 8.2 Release Notes are followed by:

Vijeo Citect 2016 Release Notes



These release notes include a "New in This Release" section, followed by a detailed listing of resolved problems and minor enhancements in this release.



New in This Release

MasterPact MTZ Support: PowerSCADA now supports the the Micrologic X trip unit for the new Future Ready™ MasterPact MTZ Circuit Breaker.

PowerSCADA Studio: PowerSCADA Studio, a new project development tool, comes with a brand new user interface that is intuitive and easy to use. The new interface combines the Citect Explorer and the Project Editor and allows you access to projects, topology, system model information (such as equipment, variable tags, and alarms), and other configuration areas. You can launch PowerSCADA studio from the Start menu (Start > All Programs > Schneider Electric > PowerSCADA Expert 8.2 > PowerSCADA Studio.

Project Setup Tool: The Project Setup Tool offers a rapid deployment option for creating a project. Using this nine-page tool, you will walk through the process of defining a system, adding servers and users, setting up graphics page menus, configuring multi-monitor functionality, and adding device profiles and devices. See the PowerSCADA Expert help file for a detailed description of this tool. The Project Setup Tool is found in the Config files (Start > All Programs > Schneider Electric > PowerSCADA Expert 8.2 > Config Tools > Project Setup). The tool can also be found and launched from the new PowerSCADA Studio.

I/O Device Manager: Use the updated I/O Device Manager to add or remove a single I/O device, or to import multiple devices using a CSV file. Access the I/O Device Manager from three places: the Project Setup Tool, PowerSCADA Studio (Topology > I/O Device Manager), or the Config Tools (Start > All Programs > Schneider Electric > PowerSCADA Expert 8.2 > Config Tools).

System Development Guide: This is a procedural guide for efficiently deploying a PowerSCADA project. The steps in this guide represent the recommended deployment steps. This manual has been revised for PowerSCADA Expert 8.2. Among other changes, this new version offers the option of creating a project in the Project Setup Tool. This guide is available both as HTML5 help and as a PDF.

I/O Device Settings screen: A new feature in I/O Device Settings allows you to edit I/O device parameters and receive validation feedback for out-of-range parameter values (such as the "Timeout" parameter). You access this screen from the Application Configuration Utility.

PowerSCADA with Advanced Reports and Dashboards ETL: The ETL now includes a new source and quantity mapping grid in the user interface for increased usability and automatic mappings. Also added in this release is the Intervalize Data Transform task for transforming the sampling period of PowerSCADA trends prior to loading the data into Power Monitoring Expert.

Windows 10 and Windows Server 2016 Support


Bug Fixes

This is a detailed listing of resolved problems and minor enhancements in this release. (See the PowerSCADA Expert online help for details of all features in this version.)


Enhancement - PowerSCADA EcoStruxure Web Server (EWS) for StruxureWare Building Operation (SBO)

Added support for cookies to avoid repeated authentication transactions between PowerSCADA EWS and SBO. Communications between EWS and SBO will be reduced improving performance.

Enhancement - MICROLOGIC device drivers

Expanded the Cradle Rack Position datapoint to better support the Micrologic with IFE/IFM. Micrologic driver has two additional ini parameters to configure for IFE versus IFM support and for performance gain. See the device driver help for details.

TFS 123456 - Floating License Manger update to 1.9.10.0.

This addresses a vulnerability in the licensing brick of Power Monitoring Expert, Power Manager, and PowerSCADA Expert. This vulnerability could allow a remote, unauthenticated attacker to potentially execute arbitrary code on the server. This is the same hotfix and vulnerability that was publicly addressed and announced in December 2016 by Schneider Electric for previous versions of Power Monitoring Expert, Power Manager, and PowerSCADA Expert.

TFS 19656 - NetworkTagsDevice in the starter project is DiskXML. This should be changed to IEC61850N memory mode.

All devices in the starter projects are now IEC61850N memory mode devices.

TFS 19655 - One Line Configuration Utility does not display all supported projects.

The One Line Configuration Utility now iterates all projects and displays projects with supported include projects. This bug prevented include projects from being shown even if those projects contained supported One Line genies.

TFS 19907 - I/O Device Manager wizard and CSV tool does not allow a user to specify Unit (I/O Device) Number ranges.

UnitNumberRange.xml may be added to the project to force unit numbering in a specific range. This allows the user to limit the range of device ID numbers used by the I/O Device Manager when adding devices to a project. In this way the user can create multiple include projects whose devices' Number properties do not conflict.

TFS 19909 - I/O Device Manager CSV tool may save the 'profile name' incorrectly in the equip.dbf, 'Type' field.

I/O Device Manager CSV tool now properly saves the profile name correctly in the equip.dbf.




Fixes and Minor Enhancements

Citect SCADA 2016 Release Notes

Release Notification (Updated 16 November 2016)

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

Bug Fix Index

ADO

Alarms

Authentication / Security

Backup/Restore

Cicode

Compiler

CTAPI

Diagnostics

Display System

General

IO System

Licensing

Localisation

OPC Connector

Process Analyst

Project Development Utilities

Runtime Issues

Tag Browsing

Time Scheduler

Trends

Web Client

Remaining Modules

Enhancement Index

Localisation


Bug Fixes

ADO

64417 - Incorrect height used for column separators in SQL Table library controls

The initial height used for column separators in SQL Table library controls was incorrect. The separators were initialized with a shorter-than-expected height before it was gradually adjusted to the expected height over time. Column separators are now initialized with the expected height.

Alarms

62950 - Timestamped digital alarm logging returning unexpected result (Related references 59399, 64019)

There was an issue in timestamped digital alarms on Process Analyst where the alarm stayed ON and ACK even after the OFF event occurred. To fix this issue, new functionality has been added to add an "Off, Ack" event immediately following the "On, Ack" event. After the fix, CitectSCADA now processes correctly the OFF and ACK events so the Process Analyst chart is drawn properly.

63687 - CTAPI SOEQuery missing records in query result

A CTAPI SOEQuery was missing records in the query result when the amount of SOE records in a single cluster was more than 5K. SOEQuery has now been fixed to return the correct number of records.

63713 - Alarm server shutdown unsuccessful when running Extended Memory mode

In some cases, the alarm server would not shutdown successfully when running in Extended Memory mode. This was due to the alarm server not handling case insensitivity of domain user names correctly. This issue has been resolved.

63783 - Alarm server unable to operate with multiple users logged in

The alarm server would shutdown unexpectedly when multiple users were logged in with the same user name but using different case, for example, "Admin" and "admin". This was due to case sensitive comparison of CitectUser. This issue has now been fixed.

63836 - Client unable to display alarm properties data after restarting alarm server (Related references 62816)

The alarm properties on a page displayed #BAD after the alarm server was restarted, and remained #BAD until the display client was restarted. This only occurred when multiple clusters were defined in project with unique alarm tags without cluster prefix. If an alarm tag is referenced on a page without cluster prefix, the system will automatically associate the cluster name to the tag reference such that it can be resolved correctly. During a session connect/disconnect event, the tag references need to be re-established with the associating cluster. Tag references now correctly identify the cluster that had a state transition.

63844 - Unsuccessful alarm server shutdown

During shutdown of the Alarm server, there may have been pending client commands with the alarm server via Cicode. These commands were not handled correctly during shutdown and caused unsuccessful alarm server shutdown. The system now detects a shutdown of the alarm server and properly handles the in-process alarm commands.

63906 - SOE and Alarm Summary displaying incorrect Windows user name

In some cases, actions performed by a user were logged under "System" in the SOE and Alarm Summary instead of their Windows user name. The way a system looks up a user object ID has been modified.

63909 - Cicode expression in alarm description impacted by alarm server restart

If an alarm's description field contained a Cicode expression, it may have reverted to "not evaluated" status if the alarm server was restarted. This has now been resolved by recovering the description field from database when the alarm server is restarted, in the same way as other properties.

63911 - Advanced alarm properties not persisted with [Alarm]UseConfigLimits=0

With [Alarm]UseConfigLimits=0, setting advanced alarm properties such as Delay at runtime would not be persisted when the alarm server was restarted. This has now been fixed.

63965 - CTAPI SOEQuery only returns records within the last 24 hours

A CTAPI SOEQuery only returned records within the previous 24 hours when TIMEDATE filtering was not provided. SOEQuery has now been adjusted to handle this case and return more data than previous 24 hours.

63966 - AlarmSetInfo does not result in correct alarm display

In version 2015, an alarm view window no longer supported dynamic switching of alarm types between summary and non-summary alarms views (e.g. SOE and Active Alarms) through alarm filter updates. The alarm view window is now recreated each time a switch to a different alarm type occurs.

63970 - Login as Windows user ignores the locale setting

The locale argument was being ignored when a login as a Windows user occurred. The supplied locale ID is now used instead of the default ID.

64002 - SOE comments display the alarm server IP address instead of the user IP address

SOE Comments displayed the alarm server IP address instead of the user IP address in UserLocation field when a user added an event to the SOE page. The client machine address is now displayed in the UserLocation field of the SOE Comment.

64115 - AlarmEnable not working on alarm pages of type 4 (all configured alarms) (Related references 62003)

Calling AlarmEnable on alarm lists showing "all configured alarms" returned error code 274. This has now been fixed.

64121 - Alarm server process shutdown unsuccessful(Related references 63292)

During shutdown, the client infrastructure is torn down before the server infrastructure. Thus, alarm processing (including advanced alarms) continues beyond where AlarmCount can be called. This may cause a shut down to be unsuccessful. This has been resolved by AlarmCount functions returning -1 (an error notification) if shutdown has already commenced.

64128 - Multiple digital time stamp alarms triggered simultaneously display previous time stamp (Related references 61993)

If multiple digital time stamped alarms were triggered simultaneously, the previous time stamp would display. In this case, the customer has subscribed to the timer tags other than just via the alarm tags. The additional subscription meant that the I/O server was reading the timer tags from the device and had a good value for a previous (old) timer value ready to go then the alarm was triggered and the alarm system subscribed to the timer tag. In addition to this, the customer did not have much delay (if any) between setting the timer register in the device and setting the alarm trigger register in the device. The mechanism of getting data from the device cause the alarm trigger register to be read before the timer register. If the device had a delay of at least one polltime between setting the timer register and setting the alarm trigger register, this situation would not have have happened. However, there was no such delay. With this precise scenario, and within very tight timing constraints (<100 ms), it was possible that the alarm would be triggered and the timer value used would be the previous timer value. This was fixed by changing the task that gets the timer value to be executed one alarm scan time (500ms by default) later and increasing the poll rate for the subscription of the timer value. This means the appropriate timer value is used for processing the alarm.

64131 - CitectSCADA user with no privileges is not able to view system events on SOE page(Related references 63641)

There was some inconsistency with Sequence Of Events visibility for guest users and configured users with no privileges. This is now resolved by adjusting the internal query.

64184 - 'Show On Active' is filtering the behavior of alarm Cicode functions

The Alarm Category flag 'Show On Active' was erroneously filtering the behaviour of the alarm Cicode function AlarmQueryFirstRec and related functions. 'Show On Active' no longer has any effect on AlarmQueryFirstRec.

64252 - Some SOE items incorrectly reference an alarm server

Such events now use "ClusterName_ServerName" when referencing alarm servers.

64269 - Applying a filter via AlarmSetInfo returns invalid argument

An invalid argument error was returned when associating a filter with an alarm list via the Cicode function AlarmSetInfo. This occurred if it was immediately proceeded by a call of AlarmSetInfo that changed the alarm type displayed in an alarm list. For example, "AlarmSetInfo(hAn,3,n)" followed by "AlarmSetInfo(hAn,12,'xxx')". The scenario is now handled correctly.

64275 - 64-bit alarm server shutdowns unexpectedly when calling ServerBrowseOpen()

An alarm server running as a 64-bit process would shut down unexpectedly when the ServerBrowseOpen() Cicode function was called. The ServerBrowseOpen() function has been extended to work on 64-bit processes.

64328 - String tag references in Cicode expressions displayed as #BAD

String tags referenced in Cicode expressions for alarm and trend tags would lead to the tag being displayed as #BAD. String tags are now supported in alarm and trend Cicode expressions.

64331 - AlarmServer ceased operating - many categories selected

An internal SQL SELECT statement was prepared with too many nested parentheses (as many as 1000 deep) when the customer's project contained a large number (2000+) of categories. This caused an internal component to cease operation.
The code was changed to remove unnecessarily deep nested parentheses.

64369 - A message displays incorrectly when the alarm server is started

When an alarm server was started, the message "failed to get in-process user session" would sometimes appear in the tracelog. This message no longer displays if not required.

64377 - Device status change affects alarm server performance

When a large number of alarm counts are in use concurrently, device status change would slow down alarm server performance so that the alarm updates would get delayed. The alarm count subsystem has now been optimized to consume less process resources to reduce the delay and provides a new equipment-based alarm count Cicode function for better filtering performance.

64391 - Batched alarm events are not added to the alarm event queue

Batched alarm events were not being correctly added to AlarmEventQue. Batched alarms are now handled in a way that allows them to be added to the alarm event queue.

64423 - Alarm server not processing an alarm filter that includes 'Paging'

The alarm server would shut down unexpectedly when processing an alarm filter that contained the alarm property 'Paging'. The expected type of the property has been changed from string to bool.

64426 - Shutting down an Alarm Server while it is starting up may result in tasks not being able to complete.

The Alarm Server was not managing it's startup tasks correctly, so if a shutdown was initiated before startup was complete, the alarm server may have prematurely ceased operations, whilst the Alarm Database was still in use causing it to be shutdown.

64475 - Static alarm description would not reload from RDB

When alarm server was restarted/reloaded, if the alarm description in the RDB was static (potentially has been modified by user), it would not reload. If this is the case, it will now be loaded from RDB and overwrite the old value.

64517 - [AlarmLog]NumFiles does not work reliably in a multi-cluster environment

In a multi-cluster project, when [AlarmLog]NumFiles was set to enable logging, logged results were dominated by the cluster which made the first connection to the log file in shared mode. Then all other alarm entries from different clusters were replaced by alarms from the cluster. The alarm data from each alarm server is now logged into separate log files prefixed with their corresponding cluster names.

64577 - User Location in Logged on event is not accurate in some scenarios

User Location in Logged on event in SOE page was wrong in some scenarios. Now it is always the IP address of the machine from where the user logged on.

64598 - Display delayed for pages containing 500 or more AlarmCount calls

A delay would occur if a pages contained 500 (or more) AlarmCount function calls. Optimisations have been implemented in the AlarmCount and AlarmCountEquipment Cicode functions to reduce delays when displaying pages with more than 500 calls to these functions.

64605 - Complex filtering affects alarm server performance

The alarm server would sometimes shutdown unexpectedly if too many alarm filter conditions were selected. Now. if a requested filter is too complex (for example, it contains too many conditions or too many nested brackets), the filter is cleared (no filter is used). The hardware alarm "Too many alarms in filters" is generated on the client components, and a tracelog error message is logged.

64653 - Second alarm server may not start when dual network cards have been configured

When configuring a redundant pair of alarm servers with dual-network cards, the first server would start successfully. However, the second server would not start. This was due to restrictions around specific connections needing to come from specific network cards. This rule has been relaxed to allow the connection to come from either configured network card, which allows the second server to now start.

64663 - 'Show On Active' is filtering the behaviour of AlarmAck Cicode function

The Alarm Category flag 'Show On Active' was filtering the behaviour of the Cicode function AlarmAck modes 2 and 3. 'Show On Active' no longer has any effect on AlarmAck mode 2 and 3. The filter for alarm acknowledgement was changed from active alarms to all configured alarms.

64677 - User name is lost for acknowledged alarm summary alarms

If an alarm was acknowledged while still active, and subsequently became inactive, the user would be reported as "System" in the alarm summary, rather than the user who had acknowledged the alarm. This correct username is now displayed.

64678 - Alarm Summary information incorrect if alarms transition too quickly

If alarm transitions happened quickly (less than every 1 second), the alarm summary information would potentially become incorrect. Each time an alarm is ON or OFF, two events would be generated. The issue was caused by using the incorrect event. The event with the correct timestamp is now used.

64729 - Acknowledging, enabling, disabling or adding a comment scrolls an alarms list to the top

Acknowledging, enabling, disabling or adding a comment to an alarm on an alarm list (which is not a summary of events) using the Tab Style include project would cause the alarm list to refresh and scroll to the top. The alarm list will no longer do this. In addition, when the above action was performed with the INI parameter [Alarm]SummaryAutoRefreshMode set to 0, the alarm list would be refreshed. The list will no longer be refreshed.

64758 - Cannot display alarms from an alarm server configured with dual network address

If an alarm server is configured with two network addresses, and the network cable corresponding to the first network address is unplugged, when the alarm server is started, display clients would not show alarms from the alarm server. A hardware alarm will occur stating that the database is not connected. This issue has been resolved by confirming the internal connection to the database is made through both configured network addresses.

64779 - Active alarms are not displayed if they can't be found in the alarm database

On a particular customer site, the alarm database for a redundant pair of alarm servers occasionally gets into a state whereby a few alarms can no longer be found in the database. When this occurred, these alarms were not being shown in the active alarm list when their alarm condition is on. Changes have been made so that these alarms will now be displayed regardless of if they can be found in the alarm database.

64818 - Cicode function AlarmComment does not work when called multiple times

The Cicode function AlarmComment returned error message 537 when called multiple times. This Cicode function now operates as expected.

64819 - The kernel watchdog doesn't work on an alarm server running in extended memory mode

Setting the citect.ini parameter [Kernel]Watchdog=1 enables the kernel watchdog. If a CitectSCADA runtime process hangs when this parameter has been set, the process should be terminated and a dump should be captured. This was not occurring if an alarm server in extended memory mode was hanging.

64820 - Each user login\logout results in four corresponding events in the Sequence of Events

A history of user login and logout operations can be seen in events that are added to the Sequence of Events view in the alarm system. Each login and logout was propagated across all servers in each cluster, and this was resulting in multiple events in the Sequence of Events view per operation. We now track the location of the login and reference count so only one event is logged for each login and logout in the Sequence of Events.

64836 - Alarm Servers process may stop operating before shutdown is complete

A timing related issue could occur, whereby an alarm server process could cease operating before completing the shutdown process. This has been resolved.

64868 - Alarm Server may stop during startup

A component in the alarm server was not adequately shielded for multi-threaded access, so it was possible for one thread to access this component while another was modifying it, which could lead to the Alarm Server ceasing operations. This has been resolved by adding protection to the component.

64869 - Alarm server does not start if a user called "Guest" is defined

The alarm server may not start successfully if a project contains a user called "guest", and [Alarm]DBLogServerCore=1024 has been specified in the Citect.ini. Guest is a reserved word; users should not use this name. The documentation has been updated to explain this and the compiler has now been updated to generate an error message if a user is created with this name.

64885 - Standby alarm server may experience 100% CPU usage after installing SP1 Patch 8

Following the installation of 7.50 SP1 Patch 8, the users table sometimes became filled with duplicate entries for the default server user if Cicode was performing alarm property operations from a server node. This could lead to 100% CPU usage. The way users are added has been corrected.

Authentication / Security

64114 - Privilege on menu configuration does not take effect (Related references 63028)

Execution of the menu command for a menu configuration was not restricted for a logged on user who did not have the required privileges. To solve this, the behavior of the MenuNodeRunCommand() Cicode function was changed.

Backup/Restore

62609 - Backup directory parameter not working due to Run folder access

The alarm server would place the 'system.*.xml' file into the [RUN] folder. If this folder was not accessible, it was expected that all CitectSCADA process to function properly if [CtEdit]Backup was configured. The alarm server now puts the dynamically created 'system.*.xml' file into the [Data] folder so that it can solely depend on the backup folder.

Cicode

59935 - The LoginForm Cicode function caused a client to stop working

Under some circumstances, after a successful login using the LoginForm Cicode function from a popup, the created form would not be cleaned up correctly. The form will now close without disrupting the operation of the client.

63693 - Unable to attach Cicode debugger to x64 alarm process

Attaching Cicode debugger to x64 alarm process caused an unexpected system shutdown. This was due to the truncation of 64-bit pointer values to 32-bit values. This has now been fixed.

63748 - Constant association and page values may be lost after login

Constant associations created using Ass function, and page values created using PageSetInt/PageSetStr could be lost if login was attempted by a different user. The first instance was caused by the incorrect behavior of Ass function when the page was reopened, and the second instance happened because string and integer values of a page were not saved when reopening the page. This has now been fixed.

63772 - Enabling CodeTrace stopped operation

Enabling CodeTrace caused stopping operation when a built-in function returned a long string (max length 255 characters) due to CodeTrace not having a suitably sized buffer for formatting. Now a larger buffer is allocated for formatting the CodeTrace output.

63998 - Tool tip in Genie Scrollbar_Vert in Library_Controls is not updated correctly (Related references 63170)

Tool tip in the Scrollbar_Vert from Library Controls was not updated with the correct position. It appears the tool tip was one step behind the actual position movement. The position is now updated correctly.

64066 - TrnSelect Cicode function does not use cluster context

In multi-cluster project, the TrnSelect Cicode function would not use the cluster context specified and TrnSetPen would not work. Now, when no cluster is set in the trend control on a graphic page and code is used to set pens at runtime, then the cluster name defined in TrnSelect() will be the name of the default cluster for the trend control.

64113 - Error notification returned when reading a line from a file (Related references 63140)

While using some file operations, reading a line from a file with some corruption was not possible. An internal buffer with appropriate size has been implemented to support this case.

64117 - FormOpenFile function does not open to the default path (Related references 63690)

When the FormOpenFile function is called, the specified default path is only used the first time. Subsequent calls use the most recently used path. To address this, the function has been modified to include an additional boolean parameter: FormOpenFile(sTitle, sFileName, sFilter [, bResetToDefault = FALSE])

64120 - StrToPeriod Cicode function does not work if value is greater than 32767(Related references 63445)

Seconds were being cast to a SHORT, which is not a valid cast if only seconds are specified. This resulted in an overflow. This has been resolved by storing seconds in a LONG.

64201 - Using Shutdown function with mode 6 does not remotely restart client

When calling the Shutdown() function with mode 6, the specified remote destination process shut down without restarting as expected. To fix this, the correct runtime message type is now used so only targeted processes on the destination will restart.

64209 - Cicode functions return an error message when successful

The Cicode functions TabAlarm_Row_Disable, TabAlarm_Row_Enable, TabAlarm_Row_Ack were returning an error message following successful operation. The local variable "retValue" is now updated when called by these functions.

64270 - DisplayRuntimeManager() does not display Runtime Manager and can launch another client

Calling the Cicode function DisplayRuntimeManager() when running CitectSCADA v7.50 as a service would not bring Runtime Manager to the front and would launch another client. Runtime Manager is now brought to the front without launching another instance of the client when this function is called.

64337 - SXW_Style templates caused random Cicode hardware alarms

Hardware alarms such as "Name does not exist" and "Divide by zero" randomly occurred while a project was running, even though no hardware cause was detected. The SXW_Style templates have been updated so the hardware alarms will not occur any more.

64395 - Modeless forms close when navigating to a different page

Modeless forms that are launched off a page such as the TagDebug form will no longer close when navigating to another page.

64404 - Date Cicode function generates hardware alarm

Invoking the Cicode function Date(INT) with format 11 no longer results in a hardware alarm and returns the expected time string.

64416 - Reading a local variable array results in a hardware error message

In v7.50, reading a local variable array in a multi-cluster project resulted in the Cicode general hardware error message "Tag not found <tag>". This occurred when using array notation after an array name (for example, "MyLocVarArry[2]"). In v7.50 Service Pack 1, this occured for single-cluster projects. This no longer occurs in single or multi-cluster projects.

64427 - PageInfo() returned incorrect page context

Calling DevOpen() or DevControl() before PageInfo() within the same Cicode function block could sometimes make PageInfo() use the wrong page context. DevOpen() and DevControl() have been modified and are now responsible for restoring the original page context.

64471 - "_LibControl_StrReplace" shuts down calling function

The calling process would shut down if the "_LibControl_StrReplace" string was exactly the maximum size (255 characters). "_LibControl_StrReplace" can now be used for maximum length strings.

64478 - AssGetProperty would return incorrect tag name information

AssGetProperty would return tag name information for tags that did not exist. In the event of page reloads, all tag associations are now updated, allowing functions like AssGetProperty to get correct tag information.

64498 - FileReadBlock function returns one less character than required (Related references 64219)

Cicode FileReadBlock function returns one less character than required. The function has been modified to handle the correct number of characters.

64536 - Cicode function FileReadLn does not detect an overflow condition

The Cicode function FileReadLn would not return 275 (overflow) if the line has more than 255 characters. The detection of the various conditions that occur when the limit of the output buffer is reached has now changed.

64644 - Hardware alarms occur when displaying a trend page

"Trend pen not found" and "Data not ready" hardware alarms were occurring due to improved error checking in the trend system. The trend information Cicode functions have now been changed so the correct errors are still set and accessible by calling IsError(). However, errors in these functions will not result in hardware alarms.

64733 - LocalLanguage parameter does not work when using CSV_Include project

The default language setting specified by [LANGUAGE]LocalLanguage does work properly when using a CSV_Include project because the CSV_User_Login Cicode function is hardcoded to use "English(United States)" as the default language. This hardcoded default setting now been removed.

64784 - BACNET driver v2.x converts "11:00:00.000;0" to "11:00:00,000;0"

When writing "(11:00:00.000;0)" to a BACnet schedule tag using TagWrite, "(11:00:00,000;0)" was being output to the device, which is invalid. The '.' (decimal point) was changed to ',' (decimal comma). TagWrite attempts to get the details of the destination tag (i.e., the tag's type), but if not found the function assumed a value type rather than a string type. In a system with multiple clusters, and no cluster name provided in TagWrite( ), the system could not identify the correct tag. Passing the cluster name to TagWrite( ) will resolve this. The program has been changed to search tags in all clusters if a cluster has not been specified.

64792 - ServerIsOnline requires the cluster specified even on a single cluster system

When ServerIsOnline was called with bLocal set to 1, it would only be successful if the cluster was specified. In a single cluster system this function should just use that cluster internally if not specified, so that the cluster argument is not required in single cluster systems.

64861 - TagInfo("", 0) returns random characters

Calling Cicode function TagInfo("", 0) would return random characters. An empty string is now returned.

Compiler

63956 - Reports will not compile after upgrading to Version 2015

After upgrading to version 2015, some reports would not compile. The message given was 'END expected'. This occurred when the last line of the auto-generated Cicode began with a call to DevClose. Some optimizations were introduced in 2015 to handle large reports. The associated code has now been modified so that reports compile successfully.

64013 - Upper limit of [CtEdit]MaxCicodeFunctions needs to be increased (Related references 63620)

There was a limit of 10000 Cicode functions for a top
level project. This is controlled by [CtEdit]MaxCicodeFunctions parameter. The maximum allowable value of [CtEdit]MaxCicodeFunctions has been increased to 32767.

64125 - Compile unsuccessful due to IFDEF Macro quotation marks (Related references 63425)

The IFDEF macro would not support string arguments properly, requiring twice as many quotation marks as expected. The compiler now strips all sets of quotes, and then puts one set back.

64129 - [CtEdit]CompileUnsuccessfulCommand and [CtEdit]CompileSuccessfulCommand limited to 255 characters (Related references 63953)

The compiler did not run [CtEdit]CompileUnsuccessfulCommand and [CtEdit]CompileSuccessfulCommand parameters after compiling a project (regardless of the result) if the given command was longer than 255 characters. The CitectSCADA compiler now accepts commands of up to 1023 characters.

64488 - Compiler may not open param.dbf when compiling reports

The compiler was generating "File does not exist" or "Out of file handles" error messages when it compiled reports in which some report format files had path expansion in their names (for example, "[Run]:"). The compiler now closes file handles after reading param.dbf.

64526 - String arguments not supported by IFDEF macro

The IFDEF macro would not support string arguments correctly. If there were quotation marks in the argument expression, the compilation error message "Close quotation mark expected" would occur. The macro now handles quotation marks correctly.

64546 - Tag names ending with common strings will not compile

A compile error message was generated when multiple tag names had a common string for the last 63 characters. When Tag Item is not specified for tags (such as alarms, variables, trends and accumulators), the compiler will use the tag name instead. Because Tag Item has a length limit of 63 characters, only the last 63 characters are used when tag name exceeds 63 characters. This behavior has been changed to only apply to alarm tags.

64620 - No IFDEFHRESALM function available

Previously no IFDEFHRESALM function was available for HRES alarms like there is for other alarm types (eg IFDEFDIGALM). This function is now available.

64803 - Using the IFDEF macro to place logical operators in Cicode causes compile error messages

The IFDEF macro could be used to check the existence of a variable tag, and then optionally add a logical operator to the Cicode in its place (such as the NOT operator). This usage was broken by a bug fix in 2015 SP1, resulting in compilation error messages. The bug fix has been rolled back to resolve this issue.

64866 - Compiler message "out of handles" is generated despite [CTEDIT]DbFiles=510

On systems with a large number of included projects, it was possible for the compiler to generate an "out of handles" message, even if the Citect.ini parameter [CTEDIT]DbFiles had been set to its maximum value of 510. To resolve this, the compiler infrastructure has been improved such that [CTEDIT]DbFiles has a new maximum of 32767, and a new default of 1024.

CTAPI

64615 - Storage method for trends cannot be queried through CTAPI

The storage method of the trend was not obtainable in query through CTAPI. A new field STORMETHOD has now been added in the Trend table so that the storage method can be queried through CTAPI.

Diagnostics

62861 - Kernel window position sometimes is out of viewable area

On shutdown, the Kernel window position stored in the Citect.ini parameter [Kernel]WindowPosition would occasionally contain invalid co-ordinates, particularly in the case where the kernel window was minimized. This would make the Kernel window position is out of viewable area. Now after the fix, the Kernel will no longer save the window co-ordinates in this case.

64194 - Missing info (truncated lines) in Kernel when debugging drivers

Customers can now select brief driver trace details by setting the parameter [IOServer]DebugVerboseMode=0. Also, when the syslog file is displayed in the Kernel, it is truncated at 255 characters wide. The width of the window also impacts how many characters are displayed.

Display System

63991 - Page animation causes unexpected shutdown

SCADA could potentially shutdown randomly due to an unprotected Win32 API call. This situation is now guarded against.

64014 - Using ServerInfo function causes high CPU usage (Related references 63562)

Setting the Cicode function ServerInfo("Client",0) resulted in expensive tasks that attempted to resolve network names internally, which caused high CPU usage. This behavior is resolved now by caching the data.

64118 - Intermittent shut down on startup (Related references 63461, 61770)

Use of page metadata Cicode functions in startup Cicode may result in an unexpected shutdown. This has now been fixed by applying additional checks on relevant functions.

General

63661 � Citect Explorer stops working following an unsuccessful license check during startup

In some cases, Citect Explorer would stop working if a license check was unsuccessful during startup of the configuration environment. When Project Editor and Graphics Builder are launched, they look for "Development License" by using common protection library. The protection library goes through the protection providers (for example, the SentinelProvider) to check the license. Since there is no such Development License, the default license is returned in the end and the flag indicating if it is a valid Development License is 'true'. Development License checking has been removed from the code as it is legacy and not required anymore.

63691 - 64-bit alarm server raises exception when running the Cicode MsgOpen with an invalid value

A 64-bit alarm server would raise an exception when running Cicode. This occurred when MsgOpen was given a value of 0 for the 'fn' argument, which indicated that there was no message callback function. An empty string is now placed on the stack for this argument instead of a long with a value of 0, no exception will be raised in this case.

63717 - Files included in CustFiles.zip are not extracted at runtime

If files were deleted that were supposed to be extracted from CustFiles.zip, the files would not get extracted on a client at runtime. This was due to a change in behavior in [CtEdit]Copy and [CtEdit]Run for an earlier bug fix. The behavior now is as follows: if [CtEdit]Copy is not specified, CustFiles.zip will unzip at client process startup; if [CtEdit]Copy is specified, the behavior is the same as it currently is; if [CtEdit]Copy is specified and its value is equal to [CtEdit]Run, then custFiles.zip is not uncompressed at client process startup. This is because the timestamps are the same.

63789 - Dynamic associations not updating window titles

Dynamic associations used to define a window title were not working correctly following the implementation of partial associations for Super Genies. This was resolved through changes to GenieAssToStr() function. The dynamic association for the window title is considered a string. This has now been fixed.

63877 - Menu items not appearing on "lib_controls" tree Genie(Related references 63584)

Menu items on the 'lib_controls' Tree Genie were randomly displayed as a blank line upon page entry. This persisted until the user clicked on the tree to force it to refresh. This was due to the Cicode task that renders the tree node cancelling the rendering prematurely if another tree reload was requested. This has now been fixed.

63905 - Process Analyst graphics resources causing client shutdown

If Process Analyst graphics resources were constructed but not initialized, they would not be properly destructed and cause client shutdown. This has now been modified to delete objects in the owner's destructor if they have not been initialized.

64160 - Tag browsing component causes I/O server shutdown

The TagBrowsing component has been updated so the I/O server will no longer shutdown unexpectedly.

64255 - Trying to display a non-existent page can open the wrong page

Trying to display a non-existent page can incorrectly open a page with a name that has the same eight leading characters as the non-existent page. Under default settings for the parameter [Genaral]LongFilename=1, a long file name is now used for every page file. The page display Cicode functions will only try to open a page using its entire name.

64256 - Calling DspAnNew() on system services stops CitectSCADA running as a service

Calling DspAnNew() and some other display Cicode functions on client process with display disabled could cause an unexpected system shut down. For example, this may occur with system services with the parameter [Client]DisableDisplay=1. These functions now close gracefully when display is disabled.

64302 - Compiler generates error messages due to nested include projects

The parameters system in the compiler was not allowing for a large amount of nested projects within included projects. The allowed amount of nesting has been increased so that the parameters system will now allow a project to compile successfully.

64311 - Unexpected shut down when calling Visual Basic functions

When calling Visual Basic functions from a 32 bit CitectSCADA process with argument types of string, int, long or real, there was the potential for CitectSCADA to shut down unexpectedly. Extra memory is now allocated for Visual Basic function arguments.

64320 - Alarm server shuts down when complex alarm filter is used

The alarm server was shutting down unexpectedly due to a complex alarm filter being used. This was corrected by using use range test instead of a blocked group, which reduced usage on the alarm server.

64358 - Menu tree in SxW_Style_Include template does not respond to scrolling

The menu tree on pages created in SxW_Style_Include template did not respond to scrolling. Library control initialization no longer retries endlessly if a non-exist or empty function is specified in the library gene setting.

64425 - Key codes related to mouse right button not working

Key codes related to mouse right button were not working. If the nKeyCode is a mouse key code, a check on the mouse position is now made to confirm it is within the bounds of the focused object.

64448 - Events not working in single process mode

When running the combination of single process mode with either an OPC Server or EWS Server, events did not execute correctly. These server types now interpret single process mode correctly.

64492 - Tool tips may not be visible in the first page after startup(Related references 63863)

Tool tips may not be visible when the startup page is shown for the first time until it can find focus. This issue has been fixed.

64494 - Popup window may off screen a little bit when mode 256 is used in WinNewAt(Related references 64223)

When Aero themes are used in Windows and WinNewAt is called with mode 256, the popup window is sometimes slightly off screen. The popup window will now display correctly.

64505 - Only the first 512 characters displayed for [Client]Clusters

Although the [Client]Clusters parameter can hold 1024 characters in the INI file, only the first 512 were actually read from the file. This could be observed via the tooltip in Computer Setup Editor, the logging in params.dat, the default tick boxes in the cluster page of Computer Setup Wizard, and also by the number of clusters that are actually connected. The 1024 characters are not truncated anymore.

64511 - Values flickering between #COM and #BAD

Values were flickering between #COM and #BAD when the server password was incorrect. A fix has been implemented so that #COM now displays consistently.

64523 - Startup function not executing properly

Sometimes startup functions would not execute because they were started before other required subsystems were initialized. A wait (for up to 5 sec) is now used before running startup Cicode.

64551 - Citect.ini limitation when running as a service

When running CitectSCADA as a service, there was no way to specify the use of an alternate Citect.ini file. Command line arguments are provided to services by specifying them as start parameters in the services console. However, this change does not persist, so it is a once only operation. To persist command line arguments for a service, you can either use the SC Config command line tool to set the BinPath of a service to contain the arguments, or you can directly modify the ImagePath field for the service under HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services in the registry to contain the arguments. CitectSCADA now supports this modification to the "CitectSCADA Runtime Manager" service, and it can be used to specify the path to an alternate Citect.ini file to be used through the /I command line argument.

64576 - Device open for a SQL_DEV log device was causing load on the SQL server and network.

For logging devices of type SQL_DEV, a device open was retrieving the data for the entire table even though only the table header information was needed. This results in unnecessary load on the SQL server and network. A data read is now only performed when the ini setting [Device] SQLSelect = 1.

64657 - Cannot change the trend span time greater than 255 hours

When using the Include Trend template, it was not possible to change the trend span time to greater than 255:00:00 as it rolled over to 1:00:00. This was due to the Cicode function UsrStrToPeriod truncating the Hours and Minutes part to 8 bit (0-255) in some scenarios. This limitation has been removed.

64661 - Calling the Shutdown() Cicode function with mode 2 only restarts the client process

Since CitectSCADA 2015 SP1 Patch 1, calling the Shutdown() Cicode function with mode 2 only restarts the client process instead of all processes. This regression was caused by the fix for Bug 64201, and has now been addressed.

64705 - Hardware alarm is raised when applying filter to the tag drop-down list in TagDebugForm

A "Data browse session EOF" hardware alarm was raised when applying filter to the tag drop-down list in TagDebugForm. The way the tag drop down list is populated has now been fixed.

64707 - CitectSCADA may stop operating when the Cicode function AlmTagsOpen is called multiple times

It was possible for two different calls to the AlmTagsOpen Cicode function to use the same instance identifier, causing CitectSCADA to stope operating. We now check the instance identifier is unique.

64728 - CitectSCADA may cease operating prematurely if ServerRPC requests are processed during shutdown

In the situation where the ServerRPC Cicode function is being called to run Cicode on a specified server, if these requests are processed right in the middle of the server being shutdown, CitectSCADA may cease operating prematurely. Protection has now been added so the request will not be processed in this situation rather than the server crashing.

IO System

63236 - TagSubscribe() calls callback function twice

When a Cicode subscribes to a tag using TagSubscribe, there will be two updates generated for the tag for the same value; one when the local cache is updated locally and one when the write completes the round trip to the device. A new optional parameter (NoUpdateForDuplicateValue) was added to TagSubscribe to allow a subscription to only generate one update.

63662 - I/O server may become unresponsive when logging driver tracing

In rare cases of high volume driver logging, the I/O server could become unresponsive. This has now been resolved by refactoring string buffers to be local variables instead of instance variables of DriverDebug.

64132 - IOServer unexpected shutdown interruption(Related references 63659)

IOServers using peer redundancy may occasionally shutdown unexpectedly. This has now been resolved with additional checks during shutdown process.

64133 - I/O server unexpectedly shuts down after writing to a memory I/O device tag array(Related references 60143)

The I/O server would shut down unexpectedly after writing to a memory I/O device tag array when the tag was previously not an array. The cached value was not converted into an array on an I/O server restart. This has now been fixed as a correct conversion to an array now occurs on an I/O server restart.

64135 - I/O server unexpectedly shuts down at startup(Related references 63874)

An unexpected shutdown occurred if a temp file could not be created in the temp directory for the user under which the CitectSCADA process was running. In this case, cache persistence within the I/O server was not successful, resulting in an unexpected shutdown. Now the I/O server logs an error message if no temp file can be created, and an unexpected shutdown is avoided.

64208 - Writes for memory mode I/O devices not added to TagWriteEventQue

The writes for I/O devices in memory mode were not added to TagWriteEventQue. Memory mode I/O devices are now initialized in a way that will enable this functionality.

64316 - Timestamped alarms with an active trigger are not displayed

Timestamped digital alarms and timestamped analog alarms were not being displayed when their trigger was active after deleting the alarm database and restarting the alarm server. The I/O server now sends the current value of the corresponding variable tags to the alarm and trend servers on connect, which resolves this issue.

64392 - RPC calls may cause CitectSCADA to shut down unexpectedly

A particular scenario was encountered with communications between CitectSCADA processes (RPC) that had the possibility of causing an unexpected system shutdown. This has now been rectified.

64495 - Runtime will shutdown unexpectedly after I/O server process restart(Related references 63595)

Some transient condition resulted in network adapters returning an MTU of 0. This was being used to incorrectly calculate the buffer size of the MTU, causing an unexpected shutdown. A default value is now used with the message, "Could not determine MTU from interfaces, using default of {0}", (where {0} will reflect the default send buffer size as defined in the app.config).

64734 - CitectSCADA may cease operating before shutdown on systems with [CTEDIT]Copy and\or [CTEDIT]Backup paths configured in the citect.ini

On some customer sites, the Run\Copy\Backup feature is used to distribute project changes through a networked system. This feature contains several background threads to monitor these network paths that are configured through the citect.ini parameter [CTEDIT]Run, [CTEDIT]Copy, and [CTEDIT]Backup. We were not removing these threads on shutdown, leading to them potentially accessing cleaned up resources which would cause CitectSCADA to stop working.

Licensing

63810 - A client running with /x flag consumes all available Flexera licenses

A client running with /x flag consumed all available local FLEXERA licenses bypassing the floating license mechanism. This behavior has now been changed. A client running with /x flag will use a license from the remote connection only via the floating license mechanism.

64116 - Equipment Tag and Variable Tags are counted twice(Related references 62806)

Single cluster systems using both cluster.tag and cluster.equip.item referencing would double count points. In single-cluster systems, the cluster was being omitted when resolving tags to avoid mismatch between cluster.tag vs. tag referencing. This convention was not being followed where cluster.equip.item or equip.item was used. This has been resolved by not omitting cluster name.

64654 - Cannot specify "use local licenses only" for external client

An "external client" process is one that starts up and obtains a remote (network) license in order to operate. This type of client starts with the /X flag. Now we have introduced an additional client start up flag /O (which means "local license only"). When the client starts up with /X /O flags, it is expected to grab a license from a local System Services Client, which is another client process running locally with a /V flag. The /V flag means the client is running as a service.

Localisation

64024 - Character not processed correctly in localized strings(Related references 61254)

The escape character '^' was not being processed correctly in localized strings. This functionality now works as described in the Help documentation.

64119 - French Translation of Historize is incorrect on Alarm forms(Related references 63640)

French word Chronique is corrected to Historiser on alarm forms.

64408 - [Language]CaseSensitive parameter not working

The parameter [Language]CaseSensitive was not working, which meant the case specified in language files was being ignored when text was displayed. The functionality for this parameter has now been reimplemented.

64630 - Double Byte Character Set strings may not be displayed properly in some scenarios

If a string contains a double bytes character with 0x5e as it's first or second byte, this byte would be wrongly removed and cause erratic display. This has been fixed.

OPC Connector

63438 - The OPC DA Server may not complete a browse request when an I/O server restarts.

If an I/O server restarted during a browse operation, the browse operation would not complete. This behavior has been modified to complete the browse operation with an error message.

64412 - OPC AE not registering server due to incorrect or missing XML file

When CitectSCADA is using single process mode, it creates "Systems.xml". When using multi-process mode it creates "Systems.<ServerType><ClusterName>.<AlarmServerName>.xml". A recent related change also creates the "Systems*.xml" files in the [DATA] folder. The OPC AE registration routine now processes all "Systems*.xml" files in the [DATA] folder.

Process Analyst

43350 - Trend tag format setting is ignored in Process Analyst

Trend tag format setting in Project Editor was ignored for the cursor position value, minimum value, maximum value and average value in Process Analyst. Process Analyst now discovers the format setting through the trend browse it performs and applies it to the display values.

63925 - Process Analyst could not read a .PAV file in the Web Client

When Process Analyst was running in the Web Client, it could not read a .PAV file created in a normal display client. This was due to the Web Client using an earlier version of a DLL file. The new DLL would write icon images using a format that the old version could not read. Process Analyst now uses a suitable format for icon images.
If the Web Client shuts down unexpectedly while reading an existing .PAV file, the file needs to be opened and saved by the normal client, and the new .PAV file needs to be redeployed to the web client.

63987 - Write privilege functionality not working for .pav file

If the privilege level has not been set for a control on a page, the privilege level is now taken from the PAV file.

64333 - Axis visualization is overlaid if more than one pen is on an axis in dual axis mode

If more than one pen is on an axis in dual axis mode, the axis visualization is overlaid. Only the recently selected pen's axis for the left and right axis is visible. In dual axis mode there will be an axis visible on both sides of the control.

64424 - Vertical axis scaling would reset every Info Request poll period

Vertical axis scaling would reset every Info Request poll period. If the vertical scale information has already been updated for a pen, subsequent Info Requests will not update it again.

64701 - Process Analyst column heading is incorrect for added cursor time.

When adding a new cursor in Porcess Analyst, the column heading for the cursor time displays as "TEMPNAME Time". The column should be named according to the corresponding cursor name, e.g.: Cursor1 Time, Cursor2 Time, etc.

64762 - Process Analyst does not browse for trends when connecting to an older trend server

From SP1 Patch 2 onwards, the Process Analyst requests an additional field from the trend server when browsing for trends to improve the formatting of the trend values displayed. However, the browse requests would not work if the Client was connected to any trend servers that did not have SP1 Patch 2 or above installed. To avoid this, we now check the version of the trend servers and no longer request the additional field if the trend server does not support it.

64839 - Process Analyst value is rounding incorrectly on the cursor

Process Analyst was rounding values incorrectly on the cursor. For example, 3.985 was not rounding up to 4.0. The rounding routine has now been fixed.

Project Development Utilities

61479 - Pages taking too long to open in Graphics Builder

In Graphics Builder, it was taking a long time to open pages with a lot of Genies. A new parameter,[CtEdit]DbfNdxMode, now sets the method used to read DBF files that are indexed for reading records that match a key value. This improves the time taken to open graphics pages.

63791 - Compiler incorrectly identifying Genie when using array index

The compiler was incorrectly identifying Genies when using an array index, which generated a Cicode compilation error message. This has now been addressed by adjusting the way the compiler handles a sequence of "[...]" attached to a Genie.

63948 - DspPopupMenu is not showing bitmap icons

DspPopupMenu was not showing icons.
This was due to a utility in the include project being run from the [BIN] directory, and not from the [RUN] project directory as it used to. The runtime directory is now passed to the utility as the icon directory path.

64126 - Table genie only supports 50 rows(Related references 63605)

The table genie in library_controls was only originally designed to support up to 50 rows. This has now been increased to a maximum 100 rows.

64180 - Cluster information was missing when using AssGetProperty function

Cluster information was missing from the full 'cluster.tagname' reference when using AssGetProperty function with AssFullName parameter. GenieGetCluster() would return empty cluster for a single cluster project (even in cases when the cluster was specifically requested). This no longer occurs.

64339 - Graphics Builder stops operating after several page updates

Graphics Builder was using excessive memory and font handles whenever an update pages operation was performed. This meant Graphics Builder would stop operating if several update pages operations were performed without restarting the application. Graphics Builder can now run many more update pages operations without a restart.

64349 - Unable to navigate to pages that contain a dot (.) in the name

The PageDisplay Cicode function has been modified to support graphic pages that have a "." in the name, and not just a cluster prefix in the "Page" argument.

64399 - InUse property fix in Page properties

InUse property in Page Property displayed "No" as state though it had been used on the page. The Page property will now display whether the genie is in use or not.

64411 - Graphics Builder shuts down due to Genie expression length

When a graphic object's expression string reached 254 characters, the Graphics Builder would shut down unexpectedly when the loading the object's expression data. The expression buffer size has now been changed from 253 to 254 to fully take the advantage of DBF max field data capacity.

64483 - AssInfoEx function did not return expected 'cluster.tag' name

Cluster information was missing from a full name 'cluster.tagname' when the AssInfoEx(sArg,nType)function was used with type 19. This has now been corrected.

64489 - Cicode breakpoints display incorrectly following text zoom(Related references 54885)

When zooming the text in Cicode Editor, breakpoints would show in incorrect lines, and setting/clearing breakpoints would be inaccurate. The markings for breakpoints and bookmarks now scale correctly.

64585 - Pack removes additional/wrong records from DBF files

Changes introduced in v7.50 SP1 meant that packing a project could remove the wrong records from a DBF file. The pack process now correctly handles deleted rows.

64754 - Displaying a page containing a large number of super genie associations has become slower

In CitectSCADA 2015, the introduction of some bug fixes and the partial associations feature have caused pages with a large amount of super genie associations to display slower. The code has now been optimised to reduce the impact of these changes, allowing these pages to be displayed faster, although still not as quick as in previous versions.

Runtime Issues

53145 - Background color and someother info missing when update pages in GB

When update pages, back colour, dimensions and environment variables etc are copied from template when [Animatior]TemplateUpdate is set to 1, as it is supposed to be.

63704 - CitectSCADA Runtime would not launch on a computer with more than 32 CPUs

CitectSCADA Runtime was unable to launch on a machine with more than 32 CPUs. After the fix, this no longer occurs. Runtime Manager will start up correctly on a machine with more than 32 CPUs.

63907 - Cannot restrict key sequence command action for a left mouse double click

It was not possible to restrict key sequence command action for a left mouse double click so that it only occurred when the mouse position was over a specific object. New key codes LBUTTON_CMD_DBL, RBUTTON_CMD_DBL and MBUTTON_CMD_DBL have been added. When these key codes are assigned to a key sequence command action, the command will only be run when the mouse position is over the focused object during a double-click.

64020 - Multiple client processes started while CitectSCADA is running as a service

While CitectSCADA was running as a service, a new client process would start every time a customer clicked on the Citect32.exe or the RuntimeManager.exe shortcut. Protection has been added into Runtime Manager so that it will not launch more than one service display client at a time.

64122 - Unnecessary memory usage when launching help from Kernel(Related references 63230)

Repeatedly launching the help from the Kernel may have resulted in unnecessary memory usage in the corresponding runtime process. Each time the help was opened, a new window was created with its own thread and stack allocation. However, the window handle was not tracked, and the window was not closed. This has been resolved by keeping track of the window handle, and closing it before opening a new help window.

64193 - Unable to run a server when DNS Server or Hostname is configured as a Network Address

Runtime would not launch a server if the Address field in Network Addresses form did not match the hostname, even if the IP was the same. Runtime Manager now also compares the IP addresses returned from DNS for a network point with local machine's IP addresses to decide whether a server should be launched.

64303 - AlarmBrowseOpen leaks memory

AlarmBrowseOpen leaked a small amount of memory that built up to a large amount if called repeatedly. This was identified and fixed.

64305 - The [Device]AlwaysCreateHistory parameter not working

From v7.40 Spk1 onwards, setting the INI [Device]AlwaysCreateHistory parameter may not have created the required history files. This functionality has been restored, and startup is now aborted for processes that would attempt to manage the history files concurrently due to an incorrect device configuration.

64472 - Startup is sometimes unsuccessful when connecting a client through RDS

When connecting a client through RDS, the use of page metadata Cicode functions in startup Cicode may have caused startup to be unsuccessful. An invalid handle check is now used.

64619 - [General]StartDelay parameter causes unresponsive processes in Runtime Manager

Specifying a [General]StartDelay would cause CitectSCADA processes to become unresponsive in Runtime Manager. Runtime Manager now reports that the processes have a delayed start.

64752 - Setting [General]RegionalNumbersFormat=0 does not disable regional formatting

Setting the Citect.ini parameter [General]RegionalNumbersFormat=0 is intended to result in all numbers being formatted for display using English ("." decimal separator), regardless of which region locale is in use on the computer. However, this has not been working as expected since version 7. Additional handling has now been added to the I/O system to correct this.

64765 - I/O data does not display if running a single process system as a service

When running CitectSCADA as a service on a single computer (a standalone system), alarms would not display and I/O data would present as #COM if the server was run in single process mode. This has been resolved by confirming that CitectSCADA listens for local connections when this configuration is specified.

64825 - The Shutdown() Cicode function treats server PCs running in multiprocess mode as if they are clients

Calling Shutdown() with sDest = "All Clients" will result in all PCs that are running servers in multi-process mode being shutdown. Calling Shutdown() with sDest = "All Servers" will not shutdown any PCs that are running servers in multi-process mode. This has been addressed by changing this function to check what servers are running on the PC, not just what servers are running inside the client process.

64826 - The Shutdown() Cicode function returns no error messages in several basic error scenarios

The Shutdown() Cicode function should return error 513 if sDest = "All Clients" or "All Servers" or "Everybody", but [Shutdown]NetworkStart=0 in the citect.ini file of the PC where Shutdown() is called from, as this will block the operation. It should return error 274 if Mode = 6 but sDest != "All Clients" or "All Servers" or "Everybody" as it is invalid to use the not originator mode for an operation that applies to a specific node. It should also return error 274 if Mode < 1 or > 8, as there is no support for any modes outside this range. It should return error 281 if sDest != "" and the alarm server is not running, as an alarm server needs to be running to propagate the request through to the other CitectSCADA PCs in the system.

Tag Browsing

63301 - Setting Data Browse Type to TrnBrowse no tags are shown when Parent Equipment is selected

TabBrowseTable.ci - TabBrowseTable_SetFilter() may not disable the 'IsParent' mode. Now, if you select TrnBrowse and some appropriate fields, the trend records for a selected equipment record will be displayed. Selecting a parent node will not display the records belonging to all the child equipment items of that parent.

Time Scheduler

64506 - BACnet calendar objects can be viewed despite area restrictions

When viewing special days using the Special Days view in Time Scheduler, a user could see all special days including those to which they did not have area access (configured via the area field of the related equipment). The user can now only see special days and schedules to which they have appropriate access.

Trends

63163 - Client will not resolve a page trend that trends particular SPC tags

A client was unable to resolve a page trend for certain SPC tags, this was due to an array that wasn't allocated before it was used. This is resolved by allocating memory when it is needed.

63816 - Period (.) in a trend tag generates a compile error message

In German locale, a particular day of the month is specified using a full stop (.), for example, "1." instead of "1st" (as it is in English). This was not recognized by the compiler. The compiler now handles this time format.

64124 - [Trend]DeleteIfIncompatible does not work when changing the trend type(Related references 63622)

The parameter [Trend]DeleteIfIncompatible did not work when changing the trend type from periodic to event. This was caused due to ArchiveInit ignoring an error code pertaining to differing trend type of trend history file to configured trend tag type. This has been fixed by updating ArchiveInit to take into account the condition from ITrendEngine_Open and handle it by recreating the trend history file.

64440 - Rubber banding on old standard style trend templates not working after updating to 7.50 Spk1

After updating to 7.50 Spk1, On pages created from the old standard trend templates, users can no longer drag mouse pointer on the trend graph to form rubber band for zooming. The functionality is now restored.

64445 - User cannot move trend cursor with the mouse

After applying Service Pack 1 to version 7.50, the user could no longer move the trend cursor with the mouse on pages that were based on the legacy standard style trend templates. Mouse operations, such as moving trend cursor and zooming in trend span, now work as expected.

64481 - Process Analyst does not display data for some trends in a multi-cluster system

Trend data requests that occurred at the same time for trends on different clusters were clashing, causing some requests to timeout after five minutes. The cause of the request clashing has been identified and resolved, allowing the Process Analyst to now correctly display the data for all trends in a multi-cluster system.

64695 - Fixed some memory leaking issues in Process Analyst

Fixed the issue that Process Analyst may allocate too much memory slowly when showing a view.

64755 - TrnPrint will not work when less than 8 pens configured

When some of the pens (out of max 8) no longer exist, internal error value is no longer set.

Web Client

64368 - Data browsing appeared slow on a high latency network

Data browsing appeared to be performing poorly on a high latency network. Increasing the data package size reduced the number of required interactions, which has improved performance of data browsing when network latency is high.

Remaining Modules

63768 - Space between equipment fields was removed

A space between two equipment fields for a tag/alarm comment was truncated due to incorrect parsing, making it difficult to decipher the information that was displayed. The removal of a space no longer occurs.

63834 - AccControl Cicode function blocks a Cicode task(Related references 62989)

Calls to the AccControl() Cicode function could cause the Cicode task to become blocked when running a redundant pair of report servers. This has now been fixed by specifying the original instance identity when sending the functional message from server to server, so that the server reply message sent to the client can be identified.

63843 - Visual Basic user function named "Visible" not working

User-created function named "Visible" in CitectVBA was not working when called. This was due to another function with the same name being called instead of the user-created function. The function lookup procedure has now been changed to redirect the function called to the first seen, which is the user-created function.

63868 - Equipment Editor removing calculators manually added to equipment template

Calculators in the output sections of the XML file were being incorrectly removed. This was because the entire XML file was rewritten when Equipment Editor saved a template. This has been resolved and calculators are persisted in both the input and output sections.

63916 - CitectSCADA VBA can not access tags

When a VBS function was called via VbCallOpen the CitectSCADA tags used in the VB scripts were not subscribed. The VB script engine would return a runtime error message when it tried to read the tag values. These tags are now subscribed to when the VBS function is opened.

63924 - Cancelling update equipment process produces misleading message of 'Equipment update successful'

Cancelling update equipment process produced misleading message of 'Equipment update successful'. Cancelling the process now produces the message 'Cancelled'.

64123 - Report server subscribes to the standby I/O server causing stale data in reports(Related references 63391)

Report server resolves tags at start up, so it will get data from the primary I/O device if it is available. However Report server sometimes resolves and subscribes to the tags from standby IODevice instead of the primary, which causes stale values to be received by the report server. This has been resolved by checking that the tags are resolved to the primary device if available.

64127 - Equipment Editor does not show some multi digital state fields(Related references 63665)

The multi digital alarm state fields were not being displayed in the Equipment Editor types forms. This has now been resolved by using the DBF field name instead, if no display name is found.

64134 - Unexpected shutdown in ADO Cicode function(Related references 63747)

An unexpected shutdown would sometimes occur on the first read of a connected ADO record set if the read was not successful. CitectSCADA now returns an error message if the read is not successful.

64332 - Adding new parameters to existing equipment type does not work properly

When adding a new parameter to an equipment type, the parameter value does not come across to the existing equipment instances. The Equipment Editor now correctly handles default values for parameters added to an equipment type.

64490 - Equipment Editor does not work on Turkish operating system(Related references 63666)

Equipment Editor would shut down unexpectedly when running on a Turkish operating system. This can be avoided when accessing data row fields if the column names use invariant lowercase.

64491 - Report server may not shutdown correctly(Related references 64167)

The report server may not shutdown successfully if the shutdown occurs when it is in the middle of reading a tag for totalizer, number of starts. The report server will now shutdown as expected.

64499 - Dial up devices may cause I/O server to shutdown(Related references 64262)

If a dial up device changed status while there were pending read requests, the I/O server may have shutdown unexpectedly. A status change is now handled correctly.

64552 - VbCallOpen unable to load CitectVBA function

When a CitectVBA function gets called aggressively in a short amount of time, VbCallOpen would not load the function. This was due to an internal object management issue of [BIN]Enable40.dll library. This behavior has now been fixed to open CitectVBA functions correctly.

64603 - Equipment Update may produce unexpected results

If equipment types (or templates) included predefined values for linked Genies, it could cause an equipment update to not work or produce unexpected results. The process used to parse templates during tag generation has now been modified.


Enhancements

Localisation

64493 - Login form shows languages not defined in project(Related references 63646, 64679)

The CitectSCADA login form shows a dropdown list of languages that can be used. This shows all languages supported across all include projects. Some customers prefer to only show languages defined in the top level project. This can now be achieved by setting the following citect.ini parameter:
[Language]
DefinedLanguagesOnly = 1

The default value of 0 will retain the existing functionality.

64679 - Login form shows languages not defined in project

The CitectSCADA login form shows a dropdown list of languages that can be used. This shows all languages supported across all include projects. Some customers prefer to only show languages defined in the top level project. This can now be achieved by setting the following citect.ini parameter:
[Language]
DefinedLanguagesOnly = 1

The default value of 0 will retain the existing functionality.