1 概述
傳感器(英文名稱:transducer/sensor)是一種檢測裝置,能感受到被測量的信息,並能將感受到的信息,按一定規律變換成為電信號或其他所需形式的信息輸出,以滿足信息的傳輸、處理、存儲、顯示、記錄和控制等要求。
傳感器按用途可以分為力敏傳感器、位置傳感器、液位傳感器、能耗傳感器、速度傳感器、加速度傳感器、射線輻射傳感器、熱敏傳感器等。
隨着集成度的不斷提高,多種傳感器集成到一個模塊,已經非常普遍。模塊的生產廠商,對外提供一組通信協議,供模塊使用者和模塊進行通信,從而方便的獲取傳感器的測量數值。
本文通過一個實際的例子,介紹如何通過上位機軟件,對一個多軸傳感器模塊的溫度數據進行采集並用曲線圖表顯示溫度數據。本例子的硬件架構如下圖所示。
傳感器模塊數據輸出: 溫度、加速度、角速度、磁場等
傳感器模塊數據接口: 串口,波特率9600(默認)
傳感器模塊串口上位機連接:使用USB-TLL串口模塊連接,VCC接VCC,TX接RX,RX接TX,GND接GND。
本例子上位機使用格西測控大師編寫,最終效果如下圖所示。
2 通信協議
數據采集系統和設備通信有兩種方式,一種是DirectIO方式,也就是直接通過設備通信協議進行訪問,這種方式需要了解設備的通信協議;另外一種是間接調用動態庫的方式,這種方式只需要了解動態庫的接口函數即可。
本文的實驗例子是通過DirectIO方式進行通信。下面我們來介紹一下所用到的采集通信命令,通信命令幀結構如下圖所示。傳感器模塊持續的向串口發送通信命令幀。
3 創建項目、設備接口和變量
3.1 第1步 新建項目
啟動格西測控大師,在左上角菜單中選擇“新建項目”,然后在彈出的“新建項目”對話框中,填寫項目名稱“溫度采集與顯示項目”,然后點擊“瀏覽…”按鈕,選擇保存路徑和填寫項目文件名“溫度采集與顯示項目”,最后點擊“確定”按鈕。
3.2 第2步 添加串口設備
在項目管理器中選擇“設備與接口”節點,然后點擊鼠標右鍵,在彈出菜單中選擇“新建設備…”。
彈出新建設備對話框中,選擇“串口”,點擊“確定”。
彈出設備屬性對話框,填寫“設備名”和其他設備參數,最后點擊“確定”按鈕。其中,“設備名”是設備的標識,可以是任意字符串,引用設備必須使用設備名。
3.3 第3步 添加變量
本例子用到變量容器、表達式變量和TXT文件變量。
TXT文件類型變量:當其所有子變量都改變過后,形成一條記錄,保存到文件中。本例子中的溫度數據,每次采集完畢,通過腳本把采集時間和溫度值分別賦給“時間”和“溫度值”變量,即可生成一條記錄。
表達式變量:保存采集時間和溫度值,采集時間使用系統當前時間,溫度值通過采集到的數據經過表達式運算得到。
其中,Frequency表示變量數據每秒鍾的觸發次數, 每次觸發,根據表達式計算產生變量的值;如果 Frequency<=0,則不能定時觸發表達式計算,只有對 Value 屬性賦值,才可以觸發表達式計算進而產生新的變量值。
4 編寫采集序列
本例子用到的步驟類型: While和Message。
其中Message步驟是報文步驟,可以通過自定義報文結構來編寫通信協議,可以自定義任意結構的通信協議,非常方便和設備進行通信。
運行測試的時候,我們可以打開序列數據面板查看通信的過程數據。
5 設計用戶界面
本例子用到的控件:LineChart(曲線圖)、TableGrid(數據表)。
控件關鍵配置:
LineChart:
ChartSeries屬性(格式為“<系列名稱 1>,<X變量名>,<Y變量名>;<系列名稱 2>,<X變量名>,<Y變量名>;…“ ;本例子設置為:溫度曲線,時間,溫度值)
DataProvider屬性:綁定“采集變量表/溫度數據”變量容器
TableGrid:
DataSeries屬性(格式為“<變量1名>,<列1名稱1>; <變量2名>,<列2名稱>;…“ ;本例子設置為:時間,時間;溫度值,溫度值 )
DataSource屬性:綁定“采集變量表/溫度數據”變量容器
6 編寫仿真序列進行調試
實際開發中,我們經常使用仿真的方式進行軟件調試,使得開發進程更加可控。下面,我們從這個例子出發,探討一下如何編寫仿真序列。
本例子的傳感器模塊是串口通信的,故在仿真時我們選擇用虛擬串口軟件(VSPD虛擬串口軟件)虛擬一對串口來實現仿真程序和實際程序的對發。
按以下步驟創建仿真序列:
1、創建串口“串口-仿真器”,保證和“串口”是虛擬軟件創建的一對交叉互聯的串口。
2、創建循環發送的序列,其中一個Message類型步驟用於發送仿真的幀到“串口-仿真器”。
3、編寫“發送溫度幀”步驟的腳本,生成隨機溫度值。