7 Aprile 2021 alle 14:34 #146073NULLPartecipante
I have an application we use for mobile systems deployed in field, where the number of connected devices and tags vary. Therefore, the names of variables in the HMI application have been kept generic so that the same application may be used in each deployment. The devices’ actual instrument tags are then stored to separate tag variables (string) once the system is installed in field.
Each of these devices is represented by a structured variable called dtDetector. The members of this datatype have associated template alarms to make life easier, as the same alarm then can be used for members of multiple devices. It then looks something like this:
Detector1, 2, 3 etc.. <dtDetector>
– AlarmHH <name of structure member>
> ConfirmedAlarm <name of alarm>
But one consequence of this is that the alarm list will always show Detector1:BatteryLow – (some alarm text) and so on, and never its actual instrument tag that is used in field.
What I would like to do, is to replace the text Detector1:<…> with 70-WGD-1403:<…> and so on for each corresponding tag. The instrument tag itself is stored inside a separate variable named Detector1_Tag, which can be modified on screen. The content of this string should then replace the Detector1 part, and so on.
Is there a way to achieve this with minimal fuss?
Thanks in advance9 Aprile 2021 alle 15:32 #146105MODERATORAmministratore del forum
It is possible to display the value of a Variable within the text inserted in the “Alarm Text” property using the following syntax:
for example, when needing to display the value of VAR00001 in the Alarm text, the string will be composed as:
Alarm Title %(VAR00001)
Having done this, the moment an alarm is triggered (ALLARM ON event) the variable value is dynamically displayed in the Alarm Window, if opened at that instant, and recorded in the Alarms Historical Log at the same time.
If the variable value is subjected to another change after the Alarm ON event, the text will continue displaying the same value the moment the Alarm ON was triggered.
The moment in which the cause of the Alarm is resolved generating the “ALARM OFF” event, the value of the variable which is recorded and displayed in the Alarm Text is the one it has in the same event instance, therefore if it changes again the new value will be displayed.
As regards to the ACKNOWLEDGE (ACK) and RESET events, the variable value displayed in the alarm text refers to the ON or OFF event deriving from the ACK or RESET.
In case in which a an ID String from the String Table has been associated to the “Alarm Text” property, the %(VariableName) syntax will have to be inserted in the text of the string in the Project’s String table.
In cases where the alarm text has to support the multilanguage Alarm Log and Runtime it must contain special ID-String $(ID-String) directly. For example, if you need to insert the “VAR00001” variable value in the text that contains the “String01” ID-String, the text to be set in the Alarm Threshold’s ‘Threshold Name’ or ‘Alarm Text’ property will be: $(String01)%(VAR00001). Therefore “String01” ID-String should already be in the String Table with the text translated in the different languages, for example: “Allarme Motore 01 – Ampere=” in Italian and “Motor 01 in Alarm – Ampere=” in English. When the variable obtains the 50 value in runtime, the alarm text will result as “Allarme Motore 01 – Ampere=50” in Italian and when the language is changed to English it will result as “Motor 01 in Alarm – Ampere=50”.
In particular cases can be considered where various ID-Stings and Variable values are concatenated for the “Alarm Text” property for example:
$(HisLog00) – $(DirectAlr) – VAR13=%(VAR00013)
The concatenation of more than one variable value (eg. “VAR00008 = %(VAR00008) and VAR00003 = %(VAR00003)” and ID-String (eg.
“@(ID-Str01) – @(ID-Str02)”) is not supported when the Multilanguage Log Management is active. In this case you will need to use a mixed syntax such as::
$(ID-Str01) – $(ID-Str02)
If you use the Alarm as a Template, the Variable Name can also be inserted in the String Table as an ID-String as well.
- Devi essere connesso per rispondere a questo topic.