Skip to content

BMS D1000 Gen2 State Sequence Diagram

Idle Sequence

sequenceDiagram
    box rgba(255, 255, 255, 1) ECU
        participant ECU as Control Unit
    end
    box rgba(255, 255, 255, 1) BMS
        participant BMS as D1000 Gen2 BMS
        participant BATT as Battery
    end
    Note over BMS,BATT: IDLE State
    BMS->>ECU: IDLE State
    BMS->>ECU: All contactors open
    loop
        alt Idle
            ECU->>BMS: IDLE Command [0x01]
        else Enable
            ECU->>BMS: Connect Command [0x02]
            break
                Note over BMS,BATT: Go to Enable Sequence
            end
        else Charge
            ECU->>BMS: Charge Initialisation Command [0x08]
            break
                Note over BMS,BATT: Go to Charge Sequence
            end
        else Error
            break
                Note over BMS, BATT: Go to Safe Sequence
            end
        end
    end

Enable Sequence

sequenceDiagram
    box rgba(255, 255, 255, 1) ECU
        participant ECU as Control Unit
    end
    box rgba(255, 255, 255, 1) BMS
        participant BMS as D1000 Gen2 BMS
        participant BATT as Battery
    end

    Note over BMS, BATT: Connect state
    BMS->>ECU: CONNECT State
    BMS->>ECU: Negative contactor closed
    BATT->>+BMS: Load Voltage

    alt Terminate
        ECU->>BMS: Idle Command [0x01]
        break
            Note over BMS, BATT: Go to Idle Sequence
        end
    else Error
        break
            Note over BMS, BATT: Go to Safe Sequence
        end
    end

    ECU->>BMS: Enable Command [0x04]
    Note over BMS, BATT: Precharge state
    BMS->>ECU: PRECHARGE State
    BMS->>ECU: Precharge contactor closed
    BATT->>BMS: Precharge Current

    critical Wait for precharge completion
        BATT->>BMS: Load Voltage ~= Battery Voltage
        BATT->>BMS: Minimal non-linear precharge current
    option Terminate
        ECU->>BMS: Idle Command [0x01]
        break
            Note over BMS, BATT: Go to Idle Sequence
        end
    option Timeout
        break Timeout (default 25 seconds)
            Note over BMS, BATT: Go to Safe Sequence
        end
    option Error
        break Error
            Note over BMS, BATT: Go to Safe Sequence
        end
    end
    Note over BMS, BATT: ENABLED state
    BMS->>ECU: ENABLED State
    BMS->>ECU: Positive contactor closed
    BMS->>ECU: Precharge contactor open
    loop Enabled
        BATT->>BMS: Currents, Voltages, Temperatures
        BATT->>BMS: Pressure, Humidity
        alt Terminate
            ECU->>BMS: Idle Command [0x01]
            break
                Note over BMS, BATT: Go to Idle Sequence
            end
        else Continue
            ECU->>BMS: Enable Command [0x04]
        else Error
            break
                Note over BMS, BATT: Go to Safe Sequence
            end
        end

    end

Charge Sequence

