高俊勇,王明明
(空軍航空大學基礎部,吉林長春 130022)
目前,多種多樣的測控系統廣泛應用于各行各業中,尤其是時效性要求比較高的實時控制、通信、飛行、制導等系統,數據處理和運算的速度和時間對于系統的技術性能更加重要和關鍵。各種從簡單到復雜的數據處理和運算主要是使用傳統的基于多字節乘除法的計算方法,這種計算方法主要采用重復循環方式實現多字節運算,字節越多計算所需的時間就越長,具有效率低、速度慢的特點,嚴重制約了系統的性能[1]。本文探討一種針對特定要求的新的高速計算方法,可以大幅度提高特定運算的計算速度,從而提高實時測控系統的性能。
本文以MCS51-89C2051 CPU、LM331壓頻轉換和4位LED數碼管等器件構成的能實現監測壓力、溫度等模擬量的儀表為例,說明分段插值實現多字節快速運算的算法實現過程。
在儀表的模擬量輸入接口,需要將輸入的溫度(量程為10℃~50℃)通過溫度變送器轉變為電流信號并輸送至儀表模擬接口,在儀表內部通過LM331壓頻變換電路將對應的模擬電流信號轉換成數字頻率信號以實現A/D變換。上述對應關系如下:


圖1 計數值與溫度值的線性關系
設x為對應溫度輸入電流和LM331計數值,y為計算出的實際溫度值,始點(x0,y0)表示10℃對應的計數0664;終點(xe,ye)表示50℃對應的計數6512。計數值與溫度值是線性關系如圖1所示。
所以實際的溫度數據為:

在該計算公式中,參與運算的數據都大于255,需用兩個字節來表示,也就是對于單字節的89C2051 CPU需要調用雙字節的運算子程序進行實時計算。
計算框圖及雙字節除法框圖如圖2和圖3所示:

圖2 計算框圖

圖3 雙字節除法框圖
傳統算法需調用雙字節乘除法子程序[3]。僅16位的雙字節除法子程序CPU就要執行16次循環。每次計算需要機器周期998個,運行時間為988us。
采用傳統算法工作效率低的主要原因是,計算時需要調用采用多次循環的乘除法子程序,字節數越多則計算速度越慢[3]。因此,分段插值法的設計思想是,在計算中回避直接對多字節進行乘除運算,預先將多字節的乘除運算處理形成數據表[4]。高字節數據通過查表得到計算結果和差值,低字節數據通過進行簡單的單字節乘除運算得到,最后將兩部分合成得出最終計算結果。其計算思路過程如圖4所示。

圖4 計算思路過程

圖5 線性關系圖
具體實現步驟如下:

步驟一:制作數據表
在計數的量值范圍內預先進行多組典型抽樣,然后根據公式計算結果并形成數據表。
(1)選定插值節點(本系統以計數值256的倍數為各節點);(2)對各節點的計數值xn按公式(1.1)計算出對應的溫度值yn;(3)計算每兩個節點間對應溫度值yn和yn+1的差值。

表1 插值數據表
步驟二:實際數據處理時,取實際計數凈值的高位字節,通過查表得出對應的溫度值和差值(如:計數凈值2770,高位字節是10,查表計算結果為275,差值為18);再取計數凈值的低位字節按下面公式計算(計數凈值2770的低位字節為2770-2560)。
步驟三:根據公式1.2進行計算
實際編程運行,針對上述具體問題計算,兩種算法實例對比數據如表2所示。

表6 兩種算法實例對比數據
綜上可知,分段插值查表算法無論是指令條數,還是運算時間與傳統算法相比都減少很多,它較好地解決了計算機的多字節復雜運算計算速度慢的問題,可以大幅度提高計算機在實時測控系統中的運算速度,提高測控系統的性能。尤其是對特定的嵌入式專項測控系統效果更佳。本算法的不足之處主要是目前只適用對速度有特殊要求的固定運算。
[1]呂勇,謝長生,高三紅.實時測控計算機應用系統的可靠性保障技術[J].計算機應用,2003(6):101-103.
[2]J.M.奧特加.數值分析[M].北京:高等教育出版社,1984.
[3]張越.分段插值在嵌入式系統中的應用[J].南京廣播電視大學期刊,2010.
[4]李慶揚,王能超,易大義.數值分析[M].4版.北京:清華大學出版社,2001.