Fixes and Minor Enhancements
Citect SCADA 2018 Update 04 (December 11, 2018)
Release Notification (Updated 07 December 2018)
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
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.
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.
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 a line was longer than the window width, the Find & Replace dialog's Replace button would only replace every other occurrence of the search text in that line. This now works as expected.
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).
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.
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 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.
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.
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.
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.