使用正確網路協定

綜覽

控制和監控應用程式一般會涉及必須交換資訊的各種系統,且通常會透過乙太網路交換資訊。嵌入式控制器可從週邊儀器讀取資料、從 HMI (人機介面) 接收操作人員輸入,或將測試結果串流至中央資料管理系統。有數種網路協定可用於完成這些作業;本教學文件將引導您完成為應用程式選擇適當協定的作業。文件中將介紹控制和監控應用程式中最常用的通訊模型,並針對每種情形推薦合適的網路協定。我們將重點介紹三種通訊模型:
  • 指令或訊息架構通訊
  • 流程資料通訊
  • 串流/緩衝的通訊
接著,我們將討論下列網路協定最適合執行的作業:
  • TCP 和 UDP
  • 網路發佈的共享變數
  • 網路串流
  • 網路服務

內容

指令、螢幕串流

每種通訊都涉及目標 (通常是資料擷取系統或控制器) 和主機 (通常是顯示 HMI),兩者都可以排列成數種可能的配置。您可以在單一目標和單一主機 (1:1)、多個目標和單一主機 (N:1) 或單一目標和多個主機 (1:N) 之間進行通訊。以下部分描述了機器控制應用程式中所用的每種通訊、其常見的系統配置和網路與資料傳輸規範。

指令訊息架構通訊

指令或訊息架構通訊是由特定活動觸發的資訊傳輸,發生頻率較低。這項活動可能是一次按鈕或警示,接著會觸發特定的回應。在指令架構的系統中,涉及的系統類型有兩種:指令者系統 (主機) 和工作者系統 (目標)。指令者傳送的是工作者必須執行的指示。指令必須以完整無缺的方式傳送,且延遲應盡可能降低。例如,當操作人員按下按鈕,他們會預期相關的動作能夠執行,而不需再次按下按鈕。他們也預期系統能在合理的時間範圍內回應。最常見的配置是 1:1,但 N:1 和 1:N 也有可能。

流程資料通訊

流程資料通訊包含定期傳輸流程變數的最新值。這類通訊是最常見的通訊,對於控制應用程式和用來顯示目前系統狀態的 HMI 來說非常實用。  舉例來說,一或多個嵌入式控制器會運用這類通訊傳送定期更新至 HMI,以便 HMI 監控機器狀態。  操作人員需要查看機器的目前狀態,因為即時控制器或 HMI 只會根據最新值採取行動,因此不需要完整無缺的傳輸方式。

這類資料傳輸可在嵌入式控制器之間使用,且可能需要高速運行。  然而,流程資料通訊最常見的用途為 HMI 的更新。  這類通訊所需的更新速率較慢,因為資料的檢視是由人類執行。1 到 30 Hz 的更新速率通常就已足夠:速度太快的話不僅會消耗 CPU 和記憶體資源,而且會導致資訊量更多,操作人員光靠肉眼會來不及處理。根據經驗法則,數字顯示的更新率不應超過 1-2 Hz,若為圖形顯示,則 30 Hz 較為合適,可提供平穩的更新。

流/緩衝通訊

串流資料時.會有大量資訊連續傳出去,但不一定是即時的。當您想要傳送大量資料並擷取每個資料點時,這類通訊就很實用。串流通常 (雖然並不一定) 是單向的,且為 1:1 配置。而且串流會連續緩衝資料,因此資料不會遺失。串流通訊的一個常見使用案例,是目標正在執行高速資料擷取時,必須將資料傳輸到主機進行記錄或後處理。

通訊類型

常見配置

特性

需求

訊息架構

1:N

事件驅動,指令

低延遲,可保證傳輸

流程資料

N:1

單點,目前值

最新值,但無法保證傳輸

串流/緩衝

1:1

持續資料傳輸

高傳輸量,可保證傳輸

表 1.1. 機器控制通訊類型摘要

 

網路協定

為應用程式選擇網路協定時,有數個您應評估的因素,包含:

  • 通訊類型
  • 系統配置
  • 效能
  • 使用簡易
  • 支援的第 3 方 API

為應用程式選擇網路協定時,上述的通訊類型與系統配置會是最重要的決定因素。效能和易用性需求取決於具體的應用程式和程式設計體驗。最後,如果您計畫開發的應用程式要與第 3 方應用程式通訊 (例如使用 C 或 VB 開發的應用程式),則需要使用能夠與第 3 方 API 介接的網路協定。綜合檢視這些因素,您就能夠做出適合應用程式的正確選擇。參考表 1.2,了解每個網路協定與上述因素有關的摘要。

 

API

類型

效能

使用簡易

支援的配置

是否支援第 3 方 API?

共享變數

LabVIEW 功能

1:1, N:1, 1:N

Measurement Studio 與 CVI

