李果萍 成 龍 柴 波
摘 要:提出一種基于SDLC協(xié)議的RS 485總線的通信控制器的設(shè)計(jì)思想。首先介紹SDLC協(xié)議、RS 485協(xié)議。接著介紹RS 485總線的工作方式及RS 485在使用過程中需要注意的問題。因其通信方式大多是半雙工通信,解決其總線數(shù)據(jù)傳輸?shù)臎_突,即通信故障,就成了提高工作可靠性的關(guān)鍵和重點(diǎn)。這里就如何避免RS 485通信故障做了分析。
關(guān)鍵詞:SDLC協(xié)議;RS 485;通信控制器;工作方式;通信故障
中圖分類號(hào):TP274 文獻(xiàn)標(biāo)識(shí)碼:B 文章編號(hào):1004-373X(2009)04-152-03
Design of Synchronous RS 485 Bus Controller Based on SDLC Protocol
LI Guoping,CHENG Long,CHAI Bo
(Micro-electronics Technology Institute,Xi′an,710075,China)
Abstract:The design thoughts of RS 485 communication controller based on SDLC,SDLC protocol and RS 485 protocol are introduced.The problems of working methods used in the process of RS 485 are needed to pay attention.Most of its means of communication is half-duplex communications,data transmission bus to resolve their conflict,that is communication failures,became key and focus ofimproving their reliability.How to avoid communication fault of RS 485 is analysed.
Keywords:SDLC protocol;RS 485;communication controller;working method;communication fault
在分布式系統(tǒng)中,多機(jī)相互通信是比較常見的一種方式,而通信的關(guān)鍵不僅是能夠傳輸數(shù)據(jù),更重要的是能夠準(zhǔn)確傳輸,并且能自動(dòng)檢錯(cuò)和用一定的方式來糾正,尤其在現(xiàn)在研發(fā)的導(dǎo)彈系統(tǒng)中,高可靠性與數(shù)據(jù)傳輸?shù)母咝允菍?dǎo)彈系統(tǒng)必備的條件。RS 485標(biāo)準(zhǔn)作為一種多點(diǎn)、差分?jǐn)?shù)據(jù)傳輸?shù)碾姎庖?guī)范,其接口大多連接成半雙工通信方式,他所具有的噪聲抑制能力、數(shù)據(jù)傳輸速率、電纜長度和可靠性,是其他標(biāo)準(zhǔn)無法比擬的,因而多次被用在現(xiàn)代武器裝備系統(tǒng)中。這里介紹的基于SDLC協(xié)議的同步RS 485總線通信控制器的實(shí)現(xiàn),即是某武器裝備上的一個(gè)重要單元。
1 SDLC協(xié)議和RS 485總線協(xié)議介紹
1.1 SDLC協(xié)議簡(jiǎn)介
同步數(shù)據(jù)鏈路控制(SDLC)是19世紀(jì)70年代IBM公司開發(fā)的傳輸協(xié)議,它取代了二進(jìn)制同步(BSC)協(xié)議。SDLC等價(jià)于網(wǎng)絡(luò)通信中的開放系統(tǒng)互連(OSI)模型的第二層。這一層協(xié)議保證數(shù)據(jù)單元從一個(gè)網(wǎng)絡(luò)端點(diǎn)成功到達(dá)下一個(gè),流到正確位置。
SDLC使用通信初級(jí)站-次級(jí)站模型。在IBM大型機(jī)網(wǎng)絡(luò)中,主機(jī)通常是初級(jí)站和工作站,其他設(shè)備為次級(jí)站,各個(gè)次級(jí)站有自身的地址。多個(gè)設(shè)備或次級(jí)站使用多點(diǎn)排列連接到一條公共線。SDLC也可用于點(diǎn)到點(diǎn)通信,它主要用在寬域網(wǎng)(WAN)的遠(yuǎn)程通信。
SDLC是國際標(biāo)準(zhǔn)化組織(ISO)的標(biāo)準(zhǔn)數(shù)據(jù)鏈協(xié)議高層次數(shù)據(jù)鏈控制(HDLC)的基礎(chǔ)。它成為IBM的系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)(SNA)和系統(tǒng)應(yīng)用結(jié)構(gòu)(ASS)的一部分,現(xiàn)在仍然廣泛應(yīng)用于大型機(jī)數(shù)據(jù)鏈控制中。
1.2 RS 485總線協(xié)議簡(jiǎn)介
電子工業(yè)協(xié)會(huì)EIA于1983 年制訂并發(fā)布RS 485 標(biāo)準(zhǔn),并經(jīng)TIA通信工業(yè)協(xié)會(huì)修訂后命名為TIA/EIA-485-A,習(xí)慣地稱之為RS 485。RS 485是為彌補(bǔ)RS 232通信距離短、速率低等缺點(diǎn)而產(chǎn)生的。其只規(guī)定了平衡驅(qū)動(dòng)器和接收器的電特性,而沒有規(guī)定接插件、傳輸電纜和應(yīng)用層通信協(xié)議。因而在當(dāng)時(shí)看來是一種相對(duì)經(jīng)濟(jì),具有相當(dāng)高噪聲抑制,相對(duì)高的傳輸速率,傳輸距離遠(yuǎn)和寬的通信平臺(tái)。
RS 485接口大多連接成半雙工通信方式,其主要特點(diǎn)有:平衡差分傳輸,多點(diǎn)通信; 雙絞線傳輸。理想情況下最大輸入電流為0.18~110 mA(-7~+12 V);最大總線負(fù)載為32 個(gè)單位負(fù)載(UL);最大傳輸速率為10 Mb/s;最大電纜長度為121 912 m(4 000 ft);差分輸入范圍為-7~+12 V。
RS 485總線在通信距離為幾十米到上千米時(shí),廣泛采用RS 485 串行總線標(biāo)準(zhǔn)。RS 485采用平衡發(fā)送和差分接收,因此具有抑制共模干擾的能力。加上總線收發(fā)器具有高靈敏度,能檢測(cè)低至200 mV的電壓,故傳輸信號(hào)能在千米以外得到恢復(fù)。 RS 485采用半雙工工作方式,任何時(shí)候只能有一點(diǎn)處于發(fā)送狀態(tài),因此,發(fā)送電路需由使能信號(hào)加以控制。RS 485用于多點(diǎn)互連時(shí)非常方便,可以省掉許多信號(hào)線。應(yīng)用RS 485 可以聯(lián)網(wǎng)構(gòu)成分布式系統(tǒng),其允許最多并聯(lián)32臺(tái)驅(qū)動(dòng)器和32臺(tái)接收器。
2 設(shè)計(jì)思想及原理
眾所周知,經(jīng)常接觸的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)有星型、環(huán)型和總線型3種結(jié)構(gòu)。但是RS 485有其特殊的性能限制了該設(shè)計(jì)只能采用總線型結(jié)構(gòu),如圖1所示。
在該設(shè)計(jì)中,采用多站點(diǎn)通信方式,它與一般的通信方式不同,這里采用的是主從結(jié)構(gòu)式,也就是說在這多點(diǎn)通信過程中,只設(shè)一個(gè)主站,其他都為從站。在通信過程中,從站只能與主站之間進(jìn)行數(shù)據(jù)交換,而從站與從站之間要進(jìn)行數(shù)據(jù)交換只能通過主站進(jìn)行中轉(zhuǎn)。每一個(gè)站都有他自身的站地址,通信開始所有從站處于接收狀態(tài),等待主站的呼叫。當(dāng)主站以命令包的形式向鏈路上某一從站發(fā)出命令時(shí),所有從站接收命令幀中的站地址信息,并與自己站地址相比較,如果相符,說明主站在呼叫自己,從而接收并解析和執(zhí)行命令;之后從站應(yīng)向主站發(fā)回應(yīng)答信息數(shù)據(jù)后以結(jié)束本次通信,否則不予理睬,繼續(xù)等待接收。在通信結(jié)束后,從站繼續(xù)處于接收狀態(tài),等待命令。
3 多站點(diǎn)實(shí)現(xiàn)方式
3.1 工作方式
常見的RS 485站點(diǎn)多為2個(gè)站點(diǎn),這里給出多站點(diǎn)下RS 485的工作方式。RS 485多站通信方式一般分為正常模式、監(jiān)聽模式和廣播模式。
RS 485多站通信過程中,主站與從站之間進(jìn)行數(shù)據(jù)交換,根據(jù)通信協(xié)議規(guī)定,每一個(gè)站都有自己的站地址。主站在發(fā)送數(shù)據(jù)時(shí)幀頭是從站的站地址,在正常模式下,從站只能接受到跟自己地址相匹配的一對(duì)一數(shù)據(jù),如果跟自己地址不匹配則只能等待,直到等到跟自己地址匹配再開始接收數(shù)據(jù)。而監(jiān)聽模式則是從站地址為0XFF,不管主站的地址是什么,從站都能收到數(shù)據(jù),這也就是所謂的監(jiān)聽。相對(duì)于監(jiān)聽來說廣播模式則相反,廣播模式是主站設(shè)置為0XFF,不管從站的地址是什么,從站都能收到主站發(fā)過來的數(shù)據(jù)。
通過以上3種方式,RS 485多站點(diǎn)通信方式的測(cè)試具有有效性與合理性。
3.2 工作流程
為了使通信協(xié)議簡(jiǎn)單,通信可靠,在通信系統(tǒng)中常采用“主-從”及“命令-應(yīng)答”方式。即每次通信工作均由“主站”發(fā)出命令幀,由“從站”返回響應(yīng)幀。在定義通信協(xié)議時(shí),還應(yīng)明確:明確幀的最大長度和最小長度;明確幀是周期或非周期傳輸;若為周期性,明確發(fā)送方周期時(shí)間及幀間最大時(shí)間間隔。
另外,協(xié)議中還需定義通信失敗的處理方法,如:本幀通信出錯(cuò)要求重試和重試的次數(shù);重試仍然出錯(cuò),則采用重新初始化通信接口或切換通信通道;如果上述兩點(diǎn)措施后仍然出錯(cuò),則報(bào)告通信故障,停止。為此該系統(tǒng)的工作流程如圖2所示。
在測(cè)試過程中,通過更改波特率(abaud,bbaud)來測(cè)試對(duì)主從站的影響。軟件實(shí)現(xiàn)如下:
void initial485(){ …
*abaud=0x04;//波特率
…
*aaddr=0x43;//站地址
delay2(5);
*amodel=0x06;//FIFO 方式或者RAM方式
…
*bbaud=0x04;
…}
因?yàn)樵谠撛O(shè)計(jì)中,RS 485有2路通信,所以A,B通道都要初始化。
4 使用RS 485需注意的問題
在使用RS 485總線過程中,難免有些因素(如可靠性及通信速度)會(huì)因?yàn)橥饨鐥l件的不同而受到不同的影響,設(shè)計(jì)中應(yīng)該盡量避免這些因素產(chǎn)生不良影響。
4.1 在通信電纜中的信號(hào)反射
在通信過程中,有2種信號(hào)會(huì)導(dǎo)致信號(hào)反射:阻抗不連續(xù)和阻抗不匹配。阻抗不連續(xù),信號(hào)在傳輸線末端突然遇到電纜阻抗很小甚至沒有,信號(hào)在這個(gè)地方就會(huì)引起反射。這種信號(hào)反射的原理與光從一種媒質(zhì)進(jìn)入另一種媒質(zhì)要引起反射是相似的。要消除這種反射的方法,就必須在電纜的末端跨接一個(gè)與電纜的特性阻抗同樣大小的終端電阻,使電纜的阻抗連續(xù)。由于信號(hào)在電纜上的傳輸是雙向的,因此,在通信電纜的另一端可跨接一個(gè)同樣大小的終端電阻。如圖3所示。
從理論上分析,在傳輸電纜的末端只要跨接了與電纜特性阻抗相匹配的終端電阻,就再也不會(huì)出現(xiàn)信號(hào)反射現(xiàn)象。但是,在實(shí)際應(yīng)用中,由于傳輸電纜的特性阻抗與通信波特率等應(yīng)用環(huán)境有關(guān),特性阻抗不可能與終端電阻完全相等,因此或多或少地還會(huì)存在信號(hào)反射。引起信號(hào)反射的另一個(gè)原因是數(shù)據(jù)收發(fā)器與傳輸電纜之間的阻抗不匹配。這種原因引起的反射,主要表現(xiàn)在通信線路處在空閑方式時(shí),整個(gè)網(wǎng)絡(luò)數(shù)據(jù)混亂。信號(hào)反射對(duì)數(shù)據(jù)傳輸?shù)挠绊懀瑲w根結(jié)底是因?yàn)榉瓷湫盘?hào)觸發(fā)了接收器輸入端的比較器,使接收器收到了錯(cuò)誤的信號(hào),導(dǎo)致CRC校驗(yàn)錯(cuò)誤或整個(gè)數(shù)據(jù)幀錯(cuò)誤。
4.2 在通信電纜中的信號(hào)衰減
第二個(gè)影響信號(hào)傳輸?shù)囊蛩厥切盘?hào)在電纜的傳輸過程中會(huì)衰減。一條傳輸電纜可以看作由分布電容、分布電感和電阻聯(lián)合組成的等效電路。電纜的分布電容C主要是由雙絞線的兩條平行導(dǎo)線產(chǎn)生。導(dǎo)線的電阻在這里對(duì)信號(hào)的影響很小,可以忽略不計(jì)。信號(hào)的損失主要是由于電纜的分布電容和分布電感組成的LC低通濾波器。
4.3 分布電容對(duì)RS 485總線傳輸性能的影響
電纜的分布電容主要由雙絞線中兩條平行導(dǎo)線產(chǎn)生。另外,導(dǎo)線與地之間也存在分布電容,雖然很小,但在分析時(shí)也不能忽視。分布電容對(duì)總線傳輸性能影響的,主要原因是總線上傳輸?shù)男盘?hào)是基波信號(hào),信號(hào)的表達(dá)方式只有“1”和“0”。在特殊字節(jié)中,如0x01,信號(hào)“0”使得分布電容有足夠的充電時(shí)間,而信號(hào)“1”到來時(shí),由于分布電容中的電荷來不及放電,(Vin+)-(Vin-)還大于200 mV,結(jié)果使接收誤認(rèn)為是“0”,而最終導(dǎo)致CRC校驗(yàn)錯(cuò)誤,整個(gè)數(shù)據(jù)幀傳輸錯(cuò)誤。
由于總線上的分布影響,導(dǎo)致數(shù)據(jù)傳輸錯(cuò)誤,從而使整個(gè)網(wǎng)絡(luò)性能降低。解決這個(gè)問題有2
種方法:降低數(shù)據(jù)傳輸?shù)牟ㄌ芈?;使用分布電容小的電纜,提高傳輸線的質(zhì)量。
5 結(jié) 語
這里主要介紹了基于SDLC協(xié)議的同步RS 485總線數(shù)據(jù)通信控制器的設(shè)計(jì)思想及使用RS 485需要注意的一些問題。RS 485總線具有實(shí)時(shí)性好,造價(jià)低,可靠性高等特點(diǎn),因而現(xiàn)在已被普遍應(yīng)用在工業(yè)及軍事方面。
參 考 文 獻(xiàn)
[1]B&B; Electronics.RS 422 and RS 485 Application Note.1997.
[2]曹志錦,王永梁.基于RS 485的多級(jí)串行通信實(shí)驗(yàn)系統(tǒng)設(shè)計(jì)及應(yīng)用[J].實(shí)驗(yàn)技術(shù)與管理,2002,19(5):65-67.
[3]柳義筠.基于RS 485的多機(jī)通信的應(yīng)用[J].電腦學(xué)習(xí),2006(4):29-30.
[4]李朝青.PC機(jī)及單片機(jī)數(shù)據(jù)通信技術(shù).北京:北京航空航天大學(xué)出版社,2002.
[5]莫登耀,廖胖昕,張阿卜.微機(jī)USB和RS 485通信接口的軟硬件設(shè)計(jì)[J].廈門大學(xué)學(xué)報(bào):自然科學(xué)版,2005(6):273-276.
[6]陳鐵軍,謝春萍.PC機(jī)與RS 485總線多機(jī)串行通信的軟硬件設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2007,30(5):103-105.
[7]吳軍輝,林開顏.RS 485總線通信避障及其多主發(fā)送的研究[J].測(cè)控技術(shù),2002(8):41-43.
[8]田立志,王美忠.RS 485總線使用中的問題與編程[J].設(shè)備管理與維修,2007(7):32-33.
[9]美國通信工業(yè)協(xié)會(huì)標(biāo)準(zhǔn).TIA-485-A-1998 R2003.1998.
[10]沈紅星.一種基于RS 485總線的網(wǎng)絡(luò)協(xié)議及其實(shí)現(xiàn)方法.單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2003(6):71-73.
[11]李新超,李繼凱.基于RS 485 總線的數(shù)據(jù)采集處理系統(tǒng).現(xiàn)代電子技術(shù),2007,30(12):124-126.
作者簡(jiǎn)介
李果萍 女,碩士研究生。研究方向?yàn)橛?jì)算機(jī)控制技術(shù)。
成 龍 男,碩士研究生。
柴 波 男,副總工程師,研究生導(dǎo)師。研究方向?yàn)橛?jì)算機(jī)控制技術(shù)。