科氏流量計(jì)串口調(diào)試系統(tǒng)設(shè)計(jì)與應(yīng)用
為解決科氏流量計(jì)二次儀表軟件調(diào)試開(kāi)發(fā)過(guò)程中與上位機(jī)的通信問(wèn)題 ,設(shè)計(jì)并實(shí)現(xiàn)了針對(duì)科氏流量計(jì)二次儀表的串口調(diào)試系統(tǒng),包括系統(tǒng)的軟硬件以及串口傳輸協(xié)議。主要功能包括串口配置、數(shù)據(jù)收發(fā)、數(shù)據(jù)顯示以及二次儀表參數(shù)設(shè)置等。系統(tǒng)實(shí)驗(yàn)驗(yàn)證了本串口調(diào)試系統(tǒng)對(duì)科氏流量計(jì)二次儀表開(kāi)發(fā)的有效性。
引 言
科里奧利質(zhì)量流量計(jì)(以下簡(jiǎn)稱科氏流量計(jì))可以直接測(cè)量高精度的質(zhì)量流量。在科氏流量計(jì)二次儀表的設(shè)計(jì)過(guò)程中,串口通信是一個(gè)必不可少的功能,擔(dān)負(fù)著與上位機(jī)通信的任務(wù)。同時(shí),在二次儀表嵌入式軟件的開(kāi)發(fā)調(diào)試過(guò)程中,通過(guò)串口通信實(shí)時(shí)傳輸相關(guān)數(shù)據(jù)或參數(shù)并直觀顯示,有利于及時(shí)掌握程序運(yùn)行狀態(tài),發(fā)現(xiàn)算法不足,以便及時(shí)修正。
傳統(tǒng)的串口調(diào)試軟件(如sscom、串口調(diào)試助手等),作為通用的串口調(diào)試工具,存在如下缺點(diǎn):
① 數(shù)據(jù)顯示類型單一,上述軟件一般僅支持 HEX字符和 ASCII字符的顯示,而不能顯示浮點(diǎn)數(shù);
② 數(shù)據(jù)顯示界面簡(jiǎn)單,不能直觀、動(dòng)態(tài)地顯示數(shù)據(jù),并作相關(guān)處理;
③ 不具有針對(duì)性,上述軟件作為通用串口工具不能很好地與二次儀表通信、實(shí)現(xiàn)數(shù)據(jù)保存、參數(shù)在線設(shè)置等功能。
針對(duì)上述缺點(diǎn),本文設(shè)計(jì)并實(shí)現(xiàn)了針對(duì)科氏流量計(jì)二次儀表的串口調(diào)試系統(tǒng),為二次儀表的開(kāi)發(fā)、調(diào)試提供支持。
1.系統(tǒng)總體設(shè)計(jì)
本文設(shè)計(jì)的串口調(diào)試系統(tǒng)主要由3部分構(gòu)成:系統(tǒng)硬件、系統(tǒng)軟件和傳輸協(xié)議??傮w設(shè)計(jì)如圖1 所示。系統(tǒng)硬件部分包括:二次儀表上的串口通信模塊和上位機(jī),其中上位機(jī)需要配有串口,否則需使用USB轉(zhuǎn) RS-232串口轉(zhuǎn)接線。系統(tǒng)軟件包括二次儀表內(nèi)采用C語(yǔ)言編寫(xiě)的程序和上位機(jī)采用 MATLAB編寫(xiě)的程序。由于串口通信都是基于二進(jìn)制傳輸?shù)?,因此需要相?yīng)的傳輸協(xié)議控制二次儀表和上位機(jī)的通信,以實(shí)現(xiàn)更復(fù)雜的通信。
2.系統(tǒng)實(shí)現(xiàn)
2.1 系統(tǒng)硬件
本文二次儀表選用的是 TI公司 C28X 系列32位浮點(diǎn) DSP 控制器———TMS320F28335。該芯片外設(shè)豐富,含有3個(gè)SCI串行通信接口。SCI是一個(gè)雙線異步串行端口,就像通常的 UART,支持 CPU 和其他使用標(biāo)準(zhǔn)不歸零格式(nRZ)的異步外圍設(shè)備間的通信。由于上位機(jī)串口多采用基于RS-232的DB9接頭,因此本設(shè)計(jì)通過(guò)SCI口接 TRSF3221E,實(shí)現(xiàn) TTL電平到 RS-232電平的轉(zhuǎn)換,硬件電路如圖2所示,只需要3根線即可實(shí)現(xiàn)全雙 工 通 信,即 發(fā) 送 信 號(hào) 線、接 收 信 號(hào) 線 和 地 線。
TRSF3221E型RS-232收發(fā)器采用3~5.5V 供電,***大傳輸速率為1Mb/s,同時(shí)該芯片具有自動(dòng)斷電功能,在沒(méi)有通信的時(shí)候可斷電降低功耗。上位機(jī)此處不多做介紹,一般帶有串口的PC即可。
2.2 系統(tǒng)軟件
系統(tǒng) 軟 件 包 括 兩 部分:二次儀表內(nèi) C 程序和上位 機(jī) MATLAB 程 序。二次儀表內(nèi)C程序的主要功能是流量計(jì)量、顯示輸出、串口通信等。串口通信程序通過(guò)SCI中斷和主函數(shù)查詢的方式實(shí)現(xiàn)指令的接收和處理。中斷服務(wù)程序流程如圖3所示。在主程序內(nèi)定時(shí)查詢接收幀標(biāo)志位,當(dāng)標(biāo)志位置 1 時(shí) 圖3 SCI中斷服務(wù)程序流程圖表示接收到完整的一幀,則轉(zhuǎn)入幀處理程序,即根據(jù)傳輸協(xié)議處理幀內(nèi)容,并做出相關(guān)操作。
上位機(jī) MATLAB程序的主要功能是串口配置、向二次儀表發(fā)送指令、接收處理數(shù)據(jù)、實(shí)時(shí)顯示數(shù)據(jù)、保存數(shù)據(jù)以及儀表參數(shù)設(shè)置等。MATLAB的串口接口提供了一個(gè)對(duì)外圍設(shè)備的直接訪問(wèn),這個(gè)接口通過(guò)串口對(duì)象可實(shí)現(xiàn)串口通信和讀寫(xiě)數(shù)據(jù)等功能。MATLAB通過(guò)以下指令建立和配置串口對(duì)象
為了可以實(shí)時(shí)顯示數(shù)據(jù),需要配置串口對(duì)象的回調(diào)函數(shù)(CalbackFunction)。當(dāng)接收到數(shù)據(jù)后觸發(fā)回調(diào)函數(shù),在回調(diào)函數(shù)內(nèi)根據(jù)傳輸協(xié)議處理數(shù)據(jù),并實(shí)時(shí)顯示。
軟件界面設(shè)計(jì)如圖4所示,主要包括顯示區(qū)、串口配置區(qū)、顯示設(shè)置區(qū)、指令發(fā)送區(qū)以及儀表參數(shù)設(shè)置等。
各區(qū)域功能如下:
① 顯示區(qū):實(shí)時(shí)繪制接收到的數(shù)據(jù);
② 串口配置區(qū):配置串口參數(shù),主要是波特率、數(shù)據(jù)位、停止位、校驗(yàn)位、流控制、串口號(hào)等;
③ 顯示設(shè)置區(qū):選擇要繪制顯示的數(shù)據(jù)和設(shè)置緩存大??;
④ 指令發(fā)送區(qū):直接發(fā)送指令控制二次儀表;
⑤ 儀表參數(shù)設(shè)置:打開(kāi)二次儀表參數(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ù)的雙向訪問(wèn)和控制就需要編寫(xiě)相應(yīng)的傳輸協(xié)議,因此本文設(shè)計(jì)了通用幀和數(shù)據(jù)幀兩種傳輸幀格式用于實(shí)現(xiàn)二次儀表和上位機(jī)的通信。
通用幀的主要作用是封裝指令和數(shù)據(jù)以及傳輸控制,二次儀表和上位機(jī)接收到完整一幀后根據(jù)內(nèi)容作出相關(guān)操作。幀格式如下:
具體說(shuō)明如下:
① 起始字節(jié):標(biāo)志著一幀的開(kāi)始,設(shè)置為一固定值,如“0xAA”。
② 長(zhǎng)度字節(jié):當(dāng)前幀的長(zhǎng)度,以字節(jié)為單位。
③ 功能字節(jié):當(dāng)前幀的功能標(biāo)識(shí),用于標(biāo)識(shí)二次儀表的不同參數(shù)和不同指令。
④ 讀寫(xiě)字節(jié):標(biāo)識(shí)當(dāng)前幀為讀或?qū)憽?/span>
⑤ Byte:具體的參數(shù)或指令內(nèi)容,***長(zhǎng)為15字節(jié)。實(shí)際軟件調(diào)試時(shí)需要連續(xù)發(fā)送數(shù)據(jù)監(jiān)控二次儀表運(yùn)行,為了提高傳輸效率,采用如下所示簡(jiǎn)化的數(shù)據(jù)幀格式。
每幀包含6個(gè)字節(jié),首字節(jié)與指令幀相同,第二字節(jié)標(biāo)識(shí)數(shù)據(jù)類型,如頻率或相位差等,其余字節(jié)構(gòu)成32位單精度浮點(diǎn)數(shù)。
3.系統(tǒng)實(shí)驗(yàn)
為驗(yàn)證設(shè)計(jì)的科氏流量計(jì)串口調(diào)試系統(tǒng)的有效性,對(duì)其進(jìn)行了測(cè)試。實(shí)驗(yàn)方案如下:
① 打開(kāi) MATLAB串口調(diào)試程序,設(shè)置波特率38400b/s,數(shù)據(jù)位8位,停止位1位,校驗(yàn)位 “無(wú)”,流控制 “無(wú)”,然后點(diǎn)擊“打開(kāi)串口”按鈕;
② 二次儀表SCI配置同上,實(shí)時(shí)向上位機(jī)發(fā)送頻率、幅值、相位差等測(cè)量信息;
③ 上位機(jī)通過(guò)“儀表參數(shù)設(shè)置”設(shè)置二次儀表參數(shù)或發(fā)送指令;
④ 關(guān)閉串口,保存數(shù)據(jù)。
接收數(shù)據(jù)結(jié)果如圖5所示,可實(shí)時(shí)繪制頻率、幅值、相位差和信號(hào)圖形,并實(shí)時(shí)顯示當(dāng)前平均值等信息。
數(shù)據(jù)保存界面如圖6所示,保存類型為 Excel文件,默認(rèn)文件名為當(dāng)前系統(tǒng)時(shí)間。儀表參數(shù)設(shè)置如圖7所示。
4.結(jié)語(yǔ)
本文設(shè)計(jì)并實(shí)現(xiàn)了一套科氏流量計(jì)串口調(diào)試系統(tǒng),用于解決科氏流量計(jì)二次儀表開(kāi)發(fā)調(diào)試過(guò)程中與上位機(jī)通信的問(wèn)題。系統(tǒng)可實(shí)時(shí)傳輸相關(guān)數(shù)據(jù)、在線發(fā)送指令,以及設(shè)置二次儀表相關(guān)參數(shù)。本系統(tǒng)有利于在二次儀表的調(diào)試過(guò)程中掌握程序運(yùn)行狀態(tài),并及發(fā)現(xiàn)算法不足,極大地方便了二次儀表的軟件開(kāi)發(fā)工作。