LonWorks是美國Echelon公司1992年推出的局部操作網(wǎng)絡(luò),最初主要用于樓宇自動化,但很快發(fā)展到工業(yè)現(xiàn)場網(wǎng),。LonWorks技術(shù)為設(shè)計和實(shí)現(xiàn)可互操作的控制網(wǎng)絡(luò)提供了一套完整,、開放,、成品化的解決途徑,。
一,、LonWorks的神經(jīng)元芯片
LonWorks技術(shù)的核心是神經(jīng)元芯片(Neuron Chip),。該芯片內(nèi)部裝有3個微處理器:MAC處理器完成介質(zhì)訪問控制;網(wǎng)絡(luò)處理器完成OSI的3~6層網(wǎng)絡(luò)協(xié)議;應(yīng)用處理器完成用戶現(xiàn)場控制應(yīng)用。它們之間通過公用存儲器傳遞數(shù)據(jù),。
在控制單元中需要采集和控制功能,為此,神經(jīng)元芯片特設(shè)置11個I/O口,。這些I/O口可根據(jù)需求不同來靈活配置與外圍設(shè)備的接口,如RS232、并口,、定時/計數(shù),、間隔處理、位I / O等,。
神經(jīng)元芯片還有一個時間計數(shù)器,從而能完成Watchdog,、多任務(wù)調(diào)度和定時功能。神經(jīng)元芯片支持節(jié)電方式,在節(jié)電方式下系統(tǒng)時鐘和計數(shù)器關(guān)閉,但狀態(tài)信息(包括RAM中的信息) 不會改變,。一旦I/O狀態(tài)變化或網(wǎng)線上信息有變,系統(tǒng)便會激活,。其內(nèi)部還有一個最高1.25 M bps、獨(dú)立于介質(zhì)的收發(fā)器,。由此可見,一個小小的神經(jīng)元芯片不僅具有強(qiáng)大的通信功能, 更集采集,、控制于一體。在理想情況下,一個神經(jīng)元芯片加上幾個分離元件便可成為DCS系統(tǒng)中一個獨(dú)立的控制單元,。
二,、完善的開發(fā)平臺
LonWorks提供的不僅僅是一套高性能的神經(jīng)元芯片,更重要的是,它提供了一套完整的開發(fā)平臺。工業(yè)現(xiàn)場中的通信不僅要將數(shù)據(jù)實(shí)時發(fā)送,、接收,更多的是數(shù)據(jù)的打包,、拆包、流量處理,、出錯處理,。這使控制工程師不得不在數(shù)據(jù)通信上投入大量精力。LonWorks在這方面提供了非常友好的服務(wù),提供了一套完整的建網(wǎng)工具——LonBuild,。
首先,它提供了一套C語言的編譯器,從而大大減少了開發(fā)時間,。在這個編譯器中,提供了對11個I/O非常詳盡的庫函數(shù)。在通信方面,它也提出了一個全新的概念——網(wǎng)絡(luò)變量,。通過網(wǎng)絡(luò)變量,網(wǎng)絡(luò)上的通信只需將相關(guān)節(jié)點(diǎn)上的網(wǎng)絡(luò)變量連接一下即可,。網(wǎng)絡(luò)變量是應(yīng)用程序定義的一個特殊靜態(tài)變量,可以是ANSI C所定義的各種類型,也可以是自定義類型,還可以規(guī)定優(yōu)先級、響應(yīng)方式等。網(wǎng)絡(luò)變量被定義為輸入或輸出,當(dāng)定義為輸出的網(wǎng)絡(luò)變量被賦予新值時,與該輸出變量相連的輸入網(wǎng)絡(luò)變量就會被立刻賦予同樣的新值,。
另外,LonBuild還集成開發(fā)環(huán)境和編譯于一體,具備C調(diào)試器,可在多個仿真器上調(diào)試應(yīng)用程序,并具備網(wǎng)絡(luò)協(xié)議分析和通信分析的功能,。
三、LonTalk:面向?qū)ο蟮木W(wǎng)絡(luò)通信協(xié)議
LonTalk是LonWorks的通信協(xié)議,固化在神經(jīng)元芯片內(nèi),。LonTalk局部操作網(wǎng)協(xié)議是為LonWo r ks中通信所設(shè)的框架,支持ISO組織制定的OSI參考模型的7層協(xié)議,并可使簡短的控制信息在各種介質(zhì)中非??煽康貍鬏敗,! ?/p>
LonTalk協(xié)議是直接面向?qū)ο蟮木W(wǎng)絡(luò)協(xié)議,具體實(shí)現(xiàn)即采用網(wǎng)絡(luò)變量的形式。又由于硬件芯片的支持,使它實(shí)現(xiàn)了實(shí)時性和接口的直觀,、簡潔等現(xiàn)場總線的應(yīng)用要求,。
1.LonTalk MAC的特點(diǎn)
介質(zhì)訪問控制(MAC)子層是OSI參考模型的數(shù)據(jù)鏈路層的一部分。目前在不同的網(wǎng)絡(luò)中存在多種介質(zhì)訪問控制協(xié)議,其中之一就是大家熟悉的CSMA(載波信號多路偵聽),。LonTalk正是使用該協(xié)議,但具有自己的特色,。
CSMA協(xié)議要求一個節(jié)點(diǎn)在發(fā)送數(shù)據(jù)前偵聽網(wǎng)絡(luò)是否空閑。一旦監(jiān)測到線路空閑后,不同的協(xié)議動作不同,。這樣在重負(fù)載的情況下,不同協(xié)議的執(zhí)行結(jié)果不同,。例如,Ethernet采用CSM A /CD協(xié)議,一旦檢測到碰撞,采用避讓算法,這種方法在重負(fù)載時導(dǎo)致網(wǎng)絡(luò)介質(zhì)傳輸率變得極低。另一些CSMA協(xié)議使用時間片規(guī)則去訪問介質(zhì),使節(jié)點(diǎn)在限制的時間片訪問介質(zhì),這樣可以大大減少兩個數(shù)據(jù)報發(fā)生碰撞的可能性,。P-堅(jiān)持CSMA和LonTalk的CSMA就是使用時間片去訪問介質(zhì),。
LonTalk協(xié)議使用一個改進(jìn)的CSMA介質(zhì)訪問控制協(xié)議,稱為預(yù)測的P-堅(jiān)持CSMA。LonTa lk協(xié)議在保留CSMA協(xié)議優(yōu)點(diǎn)的同時,注意克服它在控制中的不足,。目前存在的MAC協(xié)議(如IEEE 802.2,、802.3、802.4,、802.5)都不能在重負(fù)載下很好地保持網(wǎng)絡(luò)高效率,、支持大網(wǎng)絡(luò)系統(tǒng)和多通信介質(zhì)。
如果有很多網(wǎng)絡(luò)節(jié)點(diǎn)等待網(wǎng)絡(luò)空閑,一旦網(wǎng)絡(luò)空閑,這些節(jié)點(diǎn)都會馬上發(fā)送報文而產(chǎn)生碰撞,。它們產(chǎn)生碰撞后會后退一段時間,假如這段時間相同,就會發(fā)生重復(fù)碰撞,這將使網(wǎng)絡(luò)效率大大降低,。在預(yù)測的P-堅(jiān)持CSMA中,所有LonWorks節(jié)點(diǎn)等待隨機(jī)時間片間隔訪問介質(zhì), 這就避免了以上情況的發(fā)生。在LonWorks中,每個節(jié)點(diǎn)發(fā)送前隨機(jī)插入1~16個很小的隨機(jī)時間片,。在空閑網(wǎng)絡(luò)中,每個節(jié)點(diǎn)發(fā)送前平均插入8個隨機(jī)時間片,。
在P-堅(jiān)持CSMA中,當(dāng)一個節(jié)點(diǎn)有信息需要發(fā)送時并不立即發(fā)送,而是等待一個概率為 P的隨機(jī)時間片。而LonTalk協(xié)議可根據(jù)網(wǎng)絡(luò)負(fù)載動態(tài)調(diào)整P值,。時間片的增加通過一個N值,插入的隨機(jī)時間片為N×16,這個N值的取值范圍是1~63,。LonTalk稱N為網(wǎng)絡(luò)積壓的估計值,是對當(dāng)前發(fā)送周期有多少個節(jié)點(diǎn)有報文需要發(fā)送的估計。LonTalk協(xié)議根據(jù)網(wǎng)絡(luò)積壓動態(tài)地調(diào)整介質(zhì)訪問,允許網(wǎng)絡(luò)在輕負(fù)載情況下用較短的時間片,在重負(fù)載情況下用較長的響應(yīng)時間片,。
對照實(shí)驗(yàn)表明,36個LonWorks節(jié)點(diǎn)互聯(lián),采用一般P-堅(jiān)持算法,當(dāng)每秒要傳輸?shù)膱笪倪_(dá)500 ~1000包時,碰撞率從10%上升到54%;而采用預(yù)測的P-堅(jiān)持算法,在500包以下時碰撞率與前者相當(dāng),在500~1000包時穩(wěn)定在10%,。
對所有令牌環(huán)網(wǎng)絡(luò),LonTalk具有對多介質(zhì)的支持,但這些介質(zhì)必須在總線上具有環(huán)的結(jié)構(gòu) ,令牌在這個環(huán)線上輪巡。這對使用電力線和無線電作為介質(zhì)的網(wǎng)絡(luò)顯然不可行,因?yàn)榫W(wǎng)上所有節(jié)點(diǎn)幾乎能同時收到令牌。同時,令牌環(huán)網(wǎng)絡(luò)還需增加令牌丟失時的恢復(fù)機(jī)制,、令牌快速應(yīng)答機(jī)制,這些都增加了硬件上的開銷,使網(wǎng)絡(luò)成本增加,。
對令牌總線網(wǎng)絡(luò),LonTalk在令牌中加入網(wǎng)絡(luò)地址,從而在物理總線上建立一個邏輯環(huán)的結(jié)構(gòu),使令牌在這個邏輯環(huán)上輪巡。但是,在低速網(wǎng)絡(luò)中令牌輪巡時間變得很長,。另外,令牌總線在有節(jié)點(diǎn)上網(wǎng)或下網(wǎng)時都會發(fā)生網(wǎng)絡(luò)重構(gòu),。在電池供電的系統(tǒng)中,會因經(jīng)常休眠和喚醒而導(dǎo)致網(wǎng)絡(luò)上下網(wǎng)時頻繁重構(gòu);在惡劣的環(huán)境中,常會發(fā)生令牌丟失而導(dǎo)致網(wǎng)絡(luò)重構(gòu)。這些網(wǎng)絡(luò)重構(gòu)會大大降低網(wǎng)絡(luò)的效率,。同時,由于網(wǎng)絡(luò)地址的限制,每個網(wǎng)絡(luò)至多只有255個節(jié)點(diǎn),。
我們常用的CSMA/CD(如Ethernet),在輕負(fù)載情況下具有很好的性能;在重負(fù)載情況下, 過多的碰撞使網(wǎng)絡(luò)效率變得極低。
目前,在現(xiàn)場總線中還有一種十分流行的網(wǎng)絡(luò)——CANbus,。它采用無主結(jié)構(gòu),這一點(diǎn)大大優(yōu)于Bitbus,。其MAC層上的管理很有特色。它也采用CSMA方式,但將網(wǎng)絡(luò)上的節(jié)點(diǎn)分成不同的優(yōu)先級,采用支配位(0)和避讓位(1),、以及總線回讀的方法實(shí)現(xiàn)非破壞性總線仲裁,。即當(dāng)兩個節(jié)點(diǎn)同時向網(wǎng)絡(luò)傳遞信息時,優(yōu)先級低的節(jié)點(diǎn)主動停止發(fā)送,而優(yōu)先級高的節(jié)點(diǎn)可不受影響地繼續(xù)傳輸,這可以有效地避免總線碰撞。但是,這要求網(wǎng)絡(luò)一定要同步,這對多介質(zhì)的情況顯然不適用,。另外,對各節(jié)點(diǎn)不太需要優(yōu)先級的網(wǎng)絡(luò),由于不得不定義一個優(yōu)先級,因而當(dāng)網(wǎng)絡(luò)通信較繁忙時,有些優(yōu)先級低的節(jié)點(diǎn)可能很長時間不能發(fā)送信息,。因此,Canbus較適合介質(zhì)單一、節(jié)點(diǎn)數(shù)目較少的小網(wǎng)絡(luò),。
綜上所述,Lon的MAC子層具有以下優(yōu)點(diǎn):支持多介質(zhì)的通信,支持低速率的網(wǎng)絡(luò),可在重負(fù)載情況下保持網(wǎng)絡(luò)性能,支持大型網(wǎng)絡(luò),。
2.LonTalk對優(yōu)先級的支持
在LonWorks網(wǎng)絡(luò)中,為提高緊急事件的響應(yīng)時間,提供了一個可選擇的優(yōu)先級機(jī)制。該機(jī)制允許用戶為每個需要優(yōu)先級的節(jié)點(diǎn)分配一個特定的優(yōu)先級時間片,并保證有且只有一個節(jié)點(diǎn)擁有這樣的優(yōu)先級時間片,。在發(fā)送過程中,優(yōu)先級數(shù)據(jù)報將在該時間片內(nèi)把數(shù)據(jù)報發(fā)送出去,。優(yōu)先級時間片為0~127,0是不需等待立即發(fā)送,1是等待1個時間片,2是等待2個時間片 ,依此類推。低優(yōu)先級的節(jié)點(diǎn)需等待較多的時間片,而高優(yōu)先級的節(jié)點(diǎn)需等待較少的時間片 ,這個時間片加在P-概率時間片之前,。非優(yōu)先級的節(jié)點(diǎn)必須等待優(yōu)先級時間片都完成后, 再等待P-概率時間片后發(fā)送,。因此,加入優(yōu)先級的節(jié)點(diǎn)總比非優(yōu)先級的節(jié)點(diǎn)有更快的響應(yīng)時間。
3.LonTalk對多介質(zhì)的支持
LonTalk協(xié)議對各種介質(zhì)的支持是獨(dú)立的,。Lon的神經(jīng)元芯片可以容許的通信介質(zhì)類型非常廣泛,如雙絞線,、電力線、無線電,、紅外線,、同軸電纜、光纖等,。
4.LonTalk對多通道的支持
一個通道是指在物理上能獨(dú)立發(fā)送報文(不需要轉(zhuǎn)發(fā))的一段介質(zhì),。LonTalk規(guī)定,一個通道至多有32385個節(jié)點(diǎn),一個網(wǎng)絡(luò)可以由一個或多個通道組成,通道之間通過路由器來連接。
這樣,不僅可實(shí)現(xiàn)多介質(zhì)在同一網(wǎng)絡(luò)上的連接,而且可減輕一個通道的網(wǎng)絡(luò)信道過于擁擠,。
5.LonTalk對大網(wǎng)絡(luò)的支持
網(wǎng)絡(luò)地址可以有以下三層結(jié)構(gòu):
第一層結(jié)構(gòu)是域,。域的結(jié)構(gòu)可以保證在不同的域中通信彼此獨(dú)立,。例如,不同的應(yīng)用節(jié)點(diǎn)共存在同一通信介質(zhì)中(如無線電),不同的域的區(qū)分可以保證它們的應(yīng)用完全獨(dú)立,不會彼此干擾。
第二層結(jié)構(gòu)是子網(wǎng),。每個域最多有255個子網(wǎng),一個子網(wǎng)可以是一個或多個通道的邏輯分組 ,有一種子網(wǎng)層的智能路由器產(chǎn)品可以實(shí)現(xiàn)子網(wǎng)間的數(shù)據(jù)交換,。
第三層結(jié)構(gòu)是節(jié)點(diǎn)。每個子網(wǎng)最多有127個節(jié)點(diǎn),所以一個域最多有255×127=32385個節(jié)點(diǎn),。任一節(jié)點(diǎn)可以分屬一個或兩個域,容許一個節(jié)點(diǎn)作為兩個域之間的網(wǎng)關(guān),也容許一個傳感器節(jié)點(diǎn)將采集到的數(shù)據(jù)分別發(fā)向兩個不同的域,。
節(jié)點(diǎn)也可以被分組,一個分組在一個域中跨越幾個子網(wǎng)或通道。在一個域中最多有256 個分組,每個分組對需應(yīng)答服務(wù)最多有64個節(jié)點(diǎn),而無應(yīng)答服務(wù)的節(jié)點(diǎn)個數(shù)不限,。一個節(jié)點(diǎn)可以分屬15個分組去接收數(shù)據(jù),。分組結(jié)構(gòu)可以使一個報文同時被多個節(jié)點(diǎn)接收。
另外,每個神經(jīng)元芯片有一個獨(dú)一無二的48位ID地址,。這個地址由廠方規(guī)定,一般只在網(wǎng)絡(luò)安裝和配置時使用,可以作為產(chǎn)品的序列號,。
通道并不影響網(wǎng)絡(luò)的地址結(jié)構(gòu),域、子網(wǎng)和分組都可以跨越多個通道,。
6.LonTalk的報文服務(wù)
LonTalk協(xié)議提供了四種類型的報文服務(wù):
·應(yīng)答方式或端對端的應(yīng)答服務(wù):當(dāng)一個節(jié)點(diǎn)發(fā)送報文到另一個節(jié)點(diǎn)或分組時,每個接收到報文的節(jié)點(diǎn)都分別向發(fā)送方應(yīng)答,。如果發(fā)送方在應(yīng)答時間內(nèi)沒有收到全部應(yīng)答,則重新發(fā)送該報文,。重發(fā)次數(shù)和應(yīng)答時間都是可選的,。報文應(yīng)答服務(wù)由網(wǎng)絡(luò)處理器完成,不必由應(yīng)用程序來干預(yù)。報文ID號確保節(jié)點(diǎn)不會收到重復(fù)的報文,。
·請求/響應(yīng)方式:當(dāng)一個節(jié)點(diǎn)發(fā)送報文到另一個節(jié)點(diǎn)或分組時,每個接收到報文的節(jié)點(diǎn)都分別向發(fā)送方響應(yīng),。如果發(fā)送方在響應(yīng)時間內(nèi)沒有收到全部響應(yīng),則重新發(fā)送該報文。重發(fā)次數(shù)和響應(yīng)時間都是可選的,。報文響應(yīng)服務(wù)由應(yīng)用處理器完成,可以包含數(shù)據(jù),是由應(yīng)用處理器完成的,適合遠(yuǎn)程過程調(diào)用和客戶/服務(wù)器的應(yīng)用,。
·非應(yīng)答重發(fā)方式:當(dāng)一個節(jié)點(diǎn)發(fā)送報文到另一個節(jié)點(diǎn)或分組時,不需每個接收到報文的節(jié)點(diǎn)向發(fā)送方應(yīng)答或響應(yīng),而是重復(fù)多次發(fā)送同一報文,使報文盡量可靠地被接收方收到。這種方式適于節(jié)點(diǎn)較多的分組的廣播發(fā)送,從而避免因節(jié)點(diǎn)響應(yīng)而使網(wǎng)絡(luò)過載,。
·非應(yīng)答方式:當(dāng)一個節(jié)點(diǎn)發(fā)送報文到另一個節(jié)點(diǎn)或分組時,不需每個接收到報文的節(jié)點(diǎn)向發(fā)送方應(yīng)答或響應(yīng),也不必重復(fù)多次發(fā)送同一報文,只發(fā)一次即可,。這種方式適合對可靠性要求不高,但報文長度較長、需要速度較高的報文,。
7.LonTalk網(wǎng)絡(luò)認(rèn)證
LonTalk支持報文認(rèn)證,。收發(fā)雙方在網(wǎng)絡(luò)安裝時約定一個6字節(jié)的認(rèn)證字,接收方在接收時判斷報文是否經(jīng)過發(fā)送方認(rèn)證,只有經(jīng)過發(fā)送方認(rèn)證的報文方可接收。
8.碰撞檢測
Lon支持在通信介質(zhì)上的硬件碰撞檢測(如雙絞線),。LonTalk可以將正在發(fā)送的碰撞報文自動取消,重新再發(fā),。如果沒有碰撞檢測,若碰撞發(fā)生,只有到響應(yīng)或應(yīng)答超時時才會重發(fā)報文。
四,、LonWorks與現(xiàn)場總線
按照國際電工委員會(IEC)的敘述,把低級或底層的工業(yè)數(shù)據(jù)總線定名為現(xiàn)場總線,。其基本要求包括:以串行通信的方式取代傳統(tǒng)的4~20mA的信號傳輸,并且一條現(xiàn)場總線可為眾多的可尋址的現(xiàn)場設(shè)備實(shí)現(xiàn)多點(diǎn)連接;支持底層的現(xiàn)場智能設(shè)備與高層的系統(tǒng)利用公用介質(zhì)交換信息;現(xiàn)場總線的協(xié)議在物理層和鏈路層與OSI模型有相同的含義。目前,一些公司,、廠商所推出的現(xiàn)場總線產(chǎn)品,其基本要求大體與上述內(nèi)容類似,。
從前面對LonWorks的分析介紹可以看出,LonWorks的性能覆蓋了IEC關(guān)于現(xiàn)場總線的推薦規(guī)范,而且應(yīng)用更加靈活。
①神經(jīng)元芯片是一個很好的低成本的現(xiàn)場總線處理器,。它處理現(xiàn)場互聯(lián)的全部任務(wù),還能處理現(xiàn)場傳感器,、執(zhí)行器的動作,以及簡單的數(shù)字邏輯運(yùn)算等現(xiàn)場任務(wù)。
?、谝訧EEE P1118(ver 3.0)制定的現(xiàn)場總線功能要求為例,與LonWorks的性能做一比較 :在物理層上的比較見表2,在鏈路層上的比較見表3,在應(yīng)用層上的比較見表4,。
③LonTalk是OSI參考模型面向現(xiàn)場對象應(yīng)用的一個子集,。它比現(xiàn)場總線歷來推薦的功能覆蓋面更廣,如支持多介質(zhì),、大網(wǎng)絡(luò)。這為工廠制造自動化的測,、控,、管一體化提供了全局性的解決方案,而且都可通過固化有LonTalk協(xié)議的神經(jīng)元芯片實(shí)現(xiàn),只需用一個神經(jīng)元和某種網(wǎng)絡(luò)的專用控制器相連構(gòu)成的橋接器同生產(chǎn)管理級、廠級互聯(lián),。另外,它比現(xiàn)場總線以往提供的應(yīng)用服務(wù)更友好,、更方便,用戶只需按對象來定義和連接網(wǎng)絡(luò)變量。
?、躄onWorks支持各種拓?fù)浣Y(jié)構(gòu),不限于總線,選擇不同的收發(fā)器可構(gòu)成星形,、環(huán)形、樹形或混合形結(jié)構(gòu);而尋址由協(xié)議來解決,這樣現(xiàn)場互聯(lián)更加靈活,。
綜上所述,LonWorks是一種全新的現(xiàn)場總線,。它為全分散式的現(xiàn)場設(shè)備提供了可互操作的控制網(wǎng)絡(luò),已獲得世界上140多個公司、組織的確認(rèn),并組成LonMark協(xié)會,。目前,有1500家組織選擇它,在各行各業(yè)成功地構(gòu)成了應(yīng)用系統(tǒng),。