一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

單片機實現(xiàn)多機通信的資料和程序

Wildesbeast ? 來源:單片機教程網(wǎng) ? 作者:單片機教程網(wǎng) ? 2020-09-06 11:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

單片機多機通信過程中,PC機將指令打包后發(fā)給智能接口單元(以下簡稱主單片機)。主單片機收到完整一包后將包解開,按對每個從機的指令分別發(fā)送,同時將各從機發(fā)給PC機的指令送給PC機。由于64個從機和主單片機使用同一串口通信線,為避免發(fā)生沖突,主單片機處于主動狀態(tài),按一定的定時間隔與每一臺從機順序通信。主單片機在與每一臺從機通信過程中先發(fā)送地址,從機收到地址后若與自己的地址一致,則繼續(xù)接收主單片機發(fā)來的一個字節(jié)的命令碼,從機收到命令后,將自己的一個字節(jié)的命令發(fā)送到主單片機。主單片機完成與64個從機的通信需要64個定時間隔,只要定時間隔足夠短,主單片機與從機基本上可以實現(xiàn)實時通信。在整個通信過程中,主單片機起著通信樞紐的作用。

單片機多機通信過程安排如下:使所有從機的SM2位置1,處于只接收地址幀的狀態(tài);主機發(fā)送一幀地址信息,其中包含8位地址,第9位為地址、數(shù)據(jù)標志位,第9位置1表示發(fā)送的是地址;從機接收到地址幀后 ,各自將所接收的地址與本從機的地址相比較,對于地址相符的從機,使SM2清0以接收主機隨后發(fā)來的信息,對于地址不相符的從機,仍保持SM2=1狀態(tài),對主機隨后發(fā)送的數(shù)據(jù)不予理睬,直至發(fā)送新的地址幀;主機發(fā)送控制指令與數(shù)據(jù),給被尋址的從機數(shù)據(jù)幀的第9位置0,表示發(fā)送的是數(shù)據(jù)。

?

單片機程序采用PLM51語言設(shè)計,主單片機定時中斷服務(wù)程序框圖如圖4所示。主單片機RS-485串行口接收和發(fā)送中段服務(wù)程序框圖如圖5所示。主單片機RS-232C串行口接收中斷服務(wù)程序如圖6所示。從單片機RS-485串行口接收和發(fā)送中段服務(wù)程序框圖如圖7所示。主單片機在主程序中以查詢方式將各從機送來的數(shù)據(jù)從內(nèi)存中讀出后順序發(fā)送給上位PC機。程序清單略。

圖1 RS485通信接口原理圖

2 單片機多機通信硬件電路設(shè)計中需注意的問題

2.1 電路基本原理

某節(jié)點的硬件電路設(shè)計如圖1所示,在該電路中,使用了一種RS-485接口芯片SN75LBC184,它采用單一電源Vcc,電壓在+3~+5.5 V范圍內(nèi)都能正常工作。與普通的RS-485芯片相比,它不但能抗雷電的沖擊而且能承受高達8 kV的靜電放電沖擊,片內(nèi)集成4個瞬時過壓保護管,可承受高達400 V的瞬態(tài)脈沖電壓。因此,它能顯著提高防止雷電損壞器件的可靠性。對一些環(huán)境比較惡劣的現(xiàn)場,可直接與傳輸線相接而不需要任何外加保護元件。該芯片還有一個獨特的設(shè)計,當輸入端開路時,其輸出為高電平,這樣可保證接收器輸入端電纜有開路故障時,不影響系統(tǒng)的正常工作。另外,它的輸入阻抗為RS485標準輸入阻抗的2倍(≥24 kΩ),故可以在總線上連接64個收發(fā)器。芯片內(nèi)部設(shè)計了限斜率驅(qū)動,使輸出信號邊沿不會過陡,使傳輸線上不會產(chǎn)生過多的高頻分量,從而有效扼制電磁干擾。在圖1中,四位一體的光電耦合器TLP521讓單片機與SN75LBC184之間完全沒有了電的聯(lián)系,提高了工作的可靠性。基本原理為:當單片機P1.6=0時,光電耦合器的發(fā)光二極管發(fā)光,光敏三極管導(dǎo)通,輸出高電壓(+5 V),選中RS485接口芯片的DE端,允許發(fā)送。當單片機P1.6=1時,光電耦合器的發(fā)光二極管不發(fā)光,光敏三極管不導(dǎo)通,輸出低電壓(0 V),選中RS485接口芯片的RE端,允許接收。SN75LBC184的R端(接收端)和D端(發(fā)送端)的原理與上述類似。

