-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Map EPICS alarms to JAWS alarms #12
Comments
This may need to be divided into two separate issues/questions:
EPICS PV Integration Heterogenous Alarm Sources We'd like to originate alarms from any source (such as scripts outside of EPICS), but we haven't nailed down exactly what the expectations are for the attributes attached to alarms from various sources. There are actually two sets of attributes at the moment due to EPICS's way of alarming with attributes attached. An alarm currently has:
Attributes of a registered alarm will likely be a mix of shared items plus source specific (EPICS PV name must be included in registration of EPICS alarm, but not non-EPICS alarm). The tricky part is the active alarm attributes. Specifically, can the active alarming attributes vary, or must they be translated to match a single definition of what attributes an alarm must have? For example, we could say that all alarms, regardless of source, must match the EPICS form - contain a STAT field and a SEVR field. Or we could say all alarms must match some other single JLAB form that we define (then translate EPICS alarms into it). Or, we can say that each alarm source can define it's own set of attributes (this is what the current prototype does). We need to be careful not to duplicate attributes in the active alarm messages and registered alarm messages. For example, we would like to put a "priority" field in the registered alarms topic (as non-epics alarms would like to set priority there perhaps), but EPICS defines priority (as severity) with its active alarming messages.
|
For completeness we should mention we could force all alarms to just look like EPICS alarms (include STAT and SEVR) - this is a prominent case of the Fixed Active Alarm Message Attributes option above. This isn't great because:
There likely isn't going to be much appetite for dividing each EPICS PV into something like (21 STAT fields) X (2 SEVR fields) = 42 different logical alarms (at least not manually), especially since it sounds like only a handful of STAT field value are even recognizable. Perhaps we find some middle ground, like divide each EPICS PV into two alarms: one MAJOR and one MINOR? Or we could come up with some wildcard syntax in the registration database that maps a single registration record to multiple logical alarms? This could be similar (but also very different than) the Alarm Grouping feature? |
Mapping an EPICS monitor update to one of two unique alarms (a MAJOR and a MINOR) is problematic in our current setup because we're using Kafka Single Message Transforms (SMT) - epics2kafka-alarms to serialize messages into the kafka-alarm-system format. A Single Message Transform can only transform one-to-one for a given message and also is not supposed to maintain any state. I believe we would need to transform a single EPICS monitor update message to two unique kafka-alarm-system messages and possibly maintain state in some scenarios. There are two scenarios specifically where this would be needed:
The cost to redo this translation in a Kafka Streams app or to split it between the SMT and a new Kafka Streams app needs to be weighed with the benefit - a potentially cleaner schema. |
We're sticking with EPICs alarm mapping to JAWS alarm 1-to-1 for now. Can be re-opened later if we change our mind. |
Currently we forward EPICS CA messages into the alarm system field-for-field, making priority options (severity) alarm type specific. It might be cleaner to define priority/severity in the registration topic instead. This would mean that EPICS alarms would need to be split per severity - likely doubling our 13,000+ EPICS alarms to 26,000+ since EPICS has a two severity system: MAJOR and MINOR. However, when non-EPICS alarms are defined a priority/severity field would be shared / exist. Our epics2kafka-alarms translation layer would need to be updated. Client GUIs/HMI would likely be cleaner if all alarms have same set of possible priorities regardless of source and the alarming schema would be simpler - especially if we drop the "STAT" field, as I don't think it is used.
The text was updated successfully, but these errors were encountered: