4 CAN接口通訊軟件設計
對於(yu) can的通訊程序,采用分層處理的方法,包括驅動層和應用層。因此,can接口軟件通訊包括兩(liang) 部分:can驅動程序和can應用程序。驅動程序負責完成linux內(nei) 核與(yu) sja1000之間的數據通訊,即linux內(nei) 核設置sja1000的控製寄存器,讀寫(xie) sja1000接收、發送緩衝(chong) 器。應用程序部分負責完成用戶空間和內(nei) 核空間的數據交換,以及分析從(cong) sja1000接收到的報文,封裝要發送報文。接收的報文主要包括來自變流模塊和變槳偏航控製模塊的機組狀態信息及風速風向、各類溫度和轉速信號等。發送的報文包括下發給變流模塊和變槳偏航控製模塊的控製指令及控製參數。
4.1 can驅動程序設計
(1)底層驅動程序總體(ti) 設計。在linux中設備驅動程序是由一組數據結構和函數組成的,它包含設備服務子程序(如open、read、write、close、ioctl等)、初始化函數can_init()和中斷處理程序can_interrupt()。
在linux加載can驅動時調用can_init(),向操作係統注冊(ce) 設備,同時完成can總線波特率的設置,id過濾器的設置,清空接收和發送緩衝(chong) 區,開啟中斷等工作,完成初始化後,退出複位模式,進入正常的工作模式。
read從(cong) 接收緩衝(chong) 區讀取數據;write向發送緩衝(chong) 區寫(xie) 人數據;release關(guan) 閉can 控製器;ioctl向can 控製器發各種操作命令,包括設置sja1000總線波特率、id過濾器等;open 打開can 控製器,並使用函數request_irq()向係統申請中斷,並設置中斷處理程序為(wei) can_interrupt(),當sja1000內(nei) 部中斷寄存器(ir)的任意位置為(wei) 1時,int引腳低電平有效,調用其中斷處理函數can-interrupt(),在該函數中讀取中斷控製寄存器,判斷中斷原因(接收中斷、發送中斷、錯誤中斷、數據溢出中斷、喚醒中斷),從(cong) 而調用相應的服務子程序。
(2)sja1000讀寫(xie) 邏輯分析及設計。由於(yu) sja1000的地址線和數據線是分時複用的,需要通過軟件編程模擬地址鎖存信號,以達到數據和地址的分時傳(chuan) 輸,因此,在程序設計中,要考慮sja1000的讀寫(xie) 時序。圖4為(wei) sja1000的寫(xie) 時序圖。

圖4 sja1000寫(xie) 時序圖
係統中can通訊協議采用擴展幀格式,29位id定義(yi) 見圖6。

圖6 can通訊協議擴展幀id
其中,命令碼是來自不同模塊的報文的代號,占id的高12位,範圍為(wei) 0x000-0x0FFf,包含同一組信號的報文具有唯一的命令碼。源地址和目標地址取決(jue) 於(yu) 控製器地址,主控製器為(wei) 0x01,網側(ce) 變流控製器為(wei) 0x02,電機側(ce) 變流控製器為(wei) 0x03,變槳偏航控製器為(wei) 0x04。id的低9位分別為(wei) 後續幀標誌和後續幀幀數,若後續幀標誌為(wei) 1,則表示該報文還有後續幀需要傳(chuan) 輸。#p#分頁標題#e#
(2) 基於(yu) qt/e的圖形界麵應用程序設計。本係統中主控製器圖形界麵應用程序基於(yu) linux平台的qt/e實現。圖形界麵應用程序主要功能有兩(liang) 個(ge) :一是從(cong) can 總線接收風電機組運行狀態信息,並顯示給用戶,二是判斷並處理機組狀態信息,通過can接口向各子控製模塊發送控製信息。由於(yu) 本係統中can以多主方式工作,接收來自多個(ge) 節點的數據,並向多個(ge) 節點發送數據,因此,在應用程序中要封裝不同的報文,還要分析收到數據的信息。
為(wei) 了提高係統的響應,應用程序采用多線程機製,本係統中設計三個(ge) 獨立線程來處理不同的任務。主線程負責主界麵實時數據顯示,曆史數據查詢以及機組狀態的邏輯判斷和流程控製等。由於(yu) 數據庫的讀寫(xie) 是對磁盤文件的直接操作,速度較慢,因此在一獨立線程中實現曆史數據的寫(xie) 操作,以防止對主線程控製程序的影響,而對於(yu) 曆史數據的查詢,現場隻在特定情況下用到,仍在主線程中實現。can總線數據的交互比較頻繁,為(wei) 了避免數據的丟(diu) 失,在一獨立線程中完成數據的接收。
5 結束語
目前,風力發電控製技術主要掌握在國外大企業(ye) 手中,國內(nei) 機組的控製器主要依靠技術進口,因此,研究並設計有自主產(chan) 權的機組控製係統有著深遠的意義(yi) 。
參考文獻
[1] 葉杭冶. 風力發電機組的控製技術[m]. 北京:機械工業(ye) 出版社,2006.
[2] 孫大鵬. 雙饋風力發電機組電控與(yu) 安全保護係統設計研究[d]. 北京:華北電力大學研究生論文,2009.
[3] 繞運濤等. 現場總線can原理與(yu) 應用技術[m]. 北京:北京航空航天大學出版社,2007:242-243.
[4] 儲(chu) 忠,溫陽東(dong) . 基於(yu) s3c2410控製的can總線接口設計[j]. 合肥學院學報:自然科學版,2007,5,2:59-62.
轉載請注明出處。







相關文章
熱門資訊
精彩導讀




















關注我們

