基於LabVIEW被動接收型的串口通信系統的製作方法
2024-02-16 12:53:15
基於LabVIEW被動接收型的串口通信系統的製作方法
【專利摘要】本發明提出了一種基於LabVIEW被動接收型的串口通信系統,包括外界通訊模塊、觸發模塊、串口基本通信模塊、數據檢測和重測模塊和數據存儲模塊;外界通訊模塊通過兩個共享變量與外部控制器實現通訊,觸發模塊根據外界通訊模塊傳入的觸發共享變量數據值進行判斷,串口基本通信模塊包括初始化模塊、數據傳輸和處理模塊、數據接收模塊;數據檢測和重測模塊判斷接受數據的數據類型、長度是否和測試儀器設定的數據類型、長度相同,數據存儲模塊存儲數據檢測和重測模塊判斷合格的數據。該系統只需設置相應串口參數即可顯示硬體採集的數據,並可實時存儲和回放採集到的數據,方便以後對採集數據進行研究。實驗證明,系統的穩定性和可靠性較高。
【專利說明】基於LabVIEW被動接收型的串口通信系統
【技術領域】
[0001]本發明屬於串口通信領域,具體涉及一種基於LabVIEW被動接收型的串口通信系統。
【背景技術】
[0002]串行通信是一種在計算機與外部設備以及算機與測試系統之間最簡單、最普遍的數據通信方式。串行通信使用計算機內建的串口,用戶無需再購買任何特殊硬體,只要一根串口線就可以達到發送或接收數據的目的,而且不失測試的準確性。串口通過RS-232串口總線與PC計算機組成虛擬儀器系統,主要適用於速度較低的測試系統,它具有接口簡單,使用方便的特點。所以,串口通信廣泛應用於數據採集、監測監控以及儀表控制等場合。圖形化程式語言LabVIEW的出現為串口調試與數據分析帶來了極大方便。
[0003]傳統的串口調試採用高級語言,比如乂(^8工#、拓^等,這些語言程序代碼冗長,不便進行功能拓展,如果對串口數據進行分析,則需推翻原有程序結構,重新編制代碼。與傳統的程式語言相比LabVIEW採用圖形(即各種圖標、圖形符號、連線等)編程,具有編程簡潔、直觀性強、人機互動界面友好、數據可視化分析與設備控制能力優等特點。LabVIEW經典的串口程序都是先寫入數據和後讀取數據,比如李晴的《基於LabVIEW的串口通信應用》、呂向鋒的《基於LabVIEW串口通信的研究》、梁國偉的《基於LabVIEW的串口數據採集的實現及應用》中,就是採用先寫數據和後讀數據的方式來實現串口數據的採集。但是現在非常多的儀表、設備等下位機都是不斷地發送數據給上位機,而且發送的數據長度一般可設定,而上位機不知道下位機何時發送的情況下被動接收數據,這屬於典型的被動接受型串口通信。
[0004]基於LabVIEW編程的被動接受型串口通信會出現下面三個問題。問題一:一般的被動接受型串口通信系統利用循環結構不斷查詢緩衝區的方式來讀取數據,但串口數據有時接受不全或者為空,這是由於在數據沒有全部傳送過來時,系統就將數據讀出,導致了數據的不完整。問題二:當使用LabVIEW從串口讀取數據的時候,會連續不斷地查詢串口緩衝區直到接收到數據為止,這增加了處理器和資源的佔用,如果程序中有較多的其他循環結構,就會導致系統中的其他循環不能流暢地運行,使系統運行緩慢。問題三:由於串口本身的不穩定性,很容易受到外界電磁場等外界幹擾,導致下位機發過來的數據有可能本身就存在數據類型不符合、數據不完整等問題。
【發明內容】
[0005]要解決的技術問題
[0006]為解決現有技術存在的問題,本發明提出了一種基於LabVIEW被動接收型的串口通信系統。
[0007]技術方案
[0008]本發明的技術方案為:[0009]所述一種基於LabVIEW被動接收型的串口通信系統,其特徵在於:包括外界通訊模塊、觸發模塊、串口基本通信模塊、數據檢測和重測模塊和數據存儲模塊;
[0010]外界通訊模塊通過兩個共享變量與外部控制器實現通訊,所述兩個共享變量分別為觸發共享變量和重測共享變量,兩個共享變量的數據類型為布爾型,初始值為false ;夕卜部控制器通過接受測試儀器發出的脈衝信號改變觸發共享變量,且脈衝信號使觸發共享變量先變為true,而後變為false ;外界通訊模塊通過改變重測共享變量值使外部控制器驅動測試儀器重新測試;
[0011]觸發模塊根據外界通訊模塊傳入的觸發共享變量數據值進行判斷;在觸發模塊中國,觸發共享變量與true常值進行等邏輯運算,循環結構的移位寄存器與false常值進行等邏輯運算,其中循環結構的移位寄存器初始值為false ;兩個等邏輯運算的輸出進行邏輯與運算,邏輯與運算的結果控制串口基本通信模塊是否執行;
[0012]串口基本通信模塊包括初始化模塊、數據傳輸和處理模塊、數據接收模塊;初始化模塊控制波特率、數據位、停止位和校驗位四個參數與測試儀器的串口參數一致,且初始化模塊中不啟用終止符;數據傳輸和處理模塊將通過測試儀器串口傳來的數據暫存在串口通信系統的數據緩衝區中;數據接收模塊利用循環結構不停查詢串口通信系統的數據緩衝區,當數據緩衝區有數據時,數據接收模塊就按照串口數據長度將串口數據讀取;
[0013]數據檢測和重測模塊判斷接受數據的數據類型、長度是否和測試儀器設定的數據類型、長度相同,若不同,則通過改變重測共享變量使外部控制器驅動測試儀器重新測試;
[0014]數據存儲模塊存儲數據檢測和重測模塊判斷合格的數據。
[0015]有益效果
[0016]針對基於LabVIEW編程的被動接受型串口通信出現的三個問題,本發明設計了一種應用於串口數據採集的系統:觸發串口通信系統。觸發串口通信系統採用共享變量與外界硬體通信的方式觸發串口,通過共享變量告訴上位機何時讀對應串口的數據,而不是盲目的查詢,解決問題一。該系統會在數據全部傳送過來之後,才讀取串口緩衝區的數據,可保證讀取數據的完整性,而且不需要連續不斷地查詢串口緩衝區,減少了處理器和資源的佔用,使系統能夠流暢運行,解決問題二。系統可以判斷接收數據的合格與否,一旦出現不合格數據,則可以通過共享變量與外界硬體通信的方式來觸發下位機重新測量,重新獲得合格測試數據,解決問題三。該系統只需設置相應串口參數即可顯示硬體採集的數據,並可實時存儲和回放採集到的數據,方便以後對採集數據進行研究。實驗證明,系統的穩定性和可靠性較高。
【專利附圖】
【附圖說明】
[0017]圖1:串口通信硬體線路;
[0018]圖2:控制器、下位機、工控機的硬體連接與信號傳遞流程圖;
[0019]圖3:觸發串口通信軟體系統信號傳遞流程圖;
[0020]圖4:串口基本通彳目t旲塊;
[0021]圖5:觸發串口通信方法。
【具體實施方式】[0022]下面結合具體實施例描述本發明:
[0023]本實施例中串口通信系統與外部控制器和測試儀器通過線路連接,其中串口通信硬體線路只需三根線(發送線、接收線、信號地線)便可實現全雙工異步串行通信,使用串口通信線將兩個串口設備連接起來即可。準備兩個9針的串口接線端子,準備3根導線(最好採用3芯屏蔽線),將導線焊接到接線端子上,串口接線端子I的2腳、3腳、5腳分別對應串口接線端子2的3腳、2腳、5腳。而外部控制器和測試儀器之間通過4路接口信號,包括啟動、復位、急停、完成信號通信,復位、急停、完成接口信號分別連接到控制器的輸入點上,啟動接口信號連接到控制器的輸出點上。通過下位機輸入控制器的3個信號,告知控制器此時下位機的狀態。通過編寫控制器的程序實現下位機的動作,控制器的輸出來控制下位機的啟動。
[0024]參照附圖3,串口通信系統,包括外界通訊模塊、觸發模塊、串口基本通信模塊、數據檢測和重測模塊和數據存儲模塊。
[0025]外界通訊模塊通過兩個共享變量與外部控制器實現通訊,所述兩個共享變量分別為觸發共享變量和重測共享變量,兩個共享變量的數據類型為布爾型,初始值為false ;夕卜部控制器通過接受測試儀器發出的脈衝信號改變觸發共享變量,且脈衝信號使觸發共享變量先變為true,而後變為false ;外界通訊模塊通過改變重測共享變量值使外部控制器驅動測試儀器重新測試。
[0026]觸發模塊根據外界通訊模塊傳入的觸發共享變量數據值進行判斷;在觸發模塊中國,觸發共享變量與true常值進行等邏輯運算,循環結構的移位寄存器與false常值進行等邏輯運算,其中循環結構的移位寄存器初始值為false ;兩個等邏輯運算的輸出進行邏輯與運算,邏輯與運算的結果控制串口基本通信模塊是否執行。
[0027]當觸發共享變量的值變為true,循環結構的移位寄存器初始值為false,兩個等邏輯輸出為true,然後再進行與邏輯,輸出為true,可以觸發對應串口基本通信模塊讀取數據,讀完數據後,即執行完一次循環之後,循環結構的移位寄存器值變為true。而循環再次執行時,一個等邏輯輸出為false,然後再進行與邏輯,輸出為false,,不能再次執行串口基本通信模塊。由於觸發共享變量為一個脈衝信號,當外界硬體將觸發共享變量的值置為false時,循環結構的移位寄存器值為false,兩個等邏輯輸出為false,然後再進行與邏輯,輸出為false,確保不能再次執行串口基本通信模塊。同時為下次觸發做準備,當觸發共享變量的值再次變為true,又可以進行上述的操作。保證觸發共享變量每次觸發只能執行一次串口基本通信模塊。
[0028]串口基本通信模塊包括初始化模塊、數據傳輸和處理模塊、數據接收模塊。初始化模塊控制波特率、數據位、停止位和校驗位四個參數與測試儀器的串口參數一致,且初始化模塊中不啟用終止符,防止數據接受不全。數據傳輸和處理模塊將通過測試儀器串口傳來的數據暫存在串口通信系統的數據緩衝區中,數據發送後到接收之間延時500毫秒,即讀取數據之前延時500毫秒。數據接收模塊利用循環結構不停查詢串口通信系統的數據緩衝區,當數據緩衝區有數據時,數據接收模塊就按照串口數據長度將串口數據讀取。
[0029]數據檢測和重測模塊判斷接受數據的數據類型、長度是否和測試儀器設定的數據類型、長度相同,若不同,則表示數據不合格,通過改變重測共享變量使外部控制器驅動測試儀器重新測試。當下次數據合格時,輸出將重測共享變量的值置false,不再啟動下位機。
[0030]串口數據判斷合格後,一方面用於顯示,另一方面用於數據的存儲。數據存儲模塊就用於存儲數據檢測和重測模塊判斷合格的數據。
【權利要求】
1.一種基於LabVIEW被動接收型的串口通信系統,其特徵在於:包括外界通訊模塊、觸發模塊、串口基本通信模塊、數據檢測和重測模塊和數據存儲模塊; 外界通訊模塊通過兩個共享變量與外部控制器實現通訊,所述兩個共享變量分別為觸發共享變量和重測共享變量,兩個共享變量的數據類型為布爾型,初始值為false ;外部控制器通過接受測試儀器發出的脈衝信號改變觸發共享變量,且脈衝信號使觸發共享變量先變為true,而後變為false ;外界通訊模塊通過改變重測共享變量值使外部控制器驅動測試儀器重新測試; 觸發模塊根據外界通訊模塊傳入的觸發共享變量數據值進行判斷;在觸發模塊中國,觸發共享變量與true常值進行等邏輯運算,循環結構的移位寄存器與false常值進行等邏輯運算,其中循環結構的移位寄存器初始值為false ;兩個等邏輯運算的輸出進行邏輯與運算,邏輯與運算的結果控制串口基本通信模塊是否執行; 串口基本通信模塊包括初始化模塊、數據傳輸和處理模塊、數據接收模塊;初始化模塊控制波特率、數據位、停止位和校驗位四個參數與測試儀器的串口參數一致,且初始化模塊中不啟用終止符;數據傳輸和處理模塊將通過測試儀器串口傳來的數據暫存在串口通信系統的數據緩衝區中;數據接收模塊利用循環結構不停查詢串口通信系統的數據緩衝區,當數據緩衝區有數據時,數據接收模塊就按照串口數據長度將串口數據讀取; 數據檢測和重測模塊判斷接受數據的數據類型、長度是否和測試儀器設定的數據類型、長度相同,若不同,則通過改變重測共享變量使外部控制器驅動測試儀器重新測試; 數據存儲模塊存儲數據檢測和重測模塊判斷合格的數據。
【文檔編號】G06F11/26GK103514073SQ201310201926
【公開日】2014年1月15日 申請日期:2013年5月27日 優先權日:2013年5月27日
【發明者】楊旭東, 徐海亭, 王俊, 徐繼賀, 平慶偉 申請人:西北工業大學