席偉俤,李偉剛,李鵬杰
(中國航發(fā)控制系統(tǒng)研究所,江蘇無錫 214063)
32位定點運算數(shù)學庫IQmath在航空發(fā)動機FADEC系統(tǒng)中的應用
席偉俤,李偉剛,李鵬杰
(中國航發(fā)控制系統(tǒng)研究所,江蘇無錫 214063)
為提高航空發(fā)動機FA D EC系統(tǒng)定點CPU的計算效率和計算精度,針對實際工程應用中的數(shù)學運算的方法展開討論,分析了定點數(shù)運算和浮點數(shù)運算在計算精度和運行效率方面存在的差異。參考TI公司的設計理念,自行設計了支持統(tǒng)一定點算法和可變定點算法的32位定點運算數(shù)學庫IQ math。在國內(nèi)發(fā)動機控制領域不再依賴國外的庫函數(shù),掌握了32位定點數(shù)學庫的源代碼,并在實際項目中應用了IQ math數(shù)學庫。試驗結(jié)果表明:IQ math數(shù)學庫的應用提高了定點CPU數(shù)學運算的精度和效率,完滿實現(xiàn)了預定的控制算法。
定點運算數(shù)學庫;全權限數(shù)字電子控制;定點數(shù);浮點數(shù);航空發(fā)動機
隨著航空發(fā)動機技術和計算機技術的快速發(fā)展,發(fā)動機控制系統(tǒng)由早期的機械液壓式控制系統(tǒng)發(fā)展到現(xiàn)在的全權限數(shù)字電子控制(FADEC)系統(tǒng),一方面使航空發(fā)動機性能有了很大提高,另一方面也對發(fā)動機控制系統(tǒng)的可靠性提出了更高要求。對控制系統(tǒng)的實時性和精確性有很高要求。對于定點CPU,國外已經(jīng)掌握了定點數(shù)學運算庫的源代碼,而在國內(nèi)普遍使用的是運算庫的動態(tài)連接庫,對于源代碼不可見,運算機理模糊。
在某型發(fā)動機FADEC系統(tǒng)中,數(shù)字電子控制器使用的CPU芯片不支持浮點運算,而實際應用的數(shù)據(jù)為浮點數(shù),所以要將浮點數(shù)轉(zhuǎn)化為定點數(shù)之后才能運算,這就涉及到數(shù)的定標問題。本文針對FADEC系統(tǒng)嵌入式軟件定點CPU,自行設計了1種32位定點數(shù)學庫IQmath,掌握了定點運算庫的源代碼及運算機理。在實際項目應用中不但提高了定點CPU的運算效率,又保證了較高運算精度[1-6]。
定點數(shù)是計算機采用的1種數(shù)的表示方法,參與運算的數(shù)的小數(shù)點位置固定不變[7],計算機僅僅考慮位。在整數(shù)運算中,位的位置表示2到2的高次冪(從右邊開始)。
因此 0000000000010000 表示數(shù)字 16(24),如圖1所示。從定點數(shù)的起點可以觀察到,有個隱含的十進制點(稱為基點)位于最右邊位值的右邊。
對于同樣的16位數(shù),程序員決定將基點放在第5位和第 6位之間,使最右邊位表示 2~5。0000000000010000現(xiàn)在就不再表示16,而是0.5,如圖2所示。
通過改變基點的位置,程序員可以按比例縮小整數(shù)到1個小數(shù)值?;c的位置規(guī)定了程序如何解釋1個16位串。當基點向左移動時,小數(shù)變得更加精確,并且數(shù)字的全部范圍將縮小[8]。
為了利用定點運算,需要知道變量的取值范圍。定點運算操作通常執(zhí)行時是快速的,因為大部分微處理器在執(zhí)行整數(shù)操作時性能非常好。性能是以精度和復雜性為代價的。為了提高精度,不得不使用更多的位。當使用小的數(shù)字時定點運算產(chǎn)生的誤差大,而利用大數(shù)字時將產(chǎn)生相當好的結(jié)果。對于大數(shù)字,提高精度是利用更多位的結(jié)果。當數(shù)的變化范圍小時,定點數(shù)工作得非常好[9]。
2.1 32位IQ定點數(shù)
32位IQ定點數(shù),是指選用32位有符號數(shù)作為基礎,由程序員自行約定小數(shù)點位置的數(shù)據(jù)表示方法。小數(shù)點的位置不同,32位IQ定點數(shù)能表示的范圍不同,數(shù)據(jù)精度也不同。不同位置小數(shù)點的數(shù)據(jù)類型用IQn表示,其中n從0取到31[10]。IQ類型的表示范圍和數(shù)據(jù)精度見表1。

