[INSTRM-711] Implement Simplified alertsActor for LAM AIT Created: 16/Jul/19  Updated: 28/Aug/19  Resolved: 22/Aug/19

Status: Done
Project: Instrument control development
Component/s: ics_alertsActor
Affects Version/s: None
Fix Version/s: None

Type: Story Priority: Major
Reporter: hassan Assignee: arnaud.lefur
Resolution: Done Votes: 0
Labels: SM1
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Relates
relates to INSTRM-451 Implement and use alertsActor for LAM... Done
Story Points: 2
Sprint: SM1-2019 K, SM1-2019 L, SM1-2019 M
Reviewers: cloomis

 Description   

As discussed in last ICS/DRP+SpS telecon 2019-07-10, instead of the full alertsActor implementation of INSTRM-451, implement a simplified solution where the actor reads a YAML file with threshold and apply those thresholds to generate STS keywords.



 Comments   
Comment by cloomis [ 16/Jul/19 ]

Specifically, there is a template config file for alerts in config/keywordAlerts.py, and I suggest that we implement only the limitsAlert part. E.g.

  meb:                          # MCS E-Box
    flow:
      <<: *LIMITS_ALERT
      limits: [0.0, null]
      alertFmt: 'coolant flow has stopped'
    temps[0]:
      <<: *LIMITS_ALERT
      limits: [10.0, 25.0]
      alertFmt: 'temperature out of range'

  xcu_{cam}:                    # All XCUs
    pcmPower[bus1]:
      <<: *LIMITS_ALERT
      limits: [23.5, null]
      alertFmt: 'Input power is failing!!: {value}V'
    pcmPower[bus2]:
      <<: *LIMITS_ALERT
      limits: [23.5, null]
      alertFmt: 'Input power is failing!!: {value}V'
Comment by cloomis [ 16/Jul/19 ]

And I'll point out INSTRM-311. I believe that this is the sane thing to do:

  • make all STS types STRING+INTEGER or STRING+FLOAT.
  • make that STRING "OK" or something useful to a human
  • STS logic only looks at the OK/other (and a couple of timeouts)
Comment by hassan [ 17/Jul/19 ]

cloomis: Is your proposal above for the alertFmt in config/keywordAlerts.yaml ? And then regarding the STS logic, would that be a configuration for the 'real' STS server?

Comment by cloomis [ 17/Jul/19 ]

Yes. Exactly the same logic for both the fake and the real STS server. I don't think the alertsActor can tell the difference.

Note that the actor is currently using the simpler STS.yaml, where the magic integers are the assigned STS IDs. I think we should merge STS.yaml and the more expressive keywordAlerts.yaml Obviously for "STRING+FLOAT" above I should have written "FLOAT+TEXT".

The existing Controllers/actorRules.py wires the STS.yaml keywords to automatically forward to the STS server when they get updated. It actually already checks whether there is an entry in .actor.activeAlerts and forwards that instead of "OK". We need to also wire in any limit, etc. checks, which just need to set the entry in actor.activeAlerts.

Note also that we probably do not need to debounce or latch errors, since the STS server does that for us. That is a pretty significant simplification. I.e. if a key field goes back within its limits, we can simply set it back to "OK" – the STS server will deal with the latching and give the human a way to clean and rearm. Very nice.

Comment by hassan [ 18/Jul/19 ]

Alerts should be generated on the main pressures, temperatures and voltages.

Generated at Sat Apr 19 13:21:12 JST 2025 using Jira 8.3.4#803005-sha1:1f96e09b3c60279a408a2ae47be3c745f571388b.