1. 51單片機使用485匯流排怎樣控制單片機的雙向通訊
485介面晶元上都有一個方向控制引腳,直接接單片機的I/O口控制即可。485匯流排是主從式,必須有一個主機,由主機巡檢其它子機,巡到誰誰獲得匯流排使用權。
2. 51單片機之間如何實現485通訊
如果自己做板,加一個485晶元,單片機串口與之相連,485晶元出來的是差分的485信號。
3. RS485匯流排是否能夠直接與MCU單片機直接相連或者需要485轉232的介面
在工業控制及測量領域較為常用的網路之一就是物理層採用RS-485通信介面所組成的工控設備網路。這種通信介面可以十分方便地將許多設備組成一個控制網路。從目前解決單片機之間中長距離通信的諸多方案分析來看,RS-485匯流排通信模式由於具有結構簡單、價格低廉、通信距離和數據傳輸速率適當等特點而被廣泛應用於儀器儀表、智能化感測器集散控制、樓宇控制、監控報警等領域。但RS485匯流排存在自適應、自保護功能脆弱等缺點,如不注意一些細節的處理,常出現通信失敗甚至系統癱瘓等故障,因此提高RS-485匯流排的運行可靠性至關重要。
圖1 RS485通信介面原理圖
2 硬體電路設計中需注意的問題
2.1 電路基本原理
某節點的硬體電路設計如圖1所示,在該電路中,使用了一種RS-485介面晶元SN75LBC184,它採用單一電源Vcc,電壓在+3~+5.5 V范圍內都能正常工作。與普通的RS-485晶元相比,它不但能抗雷電的沖擊而且能承受高達8 kV的靜電放電沖擊,片內集成4個瞬時過壓保護管,可承受高達400 V的瞬態脈沖電壓。因此,它能顯著提高防止雷電損壞器件的可靠性。對一些環境比較惡劣的現場,可直接與傳輸線相接而不需要任何外加保護元件。該晶元還有一個獨特的設計,當輸入端開路時,其輸出為高電平,這樣可保證接收器輸入端電纜有開路故障時,不影響系統的正常工作。另外,它的輸入阻抗為RS485標准輸入阻抗的2倍(≥24 kΩ),故可以在匯流排上連接64個收發器。晶元內部設計了限斜率驅動,使輸出信號邊沿不會過陡,使傳輸線上不會產生過多的高頻分量,從而有效扼制電磁干擾。在圖1中,四位一體的光電耦合器TLP521讓單片機與SN75LBC184之間完全沒有了電的聯系,提高了工作的可靠性。基本原理為:當單片機P1.6=0時,光電耦合器的發光二極體發光,光敏三極體導通,輸出高電壓(+5 V),選中RS485介面晶元的DE端,允許發送。當單片機P1.6=1時,光電耦合器的發光二極體不發光,光敏三極體不導通,輸出低電壓(0 V),選中RS485介面晶元的RE端,允許接收。SN75LBC184的R端(接收端)和D端(發送端)的原理與上述類似。
2.2 RS-485的DE控制端設計
在RS-485匯流排構築的半雙工通信系統中,在整個網路中任一時刻只能有一個節點處於發送狀態並向匯流排發送數據,其他所有節點都必須處於接收狀態。如果有2個節點或2個以上節點同時向匯流排發送數據,將會導致所有發送方的數據發送失敗。因此,在系統各個節點的硬體設計中,應首先力求避免因異常情況而引起本節點向匯流排發送數據而導致匯流排數據沖突。以MCS51系列的單片機為例,因其在系統復位時,I/O口都輸出高電平,如果把I/O口直接與RS-485介面晶元的驅動器使能端DE相連,會在CPU復位期間使DE為高,從而使本節點處於發送狀態。如果此時匯流排上有其他節點正在發送數據,則此次數據傳輸將被打斷而告失敗,甚至引起整個匯流排因某一節點的故障而通信阻塞,繼而影響整個系統的正常運行。考慮到通信的穩定性和可靠性,在每個節點的設計中應將控制RS485匯流排介面晶元的發送引腳設計成DE端的反邏輯,即控制引腳為邏輯「1」時,DE端為「0」;控制引腳為邏輯「0」時,DE端為「1」。在圖1中,將CPU的引腳P1.6通過光電耦合器驅動DE端,這樣就可以使控制引腳為高或者異常復位時使SN75LBC184始終處於接收狀態,從而從硬體上有效避免節點因異常情況而對整個系統造成的影響。這就為整個系統的通信可靠奠定了基礎。
此外,電路中還有1片看門狗MAX813L,能在節點發生死循環或其他故障時,自動復位程序,交出RS-485匯流排控制權。這樣就能保證整個系統不會因某一節點發生故障而獨占匯流排,導致整個系統癱瘓。
2.3 避免匯流排沖突的設計
當一個節點需要使用匯流排時,為了實現匯流排通信可靠,在有數據需要發送的情況下先偵聽匯流排。在硬體介面上,首先將RS-485介面晶元的數據接收引腳反相後接至CPU的中斷引腳INT0。在圖1中,INT0是連至光電耦合器的輸出端。當匯流排上有數據正在傳輸時,SN75LBC184的數據接收端(R端)表現為變化的高低電平,利用其產生的CPU下降沿中斷(也可採用查詢方式),能得知此時匯流排是否正「忙」,即匯流排上是否有節點正在通信。如果「空閑」,則可以得到對匯流排的使用許可權,這樣就較好地解決了匯流排沖突的問題。在此基礎上,還可以定義各種消息的優先順序,使高優先順序的消息得以優先發送,從而進一步提高系統的實時性。採用這種工作方式後,系統中已經沒有主、從節點之分,各個節點對匯流排的使用許可權是平等的,從而有效避免了個別節點通信負擔較重的情況。匯流排的利用率和系統的通信效率都得以大大提高,從而也使系統響應的實時性得到改善,而且即使系統中個別節點發生故障,也不會影響其他節點的正常通信和正常工作。這樣使得系統的「危險」分散了,從某種程度上來說增強了系統的工作可靠性和穩定性。
2.4 RS-485輸出電路部分的設計
在圖1中,VD1~VD4為信號限幅二極體,其穩壓值應保證符合RS-485標准,VD1和VD3取12 V,VD2 和VD4取7 V,以保證將信號幅度限定在-7~+12 V之間,進一步提高抗過壓的能力。考慮到線路的特殊情況(如某一節點的RS-485晶元被擊穿短路),為防止匯流排中其他分機的通信受到影響,在SN75LBC184的信號輸出端串聯了2個20 Ω的電阻R1和R2,這樣本機的硬體故障就不會使整個匯流排的通信受到影響。在應用系統工程的現場施工中,由於通信載體是雙絞線,它的特性阻抗為120 Ω左右,所以線路設計時,在RS485網路傳輸線的始端和末端應各接1個120 Ω的匹配電阻(如圖1中的R3),以減少線路上傳輸信號的反射。
2.5 系統的電源選擇
對於由單片機結合RS-485組建的測控網路,應優先採用各節點獨立供電的方案,同時電源線不能與RS-485信號線共用同一股多芯電纜。RS-485信號線宜選用截面積0.75 mm2以上的雙絞線而不是平直線,並且選用線性電源TL750L05比選用開關電源更合適。TL750L05必須有輸出電容,若沒有輸出電容,則其輸出端的電壓為鋸齒波形狀,鋸齒波的上升沿隨輸入電壓變化而變化,加輸出電容後,可以抑制該現象。
3 軟體的編程
SN75LBC184在接收方式時,A、B為輸入,R為輸出;在發送方式時,D為輸入,A、B為輸出。當傳送方向改變一次後,如果輸入未變化,則此時輸出為隨機狀態,直至輸入狀態變化一次,輸出狀態才確定。顯然,在由發送方式轉入接收方式後,如果A、B狀態變化前,R為低電平,在第一個數據起始位時,R仍為低電平,CPU認為此時無起始位,直到出現第一個下降沿,CPU才開始接收第一個數據,這將導致接收錯誤。由接收方式轉入發送方式後,D變化前,若A與B之間為低電壓,發送第一個數據起始位時,A與B之間仍為低電壓,A、B引腳無起始位,同樣會導致發送錯誤。克服這種後果的方案是:主機連續發送兩個同步字,同步字要包含多次邊沿變化(如55H ,0AAH),並發送兩次(第一次可能接收錯誤而忽略) ,接收端收到同步字後,就可以傳送數據了,從而保證正確通信。
為了更可靠地工作,在RS485匯流排狀態切換時需要適當延時,再進行數據的收發。具體的做法是在數據發送狀態下,先將控制端置「1」,延時0.5 ms左右的時間,再發送有效的數據,數據發送結束後,再延時0.5 ms,將控制端置「0」。這樣的處理會使匯流排在狀態切換時,有一個穩定的工作過程。數據通信程序基本流程圖如圖2所示。
圖2 數據通信程序基本流程圖
單片機通信節點的程序基本上可以分為6個主要部分,分別為預定義部分、初始化部分、主程序部分、設備狀態檢測部分、幀接收部分和幀發送部分。預定義部分主要定義了通信中使用的握手信號,用於保存設備信息的緩沖區和保存本節點設備號的變數。設備狀態檢測部分應能在程序初始化後,當硬體發生故障時,作出相應的反應。主程序部分應能接收命令幀,並根據命令的內容作出相應的回應。為縮短篇幅,這里僅給出主程序部分的代碼。如下所示:
/* 主程序流程 */
while(1) { //主循環
if(recv_cmd(&type)==0) //發生幀錯誤或幀地址與本機
//地址不符,丟棄當前幀後返回
continue;
switch(type) {
case __ACTIVE_: //主機詢問從機是否存在
send_data(__OK_, 0,dbuf);//發送應答信息
break;
case __GETDATA_:
len = strlen(dbuf);
send_data(__STATUS_, len,dbuf);//發送狀態信息
break;
default:
break; //命令類型錯誤,丟棄當前幀後返回
}
}
4 結論
RS-485由於使用了差分電平傳輸信號,傳輸距離比RS-232更長,最多可以達到3000 m,因此很適合工業環境下的應用。但與CAN匯流排等更為先進的現場工業匯流排相比,其處理錯誤的能力還稍顯遜色,所以在軟體部分還需要進行特別的設計,以避免數據錯誤等情況發生。另外,系統的數據冗餘量較大,對於速度要求高的應用場所不適宜用RS-485匯流排。雖然RS-485匯流排存在一些缺點,但由於它的線路設計簡單、價格低廉、控制方便,只要處理好細節,在某些工程應用中仍然能發揮良好的作用。總之,解決可靠性的關鍵在於工程開始施工前就要全盤考慮可採取的措施,這樣才能從根本上解決問題,而不要等到工程後期再去亡羊補牢。
4. rs485信號直接與單片機連接,485的TXD和RXD需要在單片機中反接嗎就是單片機的TXD是接在RS485的RXD嗎
①RS485信號與TTL信號不兼容,不能直接與單片機連接,需要經過485電平轉換才可以。
②RS485是差分匯流排,不是TXD/RXD,而是A/B。
③如果你是說485收發器的TTL端與單片機的接法,那麼一般是RO接到單片機的RXD,DI接到單片機的TXD。
5. 單片機 RS485
單片機使用RS485通訊,可以使用全雙工和半雙工兩種模式。半雙工比較簡單。
如果用半雙工,根據你的工作電源,5V可以用MAX485、ST485、SP485等;3.3V用MAX3485、SP3485、ST3485等。全雙工實際上就是採用兩片晶元成為全雙工。就是邏輯上要做點處理。
RS485採用通用串列口,增加一個發送/接收控制口(命名為RS485_CON),將單片機TX接MAX485的DI,RX接MAX485的RO,MAX485的RE和DE鏈接接在RS485_CON上,當RS485_CON為高時,是允許串列通訊輸入,為低時,允許串列輸出。MAX485輸出為A、B差分信號,所以比RS232抗干擾能力強,傳輸距離相對RS232遠。詳見RS485規范。如果需要可以告訴我郵箱,發送給你。
一般我們使用時常要採用光電隔離,以保證可靠性。
在設計還要考慮網路終端要網路匹配電阻。
現在RS485的使用逐漸減少,我們現在一般留有這個口,實際很多採用CAN現場匯流排,通訊距離遠,抗干擾好,很方便的組成一個匯流排網。
6. 三菱PLC怎麼用485介面與單片機通訊
PLC用485介面與單片機通訊方法: 單片機端採用的RS232串口而PLC上為RS485介面,二者陣腳定義和邏輯電平有所差別故完成二者之間的通訊需要其他器件來進行轉換調整。 1 PC/PPI線纜。 通過PC/PPI線纜來連接單片機和s7-200,數據通訊無誤; 2 RS23三菱PLC怎麼用485介面與單片機通訊
7. RS485主從式多機(單片機)通信,從機的地址是怎麼確定或定義的
從機的地址是遵循協議,根據協議定義的。
RS485主從式多機通訊協議的數據傳輸協議:此協議定義了一個控制器能認識使用的消息結構,而不管它們是經過何種網路進行通信的。它描述了一控制器請求訪問其它設備的過程,如何回應來自其它設備的請求,以及怎樣偵測錯誤並記錄。它制定了消息域格局和內容的公共格式。
此協議決定了每個控制器須要知道它們的設備地址,識別按地址發來的消息,決定要產生何種行動。如果需要回應,控制器將生成反饋信息按本協議發出。
(7)485匯流排單片機擴展閱讀
主從式多機通訊協議的錯誤檢測方法:
1、超時檢測
用戶要給主設備配置-預先定義的超時時間間隔,這個時間間隔要足夠長,以使任何從設備都能作為正常反應。如果從設備檢測到一傳輸錯誤,消息將不會接收,也不會向主設備作出回應。這樣超時事件將觸發主設備來處理錯誤。發往不存在的從設備的地址也會產生超時。
2、CRC檢測
CRC域是一個位元組,檢測了整個消息的內容。它由傳輸設備計算後加入到消息中。接收設備重新計算收到消息的CRC,並與接收到的CRC域中的值比較,如果兩值不同,則有誤,從設備對本消息不作回應。
通訊網路只設有一個主機,所有通信都由他發起。網路可支持254個之多的遠程從屬控制器,但實際所支持的從機數要由所用通信設備決定。
8. 用485匯流排實現單片機多機通訊,軟體上怎麼編程,可不可以給我個例子
485與你的主從單通信有一個最大的區別就是有一個485地址碼,如果您知道了RS232通信,那麼485通信就應該不在話下了:
比如,一根485線上可以懸掛32個節點,那麼,每個節點應該有一個唯一的可識別地址,在通信時,可以可以設置通信格式如下:
0XA5,0X5A,0XUU,0X......(其中將0XA5與0X5A作為握手信號,那麼,0XUU(其中UU表示數據),作為485地址識別碼,後面的可以表示長度與發送的數據以及校驗等),那麼你的編程就簡單了啊,你發送字元串:0XA5,0X5A,0X01,0X10。。。,那麼,這個發送的命令是發送給地址為0X01的485設備,發送的數據就是後面的定義數據了。
9. 電腦作為主機,多個單片機系統作為從機使用RS485匯流排連接,匯流排和單片機間使用什麼方式連接最簡單
多個單片機系統作為從機使用RS485匯流排連接,這都要求了,用RS485匯流排啦,單片機就必須用RS485介面啦,這還有什麼可說的嗎?
匯流排是485的,有A,B兩條線,單片機上用RS485介面晶元,也是A,B兩個接線端,與匯流排的A,B直接連接嗎。
RS485介面晶元有:75176,最好的是75LBC184,匯流排A,B兩端帶有ESD保護。見下圖。