表1 IQ類型的范圍和精度
在實際應用中,可采用2種32位IQ定點數(shù)的表示方法。第1種方法是在應用中每個數(shù)據(jù)和公式都可以采用不同的定標方法,即采用IQn中的n隨數(shù)據(jù)不同而變化[11]。第2種方法是在應用中每個數(shù)據(jù)和公式選用統(tǒng)一的定標方法,即采用IQn中的n是固定不變的。固定的n一般被稱為GLOBAL_Q。在1個應用中需要考慮到數(shù)據(jù)的精度和范圍,高精度必然會使數(shù)據(jù)的范圍變小,因此系統(tǒng)設計者必須權衡精度和范圍,然后設置GLOBAL_Q的值[12]。
2.2 IQmath支持的庫函數(shù)
本文參考TI公司的理念,自行設計了32位定點運算數(shù)學庫IQmath[13]。
32位定點數(shù)學庫IQmath是高度優(yōu)化和具有高精度的數(shù)學函數(shù)庫集合。IQmath庫里面包含的函數(shù)均采用IQ格式定點數(shù)作為輸入/輸出,允許程序設計人員在定點CPU上進行浮點算法設計,從而提高運算速度[14-15]。
IQmath定點數(shù)學庫支持常見的算術運算和數(shù)學運算,主要運算介紹如下。
2.2.1 格式轉(zhuǎn)換
IQ ftoIQ(float F)將單精度浮點數(shù)轉(zhuǎn)為IQ數(shù)據(jù);
Float IQtof(IQ A)將IQn數(shù)據(jù)轉(zhuǎn)為單精度浮點數(shù)。
2.2.2 算術運算
IQ定點數(shù)的加減法等于整數(shù)直接加減;
IQ iqMpy(IQ A,IQ B),乘法函數(shù);
IQ iqDiv(IQ A,IQ B),除法函數(shù);
IQ iqMpy_Div(IQ A,IQ B),先乘后除函數(shù)。
2.2.3 數(shù)學運算
IQ iqabs(IQ A),絕對值函數(shù)
IQ iqSqrt(IQ A),算術平方根函數(shù)。
2.2.4 三角函數(shù)運算
IQ iqSin(IQ A),三角正弦函數(shù);
IQ iqCos(IQ A),三角余弦函數(shù);
IQ iqTan(IQ A),三角正切函數(shù);
IQ arcsin(IQ A),反正弦函數(shù);
IQ arccos(IQ A),反余弦函數(shù);
IQ arctan(IQ A),反正切函數(shù)。
3.1 統(tǒng)一定點算法應用
某型發(fā)動機FADEC系統(tǒng)中數(shù)字電子控制器使用的定點處理器不支持浮點運算,在程序運行時無法實現(xiàn)小數(shù)的操作,所以在計算時必須先把小數(shù)轉(zhuǎn)化為整數(shù)。采用IQmath定點數(shù)學庫可以將浮點數(shù)算法轉(zhuǎn)換為定點數(shù)算法,使運算速度明顯提高,對強實時性要求的發(fā)動機控制系統(tǒng)的設計十分有效。
在某型發(fā)動機控軟件的開發(fā)中,需實現(xiàn)如下控制計算
式中:R為面積比;a為某系數(shù);D8為喉道直徑,m;δ為偏轉(zhuǎn)角,(°);θ為方位角,(°);δH為調(diào)節(jié)環(huán)與作動筒平面偏轉(zhuǎn)角,(°);LH為水平位移,mm;Z1、Z2、Z3為作動筒長度,mm;U為某修正系數(shù);C為常數(shù),mm。
該算法要求計算精度高,采用常見的16位定點算法很難滿足要求,而且整個定點化過程非常復雜,會降低軟件的可維護性。經(jīng)過項目實際應用場景分析及結(jié)合圖3中IQ類型數(shù)據(jù)的范圍和精度考量,選用IQ-math定點數(shù)學庫統(tǒng)一定點方式進行算法設計。將GLOBAL_Q統(tǒng)一定義為19,其軟件計算流程如圖3所示。
IQ定點算法控制軟件配套某型數(shù)控系統(tǒng)進行了外場試車,試車數(shù)據(jù)如圖4所示。浮點理論計算數(shù)據(jù)與IQ定點計算試驗數(shù)據(jù)對比結(jié)果見表2。

