DeltaV Live Stations Layout (Setting Alarm Thresholds)

Hello,

I am working on DeltaV Operate to Live migration project and kind of stuck at setting alarm thresholds. Operator stations and Pro Stations have different alarm threshold values, it was way easier in DV Operate to set those values in USERSETTINGS by comparing the station name. But in Live i found there is no help available to get the same result. The default code i found in live default layout (Interaction tab) is look like passing the global variable values to some external application (SAT.exe) to set the threshold for the station. I don't understand what they are doing and there is no help available in Books Online. I have tried to write directly to the global alarm threshold variable defined in the standard->Emerson->Common->Alarm Priority folder but it looks like we can not modify those variables in the script.

So if anyone has faced the similar kind of issue, please share your experience or if someone knows how to deal with alarm threshold variables in Live (when you have different values for different stations), please share.

Thanks

Syed 

6 Replies

  • You are pretty much there.  The code uses the Standards to create the "tthresholds" string and that is passed as an option string to the SAT program.  GL.Library.S_SAT_path holds the name of the program that sets the thresholds.

    You would modify this script to use whatever Threshold values you want and define Thresholds variable as desired.  

      

    So if I create a set of Threshold variables in the Layout, and use something like this instead, I can set each layout to use different Threshold values and thus set each station as needed.

    let thresholds = Lyt.ProcAlmThresh + "," + Lyt.DevAlmThresh + "," + Lyt.HWAlmThresh + "," + Lyt.SISProcAlmThresh + "," + Lyt.SISDevAlmThresh + "," + Lyt.SISHWAlmThresh;
    await ENV.RunAsync(GL.Library.S_SAT_path, thresholds);

    But what you really want is a function that will look at the current workstation name and select the desired thresholds.  As you add new consoles, you'd have to update the assigned layout with the console name, or have a default for unspecified consoles.  Not sure if the workstation name is available.  If it is, you could use it and make your selection dynamic.  

    You could also create some standards like S_ProThresholds, S_OpThreshholds and in each of these defined the string 4,6,5,4,6,7, or whatever threshold values you want for each station type.  Then create your IF or case statement to define thresholds:

    If Workstation == BOB then

    let thresholds = GL.Library.S_ProThresholds

    await ENV.RunAsync(GL.Library.S_SAT_path, thresholds);

    The Standards in the database are not writeable.  They are system wide named objects that allow us to "tune" the final look and feel of Live.  Writeable Global variables would be LYT variables, which are available to all levels.  Unlike Operate, where it would use a User.FXG variable if named the same as the FRSglobals, Live lets you modify any OOB standards or functions, and you can rename them globally.  

    I'm not sure using Lyt variables is the way to go.  Have to think about that.  But setting the thresholds is done running that commnad and passing the desired values as a string.

    Andre Dicaire

  • In reply to Andre Dicaire:

    Thanks Andre, i will try it tomorrow and will update you on this.
  • In reply to Andre Dicaire:

    Hello Andre,

    I have tried by creating a layout variable but it didn't work. I don't know how to check the SAT application that it is getting and passing the threshold values. The alarm GEM is looking at the standard variable S_ProcAlmThresh value. So i followed the same way Emerson HPG are doing.

    Thanks
    Syed
  • In reply to Andre Dicaire:

    Hey Andre,

    It worked with the Active alarm list and alarm banner. I am wondering that default fp active alarm list still shows all alarms. So i think we have to check mark "Follow Alarm Banner" on the Filter tab of active alarm list Gem used with the faceplates. Otherwise even after defining different threshold values for the stations, fp alarm list will still follow and show the module alarms (no filter applies).
    Secondly in DeltaV live i am creating new Gems, so alarms visibility condition will be different than in DeltaV Operate because in Operate we were writing to the GL threshold variables in usersettings and was easier to compare the alarm priority number of the module with the station alarm threshold value for visibility. Now in Live i don't think we can do the same. So i created new global variables set for PRO and OP stations and hard coded the threshold limits and compare with the module alarm priority for Gem alarm indication visibility.
    I want your point of view on this approach.

    Thanks
    Syed
  • In reply to Syed Zaidi:

    Its funny how issues seem to come up at the same time in different locations. We were just investigating how to manage Alarm presentation in Live in lieu of the differences between Operate GlobalVariables and Live Standards. If you'd asked me last week about this, I would not have know of what you speak.

    With respect to Faceplate alarms, I'm not sure I would worry about that. The Alarm Thresholds focus the Alarm Banner and Alarm list on what matters in terms of actionable alarms the Operator should respond to. Having additional Alarms present in the faceplate simply gives the operator full information on that specific module, down at an L4 level of detail. The faceplate might serve Maintenance as well looking at module level alert information.

    In the Alarm Icon visibility, teh OOB GEMS look at the S_ProcALMThresh standard. And as you've explained, this value is not dynamic or writable. My workaround was to add 6 Layout variables for the 6 Threshold values. These values can then be set as needed using on Open Scripts. Then these become your Global Alarm Threshold variables and you could replace the OOB reference to standard and use the global variable. If the global variables use the Standards for their default value and you do nothing to change them, then alarm thresholds will follow the variables.

    By doing this, you are creating the same environment with runtime global variables that read and write. The layout Open script is similar to the user settings file where you initialize your variables.

    Andre Dicaire