複製鏈接
請複製以下鏈接發送給好友

工業串行總線

鎖定
從解決MCU之間中長距離通信的諸多方案分析來看,RS-485因硬件設計簡單、控制方便、成本低廉等優點,在消防、水文、水利自動報測、樓宇控制等工程中被廣泛使用。但RS-485總線存在自適應、自保護功能脆弱、通信效率低等缺點,如不注意一些細節的處理常出現通信失敗甚至系統癱瘓等故障,因此提高RS-485總線的運行可靠性至關重要。
中文名
工業串行總線
電源選擇
220~1000μF電解電容
硬件設計
可與MCU共用5V電源
網絡建立
採用特性阻抗為120Ω雙絞線

工業串行總線電源選擇

對於由MCU結合RS-485微系統組建的測控網絡,應優先採用各微系統獨立供電方案,最好不要採用一台大電源給微系統並聯供電,同時電源線(交直流)不能與RS-485信號線共用同一股多芯電纜。RS-485信號線宜選用截面積0.75mm2以上雙絞線而不是平直線。對於每個小容量直流電源選用線性電源LM7805比選用開關電源更合適。當然應注意LM7805的保護:
1.LM7805輸入端與地應跨接220~1000μF電解電容;
2.LM7805輸入端與輸出端反接1N4007二極管;
3.LM7805輸出端與地應跨接470~1000μF電解電容和104pF獨石電容並反接1N4007二極管;
4.輸入電壓以8~10V為佳,最大允許範圍為6.5~24V。可選用TI的PT5100替代LM7805,以實現9~38V的超寬電壓輸入。

工業串行總線硬件設計

RS-485芯片供電電壓為4.5~5.5V,可與MCU共用5V電源。因RS-485總線為並接式二線制接口,一旦有一隻芯片故障就可能將總線“拉死”,因此對其二線口VA、VB與總線之間應加以隔離。一種簡單可行的方法是:VA、VB與總線之間各串接一隻4~10Ω的PTC電阻,同時與地之間各跨接5V的TVS二極管以消除線路浪湧干擾。如沒有PTC電阻和TVS二極管可用普通電阻和穩壓管代替。為防止干擾信號誤觸發RO(接收器輸出)負跳變(RO的負跳變是通信接收的關鍵),建議將RO外接10kΩ上拉電阻。對於收發控制端TC建議採用MCU引腳通過反相器進行控制,不宜採用MCU引腳直接進行控制以防止MCU上電時對總線的干擾。對外置設備為防止強電磁(雷電)衝擊,建議選用TI的75LBC184等防雷擊芯片

工業串行總線網絡建立

RS-485網絡通常採用特性阻抗為120Ω雙絞線作傳輸介質傳輸速率300b/s~115.2kb/s兼容,為異步半雙工結構。網絡節點數與所選RS-485芯片驅動能力和接收器的輸入阻抗有關,如75LBC184標稱最大值為64點,MAX1487E標稱最大值為128點。實際使用時,因線纜長度、線徑、網絡分佈、傳輸速率不同,實際接點數均達不到理論值。例如75LBC184運用在500m分佈的RS-485網絡上節點數超過50或速率大於9.6kb/s時工作可靠性明顯下降。根據筆者經驗,節點數應按最大值的70%選取,傳輸速率在1200~9600b/s之間選取,通信距離1km以內,從通信效率、節點數、通信距離等綜合考慮選用4800b/s最佳。通信距離1km以上時應通過增加中繼模塊或降低速率的方法提高傳輸可靠性。
理論上講,RS-485節點與主幹之間距離即T頭越短越好。T頭小於10m的節點採用T型連接對網絡匹配並無太大影響,可放心使用,但對於節點間距非常小(小於1m,如LED模塊組合屏)應採用星型連接,若採用T型或串珠型連接就不能正常工作。RS-485是一種半雙工結構通信總線,大多用於一對多點的通信系統,因此主機(PC)應置於一端,不要置於中間而形成主幹的T型分佈,同時位於總線兩端的差分端口VA與VB之間應跨接120Ω匹配電阻,以減少由於不匹配而引起的反射。