sequenceDiagram
    box rgba(255, 255, 255, 1) ECU
        participant ECU as Control Unit
    end
    box rgba(255, 255, 255, 1) BMS
        participant BMS as D1000 Gen2 BMS
        participant BATT as Battery
    end
    participant EVCC as EVCC
    participant EVSE as EVSE

    Note over BMS, BATT: Charge Initialisation state
    BMS->>ECU: CHARGE_INIT State

    alt Terminate
        ECU->>BMS: Idle Command [0x01]
        break
            Note over BMS, BATT: Go to Idle Sequence
        end
    else Error
        break
            Note over BMS, BATT: Go to Safe Sequence
        end
    end

    alt Configuration Charge Method: None
        Note over BMS, BATT: Go to Safe Sequence
    else Configuration Charge Method: EVSE
        BMS->>EVCC: Initiate charge sequence
        EVCC->>EVSE: Charge parameters
        EVSE->>EVCC: Charge parameters
        EVCC->>BMS: Ready for precharge
    end

    ECU->>BMS: Charge Enable command [0x10]
    Note over BMS, BATT: Charge Connect state
    BMS->>ECU: CHARGE_CONNECT state
    BMS->>ECU: Negative charge contactor closed



    loop Precharge
        BATT->>BMS: Charger Voltage, Battery Voltage

        critical Wait for precharge completion
            ECU->>BMS: Charge Enable Command [0x10]
            alt Configuration Charge Method: EVSE
                BMS->>EVCC: Battery voltage
                BMS->>EVCC: Charger voltage
                EVSE->>EVCC: EVSE voltage
                EVCC->>BMS: Close contactor request [Precharge complete]
            else Configuration Charge Method: Other
                BATT->>BMS: Charger Voltage ~= Battery Voltage [Precharge complete]
            end
        option Terminate
            ECU->>BMS: Idle Command [0x01]
            break
                alt Configuration Charge Method: EVSE
                    BMS->>EVCC: Terminate session
                    EVCC->>EVSE: Terminate session
                end

                Note over BMS, BATT: Go to Idle Sequence
            end
        option
            break Timeout (default 50 seconds)
                Note over BMS, BATT: Go to Disconnect Sequence
            end
        option
            break Error
                Note over BMS, BATT: Go to Disconnect Sequence
            end
        end
    end

    Note over BMS, BATT: Charge Enabled state
    BMS->>ECU: CHARGE_ENABLED state
    BMS->>ECU: Positive charge contactor closed
    loop Charge Enabled
        BATT->>BMS: Currents, Voltages, Temperatures
        BATT->>BMS: Pressure, Humidity
        BMS->>BATT: Balancing control
        alt Terminate
            alt Requested
                ECU->>BMS: Idle Command [0x01]
            else Battery Full
                BATT->>BMS: SoC 100%
            end
            Note over BMS, BATT: Go to Charge Stopping state

        else Continue
            ECU->>BMS: Charge Enable Command [0x10]
            BATT->>BMS: Currents, Voltages, Temperatures
            BATT->>BMS: Pressure, Humidity
            alt Configuration Charge Method: EVSE
                BMS->>EVCC: Requested charge current, SoC
                EVCC->>EVSE: Requested charge current, SoC
                EVSE->>EVCC: EVSE charge current
            end

        else Error
            break
                Note over BMS, BATT: Go to Disconnect Sequence
            end
        end
    end

    Note over BMS, BATT: Charge Stopping state
    BMS->>ECU: CHARGE_STOPPING state

    alt Configuration Charge Method: EVSE
        BMS->>+EVCC: Stop charging
        EVCC->>EVSE: Stop charging
        EVSE->>EVCC: EVSE charge current
        critical Contactors open
            EVCC->>-BMS: Open contactor request
        option Timeout (20 seconds)
            break
                Note over BMS, BATT: Go to Disconnect Sequence
            end
        end

        BMS->>ECU: Positive charge contactor open

        BMS->>+EVCC: Positive charge contactor open
        BATT->>BMS: Charger Voltage
        BMS->>EVCC: Charger Voltage
        EVSE->>EVCC: EVSE voltage
        EVCC->>-BMS: Welding check complete
        critical Welding check complete
            alt No welding detected
                break
                    Note over BMS, BATT: Go to Idle Sequence
                end
            else Welding detected
                break
                    Note over BMS, BATT: Go to Disconnect Sequence
                end
            end
        option Timeout (20 Seconds)
            break
                Note over BMS, BATT: Go to Disconnect Sequence
            end
        end
    else Configuration Charge Method: Other
        alt
            BATT->>BMS: Current < 5A
        else Timeout (20 Seconds)
            break
                Note over BMS, BATT: Go to Disconnect Sequence
            end
        end
        break
            Note over BMS, BATT: Go to Idle Sequence
        end
    end

Disconnect Sequence

sequenceDiagram
    box rgba(255, 255, 255, 1) ECU
        participant ECU as Control Unit
    end
    box rgba(255, 255, 255, 1) BMS
        participant BMS as D1000 Gen2 BMS
        participant BATT as Battery
    end
    Note over BMS,BATT: DISCONNECT State
    BMS->>ECU: DISCONNECT State
    BMS->>BMS: 2 second delay
    Note over BMS,BATT: Go to Safe Sequence

Safe Sequence

sequenceDiagram
    box rgba(255, 255, 255, 1) ECU
        participant ECU as Control Unit
    end
    box rgba(255, 255, 255, 1) BMS
        participant BMS as D1000 Gen2 BMS
        participant BATT as Battery
    end
    Note over BMS,BATT: SAFE State
    BMS->>ECU: SAFE State
    BMS->>ECU: All contactors open
    BATT->>BMS: Healthy
    ECU->>BMS: IDLE Command [0x01]
    Note over BMS,BATT: Go to Idle Sequence