2.2 RS-485的DE控制端設(shè)計

在RS-485總線構(gòu)筑的半雙工通信系統(tǒng)中,在整個網(wǎng)絡(luò)中任一時刻只能有一個節(jié)點處于發(fā)送狀態(tài)并向總線發(fā)送數(shù)據(jù),其他所有節(jié)點都必須處于接收狀態(tài)。如果有2個節(jié)點或2個以上節(jié)點同時向總線發(fā)送數(shù)據(jù),將會導(dǎo)致所有發(fā)送方的數(shù)據(jù)發(fā)送失敗。因此,在系統(tǒng)各個節(jié)點的硬件設(shè)計中,應(yīng)首先力求避免因異常情況而引起本節(jié)點向總線發(fā)送數(shù)據(jù)而導(dǎo)致總線數(shù)據(jù)沖突。以MCS51系列的單片機為例,因其在系統(tǒng)復(fù)位時,I/O口都輸出高電平,如果把I/O口直接與RS-485接口芯片的驅(qū)動器使能端DE相連,會在CPU復(fù)位期間使DE為高,從而使本節(jié)點處于發(fā)送狀態(tài)。如果此時總線上有其他節(jié)點正在發(fā)送數(shù)據(jù),則此次數(shù)據(jù)傳輸將被打斷而告失敗,甚至引起整個總線因某一節(jié)點的故障而通信阻塞,繼而影響整個系統(tǒng)的正常運行??紤]到通信的穩(wěn)定性和可靠性,在每個節(jié)點的設(shè)計中應(yīng)將控制RS485總線接口芯片的發(fā)送引腳設(shè)計成DE端的反邏輯,即控制引腳為邏輯“1”時,DE端為“0”;控制引腳為邏輯“0”時,DE端為“1”。在圖1中,將CPU的引腳P1.6通過光電耦合器驅(qū)動DE端,這樣就可以使控制引腳為高或者異常復(fù)位時使SN75LBC184始終處于接收狀態(tài),從而從硬件上有效避免節(jié)點因異常情況而對整個系統(tǒng)造成的影響。這就為整個系統(tǒng)的通信可靠奠定了基礎(chǔ)。

此外,電路中還有1片看門狗MAX813L,能在節(jié)點發(fā)生死循環(huán)或其他故障時,自動復(fù)位程序,交出RS-485總線控制權(quán)。這樣就能保證整個系統(tǒng)不會因某一節(jié)點發(fā)生故障而獨占總線,導(dǎo)致整個系統(tǒng)癱瘓。

2.3 避免總線沖突的設(shè)計

當一個節(jié)點需要使用總線時,為了實現(xiàn)總線通信可靠,在有數(shù)據(jù)需要發(fā)送的情況下先偵聽總線。在硬件接口上,首先將RS-485接口芯片的數(shù)據(jù)接收引腳反相后接至CPU的中斷引腳INT0。在圖1中,INT0是連至光電耦合器的輸出端。當總線上有數(shù)據(jù)正在傳輸時,SN75LBC184的數(shù)據(jù)接收端(R端)表現(xiàn)為變化的高低電平,利用其產(chǎn)生的CPU下降沿中斷(也可采用查詢方式),能得知此時總線是否正“忙”,即總線上是否有節(jié)點正在通信。如果“空閑”,則可以得到對總線的使用權(quán)限,這樣就較好地解決了總線沖突的問題。在此基礎(chǔ)上,還可以定義各種消息的優(yōu)先級,使高優(yōu)先級的消息得以優(yōu)先發(fā)送,從而進一步提高系統(tǒng)的實時性。采用這種工作方式后,系統(tǒng)中已經(jīng)沒有主、從節(jié)點之分,各個節(jié)點對總線的使用權(quán)限是平等的,從而有效避免了個別節(jié)點通信負擔較重的情況。總線的利用率和系統(tǒng)的通信效率都得以大大提高,從而也使系統(tǒng)響應(yīng)的實時性得到改善,而且即使系統(tǒng)中個別節(jié)點發(fā)生故障,也不會影響其他節(jié)點的正常通信和正常工作。這樣使得系統(tǒng)的“危險”分散了,從某種程度上來說增強了系統(tǒng)的工作可靠性和穩(wěn)定性。