表2 IQ定點計算數(shù)據(jù)與浮點理論計算數(shù)據(jù)對比
表 2 中 Z1IQtof、Z2IQtof、Z3IQtof 是 θ、δ、D8(D8=0.584 m)等輸入變量按照GLOBAL_Q=19統(tǒng)一定點算法計算后的結(jié)果再經(jīng)過反定點化為浮點數(shù)的結(jié)果,所有定點計算結(jié)果未超過IQ19類型數(shù)據(jù)表示的范圍[-4096,4095.999998093]);Z1、Z2、Z3理論是同樣的輸入數(shù)據(jù)按照浮點數(shù)計算得出的結(jié)果。浮點數(shù)理論和統(tǒng)一定點算法的計算結(jié)果最大偏差為0.03%,完全滿足客戶的計算精度偏差在0.05%以內(nèi)的要求。
3.2 可變定點算法應用
某型FADEC系統(tǒng)中對某信號有超前滯后校正要求
式中:b為超前校正系數(shù),其取值根據(jù)傳感器時間常數(shù)確定,用于修正傳感器采集的延遲;a為滯后校正系數(shù),由發(fā)動機特性決定。
對于上述信號超前滯后校正算法采用IQmath定點數(shù)學庫GLOBAL_Q=19統(tǒng)一定點算法,當輸入數(shù)據(jù)經(jīng)過校正處理后超過4095.999998093,計算結(jié)果出現(xiàn)溢出翻轉(zhuǎn)問題,數(shù)據(jù)見表3。表3中統(tǒng)一定點算法超前滯后校正結(jié)果由于出現(xiàn)計算溢出問題,導致與浮點理論超前滯后校正結(jié)果偏差較大,不滿足設計初衷,嚴重影響發(fā)動機控制效果和安全。
同樣的輸入數(shù)據(jù)及超前滯后校正系數(shù),采用可變定點算法就解決了計算溢出問題。數(shù)據(jù)定標為IQn(n可變,暫取n=12;數(shù)據(jù)范圍為[-524288,524287.999755859]),輸入數(shù)據(jù)經(jīng)過超前滯后校正處理后未出現(xiàn)超過IQ12類型數(shù)據(jù)范圍的問題,數(shù)據(jù)見表4。表4中浮點理論超前滯后校正結(jié)果與可變定點算法超前滯后校正結(jié)果最大偏差為0.03797%,滿足工程應用中偏差在0.05%以內(nèi)的要求。

