先說一下串口的擴展問題,一般的臺式機或工控機上都至少有二個串口,一般都 是夠用的,但是現在市場上已經很難找到帶串口的筆記本了,而有時候在外出調 試時需要在筆記本中使用到串口的,這時一般是使用 USB-RS232 的轉接線,價 格從十幾到一百多都有,很多朋友反應在使用價格低的轉接線時會出現亂七八糟 的問題,而貴一點的線就很少聽說有其它問題的,所以大家在使用便宜的 USB-RS232 轉接線時要特別注意線的質量,遇到一些奇怪的問題時先考慮換一 根好一點的線。PCI-RS232 擴展卡也同理,便宜的卡也容易出問題,盡量買好一 點的,以免因小失大。PCI-RS232 一般至少能擴展 2 個串口,有些 BT 一點的可 以擴展到 8-16 個,一堆線和接頭。轉接線和擴展卡一般是要裝驅動的。

打開軟件,選擇已經短接好的串口號,點擊“手動發送”,如果串口是好的,2、3 腳又短接起來了,馬上就可以在上面的接收框里看到接收的數據就是發送的數 據。稍微要注意一下的是有些電腦的 COM1 和 COM2 的位置是反過來的,所以 要確定好串口調試助手左上角的串口上擇的是已經短接的那一個,如果 COM1 沒接收到,可以再先 COM2 再發一次看一下。
檢查好串口后,一般也要注意一下使用的串口線,標準的串口線是 9根線都是用 上的,但有一些是只使用了三根線的:2、3、5。第 3 個腳管是發送,第 2 個管 腳接收,另一個 5 是地線,這里叫它簡化的串口線,簡化的串口線能用上的地方, 標準的串口線也肯定能用上,因為標準線的 9 根線已經包括了簡化串口線中的 3 根線,但標準串口線能用上的地方,簡化串口線就不一定能用上,所以在使用串 口線之間一定要確定好串口線的類型,一般買的串口線都是標準線,但自制的串 口線因為應用場合不同就要先確定一下。
面上時,就使用這種線,這樣機柜表面的串口線的定義還是跟電腦接出來的一樣, 外面的那一根串口線再使用交叉線。從電腦主板上將串口引到主機后面板上的線 就是這樣的直連線。購買串口線的時候一般也會問你買直連的還是交叉的,要區 別對待。

另外還有一個比較重要的設置,就是 VISAREAD 的“讀取字節數”這個輸入,由 于在串口通信中,如果指定讀取 100 個串口緩沖區的字節數,如果當前緩沖區的 數據量不足 100 個時,程序會一直停在 VISA READ 這個節點上,如果在超時的 時間(默認是 10 秒)內還沒有湊足 100 個數據的話,程序就會報“Timeout”的錯 誤,如果超時時間設置得太長,有可能導致程序很長時間停止在 VISA READ 這 個 節 點 上 。 解 決 的 辦 法 是 使 用 “Bytes atPort” 這 個 串 口 的 屬 性 節 點 , 在 VISA>>Serial>>advance 下,也可以在 VISA 資源線上右鍵>>創建>>屬性節點>> 串口設置>>Bytes atPort,如下圖:


目前串口的應用一般有二種類型的(以我接觸到的來分類,不嚴格),一種是儀 器控制類型的,一般是上位機發送一個指令,然后下位機作出響應,返回數據給 上位機,上位機再讀取出來,完成一次通信,即一問一答;另一類是被動接收形 的,即下位機會一直發送數據上來。這二種類型的串口通信在處理上會不太一樣。
首先是要確認儀器選擇的通信模式是串口通信模式,F在的儀器一般都至少有二 種通信模式,一種是 RS232,一種是 GPIB,如果儀器是設置為 GPIB 通信的話, RS232 是不可能通信上的,所以要先確認一下,方法一般是在儀器面板上選擇設 置>>遠程控制>>GPIB/RS232,各個儀器稍微不同,可以查儀器手冊看一下。
接著是要注意發送指令和讀回數據之間要有一定的延時,即VISA WRITE 和 VISA READ 之間要有一定的延時,一般 200 毫秒即可,因為串口是底層硬件, 數據從軟件到串口上要一點點時間,然后儀器對指令作出響應也要一點點時間, 這些時間加起來肯定比軟件運行二個節點的時間要短,所以延時是一定要加的。 在調試時如果發現正常運行時不能收到數據,但高亮運行就能收到數據,就很有 可能是沒有加延時的原因!
圖 5 被動接收類型中的數據接收 在接收下位機發送的幀數據時,一定要先了解幀格式,這樣才能正確解析出幀里面的數據來。 下面以例子來說明數據幀格式的通信。
設定通信數據幀每 7 個字節為一幀數據,其中以 0xAC、0x96 二個字節作為數據幀頭,第三、 四個幀頭為幀計數器,最大值為 0xFFFF,到達最大值后重新從 0 開始計數,第 4、5、6 三 個字節是數據信息,分別代表數據的高中低位,第 7 位為狀態標志字節,它的第一位為 1 時表示下位機出錯,為 0 時表示功能正常。

轉換為 U8 字節后,得到的是所傳輸字符的 ASCII 碼,我們就很容易進行數據幀的判斷了, 現收到以下的字符串數據:
數據,所以直接使用索引號進行索引輸出即可。只是在 LabVIEW 中,這些二進制數據是以字符串形式顯示出來的,它們的實質還是二進制 數據,這幾個二進制數據轉換為十進制數據分別是“49,50,51,52”,由于字符串都是以 ASCII 碼形式保存在計算機中的,那么 49,50,51,52 這幾個數在 ASCII 表中就表示是字 符串“1,2,3,4”。所以這幾個數據在 LabVIEW 中就顯示為字符串的 1,2,3,4 了。

需要注意一下的是如果正常顯示的字符串并不是 2 的整數倍,那么上圖的轉換程序就會少轉 換一個字符,可以用程序動態判斷一下這個字符串的長度,如果是奇數的話在它最左邊補一 個“0”再使用上面的程序就正常了。
LabVIEW串口通信教程good.pdf
(512.49 KB, 下載次數: 109)
,浪費幾個黑幣
| 歡迎光臨 (http://www.raoushi.com/bbs/) | Powered by Discuz! X3.1 |