2.4 RS-485輸出電路部分的設(shè)計

在圖1中,VD1~VD4為信號限幅二極管,其穩(wěn)壓值應(yīng)保證符合RS485標準,VD1和VD3取12 V,VD2 和VD4取7 V,以保證將信號幅度限定在-7~+12 V之間,進一步提高抗過壓的能力。考慮到線路的特殊情況(如某一節(jié)點的RS-485芯片被擊穿短路),為防止總線中其他分機的通信受到影響,在SN75LBC184的信號輸出端串聯(lián)了2個20 Ω的電阻R1和R2,這樣本機的硬件故障就不會使整個總線的通信受到影響。在應(yīng)用系統(tǒng)工程的現(xiàn)場施工中,由于通信載體是雙絞線,它的特性阻抗為120 Ω左右,所以線路設(shè)計時,在RS485網(wǎng)絡(luò)傳輸線的始端和末端應(yīng)各接1個120 Ω的匹配電阻(如圖1中的R3),以減少線路上傳輸信號的反射。

2.5 系統(tǒng)的電源選擇

對于由單片機結(jié)合RS-485組建的測控網(wǎng)絡(luò),應(yīng)優(yōu)先采用各節(jié)點獨立供電的方案,同時電源線不能與RS-485信號線共用同一股多芯電纜。RS-485信號線宜選用截面積0.75 mm2以上的雙絞線而不是平直線,并且選用線性電源TL750L05比選用開關(guān)電源更合適。TL750L05必須有輸出電容,若沒有輸出電容,則其輸出端的電壓為鋸齒波形狀,鋸齒波的上升沿隨輸入電壓變化而變化,加輸出電容后,可以抑制該現(xiàn)象。

3 軟件的編程

SN75LBC184在接收方式時,A、B為輸入,R為輸出;在發(fā)送方式時,D為輸入,A、B為輸出。當傳送方向改變一次后,如果輸入未變化,則此時輸出為隨機狀態(tài),直至輸入狀態(tài)變化一次,輸出狀態(tài)才確定。顯然,在由發(fā)送方式轉(zhuǎn)入接收方式后,如果A、B狀態(tài)變化前,R為低電平,在第一個數(shù)據(jù)起始位時,R仍為低電平,CPU認為此時無起始位,直到出現(xiàn)第一個下降沿,CPU才開始接收第一個數(shù)據(jù),這將導(dǎo)致接收錯誤。由接收方式轉(zhuǎn)入發(fā)送方式后,D變化前,若A與B之間為低電壓,發(fā)送第一個數(shù)據(jù)起始位時,A與B之間仍為低電壓,A、B引腳無起始位,同樣會導(dǎo)致發(fā)送錯誤??朔@種后果的方案是:主機連續(xù)發(fā)送兩個同步字,同步字要包含多次邊沿變化(如55H ,0AAH),并發(fā)送兩次(第一次可能接收錯誤而忽略) ,接收端收到同步字后,就可以傳送數(shù)據(jù)了,從而保證正確通信。

