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