潘李云,孫前剛,劉 剛
(中國(guó)船舶集團(tuán)有限公司第七二三研究所,江蘇揚(yáng)州 225000)
當(dāng)前針對(duì)大功率及超大功率應(yīng)用場(chǎng)合,模塊化是開(kāi)關(guān)電源發(fā)展的趨勢(shì),其優(yōu)點(diǎn)是采用各個(gè)通用性的功能模塊,將各個(gè)功能模塊并聯(lián),構(gòu)成新的系統(tǒng)來(lái)實(shí)現(xiàn)大功率輸出,從而減少產(chǎn)品的研發(fā)周期及提高系統(tǒng)可靠性。然而多模塊并聯(lián)的系統(tǒng)中,由于模塊數(shù)量的增多,各個(gè)模塊的調(diào)試工作量大,單個(gè)模塊是否正常工作,出故障時(shí)如何及時(shí)排查原因及檢修難度大等問(wèn)題也同時(shí)出現(xiàn)了。針對(duì)這些問(wèn)題,一種能夠?qū)崟r(shí)采集數(shù)據(jù),監(jiān)控各個(gè)并聯(lián)模塊,簡(jiǎn)化調(diào)試過(guò)程的工具急需開(kāi)發(fā)。CAN總線(xiàn)是一種可擴(kuò)展性強(qiáng),標(biāo)準(zhǔn)程度高,實(shí)時(shí)性好的一種串行數(shù)據(jù)通信網(wǎng)絡(luò),它功能強(qiáng)大且易于使用,現(xiàn)如今在很多場(chǎng)合都有應(yīng)用。張河新等[1-5]介紹了各種基于CAN 總線(xiàn)的數(shù)據(jù)采集及顯示功能的設(shè)備,吳艷等[6]介紹了基于CAN 總線(xiàn)的點(diǎn)菜設(shè)備,張強(qiáng)[7]介紹了CAN 通信保護(hù)電路設(shè)計(jì)及常見(jiàn)故障分析。這些文獻(xiàn)主要介紹的都是基于CAN 總線(xiàn)的信息采集功能,沒(méi)有輔助調(diào)試方面的能力。本文設(shè)計(jì)了一種基于串行總線(xiàn)的多機(jī)通信系統(tǒng),該系統(tǒng)可以和電源模塊通信,通過(guò)軟件更改電源模塊的參數(shù),該通信系統(tǒng)線(xiàn)路少、整機(jī)結(jié)構(gòu)簡(jiǎn)約、擴(kuò)展能力強(qiáng),系統(tǒng)包含各個(gè)節(jié)點(diǎn)和上位機(jī),實(shí)時(shí)性好,可靠性高。實(shí)現(xiàn)了對(duì)多機(jī)運(yùn)行的實(shí)時(shí)、同步控制。
CAN 是控制器局域網(wǎng)絡(luò)(Controller Area Network)的簡(jiǎn)稱(chēng),是ISO 國(guó)際標(biāo)準(zhǔn)化的串行通信協(xié)議。CAN 具備極高的性能和可靠性,被廣泛應(yīng)用于工業(yè)化的各種設(shè)備上[8],考慮到CAN總線(xiàn)的卓越優(yōu)勢(shì),本系統(tǒng)的架構(gòu)也是基于CAN 總線(xiàn)的。CAN總線(xiàn)的連接只需要兩根線(xiàn),即CAN_H 和CAN_L,總線(xiàn)通過(guò)這兩根線(xiàn)上的電位差來(lái)進(jìn)行總線(xiàn)電平的判斷,CAN總線(xiàn)分為兩種電平,隱性電平和顯性電平,二者必居其一??偩€(xiàn)上顯性電平相比隱性電平具有優(yōu)先權(quán),只要有一個(gè)節(jié)點(diǎn)輸出顯性電平,總線(xiàn)就是顯性電平,當(dāng)總線(xiàn)空閑時(shí),如有多個(gè)節(jié)點(diǎn)同時(shí)發(fā)送信息,則會(huì)根據(jù)ID 逐位決定優(yōu)先級(jí),根據(jù)顯性電平優(yōu)先的原則決定哪個(gè)節(jié)點(diǎn)獲得首先發(fā)送報(bào)文的資格。
CAN總線(xiàn)的數(shù)據(jù)幀可以分為標(biāo)準(zhǔn)幀和擴(kuò)展幀兩種格式,標(biāo)準(zhǔn)幀有11位ID,擴(kuò)展幀有29位ID。當(dāng)CAN 某個(gè)節(jié)點(diǎn)發(fā)送一個(gè)數(shù)據(jù)幀時(shí),發(fā)送函數(shù)會(huì)把已打包完的數(shù)據(jù)幀發(fā)送到CAN 總線(xiàn)上來(lái)實(shí)現(xiàn)數(shù)據(jù)發(fā)送。程序進(jìn)入發(fā)送函數(shù)后,首先會(huì)判斷發(fā)送緩沖區(qū)是否為空,為空則會(huì)將待發(fā)送數(shù)據(jù)輸入發(fā)送緩沖區(qū),隨即啟動(dòng)發(fā)送。CAN報(bào)文接收函數(shù)往往以中斷方式實(shí)現(xiàn)來(lái)提高程序效率,該函數(shù)的主要功能是讀取CAN 接收緩沖區(qū)的數(shù)據(jù)至RAM 中。進(jìn)入該函數(shù)后,首先判斷接收緩沖區(qū)是否為空,若不為空就讀取接收緩沖區(qū)的數(shù)據(jù),進(jìn)而實(shí)現(xiàn)報(bào)文接收的功能。本系統(tǒng)的架構(gòu)如圖1所示。
圖1 系統(tǒng)架構(gòu)
系統(tǒng)架構(gòu)主要包括上位機(jī)、子節(jié)點(diǎn)。各節(jié)點(diǎn)具有采樣功能,能采樣各個(gè)電源模塊電壓、電流、溫度等信息,且能和電源模塊通信,能夠讀取和寫(xiě)入電源模塊的參數(shù)信息。系統(tǒng)的上位機(jī)具有豐富的功能,主要分為調(diào)試模式及工作模式兩種模式,調(diào)試模式時(shí),上位機(jī)可以讀取和寫(xiě)入電源參數(shù)以及對(duì)電源模塊的實(shí)時(shí)工作狀態(tài)進(jìn)行監(jiān)控,對(duì)電源輸出電壓電流值等需調(diào)試的參數(shù)進(jìn)行調(diào)整。而在工作模式時(shí),上位機(jī)可檢測(cè)模塊的電壓電流及故障信息,對(duì)系統(tǒng)的運(yùn)行進(jìn)行監(jiān)控[9],從而能在故障發(fā)生時(shí)能快速準(zhǔn)確地定位故障模塊及故障類(lèi)型。系統(tǒng)的具體功能為:各節(jié)點(diǎn)接收上位機(jī)發(fā)來(lái)的控制命令,并執(zhí)行,且回傳響應(yīng)報(bào)文;上位機(jī)可將子節(jié)點(diǎn)回傳的報(bào)文信息在人機(jī)界面顯示。實(shí)現(xiàn)了上位機(jī)與各節(jié)點(diǎn)之間通過(guò)CAN總線(xiàn)實(shí)現(xiàn)通信,多機(jī)實(shí)時(shí)、可靠控制。
上位機(jī)的軟件流程如圖2 所示,是使用Windowsvisualstudio2010 開(kāi)發(fā)的,其作用為通過(guò)CAN 通信設(shè)備連接CAN 總線(xiàn),和掛在CAN 總線(xiàn)上的各節(jié)點(diǎn)通信。上位機(jī)在工作時(shí)會(huì)定時(shí)向每個(gè)節(jié)點(diǎn)的電源模塊輪流發(fā)送命令,讓每個(gè)節(jié)點(diǎn)向它回復(fù)報(bào)文,同時(shí)上位機(jī)接收來(lái)自各個(gè)節(jié)點(diǎn)的實(shí)時(shí)報(bào)文并解析成電壓電流信息以及故障報(bào)文,然后在人機(jī)交互界面顯示,方便對(duì)電源系統(tǒng)的實(shí)時(shí)監(jiān)測(cè)。尤其是當(dāng)電源系統(tǒng)運(yùn)行異常時(shí),可使用上位機(jī)監(jiān)控各節(jié)點(diǎn),將接收到的電壓電流實(shí)時(shí)數(shù)據(jù)及故障類(lèi)型顯示出來(lái),從而輔助技術(shù)人員對(duì)故障定位和排除。
圖2 上位機(jī)軟件流程
在電源中,往往因?yàn)楦鞣至⑵骷恼`差,電源模塊的各種參數(shù)需要進(jìn)行調(diào)節(jié),比如調(diào)整電源模塊的保護(hù)動(dòng)作點(diǎn),電源的輸出電壓值等,傳統(tǒng)的硬件系統(tǒng)如果調(diào)節(jié)需要逐臺(tái)調(diào)整其對(duì)應(yīng)功能的電阻電容,工作量巨大且繁瑣,還容易出錯(cuò)。而本系統(tǒng)則可以通過(guò)上位機(jī)調(diào)整每臺(tái)電源的參數(shù),將調(diào)試工作大大簡(jiǎn)化。上位機(jī)可以直接將電源模塊的各個(gè)參數(shù)發(fā)送給總線(xiàn)上的每個(gè)電源,然后再根據(jù)每個(gè)節(jié)點(diǎn)電源回復(fù)給上位機(jī)的具體電壓電流信息微調(diào)參數(shù),最終調(diào)整好總線(xiàn)上每臺(tái)電源的具體參數(shù)。
各節(jié)點(diǎn)的軟件流程如圖3所示,節(jié)點(diǎn)的主要功能是對(duì)電壓、電流、溫度等物理量進(jìn)行循環(huán)采樣,并根據(jù)采樣值判斷狀態(tài)是否正常,如果不正常,則判斷發(fā)生了什么故障,并將對(duì)應(yīng)的狀態(tài)位標(biāo)記。每個(gè)節(jié)點(diǎn)都有一個(gè)唯一的ID,不同ID則是根據(jù)硬件來(lái)區(qū)分的,每個(gè)電源模塊設(shè)置四個(gè)電阻來(lái)組成ID 序列,各節(jié)點(diǎn)初始化時(shí)會(huì)根據(jù)不同的電阻排列方式實(shí)現(xiàn)每個(gè)電源模塊的不同ID。當(dāng)上位機(jī)對(duì)某個(gè)節(jié)點(diǎn)發(fā)來(lái)命令要求其上報(bào)報(bào)文時(shí),該節(jié)點(diǎn)會(huì)響應(yīng)上位機(jī)的命令,發(fā)送目前的狀態(tài)及故障位信息。當(dāng)某個(gè)節(jié)點(diǎn)的電源模塊收到上位機(jī)的發(fā)送實(shí)時(shí)數(shù)據(jù)命令時(shí),會(huì)將相關(guān)的電壓電流信息以500 ms 的時(shí)間間隔不停地向上位機(jī)發(fā)送,同時(shí),能夠根據(jù)上位機(jī)發(fā)來(lái)的參數(shù)更改自己的參數(shù),當(dāng)收到上位機(jī)的查詢(xún)參數(shù)命令時(shí)也能將自己目前的參數(shù)信息打包發(fā)給上位機(jī)。
圖3 節(jié)點(diǎn)軟件流程
系統(tǒng)的微控制器電路芯片使用基于Cortex-M3內(nèi)核的32位單片機(jī)STM32F103ZET6,該單片機(jī)的時(shí)鐘頻率高達(dá)72 MHz,具備11個(gè)定時(shí)器;支持嵌套矢量中斷控制器(NVIC),可以實(shí)現(xiàn)極短的中斷處理延遲,能最大限度減少進(jìn)入中斷時(shí)系統(tǒng)的資源占用量,進(jìn)一步提高處理中斷的速度;支持外部中斷/事件控制器(EXTI),對(duì)應(yīng)的邊沿檢測(cè)器可實(shí)現(xiàn)輸入信號(hào)的上升沿、下降沿監(jiān)測(cè)[10]。
電壓檢測(cè)電路如圖4 所示,主要借助電壓傳感器WBV411D07將輸入的交流強(qiáng)電轉(zhuǎn)變?yōu)槿蹼娦盘?hào),由于檢測(cè)到的電壓信號(hào)中存在一定的紋波電壓,所以需要對(duì)該電壓信號(hào)進(jìn)行濾波處理,在本文中我們使用RC電路來(lái)進(jìn)行濾波同時(shí)考慮到需要隔離前級(jí)采樣電路對(duì)后級(jí)電路的影響所以設(shè)計(jì)了電壓跟隨器。
圖4 電壓采樣電路
電流檢測(cè)電路如圖5所示,主要是借助電流霍爾傳感器SP3實(shí)時(shí)測(cè)量系統(tǒng)電路中的電流,霍爾傳感器輸出的信號(hào)經(jīng)過(guò)RC濾波電路傳輸給電壓跟隨器,跟隨器防止了前級(jí)電路對(duì)后級(jí)產(chǎn)生影響,電流互感器選擇的是LEM公司的SP3,該互感器性能優(yōu)越。
圖5 電流采樣電路
CAN 收發(fā)器使用的是ISO1050,作為CAN 收發(fā)器,該器件可為總線(xiàn)和CAN 控制器分別提供差分發(fā)射能力和差分接收能力,信號(hào)傳輸速率高達(dá)1 兆位每秒(Mb/s)。該器件尤其適合工作在惡劣環(huán)境下,性能強(qiáng)大,其具有串線(xiàn)、過(guò)壓和接地?fù)p耗保護(hù)(-27~40 V)以及過(guò)熱關(guān)斷功能,共模電壓范圍為-12~12 V[11-12]。
此外,為了區(qū)分每個(gè)電源模塊的地址,電路里設(shè)計(jì)了4個(gè)電阻位,這些電阻位上拉至3.3 V,若不焊電阻,則IO口輸入為高電平,若焊接電阻,則IO 口輸入為低電平。這樣,4個(gè)電阻位總共可以表示16種ID,即可以區(qū)分16個(gè)電源模塊。
圖6 CAN收發(fā)器電路
使用此系統(tǒng)之前調(diào)試時(shí)需先將設(shè)備加電,然后手持三用表、鉗流表去測(cè)量母線(xiàn)和輸出的電壓電流,然后再讓設(shè)備斷電,使用烙鐵調(diào)換相應(yīng)的元器件,從而使電源的輸出電壓值和均流等指標(biāo)滿(mǎn)足要求。這種傳統(tǒng)的調(diào)試方法往往需要反復(fù)加電斷電以及使用烙鐵焊接數(shù)次才能調(diào)好一臺(tái)電源,效率低且麻煩。當(dāng)使用此系統(tǒng)后,只需要加電后通過(guò)上位機(jī)就可以調(diào)節(jié)參數(shù),無(wú)需斷電和使用烙鐵,效率高且操作更簡(jiǎn)單。
為了驗(yàn)證系統(tǒng)的可靠性及及實(shí)時(shí)性,通過(guò)CAN 通信設(shè)備連接各節(jié)點(diǎn)在上位機(jī)上測(cè)試,如圖所示為上位機(jī)界面,圖7~9 顯示了上位機(jī)的3 個(gè)頁(yè)面,圖7 在界面上可以選擇發(fā)送報(bào)文的ID,選擇調(diào)試模式還是工作模式及連接CAN,通過(guò)在圖7界面的操作可以選定所需控制的電源模塊和控制模式;圖8 和圖9 分別是調(diào)試狀態(tài)下監(jiān)控電壓電流值以及讀取和寫(xiě)入?yún)?shù)的功能,當(dāng)圖8 顯示出的電壓電流值不滿(mǎn)足指標(biāo)時(shí),可由圖9 界面寫(xiě)入新的參數(shù),再?gòu)膱D8 界面觀察更改參數(shù)后的新的電壓電流值是否滿(mǎn)足指標(biāo)要求,若不滿(mǎn)足可繼續(xù)按此方法更改。
圖7 上位機(jī)頁(yè)面1
圖8 上位機(jī)頁(yè)面2
圖9 上位機(jī)頁(yè)面3
包含多個(gè)電源模塊的系統(tǒng)工作時(shí),如果某個(gè)模塊運(yùn)行不正常,一般需要外接示波器才能監(jiān)測(cè)到輸出電壓電流的波形,從而判斷電源出了何種故障。用了此通信系統(tǒng),可由上位機(jī)監(jiān)控其輸出電壓電流,從而能夠輔助判斷哪個(gè)模塊出了何種故障,如圖10 所示,當(dāng)正在工作的電源突然斷電時(shí),上位機(jī)能夠顯示出輸出電壓和電流的波形變化,直觀顯示電源的工作狀態(tài)。
圖10 上位機(jī)實(shí)時(shí)監(jiān)控
實(shí)驗(yàn)結(jié)果顯示,該系統(tǒng)能夠由軟件更改參數(shù),使得調(diào)試更加有效率,系統(tǒng)通信正常、工作可靠,實(shí)現(xiàn)了CAN 總線(xiàn)多個(gè)節(jié)點(diǎn)在上位機(jī)環(huán)境下實(shí)時(shí)通信的功能,該系統(tǒng)可以實(shí)時(shí)地接收各電源模塊發(fā)來(lái)的電壓電流信息并在PC上顯示其數(shù)值和波形。本系統(tǒng)可以作為應(yīng)對(duì)多機(jī)主從控制的選擇,整機(jī)具有擴(kuò)展方便、工作可靠、運(yùn)行靈活等優(yōu)點(diǎn),克服了目前傳統(tǒng)調(diào)試方法效率低且麻煩的問(wèn)題,提高了多機(jī)通信的實(shí)時(shí)性和可靠性。