1 問題的提出
在應用係統中,RS-485半雙工異步通信總線是被各個研發機構廣泛使用的數據通信總線,它往往應用在集中控製樞紐與分散控製單元之間。係統簡圖如圖1所示。
圖1. RS-485係統示意圖
由you於yu實shi際ji應ying用yong係xi統tong中zhong,往wang往wang分fen散san控kong製zhi單dan元yuan數shu量liang較jiao多duo,分fen布bu較jiao遠yuan,現xian場chang存cun在zai各ge種zhong幹gan擾rao,所suo以yi通tong信xin的de可ke靠kao性xing不bu高gao,再zai加jia上shang軟ruan硬ying件jian設she計ji的de不bu完wan善shan,使shi得de實shi際ji工gong程cheng應ying用yong中zhong如ru何he保bao障zhangRS-485總線的通信的可靠性成為各研發機構的一塊心病。
在使用RS-485總線時,如果簡單地按常規方式設計電路,在實際工程中可能有以下兩個問題出現。一是通信數據收發的可靠性問題;二是在多機通信方式下,一個節點的故障(如死機),往往會使得整個係統的通信框架崩潰,而且給故障的排查帶來困難。
針對上述問題,我們對485總線的軟硬件采取了具體的改進措施
2 硬件電路的設計
現以8031單片機自帶的異步通信口,外接75176芯片轉換成485總線為例。其中為了實現總線與單片機係統的隔離,在8031的異步通信口與75176之間采用光耦隔離。電路原理圖如圖2所示。
圖 2 改進後的485通信口原理圖
充分考慮現場的複雜環境,在電路設計中注意了以下三個問題。
2.1 SN75176 485芯片DE控製端的設計
由於應用係統中,主機與分機相隔較遠,通信線路的總長度往往超過400米,而分機係統上電或複位又常常不在同一個時刻完成。如果在此時某個75176的DE端電位為“1”,那麼它的485zongxianshuchujianghuichuyufasongzhuangtai,yejiushizhanyongletongxinzongxian,zheyangqitadefenjijiuwufayuzhujijinxingtongxin。zhezhongqingkuangyouqibiaoxianzaimougefenjichuxianyichangqingkuangxia(死機),會使整個係統通信崩潰。因此在電路設計時,應保證係統上電複位時75176的DE端電位為“0”。由於8031在複位期間,I/O口輸出高電平,故圖2電路的接法有效地解決複位期間分機“咬”總線的問題。
2.2 隔離光耦電路的參數選取
在應用係統中,由於要對現場情況進行實時監控及響應,通信數據的波特率往往做得較高(通常都在4800波特以上)。限製通信波特率提高的“瓶頸”,並不是現場的導線(現場施工一般使用5類非屏蔽的雙絞線),而是在與單片機係統進行信號隔離的光耦電路上。此處采用TIL117。電路設計中可以考慮采用高速光耦,如6N137、6N136等芯片,也可以優化普通光耦電路參數的設計,使之能工作在最佳狀態。例如:電阻R2、R3如果選取得較大,將會使光耦的發光管由截止進入飽和變得較慢;ruguoxuanqudeguoxiao,tuichubaoheyehuihenman,suoyizheliangzhidianzudeshuzhiyaojingxinxuanqu,butongxinghaodeguangoujiqudongdianlushidezhelianggedianzudeshuzhilveyouchayi,zheyidianzaidianlushejizhongyaotebieshenzhong,bunengsuiyi,tongchangkeyiyoushiyanlaiding。
2.3 485總線輸出電路部分的設計
輸出電路的設計要充分考慮到線路上的各種幹擾及線路特性阻抗的匹配。由於工程環境比較複雜,現場常有各種形式的幹擾源,所以485總線的傳輸端一定要加有保護措施。在電路設計中采用穩壓管D1、D2組成的吸收回路,也可以選用能夠抗浪湧的TVS瞬態雜波抑製器件,或者直接選用能抗雷擊的485芯片(如SN75LBC184等)。
考慮到線路的特殊情況(如某一台分機的485芯片被擊穿短路),為防止總線中其它分機的通信受到影響,在75176的485信號輸出端串聯了兩個20Ω的電阻R10、R11。這樣本機的硬件故障就不會使整個總線的通信受到影響。
在應用係統工程的現場施工中,由於通信載體是雙絞線,它的特性阻抗為120Ω左右,所以線路設計時,在RS-485網絡傳輸線的始端和末端各應接1隻120Ω的匹配電阻(如圖2中R8),以減少線路上傳輸信號的反射。
由於RS-485芯片的特性,接收器的檢測靈敏度為± 200mV,即差分輸入端VA-VB ≥+200mV,輸出邏輯1,VA-VB ≤-200mV,輸出邏輯0;而A、B端電位差的絕對值小於200mV時,輸出為不確定。如果在總線上所有發送器被禁止時,接收器輸出邏輯0,這會誤認為通信幀的起始引起工作不正常。解決這個問題的辦法是人為地使A端電位高於B兩端電位,這樣RXD的電平在485總線不發送期間(總線懸浮時)呈現唯一的高電平,8031單片機就不會被誤中斷而收到亂字符。通過在485電路的A、B輸出端加接上拉、下拉電阻R7、R9,即可很好地解決這個問題。
3 軟件的編程
485芯片的軟件編程對產品的可靠性也有很大影響。由於485總zong線xian是shi異yi步bu半ban雙shuang工gong的de通tong信xin總zong線xian,在zai某mou一yi個ge時shi刻ke,總zong線xian隻zhi可ke能neng呈cheng現xian一yi種zhong狀zhuang態tai,所suo以yi這zhe種zhong方fang式shi一yi般ban適shi用yong於yu主zhu機ji對dui分fen機ji的de查zha詢xun方fang式shi通tong信xin,總zong線xian上shang必bi然ran有you一yi台tai始shi終zhong處chu於yu主zhu機ji地di位wei的de設she備bei在zai巡xun檢jian其qi它ta的de分fen機ji,所suo以yi需xu要yao製zhi定ding一yi套tao合he理li的de通tong信xin協xie議yi來lai協xie調tiao總zong線xian的de分fen時shi共gong用yong。這zhe裏li采cai用yong的de是shi數shu據ju包bao通tong信xin方fang式shi。通tong信xin數shu據ju是shi成cheng幀zhen成cheng包bao發fa送song的de,每mei包bao數shu據ju都dou有you引yin導dao碼ma、長度碼、地址碼、命令碼、內容、校驗碼等部分組成。其中引導碼是用於同步每一包數據的引導頭;長度碼是這一包數據的總長度;命令碼是主機對分機(或分機應答主機)的控製命令;地址碼是分機的本機地址號;“內容”是這一包數據裏的各種信息;校驗碼是這一包數據的校驗標誌,可以采用奇偶校驗、和校驗等不同的方式。
在485芯片的通信中,尤其要注意對485控製端DE的軟件編程。為了可靠的工作,在485總線狀態切換時需要做適當延時,再進行數據的收發。具體的做法是在數據發送狀態下,先將控製端置“1”,延時1ms左右的時間,再發送有效的數據,一包數據發送結束後再延時1ms後,將控製端置“0”。這樣的處理會使總線在狀態切換時,有一個穩定的工作過程。
4 結論
經過以上的軟硬件共同處理,RS-485總線在應用係統工程中的可靠性大大提高,在通常的環境條件下,24小時連續開機,係統的通信始終處於正常狀態,整機性能滿足了現場工程的需要。
但是RS-485總zong線xian仍reng然ran隻zhi是shi一yi種zhong常chang規gui的de通tong信xin總zong線xian,它ta不bu能neng夠gou做zuo總zong線xian的de自zi動dong仲zhong裁cai,也ye就jiu是shi不bu能neng夠gou同tong時shi發fa送song數shu據ju以yi避bi免mian總zong線xian競jing爭zheng,所suo以yi整zheng個ge係xi統tong的de通tong信xin效xiao率lv必bi然ran較jiao低di,數shu據ju的de冗rong餘yu量liang較jiao大da,對dui於yu速su度du要yao求qiu高gao的de應ying用yong場chang所suo不bu適shi宜yi用yongRS-485總線。同時由於RS-485總線上通常隻有一台主機,所以這種總線方式是典型的集中-分散型控製係統。一旦主機出現故障,會使整個係統的通信陷於癱瘓狀態,因此做好主機的在線熱備份是一個重要措施。
盡管RS-485總線存在這樣那樣的問題,但由於它的線路設計簡單、價格低廉、控製方便,隻要合理的使用在某些場所仍然能發揮良好的作用。