• Not Answered

DeltaV Live: Visibility property for GEM Class

Hello All,

 

In DeltaV Live, I have created a unlinked GEM and assigned it a visibility condition.

 

 

 

 

However, after converting the Unlinked GEM into a GEM Class I am not able to see the Visibility property.

 

Although I was able to do a workaround by creating a variable and assigning it an animation, I am wondering why the Visibility property is not available on the GEM Class?

Even in the script editor I can see the GEM.Visibility property but the property is not available in the Basics Tab.

 

Regards,

Navin Singh

5 Replies

  • Hi Navin,

    Visibility is a property of an object or group of objects. In the first picture, you have selected the Unlinked GEM as indicated by the holders all around the object:

    In the second example, your are looking at the GEM Class, but no object is selected and no visibility property is available.

    This is a standard OOB GEM Class:

    Similar to your picture, without any object selected, there is no visibility property available.

    When using GEM Classes you will have 2 options:

    Option 1. At the GEM Class level, you can select all objects you want to assign visibility animation and configure it accordingly. In this image, you will see the visibility associated with the out bar below the valve body:

    Option 2: After dropping an instance of the GEM Class in a display, select the instance and assign visibility the same way you were doing with the Unlinked GEM.

    I hope this helps!

    Camilo Fadul

    Camilo Fadul | DeltaV Solution Marketing Director

    https://www.linkedin.com/in/cfadul

  • In reply to Camilo Fadul:

    Hello Camilo,

    Thanks for the response.


    As i need the visibility animation for every instance of the GEM class, I have created a variable and assigned the following script.

    It seems to work ok on the instances and the GEMs are visible/invisible as required.

    let me know if you see any issues in the script.

    Regards,

    Navin Singh

  • In reply to Navin Singh:

    Hi Navin,

    I am sorry it took me this long to get back to you. I gave this alternative a try and it seems to work well, thank you for showing me yet another way to accomplish this visibility animation!

    Best regards,

    Camilo Fadul

    Camilo Fadul | DeltaV Solution Marketing Director

    https://www.linkedin.com/in/cfadul

  • In reply to Navin Singh:

    Using the OnWrite script is pretty creative. Curious as to why you are adding visibility animation to the GEM. Have to assume you only want to see these GEMs under certain run time conditions, and not others. Wondering what your use case is.

    What I really like about your solution is that you don't have to modify the internal structure of the GEM. No need to add visibility expressions to GEM components or adding an overall grouping to have a single Visibility expression.

    A few things to consider:
    - Set Boolean variable default to FALSE: If the logic evaluates to false, does the GEM flicker and then is hidden? If the idea is to only show this once the Variable confirms a TRUE condition, I wonder if it should default to FALSE.
    - Use a conditional read with a default of false: DLSYS.CondRead(Gem.Tag....., FALSE) allows this expression to exist even if the module or Lyt variable are not present.
    - Use a Function to determine logic for visibility: Maybe. the benefit of a function is that you can administer this visibility behavior through a single global item that ensures all GEM's behave the same. Modifying a Function does not flag all Displays that use the GEMs. For instance, if you want to add a Standard that globally Enables/disables this visibility animation, you would be modifying every GEM's variable animation to include the Standard. If the animation was a library animation, adding the Standard to the expression would be a one and done change, with only the function being published. However, creating too many functions dilutes the ease of use as the function selection list gets longer and longer. Something to carefully weigh based on your use cases.
    - Optimize logic: This animation expression could be simplified-

    Gem.Visibility = newValue
    return newValue

    Having this expression on every GEM, visible or not, adds some CPU usage. Likely insignificant. But on a Quad monitor, with several popup displays (New Window/Snippets) I always seek efficient code, balanced with readability.

    If anyone is taking notes, I'd say exposing a visibility animation at the GEM Class level would be a nice enhancement to GEM's,

    And thanks for sharing your solution, Navin.

    Andre Dicaire

  • In reply to Andre Dicaire:

    Hello Andre,

    Thanks for the suggestions.
    Yes, I have already implemented the suggestion to optimize the logic and removed the if condition.
    I will have a look at the other suggestions you have provided.

    We have the requirement to hide the gems as they communicate with serial devices which might or might not be connected.
    A landing module monitors the connection status of these devices and if they are not connected switches of device module (by setting MCOMMAND to Out Of Service) and another parameter to false.
    This parameter is read by the GEM to set the visibility. The devices are not connected or disconnected frequently. So no flicker.

    We do not have many GEMS nor many displays. So, loading will not be an issue.
    So far the displays are working fine.

    Regards,

    Navin Singh