《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > CAN總線在風(fēng)力發(fā)電控制系統(tǒng)中的應(yīng)用
CAN總線在風(fēng)力發(fā)電控制系統(tǒng)中的應(yīng)用
來源:中國傳動網(wǎng)
摘要: 風(fēng)力發(fā)電機組的控制系統(tǒng)是綜合性控制系統(tǒng),控制系統(tǒng)不僅要監(jiān)視機組運行參數(shù),對機組進行并網(wǎng)與脫網(wǎng)控制,,而且還要根據(jù)風(fēng)速與風(fēng)向的變化,,對機組進行優(yōu)化控制。CAN總線是一種支持分布式控制系統(tǒng)和實時性控制的串行通信網(wǎng)絡(luò),。其以多主機方式工作,,通信速率可達1mbps。 can總線的上述特點正適用于風(fēng)力發(fā)電機控制系統(tǒng)的獨特要求,,因此,,本文提出一種基于can總線架構(gòu)的風(fēng)力發(fā)電控制系統(tǒng)??刂葡到y(tǒng)中各模塊之間通過can總線實時交換數(shù)據(jù),,實現(xiàn)主控系統(tǒng)及各控制節(jié)點間的實時通信與數(shù)據(jù)交換。文章在分析了can協(xié)議及can獨立控制器sja1000工作原理和讀寫邏輯的基礎(chǔ)上,,設(shè)計了can接口,,給出了硬件原理圖,分析了can通訊程序流程及系統(tǒng)中信號和控制指令的通訊幀格式,。另外,,本文還給出了基于嵌入式qt的應(yīng)用程序的設(shè)計方案。
Abstract:
Key words :

 

 1  引言
        風(fēng)力發(fā)電機組的控制系統(tǒng)是綜合性控制系統(tǒng),,控制系統(tǒng)不僅要監(jiān)視機組運行參數(shù),,對機組進行并網(wǎng)與脫網(wǎng)控制,而且還要根據(jù)風(fēng)速與風(fēng)向的變化,,對機組進行優(yōu)化控制,。CAN總線是一種支持分布式控制系統(tǒng)和實時性控制的串行通信網(wǎng)絡(luò)。其以多主機方式工作,,通信速率可達1mbps,。
        can總線的上述特點正適用于風(fēng)力發(fā)電機控制系統(tǒng)的獨特要求,因此,,本文提出一種基于can總線架構(gòu)的風(fēng)力發(fā)電控制系統(tǒng),。控制系統(tǒng)中各模塊之間通過can總線實時交換數(shù)據(jù),,實現(xiàn)主控系統(tǒng)及各控制節(jié)點間的實時通信與數(shù)據(jù)交換。文章在分析了can協(xié)議及can獨立控制器sja1000工作原理和讀寫邏輯的基礎(chǔ)上,,設(shè)計了can接口,,給出了硬件原理圖,分析了can通訊程序流程及系統(tǒng)中信號和控制指令的通訊幀格式,。另外,,本文還給出了基于嵌入式qt的應(yīng)用程序的設(shè)計方案。
  2  系統(tǒng)結(jié)構(gòu)與功能
        本文基于分散控制系統(tǒng)理念,,針對雙饋型變速恒頻風(fēng)力發(fā)電機組設(shè)計控制系統(tǒng),。雙饋型風(fēng)電機組控制系統(tǒng)基本結(jié)構(gòu)如圖1所示。


                        圖1  雙饋型風(fēng)電機組控制系統(tǒng)基本結(jié)構(gòu)
                              
        主控制器選用32位嵌入式處理器at91rm9200,,通過硬件設(shè)計擴展外圍can接口,,實現(xiàn)與其它節(jié)點的通信。同時外接帶觸摸屏的lcd顯示器,,監(jiān)控界面利用嵌入式qt設(shè)計,,對整個機組實時監(jiān)控。主控制器通過以太網(wǎng)與風(fēng)電場控制中心通信,。變流器控制采用雙pwm控制方式,,即由兩個dsp生成pwm信號,電機側(cè)部分負責電機勵磁控制,,網(wǎng)側(cè)負責并網(wǎng)控制,;兩模塊均基于tms320f2812設(shè)計,通過其自帶的ecan接口與主控制器及其它節(jié)點通信,。變槳控制系統(tǒng)同樣基于arm(at91rm9200)設(shè)計,,擴展can接口實現(xiàn)通信。變槳控制器和變頻控制器通過i/o通道采集接收各傳感器數(shù)據(jù),,并進行相關(guān)計算與判斷,,輸出控制信號,實現(xiàn)智能分散控制,,同時向主控制器發(fā)送機組參數(shù)并接收主控命令,。整體結(jié)構(gòu)框圖如圖2。

                        圖2  風(fēng)力發(fā)電機組控制系統(tǒng)整體結(jié)構(gòu)
                              
       主控制器位于地面控制柜,,變槳控制器位于機艙控制柜,,變頻控制器分電機側(cè)和網(wǎng)側(cè)兩部分,位于地面控制柜,。模塊與模塊之間can總線信號經(jīng)光電轉(zhuǎn)換后使用光纖連接,。
   3  can接口硬件設(shè)計
        can是一種基于廣播的通訊機制,報文依靠報文標識符來進行識別,。can協(xié)議支持兩種幀格式,,不同之處在于標識符域的長度不同,一種被稱為can標準幀,,支持11bit的標識符長度,;另一種稱為can擴展幀,支持29bit的標識符,。
        can接口芯片選用philips公司的can獨立控制器sja1000,。arm處理器at91rm9200內(nèi)部集成了外部總線接口ebi,通過此接口與sja1000連接,。從sja1000輸出的can信號,,通過光藕器件隔離后連接到收發(fā)器tja1050,收發(fā)器的輸出與總線連接,。
         sja1000的地址線和數(shù)據(jù)線是分時復(fù)用的,,而at91rm9200的外部數(shù)據(jù)總線接口ebi的地址線和數(shù)據(jù)線是相互獨立的,因此,,需要通過軟件編程實現(xiàn)地址的鎖存,,以達到數(shù)據(jù)和地址的分時傳輸。硬件原理圖如圖3[3],。
                        圖3  can接口硬件原理圖
                              
        sja1000的數(shù)據(jù)/地址復(fù)用總線直接與arm的ebi數(shù)據(jù)總線低8位連接,,地址鎖存信號/ale由arm的a0產(chǎn)生,/cs與/we分別由ncs4和new與a0經(jīng)或運算后產(chǎn)生,。由硬件電路可確定sja1000的物理地址是0x50000000,。
         風(fēng)電場環(huán)境惡劣,為了保證控制系統(tǒng)準確傳輸數(shù)據(jù),,增強can總線節(jié)點的抗干擾性能,,sja1000控制器經(jīng)過高速光藕6n137隔離后與收發(fā)器tja1050相連,實現(xiàn)總線上各can節(jié)點之間的電氣隔離,。采用dc-dc電源隔離模塊dcr010505,,實現(xiàn)光耦兩端的電源隔離。canh接總線的高電平端,,canl接總線的低電平端,。由于風(fēng)電機組垂直距離較高,容易受雷電的影響,,在兩根can總線輸入端與地之間分別并聯(lián)一30pf的電容和一防雷擊管,,以濾除高頻干擾和防止浪涌電壓。
   4  can接口通訊軟件設(shè)計
         對于can的通訊程序,,采用分層處理的方法,,包括驅(qū)動層和應(yīng)用層。因此,,can接口軟件通訊包括兩部分:can驅(qū)動程序和can應(yīng)用程序,。驅(qū)動程序負責完成linux內(nèi)核與sja1000之間的數(shù)據(jù)通訊,,即linux內(nèi)核設(shè)置sja1000的控制寄存器,讀寫sja1000接收,、發(fā)送緩沖器,。應(yīng)用程序部分負責完成用戶空間和內(nèi)核空間的數(shù)據(jù)交換,以及分析從sja1000接收到的報文,,封裝要發(fā)送報文,。接收的報文主要包括來自變流模塊和變槳偏航控制模塊的機組狀態(tài)信息及風(fēng)速風(fēng)向、各類溫度和轉(zhuǎn)速信號等,。發(fā)送的報文包括下發(fā)給變流模塊和變槳偏航控制模塊的控制指令及控制參數(shù),。
    4.1 can驅(qū)動程序設(shè)計
         (1)底層驅(qū)動程序總體設(shè)計。在linux中設(shè)備驅(qū)動程序是由一組數(shù)據(jù)結(jié)構(gòu)和函數(shù)組成的,,它包含設(shè)備服務(wù)子程序(如open,、read、write,、close,、ioctl等)、初始化函數(shù)can_init()和中斷處理程序can_interrupt(),。
         在linux加載can驅(qū)動時調(diào)用can_init(),,向操作系統(tǒng)注冊設(shè)備,同時完成can總線波特率的設(shè)置,,id過濾器的設(shè)置,,清空接收和發(fā)送緩沖區(qū),開啟中斷等工作,,完成初始化后,,退出復(fù)位模式,進入正常的工作模式,。
         read從接收緩沖區(qū)讀取數(shù)據(jù),;write向發(fā)送緩沖區(qū)寫人數(shù)據(jù);release關(guān)閉can控制器,;ioctl向can 控制器發(fā)各種操作命令,,包括設(shè)置sja1000總線波特率、id過濾器等,;open打開can控制器,,并使用函數(shù)request_irq()向系統(tǒng)申請中斷,并設(shè)置中斷處理程序為can_interrupt(),,當sja1000內(nèi)部中斷寄存器(ir)的任意位置為1時,,int引腳低電平有效,調(diào)用其中斷處理函數(shù)can-interrupt(),,在該函數(shù)中讀取中斷控制寄存器,,判斷中斷原因(接收中斷,、發(fā)送中斷、錯誤中斷,、數(shù)據(jù)溢出中斷,、喚醒中斷),從而調(diào)用相應(yīng)的服務(wù)子程序,。
       (2)sja1000讀寫邏輯分析及設(shè)計。由于sja1000的地址線和數(shù)據(jù)線是分時復(fù)用的,,需要通過軟件編程模擬地址鎖存信號,,以達到數(shù)據(jù)和地址的分時傳輸,因此,,在程序設(shè)計中,,要考慮sja1000的讀寫時序。圖4為sja1000的寫時序圖,。
                        圖4  sja1000寫時序圖
   4.2 寫時序邏輯
       通過分析寫時序,,可知,sja1000的寫數(shù)據(jù)/命令過程分為以下兩步[4]:
       (1)將sja1000的ale引腳信號拉高,,然后往復(fù)用總線上送地址信號,,待數(shù)據(jù)穩(wěn)定后,拉低ale信號,,在ale引腳產(chǎn)生下降沿,,進行地址鎖存。
       (2)將cs引腳信號拉低,,并拉低wr信號,,打開寫允許;然后往復(fù)用總線上送數(shù)據(jù)信號,,待數(shù)據(jù)穩(wěn)定后,,拉高wr信號,使wr引腳產(chǎn)生上升沿,,進行寫操作,,將數(shù)據(jù)寫入sja1000目標寄存器。
        linux系統(tǒng)中,,不能直接訪問物理地址,,而是先要映射到內(nèi)核空間中,通過虛擬地址去訪問,。由硬件電路可知,,sja1000的物理地址是0x50000000,最大空間為為108個字節(jié)(pelican方式),。sja1000寫程序如下:
         addr = ioremap(0x50000000, 0x80);
         void write_sja1000 (unsigned int data, unsigned int 
     reg) {
         writeb (reg, addr+1);
         writeb (data, addr);
         }
         其中,,ioremap()為物理地址到虛擬內(nèi)存的映射,,addr為地址映射后得到的內(nèi)核空間虛擬地址;reg是sja1000內(nèi)部寄存器地址,;data是要寫的數(shù)據(jù),。writeb(reg, addr+1)模擬ale鎖存地址,發(fā)地址信號reg,,addr+1將使地址線a0產(chǎn)生高電平,,由硬件設(shè)計電路知道這將使地址鎖存信號ale拉高;然后,,reg被送到了復(fù)用總線上,。writeb (data,  addr)發(fā)送數(shù)據(jù)到地址reg,addr將使a0拉低,,reg被鎖存,;然后,data被送到復(fù)用總線上,,也就寫到了被鎖存的地址reg所指空間,。

    4.3 讀時序邏輯
         圖5為sja1000的讀時序圖。
                        圖5  sja1000的讀時序
       通過分析讀時序,,可知,,sja1000的讀數(shù)據(jù)/命令過程分為以下兩步[4]:
       (1) 將sja1000的ale引腳信號拉高,然后往復(fù)用總線上送地址信號,,待數(shù)據(jù)穩(wěn)定后,,拉低ale信號,在ale引腳產(chǎn)生下降沿,,進行地址鎖存,。
       (2)將cs引腳信號拉低,并拉低rd信號,,打開讀允許,;然后往復(fù)用總線上送數(shù)據(jù)信號,待數(shù)據(jù)穩(wěn)定后,,拉高rd信號,,使rd引腳產(chǎn)生上升沿,進行讀操作,,將sja1000目標寄存器的數(shù)據(jù)讀回,。
             sja1000讀程序如下:
              int read_sja1000 (unsigned int reg) {      
              writeb (reg , addr+1);             
              readb ( addr);
              }
                            
         readb(addr)從地址reg讀取數(shù)據(jù)。addr將使a0拉低,,reg被鎖存,;然后,通過復(fù)用總線讀取被鎖存的地址reg所指空間數(shù)據(jù)。
  4.4 can通訊應(yīng)用程序設(shè)計
           (1) can數(shù)據(jù)報文格式,。風(fēng)電機組控制系統(tǒng)中,,各控制模塊之間需要傳輸?shù)男盘柡芏啵M量,、數(shù)字量以及控制指令和控制參數(shù)等,。模擬量包括風(fēng)速風(fēng)向,電壓電流,,功率,,電網(wǎng)頻率,各類轉(zhuǎn)速和溫度等,,數(shù)字量包括機組的各類狀態(tài)信息,,如并網(wǎng)狀態(tài),電源狀態(tài)等及各類故障信息,。這些信號均根據(jù)can協(xié)議封裝為報文,以數(shù)據(jù)包的形式發(fā)送,。每個報文可由一個或一組信號組成,。各個報文需要定義其幀格式,包括數(shù)據(jù)id,,優(yōu)先級,,數(shù)據(jù)長度等。每個模擬量均定義為兩個字節(jié)長度,,數(shù)字量則占1位,。為了提高傳輸效率,多個數(shù)字量組合為一個報文來發(fā)送,。
         系統(tǒng)中can通訊協(xié)議采用擴展幀格式,,29位id定義見圖6。
                        圖6  can通訊協(xié)議擴展幀id
                              
         其中,,命令碼是來自不同模塊的報文的代號,,占id的高12位,范圍為0x000-0x0FFf,,包含同一組信號的報文具有唯一的命令碼,。源地址和目標地址取決于控制器地址,主控制器為0x01,,網(wǎng)側(cè)變流控制器為0x02,,電機側(cè)變流控制器為0x03,變槳偏航控制器為0x04,。id的低9位分別為后續(xù)幀標志和后續(xù)幀幀數(shù),,若后續(xù)幀標志為1,則表示該報文還有后續(xù)幀需要傳輸。
         (2) 面應(yīng)用程序主要功能有兩個:一是從can 總線接收風(fēng)電機組運行狀態(tài)信息,,并顯示給用戶,,二是判斷并處理機組狀態(tài)信息,通過can接口向各子控制模塊發(fā)送控制信息,。由于本系統(tǒng)中can以多主方式工作,,接收來自多個節(jié)點的數(shù)據(jù),并向多個節(jié)點發(fā)送數(shù)據(jù),,因此,,在應(yīng)用程序中要封裝不同的報文,還要分析收到數(shù)據(jù)的信息,。
        為了提高系統(tǒng)的響應(yīng),,應(yīng)用程序采用多線程機制,本系統(tǒng)中設(shè)計三個獨立線程來處理不同的任務(wù),。主線程負責主界面實時數(shù)據(jù)顯示,,歷史數(shù)據(jù)查詢以及機組狀態(tài)的邏輯判斷和流程控制等。由于數(shù)據(jù)庫的讀寫是對磁盤文件的直接操作,,速度較慢,,因此在一獨立線程中實現(xiàn)歷史數(shù)據(jù)的寫操作,以防止對主線程控制程序的影響,,而對于歷史數(shù)據(jù)的查詢,,現(xiàn)場只在特定情況下用到,仍在主線程中實現(xiàn),。can總線數(shù)據(jù)的交互比較頻繁,,為了避免數(shù)據(jù)的丟失,在一獨立線程中完成數(shù)據(jù)的接收,。
     5  結(jié)束語
       目前,,風(fēng)力發(fā)電控制技術(shù)主要掌握在國外大企業(yè)手中,國內(nèi)機組的控制器主要依靠技術(shù)進口,,因此,,研究并設(shè)計有自主產(chǎn)權(quán)的機組控制系統(tǒng)有著深遠的意義。
參考文獻
         [1] 葉杭冶. 風(fēng)力發(fā)電機組的控制技術(shù)[m]. 北京:機械工業(yè)出版社,2006.
         [2] 孫大鵬. 雙饋風(fēng)力發(fā)電機組電控與安全保護系統(tǒng)設(shè)計研究[d]. 北京:華北電力大學(xué)研究生論文,2009.
         [3] 繞運濤等. 現(xiàn)場總線can原理與應(yīng)用技術(shù)[m]. 北京:北京航空航天大學(xué)出版社,2007:242-243.
         [4] 儲忠,溫陽東. 基于s3c2410控制的can總線接口設(shè)計[j]. 合肥學(xué)院學(xué)報:自然科學(xué)版,2007,5,2:59-62.
此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。