網路串流

LabVIEW 功能

1:1

目前不適用

TCP/UDP

網際網路協定

1:1, N:1, 1:N

網路服務

網際網路協定

*

 

1:1, N:1, 1:N

表 1.2. 網路協定摘要 ( = 最好, = 優, = 好,* = 取決於在網路服務中正在完成的動作)

TCP 和 UDP

TCP 和 UDP 網際網路協定是本文中所討論所有網路協定使用的初階建置區塊。所有其他協定都在這些協定之上提供使用簡易的抽象化:因此 TCP 和 UDP 不僅提供了最高效能,也提供初階控制,可實現最大程度的靈活性。TCP 和 UDP 可用來建構您的專屬自訂協定,例如 STM

TCP

TCP 是一種可靠的點對點通訊協定;會依序透過完整無缺的方式傳輸資料。這項協定是以連線為基礎,這表示用戶端與伺服器之間必須先建立連線,才能傳輸資料。為了確保資料成功傳輸,TCP 會重新傳輸資料,直到收到確認為止。TCP 用戶端和伺服器透過指定的連接埠通訊。

UDP

UDP 與 TCP 的不同之處在於,UDP 會將資料發佈至指定的連接埠,但在傳送資料前不需要與用戶端連線。如果目的地沒有接收資料的連線,資料就會遭到捨棄;該協議不會檢查傳輸是否成功。因為,UDP 不適合用於需要完整無缺資料傳輸的應用程式。

UDP 函式可用來與單一用戶端通訊,也可將資料傳送至數個用戶端。UDP 多點廣播模式可在網路上於單一寄件者和多個用戶端之間進行有效通訊,不需要寄件者維護一份用戶端清單。本文討論的協定中,UDP 的傳輸率最高,但無法確保傳輸資料的完整無缺。

TCP 和 UDP 是高傳輸量網路協定,然而執行難度也很高。網路連接需要手動管理,而每條連線都會占用一個連接埠。TCP 和 UDP 要求所有資料以字串格式傳送。這表示寄送者必須將所有資料壓縮成字串,而接收者必須將將資料從字串還原成資料。對非字串資料傳輸而言,這無疑是額外增添了複雜性。

TCP 和 UDP 是訊息架構通訊和自訂串流應用程式的絕佳工具。TCP 和 UDP 支援所有配置類型,而且因為是產業標準,因此可與第 3 方應用程式搭配使用。

網路發佈共享變數

網路發佈的共享變數是 LabVIEW 中一款使用簡易的資料分享工具。這種變數的執行方式簡單明瞭,可支援大多數 LabVIEW 資料類型和自訂類型定義。

LabVIEW 中的網路變數由三個部分組成:網路變數節點、共享變數引擎和 NI 發佈訂閱協定 (NI-PSP)。網路變數節點放置在程式方塊圖上,用於執行變數的讀寫操作。共享變數引擎是代管發佈資料的軟體元件。您可以在即時目標或 Windows PC 上代管該引擎,但其必須在至少一個連網機器上執行。 NI-PSP 是專屬的網路協定,可優化網路共享變數的傳輸。此協定是以 TCP/IP 為根據,可透過有效率且可靠的方式透過網路傳輸資料。

如果您需要一種簡單的方式,來實作模擬無損 N:1 和 1:N 通訊時,就可以在網路發佈的共享變數啟用緩衝。共享變數緩衝可防止因暫時性網路延遲而導致的資料遺失,但無法保證資料傳輸完整無缺。如果用戶端寫入資料的速度比另一個用戶端讀取資料的速度更快,則最終會發生溢位,而資料將會遺失;資料流無法防止資料溢位。即使所有用戶端的讀取速率都夠快,如果在傳輸資料時,底層 TCP 連線因為網路中斷而斷線,那麼資料仍有可能遺失。如果需要完整無缺的點對點資料傳輸時,建議您使用網路串流。網路發佈的共享變數最適合用於注重流程變數最新值的流程資料通訊。

網路串流

網路串流是在 LabVIEW 2010 中發佈的 LabVIEW 功能,旨在提供高效率的資料串流。  他們提供使用簡易的更高階抽象化,可處理連線、中斷連線和資料流控制,同時維持與原始 TCP/UDP 相似的傳輸量。網路串流是單向一對一的完整無缺通訊通道,由寫入器和讀取器端點組成。因為網路串流的資料完整特性,它們也可用作訊息架構通訊的基礎。

網路串流可透過網路傳輸大多數的 LabVIEW 資料類型 (包含叢集和陣列),但串流在下列資料類型上最有效率:

  • 數字純量
  • 布林值
  • 數字純量 1D 陣列
  • 布林值 1D 陣列

