Skip to content

State Machine Diagrams

System Wide State Diagram

graph
    classDef empty height:0px,width:0px,stroke:none;

    SAFE(SAFE)
    IDLE(IDLE)
    INIT_START@{shape: dbl-circ, label: Boot} --> INITIALISE
    INITIALISE(INITIALISE)              -- Initialisation complete --> CALIBRATE
    CALIBRATE(CALIBRATE)                -- Contactors Open --> SAFE
    SAFE(SAFE)                          -- Faults Cleared & Idle Command --> IDLE

    CHARGE_INIT(CHARGE_INIT)            -- Idle Command             --> IDLE
    CONNECT(CONNECT)                    -- Idle Command             --> IDLE
    CHARGE_STOPPING(CHARGE_STOPPING)    -- Contactors Open          --> IDLE
    PRECHARGE(PRECHARGE)                -- Idle Command             --> IDLE
    ENABLED(ENABLED)                    -- Idle Command             --> IDLE

    IDLE                                -- Charge Init Command      --> CHARGE_INIT
    IDLE                                -- Connect Command          --> CONNECT

    CONNECT                             -- Fault                    -->  DISCONNECT
    PRECHARGE                           -- Fault                    -->  DISCONNECT
    ENABLED                             -- Fault                    -->  DISCONNECT
    CHARGE_INIT                         -- Fault                    -->  DISCONNECT
    CHARGE_CONNECT                      -- Fault                    -->  DISCONNECT
    CHARGE_ENABLED                      -- Fault                    -->  DISCONNECT
    CHARGE_STOPPING                     -- Fault                    -->  DISCONNECT
    DISCONNECT(DISCONNECT)              -- Time Passed              --> SAFE

    CHARGE_INIT(CHARGE_INIT)            -- Charge Enable Command    --> CHARGE_CONNECT
    CHARGE_CONNECT(CHARGE_CONNECT)      -- Precharge Passes         --> CHARGE_ENABLED
    CHARGE_CONNECT(CHARGE_CONNECT)      -- Idle Command             --> CHARGE_STOPPING
    CHARGE_ENABLED(CHARGE_ENABLED)      -- Idle Command             --> CHARGE_STOPPING


    CONNECT(CONNECT)                    -- Enable Command           --> PRECHARGE
    PRECHARGE(PRECHARGE)                -- Precharge Passes         --> ENABLED

Initialisation State Diagram

graph
    subgraph Initialisation
        INIT_START@{shape: dbl-circ, label: Boot} --> INITIALISE
        INITIALISE(INITIALISE) -- Initialisation complete --> CALIBRATE
        CALIBRATE(CALIBRATE) -- Contactors Open --> SAFE
        SAFE(SAFE) -- Idle Command --> IDLE(IDLE)
    end

Discharging State Diagram

graph
    subgraph Discharging

        direction TB
        IDLE(IDLE) -- Connect Command --> CONNECT
        CONNECT(CONNECT) -- Enable Command --> PRECHARGE
        PRECHARGE(PRECHARGE) -- Precharge Passes --> ENABLED

        CONNECT(CONNECT) -- Idle Command --> IDLE
        PRECHARGE(PRECHARGE) -- Idle Command --> IDLE
        ENABLED(ENABLED) -- Idle Command --> IDLE

        CONNECT -- Fault --> DISCONNECT
        PRECHARGE -- Fault --> DISCONNECT
        ENABLED -- Fault --> DISCONNECT
        DISCONNECT(DISCONNECT) -- Time Passed --> SAFE
        SAFE(SAFE) -- Faults Cleared, Idle Command --> IDLE
    end

Charging State Diagram

graph
    subgraph Charging
        direction TB
        IDLE(IDLE) -- Charge Init Command --> CHARGE_INIT
        CHARGE_INIT(CHARGE_INIT) -- Charge Enable Command --> CHARGE_CONNECT
        CHARGE_CONNECT(CHARGE_CONNECT) -- Precharge Passes --> CHARGE_ENABLED
        CHARGE_ENABLED(CHARGE_ENABLED) -- Idle Command --> CHARGE_STOPPING
        CHARGE_STOPPING(CHARGE_STOPPING) -- Contactors Open --> IDLE

        CHARGE_INIT(CHARGE_INIT) -- Idle Command --> IDLE
        CHARGE_CONNECT(CHARGE_CONNECT) -- Idle Command --> CHARGE_STOPPING

        CHARGE_INIT -- Fault --> DISCONNECT
        CHARGE_CONNECT -- Fault --> DISCONNECT
        CHARGE_ENABLED -- Fault --> DISCONNECT
        CHARGE_STOPPING -- Fault --> DISCONNECT

        DISCONNECT(DISCONNECT) -- Time Passed --> SAFE
        SAFE(SAFE) -- Faults Cleared, Idle Command --> IDLE
    end