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