曾祝林,劉鳳芳
1 引言
ARCNET最初由美國Datapoint公司于1977年成功開(kāi)發(fā)并用于辦公局域網(wǎng)中,后來(lái)以太網(wǎng)以其更快的傳輸速率和大量的數據傳輸量使辦公室網(wǎng)絡(luò )的需求由ARCNET轉向以太網(wǎng)。而ARCNET時(shí)間的確定性,數據傳輸的可靠性和組網(wǎng)的靈活性,使其在工業(yè)實(shí)時(shí)控制系統中找到了新的應用途徑―嵌入式控制系統的應用。
ARCNET廣泛應用于實(shí)時(shí)控制的各個(gè)領(lǐng)域,諸如印刷、電力、船舶、鐵路運輸、樓宇自動(dòng)化等領(lǐng)域都可以見(jiàn)到它的身影。
ARCNET常常嵌入到具體系統中,國外很多儀器設備都設有ARCNET網(wǎng)絡(luò )接口標準。目前全球已有大約1000萬(wàn)個(gè)ARCNET節點(diǎn)應用于工業(yè)控制領(lǐng)域中[2]。國內的應用也有一定發(fā)展,一些技術(shù)人員開(kāi)始嘗試用ARCNET網(wǎng)絡(luò )構造實(shí)時(shí)控制系統,完成國外進(jìn)口產(chǎn)品的升級換代。但其發(fā)展還遠遠不夠,為了更好地推廣ARCNET技術(shù),促進(jìn)工業(yè)自動(dòng)化的發(fā)展,本文從ARCNET的技術(shù)及應用等角度,加以介紹。
2 ARCNET工作機制
ARCNET局域網(wǎng)采用了優(yōu)化的令牌總線(xiàn)協(xié)議(IEEE802.4),除了具有令牌總線(xiàn)網(wǎng)的一般特點(diǎn)外,還具有如下特點(diǎn):
① 網(wǎng)絡(luò )中每個(gè)節點(diǎn)保存有下一個(gè)節點(diǎn)的邏輯地址,可以生成一個(gè)網(wǎng)絡(luò )活動(dòng)節點(diǎn)地址表。
② 為了避免目的節點(diǎn)沒(méi)有空閑緩沖區而引起信息的丟失,設置了空閑緩沖區查詢(xún)幀,通過(guò)查詢(xún)可以減少不必要的數據重傳,提高了網(wǎng)絡(luò )運行效率。
ARCNET是一個(gè)真正開(kāi)放標準協(xié)議,1999年成為美國國家標準ANSI/ATA878.1。從OSI參考模型來(lái)看,它提供了網(wǎng)絡(luò )的物理層和數據鏈路層服務(wù),說(shuō)明ARCNET能方便地在兩個(gè)節點(diǎn)之間實(shí)現數據包的發(fā)送和接收。
2.1 邏輯環(huán)的建立
在A(yíng)RCNET網(wǎng)絡(luò )中,每個(gè)節點(diǎn)均有一個(gè)唯一的MAC(Medium Access Control)地址,其取值范圍為0~255,其中0是網(wǎng)絡(luò )廣播地址。每個(gè)節點(diǎn)在系統初始化或重構時(shí)確定它在邏輯環(huán)中的下一個(gè)節點(diǎn),并將下一個(gè)節點(diǎn)的ID值保存在各自專(zhuān)用的寄存器NID(Next ID)中,并按MAC地址從小到大的順序構成一個(gè)邏輯環(huán)路。圖1是一個(gè)典型的4個(gè)節點(diǎn)的邏輯環(huán)。
a 網(wǎng)絡(luò )拓撲結構 b 邏輯環(huán)
圖1 邏輯環(huán)的建立
令牌作為一組獨特的信號序列,沿著(zhù)邏輯環(huán)從一個(gè)節點(diǎn)傳向邏輯鄰居(而非物理鄰居),因而與節點(diǎn)在網(wǎng)絡(luò )上的物理位置以及網(wǎng)絡(luò )的拓撲結構無(wú)關(guān)。
2.2 節點(diǎn)的進(jìn)網(wǎng)或退網(wǎng)
當一個(gè)節點(diǎn)加電或840ms(2.5Mbps速率下)沒(méi)有收到令牌時(shí),它即發(fā)出一個(gè)重構脈沖,使總線(xiàn)終止一切活動(dòng),造成令牌丟失,從而引發(fā)系統重構。經(jīng)過(guò)重構形成新的邏輯環(huán),新節點(diǎn)也就加入網(wǎng)絡(luò )中。重構時(shí)間的多少取決于網(wǎng)上節點(diǎn)的多少和數據傳輸速率的大小,通常為20~30ms。
當一個(gè)節點(diǎn)由于故障或斷電而退出網(wǎng)絡(luò )時(shí)不需要進(jìn)行整個(gè)邏輯環(huán)的重構,因為當邏輯環(huán)的上一個(gè)節點(diǎn)(存有退網(wǎng)節點(diǎn)的ID值)向它發(fā)送令牌時(shí),不可能收到它的響應,因而令牌發(fā)送者將它的NID值加1,重發(fā)令牌,直到收到響應,即找到邏輯環(huán)中新的下一個(gè)節點(diǎn)為止(實(shí)際上新的下一個(gè)節點(diǎn)就是故障節點(diǎn)在原邏輯環(huán)的下一個(gè)節點(diǎn)),節點(diǎn)的退網(wǎng)也就完成。
根據現場(chǎng)實(shí)際情況,多數網(wǎng)絡(luò )故障是節點(diǎn)故障,對于A(yíng)RCNET網(wǎng)絡(luò ),只需該節點(diǎn)退網(wǎng),即可保證網(wǎng)絡(luò )中其它節點(diǎn)正常工作。由于節點(diǎn)退網(wǎng)無(wú)需網(wǎng)絡(luò )重構,因而網(wǎng)絡(luò )故障恢復時(shí)間很短。
網(wǎng)絡(luò )中節點(diǎn)的增加或退出都是由網(wǎng)絡(luò )自動(dòng)完成,不需外界的介入。
2.3 數據的接收和發(fā)送
ARCNET局域網(wǎng)的數據傳輸速率為156.25K~10Mbps,其用戶(hù)數據的長(cháng)度為0~507字節,有兩種ARCNET數據幀模式,其中短幀模式用戶(hù)數據的最大長(cháng)度為253字節,長(cháng)幀模式用戶(hù)數據的最大長(cháng)度為507字節,只要按一定的格式將用戶(hù)數據寫(xiě)入協(xié)議控制器內置的2K RAM中,在數據發(fā)送時(shí),協(xié)議控制器會(huì )自動(dòng)將其組織到ARCNET的數據幀中。傳輸數據在協(xié)議控制器內置的2K RAM中的存放格式如圖2所示。
地址 短幀模式 長(cháng)幀模式
0 |
SID |
0 |
SID |
1 |
DID |
1 |
DID |
2 |
256-N |
2 |
0 |
. |
未用 |
3 |
512-N |
. |
DATA 1 |
. |
未用 |
. |
DATA 2 |
. |
DATA 1 |
. |
. |
. |
DATA 2 |
. |
. |
. |
. |
. |
DATA N-1 |
. |
DATA N-1 |
255 |
DATA N |
511 |
DATA N |
N為用戶(hù)數據的長(cháng)度;SID為源節點(diǎn)地址;DID為目的節點(diǎn)地址;DID為0表示廣播地址
圖2 傳輸數據在2K RAM中的存放格式
在數據傳送的過(guò)程中,一旦源節點(diǎn)CPU將待發(fā)的用戶(hù)數據寫(xiě)入協(xié)議控制器的內部RAM,在該節點(diǎn)持有令牌時(shí),相當于接收到令牌傳送幀(ITT,Invitation to Transmit,簡(jiǎn)稱(chēng)令牌),首先向目的節點(diǎn)發(fā)送一個(gè)空閑緩存查詢(xún)幀(FBE,Free Buffer Enquiry),查詢(xún)目的節點(diǎn)是否有足夠的接收緩存,目的節點(diǎn)如有,則回答一個(gè)確認幀(ACK, Acknowle-dgement),否則回答一個(gè)否認幀(NAK, Negative Acknowledgement)。源節點(diǎn)只有收到來(lái)自目的節點(diǎn)的ACK幀后才向其發(fā)送一個(gè)含有用戶(hù)數據的數據幀(PAC, Packet)。如果目的節點(diǎn)收到了數據,且通過(guò)了CRC校驗,則回送一個(gè)ACK幀,告訴源節點(diǎn)數據接收成功,否則目的節點(diǎn)不回發(fā)任何信息,導致源節點(diǎn)超時(shí),源節點(diǎn)認為數據發(fā)送失敗,等下一次收到令牌時(shí)重發(fā)該數據幀,至此節點(diǎn)傳輸過(guò)程結束,令牌被傳遞給下一個(gè)節點(diǎn)。圖3是節點(diǎn)156向節點(diǎn)255發(fā)送數據包的具體過(guò)程。
a 等待令牌信號 b 檢查是否可發(fā)送
c 可發(fā)送回答確認 d 送出數據
e 發(fā)送完成 f 令牌傳向下一個(gè)節點(diǎn)
圖3 數據的傳送過(guò)程
ARCNET支持廣播消息。廣播消息發(fā)出后無(wú)需回送確認幀,通過(guò)消息廣播一次可以將消息傳送給網(wǎng)絡(luò )上的所有節點(diǎn),可見(jiàn)廣播速度很快。
3 ARCNET局域網(wǎng)的性能分析
3.1 安全機制
ARCNET局域網(wǎng)通過(guò)下列幾種途徑確保數據的安全傳輸。
① 數據發(fā)送前通過(guò)發(fā)送FBE幀對目的節點(diǎn)的接收準備進(jìn)行確認。
② 每個(gè)數據幀中都含有一個(gè)CRC-16的幀校驗序列。
③ 一旦令牌丟失,將引發(fā)重構,自動(dòng)重構網(wǎng)絡(luò )。
④ 協(xié)議控制器提供強大的網(wǎng)絡(luò )故障診斷功能。
此外,由于協(xié)議控制器內置2K RAM,可儲存8頁(yè)短幀模式的用戶(hù)數據和4頁(yè)長(cháng)幀模式的用戶(hù)數據。即使節點(diǎn)CPU不讀取RAM中的數據,數據充滿(mǎn)RAM也無(wú)關(guān)緊要,當RAM要溢出時(shí),節點(diǎn)CPU在收到FBE幀時(shí)可回送NAK幀,使RAM不再接收數據,此時(shí)源節點(diǎn)將不再發(fā)送數據,將令牌傳送給下一節點(diǎn),因此,即使某一節點(diǎn)無(wú)法通信,整個(gè)網(wǎng)絡(luò )也不會(huì )鎖閉。
3.2 數據吞吐量和總開(kāi)銷(xiāo)
由于A(yíng)RCNET使用令牌傳送機制來(lái)仲裁節點(diǎn)對網(wǎng)絡(luò )的訪(fǎng)問(wèn)權,因而網(wǎng)絡(luò )性能在時(shí)間上是可預測的或可確定的。正是由于A(yíng)RCNET的時(shí)間可確定性,使其在工業(yè)實(shí)時(shí)控制領(lǐng)域中的應用經(jīng)久不衰。
反映局域網(wǎng)性能的一個(gè)重要參數就是“一個(gè)節點(diǎn)在能夠發(fā)送信息之前必須等待的時(shí)間”,這個(gè)參數表示了各個(gè)節點(diǎn)每秒鐘能發(fā)送的信息數,也就是網(wǎng)絡(luò )的吞吐量。
在2.5Mbps的數據傳輸速率下,ARCNET協(xié)議控制器執行簡(jiǎn)單的令牌傳送約需28.2µs(協(xié)議控制器響應時(shí)間12.6µs+令牌碼傳送時(shí)間15.6µs),因而令牌繞邏輯環(huán)一周的傳遞時(shí)間為28.2×Nnodes(µs),Nnodes為網(wǎng)絡(luò )中活動(dòng)節點(diǎn)數,一個(gè)節點(diǎn)從接收到令牌到發(fā)送數據為止,共需117.2µs的處理時(shí)間,傳輸每個(gè)字節需11個(gè)時(shí)鐘周期,一個(gè)字節的傳輸時(shí)間為11×400ns=4.4µs(速率為2.5Mbps時(shí),每個(gè)時(shí)鐘周期為100ns)。因此令牌繞邏輯環(huán)一周最壞情況下的傳輸時(shí)間是網(wǎng)上每個(gè)節點(diǎn)均有數據需要發(fā)送,其大小可表示為(28.2+117.2+4.4×Nbytes)×Nnodes(µs) (Nbytes為每個(gè)數據包發(fā)送的字節數),因而等待時(shí)間Tw的范圍為:
28.2×Nnodes µs<Tw<(145.4+4.4×Nbytes)×Nnodes µs
若一網(wǎng)絡(luò )中活動(dòng)節點(diǎn)數為100個(gè),令牌環(huán)繞一周約有2%的節點(diǎn)需要發(fā)送信息,其信息包的總長(cháng)度為100字節,則一個(gè)節點(diǎn)發(fā)送數據的等待時(shí)間為:
Tw=(145.4+4.4×100) ×100×2%+28.2×100×98%=3934µs
即一個(gè)節點(diǎn)在一秒鐘內可發(fā)送約256個(gè)信息包。事實(shí)上Datapoint公司的實(shí)驗表明即使在一個(gè)具有175個(gè)節點(diǎn)的重載網(wǎng)絡(luò )中,節點(diǎn)有信息發(fā)送的次數與總的具有令牌的次數之比也很少超過(guò)2%[3]。由此可見(jiàn)ARCNET局域網(wǎng)的性能是很高的。
此外從數據傳輸的效率來(lái)看,若一個(gè)節點(diǎn)信息包的長(cháng)度253字節,其傳輸總時(shí)間為145.4+4.4×253=1258.6µs,傳輸數據所花時(shí)間為4.4×253=1113.2µs,數據傳輸效率約為88%(1113.2/1258.6×100%=88%),也是相當高的。
3.3 幾種流行的現場(chǎng)總線(xiàn)協(xié)議比較
表1 幾種流行的現場(chǎng)總線(xiàn)協(xié)議的性能比較
從表中看出,這幾種網(wǎng)絡(luò )的性能各有特點(diǎn),PROFIBUS在PLC組網(wǎng)中應用較多,CAN在底層設備上的應用有著(zhù)鮮明的特點(diǎn),LONWORKS則具有支持較多的通信介質(zhì)和全面的上層軟件的特點(diǎn)。而ARCNET傳輸速度快,數據量大,支持多種網(wǎng)絡(luò )拓撲。此外,與工業(yè)以太網(wǎng)相比,ARCNET采用令牌傳遞方式數據傳遞更可靠。因此,從控制網(wǎng)絡(luò )層次上看,若將子系統分成三個(gè)層次:設備級、控制級和信息級,則ARCNET協(xié)議是控制級上的最佳選擇。
4 ARCNET局域網(wǎng)的組網(wǎng)技術(shù)
ARCNET局域網(wǎng)的組網(wǎng)相當靈活,用戶(hù)可以有多種組合。由于A(yíng)RCNET協(xié)議支持多種拓撲結構,諸如總線(xiàn)型、星型、樹(shù)型、環(huán)型網(wǎng)(ARCNET協(xié)議本身不支持環(huán)型,但經(jīng)過(guò)開(kāi)發(fā)商提供的特殊的集線(xiàn)器可以組成環(huán)網(wǎng))。至于傳輸介質(zhì),一般有三類(lèi)通信介質(zhì)可供選擇:同軸電纜、雙絞線(xiàn)和光纖,這些介質(zhì)各有利弊,如果網(wǎng)絡(luò )中使用有源HUB,則三種介質(zhì)可以混合使用,由此可見(jiàn)ARCNET組網(wǎng)的靈活性。
4.1 最大網(wǎng)段長(cháng)度的確定
對于局域網(wǎng)工程應用而言,網(wǎng)絡(luò )中網(wǎng)段的長(cháng)度是一個(gè)需要關(guān)注的問(wèn)題。網(wǎng)段是指一個(gè)完整的網(wǎng)絡(luò )中去掉HUB之后若干部分中的任何一個(gè),在無(wú)集線(xiàn)器網(wǎng)絡(luò )或總線(xiàn)網(wǎng)絡(luò )中,整個(gè)ARCNET網(wǎng)絡(luò )就是一個(gè)網(wǎng)段,所有節點(diǎn)都連接到這個(gè)網(wǎng)段上。而有集線(xiàn)器的網(wǎng)絡(luò )就有多個(gè)網(wǎng)段組成。一個(gè)網(wǎng)段允許的最大電纜長(cháng)度取決于所使用的收發(fā)器與電纜類(lèi)型,表2給出了幾種典型的電纜和網(wǎng)絡(luò )拓撲結構下網(wǎng)段上最大電纜的長(cháng)度和最大節點(diǎn)數的參考指標[5]。
表2 幾種典型的通信介質(zhì)和網(wǎng)絡(luò )拓撲結構下的網(wǎng)段長(cháng)度
注意:(1) 最大網(wǎng)段的長(cháng)度是以標準電纜的衰減和最壞情況下收發(fā)器的功率預算為基礎算出的;(2) 最大節點(diǎn)數不包括HUB端口(因為其內部無(wú)協(xié)議控制器),但是網(wǎng)段最大電纜長(cháng)度包括連接到HUB端口的電纜長(cháng)度。
4.2 協(xié)議控制器和收發(fā)器的選用
ARCNET的協(xié)議全部由硬件完成,稱(chēng)為ARCNET協(xié)議控制器,因而減輕了節點(diǎn)CPU的開(kāi)銷(xiāo)和軟件設計周期,提高了效率。
早期的協(xié)議控制器的收發(fā)緩存必須另外擴展2K RAM,因而其芯片的引腳較多,體積較大,而且對網(wǎng)絡(luò )的診斷功能不強。筆者曾使用COM90C65設計ARCNET局域網(wǎng),由于其診斷功能不足,只有通過(guò)增加軟件開(kāi)銷(xiāo)來(lái)加強網(wǎng)絡(luò )管理功能,但是效果不佳,在產(chǎn)生活動(dòng)節點(diǎn)地址表方面也頗費周折,而對令牌的監視則束手無(wú)策。盡管后來(lái)的COM90C66將2K RAM內置到協(xié)議控制內部,但是使用上還存在許多不便。近幾年推出的COM 200系列芯片,無(wú)論在結構上和功能上都作了很大改進(jìn),使開(kāi)發(fā)人員應用更為便捷,而且在組網(wǎng)上提供了更多的靈活性,如通過(guò)對內部寄存器的設置可靈活改變數據傳輸速率,根據網(wǎng)絡(luò )中節點(diǎn)數目的多少設置重構時(shí)間,以得到更短的重構時(shí)間,進(jìn)一步提升了系統的可靠性和快速性。通過(guò)某些寄存器的配合使用,較少的軟件開(kāi)銷(xiāo),便可得到網(wǎng)絡(luò )節點(diǎn)活動(dòng)地址表以及網(wǎng)絡(luò )的故障信息,大大方便了網(wǎng)絡(luò )管理。
在收發(fā)器方面與早期的為2.5Mbps優(yōu)化的雙脈沖收發(fā)器相比,收發(fā)器的尺寸減少了很多,而且可以工作在10Mbps的傳輸速率下,當傳輸距離相對較短時(shí),設計者可以選擇成本較低的RS-485收發(fā)器。市場(chǎng)上可以購買(mǎi)到日本Standard Microsystem公司生產(chǎn)的ARCNET收發(fā)器,它能很好地工作在10Mbps下,而且輸出電壓較早期有很大的減少。
4.3 軟件開(kāi)發(fā)
早期的ARCNET網(wǎng)絡(luò )部件的開(kāi)發(fā)環(huán)境不是很好,這在一定程度限制了它的應用。筆者當初設計ARCNET應用系統時(shí),網(wǎng)絡(luò )裝置的調試和應用程序的開(kāi)發(fā)占用了許多精力。如今ARCNET開(kāi)發(fā)商對這些環(huán)節做了很大改進(jìn),有很多的開(kāi)發(fā)工具可供選擇。
根據應用層面和使用人員的層次,開(kāi)發(fā)商們提供了靈活的部件。如各種類(lèi)型的ARCNET網(wǎng)卡和豐富的ARCNET集線(xiàn)器可供用戶(hù)選擇,并提供相應的驅動(dòng)程序。其中的空協(xié)議棧驅動(dòng)是嵌入式網(wǎng)絡(luò )普遍采用的方式,在這種方式中,數據鏈路層可以直接和應用層對話(huà),用戶(hù)在應用程序中根據自己的需要定義協(xié)議。當傳輸速度非常重要,而與其他系統的連通性要求不高時(shí),這種方式是最好的選擇。
如果用戶(hù)自行設計網(wǎng)卡,則提供基于PC機的調試軟件和驅動(dòng)程序的源代碼供用戶(hù)參考。更為便捷的是某些供應商還提供開(kāi)發(fā)裝置的仿真板和網(wǎng)絡(luò )分析儀,以方便設計人員分析網(wǎng)絡(luò )的性能,進(jìn)一步縮短開(kāi)發(fā)周期。
5 結語(yǔ)
由于A(yíng)RCNET網(wǎng)絡(luò )具有傳輸時(shí)間的確定性,網(wǎng)絡(luò )組建的靈活性和數據傳輸的可靠性,在實(shí)時(shí)控制系統中有著(zhù)廣泛的應用,甚至有觀(guān)點(diǎn)提出ARCNET已成為現場(chǎng)總線(xiàn)技術(shù)應用的三個(gè)層次中不可或缺的部分。國內的設計人員也開(kāi)始關(guān)注ARCNET網(wǎng)絡(luò )技術(shù),并在設備改造和國外配件的升級換代方面做了成功的嘗試。筆者希望通過(guò)本文的介紹,起到拋磚引玉的作用,促進(jìn)ARCNET在國內的進(jìn)一步應用,以豐富現場(chǎng)總線(xiàn)控制技術(shù)在我國的發(fā)展。