LonWorksm網絡通信協議為LonTalk協議,LonTalk 協議在 OSI 七層參考模型的每一層提供服務。
該協議可供任何人實施,因此,可從 CEA 獲取 C 編程語言中的參考實施。自發明以來,該協議就成為 ANSI 標準、IEC 標準、中國國家標準,最近又獲得 ISO 標準化認證。
在第 一 層,多種物理連接可支持如 RS-485收發器、埃施朗的自由拓撲 (FT) 和電力線(PLC) 收發器以及第三方有線、無線和光纖收發器等。
在鏈路層,即 OSI 模型的第 二層,LonWorks 協議根據以太網標準化后對載波偵聽多路訪問協議家族所做的改進,提供創新型獨立介質訪問控制 (MAC) 層。MAC 層結合運用了兩個概念:p-保持 CSMA 和非保持 CSMA。
P-保持 CSMA。在P-保持 CSMA 中,鏈路訪問是帶時間槽的,傳輸設備使用P概率訪問鏈路,舉例,在 0.1 保持CSMA鏈路中,會有 10 個時間槽,對鏈路的訪問是隨機的,因此,通過任一時間槽進行傳輸的概率是 10%。
因此,P 值越小,傳輸設備可隨機訪問的時間槽越多。時間槽數量越多,沖突的可能性越小,這是因為任何兩個傳輸設備選取同一時間槽進行傳輸的機率降低了。擁有多個時間槽的缺點是,在閑置網絡中,發送消息的平均延時是時間槽數量除以二。理想狀態下,如果只有幾個傳輸設備等待發送,隨機訪問鏈路只需要通過少量的時間槽;當有較多的傳輸設備都有消息要發送時,隨機訪問鏈路需要通過大量的時間槽。P-保持 CSMA 本身并不能解決延時問題。
非保持 CSMA。 利用非保持 CSMA,只要有一個傳輸設備要發送消息,就會隨機訪問,而不是立即傳輸。這一技術可防止多個傳輸設備對單一事件做出響應,從而避免引起數據包沖突。
非保持 CSMA 對于數據包流量大的網絡十分有用,許多控制網絡也擁有這一特性。網絡化控制系統的其他特征為,通常情況下,當某個站點發送消息時,該站點必須收到響應或確認,而這種信息多播技術非常常用。例如,帶有溫度讀取功能的節點可能需要同時與多個節點分享所讀取的溫度值。多播是做到這一點的最有效方式。如果多播需要響應或尚未確認,則鏈路上超過半數的數據包可進行預測,因為每個數據包至少能產生一次響應,有時甚至可產生多次響應。
可預測 p-保持 CSMA算法。為了在網絡擁堵時為鏈路的優先訪問提供支持,可能需要為每個獨立站點分配一些供其單獨使用的隨機時間槽。通過這種方式,具有 MAC 優先級的站點可使用專用時間槽并有效避免所有鏈路訪問之間的競爭。
圖 1 為帶時間槽的訪問協議。
圖 2 為專用優先時間槽在每個數據包之后的使用,以確保關鍵站點可在避免數據包競爭的情況下訪問鏈路。
通過 可預測 CSMA 算法,當某個站點發送消息時,消息將會產生的響應數據包的數量會在數據包的 2 層報頭中進行編碼。這被稱為鏈路未完成任務的增量。發送者可得知為響應初始消息而將要發送的數據包數量,因為其必須跟蹤這些響應以便了解何時停止轉發。鏈路上的所有節點將收到所有數據包并檢查 2 層報頭以了解鏈路未完成任務的增量情況。它們會利用這個工作中的未完成任務調整為自己的鏈路訪問所需隨機分配的時間槽數量。因此,未完成任務會在流量增多時動態增加,并在流量減少時隨時間相應減少。
LonWorks 協議就是通過這種方式來動態調整基于已知未來的隨機時間槽數量。根據經驗,協議面向對等網絡的 MAC 算法已用到占據理論最大值高達 80% 的鏈路帶寬,而碰撞率卻低于 4%。這種協議不僅具備超高效率,而且只需極小化狀態,無需了解連接上的站點數量,也無需準備碰撞檢測硬件。
流量對延遲的圖示說明了可預測 P-保持 CSMA 算法在避免碰撞(甚至在網絡超負荷期間)方面的出色能力。
除 MAC 算法以外,2 層還可提供位編碼以及 16 位的循環冗余校驗 (CRC)。CRC 采用 CCITT CRC-16 標準。位編碼屬于雙相間隔編碼。這是差分曼徹斯特編碼的一種變體,可在通過雙絞線進行通信時不受極性影響。安裝人員無需顧慮使用雙終端的兩根通信線具體連接方式。
3 層是網絡層,提供尋址功能。在 LonWorks 協議中,尋址需按等級進行,先從節點的域開始,隨后是其子網和標識號,均以八位數字表示。或者,一個節點可屬于多個多播組,每個組地址作為單個字節進行編碼。一個域可包括多達 256 個多播組和 255 個子網,每個可包含最多 127 個節點。為節省帶寬,一個域的地址可編碼為長度為零的一個字節、三個字節或六個字節(確保唯一性)。這種簡單的尋址設計可使跨多個鏈路的數據包路由變得非常簡單。路由表非常小,例如,只帶有一個 256 位的隊列,可確定消息是否應通過路由器傳送至特定子網,或是特定組的成員是否在路由器的另一端。
4 層是傳輸產品協議層,負責處理數據包轉發和重復檢測。當站點發送數據包時,會具體指定使用不可靠服務還是可靠服務發送數據包。不可靠服務包括未確認服務以及未確認但已重發的服務。可靠服務則包括確認或響應加以確認的服務。協議可支持可靠單播及多播,使應用程序清楚了解其信息正在發送給一個還是多個站點。對每個數據包而言,重試的次數、重試時間間隔以及接收者一端的總事務時間均可配置。這可使事務在限定時間內給出失敗或成功結果,從而滿足應用程序響應時間要求。
5 層是會話層,負責處理要求響應服務。除發送響應以外,協議還會保存響應,以便在需要重試時快速重新發送響應,而無需應用程序進行重新計算和轉發。
6 層是表示層,用于處理埃施朗的“發布”-“訂閱”數據模型。表示層報頭將對傳入應用層的數據語義進行編碼,并負責傳輸數據項的標識符。
7 層是應用層,可提供稱作網絡變量的數據。網絡變量是一種根據具體應用程序而有所區別的數據類型,包括除浮點數、整數和布爾數以外的語義。例如,定義具有高溫和低溫限制的攝氏度溫度,以及定義為有效或無效的值。一個節點上的輸出網絡變量可以綁定到其他節點上的輸入網絡變量,前提是輸出和輸入網絡變量的數據類型相一致。
當控制計劃修改其中一個輸出網絡變量時,LonWorks 協議會捕獲這一改動并向任何擁有該值的“訂閱者”發送新值。“訂閱者”將在發送者的輸出網絡變量擁有新值時看到自己的輸入網絡變量中與之類型相同的變量。這種利用復雜數據并具有豐富語義的數據驅動控制模型可為不取決于命令類型和命令語法一致性的復雜控制場景提供支持。
協議還可在 7 層中提供節點發現,以及更重要的邏輯接口、網絡變量、每個節點所支持的功能簡表、可能的配置和其他信息,從而使每個節點輕松集成到控制系統中。
節點及其網絡接口的自動發現可在實現高效的安裝和網絡配置的同時減少網絡安裝時間并降低系統總成本。
最后一點,7 層可支持通過標準方式升級節點軟件,因此系統可根據需求變化進化升級。