陳寶欣,陳林軍,沈艷林,劉鵬,姜智譯
(1.后勤工程學(xué)院 后勤信息工程系,重慶401311;2.重慶通信學(xué)院;3.65113部隊)
?
科氏流量計串口調(diào)試系統(tǒng)設(shè)計與應(yīng)用*
陳寶欣1,陳林軍1,沈艷林1,劉鵬2,姜智譯3
(1.后勤工程學(xué)院 后勤信息工程系,重慶401311;2.重慶通信學(xué)院;3.65113部隊)
為解決科氏流量計二次儀表軟件調(diào)試開發(fā)過程中與上位機(jī)的通信問題,設(shè)計并實(shí)現(xiàn)了針對科氏流量計二次儀表的串口調(diào)試系統(tǒng),包括系統(tǒng)的軟硬件以及串口傳輸協(xié)議。主要功能包括串口配置、數(shù)據(jù)收發(fā)、數(shù)據(jù)顯示以及二次儀表參數(shù)設(shè)置等。系統(tǒng)實(shí)驗驗證了本串口調(diào)試系統(tǒng)對科氏流量計二次儀表開發(fā)的有效性。
串口;RS-232;SCI;MATLAB GUI;F28335;TRSF3221E
科里奧利質(zhì)量流量計(以下簡稱科氏流量計)可以直接測量高精度的質(zhì)量流量。在科氏流量計二次儀表的設(shè)計過程中,串口通信是一個必不可少的功能,擔(dān)負(fù)著與上位機(jī)通信的任務(wù)。同時,在二次儀表嵌入式軟件的開發(fā)調(diào)試過程中,通過串口通信實(shí)時傳輸相關(guān)數(shù)據(jù)或參數(shù)并直觀顯示,有利于及時掌握程序運(yùn)行狀態(tài),發(fā)現(xiàn)算法不足,以便及時修正。
傳統(tǒng)的串口調(diào)試軟件(如sscom、串口調(diào)試助手等),作為通用的串口調(diào)試工具,存在如下缺點(diǎn):
① 數(shù)據(jù)顯示類型單一,上述軟件一般僅支持HEX字符和ASCII字符的顯示,而不能顯示浮點(diǎn)數(shù);
② 數(shù)據(jù)顯示界面簡單,不能直觀、動態(tài)地顯示數(shù)據(jù),并作相關(guān)處理;
針對上述缺點(diǎn),本文設(shè)計并實(shí)現(xiàn)了針對科氏流量計二次儀表的串口調(diào)試系統(tǒng),為二次儀表的開發(fā)、調(diào)試提供支持。
圖1 系統(tǒng)總體設(shè)計
本文設(shè)計的串口調(diào)試系統(tǒng)主要由3部分構(gòu)成:系統(tǒng)硬件、系統(tǒng)軟件和傳輸協(xié)議??傮w設(shè)計如圖1所示。系統(tǒng)硬件部分包括:二次儀表上的串口通信模塊和上位機(jī),其中上位機(jī)需要配有串口,否則需使用USB轉(zhuǎn)RS-232串口轉(zhuǎn)接線。系統(tǒng)軟件包括二次儀表內(nèi)采用C語言編寫的程序和上位機(jī)采用MATLAB編寫的程序。由于串口通信都是基于二進(jìn)制傳輸?shù)?,因此需要相?yīng)的傳輸協(xié)議控制二次儀表和上位機(jī)的通信,以實(shí)現(xiàn)更復(fù)雜的通信。
2.1系統(tǒng)硬件
本文二次儀表選用的是TI公司C28X系列32位浮點(diǎn)DSP控制器——TMS320F28335[1-2]。該芯片外設(shè)豐富,含有3個SCI串行通信接口[3]。SCI是一個雙線異步串行端口,就像通常的UART,支持CPU和其他使用標(biāo)準(zhǔn)不歸零格式(nRZ)的異步外圍設(shè)備間的通信。由于上位機(jī)串口多采用基于RS-232的DB9接頭,因此本設(shè)計通過SCI口接TRSF3221E,實(shí)現(xiàn)TTL電平到RS-232電平的轉(zhuǎn)換,硬件電路如圖2所示,只需要3根線即可實(shí)現(xiàn)全雙工通信,即發(fā)送信號線、接收信號線和地線。TRSF3221E型RS-232收發(fā)器采用3~5.5 V供電,最大傳輸速率為1 Mb/s,同時該芯片具有自動斷電功能,在沒有通信的時候可斷電降低功耗[4]。上位機(jī)此處不多做介紹,一般帶有串口的PC即可。
圖2 RS-232轉(zhuǎn)換電路
2.2系統(tǒng)軟件
圖3 SCI中斷服務(wù)程序流程圖
系統(tǒng)軟件包括兩部分:二次儀表內(nèi)C程序和上位機(jī)MATLAB程序。二次儀表內(nèi)C程序的主要功能是流量計量、顯示輸出、串口通信等。串口通信程序通過SCI中斷和主函數(shù)查詢的方式實(shí)現(xiàn)指令的接收和處理。中斷服務(wù)程序流程如圖3所示。在主程序內(nèi)定時查詢接收幀標(biāo)志位,當(dāng)標(biāo)志位置1時表示接收到完整的一幀,則轉(zhuǎn)入幀處理程序,即根據(jù)傳輸協(xié)議處理幀內(nèi)容,并做出相關(guān)操作。
上位機(jī)MATLAB程序的主要功能是串口配置、向二次儀表發(fā)送指令、接收處理數(shù)據(jù)、實(shí)時顯示數(shù)據(jù)、保存數(shù)據(jù)以及儀表參數(shù)設(shè)置等。MATLAB的串口接口提供了一個對外圍設(shè)備的直接訪問,這個接口通過串口對象可實(shí)現(xiàn)串口通信和讀寫數(shù)據(jù)等功能。MATLAB通過以下指令建立和配置串口對象[5]:
1966年,荷蘭著名數(shù)學(xué)家、數(shù)學(xué)教育家弗賴登塔爾(H. Freudenthal)任國際數(shù)學(xué)教育委員會主席時,建議單獨(dú)為數(shù)學(xué)教育召開國際性大會.1969年在法國里昂召開了第一屆國際數(shù)學(xué)教育大會,開始了ICME的歷史.ICME每4年召開一次,與國際數(shù)學(xué)家大會錯開兩年召開.
Obj=serial(‘port’ , ‘PropertyName’ , Value);
為了可以實(shí)時顯示數(shù)據(jù),需要配置串口對象的回調(diào)函數(shù)(Callback Function)。當(dāng)接收到數(shù)據(jù)后觸發(fā)回調(diào)函數(shù),在回調(diào)函數(shù)內(nèi)根據(jù)傳輸協(xié)議處理數(shù)據(jù),并實(shí)時顯示。
軟件界面設(shè)計如圖4所示,主要包括顯示區(qū)、串口配置區(qū)、顯示設(shè)置區(qū)、指令發(fā)送區(qū)以及儀表參數(shù)設(shè)置等。
圖4 界面設(shè)計
各區(qū)域功能如下:
① 顯示區(qū):實(shí)時繪制接收到的數(shù)據(jù);
② 串口配置區(qū):配置串口參數(shù),主要是波特率、數(shù)據(jù)位、停止位、校驗位、流控制、串口號等;
③ 顯示設(shè)置區(qū):選擇要繪制顯示的數(shù)據(jù)和設(shè)置緩存大??;
④ 指令發(fā)送區(qū):直接發(fā)送指令控制二次儀表;
⑤ 儀表參數(shù)設(shè)置:打開二次儀表參數(shù)設(shè)置窗口,設(shè)置相關(guān)參數(shù),如流量系數(shù)、零點(diǎn)等。
2.3傳輸協(xié)議
上位機(jī)的COM口一般為RS-232接口,這種接口作為一種異步通信的接口標(biāo)準(zhǔn)和總線標(biāo)準(zhǔn),只規(guī)定了通信口的電氣特性、傳輸速率、連接特性和接口的機(jī)械特性等物理介質(zhì)層和鏈路層的內(nèi)容。要實(shí)現(xiàn)數(shù)據(jù)的雙向訪問和控制就需要編寫相應(yīng)的傳輸協(xié)議,因此本文設(shè)計了通用幀和數(shù)據(jù)幀兩種傳輸幀格式用于實(shí)現(xiàn)二次儀表和上位機(jī)的通信。
通用幀的主要作用是封裝指令和數(shù)據(jù)以及傳輸控制,二次儀表和上位機(jī)接收到完整一幀后根據(jù)內(nèi)容作出相關(guān)操作。幀格式如下:
0123456…起始字節(jié)長度字節(jié)功能字節(jié)讀寫字節(jié)Byte0Byte1Byte2…
具體說明如下:
① 起始字節(jié):標(biāo)志著一幀的開始,設(shè)置為一固定值,如“0xAA”。
② 長度字節(jié):當(dāng)前幀的長度,以字節(jié)為單位。
③ 功能字節(jié):當(dāng)前幀的功能標(biāo)識,用于標(biāo)識二次儀表的不同參數(shù)和不同指令。
④ 讀寫字節(jié):標(biāo)識當(dāng)前幀為讀或?qū)憽?/p>
⑤ Byte:具體的參數(shù)或指令內(nèi)容,最長為15字節(jié)。
實(shí)際軟件調(diào)試時需要連續(xù)發(fā)送數(shù)據(jù)監(jiān)控二次儀表運(yùn)行,為了提高傳輸效率,采用如下所示簡化的數(shù)據(jù)幀格式。
012345起始字節(jié)功能字節(jié)Byte0Byte1Byte2Byte3
每幀包含6個字節(jié),首字節(jié)與指令幀相同,第二字節(jié)標(biāo)識數(shù)據(jù)類型,如頻率或相位差等,其余字節(jié)構(gòu)成32位單精度浮點(diǎn)數(shù)。
為驗證設(shè)計的科氏流量計串口調(diào)試系統(tǒng)的有效性,對其進(jìn)行了測試。實(shí)驗方案如下:
① 打開MATLAB串口調(diào)試程序,設(shè)置波特率38 400 b/s,數(shù)據(jù)位8位,停止位1位,校驗位“無”,流控制“無”,然后點(diǎn)擊“打開串口”按鈕;
② 二次儀表SCI配置同上,實(shí)時向上位機(jī)發(fā)送頻率、幅值、相位差等測量信息;
③ 上位機(jī)通過“儀表參數(shù)設(shè)置”設(shè)置二次儀表參數(shù)或發(fā)送指令;
④ 關(guān)閉串口,保存數(shù)據(jù)。
圖5 接收數(shù)據(jù)結(jié)果
接收數(shù)據(jù)結(jié)果如圖5所示,可實(shí)時繪制頻率、幅值、相位差和信號圖形,并實(shí)時顯示當(dāng)前平均值等信息。
數(shù)據(jù)保存界面如圖6所示,保存類型為Excel文件,默認(rèn)文件名為當(dāng)前系統(tǒng)時間。儀表參數(shù)設(shè)置如圖7所示。
圖6 數(shù)據(jù)保存
圖7 儀表參數(shù)設(shè)置
本文設(shè)計并實(shí)現(xiàn)了一套科氏流量計串口調(diào)試系統(tǒng),用于解決科氏流量計二次儀表開發(fā)調(diào)試過程中與上位機(jī)通信的問題。系統(tǒng)可實(shí)時傳輸相關(guān)數(shù)據(jù)、在線發(fā)送指令,以及設(shè)置二次儀表相關(guān)參數(shù)。本系統(tǒng)有利于在二次儀表的調(diào)試過程中掌握程序運(yùn)行狀態(tài),并及發(fā)現(xiàn)算法不足,極大地方便了二次儀表的軟件開發(fā)工作。
[1] Texas Instrument.TMS320C28x CPU and Instruction Set Reference Guide,2009.
[2] Texas Instrument.TMS320x28xx,28xxx DSP Peripheral Reference Guide,2011.
[3] Texas Instrument. TMS320x2833x,2823x Serial
Design and Application of CMF Serial Debugging System
Chen Baoxin1,Chen Linjun1,Shen Yanlin1,Liu Peng2,Jiang Zhiyi3
(1.Department of Information Engineering,Logistical Engineering University,Chongqing 401311,China;2.Chongqing Communication Institute;3.Unit 65113)
In order to solve the communication problem of traditional serial debugging software with the host computer of CMF secondary instrument,a CMF serial debugging system is designed and implemented,which includes the hardware,software and the serial transmission protocol.It can complete the functions such as the serial port configuration,data transceiver,data display and parameter setting of secondary instrument.The experiment results show the effectiveness of the serial debugging system for CMF secondary instrument development.
serial port;RS-232;SCI;MATLAB GUI;F28335;TRSF3221E
國家自然科學(xué)基金(頻率估計的多段信號頻譜融合法及應(yīng)用基礎(chǔ),61271449);重慶市研究生科研創(chuàng)新項目(短時信號頻率估計的相位匹配方法及其應(yīng)用,CYB14100)。
TN919.6
A