BMS技術梳理


從事BMS軟件設計已有3年,自覺還沒有真正的入門,不過還是有一些心得是想可以分享的,也是對自己的知識做一個梳理吧。

  • 初稿

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

一聽到,新能源汽車,很多人的第一印象,不就是,以電池代替汽油給汽車提供動力嘛。是的,大家都是聰明人,一下子抓住了事物的本質。對,就是這樣。就像小時候,我們玩的四驅車,本質都是一樣的,不要聽別人忽悠,有多神秘似的。

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

概要

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

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

一、信號采集

顧名思義,電池管理系統,首先管理的對象是電池。我們就必須對當前電池的狀態有一個細致的了解,也不能什么都不知道就用開始電池。電池的狀態,主要表現為以下的幾個方面。

  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。我們一般來說都會放大余量,安全問題再怎么關注都不差。

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

簡單說一下優缺點:

  • 單橋檢測,就是在主正或者主負一端加一個繼電器,優點是節約成本,減少繼電器本身兩端的電壓而導致的誤差。缺點也很明顯,如果接在主正繼電器一側,恰好主正的絕緣電阻值較大,會有較大的誤差(主要是正負兩端采集的倍數過大)。
  • 雙橋檢測,就是正負兩端都加一個繼電器。缺點是成本高,采集精度下降。優點,減少兩端的采集倍數,算出的值相對准確

二、數據處理

之前一直在思考,什么是程序,程序的本質是什么?
我的理解“程序就是一種控制思想,一種因果變化”。

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

關鍵:

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

數據的處理可以從以下的兩個方面考慮:

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

數據,我將它分為兩類

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

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

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

  1. 數據:不同狀態下,多個數據,取權重。
  2. 數據:
    1. 去除在范圍之外的數據,多個采樣,取有效值的均值。
    2. 對於超范圍的數據,設置標志位,故障處理。
  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. 電池知識的深入了解


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM