



摘要:在光電伺服控制軟件調試過程中為了開發一種連續、實時、直觀的調試工具,需要將DSP環境中的數據實時傳輸到PC環境,利用PC豐富的圖形環境進行數據顯示和圖形繪制。如何實現DSP環境與PC環境之間的實時數據交換成為該調試工具開發中的一個關鍵問題。針對該問題,利用T1公司實時數據交換(RTDX)技術,實現了MATLAB和CCS集成開發環境之間的實時數據交換。
關鍵詞:光電伺服控制;調試工具;RTDX;MATLAB
中圖分類號:TP273 文獻標識碼:A 文章編號:1673-5048(2014)02-0012-04
0、引言
目前,在光電伺服控制軟件調試過程中,為了實現程序中各種寄存器、控制參數等變量的觀察,需要在目標程序中設置斷點,中斷目標程序運行。然而對實時性要求較高的光電伺服控制程序,這種插入斷點的調試方法不能實時反映所關心數據的變化,同時還有可能造成數據錯誤,影響控制算法設計和錯誤分析,給程序調試帶來不便。同樣,在其調試階段,需要在線修改程序中的控制參數,實現外部數據實時導人目標程序,而用傳統調試手段難以實現。針對以上問題,需要設計一個連續、實時、直觀的調試工具來進行光電伺服軟件調試,用以提高調試效率和縮短開發周期。本文針對該調試工具設計過程中PC環境與DSP環境數據實時交換的關鍵問題,通過應用實例說明了采用RTDX技術實現MATLAB和CCS的編程環境之間數據交換的方法。
1、實時數據交換技術RTDX
TI公司的Real Time Data Exchange(RTDX)技術利用DSP的內部仿真邏輯和JTAG接口實現主機與目標機之間的數據交換。它幾乎不占用DSP的系統資源,數據傳送可以在目標程序后臺運行,對目標程序影響很小。它可以在不中斷目標程序運行的前提下向主機實時發送目標DSP上各個寄存器或內存變量的值。而Pc主機也可通過TI公司提供的RTDX相關API函數獲取這些數據,并可對這些數據進行實時分析和可視化顯示。RTDX數據交換原理如圖1所示。
目標DSP為了向主機發送數據必須設定一個輸出通道,通過用戶接口可將數據送到輸出通道以使這些數據立即保存到RTDX目標機的緩存(由RTDX目標函數庫定義)中,然后再將這些數據通過JTAG接口發送到主機。目標機要從主機中獲得數據,首先必須設定輸入通道接收主機發出的命令,從而實現數據傳輸的同步。同時可利用輸出通道完成目標程序向RTDX主機函數庫發送數據,向RTDX主機函數庫發送數據請求及在目標機上提供數據緩存等功能。
2、RTDX應用過程
使用RTDX進行DSP環境和PC環境之間的數據交換時,需要在DSP目標程序和PC主機程序中分別實現。它們之間的數據傳輸格式和傳輸頻率要結合應用需求來定義。
2.1 DSP目標程序RTDX實現
在DSP目標程序中使用RTDX進行數據傳輸,只需在原有的DSP目標程序中加入關于RTDX通道初始化、數據緩存區定義和數據收發的代碼即可。以下是RTDX在DSP程序中的實現過程。
(1)RTDX初始化
首先使用以下宏完成RTDX輸入、輸出通道的創建:
RTDX_CreatelnputChannel(d_jchan);
RTDX_CreateOutputChannel(a_ochan)。其中:d_ichan為輸入通道名:a_ochan為輸出通道名。后面有關RTDX通道的操作函數都要使用它們來指定通道。完成通道創建以后使用以下宏來使能輸入、輸出通道:
RTDX_enableInput(d_ichan);
RTDX_enableOutput(a_ochan)。
(2)創建接收和發送數據緩存區
進行數據發送之前需要定義好接收和發送緩沖區,緩沖區的大小可根據實際應用情況定義,但不可超過RTDX通道最大容量值。定義Readdata[counterl]為接收緩沖區,counterl為緩沖區容量大小,定義Seaddata[counter2]為發送緩沖區。
(3)向RTDX通道讀寫數據
函數RTDX_readNB(d_ichan,(void*)Readdata,sizeof(short))可實現RTDX輸入通道數據非阻塞讀取。使用RTDX_write(a_ochan,Seaddata,500*sizeof(short))可以向RTDX通道發送數據,這里向通道中寫入了500個short類型數據,發送數據個數不應超過RTDX通道容量大小,否則會發送失敗。
在實際應用過程中RTDX只提供了一個數據的傳輸通道,而如何有效地使用這個通道還需要DSP目標程序和PC主機程序定義好數據的傳輸協議來實現。
2.2 MATLAB主機程序實現
PC主機程序是在MATLAB/GUI編程環境實現的。主要實現定時獲取DSP目標程序通過RTDX通道發送上來的數據:實時顯示接收到的數據信息;通過人機交互界面向DSP目標程序發送數據。設計流程如圖2所示。
主機程序首先通過MATLAB Link for CodeComposer Studio的相關API函數與CCS集成開發環境建立雙向和實時數據鏈接,成功建立鏈接后可以通過MATLAB/GUI程序控制執行CCS的命令來進行批處理調試和顯示,然后再進行DSP類型及數量的探測。待探測到目標DSP類型和數量后,程序將進行RTDX通道緩沖區配置、通道初始化等操作。完成這些操作后MATLAB/GUI程序控制CCS運行目標程序,同時啟動數據接收和發送定時器,此時DSP和PC可進行數據的實時交換。以下為MATLAB環境下RTDX的實現過程。
(1)RTDX初始化過程
首先使用configure(cc.rtdx,8192,4)對通道進行配置,配置參數需要根據DSP目標程序通道創建的個數來確定,這里配置緩沖區大小為8192字節,同時配置了4個通道,其中cc.rtdx為MATLAB和CCS建立連接成功后返回的句柄,后面有關RT-DX通道的操作函數都需要把它作為參數來使用。完成配置后,可使用open(cc.rtdx,’a_ochan’,’r’)來打開RTDX讀通道,使用open(cc.rtdx,’d_ichan’,’w’)來打開寫通道,其中a_ochan,d_jchan為DSP目標程序中創建通道時定義的通道名。最后使用以下函數完成RTDX輸入、輸出通道的使能:
enable(cc.rtdx,’d_ichan’);
enable(cc.rtdx,’a_ochan’)。
(2)接收定時器服務函數
TimeUpdateChannelATl( )
在定時服務程序中主要完成實時接收RTDX通道中的數據,并把接收到的數據存人數據緩存區,然后根據數據傳輸協議解析數據并對數據進行處理或圖形繪制。
(3)發送定時器服務函數
TimeUpdateChannelDTl( )
發送定時器服務函數主要實現數據的發送和協議的封包。當PC主機程序需要向DSP發送連續數據時,例如,正弦、方波和鋸齒波等類型的激勵信號時,需要將上述激勵信號離散化處理后再進行發送,發送控制命令時,只需發送按照傳輸協議封包好的數據即可。
3、RTDX應用實例
以某型光電穩定平臺的光電伺服控制軟件調試為背景,結合上文RTDX在DSP目標程序和MATLAB/GUI的實現過程,對光電伺服控制軟件和MATLAB/GUI程序進行修改,對DSP目標程序增加RTDX初始化、配置、收發等相關代碼,對MATLAB/GUI修改有關數據處理和圖形顯示代碼,并根據實際應用需求,實現平臺中各種參數的顯示、狀態控制等功能。
某型光電穩定平臺調試系統構成如圖3所示。軟件構成:MATLAB2011b、CCS3.3;硬件構成:兩軸光電穩定平臺、驅動控制硬件電路、調試PC主機、仿真器和直流穩壓電源等。RTDX應用實現如下:
步驟一,在光電伺服控制軟件中加入RTDX初始化相關函數并定義接收、發送緩沖區數組,數組大小按照RTDX最大容量500定義,同時還需實現平臺數據的傳輸協議,其中上傳數據包括陀螺、編碼器、測速機、跟蹤器數據類型及格式的定義。在伺服控制周期里采集到500個數據后進行數據上傳,因此數據上傳周期為500 ms;Pc機下傳數據包括控制指令和正弦、方波、階躍信號的離散化數據,數據下傳周期由MATLAB/GUI發送定時器設定,根據伺服控制的響應特性,設定下傳周期為10 ms,每個周期發送500個數據。
步驟二,在MATLAB/GUI程序中設計人機交互界面,如圖4所示。需對MATLAB/GUI程序中的接收定時服務函數和發送定時服務函數進行修改,設置接收定時器定時周期為5 ms,并且要小于光電伺服控制程序數據上傳周期,以防止數據丟失。按照傳輸協議,對接收定時服務函數增加數據傳輸協議解析函數,波形繪制函數等。對發送定時服務函數需增加激勵信號波形離散化函數和傳輸協議封包函數。
步驟三,利用MATLAB/GUI程序觀察光電穩定平臺各個傳感器的數據值,并可發送指令實現對光電穩定平臺各種功能的控制,實現對光電伺服控制軟件在線監控與調試,如圖4所示。
在MATLAB/GUI界面上單擊電機上電控制按鈕,運動軸選擇為俯仰軸,運動模式選擇穩定模式,激勵信號選擇為正弦,幅值為60(°)/s,頻率為4 Hz,點擊陀螺數據顯示按鈕,此時可在主機程序界面上觀察激勵信號(虛線)和響應信號(實線)的曲線。可以選擇不同類型的激勵信號和運動模式來實現對光電穩定平臺位置、速度和跟蹤閉環狀態性能的測試。在電機不上電的情況下還可以單獨觀察某個傳感器的數據,判斷它是否正常工作。
4、結論
本文以光電伺服控制軟件的調試為應用背景,針對DSP環境與PC環境實時數據交換的技術問題展開研究。利用RTDX技術實現了CCS3.3與MAT,LAB2011b編程環境之間的實時數據交換,并在MATLAB/GUI環境下開發了基于RTDX的光電伺服控制軟件調試工具。該調試工具為開發人員提供了連續、實時、直觀的調試環境,提高了調試效率。