零代碼搭建一個(gè)溫度傳感器數(shù)據(jù)采集與顯示軟件(溫度傳感器數(shù)據(jù)采集模塊)
1 概述
傳感器(英文名稱(chēng):transducer/sensor)是一種檢測(cè)裝置,能感受到被測(cè)量的信息,并能將感受到的信息,按一定規(guī)律變換成為電信號(hào)或其他所需形式的信息輸出,以滿(mǎn)足信息的傳輸、處理、存儲(chǔ)、顯示、記錄和控制等要求。
傳感器按用途可以分為力敏傳感器、位置傳感器、液位傳感器、能耗傳感器、速度傳感器、加速度傳感器、射線(xiàn)輻射傳感器、熱敏傳感器等。
隨著集成度的不斷提高,多種傳感器集成到一個(gè)模塊,已經(jīng)非常普遍。模塊的生產(chǎn)廠(chǎng)商,對(duì)外提供一組通信協(xié)議,供模塊使用者和模塊進(jìn)行通信,從而方便地獲取傳感器的測(cè)量數(shù)值。
本文通過(guò)一個(gè)實(shí)際的例子,介紹如何通過(guò)上位機(jī)軟件,對(duì)一個(gè)多軸傳感器模塊的溫度數(shù)據(jù)進(jìn)行采集并用曲線(xiàn)圖表顯示溫度數(shù)據(jù)。本例子的硬件架構(gòu)如下圖所示。
傳感器模塊數(shù)據(jù)輸出: 溫度、加速度、角速度、磁場(chǎng)等
傳感器模塊數(shù)據(jù)接口: 串口,波特率9600(默認(rèn))
傳感器模塊串口上位機(jī)連接:使用USB-TLL串口模塊連接,VCC接VCC,TX接RX,RX接TX,GND接GND。
本例子上位機(jī)使用格西測(cè)控大師編寫(xiě),最終效果如下圖所示。
2 通信協(xié)議
數(shù)據(jù)采集系統(tǒng)和設(shè)備通信有兩種方式,一種是DirectIO方式,也就是直接通過(guò)設(shè)備通信協(xié)議進(jìn)行訪(fǎng)問(wèn),這種方式需要了解設(shè)備的通信協(xié)議;另外一種是間接調(diào)用動(dòng)態(tài)庫(kù)的方式,這種方式只需要了解動(dòng)態(tài)庫(kù)的接口函數(shù)即可。
本文的實(shí)驗(yàn)例子是通過(guò)DirectIO方式進(jìn)行通信。下面我們來(lái)介紹一下所用到的采集通信命令,通信命令幀結(jié)構(gòu)如下圖所示。傳感器模塊持續(xù)的向串口發(fā)送通信命令幀。
3 創(chuàng)建項(xiàng)目、設(shè)備接口和變量
3.1 第1步 新建項(xiàng)目
啟動(dòng)格西測(cè)控大師,在左上角菜單中選擇“新建項(xiàng)目”,然后在彈出的“新建項(xiàng)目”對(duì)話(huà)框中,填寫(xiě)項(xiàng)目名稱(chēng)“溫度采集與顯示項(xiàng)目”,然后點(diǎn)擊“瀏覽…”按鈕,選擇保存路徑和填寫(xiě)項(xiàng)目文件名“溫度采集與顯示項(xiàng)目”,最后點(diǎn)擊“確定”按鈕。
3.2 第2步 添加串口設(shè)備
在項(xiàng)目管理器中選擇“設(shè)備與接口”節(jié)點(diǎn),然后點(diǎn)擊鼠標(biāo)右鍵,在彈出菜單中選擇“新建設(shè)備…”。
彈出新建設(shè)備對(duì)話(huà)框中,選擇“串口”,點(diǎn)擊“確定”。
彈出設(shè)備屬性對(duì)話(huà)框,填寫(xiě)“設(shè)備名”和其他設(shè)備參數(shù),最后點(diǎn)擊“確定”按鈕。其中,“設(shè)備名”是設(shè)備的標(biāo)識(shí),可以是任意字符串,引用設(shè)備必須使用設(shè)備名。
3.3 第3步 添加變量
本例子用到變量容器、表達(dá)式變量和TXT文件變量。
TXT文件類(lèi)型變量:當(dāng)其所有子變量都改變過(guò)后,形成一條記錄,保存到文件中。本例子中的時(shí)間數(shù)據(jù)通過(guò)表達(dá)式變量自動(dòng)生成,而溫度數(shù)據(jù),每次采集完畢后通過(guò)數(shù)據(jù)綁定的方式把采集序列中的溫度值分別賦給“溫度值”變量,即可生成一條記錄。
表達(dá)式變量:保存采集時(shí)間和溫度值,采集時(shí)間使用系統(tǒng)當(dāng)前時(shí)間,溫度值通過(guò)采集到的數(shù)據(jù)經(jīng)過(guò)表達(dá)式運(yùn)算(除以100)得到。
其中,F(xiàn)requency表示變量數(shù)據(jù)每秒鐘的觸發(fā)次數(shù), 每次觸發(fā),根據(jù)表達(dá)式計(jì)算產(chǎn)生變量的值;如果 Frequency<=0,則不能定時(shí)觸發(fā)表達(dá)式計(jì)算,只有對(duì) Value 屬性賦值,才可以觸發(fā)表達(dá)式計(jì)算進(jìn)而產(chǎn)生新的變量值。
4 編寫(xiě)采集序列
本例子用到的步驟類(lèi)型: While和Message。
其中Message步驟是報(bào)文步驟,可以通過(guò)自定義報(bào)文結(jié)構(gòu)來(lái)編寫(xiě)通信協(xié)議,可以自定義任意結(jié)構(gòu)的通信協(xié)議,非常方便和設(shè)備進(jìn)行通信。
運(yùn)行測(cè)試的時(shí)候,我們可以打開(kāi)序列數(shù)據(jù)面板查看通信的過(guò)程數(shù)據(jù)。
5 設(shè)計(jì)用戶(hù)界面
本例子用到的控件:LineChart(曲線(xiàn)圖)、TableGrid(數(shù)據(jù)表)。
控件關(guān)鍵配置:
LineChart:
ChartSeries屬性(格式為“<系列名稱(chēng) 1>,<X變量名>,<Y變量名>;<系列名稱(chēng) 2>,<X變量名>,<Y變量名>;…“ ;本例子設(shè)置為:溫度曲線(xiàn),時(shí)間,溫度值)
DataProvider屬性:綁定“采集變量表/溫度數(shù)據(jù)”變量容器
TableGrid:
DataSeries屬性(格式為“<變量1名>,<列1名稱(chēng)1>; <變量2名>,<列2名稱(chēng)>;…“ ;本例子設(shè)置為:時(shí)間,時(shí)間;溫度值,溫度值 )
DataSource屬性:綁定“采集變量表/溫度數(shù)據(jù)”變量容器
6 編寫(xiě)仿真序列進(jìn)行調(diào)試
實(shí)際開(kāi)發(fā)中,我們經(jīng)常使用仿真的方式進(jìn)行軟件調(diào)試,使得開(kāi)發(fā)進(jìn)程更加可控。下面,我們從這個(gè)例子出發(fā),探討一下如何編寫(xiě)仿真序列。
本例子的傳感器模塊是串口通信的,故在仿真時(shí)我們選擇用虛擬串口軟件(VSPD虛擬串口軟件)虛擬一對(duì)串口來(lái)實(shí)現(xiàn)仿真程序和實(shí)際程序的對(duì)發(fā)。
按以下步驟創(chuàng)建仿真序列:
1、創(chuàng)建串口“串口-仿真器”,保證和“串口”是虛擬軟件創(chuàng)建的一對(duì)交叉互聯(lián)的串口。
2、創(chuàng)建循環(huán)發(fā)送的序列,其中一個(gè)Message類(lèi)型步驟用于發(fā)送仿真的幀到“串口-仿真器”。
3、編寫(xiě)“發(fā)送溫度幀”步驟的腳本,生成隨機(jī)溫度值。
7 總結(jié)
隨著測(cè)控軟件開(kāi)發(fā)平臺(tái)的日益成熟,測(cè)控系統(tǒng)的開(kāi)發(fā)越來(lái)越注重低代碼、配置型系統(tǒng),也就是說(shuō)整個(gè)測(cè)控系統(tǒng)的構(gòu)建,就像搭積木一樣,把各個(gè)功能硬件,通過(guò)低代碼型、配置型的測(cè)控軟件開(kāi)發(fā)平臺(tái),有機(jī)的組合起來(lái),達(dá)到多快好省的“量身定制”自動(dòng)化系統(tǒng)。