從事BMS軟件設計已有一段時間了展运,自覺還沒有真正的入門播掷,不過還是有一些心得是想可以分享的咙边,也是對自己的知識做一個梳理吧猜煮。在我梳理之前,我發(fā)現(xiàn)網(wǎng)上已有相關的梳理败许,竟然軟件架構都差不多王带,我就借鑒了一下。
首先市殷,電池管理系統(tǒng)(BMS)是電池與用戶之間的紐帶愕撰,主要對象是二次電池,主要就是為了能夠提高電池的利用率,防止電池出現(xiàn)過度充電和過度放電搞挣,可用于電動汽車带迟,電瓶車,機器人囱桨,無人機等仓犬。
接下來,我會從信號采集舍肠,數(shù)據(jù)處理和控制邏輯搀继,進行解析我眼中的BMS。
一翠语、信號采集
顧名思義律歼,電池管理系統(tǒng),首先管理的對象是電池啡专。我們就必須對當前電池的狀態(tài)有一個細致的了解险毁,也不能什么都不知道就用開始電池。電池的狀態(tài)们童,主要表現(xiàn)為以下的幾個方面畔况。
電池的單芯電壓
電池的溫度
電池組的總電壓
電池組的總電流
電池組的絕緣電阻
下面,我就對電池信息的采集慧库,做一簡單的說明:
1. 單芯電壓的檢測
電池的成組方式一般是串聯(lián)加并聯(lián)跷跪。以我的理解,串聯(lián)主要是加大整個電池模組的電壓齐板,并聯(lián)就是增加電池的可充放電電流吵瞻。
我們都知道,想要能驅動電機工作甘磨,就必須給它一定的能量橡羞,能量怎么來的,學過物理的都知道
P= V*I
想要 P 變大济舆,不就得使電流電壓變大嗎卿泽?
再說電池,一節(jié)電池的最大放電電流和最大充電電流都是固定的滋觉。并聯(lián)簡單的就是將這兩個值成倍的放大签夭。
那么,單芯電壓到底怎么測椎侠?就是將并聯(lián)的單芯當做一節(jié)電池使用第租,這節(jié)電池的兩端電壓,就是單芯電壓了我纪。很簡單的慎宾,不是嗎儡羔?
原理雖然說起來是很簡單,不過精度要求卻是挺高的璧诵,這是硬性要求汰蜘。我們一般的電池OCV曲線,是上下抖中間平的的樣子之宿。電池的電壓稍有變化族操,SOC的變化就很大了。
2. 電池的溫度檢測
相對于電壓的高精度要求比被,溫度的檢測不是那么的嚴格了色难。一般來說在2°的誤差內(nèi),都是可接受的等缀。溫度的檢測枷莉,相對來說也是簡單多了,我了解的大多數(shù)做BMS的廠商尺迂,用的都是NTC來做檢測的笤妙。
NTC檢測溫度的原理,就是溫度值和對應溫度下電阻值一一對應噪裕,一般和另一個電阻分壓一個標準電壓蹲盘。使用單片機ADC功能就可以簡單的得到溫度值。
3. 電池的總電壓采集
總電壓膳音,即觀察電池整個模組的電壓狀況召衔。一般來說,沒什么太大的用處祭陷,只是作為一個參考值苍凛,來用”荆總電壓除以電池的串聯(lián)數(shù)醇蝴,就是一個大概的單芯電壓平均值。
總電壓的大小不定毒姨,這是由車輛本身的需求決定哑蔫,就我所見到的電壓等級150V~800V不等。
那么弧呐,總電壓如何采集?
常用的一種方法就是嵌纲,將總電壓使用電阻等比例分壓俘枫,AD采集采樣電阻的兩端電壓。需要注意的是逮走,動態(tài)電壓的變化是十分不穩(wěn)定的鸠蚪,所以必須的消抖電路和消抖程序都是需要的。
4. 電池的總電流采集
工作模式有充有放,電流因此有正有負茅信。
電流盾舌,我認為這是所有電子設計中是最需要關注的一個參數(shù)。電流蘸鲸,是最容易引發(fā)故障妖谴,也是最為危險的。
在BMS系統(tǒng)中酌摇,電流在SOC的計算膝舅,電池均衡策略中都有不可忽視的作用。
5. 電池的絕緣電阻采集
什么是絕緣電阻窑多? 簡單來說仍稀,就是防觸電保護的最小電阻。國標上的要求是0.1mA埂息。我們一般來說都會放大余量技潘,安全問題再怎么關注都不差。
那么千康,絕緣電阻又是怎么測量的呢崭篡?
當前主流的絕緣檢測方法有兩種,電橋法和交流注入法吧秕。使用較多的應該是前者琉闪,今天就介紹一種電橋檢測法。
二砸彬、數(shù)據(jù)處理
之前一直在思考颠毙,什么是程序,程序的本質(zhì)是什么砂碉?
我的理解“程序就是一種控制思想蛀蜜,一種因果變化”。
為了實現(xiàn)某個功能增蹭,具現(xiàn)化為某個狀態(tài)變量的輸出滴某。就要從已有的輸入變量中選擇合適的變量作為輸入。輸入通過某種復雜的轉換(控制實現(xiàn)/計算實現(xiàn))得到輸出的過程就是程序滋迈。
關鍵:
確保輸入輸出變量的準確性(數(shù)據(jù)處理)
從輸入到輸出實現(xiàn)的可能性(邏輯控制)
數(shù)據(jù)的處理可以從以下的兩個方面考慮:
輸出變量的處理
輸入變量的處理
數(shù)據(jù)霎奢,我將它分為兩類
功能數(shù)據(jù)
性能數(shù)據(jù)
功能數(shù)據(jù):數(shù)據(jù)是作為算法的必要輸入特意獲取的數(shù)據(jù)帖世,比如上面的采集數(shù)據(jù)吉嫩,SOC等;
性能數(shù)據(jù):數(shù)據(jù)不作為功能邏輯上的輸入,更多的是對軟硬件的穩(wěn)定性安全性的一個評估作用敏释。比如板子的輸入電壓檢測碍彭,繼電器開關的狀態(tài)檢測晤硕,CAN出錯等悼潭。
變量分兩類:數(shù)據(jù)和狀態(tài),有以下的幾種處理方式
數(shù)據(jù):不同狀態(tài)下舞箍,多個數(shù)據(jù)舰褪,取權重。
數(shù)據(jù):
去除在范圍之外的數(shù)據(jù)疏橄,多個采樣占拍,取有效值的均值。
對于超范圍的數(shù)據(jù)软族,設置標志位刷喜,故障處理。
狀態(tài):連續(xù)一段時間維持某一狀態(tài)不變(消抖)
數(shù)據(jù)立砸,經(jīng)過處理掖疮,如果沒有問題就可以作為有效輸入數(shù)據(jù)。在功能被觸發(fā)的條件下颗祝,直接被調(diào)用浊闪。
那出錯了呢?對于這個問題螺戳,專門有一個故障處理的模塊搁宾。實時的將故障點檢測出來,發(fā)給整車倔幼,并且存儲起來盖腿。
故障等級大致是這樣的分的:
一級:只是報警,不做任何處理损同,可消退
二級:報警翩腐,限速,可消退
三級:報警膏燃,限速茂卦,不可消退
四級:報警,制動组哩,不可消退
具體的哪些故障對應哪個等級等龙,就不說了。
三伶贰、邏輯控制
邏輯控制主要有以下的幾個部分:
上電自檢蛛砰,確定系統(tǒng)狀態(tài)
繼電器控制,不同狀態(tài)幕袱,不同的繼電器數(shù)量有不同的控制方式
充電控制暴备,分為快充和慢充,需要分開處理
均衡控制
電池加熱控制
1. 上電自檢
汽車一共有兩個工作模式:放電们豌,充電涯捻。其中充電再分為快充和慢充。確定工作模式的方式是望迎,給BMS供電的到底是哪個24V電源障癌,T15/快充/慢充
只有自檢通過才允許上高壓,也就是閉合對應的繼電器辩尊。那么涛浙,觀察哪些信號,就可以確認自檢沒問題摄欲?
所有繼電器狀態(tài)OK
總電流OK
絕緣電阻OK
只存在一個工作模式
自檢OK轿亮,就可以使能對應的CAN通訊,也可以上高壓放電和充電胸墙。
2. 繼電器控制
繼電器的控制邏輯更多的是一個先后順序
開始放電
吸合負極繼電器
吸合預充繼電器
吸合放電繼電器(正極和電機之間的繼電器)
斷開預充繼電器
停止放電
斷開負極繼電器
斷開放電繼電器
開始充電
吸合負極繼電器
吸合充電繼電器(正極和充電機之間的繼電器)
停止充電
斷開負極繼電器
斷開充電繼電器
先斷負極我注,再斷正極,是為了分擔上下電的壓力迟隅;這種說法保留
通過做過的項目來講但骨,繼電器的控制,要根據(jù)不同的客戶需求來定
3. 電池加熱控制
電池加熱主要是在電池充電的時候使用智袭。
溫度過低奔缠,電池的活性降低,所以需要先給電池加熱吼野,后續(xù)再充電校哎。
基本的流程:吸合加熱繼電器,向充電機需求一個電流瞳步。此時動力和充電機同時給加熱繼電器提供電流闷哆,只是充電機電流比較大。加熱結束谚攒,斷開加熱繼電器阳准,同時向充電機需求一個大的充電電流。
4. 充電(快充)控制
所有的控制邏輯在國標GBT 27930-2015中定義的很清楚馏臭。嚴格按照國標來基本不會出什么問題
5. 均衡控制
均衡野蝇,是一個比較大的概念,后續(xù)再講
總結
梳理了BMS的一些基本概念括儒,通過這個過程這才發(fā)現(xiàn)绕沈,我了解的還是太少太生疏了。
留下的問題:
SOC算法和均衡控制算法? ? 這個確實是個難點
標準化設計的一些想法? 有待學習
bootloader
自動化生產(chǎn)測試
上位機相關知識
電池知識的深入了解
等等
今天簡單梳理帮寻,今后我會陸續(xù)更新乍狐,往里面增加類容。固逗。浅蚪。藕帜。。惜傲。
? ? ? ? 愿你出走半生洽故,歸來仍是少年…