Ladies and genlemen.
We are operating a seperated control room with 6 operator stations:
GROUND FLOOR: 2 of them (OS1, OS2) ran DeltaV Operate and 2 of them (OS3, OS4) ran DeltaV Live working on the newer plants of our site
1ST FLOOR: 1 operator station (OS11) ran DeltaV Operate and 1 of them (OS12) ran DeltaV Live - also for the newer plants of our site
Because this is only a part of the whole system, the stations are NOT participating the Global Horn Acknowledge Group.
A few years ago we configured a scheduler inside DeltaV Operate and combined the stations to seperated "alarm groups". Due to the fact DeltaV Live isn´t supporting scheduling I am now searching for work arounds.
Ideas and suggestions appreciated.
Thanks in advance.
brg Stefan
Stefan Müllner Senior Plant Engineer - Automation & Systems
METADYNEA AUSTRIA GmbH
Andre Dicaire
In reply to Andre Dicaire:
In reply to Stefan Muellner:
I hear you. DeltaV Live is a different scripting environment that VBA and for those of us not familiar with TypeScript, or JAVA, one has to take some time to master the basics and understand the new syntax, especially the new DeltaV specific functions.
For the TypeScript side of things, I've relied on the Internet (Google is my friend, as Duncan would say). There are many supported functions that are not explicitly documented in BOL. like the MATH. library functions.
As for the OnWrite feature, that is definitely not well documented, by that I mean it is not documented in BOL. "Topic not found" when you search. BOL for Live does mention it, but fails to tell us about the Return function that is required.
Based on this explanation, if you define the variable as a Boolean and set its default to FALSE, and define an OnWrite script, then writing to the Variable itself within DeltaV Live, and setting it to True will trigger the Script. When the script returns a FALSE, to match its default value, the script stops running.
- Layout variables cannot be animated with Runtime data, and yet, they can have an OnWrite script. Linking the variable to a Standard allows for some global control of the default value, but the only way to trigger the script is again writing to the Variable itself, as its source is static.
Confirmed. A Layout variable linked to a standard will trigger its OnWrite Script when you write to the variable. The script will stop firing when the variable is returned to the matching value.
I created a Boolean layout variable (Lyt.Bool_Test) that will increment a number every time the script fires. I added an "if" statement and I don't return a value until the number reaches 10.
On a display, I have a datalink that allows me to write to the Bool_Test variable and view the Num_Test variable. Two observations:
- the number will increment every second, which tells me the script fires every second or so until it is equal to the configured default, which is a standard value.
- the Bool_Test variable indicates an error after two executions where it did not perform the Return function. Eventually the value reaches 10 and the script returns the TRUE and the script stops running.
The Red Heart Errors will detect an error on the datalink that a value has returned a bad status.
I added a Return false to the script so that on every execution, the script returns a value. While counting, it returns 0, which allows the script to continue firing every second.
My conclusion....
The OnWrite script of a variable can be triggered by altering either the animated source value or by modifying the Variable.
A Return function must be executed on every execution of the script to avoid a BAD status on the variable.
The script can be allowed to run indefinitely by delaying resolution that makes the variable and source equal.
Hope this helps.