為了更可靠地工作,在RS485總線狀態(tài)切換時需要適當延時,再進行數(shù)據(jù)的收發(fā)。具體的做法是在數(shù)據(jù)發(fā)送狀態(tài)下,先將控制端置“1”,延時0.5 ms左右的時間,再發(fā)送有效的數(shù)據(jù),數(shù)據(jù)發(fā)送結(jié)束后,再延時0.5 ms,將控制端置“0”。這樣的處理會使總線在狀態(tài)切換時,有一個穩(wěn)定的工作過程。數(shù)據(jù)通信程序基本流程圖如圖2所示。

圖2 數(shù)據(jù)通信程序基本流程圖

單片機通信節(jié)點的程序基本上可以分為6個主要部分,分別為預(yù)定義部分、初始化部分、主程序部分、設(shè)備狀態(tài)檢測部分、幀接收部分和幀發(fā)送部分。預(yù)定義部分主要定義了通信中使用的握手信號,用于保存設(shè)備信息的緩沖區(qū)和保存本節(jié)點設(shè)備號的變量。設(shè)備狀態(tài)檢測部分應(yīng)能在程序初始化后,當硬件發(fā)生故障時,作出相應(yīng)的反應(yīng)。主程序部分應(yīng)能接收命令幀,并根據(jù)命令的內(nèi)容作出相應(yīng)的回應(yīng)。為縮短篇幅,這里僅給出主程序部分的代碼。如下所示:

/* 單片機多機通信主程序流程 */

while(1) { //主循環(huán)

if(recv_cmd(&type)==0) //發(fā)生幀錯誤或幀地址與本機

//地址不符,丟棄當前幀后返回

continue;

switch(type) {

case __ACTIVE_: //主機詢問從機是否存在

send_data(__OK_, 0,dbuf);//發(fā)送應(yīng)答信息

break;

case __GETDATA_:

len = strlen(dbuf);

send_data(__STATUS_, len,dbuf);//發(fā)送狀態(tài)信息

break;

default:

break; //命令類型錯誤,丟棄當前幀后返回

}

}

4 結(jié)論

