閱讀 | 訂閱
閱讀 | 訂閱
風(fēng)水力發(fā)電

CAN總線在風(fēng)力發(fā)電控制系統(tǒng)中的應(yīng)用(二)

星之球激光 來源:工控網(wǎng)2012-08-23 我要評論(0 )   

4 CAN接口通訊軟件設(shè)計 對于can的通訊程序,采用分層處理的方法,包括驅(qū)動層和應(yīng)用層。因此,can接口軟件通訊包括兩部分:can驅(qū)動程序和can應(yīng)用程序。驅(qū)動程序負(fù)責(zé)完成l...

        4  CAN接口通訊軟件設(shè)計

  對于can的通訊程序,采用分層處理的方法,包括驅(qū)動層和應(yīng)用層。因此,can接口軟件通訊包括兩部分:can驅(qū)動程序和can應(yīng)用程序。驅(qū)動程序負(fù)責(zé)完成linux內(nèi)核與sja1000之間的數(shù)據(jù)通訊,即linux內(nèi)核設(shè)置sja1000的控制寄存器,讀寫sja1000接收、發(fā)送緩沖器。應(yīng)用程序部分負(fù)責(zé)完成用戶空間和內(nèi)核空間的數(shù)據(jù)交換,以及分析從sja1000接收到的報文,封裝要發(fā)送報文。接收的報文主要包括來自變流模塊和變槳偏航控制模塊的機(jī)組狀態(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ù)位模式,進(jìn)入正常的工作模式。

  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(),當(dāng)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ù)用的,需要通過軟件編程模擬地址鎖存信號,以達(dá)到數(shù)據(jù)和地址的分時傳輸,因此,在程序設(shè)計中,要考慮sja1000的讀寫時序。圖4為sja1000的寫時序圖。

 


 

 

  圖4  sja1000寫時序圖

       

 系統(tǒng)中can通訊協(xié)議采用擴(kuò)展幀格式,29位id定義見圖6。

CAN通訊協(xié)議擴(kuò)展幀ID

  圖6  can通訊協(xié)議擴(kuò)展幀id

  其中,命令碼是來自不同模塊的報文的代號,占id的高12位,范圍為0x000-0x0FFf,包含同一組信號的報文具有唯一的命令碼。源地址和目標(biāo)地址取決于控制器地址,主控制器為0x01,網(wǎng)側(cè)變流控制器為0x02,電機(jī)側(cè)變流控制器為0x03,變槳偏航控制器為0x04。id的低9位分別為后續(xù)幀標(biāo)志和后續(xù)幀幀數(shù),若后續(xù)幀標(biāo)志為1,則表示該報文還有后續(xù)幀需要傳輸。#p#分頁標(biāo)題#e#

  (2) 基于qt/e的圖形界面應(yīng)用程序設(shè)計。本系統(tǒng)中主控制器圖形界面應(yīng)用程序基于linux平臺的qt/e實現(xiàn)。圖形界面應(yīng)用程序主要功能有兩個:一是從can 總線接收風(fēng)電機(jī)組運(yùn)行狀態(tài)信息,并顯示給用戶,二是判斷并處理機(jī)組狀態(tài)信息,通過can接口向各子控制模塊發(fā)送控制信息。由于本系統(tǒng)中can以多主方式工作,接收來自多個節(jié)點的數(shù)據(jù),并向多個節(jié)點發(fā)送數(shù)據(jù),因此,在應(yīng)用程序中要封裝不同的報文,還要分析收到數(shù)據(jù)的信息。

  為了提高系統(tǒng)的響應(yīng),應(yīng)用程序采用多線程機(jī)制,本系統(tǒng)中設(shè)計三個獨立線程來處理不同的任務(wù)。主線程負(fù)責(zé)主界面實時數(shù)據(jù)顯示,歷史數(shù)據(jù)查詢以及機(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)機(jī)組的控制器主要依靠技術(shù)進(jìn)口,因此,研究并設(shè)計有自主產(chǎn)權(quán)的機(jī)組控制系統(tǒng)有著深遠(yuǎn)的意義。

  參考文獻(xiàn)

  [1] 葉杭冶. 風(fēng)力發(fā)電機(jī)組的控制技術(shù)[m]. 北京:機(jī)械工業(yè)出版社,2006.

  [2] 孫大鵬. 雙饋風(fēng)力發(fā)電機(jī)組電控與安全保護(hù)系統(tǒng)設(shè)計研究[d]. 北京:華北電力大學(xué)研究生論文,2009.

  [3] 繞運(yùn)濤等. 現(xiàn)場總線can原理與應(yīng)用技術(shù)[m]. 北京:北京航空航天大學(xué)出版社,2007:242-243.

  [4] 儲忠,溫陽東. 基于s3c2410控制的can總線接口設(shè)計[j]. 合肥學(xué)院學(xué)報:自然科學(xué)版,2007,5,2:59-62.

 

轉(zhuǎn)載請注明出處。

暫無關(guān)鍵詞
免責(zé)聲明

① 凡本網(wǎng)未注明其他出處的作品,版權(quán)均屬于激光制造網(wǎng),未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用。獲本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使 用,并注明"來源:激光制造網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其相關(guān)責(zé)任。
② 凡本網(wǎng)注明其他來源的作品及圖片,均轉(zhuǎn)載自其它媒體,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本媒贊同其觀點和對其真實性負(fù)責(zé),版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系我們刪除。
③ 任何單位或個人認(rèn)為本網(wǎng)內(nèi)容可能涉嫌侵犯其合法權(quán)益,請及時向本網(wǎng)提出書面權(quán)利通知,并提供身份證明、權(quán)屬證明、具體鏈接(URL)及詳細(xì)侵權(quán)情況證明。本網(wǎng)在收到上述法律文件后,將會依法盡快移除相關(guān)涉嫌侵權(quán)的內(nèi)容。

網(wǎng)友點評
0相關(guān)評論
精彩導(dǎo)讀