您可以使用網路串流,在兩台電腦之間、在電腦到即時目標之間,或即時目標到即時目標之間傳遞資料。因為網路串流是單向的,如果想在端點之間雙向傳遞資料,您需要開啟兩個串流。同樣地,如果需要將資料傳遞至多個目標,您需要開啟多個串流。

網路服務

網路服務可讓您建立網路應用程式,這些應用程式會透過網路與任何具有 HTTP 功能的網路用戶端 (包含標準網路瀏覽器) 通訊。LabVIEW 可讓您發佈 VI 做為伺服器端的網路服務;此 VI 稱為網路方法 VI。此網路服務會部署至可執行檔專屬的網路伺服器,或應用網路伺服器,並且可在 Windows PC 和 NI 即時運算平台上代管。此 LabVIEW 功能的優點,是能與眾多支援 HTTP 功能的裝置和應用程式介接,而且不限於 NI 產品。許多使用者能透過多個不同的平台和地點監控一或多個應用程式。使用的難易度和效率將取決於網路用戶端和您對網路應用程式進行程式設計的熟悉度。

資料可使用 URL 和標準 HTTP 方法,與網路方法 VI 進行交換。例如,您可以使用標準 HTTP 方法 (例如 POST),從網路用戶端為網路方法 VI 中的控制項提供輸入資料。資料傳回 HTTP 用戶端的方式不是透過 VI 的輸出終端,就是透過網路伺服器串流資料。 透過終端方法,當網路伺服器接收要求時,會將連接到輸出終端的任何資料當做可延伸標記式語言 (XML) 字串傳回至網路用戶端。網路服務還可以配置為使用超文本標記語言 (HTML)、JavaScript Object Notation (JSON) 或文字格式回傳資料。您也可以將網路方法 VI 設定為使用串流輸出模式。這種輸出模式可讓您以自訂格式回傳資料;您可以部署緩衝機制,並使用自訂 HTML 標題。有了這兩種可用的輸出模式,網路服務就很適合用於監控或串流應用程式。

推薦網路協定

下列摘要說明哪種網路協定最適合用來機器控制應用程式中的每種通訊類型。

指令訊息架構通訊

訊息架構通訊需要可靠的傳輸和快速的傳輸率。表 1.3 列出訊息架構通訊的所有選項。網路串流能為此應用程式提供最佳的服務;因為網路串流具備可靠、易用與傳輸速率極快的優點。不過,如果您需要 1:N 或 N:1 配置,或是您需要使用第 3 方應用程式傳輸資料,則 TCP/UDP 會更適合。為了方便使用,如果 N 很小,則仍能夠使用多個網路串流。網路服務的使用效能與經過剖析的 TCP 類似,但可能更容易使用。

API

類型

效能

使用簡易

支援的配置

是否支援第 3 方 API?

意見

網路串流

LabVIEW 功能

1:1

目前不適用

建議協定

TCP/UDP

基元

1:1, N:1, 1:N

若是 N:1 或 1:N 配置,或與第 3 方應用程式通訊

 

網路服務

LabVIEW 功能

1:1, N:1, 1:N

表 1.3 適合訊息架構通訊的網路協定

流程資料通訊

流程資料通訊只關注最新值。因此,資料是否能正確傳輸和傳輸率的快慢就不是很重要。表 1.4 列出流程資料通訊的所有選項。共享變數是此應用程式建議的 LabVIEW 功能。此類變數使用簡易,並允許各種系統配置,而且也會自動管理網路連接。如果電腦未安裝 LabVIEW,且必須透過多個地點監控資料時,應使用網路服務。同樣地,如果將由第 3 方應用程式監控資料時,則應使用 TCP/UDP。

API

類型

效能

使用簡易

支援的配置

是否支援第 3 方 API?

意見

共享變數

LabVIEW 功能

1:1, N:1, 1:N

Measurement Studio 與 CVI

建議協定

網路服務

LabVIEW 功能

1:1, N:1, 1:N

對於 1:N 配置

TCP/UDP

基元

1:1, N:1, 1:N

適用於與第 3 方應用程式的通訊

表 1.4 適合流程資料通訊的網路協定

流/緩衝通訊

串流通訊需要快速的傳輸率和可靠的傳輸。表 1.5 列出串流/緩衝通訊的所有選項。建議您針對此應用程式使用網路串流。TCP/UDP 適用於 N:1 或 1:N 配置,還有需要將資料串流至第 3 方應用程式的情形。

API

類型

效能

使用簡易

支援的配置

是否支援第 3 方 API?

意見

網路串流

LabVIEW 功能

1:1

目前不適用

建議協定

TCP/UDP

基元

1:1, N:1, 1:N

適用於 N:1 和 1:N 配置,和與第 3 方應用程式通訊

表 1.5 適合串流/緩衝通訊的網路協定