沈良恒+劉建明



通信機房設備在使用蓄電池應急供電時,針對蓄電池工作狀態的各參數進行實時遠程監測,并能根據電壓閾值手動或自動控制負載的通斷,保護蓄電池避免虧電損壞和確保設備正常運行的功能需求,綜合運用單片機結合電子測量技術、通信技術和計算機軟件技術,從軟硬件和協議的設計實現入手開發本系統,為蓄電池遠程監測和控制提供了有效的解決方案,并可方便推廣應用到其他需要實時監控蓄電池的場合。
【關鍵詞】電池監測器 STC單片機 AT指令 遠程監控 欠壓保護
近年來,隨著通信行業的飛速發展,通信機房和機房設備總量大幅增加,通信運營商出于對其服務質量提升的要求,機房監管趨向無人值守和遠程集中管理。通信機房往往給諸如傳輸設備、服務器及監控攝像頭等用電設備配置有蓄電池作為備電,以便在市電停電時能支撐設備運行一段時間,而除了高端的UPS系統之外,普通蓄電池的工作狀態缺乏有效的監控手段,比如需要實時遠程了解蓄電池的電壓、電流、溫度和電量等關鍵參數,并在蓄電池將要虧電的情況下切斷負載來保護蓄電池的使用壽命。于是需要設計開發一套可在局域網或廣域網中使用的通信機房電池組遠程監控系統,以滿足尤其是中小型機房蓄電池的監管需求。
1 總體設計
本系統整體架構分為下位機和上位機兩部分。其中下位機包括微控制器板、電池監測板、通信適配模塊、繼電器模塊、溫度傳感探頭五個組成部分;上位機軟件則部署在一臺計算機上,與下位機通過以太網連接。系統總體結構如圖1所示。
微控制器板選用工業級抗干擾能力強的高速1T單機器周期指令單片機STC15W204S開發。電池監測板核心組件采用集成度高的電池監測器DS2438芯片。通信適配模塊內嵌有TCP/IP協議棧,提供微控制器UART串口轉以太網Ethernet功能,實現有線聯網,也可以增加無線WIFI模塊,實現無線聯網。在計算機端則使用易于上位機開發的虛擬串口方式進行通信。繼電器模塊用于接通和關斷負載用電設備和蓄電池之間的連線,采用底成本的機械繼電器即可。電池監測器芯片內部已帶有直接數字化的溫度傳感器,可監測芯片內部工作溫度,在本系統中用于監測機房環境溫度。但要監測蓄電池的溫度,且要考慮方便安裝則需要另外的溫度傳感探頭,此處優選金屬殼貼片式DS18B20便于粘貼蓄電池表面測溫。機房環境溫度和蓄電池表面溫度兩者具有相關性,可更精確的融合判斷蓄電池工作情況。
上位機軟件通過計算機的以太網物理端口(邏輯上則是虛擬串口)向下位機發出自定義好的AT指令。指令數據先通過通信適配模塊轉換,即IP包數據流轉換成串口TTL電平數據流,并被微控制器STC15W204S的UART口接收。再由微控制器響應具體的指令請求來控制電池監測板,如讀取DS2438芯片中的電池電壓、電流、電量和芯片溫度對應的寄存器值,以及讀取DS18B20的溫度值,隨后經過微控制器解析與轉換數據格式,再回傳至計算機上位機窗體中顯示。通過上位機可遠程控制繼電器模塊通斷負載,也可預先設置蓄電池欠壓保護閾值來自動通斷負載,避免蓄電池虧電使用。
2 電池監測器
作為電池監測板的核心部件DS2438,其片內具備唯一的64位硅序列號,自帶40字節非易失EEPROM存儲器存儲電池相關參數,與微控制器之間使用1-Wire接口,除地線外僅需1條連線。在單一芯片內即可完成對電池的電壓、電流、溫度和電量的數據采集,并內置優化算法,采樣數據準確度高。
DS2438的狀態配置寄存器內為最經常訪問的數據,具體位的數值為0或1。格式如圖2所示。
IAD為電流A/D控制位,1表示電流A/D和ICA啟用,電流測量將以36.41Hz的頻率采樣,0表示電流A/D和ICA被禁用。CA 為電流累加器配置位,1表示CCA/DCA啟用,數據將被存儲并能取回數據,0表示CCA/DCA被禁用。EE為電流累加器映射選擇位,1表示每次相應的寄存器遞增時CCA/DCA計數器數據能夠被映射到EEPROM,0表示CCA/DCA計數器數據將不會映射到EEPROM,隨著電池組放電CCA/DCA可能會丟失。AD為電壓A/D輸入選擇位,1表示電池輸入VDD被選作DS2438電壓A/D轉換器的輸入,0表示通用A/D輸入VAD被選作DS2438電壓A/D轉換器的輸入。對于任一種設置電壓轉換命令將會初始化電壓A/D轉換器。以上寄存器位的默認值都是1。
TB為溫度忙碌標志,1表示溫度轉換正在進行, 0表示溫度轉換完成。NVB為非易失性存儲器忙碌標志,1表示從中間結果暫存器復制到EEPROM正在進行,0表示非易失性存儲器不忙。復制到EEPROM可能要花費2ms到10ms,在低供電電壓下花費時間更長。ADB為A/D轉換器忙碌標志,1表示電池電壓的A/D轉換正在進行,0表示轉換完成或沒有測量值要被轉換,A / D轉換大約需要10 ms。X為無用位。
DS2438初始化配置操作程序實現舉例:
void ds2438_init(void) //初始化配置寄存器
{
WritePage(page(0)); //寫第一頁,即page0的地址
WriteByte(0X07); //設置page0配置寄存器Byte0為:IAD =1,電流A/D啟用;
//CA=1,啟用電流累加器;EE =1,電流值、累計值映射到EEPROM;
//AD =0,電壓輸入選擇為通用電壓輸入;其它為狀態標志
CopyPage(page(0)); //將page0的瞬時電流、電壓、溫度等易失數據
//復制到片內EEPROM存儲
}
void WritePage(unsigned char PageX) //寫DS2438中間結果暫存器PageX
{
reset_presence(); //發送復位脈沖
WriteByte(0xCC); //跳過讀取64位芯片編號,節省時間
WriteByte(0x4E); //寫堆棧指針
WriteByte(PageX); //寫寄存器PageX地址
}
3 通信協議設計
上位機和下位機之間通過自定義的通信協議進行雙向通信。下位機向上位機發送數據為上行通信,上位機向下位機發送數據為下行通信。協議設計要考慮松耦合、可擴展和便于維護,上下位機之間方便并行開發,而AT指令一般應用于終端設備與PC應用之間的連接與通信,已被大家普遍認同,本設計借鑒并發展了AT指令。有開發能力的用戶也可根據本協議自行開發上位機軟件。串口通信波特率默認為9600bps-8-N-1,信息幀為ASCII碼,可通過串口調試工具進行協議驗證調試。
3.1 上行數據通信協議設計
上行數據樣本舉例解釋如下(電流的+-表示電流方向,+表示充電,-表示放電;字段間以“,”作為分隔符):
$000000D3C19A,VOL=13.252V,CUR=-10.170A,BAT=18.226C,CHIP=13.513C,QUA=18934mAh,REL=1,CLO=10.8V,OPE=11.8V
$符號作為起始字,代表上行數據開始。“監測板ID”即DS2438序列號為000000D3C19A。“當前電壓”值為13.252V。“當前電流”值為-10.170A。“電池溫度”值為18.226攝氏度。“芯片溫度”值為13.513攝氏度。“電池電量”剩余值為18934mAh。“負載通(1)斷(0)”表示當前負載為接通狀態。已預設的“欠壓關斷負載值”為10.8V。已預設的“恢復接通負載值”為11.8V。數據末尾帶回車換行。
“欠壓關斷負載值”和“恢復接通負載值”之間保留1V電壓間隔是為防止蓄電池電壓在閾值臨界點附近因抖動導致繼電器不斷在關斷和接通之間跳動。
3.2 下行數據通信協議設計
(1)“查詢”指令:ATG
即請求一條包含當前所有狀態值的上行數據,返回舉例:
$000000D3C19B,VOL=10.707V,CUR=0.536A,BAT=+30.080C,CHIP=+27.156C,QUA=1077mAh,REL=0,CLO=10.8V,OPE=11.8V
考慮到下位機采集數據和轉換數據需要時間,上位機在操作兩次“查詢”指令時最小時間間隔為2秒(亦為缺省值,最大間隔為1小時)。
(2)“關斷負載”指令:ATC
(3)“接通負載”指令:ATO
(4)“欠壓關斷負載值”配置指令:ATL。舉例:ATL10.8
(5)“恢復接通負載值”配置指令:ATH。舉例:ATH11.8
4 上位機軟件功能設計
上位機軟件基于JAVA語言開發,開發平臺為Eclipse Java EE IDE for Web Developers,使用RXTX串口API包mfz-rxtx-2.2-20081207-win-x64。上位機在Windows7及以上64位操作系統上運行需Windows 64-bit版本的JRE支持。軟件功能窗體如圖3所示。
“通信端口”默認自動選中當前可以使用的端口號,可選擇“打開”或“關閉”端口。點擊一次“手動查詢”獲取一次數據,并刷新窗體右側數據。“恢復缺省值”,用于恢復出廠設置,即還原“欠壓關斷值”為10.8V和 “恢復接通值”為11.8V,其實是通過發送一次ATL10.8
5 結語
目前本系統已在一些大型商場通信機房中部署使用,表現出蓄電池工作狀態數據采集準確,實時性高,控制操作簡單,遠程聯網方便的優點。尤其是根據預置電壓值自動欠壓保護功能,使得在無人值守環境下蓄電池使用壽命更長。本系統可推廣到諸如控制機房、計算機機房、保安監控機房和臨時設備供電等其他需要實時遠程監控蓄電池工作狀態的場合。
參考文獻
[1]蔣維.基于STC15系列增強型單片機原理與接口技術[M].北京:清華大學出版社,2014.
[2]陸玲.嵌入式系統軟件設計中的數據結構[M].北京:北京航天航空大學出版社,2008.
[3]何立民.單片機應用技術選編[M].北京:北京航天航空大學出版社,2006.
[4]何曙輝.Java面向對象程序設計[M].北京:機械工業出版社,2012.
[5]嚴加朋,王大志,金有超.基于DS2438的大功率蓄電池狀態檢測[J].單片機與嵌入式系統應用,2011,11(03):40-42.
[6] 張瀚文,周艷,孟國營.基于DS2438的智能直流不間斷電源[J].電子世界,2013(05):72-74.
作者單位
桂林電子科技大學計算機與信息安全學院 廣西壯族自治區桂林市 541004