First we should agree on some terms.
- Alarm reporting is assigned by Plant area to both physical consoles and logon users, but this can only be changed through configuration and download, and not dynamically at run time.
- Individual alarms can be enabled and disabled. But this is done at the source and is disabled for all users. Conditional alarms add a second level of alarm control, but again, is global for all users. Kathy makes a very good point that by using different user accounts, alarm management by user can be done simply by logging on/off.
- Alarm Filtering is a console specific feature that allows an operator to "focus" on a span of control at a particular console. Alarms can be filtered by plant Area and by Unit. Within the span of control, the alarm banner and summaries can be further filtered by priority so as to help focus an operator.
In DeltaV Operate Configure, you can open the DeltaV Operate Pictures Help. Under THISUSER Workstation Parameters, you'll find various alarm management parameters, which execute on the logged on user's assigned areas and any contained units in those areas. You can use AREAFILT and UFILT parameters and other related parameters to filter alarms on or off by plant area or by unit. (UFILTON, UFILTOFF, AREANAME[x], ALLAREAFILT)
My one caution is that your Operators should be conscious not to filter an Area or Unit such that no one sees those alarms. If you decide to try to enforce this, it will get exponentially complicated as you add Plant Areas and Units. You can set up a list of Areas and Units that can be filtered per console, and therefore prevent filtering if the item is not in the list. I would add a module to which your script would write a value indicating when an Area filter is turned on or off. Simply writing to a string parameter a value like "AREA_A Filter ON" will record a parameter change event in the Event Chronicle, along with the Operator and workstation where it was done and this string "New Value AREA_A Filter ON". You can encapsulate this into a user function that, when called, will check the current status and toggle the filter on or off. This will ensure consistency in the messages recorded.
There are many different ways to approach this. I would strive to keep it simple and robust. The existing Area Filter display offers some examples of how the commands are used. You'll need to explore these to understand how to best use them.