方 力,張建華,劉漢忠
(南京工程學(xué)院自動(dòng)化學(xué)院,南京 211167)
步進(jìn)電機(jī)具有結(jié)構(gòu)簡單、誤差不累積、易于控制、可靠性較高等特點(diǎn),被廣泛應(yīng)用于工業(yè)控制中[1]。在舞臺(tái)燈光控制系統(tǒng)中,一個(gè)電腦燈里往往有幾個(gè)甚至幾十個(gè)步進(jìn)電機(jī),所有步進(jìn)電機(jī)的控制就靠一個(gè)MCU控制,在電腦燈狹小的空間里除了有大功率的燈管燈頭外,還有步進(jìn)電機(jī)、各種機(jī)械設(shè)備、電子元件、控制芯片等等,電腦燈長時(shí)間運(yùn)行后內(nèi)部溫度會(huì)很高,影響系統(tǒng)的可靠運(yùn)行,因此可靠性是電腦燈產(chǎn)品質(zhì)量好壞的一個(gè)重要因素。一般電腦燈控制系統(tǒng)中都帶有電子閉燈功能來防止由燈內(nèi)溫度過高而損壞芯片,如果主控MCU損壞系統(tǒng)則癱瘓,針對(duì)這種情況在設(shè)計(jì)中增加了一種基于CAN的冗余技術(shù)來進(jìn)一步提高系統(tǒng)的可靠性,從而提高產(chǎn)品的質(zhì)量和競(jìng)爭力。CAN總線是控制器局域網(wǎng)[2],是一種支持分布式實(shí)時(shí)控制系統(tǒng)的串行通信局域網(wǎng),其信號(hào)傳輸采用短幀結(jié)構(gòu),因而傳輸時(shí)間短,受干擾的概率低,具有實(shí)時(shí)性強(qiáng)、性能好、可靠性高等優(yōu)點(diǎn)[3],被廣泛應(yīng)用于工業(yè)數(shù)據(jù)通信中。本文以雙PIC單片機(jī)為核心實(shí)現(xiàn)基于CAN總線的雙通道冗余多步進(jìn)電機(jī)控制系統(tǒng)。
基于CAN總線的雙通道冗余步進(jìn)電機(jī)控制系統(tǒng)的總體設(shè)計(jì)框圖如圖1所示,它主要由雙芯片控制單元,CAN通信單元,邏輯控制單元,驅(qū)動(dòng)保護(hù)單元及其輸出單元等組成。系統(tǒng)包含兩個(gè)PIC微控制器,互為熱備份,兩個(gè)PIC芯片通過CAN總線進(jìn)行各種信息交換。兩個(gè)芯片分別通過邏輯控制單元與各自通道相連,這兩個(gè)通道與外部驅(qū)動(dòng)控制總線是相連的,共享一個(gè)外部接口,通道邏輯控制單元使同一時(shí)刻只有一個(gè)通道打開輸出控制參數(shù)控制步進(jìn)電機(jī),保證系統(tǒng)工作的穩(wěn)定性。每個(gè)PIC芯片實(shí)時(shí)存儲(chǔ)系統(tǒng)的各種信息,并通過CAN總線在雙機(jī)間進(jìn)行交換。
圖1 總體設(shè)計(jì)結(jié)構(gòu)框圖
多步進(jìn)電機(jī)控制系統(tǒng)以具有高性價(jià)比的單片機(jī)PIC16F877[4]為主控單元,以 ST公司 L6219專用功率驅(qū)動(dòng)保護(hù)芯片為驅(qū)動(dòng)單元,配合TI公司7226 AD轉(zhuǎn)換芯片實(shí)現(xiàn)步進(jìn)電機(jī)兩相繞組電流控制,控制信號(hào)通過74HC377鎖存器輸出控制多路步進(jìn)電機(jī),接口電路如圖2所示。
圖2 單片機(jī)接口電路
驅(qū)動(dòng)保護(hù)電路采用專用集成芯片L6219,L6219內(nèi)部電路實(shí)現(xiàn)PWM恒流斬波控制[5],具有良好的穩(wěn)定性能,L6219與7226 AD轉(zhuǎn)換芯片配合對(duì)步進(jìn)電機(jī)相繞組電流方向、大小的控制,使得步進(jìn)電機(jī)兩相繞組上得到相位相差90度的兩個(gè)近似正弦電流波形,從而實(shí)現(xiàn)多路步進(jìn)電機(jī)恒流斬波細(xì)分控制。單片機(jī)接收電流反饋信號(hào)對(duì)步進(jìn)電機(jī)進(jìn)行斬波控制,反饋電流通過采樣電阻采樣,采樣電阻同時(shí)還起電流保護(hù)的作用,防止繞組線圈電流過大而損壞電機(jī)。驅(qū)動(dòng)保護(hù)接口電路如圖3所示。
圖3 功率驅(qū)動(dòng)保護(hù)接口電路
雙PIC芯片之間通過CAN總線通信,CAN總線通信控制器采用PHILIPS公司的SJA1000,以實(shí)現(xiàn)CAN協(xié)議所規(guī)定物理層和數(shù)據(jù)鏈路層所有功能,具有完成高性能通信協(xié)議所要求的全部特性[6]。采用PCA82C250作為CAN總線收發(fā)驅(qū)動(dòng)芯片,實(shí)現(xiàn)CAN總線協(xié)議差分發(fā)送和差分接受[7]。PCA82C250采用斜率控制方式,串接15~200kΩ電阻后接地,控制上升和下降斜率,從而減少射頻干擾。雙絞線作為傳輸介質(zhì)分別接至CANH、CANL引腳,總線網(wǎng)絡(luò)終端處接120Ω的匹配電阻以吸收反射信號(hào)[8]。考慮到現(xiàn)場(chǎng)有各種各樣的干擾,在SJA1000與PCA82C250之間增加6N137高速光耦隔離器件[9]。接口電路如圖4所示。
圖4 CAN總線接口電路
切換器電路實(shí)現(xiàn)主要由4部分組成:D觸發(fā)器、RC電路、與門和74HC245芯片。電路如圖5所示。
圖5 通道切換接口電路
圖中RC為延時(shí)電路,74HC74為雙D觸發(fā)器,當(dāng)系統(tǒng)上電后RC電路充電在開始階段,RC電路輸出端為低電平,使與門輸出低電平,D觸發(fā)器置位緩沖器74HC245使能端,控制74HC245切斷單片機(jī)與數(shù)據(jù)通道的聯(lián)系,從而在硬件上保證剛上電單片機(jī)處于斷開通道的從機(jī)狀態(tài)。隨著RC充電時(shí)間延長,RC電路輸出端電壓逐漸升高,最終使輸出端邏輯電平由低變?yōu)楦?,與門受控與對(duì)方單片機(jī)輸出信號(hào),從而使D觸發(fā)器受控于對(duì)方單片機(jī),使主從切換能夠?qū)崿F(xiàn)。當(dāng)從機(jī)判斷到主機(jī)故障,需要主從切換時(shí),要確保對(duì)方單片機(jī)在被切除后要與通道斷開,因此,從機(jī)在切換到主機(jī)之前,先向RB2引腳上送一低電平,使與對(duì)方單片機(jī)連接的D觸發(fā)器置位,關(guān)閉其三態(tài)緩沖器74HC245,切斷其與通道的聯(lián)系,然后再向RB1引腳發(fā)送一個(gè)脈沖信號(hào),使自己連接的D觸發(fā)器翻轉(zhuǎn),輸出低電平,打開74HC245取得對(duì)通道的控制權(quán),由從機(jī)切換到主機(jī)。
單片機(jī)上電初始化時(shí),并不明確自身為主機(jī)或從機(jī),在上電初始化完成以后,各個(gè)單片機(jī)會(huì)在CAN總線上廣播固定特征的詢問幀,目的是判斷當(dāng)前是否有主機(jī)在運(yùn)行,若應(yīng)答超時(shí),則認(rèn)為當(dāng)前無主機(jī)在運(yùn)行,自行置為主機(jī),打開74HC245取得對(duì)通道的控制權(quán)。若當(dāng)前已有主機(jī)正在運(yùn)行,則主機(jī)收到詢問幀后發(fā)送應(yīng)答幀進(jìn)行應(yīng)答,同時(shí)也獲知CAN總線上有其他單片機(jī)在運(yùn)行。單片機(jī)上電初始化時(shí)后上電的單片機(jī)自行設(shè)置為從機(jī),若2機(jī)同時(shí)上電,2機(jī)可能會(huì)同時(shí)發(fā)送詢問幀,由CAN總線仲裁協(xié)議仲裁,使其中某個(gè)單片機(jī)獲得CAN總線使用權(quán),成功送成詢問幀。為避免兩個(gè)單片機(jī)同時(shí)竟?fàn)幹鳈C(jī),沒有取得CAN總線使用權(quán)的一方在收到對(duì)方的詢問幀后不立即重發(fā)詢問幀,而是采取指數(shù)退避方法,延時(shí)一段時(shí)間,使對(duì)方應(yīng)答超時(shí)從而自行設(shè)置為主機(jī)后,再向已變?yōu)橹鳈C(jī)的對(duì)方重發(fā)詢問幀,讓主機(jī)獲知從機(jī)存在,以及時(shí)登記備份數(shù)據(jù)。主程序流程圖如圖6所示。
圖6 主程序流程圖
初始化和主從設(shè)置完成之后,主機(jī)和從機(jī)之間就需要不斷交換狀態(tài)數(shù)據(jù),使從機(jī)備份主機(jī)設(shè)置參數(shù)、同步存儲(chǔ)被控對(duì)象的工作狀態(tài)以及實(shí)時(shí)參數(shù)。主機(jī)將自己的參數(shù)、被控對(duì)象當(dāng)前參數(shù)以及其他需備份數(shù)據(jù)定時(shí)向從機(jī)發(fā)送。若從機(jī)在設(shè)定的時(shí)間間隔內(nèi)未收到主機(jī)的數(shù)據(jù)或者收到主機(jī)報(bào)告出錯(cuò)的信息,則認(rèn)為主機(jī)出現(xiàn)故障,立即自行置為主機(jī),取得通道的控制和使用權(quán),并根據(jù)最后備份主機(jī)的所有數(shù)據(jù)對(duì)被控對(duì)象繼續(xù)實(shí)施控制,并啟動(dòng)故障指示燈閃爍信號(hào)對(duì)故障節(jié)點(diǎn)報(bào)警。從機(jī)也要在規(guī)定的時(shí)間間隔內(nèi)向主機(jī)報(bào)告自身的狀態(tài),主機(jī)在規(guī)定的時(shí)間間隔內(nèi)未收到從機(jī)發(fā)送的狀態(tài)數(shù)據(jù),則認(rèn)為從機(jī)故障,啟動(dòng)故障指示燈閃爍信號(hào)對(duì)故障節(jié)點(diǎn)報(bào)警。通道控制權(quán)切換算法如圖7所示。
圖7 通道切換算法流程圖
實(shí)驗(yàn)系統(tǒng)設(shè)計(jì)了雙MCU的雙通道冗余步進(jìn)電機(jī)控制,雙MCU之間通過CAN總線通信,完成數(shù)據(jù)交換,系統(tǒng)實(shí)物如圖8所示,主要包括核心控制單元、功率驅(qū)動(dòng)和保護(hù)單元、鍵盤顯示接口單元及電源幾個(gè)部分。雙MCU采用PIC16F877單片機(jī),采用2片7226和4片專用集成功率驅(qū)動(dòng)芯片L6219驅(qū)動(dòng)4路步進(jìn)電機(jī),步進(jìn)電機(jī)采用兩相混合式步進(jìn)電機(jī),額定電流為1A,固有步進(jìn)角1.8度。系統(tǒng)采用恒流斬波細(xì)分控制技術(shù)和電流反饋對(duì)步進(jìn)電機(jī)進(jìn)行微步細(xì)分控制。繞組電流反饋通過采樣電阻實(shí)現(xiàn)電流采樣,同時(shí)起電流保護(hù)作用。
圖8 控制系統(tǒng)實(shí)物圖
實(shí)驗(yàn)無需測(cè)量轉(zhuǎn)速曲線,細(xì)分控制效果取決于兩相繞組上的電流波形,只需測(cè)量采樣電阻上的相電流波形,圖9為電機(jī)在空載時(shí),系統(tǒng)在雙通道切換時(shí)兩相繞組電流變化曲線,為兩個(gè)正弦波且相位相差90度的波形圖。從電機(jī)繞組實(shí)驗(yàn)電流波形來看,符合使得步進(jìn)電機(jī)運(yùn)行平滑、合成磁場(chǎng)均勻需要的相位相差90度正弦波形,能夠使步進(jìn)電機(jī)運(yùn)行時(shí)得到均勻細(xì)分旋轉(zhuǎn)步距。雙通道切換過程中兩相繞組電流變化波形正常,電機(jī)運(yùn)行平穩(wěn)。
圖9 通道切換兩相繞組電流波形
由于步進(jìn)電機(jī)的控制是采用細(xì)分控制方式,一個(gè)單片機(jī)要控制多個(gè)步進(jìn)電機(jī),采用分時(shí)控制算法,按細(xì)分電流表先輸出第一個(gè)步進(jìn)電機(jī)的一個(gè)細(xì)分歩距角細(xì)分電流,接下來輸出下一個(gè)步進(jìn)電機(jī)的一個(gè)細(xì)分電流,由于單片機(jī)的工作方式是一個(gè)大循環(huán),在無中斷情況下,大循環(huán)中所有任務(wù)安順序執(zhí)行下來,一個(gè)步進(jìn)電機(jī)的細(xì)分電流的輸出到下一個(gè)步進(jìn)電機(jī)細(xì)分電流的輸出之間的延時(shí)時(shí)間包括所有任務(wù)的執(zhí)行延時(shí)時(shí)間和延時(shí)函數(shù)執(zhí)行時(shí)間,與無通道切換任務(wù)時(shí)相比,有通道切換任務(wù)時(shí)會(huì)增加很短延時(shí)時(shí)間,可以通過有無通道切換標(biāo)志位來判斷,是否在執(zhí)行的任務(wù)中增加了通道切換的任務(wù),如果有則減少延時(shí)函數(shù)中循環(huán)執(zhí)行NOP語句的時(shí)間,以補(bǔ)償通道切換引起的延遲,因此盡管有通道切換過程,但對(duì)于多步進(jìn)電機(jī)的細(xì)分控制方式來說,步進(jìn)電機(jī)的運(yùn)行不受影響。但由于增加了雙機(jī)通信備份任務(wù),輸出到每一個(gè)步進(jìn)電機(jī)的相鄰兩個(gè)細(xì)分電流之間最小延時(shí)時(shí)間增加,因而控制中對(duì)步進(jìn)電機(jī)的最高轉(zhuǎn)速會(huì)有所影響。
本研究設(shè)計(jì)的雙通道冗余方法已經(jīng)在舞臺(tái)燈光控制系統(tǒng)的電腦燈中得到應(yīng)用。該設(shè)計(jì)硬件與算法易于實(shí)現(xiàn),當(dāng)系統(tǒng)主控芯片出現(xiàn)問題時(shí)可通過運(yùn)行過程中主控芯片相互通信的數(shù)據(jù)及狀態(tài)自行完成通道切換,從而保證系統(tǒng)保持可靠運(yùn)行,系統(tǒng)經(jīng)過一批有冗余系統(tǒng)的電腦燈和無冗余系統(tǒng)的電腦燈長期運(yùn)行比較來看,基于CAN雙通道冗余多步進(jìn)電機(jī)機(jī)控制系統(tǒng)運(yùn)行的可靠性有較大的提高。
[1]康惠林.一種實(shí)用兩相混合式步進(jìn)電機(jī)細(xì)分驅(qū)動(dòng)電路[J].電氣傳動(dòng),2011,41(5):60 -63,66.
[2]鄔寬明.CAN總線原理和應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,1996.
[3]李亞,楊亮,任鵬,等.步進(jìn)電機(jī)短位移高響應(yīng)加減速控制方法研究[J].組合機(jī)床與自動(dòng)化加工技術(shù),2010(8):30-32.
[4]王有緒.PIC系列單片機(jī)接口技術(shù)及應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2000.
[5]方力,李宏勝.步進(jìn)電機(jī)高精度細(xì)分控制系統(tǒng)設(shè)計(jì)[J].微電機(jī),2011,44(8):102 -105,112.
[6]丁學(xué)文,張琦.CAN總線在變頻調(diào)速系統(tǒng)中的應(yīng)用[J].電氣傳動(dòng),2002(6):41 -42,46.
[7]Philps Semiconductors.PCA82C250CAN Transceiver for 24V Systems[DB/OL].2000.
[8]黃崇莉.基于CAN總線的步進(jìn)電動(dòng)機(jī)控制器設(shè)計(jì)[J].微特電機(jī),2008(11):44-45.
[9]何宇,吳瑞明,陳繼芳,等.基于CAN總線的多軸運(yùn)動(dòng)控制系統(tǒng)研究[J].組合機(jī)床與自動(dòng)化加工技術(shù),2004(2):47-48.
[10]韓雪晶,郭嘉.雙冗余CAN網(wǎng)絡(luò)勵(lì)磁功率單元的研制[J].電氣傳動(dòng),2012,42(3):44-47.