BMS技術梳理

從事BMS軟件設計已有3年,自覺尚未真正的入門,不過仍是有一些心得是想能夠分享的,也是對本身的知識作一個梳理吧。算法

  • 初稿

一個項目入手,個人理解:首先,必須明確項目的需求。只有真正的理解項目,從用戶的角度考慮,才能作出最爲適合的產品,畢竟產品最終仍是爲人服務的。安全

一聽到,新能源汽車,不少人的第一印象,不就是,以電池代替汽油給汽車提供動力嘛。是的,你們都是聰明人,一會兒抓住了事物的本質。對,就是這樣。就像小時候,咱們玩的四驅車,本質都是同樣的,不要聽別人忽悠,有多神祕似的。架構

那麼以電池代替汽油有什麼好處呢?這些都被專家們分析的雲裏霧裏,十分的高大上。其實,也就這麼幾個優勢,環保清潔(好像是一句廢話),其次仍是在這個國度電費比油費便宜。性能

概要

你們都知道要實現電池提供動力,控制終端就是電池管理系統(BMS)。測試

接下來,我會從信號採集,數據處理和控制邏輯,一一解析,我眼中的BMS設計

1、信號採集

顧名思義,電池管理系統,首先管理的對象是電池。咱們就必須對當前電池的狀態有一個細緻的瞭解,也不能什麼都不知道就用開始電池。電池的狀態,主要表現爲如下的幾個方面。code

  1. 電池的單芯電壓
  2. 電池的溫度
  3. 電池組的總電壓
  4. 電池組的總電流
  5. 電池組的絕緣電阻

下面,我就對電池信息的採集,作一簡單的說明:對象

1. 單芯電壓的檢測

電池的成組方式通常是串聯加並聯。以個人理解,串聯主要是加大整個電池模組的電壓,並聯就是增長電池的可充放電電流。產品

咱們都知道,想要能驅動電機工做,就必須給它必定的能量,能量怎麼來的,學過物理的都知道入門

P = V*I

想要 P 變大,不就得使電流電壓變大嗎?

再說電池,一節電池的最大放電電流和最大充電電流都是固定的。並聯簡單的就是將這兩個值成倍的放大。

那麼,單芯電壓到底怎麼測?就是將並聯的單芯當作一節電池使用,這節電池的兩端電壓,就是單芯電壓了。很簡單的,不是嗎?

原理雖說起來是很簡單,不過精度要求倒是挺高的,這是硬性要求。咱們通常的電池OCV曲線,是上下抖中間平的的樣子。電池的電壓稍有變化,SOC的變化就很大了。

因此呢,檢測芯片的要求也是很高的。我用到的有兩款芯片一塊是凌特的LTC6804,還有一塊是TI的EMB1428,有興趣的朋友能夠看看他們的數據手冊,瞭解一下。

2. 電池的溫度檢測

相對於電壓的高精度要求,溫度的檢測不是那麼的嚴格了。通常來講在2°的偏差內,都是可接受的。溫度的檢測,相對來講也是簡單多了,我瞭解的大多數作BMS的廠商,用的都是NTC來作檢測的。

NTC檢測溫度的原理,就是溫度值和對應溫度下電阻值一一對應,通常和另外一個電阻分壓一個標準電壓。使用單片機ADC功能就能夠簡單的獲得溫度值。

3. 電池的總電壓採集

總電壓,即觀察電池整個模組的電壓情況。通常來講,沒什麼太大的用處,只是做爲一個參考值,來用。總電壓除以電池的串聯數,就是一個大概的單芯電壓平均值。

總電壓的大小不定,這是由車輛自己的需求決定,就我所見到的電壓等級150V~800V不等。

那麼,總電壓如何採集?
經常使用的一種方法就是,將總電壓使用電阻等比例分壓,AD採集採樣電阻的兩端電壓。須要注意的是,動態電壓的變化是十分不穩定的,因此必須的消抖電路和消抖程序都是須要的。

4. 電池的總電流採集

工做模式有充有放,電流所以有正有負。

電流,我認爲這是全部電子設計中是最須要關注的一個參數。電流,是最容易引起故障,也是最爲危險的。

在BMS系統中,電流在SOC的計算,電池均衡策略中都有不可忽視的做用。

電流採集的精度和頻率都有很是高的要求。這裏我用過兩款芯片AS8510和CS5490,有興趣的朋友,能夠了解一下。

5. 電池的絕緣電阻採集

什麼是絕緣電阻? 簡單來講,就是防觸電保護的最小電阻。國標上的要求是0.1mA。咱們通常來講都會放大餘量,安全問題再怎麼關注都不差。

那麼,絕緣電阻又是怎麼測量的呢?傳統的話,有兩種測試方法,使用單橋檢測,或者雙橋檢測方式。具體的原理圖我就不貼了

