<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > PC機與單片機多機主從互通的實(shí)現

PC機與單片機多機主從互通的實(shí)現

作者: 時(shí)間:2014-01-16 來(lái)源:網(wǎng)絡(luò ) 收藏

  0 引言

  PC 機與組成的主從系統很常見(jiàn),在很多領(lǐng)域中都得到了應用。在這些系統中,PC 機與之間一般采用串行通信方式,按照一定的格式,進(jìn)行數據、指令的交換,完成的控制、數據前送,或者單片機上數據、狀態(tài)等信息的回送。

  當單片機數量較多時(shí),比較容易實(shí)現PC 機對所有單片機的控制。一般在這種情況下,采用廣播的方式。

  所有單片機都掛在一條串行數據總線(xiàn)上,只需對單片機進(jìn)行地址編碼,將地址數據和控制報文進(jìn)行廣播,單片機接收廣播數據后進(jìn)行地址比對,篩選出所需的數據,完成相應的數據傳送。

  如果PC 機要對單片機多機進(jìn)行廣播,并回傳所有單片機的信息,即單片機還要發(fā)送數據至,再加上單片機數量較多(大于100 個(gè)單片機),則要實(shí)現PC 機與單片機多機的互相通信,難度是比較大的。

  本文提出了一種切實(shí)可行的方法,通過(guò)實(shí)際電路搭建和調試,實(shí)現了PC機與單片機多機的互相通信,達到了預定的目標,使該系統具有如下功能:

 ?。?)PC機可以對所有100多個(gè)單片機進(jìn)行控制,根據需要,發(fā)送不同控制字到達每個(gè)單片機;

 ?。?)PC機對單片機的狀態(tài)修改是隨機的、沒(méi)有規律的;

 ?。?)所有單片機將自身的一些狀態(tài)信息按照順序回傳至PC機。

  1 互通信的幾種實(shí)現方法

  PC 機至多個(gè)單片機的廣播比較簡(jiǎn)單,難度較大的是多個(gè)單片機發(fā)送數據至PC機。由于100多個(gè)單片機均掛在一個(gè)數據總線(xiàn)上,系統設計的難點(diǎn)就在于數據總線(xiàn)控制權的傳遞,絕對不能出現有2個(gè)或者2個(gè)以上設備同時(shí)向總線(xiàn)上發(fā)送數據。系統設計之初,考慮了兩種總線(xiàn)控制方式有接力式和點(diǎn)名式:

 ?。?)接力式總線(xiàn)控制方式

  這種控制方式的基本思路是:初始化后,所有單片機在接收完P(guān)C機數據后,處于串行接收狀態(tài),不占用總線(xiàn)控制權。PC機發(fā)出回送開(kāi)始指令,第1個(gè)單片機響應該指令,并立即占有總線(xiàn)控制權,向總線(xiàn)上的PC機發(fā)送數據,數據發(fā)送完成后,緊接著(zhù)第1個(gè)單片機發(fā)送控制指令,通知第2個(gè)單片機,同時(shí)第1個(gè)單片機退出總線(xiàn)控制權,處于接收狀態(tài);第2個(gè)單片機接收到第1個(gè)單片機的開(kāi)始指令后,和前面第1個(gè)單片機一樣,開(kāi)始向總線(xiàn)上發(fā)送數據,并在結束傳送之后通知第3個(gè)單片機,如此這般,不斷接力傳輸,輪流控制總線(xiàn),直至最后一個(gè)單片機完成數據傳送。在單片機控制總線(xiàn),進(jìn)行回傳的過(guò)程中,如果要通過(guò)PC機向某個(gè)或者某些單片機傳送數據時(shí),PC機軟件會(huì )自動(dòng)將這些數據存儲下來(lái),等到最后一個(gè)單片機接收向PC機送數據之后,PC機再占用數據總線(xiàn),開(kāi)始向單片機傳送數據。

 ?。?)點(diǎn)名式總線(xiàn)控制方式

  該控制方式與接力式控制方式大體相同,不同的是這種控制方式需要等待PC 機點(diǎn)名指令。系統初始化后,單片機接收PC機指令、數據之后,PC機發(fā)送點(diǎn)名指令,讓第1個(gè)單片機開(kāi)始傳送數據,第1個(gè)單片機接收該指令后,立即占用總線(xiàn),開(kāi)始傳送數據,傳送結束后,發(fā)送結束指令至PC 機,PC 機在接收該結束指令后,立即占用總線(xiàn),再發(fā)送點(diǎn)名指令,讓第2個(gè)單片機開(kāi)始傳送數據,如此不斷動(dòng)作,直至最后一個(gè)單片機結束傳送。

  在單片機傳送數據時(shí),如果PC 機要送數據至單片機,可以在接收完某個(gè)單片機數據之后,暫停發(fā)送點(diǎn)名指令,直接發(fā)送數據至某個(gè)或者某些單片機。待數據發(fā)送完成后,繼續接上原先的中斷的點(diǎn)名順序號,繼續向后點(diǎn)名、傳送數據。綜合考慮這兩種總線(xiàn)控制方式,不難發(fā)現,由于沒(méi)有來(lái)回傳遞點(diǎn)名的指令時(shí)間開(kāi)銷(xiāo),接力式的傳輸效率會(huì )略高于點(diǎn)名式,所以,一開(kāi)始還是采用了接力式的控制方式。

  但是在進(jìn)行大的系統聯(lián)調時(shí),問(wèn)題出現了。由于接力式脫離PC機的過(guò)程干預,一旦出現某個(gè)單片機程序跑飛、死機時(shí),整個(gè)程序就沒(méi)法進(jìn)行下去,一直處于等待狀態(tài),整個(gè)系統就癱瘓了。調試過(guò)程中出現過(guò)好幾次死機的情況。最后,不得不回頭修改總體方案,采用點(diǎn)名式的控制方式。如果中間某個(gè)單片機出現異常,沒(méi)有按照預定的程序回傳數據,則PC機就可以判斷該單片機死機,在經(jīng)歷過(guò)一段等待時(shí)間后,自行跳過(guò)該單片機,點(diǎn)名下一個(gè)單片機,繼續后續的回傳和程序。如果該故障單片機還在占用總線(xiàn),影響下一個(gè)單片機的工作,則對單片機公用的復位端發(fā)送一個(gè)整體復位信號,讓所有單片機復位。經(jīng)過(guò)重新調整方案后,經(jīng)過(guò)長(cháng)時(shí)間運行,均沒(méi)有出現整機死機的狀況,總體運行情況良好。另外,這種控制方式還有其他兩種控制方式所不具有的優(yōu)勢:

  可以隨時(shí)打斷回傳,幾乎實(shí)時(shí)發(fā)送新的指令到某個(gè)或者某些單片機上,該功能是非常實(shí)用的。

  2 系統的硬件構成

  根據系統的總體要求,構建了如圖1所示的硬件平臺。

  

  整個(gè)系統采用RS 485 總線(xiàn)結構,RS 485 為差分平衡數字通信方式,具有較強的抗干擾能力,廣泛應用于遠距離數字通信。RS 485和RS 422A總線(xiàn)最大的區別是RS 485 可以單工雙向傳輸,而RS 422A 只能單向傳輸數據,在本系統由于存在大量單片機,如果使用RS 422A,電纜會(huì )增加一倍。另外,由于標準的RS 485鏈路只可以連接32個(gè)設備,故每個(gè)轉換器上要增加驅動(dòng)器。目前PC 機上已經(jīng)很難找到串口了,故PC 機與RS 485 總線(xiàn)之間采用PL2303 芯片進(jìn)行橋接。PL2303為Prolific 公司產(chǎn)品,可以很方便地將USB 接口轉換成標準RS 232 電平,用戶(hù)根本不用關(guān)心復雜的USB 協(xié)議和規范,在PC端的軟件編程中,只需像標準com口一樣使用USB口,因為Prolific公司提供的驅動(dòng)中,已經(jīng)將該USB 口模擬成了一個(gè)標準的com 口了。該芯片最高速度可以達到115 200 b/s,極大地方便了普通串行通信與PC機的連通。復位監視與讀寫(xiě)轉換電路也是一個(gè)單片機,不過(guò)該單片機只完成兩個(gè)功能。一個(gè)是就是接收RS 485 總線(xiàn)前的PC 機TXD(RS 232 端的TXD)發(fā)出信號,一旦出現PC機發(fā)出的全局復位串行代碼后,立即產(chǎn)生一個(gè)全局復位信號,將所有單片機進(jìn)行復位。該功能就是為了防止某個(gè)單片機出現故障,一直意外占用總線(xiàn),導致整個(gè)系統癱瘓。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: PC機 單片機 主從互通

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>