工業串行總線通信效率

RS-485通常應用於一對多點的主從應答式通信系統中,相對於RS-232等全雙工總線效率低了許多,因此選用合適的通信協議及控制方式非常重要。
1.總線穩態控制(握手信號)大多數使用者選擇在數據發送前1ms將收發控制端TC置成高電平,使總線進入穩定的發送狀態後才發送數據;數據發送完畢再延遲1ms後置TC端成低電平,使可靠發送完畢後才轉入接收狀態。據筆者使用TC端的延時有4個機器週期已滿足要求;
2.為保證數據傳輸質量,對每個字節進行校驗的同時,應儘量減少特徵字和校驗字。慣用的數據包格式由引導碼、長度碼、地址碼、命令碼、數據、校驗碼、尾碼組成,每個數據包長度達20~30字節。在RS-485系統中這樣的協議不太簡練,因此向大家介紹適合RS-485使用的MODBUS標準協議。MODBUS協議採用下傳8個字節,上傳7個字節的方式進行通信,現已廣泛使用於水利、水文、電力等行業設備及系統的國際標準中。

工業串行總線協議規定

上位機發送8個字節召測指令,其中地址、設備類別、通信路由、指令類別、指令長度、指令各佔1個字節,CRC校驗碼佔2個字節;下位機應答7個字節,地址、設備類別、數據長度各佔1個字節,數據、CRC校驗碼各佔2個字節。

工業串行總線CRC校驗規則

CRC初始化為&HFFFF(CRC_L=&HFF,CRC_H=&HFF),將CRC_L與傳輸的第一個字節進行異或運算,然後將CRC進行右移(不循環)並判斷:如移出的位為1,則CRC再與&HA001進行一次異或運算;如移出的位為0,則CRC不變。如此右移8次即完成第一個字節的校驗,重複上述運算及右移直至將全部字節校驗完畢,所生成的CRC(16位)即為傳輸校驗碼。

工業串行總線系統維護

RS-485是一種低成本、易操作的通信系統,但是穩定性弱同時相互牽制性強,通常有一個節點出現故障會導致系統整體或局部的癱瘓,而且又難以判斷。故向讀者介紹一些維護RS-485的常用方法。
1.若出現系統完全癱瘓,大多因為某節點芯片的VA、VB對電源擊穿,使用萬用表測VA、VB間差模電壓為零,而對地的共模電壓大於3V,此時可通過測共模電壓大小來排查,共模電壓越大説明離故障點越近,反之越遠;
2.集中供電的RS-485系統在上電時常常出現部分節點不正常,但每次又不完全一樣。這是由於對RS-485的收發控制端TC設計不合理,造成微系統上電時節點收發狀態混亂從而導致總線堵塞。改進的方法是將各微系統加裝電源開關然後分別上電;
3.總線連續幾個節點不能正常工作。一般是由其中的一個節點故障導致的。一個節點故障會導致鄰近的2~3個節點(一般為後續)無法通信,因此將其逐一與總線脱離,如某節點脱離後總線能恢復正常,説明該節點故障;
4.系統基本正常但偶爾會出現通信失敗。一般是由於網絡施工不合理導致系統可靠性處於臨界狀態,最好改變走線或增加中繼模塊。應急方法之一是將出現失敗的節點更換成性能更優異的芯片
5.筆者曾遇到MCU故障導致TC端處於長髮狀態而將總線拉死一片的現象,故提醒讀者不要忘記對TC端的檢查。儘管RS-485規定差模電壓大於200mV即能正常工作。但實際測量:一個運行良好的系統其差模電壓一般在1.2V左右(因網絡分佈、速率的差異有可能使差模電壓在0.8~1.5V範圍內)。
雖然RS-485總線存在一些缺點,但只要處理好細節,性能還是比較穩定的。