基於Labview與單片機的多通道溫度採集系統設計

Labview編程跟以往傳統的軟件編程有很大的不同,最明顯的差別就是它是圖形化編程。用過Labview的童鞋都知道,整個編程都是拖控件的過程,而不是像傳統的軟件一樣碼代碼。蘿蔔青菜各有所愛,Labview也有自己小衆Fans。但是小衆歸小衆,在一些信號處理領域,使用Labview編程會大大縮小我們開發的週期。

今天,我就來給大家講講如何使用Labview的串口來與設備進行通信的。並且在通信的基礎上,做了一個四通道的溫度採集。按照國際慣例,先來張效果圖~~
 

1.首先我們來認識下Labview的串口控件:

我們打開Labview的程序框圖,右上角有個幫助信息,點擊打開Labview幫助,也可以使用快捷鍵Ctrl + SHIFT + ? 打開

依次找到串口VI和函數,本篇文章,基本上是圍繞這幾個控件來實現的,現在我就給大家介紹其中一些重要控件(配置-打開,讀,寫,關閉控件)的使用。(關於如何使用,幫助裏已經說的很清楚了,我這裏就不多說了)

1.1.首先我們來認識下Labview的串口控件:

VISA配置串口控件:

說明如下:就是配置好串口的參數,在使用一個串口的時候,我們一般都會設置波特率,奇偶校驗,和數據位等相關信息,在使用之前,我們必須要先配置好它的相關參數,這裏是配置也是打開串口的控件。

 

VISA讀串口控件:

就是將數據從串口中讀取出來。(這個控件有個R噢~~即Read的意思)

VISA寫串口控件:

就是將數據寫到串口中裏。(這個控件有個W噢~~即Write的意思,本文沒有使用到該控件,但最基本的我還是提一下)

VISA串口字節數控件:

就是返回串口裏輸入的緩衝區字節數

VISA關閉控件:

當使用完畢時,需要關閉硬件資源,否則別的串口工具軟件使用時,會提示串口資源被佔用。

好了,相關的控件就到此結束了。接下來給大家說說程序的設計流程圖

流程不是很複雜,我就不多解析整個流程了。

這裏需要提一下解析數據的流程,我們都知道設計出來的Labview的上位機是要跟設備打交道的,那它們是如何打交道呢?這裏的話,我們使用的串口的協議,但是串口只是物理層協議,如果才能使得它們能識別彼此發送的數據呢?這就涉及到一個通信協議制定的問題。通信協議說白了就是雙方的一個約定,比如兩個鄰居的日常交流,如果一個用方言(聽不懂普通話),一個用普通話(聽不懂方言),那麼這個交流的過程那是非常痛苦的。所以,制定一個通信協議的作用是讓雙方都能明白對方的意思,能夠無障礙的溝通交流。

這裏的上位機和下位機也有一個解析通信協議的過程,這裏定義十六進制數0xAA爲幀頭,0xBB爲幀尾。中間的都是數據。

比如我要顯示的溫度爲:

CH1=11.1° CH2 = 22.2°  CH3=33.3° CH4=44.4°

那麼發送的數據應該爲:

0xAA,'1','1','1','2','2','2','3','3','3','4','4','4',0xBB

原則上來說,在數據域前面應該還有一個長度和字節類型之類的,這就是通常的TLV格式的通信協議。這裏的話,沒有必要設計這麼複雜的協議。所以,怎麼簡單就怎麼來了

1.2.協議設計好之後,就是開始設計程序了,步驟如下:

1.2.1 配置串口參數----->讀取串口緩存數據----->得到串口數據                              

1.2.2.將串口數據,按照我們的通信協議進行解析,解析正確後,才顯示出來。

最後來張效果圖,這是我用兩個串口來模擬的數據(手頭上沒有這麼多傳感器來測試哈),如果是用在單片機上,只要編寫好溫度傳感器的驅動,然後按照約定的格式通過串口發送給Labview上位機即可:


~~~~關於該項目的完整源碼獲取方式,可關注公衆號:玩轉IoT物聯網 進行獲取~~~~

原創不易,轉載請標明出處

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章