LabVIEWCompactRIO 開發(fā)指南19 原始以太網(wǎng)(TCP/UDP)
LabVIEWCompactRIO?開發(fā)指南19
原始以太網(wǎng)(TCP/UDP)
TCP和UDP是所有以太網(wǎng)標(biāo)準(zhǔn)的低級構(gòu)建塊。原始TCP和UDP工具在幾乎所有編程環(huán)境中都得到原生支持,包括LabVIEW。它們提供較低級別的通信功能,這些功能更靈活,但用戶友好性較差。必須在應(yīng)用程序級別處理建立連接和打包數(shù)據(jù)等功能。
如果需要對通信協(xié)議進(jìn)行非常低級別的控制,或者如果正在設(shè)計自定義協(xié)議,TCP和UDP是不錯的選擇。它們也被推薦用于將數(shù)據(jù)流到第三方應(yīng)用程序,因?yàn)榫W(wǎng)絡(luò)流僅支持與LabVIEW應(yīng)用程序進(jìn)行通信。對于向第三方應(yīng)用程序發(fā)送消息,STM更易于使用,并提供同等甚至更好的性能。為了將當(dāng)前值或標(biāo)簽發(fā)送到第三方應(yīng)用程序,CCC,Web服務(wù)或Modbus,具體取決于具體系統(tǒng)配置,也有更容易的實(shí)現(xiàn)。
TCP提供具有錯誤處理功能的點(diǎn)對點(diǎn)通信,以保證數(shù)據(jù)包傳遞。UDP可以廣播多個設(shè)備可以接收相同信息的消息。UDP廣播消息可能由網(wǎng)絡(luò)交換機(jī)過濾,并且不提供有保證的數(shù)據(jù)包傳遞。TCP通信遵循客戶端/服務(wù)器方案,其中服務(wù)器偵聽客戶端打開連接的特定端口。建立連接后,可以使用基本的寫入和讀取功能自由交換數(shù)據(jù)。借助LabVIEW中的TCP函數(shù),所有數(shù)據(jù)都以字符串形式傳輸。這意味著必須將布爾或數(shù)字?jǐn)?shù)據(jù)平展為字符串?dāng)?shù)據(jù),以便在讀取后寫入和取消平展。由于消息的長度可能不同,因此由程序員確定給定消息中包含多少數(shù)據(jù)并讀取適當(dāng)數(shù)量的字節(jié)。有關(guān)LabVIEW中客戶端/服務(wù)器通信的基本概述,請參閱LabVIEW示例Data?Server.vi?與Data?Client.vi。
簡單TCP/IP消息傳遞(STM)
STM是NI系統(tǒng)工程師基于TCP/IP設(shè)計的一種網(wǎng)絡(luò)協(xié)議。如果要與第三方API通信或需要標(biāo)準(zhǔn)協(xié)議,建議通過網(wǎng)絡(luò)發(fā)送命令或消息。它通過使用格式化數(shù)據(jù)包使數(shù)據(jù)操作更易于管理,并通過最大限度地減少重復(fù)數(shù)據(jù)的傳輸來提高吞吐量。
為本部分提供LabVIEW示例代碼。
下載:可以從NI開發(fā)人員專區(qū)白皮書LabVIEWSimple?Messaging?Reference?Library?(STM)下載并安裝STM庫。STM庫位于“User?Libraries”選板中。
元數(shù)據(jù)
元數(shù)據(jù)作為集群數(shù)組實(shí)現(xiàn)。每個數(shù)組元素都包含打包和解碼一個變量值所需的數(shù)據(jù)屬性。即使只定義了Name屬性,也可以根據(jù)應(yīng)用程序要求,通過添加元屬性(如數(shù)據(jù)類型)來使用集群來自定義STM。元數(shù)據(jù)群集是一個typedef,因此添加屬性不應(yīng)破壞代碼。
圖4.22顯示了為兩個變量配置的元數(shù)據(jù)集群示例:迭代和隨機(jī)數(shù)據(jù)。

圖4.22.字符串的元數(shù)據(jù)數(shù)組
在傳輸每個數(shù)據(jù)變量之前,將創(chuàng)建一個數(shù)據(jù)包,其中包含數(shù)據(jù)大小、元數(shù)據(jù)ID和數(shù)據(jù)本身的字段。圖4.23顯示了數(shù)據(jù)包格式。

圖4.23.數(shù)據(jù)包格式
元數(shù)據(jù)ID字段使用與數(shù)據(jù)變量對應(yīng)的元數(shù)據(jù)數(shù)組元素的索引進(jìn)行填充。接收主機(jī)使用元數(shù)據(jù)ID為元數(shù)據(jù)數(shù)組編制索引,以獲取消息數(shù)據(jù)的屬性。
?
需要說明的是,上述的例程和文檔,都是可以下載的,雙擊即可打開,其中壓縮文件是可以采用粘貼復(fù)制的方式,拷貝到硬盤上。這不是圖片,各位小伙伴看到后嘗試一下,這個問題就不用加微信咨詢了。有關(guān)LabVIEW編程、LabVIEW開發(fā)等相關(guān)項(xiàng)目,可聯(lián)系們。附件中的資料這里無法上傳,可去公司網(wǎng)站搜索下載。