Fixes and Minor Enhancements
Citect SCADA 2018 Update 24
Release Notification (Updated 03 September 2020)
This is a detailed listing of fixes and minor enhancements in this release.
Windows may ask you to provide the original Citect SCADA installer to complete the patch uninstallation process.
Starting from Citect SCADA 2016, you no longer need to uninstall any previous updates before installing a more recent one.
Known Issues Index
Bug Fix Index
Uninstalling a patch from a Citect SCADA system may prevent any I/O Server processes from starting correctly. To resolve this, delete any *.cache files within the project. By default, these files are created in the [DATA] path, unless a different path has been specified in the ‘Storage \ File Name’ property of the I/O Device.
When a Citect SCADA display client is connected to a standby alarm server, alarm summary records on an alarm summary page may not be updated until a view refresh or page refresh is triggered.
With some projects, the Project Analysis tool may not generate the project information file (ProjectSummary.xml). Instead, a diagnostics dialog is displayed with an ERROR title. This indicates the Project Analysis tool was not able to analyze the project. It does not necessarily mean that the project itself has issues.
1. If the remote port number is not specified in the Port “Special Opt” field, the driver sets it to 0 when connecting to the device causing the connection to be disrupted. 2. The local port is not set when doing a socket binding, causing Windows socket API to use an arbitrary local port number which may cause a connection problem if the remote device does not accept a connection with that port number. These issues have been fixed in the TCPIP driver 4.00.02.000 that is available in URL https://www.citect.aveva.com/scada/citectscada/downloads-updates/driverweb
Citect SCADA 2018 Patch 1 (September 12th) contains updates to the starter project “SA_Style_1_MultiRes” that are incompatible with the Citect SCADA 2018 release. If you create a project based on this starter project, you will not be able to compile your project if you uninstall the patch.
The disk space value returned by the Cicode function CitectInfo was overflowing due to a limitation to return the maximum size in KBs. Support has now been added to retrieve disk space size in MBs.
ArrayCreate and some Cicode functions record the call stack of the Cicode execution for logging/debugging purpose. The call stack includes the argument values that are passed into each nested functions. If the size of the arguments exceeds the buffer size that holds each level of the call stack, it can cause the display client to throw exception and the client will become non-operational. The values of the arguments are now truncated if necessarily to keep it within the size of the buffer.
The cluster name field in Topology page of Plant SCADA Studio was not case sensitive. So, when changing the cluster name from "Cluster1" to "CLUSTER1," the change was not cascading to the related/linked fields in other pages. As a result, Setup Wizard was displaying two cluster names, i.e. "Cluster1" and "CLUSTER1," and calculated variables were not able to retrieve the value from I/O server. This was fixed by modifying the logic to consider the case sensitivity of the name, and cascade the change.
In Process Analyst page when you search for "Variable Tag" and no source is available to fetch its details (neither TagDB nor IOServer), the IOClient tries to access an empty list and the Process Analyst page stops working. This was resolved by adding defensive codes before accessing the list, and before searching the given variable tag.
OPC A&E registration from the Computer Setup Wizard would not succeed for deployed projects because it depends on a systems.xml file which is not part of the project payload for deployed Citect SCADA projects. The Systems.xml file has been added as part of the payload for a deployed project.
When entering any value via keyboard the Tool Tip mode was getting reset to "1" (on), because a related variable was set as "true" always. To fix this issue, that variable is assigned with its original value now.
East Asian characters on buttons were appearing incorrectly at runtime when the system code page (language for non-Unicode programs) did not match the language of the button text. Modified the Script dropdown in General property page (for text & button objects) and Text/Font dialog to include only the scripts supported by the selected font, unless an unsupported script was previously configured in which case a warning message is shown. The default font in Graphics Builder has been to be based on the system code page (for example, MS Gothic for Japanese), so that the required characters for the code page are supported. The button objects were also changed to use the default font instead of hardcoded Arial.
The Equipment Editor now reads the AnsiToOEM ini parameter upfront before any equipment or tag fields are read or written to and the correct encoding is selected based on the value of this parameter. This encoding is then applied to all reads and writes of equipment and tag fields so that an appropriate conversion will take place and values will be displayed correctly to the user.
A client process would stop running when the CTAPI server would call a Windows API for thread-critical functions. The CTAPI server has now has been updated to avoid this.
If any BACNet Scheduler tags had overlapping dates, it would stop the Report Server from starting correctly. With this fix, the overlapping dates in the Scheduler tag are now merged into one.
A memory leak was detected in a redundant alarm server when many different users were logging on to the system from the same client over time. An explicit logoff message is now sent to the peer alarm server when a client logs off so that the logon sessions are cleaned up on both machines.
The SetArea() function would not set the user area on servers via the "Trusted" connection. The area of the target user is now set accordingly.
A timing issue could occur where the system would attempt to log on a user before the user had been created and synchronized between the alarm server redundant databases. To avoid this, a configurable delay has been introduced for the alarm server logon.
A timing issue would sometimes occur where the system would attempt to log on a user before the user had been created and synchronized between the redundant alarm server databases. The fix for bug 66529 introduced a configurable delay for the alarm server logon to address this issue. This bug fix delivers a more comprehensive solution for handling logins.
A false Rate of Change (ROC) alarm was sometimes triggered when transitioning between redundant alarm servers. A fix to address some of the symptoms was implemented in the June 2020 update via bug 66544. This bug fix delivers a more comprehensive solution for correctly calculating ROC from a timestamp.
When the Graphics Builder automation interface is used and a page containing the Process Analyst activeX control is opened either directly or indirectly the error message "IDispatch interface must be present" is shown.
Alarming function via MsgRPC does not work in mixed mode. The alarm client now correctly manages alarm user sessions.
When exporting displayed alarms or historical alarms (Sequence of Event or Alarm Summary) from a page based on Tab/SxW style page templates the full list would not be exported. This was due to the fact a historical list gets the records progressively when scrolling down the list and the Cicode involved did not deal with the behavior properly. The Cicode has been modified to anticipate this behaviour, and keeps on exporting when more records are discovered.
Citect SCADA servers were shutting down unexpectedly or would stop responding when the server connections were disconnected shortly after connecting. A shutdown that takes place under these circumstances is now handled correctly.
If the alarm server was overwhelmed by a large amount of queries, the AlmBrowseFirst() function could return error message 412 (End of file). The alarm browse data access has been modified to wait on its own data request result rather than being interrupted by the tag cache changed event. This will result in the correct query result being return to the client.
A false ROC alarm could be triggered in the process of the primary server initiating synchronization with the standby server due to an incorrect timestamp. As a temporary fix, 'interval == 0' is removed from the ROC triggering condition.
Sometimes the Sequence of Events (SOE) page would show the username as "System" for "Logged On/Off" events for Windows users. This would happen if the username was reported by the OS in different cases (upper or lower) on different clients. The user name now displays correctly.
The I/O server would not shut down successfully when the protocol driver did not clear up its callback reference from the Kernel before the driver dll unloaded. The server will now shut down as expected.
On a TRUSTED client/server set up, a client with a user that is not defined on the server side was able to connect to the I/O server for the tag read operation. The user login process now notifies the server about the logged on user at the client side, which allow the server to drop the connection if the user is invalid on server side.
The Project Analysis tool was not able to read the included project folder path when projects were in subfolders of the [USER] folder. These subfolders can now be accessed by the Project Analysis tool.
If a user acknowledged an alarm shortly after a state change (within one alarm scan time), the alarm would sometimes not be acknowledged on the standby alarm server. This is because it would take up to one alarm scan time for both alarm servers to be in the same state. If acknowledgement was sent within this transition period, it might not be valid on the standby alarm server. This issue was more prone to polled alarms such as advanced alarms or time stamped alarms. To deal with this inherent delay, a new alarm server INI parameter, [Alarm]StandbyCommandDelay or [Alarm.<ClusterName>.<AlarmServerName>]StandbyCommandDelay was introduced. Its default value is 0 (no delay). If set to 1, when an alarm server receives a standby command (relayed from the server that initially received the request), it will delay the execution of the command by the specified delay time in milliseconds to wait for the alarm server to evaluate the latest alarm condition. The delay should be typically set to the alarm scan time specified by the alarm server parameter ScanTime.
When shelving alarms with the end time or comment specified, the details were not displayed on the peer (standby) alarm server. Shelve (disable) end time and comment are now recorded on both the alarm server and its peer (standby) server.
Analog alarms were not displaying correct setpoint value on the SoE page.
Objects with a high AN number has been assigned (>=9880) caused display errors with blank page tabs and missing text in the alarm banner (SxW projects).
Deployment error message is displayed multiple times when the current user is not a member of the Windows group 'Asb.Deployment.DeployRole'.
When a 16-character Group Name was defined in the Standards->Groups page, and referenced by another table, a 'Group not found' compiler error was being displayed. This was also observed when a 16-character Device Name was defined in the page of Setup->Devices and referenced by another table. The was due to incorrect truncating of a string field.
All fonts installed on the machine will now be available in the Text/General property page in Graphics Builder, regardless of locale. The chosen font should now be correctly used at runtime, assuming it is available on the runtime machine.
The Template Name dropdown was not displaying a template based on another template with same name in a different library.
when trend tag had the same value for zero and full scale. the Trend server shut down abnormally.
When the scale of a graph in the Process Analyst was set from some negative number to the equivalent positive number, the middle point '0' would display as '-0'.
When an user has logged in to the Runtime, the tag write operation will time out on waiting for user login to complete. This issue has been introduced since December 2019 patch update, and has been resolved in the latest patch update.
The compiler error message F4009 (Software Error) is no longer raised when compiling the parameters table for a project with a large include hierarchy.
The local groups ASB.Deployment.Admin, ASB.Deployment.ReadOnly, ASB.Deployment.Upload and ASB.Deployment.Deploy have been modified to support both individual users and Active Domain groups.
A divide by zero hardware alarms no longer occurs when a page containing a deviation meter Composite Genie is displayed.
The Citect Runtime logo now displays properly when Citect SCADA is run as a service as the size of dialog box has been increased.
A regression issue introduced in a previous patch resulted in remote Citect SCADA clients being unable to return the license on exit. Licenses are now handled correctly under these circumstances.
The parameter [Scheduling]AlwaysExecuteEntryAction has been introduced. When set to true, it will hand control over to the Scheduler and always execute the entry action of all equipment resource states regardless of whether their internal states are the same. This ensures backwards compatibility when a piece of equipment remains in the same state but needs to repeatedly perform an action at particular times configured in the Scheduler. By default, however, this parameter is set to false which means only changes that have been made to the selected equipment will take any effect and the rest of the equipment states will not be refreshed.
Seconds will now be displayed in the Kernel screen when OFFTIMEDATE is used with AlarmGetFieldRec and [Alarm]TimeDate is set to "YYYY-MM-DD HH24:MI:SS".
When using a pop-up window configured with tabbed content based on the SA_Include project, the selected equipment context can now be retrieved using Cicode function Workspace_GetSelContext() on the content pane.
The user was unable to add comment in the SOE page when nListType=16 was used. There was no business logic to handle the above setting (SOEWithCOnfig i.e. nListType=16). Code has now been added to save the comment in client SOE page.
If any database files are not accessible when you attempt to save the content in the grid editor, Citect Studio will now make some retry attempts to save the changes before an error message appears. A new parameter [CtEdit]SaveRetries has been introduced to initiate the retry attempts.
When the associated user event was hooked up to the key command, the runtime graphics key operation could cause runtime to stop unexpectedly. The runtime graphics key command handling has now been changed to stop continuing the key process when the registered user event has been called.
To stop the horizontal axis in Process Analyst graphs rendering over max values, there is now a very small gap between the axis and the top of the graph. The gap size doubles when large display size is selected.
On the trend page in Situational Awareness projects, the list of trendable items would be missing the last item for the selected equipment if the number of items was too large to fit without a vertical scrollbar. All items are now shown correctly.
The status of deployment clients would flicker between offline and running on the deployment server. This was because the deployment server monitoring the status of the clients via Web API would open and close the connections at the rate of every second. This could exhaust the TCP ports usage when the client did not response to the request quick enough. The deployment server now keeps the web API object open for the polling function so it will not reopen every second when monitoring the client state.
Symbols from a 'generalpopup' library would not appear at runtime when placed on a button. The object properties are now loaded properly to support the use symbols on a button.
The Exec() function now works correctly when being run as part of an .rtf report when a user with Exec permissions triggers it from the client process.
Fix level and fill colour animation properties were being lost on Genies that had DspSym enabled. They would revert to values from nested objects. Values are no longer copied to the parent graphic when loaded through DspSym.
The template "csv_include - xp_style.trend@-XGA", which is used on the CSV_Trend page, would not show the cursor when it was clicked on. The template has been modified to bring the trend control (AN250) forward.
When a display client started with [Client]AutologinMode = 1 or 2, the client sometimes would not load the alarm data. The auto login user account is now handled correctly.
In a system with redundant alarm servers, the SOE page is showing incorrect information for logged in users. Citect SCADA now uses the user login register to keep track of what needs to be logged.
The Deployment Client Service would stop if it was not able to connect to the Deployment Server at startup, and it would not retry to start the service. The Client Service now attempts to retry connecting to the Deploment Server.
When a variable tag had its type changed, there was a chance that the cached value would not be converted properly, causing the I/O server to stop working. Cached data is now handled correctly.
All license-related logging for client/server messages now respects the [Debug]License ini parameter.
Decimal values in Process Analyst were showing at least two significant figures, which was inconsistent with version 7.20. The formatting functionality has been changed to trim excess zeros after the decimal point.
The Citect SCADA client would not run as expected when using the Scheduler control. This no longer occurs as the latest version of System.Windows.Interactivity.dll is now loaded by the client when there are multiple versions of the same dll in different directories.
If the format of a variable tag was defined with scientific (exponential) notation, when reading tag value via TagRead or TagReadEx Cicode functions, the returned value would be rounded based on digits after the decimal point rather than significant figures. The tag value is now rounded based on significant figures when the tag format is defined with scientific notation. In addition, a new INI/project parameter named [Client]TagReadRoundToFormat has been introduced to control whether rounding is applied to value returned from TagRead or TagReadEx Cicode functions. Its default value is 1 (apply rounding).
The following settings on the Options dialog within Citect Studio were not persisted to the Citect.ini file when the OK button was pressed: [CtEdit]CopmileEnquiry; [CtEdit]ReportEditor; [CtEdit]MaxHelpRec; [CtEdit]MaxHelpRec. When the Options dialog now opens, it will show the values loaded from the Citect.ini. Previously, it only retrieved these values when Citect Studio started. Now, when the OK button is pressed, it will immediately persist the changes to the Citect.ini file.
A Cicode function (CSV_MM_PagesInit) related to the initialization of multi monitor pages, needs to be called on startup of a client process, but is not required for server processes. This configuration is now handled correctly.
An empty alarm/summary comment on an alarm list would not appear correctly when displayed via the AlarmDsp Cicode function in single process mode. If one alarm record contained a non-empty comment, the next record that contained an empty comment would display the comment from the previous record instead. The comments are now displayed correctly.
An alarm log device would record the alarm NATIVE_DESC field value in the translation format string rather than its native string. The field value is now handled correctly.
Alarm servers were unable to start if they were required to process user area updates requested via client/server internal communication channel before the channel had been authenticated. User area updates are now handled correctly.
When a FormComboBox was displayed with sort mode and a selected string, the up and down arrow keys would not navigate the listed items correctly. The selected item in the combo box is now determined after the items have been added, which means the arrows will work as expected.
A project that had been renamed would not deploy correctly if its containing folder still had the old name. This no longer stops the project from being deployed.
Generated content via equipment templates used to turn a single quote into two single quotes. The equipment templates now generate single quotes correctly.
On alarm pages based on the SxW style page templates, the user could not filter disabled alarms using the DisableEndDate or the DisableEndTime fields via the provided filter form. An error dialog no longer appears when you commit the filter.
The template name drop-down list under the 'Appearance' tab of a page or template's properties will now correctly populate with all templates defined under the selected template style, regardless of the character length of the project that the template is defined in.
The XP style button cursor focus rectangle would remain visible in a group. This has changed in behavior in Citect 2018 compared to older versions. The same behavior as 7.50 now happens when drawing the cursor around the XP style button at runtime.
Upgrading a project to 8.10 or later requires graphics to be updated to the latest format, but pages with no dependencies (that is, no template and/or no Genies or symbols on the page) would be missed. All pages are now included in the upgrade.
The orange and indigo labels in the SA_Controls project now correctly match the order in which they are defined in the colour arrays of various graphics objects.
In the SA_Include project, the Russian translation for the shelve alarm dialog was too long and overlapped with other controls. The dialog now displays correctly.
Buttons and toolbar buttons in a Situational Awareness project would sometimes not activate correctly when using touch. The touch input now works as expected.
in certain circumstances, when the alarm server switched from the primary to the redundant server, alarm would not be shown. This no longer occurs.
The Cicode function "InfoForm" will now work correctly on any valid animation number, even for objects within groups and Genies.
The TrnGetTable Cicode function would synchronize end-time to the nearest display period. This meant the samples returned would not synchronize to the end time specified. New display mode options have been introduced to allow users to synchronize samples to the specified time instead of the nearest display period.
When adding a user account at runtime, the compiler window would appear. This was introduced by the Version 8 release, and was resolved in Version 8.10 August patch.
Graphic Builder will now save an HD1080 template with a 24 character name and the "Designed for showing the title bar" option unchecked.
The Screen Profiles page in the Setup Wizard now displays workspace-related functionality (Context and Master Pages Only options) for projects that use a renamed copy of the SA_Include project.
When a primary/standby server pair is configured using hostnames and one hostname is invalid (for example, it does not exist in DNS server), then the connection to the other server would also be unsuccessful. The connection to the server with a valid hostname will now work.
When Japanese characters were used for search keywords in the Find and Replace form, they could not be entered correctly. This was introduced by the Version 8 February patch, and was resolved in Version 8 July patch.
For Rich Text File (RTF) reports assigned to PRINT_DEV device, embedded metadata characters were printed without formatting. This was introduced in Citect SCADA 2018. RTF reports are now formatted in the printout as they were in previous versions.
When a client connected to an alarm server via authenticated connection called the SetArea() function, it could cause the alarm server to stop unexpectedly. This was due to a user areas change request, which is now correctly managed.
The quality tooltip for a multi-state animation on a symbol set or text object now shows the combined quality/timestamp for all conditions in the animation (worst quality, most recent timestamp) instead of the last configured condition. The tooltip for a text animation also shows the actual text value when the text is in an error indication (for example, #BAD).
The timestamp is now shown in the quality tooltip for a text or symbol set item.
When creating a new window via WinNewAt or WinNewPinAt, the window would not always appear on top of other sibling windows. Now, when calling WinNewPinAt or WinNewAt, the z order position of the window is set so that it will appear in front of other windows as expected.
If a project name contained space character(s), the Setup Editor (when launched via the Profile view in the Topology activity) would display the error message "Sorry the ini file could not be loaded". The Setup Editor will now open the selected profile INI file as expected.
After drawing an object with Ctrl key held down, the internal key state would become out of sync. This meant a subsequent move of the object with the keyboard would cause it to be duplicated instead of moved. Moving an object with a keyboard now works as expected under these circumstances.
Symbol sets with a privilege restriction and 'Disable on insufficient area or privilege' configured are now correctly disabled at runtime when the symbol set is in a group or Genie.
The I/O server would sometimes stop unexpectedly when tag quality was overridden. This could occur if tag was placed into override mode before receiving a field value. This would typically involve the Cicode function TagSetOverrideQuality() or similar. This situation is now handled correctly.
The statistical columns displayed in the Process Analyst Object View (Min, Max, Avg, Std Dev) are inconsistently formatted to the cursor columns. This has been rectified by changing the formatting to match the rules for the cursor value column for display and printing.
In a project set up with BACnet schedules, the associated tags were continuously polled at a fixed rate that could not be easily changed. A new report server INI/project parameter called [Scheduling]BACnetSchedulePollPeriod has been introduced to allow the user to change the polling rate.
Citect Historian did not get alarms beyond 1 week because of an issue with CtAPI acquiring alarm data beyond that duration. The problem has now been resolved.
Localized strings are now supported for SOE event comments, SOE event messages and disabled alarm comments.
The [Page]KeyEcho and [Page]Prompt parameters can now be set to 0 to disable the key echo and prompt functionality, respectively. This is for use on projects that have objects configured at the default ANs of 1 and 2, in order to allow Cicode on those objects to run.
The function IODeviceInfo no longer stops the IOServer process when specifying an IODevice name of 31 characters with the ",P" and ",S" characters.
A Citect SCADA client would stop working when an alarm pen was added to the Process Analyst. This was due to the associated alarm tag using a redundant persisted memory IO device where the tag value had never changed. Process Analyst now handles this scenario correctly.
When running Citect32.exe from the command line with the /X flag, entering more than 300 characters would stop the process. The limit on the Citect32.exe command line size has now been increased.
When the Citect Project Analyzer summary tag <primaryiodevicesbycluster> was detected, it would not look at all variables when determining which cluster an I/O device uses. The tag now assigns an I/O device to a cluster if any of the variables using the I/O device has a cluster.
While processing comments in Cicode files, the Citect Project Analyzer did not detect '!' comments. Also, in the situation where an opening '/*' comment was detected, the closing '*/' would cause the application to exit unexpectedly. Comments are now handled correctly.
The INI parameter [OPCDaServer]AutoStartByClient would not work as intended. When set to 0, any attempt to connect an OPC client to the Citect OPC DA Server while Runtime Manager was closed would launch Runtime Manager, but not any of the Citect processes or the display client. However, if you connected an OPC client while Runtime Manager is already running, all Citect processes, including the OPC DA Server and the display clients would all start if they were are not already started. When the INI parameter is set to 0, Citect processes or clients will no longer automatically start when connecting an OPC client, regardless of whether or not Runtime Manager is already running.
The interlock demonstration for the OV07 output valve was configured incorrectly in the ExampleSA project. Inactive interlocks now clear correctly when the valve is opened.
The templates for the Diverter Gate, Feeder Gate, Target Meter and Deviation Meter equipment types had an incorrect item name of "OOSDisable" instead of "OOSDisabled". This meant the faceplate Out Of Service (OOS) button would not work. This has now been corrected. In addition, the variable tag name for this item has also been corrected for these templates as well as the Meter, Drive and Valve templates.
The equipment tree on Scheduler hides the last few items when the content of the tree is larger than the height of the control and needs scroll bars. The user can now scroll to the very last item of the tree as expected.
A Citect SCADA system would sometimes not shutdown successfully while evaluating advanced alarms during a shutdown. This was due to an advanced alarm calling a function in a system that had already shut down. Citect SCADA now prevents advanced alarm being evaluated during shutdown.
AlarmActive(2) Cicode function (type = 2 means "highest priority UNACK alarm") now properly supports data for multiple clusters on the same graphics page.
The v8.10 and v8.00 February 2019 updates, and v7.50 Patch 37, introduced a new optimized search mode for finding the alarm event prior to the requested window (bug 65818). If a patched client made this request (for example, for Process Analyst alarm trends) to an unpatched alarm server, the server could stop. To prevent this, a new INI parameter has been introduced [Alarm]EnablePrevRecordOptimisation, which defaults to 0 and should only be set to 1 when all associated alarm servers have been patched. The client will have to be restarted for the new INI to come into effect.
XML functions were taking a long time before XMLSave could be called. This was caused by the XMLReader not closing properly when the XMLOpen Cicode function ran. This would impact the operation of a file opened via XMLOpen. As a result XMLSave would not work properly. XMLReader now closes properly.
The XMLSave function would return an error when attempting to write to the XML file. This was caused by the XMLReader not closing properly when the XMLOpen Cicode function ran. This would impact the operation of a file opened via XMLOpen. XMLReader now closes properly.
By default, the client process could not service MsgRPC requests. A new INI setting, [Client]AllowRPC, has been created to override this and allow MsgRPC requests to be serviced.
Genies who has metadata set via the graphics builder automation interface lost the ability to read the values at runtime in Citect version 8.10. This has now been fixed.
When displaying variable tags from redundant Cicode I/O devices, tag values were sometimes displayed as #BAD when the I/O server hosting the primary I/O device was stopped. Variable tags from Cicode I/O devices will now switch to the standby correctly when the primary is not available.
If a Genie had a property called NAME, it was possible to set the value to be longer than 40 characters through the automation interface. If this occurred, Graphics Builder would stop working the next time the page was opened. This scenario is now handled correctly.
Nested Genies that had a NAME parameter would not have their values propagated when they were placed on a Genie page. This was due to conflicts with a NAME property introduced for animation objects in Citect SCADA 8.10. The NAME property representing animations name was changed to avoid any further conflicts.
A regression issue introduced in a recent patch resulted in remote Citect SCADA clients not returning the license on exit. This has now been corrected.
The engineering units that represent degrees Celsius would display as garbage characters when logging on to Citect SCADA runtime with an Asian language. This was because the engineering units were configured with extended ASCII characters that represent something else in Asian languages. The engineering units have now been changed to ASCII characters DegC and will be language independent.
The workspace tree view did not take account of custom data columns, and would not display them by default. With this fix, custom data columns are automatically displayed as pinned columns in the same way as the alarm count columns. Also, new functions were introduced (Treeview_Get_CustomDataCount, Treeview_ConfigureCustomData, and Treeview_SetCustomData) that allow the user to manipulate the tree view custom data more easily than having to deal with the array structure directly.
Due to a race condition, a Citect SCADA process would stop working if it attempted to write to an XML file at the same time as other processes. The race condition has now been removed.
Changing the [Alarm]StreamSize parameter could result in reset of Alarm Summary data when the Alarm Server is restarted. This is because the procedure to convert Alarm Summary records according to the new stream size did not read old data as expected. The conversion procedure has now been revised to retain Alarm Summary entries on stream size change so that existing Alarm Summary data can be preserved.
Citect alarm was not visible from display client when a particular user login was used. This was because the user session did not retry after executing an internal initialization query successfully. This issue is one of the causes of missing alarms. When this issue occurred, alarm server trace log with AlarmServerComms category would display the following message: "ServerConnector(Viewer_MNP:UCluster|UALMA).QueryManager.ExecuteQueryTasks(): Error executing query: SELECT * FROM DTAlarmState. System.Data.Odbc.OdbcException (0x80131937): ERROR [S1000] [Schneider Electric][Citect SCADA 8.0 database driver]The system is offline. " This issue is now resolved. The trace message would still occur, but a user session would retry the query later until it is successful.
PriorityAndState genies in alarm lists now work for languages other than the installed language.
When [Alarm]SummaryTimeout INI parameter was a low value (for example, 1) and SummaryMode INI parameter was 2 or 3, the alarm server performance would be impacted after running for a few weeks. The reduced performance was due to the background thread for Alarm Summary Logging executing unnecessary large queries. An optimization was made to reduce the query size as long as there were no long lasting active alarms (i.e. an alarm was turned on but never off over a long period of time such as 2 weeks). In the case of there were long last active alarms, users are recommended to locate the corresponding alarm summary records using AlarmSumFirst() and AlarmSumNext() Cicode functions on the main alarm server process, and then call AlarmSumCommit() to flush the record into the log device. Once the outstanding alarm summary records are flushed, the optimization will take place.
Initialization of the TabAlmTable_InitDspLast was not being done, resulting in the desired filter not being applied. The condition that is tested for initialization of the TabAlmTable_InitDspLast function has been corrected
Reading an indexed DBF database file using CiCode function DevOpen() with indexed mode (mode 2) does not read the file in the correct order. The file is being read in sequential order instead of the ascending order of the indexed field. The records are now open according to Index.
Cocide functions DllClassGetProperty and DllClassCallMethod caused a memory leak resulting in a crash. An internal Citect memory allocation was not being released. The more often these built-in Cicode functions were called, the faster memory leaked. This has been fixed now.
All relevant "Analyst Views" files are included in deployment packages. Previously, some folders and their files would be skipped if the parent folder had only sub-folders.
Scheduled dialing now adheres more closely to the specified schedule.
When you use the Project Analysis command, the file called "ProjectSummary.xml" would not include tags counts for included projects. If an I/O device associated with a tag was not primary mode, it would cause the Project Analysis to discard the rest of the project and sub projects. Project Analysis now handles this scenario as expected.
Refreshing the variable tags page would not always update the value for tags that are not currently monitored (alarmed, trended or displayed) on other pages. Navigating to another page that did not display the tags would also not work. Now, when the data browse page has been refreshed, the tag value will be up-to-date at that point in time. In addition, the data browse page was never designed to show live data, so text has been added to the top of the page to mitigate any confusion. The engineer will need to run Update Pages and save the affected pages in Graphics Builder for this text to appear.
In certain circumstances the client point counts were interpreted incorrectly
When the report format is RTF and "Devices->Number of Files = -1", report is correctly appended to the end of the file.
Since Citect SCADA 2015 SP1 Patch 10, the citect.ini parameter [Lan]SecureLogin is not supported. The parameter is also not supported in Citect SCADA 2016 release and Citect SCADA 2018 release. If you need to communicate with an older version, the use [Lan]EarliestLegacyVersion parameter.
Buttons with the 'Disable on insufficient area or privilege' property checked would not be disabled correctly if contained in a Genie or a group with no animations configured. This property now propagates correctly within a group.
Runtime would not respond when 'Disable Until' is reached while running as a single process. The alarm server would potentially stop responding when an alarm was unshelved. The function AlarmUnshelveTask now handles this situation correctly.
ActiveX controls on a previous page were still showing after page navigation if the INI paramter [Animator]FullScreen was set to 1 or 2. ActiveX controls now behave as expected when page navigation occurs.
DspGetAnCur() would sometimes return the wrong value when called from Visibility Cicode of a legacy trend object. The hCurGraphicAn argument is now handled correctly, and the Visibility Cicode is not evaluated if it has already been evaluated within a scan cycle.
The Equipment Editor did not recurse the project hierarchy when building the equipment tree view. It would just iterate the active project and its first level includes. The view model has now been updated to recurse the project hierarchy. Additionally, the Add New Equipment dialog now lists all the available projects in the project drop-down.
Driver protocols with similar names will no longer be confused with one another by the Driver Runtime Interface (DRI) library. So, for example, while OPC and OPC1 protocols belong to the same driver DLL, OPCLX protocol will not be confused with them and will not be put into memory mode by accident, and so on.
The Template Name drop-down list had no entries under the Appearance tab of Page Properties dialog if the project name contained more than 32 characters. Since a project name can now include up to 64 characters, the dialog initializing function now accepts 64 characters.
An unnecessary warning message, "Some variable tags not found", has been removed for Genies with properties similar to "%Prefix%_Suffix.ON", as such warning should only appear when the Genie instance is put on the page and cannot be resolved there.
After adding a Composite Genie instance, the object size indication in Graphics Builder's status bar would stop working and always show as 0,0 until Graphics Builder has been restarted. The object size indicator now works correctly for Composite genies.
When CtDraw32.exe was launched from somewhere other than the folder where the .exe file was located, the About dialog would show incorrect information. Citect SCADA now looks for the information in the folder where the module file (.exe) exists.
Time stamped alarms would sometimes stop updating when the INI parameter [Alarm]HResTimerExprDelay was set to a small value. This was due to the alarm going into a permanent requesting state, however no timestamp requesting activities were scheduled due to an error condition. While the alarm was in requesting state, transitions were skipped. Time stamped alarms now handle the error condition correctly. In addition, the alarm exits the requesting state when the timestamp requesting activity is aborted.
The hardware alarm 'Conflicting Types of Animation' was raised when starting Citect SCADA if the INI parameter [Animator]FullScreen was set to 1 or 2. This occurred if the Window was maximized before the startup page was fully loaded. A hardware alarm is no longer raised under these circumstances.
ServerInfoEx could not get the login name of a /x remote client. From now on, second clients will function like remote clients unless the parameter [Client]AdditionalClientsArePartOfTrustedNetwork is set to 1 (Trusted – connects internally using server password).
The popup menu was displaying at the wrong location when called from a non-pinned window. DspPopupMenu now shows the menu in the correct location.
If Deployment is enabled on your Citect SCADA system, you cannot configure the [CtEdit]Copy parameter. This is to prevent the Deployment Client location from being replaced by the value set for the parameter.
If "Deployment" was selected in the Computer Setup Wizard, then "Use Profiles" was selected, the Computer Setup Wizard would stop working. In this scenario, "Use Profiles" is disabled and no profiles are available in the drop-down list. This indicates that profiles selection is controlled elsewhere (by the Deployment page).
Deleting the A condition expression for a multi-state animation in the Display Value, Fill Color or Symbol Set property page, then pressing the Apply button, would result in the deleted condition replacing the new A (previously B) condition. The shared expression property is now updated when the A condition is deleted.
The Alarm.State property tag of time stamped alarms would remain stuck in state 32 (ComBreak) when the time expression was configured. The state would not change until the time value changed. The correct state is now reported when the trigger and time expression come online.
TagWrite to local variables were being incorrectly interpreted as locale sensitive when only the local string variables should have been. This lead to '.' being incorrectly replaced with ',' for some local string variables of type under some localization settings.
When calling TaskNew, the newly created task will not execute its code until the caller has completed the TaskNew function. This prevented two Cicode executions being in progress simultaneously, which could cause incorrect behavior.
When a page with an alarm indicator, but without a page subscription is open, the alarm indicator briefly triggered the hardware alarm "Data not ready". This issue has been fixed now.
OPC Alarms and Events registration not successful from Setup Wizard because the registry key required by the action is not created by default. The issue is now fixed.
Previously, a report was only capable of running Cicode if it had an output device configured. This is no longer a requirement.
The Process Analyst toolbar buttons were accidentally removed on the 'doublepa' and 'singlepa' templates in the SxW_Style_Include & Tab_Style_Include projects, as well as the 'equip_pa' template in the Library_Equipment project. The buttons have now been restored. Note that customers will need to do an Update Pages on their projects to fix pages that use these templates (or manually re-save the affected pages).
When English (Australia) or some other English variant was selected as the Citect SCADA login language, it would change to English US internally. English (Australia) and English (UK) have now been added to the language DBF in the include project so that they will no longer be reported as unsupported languages.
If a Role defined for a user was in a different case to the same role in the Roles table, the SOE and Alarm Summary pages will not display the user. The Citect SCADA compiler will now check case sensitivity for roles to prevent this from occurring.
On a Turkish operating system, the error message “Invalid ruleset entered” occured when applying an alarm filter using "OnTime". Filters using "OnTime" are now correctly handled on a Turkish operating system.
When the alarm server was processing HRes (legacy time stamped) alarms, there was the potential for Citect SCADA to shut down unexpectedly. Legacy time stamped alarms are now handled correctly.
If an advanced alarm is deleted via server reload right after the advanced alarm became active it may have caused the alarm server to stop. This has been fixed.
DspSym will leave traces behind of the old genie when a smaller genie is displayed on the same AN. This problem has been addressed. When new genie is displayed using DspSym on the same AN where another genie was displayed, no residue of the previous genie will leave behind.
A client would launch several command prompts for SE.Citect.PlaySound.exe when audible alarms were used. SE.Citect.PlaySound.exe is a program that was created to to play audible warning sounds to work around a memory leak issue in some versions of Windows. Now, when it is launched, it is not visible on the screen or in the task bar, and it does not block Cicode.
The Cicode function AlarmSetThresholdRec() would not reset threshold when the third argument was left blank. Setting the threshold to empty will now set the value to the numeric value that is the equivalient of an unconfigured threshold.
When shutting down a Situational Awareness project, the client process may report hardware alarms with error code 536 or 274. The cause of the hardware alarms has now been fixed.
The VariableQuality function did not correctly handle the VARIANT type passed to it so reported the wrong quality. This problem is now fixed.
CitectIDE cannot start when the User folder is on a slow network drive. The initial privilege check will now retry so that a slow connection can complete other activities on the file being checked.
The Citect SCADA compiler was incorrectly compiling a superseded driver address format '%N+%R...'. This would result in the variable.RDB containing incorrect tag runtime data. A flag is now used in the compiler to indicate which tag database handle is current for the tag enumerator, so the correct tag record number can be retrieved.
The Computer Setup Wizard was displayed when a project is run for the first time. If the user had two compiled projects ready to run, switching between the projects and clicking Run did not start the Computer Setup Wizard. This behavior has been modified such that the Computer Setup Wizard will be displayed when the user switches to a different project and tries to run the project.
The deployment process would not expand the CustFiles.zip files, which meant processes such as the I/O Server process did not have access to the zipped file during the process start up. Unpacking of the CustFiles.zip now occurs during deployment.
When a user logged in to Citect SCADA runtime using English locale on a non-English installation, some of the buttons displayed on dialogs would show unexpected characters. The conversion of characters retrieved from the resource DLL is now handled correctly.
When Graphics Builder used an associated NDX file to perform key based reads on DBF files, the graphics database could become corrupted if the NDX and DBF files do not match. Now, if Citect SCADA is set to use NDXs to access DBFs ([CtEdit]DbfNdxMode = 0), Graphics Builder will iterate through all the page related DBFs to check if they are empty or not. If a page DBF is empty, its index is reset.
Graphics Builder crashes when adding text to a new SxW page immediately after startup. This problem cannot be reproduced.
A hardware alarm was being generated when the alarm filter popup was displayed for an SxW project. The popup now only runs once the ActiveX controls have been initialized.
Occasionally, when the default alarm or trend pages are displayed from a Situational Awareness project, the first cluster node on the tree view may appear collapsed and displayed without alarm counts. This is due to a timing issue, which has been fixed. The first cluster node in the tree view should be expanded by default. The alarm counts of its children will also be displayed.
String overlap in Runtime Help of Situational Awareness project when logon with some foreign languages, such as French, Italian, Portuguese, German, Russian and Hebrew, etc. This problem is now fixed.
Shutting down Runtime when a Situational Awareness project is running sometimes caused an error to be logged in the syslog.dat that the map was not closed. This problem has been resolved.
On a Situational Awareness project, when removing bypass using the Interlocks information zone, cluster not found hardware alarm was being displayed. This problem is now fixed.
The text on the tabs in the info zone header gradually shifts horizontally when continually shuffling the tabs. This problem has been fixed.
The Treeview genie prior to the fix had to use a search text box. As a result, when there was no textbox configured on the page, and the page was displayed, it would trigger a hardware alarm as it could not find the Search box. The genie has been modified so the user can leave the Search field blank if the user does not want to have a search box on the page. Under this configuration, no hardware alarm will be triggered at runtime.
When a project created from the SA_Style_1_MultiRes starter project was run, the error "Navigation pane not found" was being displayed. This problem has been fixed now.
There was no way to trigger a customised treeview to refresh its underlying data. Cicode function _Treeview_Reload has been made into a public function. User can now call this function to reload the custom data of the customised tree view.
In Situational Awareness projects, custom column data was not cleared in tree view when the view changed. This has been fixed now.
"Invalid argument passed" hardware alarms were reported when selecting different equipment on a page made up of Composite Genies from the SA_Library include project. This problem is now fixed.
Occasionally the I/O server would not startup when the PSIServer log category was enabled during a debugging session. This was caused by an unhandled null value when the tag value quality was bad. The null value is now handled and logged as "<null>" in the I/O server trace log.
If the Cicode IO Device entry is incorrect, that is, it is not an IOBlockedRead object, a blank string is returned for the debug output.
The "LOGSTATE" field in alarm log file was not translated according to [Language]LocalLanguage setting in Citect.INI file. The system now applies the translation to the log state description in the the language specified in [Language]LocalLanguage INI parameter.
Process Analyst scaling would not resolve correctly in a multi-cluster environment with the duplicated tag names defined across multiple clusters. This would happen when there was some ambiguity in Cicode expressions that did not specify a cluster name as part of the tag name when the project contains multiple clusters. The problem can be resolved by adding the cluster name in the expression. To support this, a new compiler warning has been implemented to warn users about the potential ambiguity, "W1039 Tag usage is ambiguous...". The new warning can be suppressed with the Citect.ini parameter [CtEdit]SuppressCompilerWarning = W1019.
When defining a search filter for adding new pen(s) in Process Analyst, you had to use the same language that the trend server used for the "Comment" field. Client locale information is now stored in a browse session so the server knows what language the client is using. The server loads the dictionary for the language before applying filtering.
When a customer was operating CitectSCADA under the Turkish locale or had manually set the regional format of their machine to "Turkish (Turkey)" a variable tag search in Process Analyst would result in error code 0x1000019E and no matching tags would be returned. This was due to the way in which the letter "i" is treated in Turkish where the uppercase variant is the dotted "?", as opposed to the lack of a dot in English. Searching for variable tags is implemented using Regex expressions to find a match in the input string, which in this case comprises of tag field names, such as "iodev". By default however, when the regular expression engine performs case-insensitive comparisons, it uses the casing conventions of the current culture to determine equivalent uppercase and lowercase characters. The issue was therefore resolved by specifying the flag "RegexOptions.CultureInvariant" in the call to Regex.IsMatch which would then correctly yield a list of matching variable tags.
The Process Analyst would stop working when attempting to change the style or color of an alarm pen. The properties can now be adjusted without implication.
A hardware alarm was being generated every time a triggered report was sent to printer with format file as '.txt'. The associated Cicode functions have been modified to handle this scenario correctly.
If a DBF device was configured to roll over at 00:00:00, the one at 1st Jan 00:00:00 may have been missing. This now works correctly.
The Printer Setup dialog launched from the Print button on the Database Exchange ActiveX control would not always direct the printout to the selected printer. In addition, it would not honor the print settings selected on the dialog. The printout always follows the system default. The printout will now be directed to the printer selected by the user and honors settings such as orientation, paper size and number of copies. Note that the changes are not entirely compatible with the "Microsoft Print to PDF" printer since the June 2020 Windows 10 update. If this is your last selected printer, the page orientation selectable from the separate Settings button on the control will not be preserved on the printer setup dialog. You will need to select it again from the latter dialog.
The analog alarm delay fields (HHDelay, HDelay, LDelay, LLDelay & DevDelay) are now accessible using the Cicode functions AlmBrowseOpen and AlmBrowseGetField, as well as AlarmGetFieldRec and on alarm lists.
There was no way to change the print setting of the Database Exchange ActiveX control if its menu bar was set to hidden. The print setting is now exposed via several ActiveX control properties, namely PrintOrientation (1 - Portrait, 2 - Landscape), PrintPageHeader (0 - not print, 1 - print) and PrintPageNumber (0 - not print, 1 - print). The user can now use the Cicode function _ObjectSetProperty to change them with Cicode.
User can now specify a day range in the Special Days View of Scheduler by specifying the Start and End day. Special days that are adjacent to each other and have the same name will be grouped together into a single block in the Special Days View.