LabVIEW 的基本 TCP/IP 通訊

綜覽

本文介紹 TCP/IP 通訊基本概念。讀者必須先初步了解 LabVIEW 相關知識。如果您是 LabVIEW 入門新手,先參閱 LabVIEW 教學課程對於進一步理解本文會有所助益。

內容

TCP 通訊協定

網際網路通訊協定 (IP)、使用者封包通訊協定 (UDP) 及傳輸控制通訊協定 (TCP),全都是網路通訊基本工具。TCP/IP 的名稱源自網際網路通訊協定組合中最廣為人知的兩項通訊協定:「傳輸控制通訊協定」和「網際網路通訊協定」。TCP/IP 支援透過單一網路或互連網路 (網際網路) 進行通訊。

TCP/IP 通訊提供簡易易用的使用者介面,有助於化繁為簡、讓網路通訊保持穩定可靠。如欲深入了解 TCP/IP 通訊運作方式,請參閱 LabVIEW 說明中的使用 LabVIEW 與 TCP/IP 及 UDP。 

在 LabVIEW 中,請使用函式»資料通訊»通訊協定»TCP 面板中的 TCP/IP 函式進行 TCP 通訊。如同 DAQ、儀器與檔案 I/O 通訊作業,這項流程也包括開啟連線、讀取與寫入資訊,以及關閉連線。

就大多數的 I/O 通訊而言,處理器一定是主動與磁碟機伺服器、外接儀器伺服器或 DAQ 機板伺服器連線的用戶端。進行 TCP/IP 連線時,電腦可以是用戶端,也可以是伺服器。下列程式圖示意主動使用 TCP 開放連線與遠端伺服器進行連線的用戶端應用程式。伺服器 (或稱常駐程式) 會偵聽遠端連線並適度回應。

TCP 開放連線

LabVIEW 使用者可以開發用於進行 TCP/IP 通訊的客製應用程式。程式設計師負責開發用戶端和伺服器。 

任何人都可以主動與伺服器連線,因此,建議您控制伺服器存取權限。下列程式圖示意伺服器如何使用 TCP 偵聽 VI 的遠端位址輸出值決定遠端用戶端是否有權存取伺服器。

TCP 偵聽 VI

開發 TCP/IP 通訊應用程式

大多數應用程式的功能並不只有寫入及讀取某個值。通訊是持續進行的處理序,且與通訊協定息息相關。舉例來說,假設用戶端以 8 位元整數傳送下列四個指令到伺服器:

1 = 擷取資料並確認
2 = 傳送資料
3 = 取得狀態
4 = 關閉連線

下圖*示意伺服器接收這些指令的方式。請注意,圖中包含相同的基本 TCP 函式,但外圍程式碼支援進行更複雜的連線及完整的通訊功能。

  • While Loop 會包圍 VI 的其他部分。這樣可以支援 VI 處理多個序列連線,不必在每次連線關閉後重新啟動。VI 無法處理多個同時並行的連線。 
  • 外部的 Case 架構會決定是否發生了有效連線。 

    • 若有效連線不成立,不會有任何反應。 
    • 若有效連線成立,則 VI 會進入 While Loop,自 TCP/IP 通訊埠讀取一個位元組。這位元組包含來自用戶端的第 1 到第 4 個指令。
    • 若連線有效但未於讀取逾時期間內收到任何指令,則內部 Case 架構的預設條件會傳送 TRUE 值到內部 While Loop 的 Continuation 端點,繼續保持有效連線。
       
內部 Case 架構的預設條件會傳送 TRUE 值


下列程式方塊圖*示意內部條件陳述式的其他四種條件。每個條件均會處理一個該伺服器可以傳送的特定指令。每個條件均會傳送資訊至 Continuation 端點,決定是否要繼續執行迴圈。其中,Quit 條件一律會傳回 FALSE 值。離開迴圈之後,伺服器會關閉與用戶端的連線。

Quit 條件一律會傳回 FALSE 值 Quit 條件一律會傳回 FALSE 值
Quit 條件一律會傳回 FALSE 值 Quit 條件一律會傳回 FALSE 值


這種類型的伺服器架構能支援您開發靈活的伺服器,適用於更複雜的網路通訊程序。您開發的通訊協定也許會比上述範例更複雜。

* 請注意,這些影像擷自舊版 LabVIEW。資料接線與功能圖示的顏色未必與您的版本相符。程式碼的架構仍然適用。

LabVIEW 中的 TCP/IP 範例

Was this information helpful?

Yes

No