簡單說一下優缺點:

  • 單橋檢測,就是在主正或者主負一端加一個繼電器,優勢是節約成本,減小繼電器自己兩端的電壓而致使的偏差。缺點也很明顯,若是接在主正繼電器一側,剛好主正的絕緣電阻值較大,會有較大的偏差(主要是正負兩端採集的倍數過大)。
  • 雙橋檢測,就是正負兩端都加一個繼電器。缺點是成本高,採集精度降低。優勢,減小兩端的採集倍數,算出的值相對準確

2、數據處理

以前一直在思考,什麼是程序,程序的本質是什麼?
個人理解「程序就是一種控制思想,一種因果變化」。

爲了實現某個功能,具現化爲某個狀態變量的輸出。就要從已有的輸入變量中選擇合適的變量做爲輸入。輸入經過某種複雜的轉換(控制實現/計算實現)獲得輸出的過程就是程序。

關鍵:

  1. 確保輸入輸出變量的準確性(數據處理)
  2. 從輸入到輸出實現的可能性(邏輯控制)

數據的處理能夠從如下的兩個方面考慮:

  • 輸出變量的處理
  • 輸入變量的處理

數據,我將它分爲兩類

  1. 功能數據
  2. 性能數據

功能數據:數據是做爲算法的必要輸入特地獲取的數據,好比上面的採集數據,SOC等;
性能數據:數據不做爲功能邏輯上的輸入,更多的是對軟硬件的穩定性安全性的一個評估做用。好比板子的輸入電壓檢測,繼電器開關的狀態檢測,CAN出錯等。

變量分兩類:數據和狀態,有如下的幾種處理方式

  1. 數據:不一樣狀態下,多個數據,取權重。
  2. 數據:
    1. 去除在範圍以外的數據,多個採樣,取有效值的均值。
    2. 對於超範圍的數據,設置標誌位,故障處理。
  3. 狀態:連續一段時間維持某一狀態不變(消抖)

數據,通過處理,若是沒有問題就能夠做爲有效輸入數據。在功能被觸發的條件下,直接被調用。
那出錯了呢?對於這個問題,專門有一個故障處理的模塊。實時的將故障點檢測出來,發給整車,而且存儲起來。

故障等級大體是這樣的分的:

  • 一級:只是報警,不作任何處理,可消退
  • 二級:報警,限速,可消退
  • 三級:報警,限速,不可消退
  • 四級:報警,制動,不可消退

具體的哪些故障對應哪一個等級,就不說了。

3、邏輯控制

邏輯控制主要有如下的幾個部分:

  • 上電自檢,肯定系統狀態
  • 繼電器控制,不一樣狀態,不一樣的繼電器數量有不一樣的控制方式
  • 充電控制,分爲快充和慢充,須要分開處理
  • 均衡控制
  • 電池加熱控制

1. 上電自檢

汽車一共有兩個工做模式:放電,充電。其中充電再分爲快充和慢充。肯定工做模式的方式是,給BMS供電的究竟是哪一個24V電源,T15/快充/慢充

只有自檢經過才容許上高壓,也就是閉合對應的繼電器。那麼,觀察哪些信號,就能夠確認自檢沒問題?

  • 全部繼電器狀態OK
  • 總電流OK
  • 絕緣電阻OK
  • 只存在一個工做模式

自檢OK,就可使能對應的CAN通信,也能夠上高壓放電和充電。

2. 繼電器控制

繼電器的控制邏輯更多的是一個前後順序

  • 開始放電
  1. 吸合負極繼電器
  2. 吸合預充繼電器
  3. 吸合放電繼電器(正極和電機之間的繼電器)
  4. 斷開預充繼電器
  • 中止放電
  1. 斷開負極繼電器
  2. 斷開放電繼電器
  • 開始充電
  1. 吸合負極繼電器
  2. 吸合充電繼電器(正極和充電機之間的繼電器)
  • 中止充電
  1. 斷開負極繼電器
  2. 斷開充電繼電器

先斷負極,再斷正極,是爲了分擔上下電的壓力;這種說法保留

3. 電池加熱控制

電池加熱主要是在電池充電的時候使用。

溫度太低,電池的活性下降,因此須要先給電池加熱,後續再充電。

基本的流程:吸合加熱繼電器,向充電機需求一個電流。此時動力和充電機同時給加熱繼電器提供電流,只是充電機電流比較大。加熱結束,斷開加熱繼電器,同時向充電機需求一個大的充電電流。

4. 充電(快充)控制

全部的控制邏輯在國標GBT 27930-2015中定義的很清楚。嚴格按照國標來基本不會出什麼問題

5. 均衡控制

均衡,是一個比較大的概念,後續再講

總結

梳理了BMS的一些基本概念,經過這個過程這才發現,我瞭解的仍是太少太生疏了。雖然作了這麼長時間的BMS,我仍是處於表面化的層次中。抱頭痛哭!

技術啊,就怕深究!!!

留下的問題:

  1. SOC算法和均衡控制算法
  2. Simulink/Stateflow模型化設計的一些知識
  3. AutoSar架構的梳理
  4. 標準化設計的一些想法
  5. 標定和bootloader
  6. 上位機MFC/Qt上的知識
  7. 電池知識的深刻了解
相關文章
相關標籤/搜索