State Machine

The behavior of the system is managed by the state machine. The state machine is represented in the diagram below.

@startuml
state NoInternalErrors {
  state Idle
  state On {
    state TrackingAmbient
    state TrackingSetpoint
    state Manual

    [*] --> TrackingAmbient
    TrackingAmbient --> Manual : manual
    TrackingAmbient --> TrackingSetpoint : trackSetpoint
    TrackingSetpoint --> TrackingAmbient : trackAmbient
    TrackingSetpoint --> Manual : manual
    Manual --> TrackingAmbient : trackAmbient
    Manual --> TrackingSetpoint : trackSetpoint
  }
  state Fault
  state ResettingEvents
  
  [*] --> Idle
  Idle --> On : Power(on)
  On --> Fault : Alarm
  note on link
  filter over temperature alarms
  to avoid going to fault
  end note
  On --> Idle : Power(off)
  Fault --r> ResettingEvents : Reset
  Idle --> ResettingEvents : Reset
  ResettingEvents --> Idle
  On --> On : temp. OK     \nor\ntimeout
  note as n
  - temp. OK means no over temperature alarm active
  - timeout means over temperature alarm active but timeout expired
  end note
  On -up-> On : temperature fault
}

state InternalErrors {
}

[*] --> CommandMemory
CommandMemory --> InitActions : MemoryOk
InitActions --> Idle : InitOK
InitActions -[hidden]-> NoInternalErrors
NoInternalErrors -l-> InternalErrors : Error

@enduml

The two triggers that come out of the on state and go back to it are static reactions inside the on state to “enable” the alarms after certain time.