馬記龍 蘭杰 林淑 王其君 趙偉




摘要:為了更好地辨識出大型雙饋風電機組現場運行的變頻器、變槳系統參數,指導風力發電機組控制算法設計。在理解系統辨識原理的基礎上,通過MATLAB GUI設計了基于風力發電機組運行特性并專用于風機的系統辨識軟件,通過該軟件界面設計及程序編寫來詳述設計過程,通過該辨識軟件來進行參數分析時,辨識過程清晰明了,可以通過輸出曲線判斷辨識參數的合理性。該軟件使用方便,操作直觀,具有很強的實用性,也利于準確地獲取模型參數,利于工程設計,確保風機的安全運行。
關鍵詞:系統辨識;MATLAB;GUI;風力機
中圖分類號:TP312 ? ? ?文獻標識碼:A
文章編號:1009-3044(2021)31-0085-03
1 背景
隨著化石能源日益稀缺,全球環境越來越惡化,風能作為一種儲量大、分布廣、綠色環保可再生清潔能源,近年來受到了很多國家和地區的重視[1-2]。風力機是風電機組吸收和轉化風能的關鍵設備,風力機關鍵模型和參數的精確度,直接影響到風機的性能。因此,為保證風電機組安全、平穩、可靠運行,提高風電機組的發電效率和品質,延長風機使用壽命至關重要。目前國內外大量研究資料和文獻成果對風電機組的性能做了研究[3]。如何保證風機在實際運行過程所設計的控制算法的精確性,從眾多實際風場數據中辨識出精確的變頻器、變槳系統控制參數成為亟待解決的問題。本文針對此情況,在深入理解系統辨識原理的基礎上,通過MATLAB GUI開發界面設計了基于風力發電機組運行特性并專用于風機的系統辨識軟件。利用此辨識軟件,風機數據分析者不需要實時修改程序代碼,而只用導入風場主控采集的運行數據,在界面上進行相應的操作后通過辨識控件按鈕來直觀地觀察辨識結果,進而獲取變頻器、變槳系統的參數,還可以反復更改參數來重新進行辨識以獲取最優參數,以指導風力機控制算法設計,確保風機安全運行。
2 基本原理
系統辨識即在已知數據的基礎上,按照一定的準則下,通過實驗數據進行模擬實驗以確定一個與所測系統等價的模型[4]。在理解辨識原理和方法的基礎上,本文根據風機運行特性,采用離線辨識算法[5-6]。離線辨識算法:通常即指批處理算法,是把已經采集到的系統Input & Output數據進行計算。即先對采集到的數據預處理,待選定好系統辨識算法后,則通過一次計算即可獲得所需的模型參數,待模型確定之后,再通過仿真進行驗證,具體流程如圖1所示。
風力發電機組現場進行測試,為準確把握風機變槳系統響應特性,需對變槳系統進行辨識工作,以低階(通常為二階)的線性模型代替實際物理模型[7-8]。變槳系統的模型響應特性如下:
[G=1s2ω2+2ξsω+1e-τs] ? ? ? ? ? ? ? ? ? ? ? ? ? ? (1)
其中:[ω]是自然頻率,[ξ]是阻尼比,[τ]是延遲時間。
對于風力發電機變頻器響應特性,通常用如下模型來代表:
[G=1τs+1e-ds] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (2)
其中:[τ]是時間常數,[d]是延遲時間。
3 基于GUI系統辨識軟件的實現
MATLAB中提供的GUIDE(Graphical User Interface Development Environment,圖形用戶接口開發環境)設計工具,是專門為用戶提供的快速創建GUI的工具包,用戶操作鼠標就可以把需要添加的控件拽到設計面板中,通過M語言實現代碼編寫然后激活GUI中的控件,就能夠實現預期的功能[9-11]。
3.1 軟件界面設計
啟動MATLAB,在命令窗口首先輸入“guide”,然后回車則至GUI開發環境,接著新建一個GUI文件。或者單擊MATLAB主窗口的按鈕,生成的GUIDE快速啟動對話框按鈕。
本文設計的GUI控制面板所用控件有:13個靜態文本(Static Text)控件、4個觸控按鈕(Push Button)控件、2個列表框(Listbox)控件、3個彈起式菜單(Pop-up Menu)控件、6個可編輯文本(Edit Text)控件和2個復選框(Check Box)控件。
本文先修改控件的“String”“FontSize”和“Tag”三個屬性。 “String”定義控件的顯示字符。“FontSize”定義控件的字體大小。“Tag”定義控件的一個標識名稱。且各控件分別對應唯一的標識名稱,這樣在編程時就能唯一地執行跟蹤該控件,并完成相關的操作。完成設置后的界面如圖1所示。
將GUI文件命為ex,然后點擊保存。這樣GUI的信息將會自動保存到在ex.fig和ex.m文件中。已生成的M文件則會控制GUI及其操作響應。運行GUI所需代碼均此M文件中,可通過ex.m編程來控制控件。
3.2 辨識程序的編寫
在進行程序編寫時,應特別注意:ex.m文件中的主函數不能修改。本文主要包含如下8個函數的編寫:
1)ex_OpeningFcn函數
ex_OpeningFcn函數進行程序的初始化操作。主要使用set函數,具體如下:
set (handles.A,’PropertyName’,PropertyValue);
其中,handles.A指向要進行初始化的控件,A:此控件的標識符;PropertyName:句柄中要進行初始化所對應的屬性名稱;PropertyValu:具體的初始化值。
如:利用set函數對“列表框的值”控件進行初始化設置,具體如下:
set (handles.listbox_variables,'value',[]);
在ex_OpeningFcn函數下,可以用多個set函數來對其進行初始化。
2)pushbutton_filename_Callback函數
pushbutton_filename_Callback函數用來實現數據輸入,數據一般格式為“.cvs”“.xls/.xlsx”格式。主要代碼為:
[filename pathname] = uigetfile({'*.xls;*.xlsx;*csv'},'Pick a file',newpath);
3)pushbutton_selection_Callback函數
pushbutton_filename_Callback函數用來實現變量的選取。
4)listbox_variables_Callback函數
listbox_variables_Callback函數用來實現自動處理表頭并顯示。
5)listbox_scalar_Callback函數
listbox_scalar_Callback函數用來實現坐標縮放對比不同曲線。
6)pushbutton_plot_Callback函 數
pushbutton_plot_Callback 函數用來繪制被選變量時域坐標下的曲線。
7)pushbutton_psd_Callback函數
pushbutton_psd_Callback函數用來繪制被選變量的頻譜分析曲線。
8)pushbutton_id_Callback函數
pushbutton_id_Callback函數是“ID”按鈕的回調函數。具有如下功能:
①系統辨識主要代碼
處理數據前,先用get函數來讀取風場主控采集輸入的數據。代碼如下:
get (handles.A,’PropertyName’);
其中,A:所獲得數據的控件的標識符,handles.A:控件的句柄,PropertyName:要獲得的控件對應的屬性名稱。
例如,用get函數讀取獲得分子輸入控件,具體如下:
get (handles.edit_numerator,’string’);
用get函數讀取獲取分母輸入控件,具體如下:
get (handles.edit_denominator,'string');
用get函數讀取獲得延時輸入控件,具體如下:
get (handles.edit_IODelay,'string');
注意,用get函數獲得的數據從數據類型上來說實為字符串,將字符串轉化為數字則需調用str2num函數。以分子輸入控件中的數據獲取為例,具體如下:
numerator = str2num(numerator);
同理,獲取分母輸入控件的數據代碼如下:
denominator = str2num(denominator);
利用下列代碼來獲取被控對象的傳遞函數:
G = tf(numerator,denominator,'iodelay',delay*2);
②繪制曲線
程序主要是將現場數據快速地導入到系統辨識軟件中去,就能就快速地得到辨識結果,繪制擬合曲線,且可方便的更改辨識參數,非常方便地對比不同參數下的辨識效果,亦可反復地辨識,從而準確、快速地找到最符合實際系統的傳遞函數,以便用于風機控制算法參數設計。
所有程序的編寫完成并保存后,運行程序即可實現系統的辨識。
4 應用實例
本文是基于風力發電機組風場主控采集數據的辨識應用實例,主控采樣數據來自風機的變槳階躍響應和發電機變頻器響應。輸入數據是發電機扭矩給定、發電機扭矩反饋、槳葉設定角度、槳葉1角度、槳葉2角度、槳葉3角度。
將現場實測的發電機變頻器風場數據導入到辨識軟件如圖2所示,點擊ID控件按鈕進行系統辨識,結果如圖3所示。
從圖3可知,辨識出來的發電機扭矩響應曲線與發電機實際曲線基本一致,驗證了辨識參數的正確性。辨識得到的發電機+變頻器的參數為:[d=0.08,τ=0.06]。
將現場實測的變槳階躍數據導入到辨識軟件中如圖4所示,點擊ID控件按鈕進行系統辨識結果如圖5所示。
從圖5可知,辨識出來的變槳系統響應曲線與實際變槳系統響應曲線基本一致,驗證了辨識參數的正確性。通過系統辨識得到的變槳系統參數為:[ω=10.05,ξ=1,τ=0.1]。
5 結束語
本文利用MATLAB GUIDE設計的基于風力發電機組的系統辨識軟件,風機數據分析者不需要實時修改程序代碼,而只用導入風場主控采集的運行數據,在界面上進行相應的操作后通過辨識控件按鈕直觀地觀察辨識結果,同時可清晰明了地更改辨識參數,再多參數也可反復辨識,非常方便地對比不同參數下的辨識效果,從而準確、清晰地辨識出滿足變頻器、變槳系統運行要求的參數,以指導風機控制算法參數設計,便于工程上的應用。
參考文獻:
[1] 陳貞,倪維斗,李政.風電特性的初步研究[J].太陽能學報,2011,32(2):210-215.
[2] 葉成城,曹云峰,蔡旭.兆瓦級風機電動變槳距系統的設計與實現[J].電力電子技術,2013,47(2):61-63.
[3] 張仰飛,袁越,陳小虎,等.風力機參數的可辨識分析[J].電力系統自動化,2009,33(6):86-89.
[4] 李言俊,張科,余瑞星.系統辨識理論及應用[M].北京:國防工業出版社,2011.
[5] 鄭劍翔.MATLAB系統辨識工具箱在系統控制設計中的應用[J].福州大學學報(自然科學版),2010,38(5):703-707.
[6] 倪博溢,蕭德云.MATLAB環境下的系統辨識仿真工具箱[J].系統仿真學報,2006,18(6):1493-1496.
[7] 李輝,楊超,趙斌,等.風電機組電動變槳系統建模及運行特性評估與測試[J].電力系統自動化,2013,37(11):20-25,32.
[8] 胡壽松.自動控制原理[M].5版.北京:科學出版社,2007.
[9] 陳垚光.精通MATLAB GUI設計[M].北京:電子工業出版社,2013.
[10] 黃昆,趙剛,郭小強.基于GUI的系統辨識軟件設計[J].科學技術與工程,2011,11(13):3082-3084,3094.
[11] 姚秀芳,崔松菲.基于MATLAB GUIDE的程序設計[J].電腦知識與技術,2009,5(27):7767-7768,7772.
【通聯編輯:謝媛媛】
收稿日期:2021-06-20
作者簡介:馬記龍(1988—),男,四川簡陽人,工程師,學士,研究方向為風力發電機組智能算法設計及故障診斷;蘭杰(1985—),男,四川高縣人,高級工程師,碩士,研究方向為風力發電機組控制算法設計及故障診斷;林淑(1986—),女,四川資中人,工程師,碩士,研究方向為風力發電機組電氣設計、防雷接地;王其君(1982—),男,四川簡陽人,高級工程師,碩士,研究方向為風力發電機組載荷設計;趙偉(1983—),男,四川眉山人,高級工程師,碩士,研究方向為風力發電機組載荷設計。