RS-485由于使用了差分電平傳輸信號,傳輸距離比RS-232更長,最多可以達到3000 m,因此很適合工業(yè)環(huán)境下的應(yīng)用。但與CAN總線等更為先進的現(xiàn)場工業(yè)總線相比,其處理錯誤的能力還稍顯遜色,所以在軟件部分還需要進行特別的設(shè)計,以避免數(shù)據(jù)錯誤等情況發(fā)生。另外,系統(tǒng)的數(shù)據(jù)冗余量較大,對于速度要求高的應(yīng)用場所不適宜用RS-485總線。雖然RS-485總線存在一些缺點,但由于它的線路設(shè)計簡單、價格低廉、控制方便,只要處理好細節(jié),在某些單片機多機通信應(yīng)用中仍然能發(fā)揮良好的作用??傊?,解決可靠性的關(guān)鍵在于工程開始施工前就要全盤考慮可采取的措施,這樣才能從根本上解決問題,而不要等到工程后期再去亡羊補牢。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 原理圖
    +關(guān)注

    關(guān)注

    1326

    文章

    6415

    瀏覽量

    240517
  • 單片機
    +關(guān)注

    關(guān)注

    6067

    文章

    44992

    瀏覽量

    650675
  • RS485
    +關(guān)注

    關(guān)注

    39

    文章

    1233

    瀏覽量

    84106
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    51單片機通信問題

    求教各位大哥,我想用幾塊51單片機實現(xiàn)一對通信,一個主機多個從,但是有一個問題,單片機連接的
    發(fā)表于 02-29 17:28

    單片機資料串口通信程序下載

    單片機資料串口通信串口雙工
    發(fā)表于 07-19 08:17

    單片機通信網(wǎng)絡(luò)改進及數(shù)據(jù)通信容錯技術(shù)

    單片機通信網(wǎng)絡(luò)改進及數(shù)據(jù)通信容錯技術(shù): 對單片機數(shù)據(jù)通信
    發(fā)表于 12-04 12:16 ?35次下載

    一種PC與單片機RS232串口通信設(shè)計

    摘要:針對傳統(tǒng)的PC與單片機串口通信會使多個單片機接收無效數(shù)據(jù)的缺陷。介紹了一種串口通信的方
    發(fā)表于 08-18 18:05 ?0次下載

    基于單片機并行通信設(shè)計

    單片機串行通信應(yīng)用十分廣泛,但在串行口被占用又要進行
    發(fā)表于 10-27 15:00 ?2324次閱讀
    基于<b class='flag-5'>單片機</b>的<b class='flag-5'>多</b><b class='flag-5'>機</b>并行<b class='flag-5'>通信</b>設(shè)計

    單片機之間通信演示電路設(shè)計

    本文介紹的是基于單片機的串行通信演示電路系統(tǒng)設(shè)計。本設(shè)計研究的是三個AT89C51單片機通過串行通信技術(shù)實現(xiàn)相互之間的
    發(fā)表于 04-14 16:53 ?1次下載

    PLC與PIC單片機通信的應(yīng)用_楊德

    PLC與PIC單片機通信的應(yīng)用_楊德
    發(fā)表于 03-19 11:27 ?7次下載

    通信單片機和pc

    通信單片機和pc
    發(fā)表于 11-04 11:38 ?7次下載

    51單片機通信原理

    通信中,主機必須要能對各個從進行識別,在51系列單片機中可以通過SCON寄存器的SM2位來實現(xiàn)
    的頭像 發(fā)表于 05-15 09:51 ?3w次閱讀
    51<b class='flag-5'>單片機</b><b class='flag-5'>多</b><b class='flag-5'>機</b><b class='flag-5'>通信</b>原理

    使用Visual Basic實現(xiàn)PC與多個單片機串口通信資料程序

    本文檔的主要內(nèi)容詳細介紹的是使用Visual Basic實現(xiàn)PC與多個單片機串口通信資料程序
    發(fā)表于 08-09 17:33 ?7次下載
    使用Visual Basic<b class='flag-5'>實現(xiàn)</b>PC與多個<b class='flag-5'>單片機</b>串口<b class='flag-5'>通信</b>的<b class='flag-5'>資料</b>和<b class='flag-5'>程序</b>

    基于單片機和CAN控制器和CAN收發(fā)器實現(xiàn)系統(tǒng)系統(tǒng)的設(shè)計

    關(guān)于單片機通信,許多文章及相關(guān)書籍都有介紹,但就其
    發(fā)表于 06-26 17:57 ?2958次閱讀
    基于<b class='flag-5'>單片機</b>和CAN控制器和CAN收發(fā)器<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>多</b><b class='flag-5'>機</b>系統(tǒng)系統(tǒng)的設(shè)計

    使用51單片機實現(xiàn)雙機通信程序和仿真資料免費下載

    本文檔的主要內(nèi)容詳細介紹的是使用51單片機實現(xiàn)雙機通信程序和仿真資料免費下載。
    發(fā)表于 03-02 16:40 ?45次下載

    實現(xiàn)PC單片機雙向通信的C語言程序設(shè)計實例免費下載

    本文檔的主要內(nèi)容詳細介紹的是使用單片機實現(xiàn)PC單片機雙向通信的C語言程序設(shè)計實例免費下載。
    發(fā)表于 03-30 15:52 ?27次下載

    一種單片機通信系統(tǒng)的設(shè)計

    電子發(fā)燒友網(wǎng)站提供《一種單片機通信系統(tǒng)的設(shè)計.pdf》資料免費下載
    發(fā)表于 10-30 11:11 ?0次下載
    一種<b class='flag-5'>單片機</b><b class='flag-5'>多</b><b class='flag-5'>機</b><b class='flag-5'>通信</b>系統(tǒng)的設(shè)計

    PC單片機實時通信的設(shè)計與實現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《PC單片機實時通信的設(shè)計與實現(xiàn).pdf》
    發(fā)表于 10-31 09:55 ?3次下載
    PC<b class='flag-5'>機</b>與<b class='flag-5'>單片機</b><b class='flag-5'>多</b><b class='flag-5'>機</b>實時<b class='flag-5'>通信</b>的設(shè)計與<b class='flag-5'>實現(xiàn)</b>