CAN總線在風(fēng)力發(fā)電控制系統(tǒng)中的應(yīng)用
1 引言
風(fēng)力發(fā)電機(jī)組的控制系統(tǒng)是綜合性控制系統(tǒng),控制系統(tǒng)不僅要監(jiān)視機(jī)組運(yùn)行參數(shù),對(duì)機(jī)組進(jìn)行并網(wǎng)與脫網(wǎng)控制,而且還要根據(jù)風(fēng)速與風(fēng)向的變化,對(duì)機(jī)組進(jìn)行優(yōu)化控制。CAN總線是一種支持分布式控制系統(tǒng)和實(shí)時(shí)性控制的串行通信網(wǎng)絡(luò)。其以多主機(jī)方式工作,通信速率可達(dá)1mbps。
can總線的上述特點(diǎn)正適用于風(fēng)力發(fā)電機(jī)控制系統(tǒng)的獨(dú)特要求,因此,本文提出一種基于can總線架構(gòu)的風(fēng)力發(fā)電控制系統(tǒng)??刂葡到y(tǒng)中各模塊之間通過can總線實(shí)時(shí)交換數(shù)據(jù),實(shí)現(xiàn)主控系統(tǒng)及各控制節(jié)點(diǎn)間的實(shí)時(shí)通信與數(shù)據(jù)交換。文章在分析了can協(xié)議及can獨(dú)立控制器sja1000工作原理和讀寫邏輯的基礎(chǔ)上,設(shè)計(jì)了can接口,給出了硬件原理圖,分析了can通訊程序流程及系統(tǒng)中信號(hào)和控制指令的通訊幀格式。另外,本文還給出了基于嵌入式qt的應(yīng)用程序的設(shè)計(jì)方案。
2 系統(tǒng)結(jié)構(gòu)與功能
本文基于分散控制系統(tǒng)理念,針對(duì)雙饋型變速恒頻風(fēng)力發(fā)電機(jī)組設(shè)計(jì)控制系統(tǒng)。雙饋型風(fēng)電機(jī)組控制系統(tǒng)基本結(jié)構(gòu)如圖1所示。
主控制器選用32位嵌入式處理器at91rm9200,通過硬件設(shè)計(jì)擴(kuò)展外圍can接口,實(shí)現(xiàn)與其它節(jié)點(diǎn)的通信。同時(shí)外接帶觸摸屏的lcd顯示器,監(jiān)控界面利用嵌入式qt設(shè)計(jì),對(duì)整個(gè)機(jī)組實(shí)時(shí)監(jiān)控。主控制器通過以太網(wǎng)與風(fēng)電場(chǎng)控制中心通信。變流器控制采用雙pwm控制方式,即由兩個(gè)dsp生成pwm信號(hào),電機(jī)側(cè)部分負(fù)責(zé)電機(jī)勵(lì)磁控制,網(wǎng)側(cè)負(fù)責(zé)并網(wǎng)控制;兩模塊均基于tms320f2812設(shè)計(jì),通過其自帶的ecan接口與主控制器及其它節(jié)點(diǎn)通信。變槳控制系統(tǒng)同樣基于arm(at91rm9200)設(shè)計(jì),擴(kuò)展can接口實(shí)現(xiàn)通信。變槳控制器和變頻控制器通過i/o通道采集接收各傳感器數(shù)據(jù),并進(jìn)行相關(guān)計(jì)算與判斷,輸出控制信號(hào),實(shí)現(xiàn)智能分散控制,同時(shí)向主控制器發(fā)送機(jī)組參數(shù)并接收主控命令。整體結(jié)構(gòu)框圖如圖2。
主控制器位于地面控制柜,變槳控制器位于機(jī)艙控制柜,變頻控制器分電機(jī)側(cè)和網(wǎng)側(cè)兩部分,位于地面控制柜。模塊與模塊之間can總線信號(hào)經(jīng)光電轉(zhuǎn)換后使用光纖連接。
3 can接口硬件設(shè)計(jì)
can是一種基于廣播的通訊機(jī)制,報(bào)文依靠報(bào)文標(biāo)識(shí)符來進(jìn)行識(shí)別。can協(xié)議支持兩種幀格式,不同之處在于標(biāo)識(shí)符域的長(zhǎng)度不同,一種被稱為can標(biāo)準(zhǔn)幀,支持11bit的標(biāo)識(shí)符長(zhǎng)度;另一種稱為can擴(kuò)展幀,支持29bit的標(biāo)識(shí)符。
can接口芯片選用philips公司的can獨(dú)立控制器sja1000。arm處理器at91rm9200內(nèi)部集成了外部總線接口ebi,通過此接口與sja1000連接。從sja1000輸出的can信號(hào),通過光藕器件隔離后連接到收發(fā)器tja1050,收發(fā)器的輸出與總線連接。
sja1000的地址線和數(shù)據(jù)線是分時(shí)復(fù)用的,而at91rm9200的外部數(shù)據(jù)總線接口ebi的地址線和數(shù)據(jù)線是相互獨(dú)立的,因此,需要通過軟件編程實(shí)現(xiàn)地址的鎖存,以達(dá)到數(shù)據(jù)和地址的分時(shí)傳輸。硬件原理圖如圖3[3]。
sja1000的數(shù)據(jù)/地址復(fù)用總線直接與arm的ebi數(shù)據(jù)總線低8位連接,地址鎖存信號(hào)/ale由arm的a0產(chǎn)生,/cs與/we分別由ncs4和new與a0經(jīng)或運(yùn)算后產(chǎn)生。由硬件電路可確定sja1000的物理地址是0x50000000。
風(fēng)電場(chǎng)環(huán)境惡劣,為了保證控制系統(tǒng)準(zhǔn)確傳輸數(shù)據(jù),增強(qiáng)can總線節(jié)點(diǎn)的抗干擾性能, sja1000控制器經(jīng)過高速光藕6n137隔離后與收發(fā)器tja1050相連,實(shí)現(xiàn)總線上各can節(jié)點(diǎn)之間的電氣隔離。采用dc-dc電源隔離模塊dcr010505,實(shí)現(xiàn)光耦兩端的電源隔離。canh接總線的高電平端,canl接總線的低電平端。由于風(fēng)電機(jī)組垂直距離較高,容易受雷電的影響,在兩根can總線輸入端與地之間分別并聯(lián)一30pf的電容和一防雷擊管,以濾除高頻干擾和防止浪涌電壓。
4 can接口通訊軟件設(shè)計(jì)
對(duì)于can的通訊程序,采用分層處理的方法,包括驅(qū)動(dòng)層和應(yīng)用層。因此,can接口軟件通訊包括兩部分:can驅(qū)動(dòng)程序和can應(yīng)用程序。驅(qū)動(dòng)程序負(fù)責(zé)完成linux內(nèi)核與sja1000之間的數(shù)據(jù)通訊,即linux內(nèi)核設(shè)置sja1000的控制寄存器,讀寫sja1000接收、發(fā)送緩沖器。應(yīng)用程序部分負(fù)責(zé)完成用戶空間和內(nèi)核空間的數(shù)據(jù)交換,以及分析從sja1000接收到的報(bào)文,封裝要發(fā)送報(bào)文。接收的報(bào)文主要包括來自變流模塊和變槳偏航控制模塊的機(jī)組狀態(tài)信息及風(fēng)速風(fēng)向、各類溫度和轉(zhuǎn)速信號(hào)等。發(fā)送的報(bào)文包括下發(fā)給變流模塊和變槳偏航控制模塊的控制指令及控制參數(shù)。
4.1 can驅(qū)動(dòng)程序設(shè)計(jì)
(1)底層驅(qū)動(dòng)程序總體設(shè)計(jì)。在linux中設(shè)備驅(qū)動(dòng)程序是由一組數(shù)據(jù)結(jié)構(gòu)和函數(shù)組成的,它包含設(shè)備服務(wù)子程序(如open、read、write、close、ioctl等)、初始化函數(shù)can_init()和中斷處理程序can_interrupt()。
在linux加載can驅(qū)動(dòng)時(shí)調(diào)用can_init(),向操作系統(tǒng)注冊(cè)設(shè)備,同時(shí)完成can總線波特率的設(shè)置,id過濾器的設(shè)置,清空接收和發(fā)送緩沖區(qū),開啟中斷等工作,完成初始化后,退出復(fù)位模式,進(jìn)入正常的工作模式。
評(píng)論