李 根,唐臻宇,耿海翔,金佛榮
(四川大學物理科學與技術學院,四川 成都 610064)
基于Matlab/RTW的控制系統一體化新型設計方法
李 根,唐臻宇,耿海翔,金佛榮
(四川大學物理科學與技術學院,四川 成都 610064)
針對現行的控制系統設計方法存在的開發時間長、研發費用高等問題,介紹了一種基于Matlab/RTW(實時工作間)的新型的一體化設計方法。在控制系統開發中應用Matlab強大的仿真及易修改功能將算法設計、軟件設計組合在一起,并利用RTW工具自動生成控制系統主要部分的C代碼,不僅大大縮短了開發周期,而且節省了研發費用。在Matlab/Simulink仿真環境下,建立了利用手柄控制步進電機運動方向及速度的模型,自動生成的C代碼通過開發人員編寫的硬件接口代碼與研制出的硬件進行整合,經過實踐檢測,驗證了自動生成的C代碼具有很好的穩定性與執行速度。手柄控制步進電機的實例有力地證明了新型設計方法具有開發周期短、研發費用低的優點。
控制系統;RTW組件;一體化方法;生成代碼;S-函數
目前,控制系統的開發仍然以傳統方法為主。傳統的設計方法需要眾多研發小組,而且只有當一個小組完成其任務之后,下個小組才能開始工作。這不僅消耗了大量的人力也增加了研發成本,延長了研發周期。該文介紹了一種針對控制系統一體化的新型設計策略,該方法的最主要的優點是基于Matlab/RTW,也即利用Matlab軟件及其組件將算法設計、軟件設計組合在一起,自動生成控制系統主要部分的C代碼,縮短了時間,節省了成本。
在控制系統的開發中,傳統方法由于其開發成本大、開發周期長已經越來越阻礙工業的發展。傳統的研發策略需要算法設計小組、軟件設計小組、硬件設計小組以及整合調試小組,而且只有當一個小組完成工作后,下個小組才可以開始工作,這種方法的所有軟件硬件開發都需要研發人員親自動手完成,因此這種層進式的開發方法是非常耗力耗時的,同時也增加了研發的成本。新型方法是用圖形化的語言進行建模仿真,并能夠方便快速的修改了,進而利用Matlab軟件及其組件自動生成實現算法的C代碼。這就將傳統方法中的算法設計及軟件主控制過程的軟件開發整合在一起,省去了開發主控制器主要代碼的軟件開發過程,從而使得開發周期大大縮短,成本大大降低。兩種方法的開發過程的對比如圖1所示。
RTW(Real-Time Workshop,實時工作間)是MATLAB的重要組成部分,它作為Matlab和Simulink的擴展,不僅使得系統實時仿真變得異常地快速簡便,而且能夠從構建好的Simulink模型自動生成優化的、簡潔的、可移植的標準ANSI C代碼。而這個獨立運行的C代碼可以在各種各樣實時的或者非實時的軟硬件目標環境中運行,可以在普通的PC硬件平臺、DSP、微控制器(microcontrollers)和裸板(bare-board)上運行,也可以在 Windows、DOS 或者各種商用的、個人的實時操作系統上運行,如XPC、VxWorks等。
圖1 兩種開發方法過程的對比
如圖2所示,新型方法包括以下幾個主要的步驟:
(1)Simlink模型構建與仿真。這是方法的第一步驟,也是方法的重心。通過對工程項目的要求進行分析,利用控制工程的原理,建立所需的動態模塊,組成系統模型。然后利用Matlab、Simulink、Toolboxes等工具箱對所建立模型進行仿真,分析仿真結果,對模型進行調整修改再仿真,如此反復檢測修改直到取得滿意的效果。最后由RTW讀取最終的系統模型并對其進行編譯,形成模型的中間描述文件mode1.rtw,并以ASCII碼形式進行存儲。
圖2 新型設計方法的流程圖
(2)生成C代碼。目標語言編譯器(TLC)首先讀取中間描述文件Mode1.rtw,然后進行編譯和執行目標文件中的命令,包括系統目標文件和每一個模塊目標文件。在這一階段中,目標語言編譯器TLC將中間描述文件Model.rtw轉換為目標C代碼。
(3)硬件及硬件接口C代碼的編寫。硬件設計小組通過分析項目要求,設計出應用系統的目標板,并編寫硬件接口程序(C代碼),這一步驟是由開發人員手動完成的,用于將Matlab生成的C代碼與開發的應用系統硬件聯系起來,起到一個十分重要的紐帶作用。
(4)生成可移植的C代碼。將由Matlab軟件自動生成的C代碼與開發人員手動編寫的應用硬件的接口代碼通過CPU的C編譯器進行編譯鏈接,進而生成可移植于設計的硬件目標板上的移植C代碼。
(5)檢驗。將所生成的可執行C代碼移植到開發的系統目標板中進行檢驗修改,從而完成整個系統的開發。
步進電機是一種將電脈沖轉化為角位移或者線位移的執行機構。它需要用連續且有序的電脈沖信號驅動。在電機不過載的情況下,電機的轉速和停止位置只取決于脈沖信號的頻率和脈沖數,而不受負載變化的影響。當步進驅動器接收到一個脈沖信號,它就驅動步進電機按設定的方向轉動一個固定的角度(及步距角)。由于這個線性關系,可以通過控制脈沖個數來控制角位移量,從而達到準確定位的目的。
手柄控制步進電機就是根據步進電機的工作原理,利用手柄移動的方向控制步進電機的轉動方向,利用手柄移動的快慢控制步進電機的轉動加速度。控制步進電機的控制手柄實際上就是一個電位器。手柄所在位置(x)通過人體工程函數V=f(x)對應電位(V),電位經過A/D采樣轉換變為變為電壓采樣信號,電機速度控制模塊濾除電壓信號變化過快的部分,使步進電機的加速度與速度處于所要求的加速度與速度門限值之內。經過濾波之后的電位信號通過電位頻率轉換函數變成頻率。
手柄處于平衡位置時的電位設為平衡電位V0,此時電機靜止。當電壓值高于這個平衡電位值時,位移為正;低于平衡電位時,位移為負。此系統就是通過控制手柄運動的方向及瞬時電位值V來控制步進電機的運動。主體框架如圖3所示。
圖3 手柄到頻率的轉換關系
電機速度控制模塊是該系統的主要模塊。可以簡單的看作一個濾波器,它控制速度變化的斜率及速度,濾除超過加速度門限值和速度門限值的點,使電機正常工作。電機速度控制模塊采用自己編寫的S-Function函數,電機速度控制模塊如圖4所示。
圖4 電機速度控制模塊
S-Function是系統函數(System Function)的簡稱,擴展了Simulink的性能,常用來解決建模中遇到的復雜的、不能直接用Simlink創建或者直接用Simlink創建顯得非常復雜的問題。它可以用Matlab語言,C,C++,Fortran及Ada語言編寫。可以根據自己的需要來編寫實現特殊功能的S-Function函數,使得建模易于實現。S-Function函數采用不同的語言編寫都有各自確定的格式,這里僅以C語言為例進行討論。此程序包含定義與包含,回調函數的實現及RTW和Simulink接口三個部分。
mdlOutputs函數是程序的主要部分,在每個采樣時間步長內,Simulink調用mdlOutputs來計算塊的輸出。mdlOutputs函數的實現是取出輸入信號,對其進行判斷,如果下個采樣點大于上個采樣點的值與加速度門限值之和,則輸出是上個采樣值與加速度門限值之和,從而限制了電機的加速度,起到濾波作用。
這段代碼用來判斷此S-Function函數是植入RTW還是Simulink中。
RTW自動完成從Simulink模型到生成模型C代碼的任務,RTW代碼的生成方法:(1)設置Solver Options Type參數,并選擇Ode5解碼器。(2)設置Fixed Step Size參數為一個合適的值。(3)選擇Real-TimeWorkshop頁面并按下Build按鈕。完成以上三個步驟即可生成一系列ABS系統模型相關文件:(1)model.C,它是模型的單機 C 代碼。(2)model.h,是包含狀態變量和參數的包含頭文件。(3)model_expor.h,是輸出數據和參數的包含頭文件。(4)model.reg,是包含頭文件,它包含了完成在生成代碼中對數據結構進行初始化的模型注冊信息。(5)model.prm,是一個包含模型中所用的參數的有關信息的包含頭文件。
通過分析工程項目要求,硬件開發人員開發出手柄控制步進電機的硬件目標板,開發人員手動編寫基于此目標板的硬件接口代碼,以便與主控制程序進行接口連接。
將所生成的C代碼與開發人員編寫的基于系統目標板的接口C代碼通過所應用CPU的C編譯器進行編譯鏈接生成與硬件對應的可移植代碼。將所生成的代碼移植到開發的應用系統目標板上,經過檢驗,不論是代碼的運行速度還是代碼的穩定性都能夠很好的滿足步進電機的運轉、加速及停止要求,達到了令人滿意的效果。
由此可見,與傳統開發方法相比,新型開發方法有如下優勢:
(1)形象的模型語言。用圖形語言代替抽象的高級語言來描述復雜的控制系統,編寫控制軟件程序,這就能使軟件工程師將更多的精力和時間用于控制策略的設計、比較和優化,以提高控制軟件的功能和性能。
(2)能夠快速直觀仿真驗證控制算法,比較不同控制算法的優劣,能在較短時間內設計出最優的算法。
(3)在線實時觀測。能在不中斷程序運行的情況下觀測控制軟件不同部分的運行結果,在不進行重新編譯程序的情況下,修改控制軟件系統內部的參數,迅速驗證參數配置后的控制響應。
[1]曹羅生.VC++與Matlab/Simulink混合編程的實現與研究[J].科學技術與工程,2007,7(21):5685-5687.
[2]齊星剛,趙 剛.在MATLAB/Simulink平臺上DSP代碼的自動生成[J].中國測試技術,2005,31(1):87-88.
[3]臧懷泉,李旺軍.基于RTW的汽車ABS的軟件設計與實現[J].工業控制計算機,2007,20(11):50-51.
[4]田 偉,熊晉魁.Simulink模型的C/C++代碼實現[J].應用技術,2004,31(11):16-18.
[5]張 祥,楊志剛.Matlab/Simulink模型到C/C++代碼的自動實現[J].重慶工學院學報,2006,20(11):111-123.
[6]樊曉丹,孫應飛.一種基于RTW的實時控制系統快速開發方法[J].清華大學學報,2003,43(7):895-898.
[7]胡廣書.數字信號處理[M].北京:清華大學出版社,2003.
[8]丁玉美,高西金.數字信號處理[M].西安:西安電子科技大學出版社,2002.
[9]王正林.Matlab/Simulink與控制系統仿真[M].北京:電子工業出版社,2008.
[10]張照明.應用MATLAB實現信號分析和處理[M].北京:科學出版社,2005.
New integrated design method for control system base on M atlab/RTW
LI Gen,TANG Zhen-yu,GENG Hai-xiang,JIN Fo-rong
(School of Physical Science and Technology,Sichuan University,Chengdu 610064,China)
Against the existing design method for control system with long development time and high cost,this paper introduced a new design method on the basis of Matlab/RTW and its steps.The method made full use of strong simulation and easy edition of Matlab, combined the algorithm design with the software design, and automatically generated the main C code of the control system by RTW tool.It reduced the development cycle greatly and saved the development cost too.Then, in the Matlab/Simulink simulation environment, the stepper model, the handlebar controlled the way and speed of the step motor, has been established.The automatically generated C code and the interrelated hardware have been integrated by the interface code written by the developer.The experimental result proved that the code has very good stability and run speed.The example confirmed that the new method took shorter development cycle,low development cost.
Control system;RTW;Integrated method;Generated code;S-function
TP273;TP311.52
A
1674-5124(2010)01-0075-03
2009-05-04;
2009-07-26
李 根(1984-),男,安徽阜陽人,碩士研究生,專業方向為測控技術。