表4 可變定點IQ數(shù)據(jù)(n=12)
本文自行設計的32位定點運算數(shù)學庫IQmath,不僅在國內(nèi)發(fā)動機控制領域掌握了32位定點數(shù)學庫的源代碼,不再依賴國外的庫函數(shù),而且成功地應用于航空發(fā)動機FADEC系統(tǒng)嵌入式控制軟件中。此外IQmath數(shù)學庫的統(tǒng)一定點算法和可變定點算法選擇靈活,具有極高的工程應用價值,可推廣應用到其他行業(yè)控制領域中。
[1]段彬,孫同景,李振華,等.快速浮、定點PID控制器FPGA的研究與實現(xiàn)[J].計算機工程與應用,2009,45(36):202-206.DUAN Bin,SUN Tongjing,LI Zhenhua,et al.Research and application on fast floating and fixed point PID controllers on FPGA[J].Computer Engineering and Applications,2009,45(36):202-206.(in Chinese)
[2]范嘯濤,季光明,何永斌.計算機浮點數(shù)算術運算的舍入誤差研究[J].成都理工大學學報(自然科學版),2005,32(2):213-216.FAN Xiaotao,JI Guangming,HE Yongbin.Rounding error study of calculator floating-point numbers arithmetic operation[J].Journal of Chengdu University of Technology (Science&Technology Edition),2005,32(2):213-216.(in Chinese)
[3]張宗杰,張明亮.C語言中浮點數(shù)的存儲格式及其有效數(shù)字位數(shù)[J].計算機與數(shù)字工程,2006,34(1):84-86,90.ZHANG Zongjie,ZHANG Mingliang.Storage format of a binary floating-point number and its bits of decimal significant digits[J].Computer&Digital Engineering,2006,34(1):84-86,90.(in Chinese)
[4]何克晶.科學計算浮點數(shù)據(jù)的高性能無損壓縮 [J].計算機學報,2010,33(6):966-976.HE KeJing.High performance lossless compression of scientific floating data[J].Chinese Journal of Computers,2010,33 (6):966-976.(in Chinese)
[5]Institute of Electrical and Electronics Engineers (IEEE).IEEE 754-1985:IEEE Standard for floating-point arithmetic[S].Microprocessor Standards Committee,1985.
[6]Institute of Electrical and Electronics Engineers (IEEE).IEEE 754-2008:IEEE Standard for floating-point arithmetic[S].Microprocessor Standards Committee,2008.
[7]邵正芬.最佳精度定點運算的FPGA實現(xiàn) [J].通信技術,2009,42(7):279-281.SHAO Zhengfen.FPGA implementation of best-precision fixed-point algorithm[J].Communications Technology,2009,42(7):279-281.(in Chinese)
[8]Texas Instruments Incorporated.TMS320C28x Assembly language tools user’s guide[OL].[2006-03].http://www.docin.com/p-30611705.html
[9]徐彥凱,雙凱.提高定點精度的FPGA信號處理算法[J].計算機工程與科學,2012,34(9):197-200.XU Yankai,SHUANG Kai.An algorithm of increasing fixed-point accuracy for signal processing systems with FPGA[J].Computer Engineer ing&Science,2012,34(9):197-200.(in Chinese)
[10]Texas Instruments Incorporated.Module user’s guide C28x foundation software [OL]. [2008-01-07].http://www.doc88.com/p-241831 099821.html
[11]谷海濤,顏湘武,于世濤.新型電機控制芯片TMS320F2812[J].微電機,2005,38(2):53-56.GU Haitao,YAN Xiangwu,YU Shitao.A new chip for motor control-TMS320F2812[J].Servo Technique,2005,38(2):53-56.(in Chinese)
[12]張銳.TMS320F2812混合編程的研究與應用[J].煤炭技術,2008,27(1):126-128.ZHANG Rui.Research and usage of TMS320F2812 mixed programming[J].Coal Technology,2008,27(1):126-128.(in Chinese)
[13]彭志明,李琳.基于IQmath庫的定點DSP算法設計[J].新器件技術,2010(9):39-41.PENG Zhiming,LI Lin.Fixed point DSP algorithm based on IQmath library[J].New Product&Technology,2010(9):39-41.(in Chinese)
[14]魏光,裴郡,林宗宏,等.IQmath在雙體船航行控制器設計中的應用[J].武漢理工大學學報(信息與管理工程版),2015,37(2):47-51.WEI Guang,PEI Jun,LIN Zonghong,et al.Application of IQmath in design on navigation controller of catamaran[J].Journal of Wuhan(Information&Management Engineering),2015,37(2):47-51.(in Chinese)
[15]李翰麟,潘厚宏,王濤,等.IQmath在基于PWM實現(xiàn)的D/A轉(zhuǎn)換調(diào)試中的應用 [J].重慶工學院學報 (自然科學版),2009,23(8):139-143.LI Hanlin,PAN Houhong,WANG Tao,et al.Applications of IQmath in PWM-based D/A conversion debugging[J].Journal of Chongqing Institute of Technology(Natural Science),2009,23 (8):139-143.(in Chinese)
Application of 32 bit Fixed-point Arithmetic Library IQmath in FADEC System of Aeroengine
XI Wei-di LI Wei-gang LI Peng-jie
(AECC Aero Engine Control System Institute,Wuxi Jiangsu 214063, China)
In order to improve the computational efficiency and accuracy of the fixed-point CPU of Aeroengine FADEC system,the mathematical operation method in practical engineering application was discussed and the differences between the fixed-point operation and the floating-point operation in the calculation accuracy and the running efficiency were analyzed.Reference to TI's design concept,arithmetic library IQmath was designed,which support the unified fixed-point algorithm and variable fixed-point algorithm 32-bit fixedpoint.In the field of domestic engine control is no longer dependent on foreign library functions,the 32-bit fixed-point mathematical library of the source code was mastered,and the IQmath library was applicated in actual project.The results show that the application of IQmath library improves the accuracy and efficiency of fixed-point CPU mathematical operation,and realizes the predetermined control algorithm.
IQmath;FADEC;fixed-point numbers;floating-point numbers;aeroengine
V 233.7
A
10.13477/j.cnki.aeroengine.2017.05.004
2017-03-11
席偉俤(1982),男,碩士,工程師,主要從事航空發(fā)動機數(shù)控系統(tǒng)控制軟件的研究與應用工作;E-mail:275392963@qq.com。
席偉俤,李偉剛,李鵬杰.32位定點運算數(shù)學庫IQmath在航空發(fā)動機FADEC系統(tǒng)中的應用[J].航空發(fā)動機,2017,43(5):21-25.XI Weidi LI Weigang,LI Pengjie.Application of 32 bit fixed-point arithmetic library IQmath in FADEC system of Aeroengine[J].Aeroengine,2017,43(5):21-25.
(編輯:李華文)