蓄電池作為一種主要的直流電源,在工業、航空航天、民用等各領域扮演著重要的角色。在定期的蓄電池充放電操作及維護中,現有的充放電裝置工作時間過長,工作效率較低;被充放電電池的狀態不能及時監測,且充放電現場工作環境惡劣,有損于操作人員的健康。針對這些問題,設計了一種遠程控制的智能充放電裝置。該裝置主要通過下位機——單片機將采集到的蓄電池電壓電流信號經處理后發送給上位機——PC機,再經可視化的人機界面實現充放電的控制和實時狀態顯示。考慮到該系統要具有較強抗干擾能力,傳輸距離長、工程布線簡單、適合擴展、便于控制的特點,故采用RS 485總線實現遠距離數據傳輸。
1 遠程通信總體方案設計
該系統中采用的RS 485是半雙工接口,雙向單信道的連接方式。在整個系統中他用1根雙絞線將分布在不同地理位置的充放電裝置并接在一起,在各個裝置中,單片機采集模塊和命令控制模塊作為下位機。其網絡結構簡圖如圖1所示。PC機的串口通過232-485轉換器接入網絡。另外添加半雙工低功率收發器件MAX485來為單片機提供TTL電平與RS 485的接口電平之間的轉換。差分平衡型收發器MAX485是RS 485的一種接口芯片,他集成了1個驅動器和1個接收器。處于禁止狀態的驅動器和多個接收器掛在傳輸線上不會影響信號的正常傳送,故多個驅動器和接收器可以共享一組公用傳輸線。網絡上可掛32個站,每個站點都有固定的地址。同一時刻只能有一個站點發送數據,而其他站點只能處于接收狀態,以免發生數據碰撞錯誤。
圖2為輸出簡化示意圖。
單片機,MAX485和充放電驅動電路作為一個站點接入RS 485總線。A,B是總線的接口,DI是發送端,RO是接收端,連接單片機的串口,單片機通過引腳進行收發控制。
2 通信硬件設計
MAX485與單片機的電路連接如圖3所示。
第1腳(RO端)為接收輸出端,當接收輸出使能(第2腳(/RE))為低電平時,如果VA-VB>200 mV或者A,B斷路,則第1腳輸出為高;如果VA-VB<200mV,則第1腳輸出為低;第2腳接收輸出使能端低電平有效,第3腳(DE端)驅動輸出使能端,第4腳(DI端)驅動輸入端,第5腳為地,第6,7腳為總線接口端,第8腳為電源端。單片機將采集到的蓄電池狀態信息經MAX 485轉變成適合傳輸的電流環信號。該信號具有傳輸距離遠,抗干擾能力強的特點,以保證信號無衰減地傳到232/485轉換器端。232/485轉換器主要完成電流環到微機RS232接口的轉換,如此即可實現PC機到單片機的通信。其原理圖如圖4所示。用戶通過PC機的界面控制網絡上各站點的工作,各站點的設備也可將反饋的信息發送給PC機進行蓄電池充放電裝置的實時監測。
3 通信軟件設計
3.1 網絡協議
RS 485是一種硬件連接說明標準,并沒有指定所使用的通信協議。為了使命令和數據能在網絡上正確傳輸,必須在數據鏈路層上提供一種網絡協議,當物理層的比特流出現錯誤時能起到檢驗和校正的功能。參見(見圖1)遠程控制網絡結構簡圖,單片機采集子系統將采集到的蓄電池狀態上傳到PC,命令控制子系統主要是接受PC機的各種命令并對充電系統進行控制。兩子系統與PC機之間均采用主從協議,串口通信,其通信參數設置為:傳輸速度:9 600 b/s;校驗位:無;數據位:8;停止位:1。
3.1.1 上位機向下位機發送控制命令
(1)上位機發送
擴展在雙絞線上的每個充電模塊必須有惟一的地址編號,以便保證PC機發送控制命令時能準確無誤地找到所需的充電的模塊。分布式模塊的命令格式被分為發送與接收兩部分,格式如下:
每一幀代表的信息如下:
起始位:單片機與PC機之間通訊的起始標志;地址位:下位機的地址號設計為01H~1FH(即1~31),上位機的地址為00H。
命令類型:0為停機命令,1為充電命令;設定數值:控制命令為充電時,數值量為充電電流;(2)控制板返回:Y(如果接收成功則返回Y)。
3.1.2 下位機向上位機發送采集數據
(1)下位機每隔10 s間斷性的發送電壓電流采集值給上位機;
(2)采集板返回7個連續字符(中間不插入空格),格式如下:
前3個字符為蓄電池端電壓,接著3個為充電電流值。蓄電池端電壓用3個字符表示,如:51.2 V~512 V。充放電電流3個字符表示:15.7 A~157 A(如果電流值<10 A,左邊補0,如:8.9~089)。注意:所有的字符均為10進制數值對應的ASCⅡ碼。考慮到單片機要及時將采集到的數據發送出去,故使用無握手的通信機制,不等待確認幀就不停發送。另外,若接收方在約定時問內未收到數據,則發送復位幀,雙方回到通信程序的開始并清空緩沖區,然后重新同步。
3.2 單片機程序設計
在主程序中,先將單片機及其存儲器初始化,進入死循環,等待中斷程序。中斷程序包括:A/D采集中斷,他主要是將采集到的電壓,電流瞬時信號值處理并保存;另外1個就是串口通信中斷程序,他的主要作用是:當接收一個地址時,判斷是否是本機地址,若是則判斷控制命令,否則結束。繼續執行PC機接收的數據命令,分別表示停機、充電、放電等命令。通過字符串比較,判斷出執行的命令。具體流程如圖5所示。
3.3 PC機程序設計
PC機的人機交互界面由C++Builder語言開發實現的,他主要包含通信模塊,數據顯示和處理模塊。在綜合考慮開發效率和程序功能后,選擇了Win32API函數來編寫通信程序。此函數在C++Builder里面中均已被聲明,直接引用即可。為了提高通信程序的響應速度,程序通過Thread類實現多線程通信。在主線程中打開串口并發送數據,另外再建立1個線程來監聽串口,若接收到數據后就調用數據分析和處理線程,顯示狀態曲線并且將數據錄入數據庫。部分程序代碼如下:
以3個站點的充放電實時監測為例,在PC機上可顯示如圖6所示的實時信息。
4 結 語
基于RS 485的遠程充放電裝置控制系統可以實現1臺PC機上最多可控制32個站點。由于RS 485采用的是平衡驅動和差分接收的方法,因此能從根本上消除信號地線,有很強的抗共模干擾信號的能力。他還具有一對線路驅動器和接收器,能夠作長距離的信號傳輸,最長為1 200 m。且傳輸結構簡單、成本低、實用性強。可以廣泛應用與工作環境惡劣,耗時勞民的充放電現場。