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