PC機(jī)與單片機(jī)多機(jī)主從互通的實(shí)現(xiàn)
為了實(shí)現(xiàn)RS 485 的半雙工通信,必須有一個(gè)方向切換控制信號(hào),如圖2所示。在單片機(jī)端,這個(gè)控制信號(hào)很容易獲得,引出一個(gè)I/O腳,即可在單片機(jī)程序中控制該信號(hào)的切換;但是PC機(jī)端的RS 485的切換就相對(duì)比較麻煩,這也是復(fù)位監(jiān)視與讀寫轉(zhuǎn)換電路完成的另外一個(gè)重要功能:讀寫轉(zhuǎn)換。如果PC機(jī)要占用RS 485總線,則發(fā)送一個(gè)特定的串行碼,該專用單片機(jī)接收并響應(yīng)該串行碼,切換RS 485控制器,開始占用485總線并發(fā)送數(shù)據(jù),如果PC機(jī)結(jié)束發(fā)送數(shù)據(jù),則要同時(shí)發(fā)送一個(gè)特定的串行碼,通知該專用單片機(jī),進(jìn)行相應(yīng)的RS 485切換。單片機(jī)及其附屬電路組成了相關(guān)的功能電路。
主單片機(jī)采用了Silicon公司的8051F020型增強(qiáng)型單片機(jī)。該單片機(jī)最大的優(yōu)勢(shì)是內(nèi)部集成的模擬電路功能較為強(qiáng)大、單片機(jī)運(yùn)行速度快、程序編寫-燒寫-仿真較為方便。
3 系統(tǒng)的軟件構(gòu)成
軟件分為3個(gè)部分:PC機(jī)上位機(jī)程序、單片機(jī)通用程序和專用單片機(jī)程序。專用單片機(jī)的程序運(yùn)行在復(fù)位監(jiān)視與讀寫轉(zhuǎn)換電路中,該程序較為簡(jiǎn)單,就是在上電后,一直按照約定的波特率和數(shù)據(jù)格式接收PC機(jī)送出的串行數(shù)據(jù),若得到的數(shù)據(jù)符合約定的復(fù)位格式,則送出復(fù)位信號(hào);若接收到的數(shù)據(jù)符合總線切換的格式,則送出相應(yīng)的切換信號(hào)。PC 機(jī)上位機(jī)程序比較復(fù)雜,可以根據(jù)用戶的實(shí)際需要,編寫相關(guān)的應(yīng)用程序。在本文中,采用Delphi編寫了應(yīng)用程序,實(shí)現(xiàn)了對(duì)單片機(jī)群的參數(shù)設(shè)置、狀態(tài)調(diào)整、信息反饋和系統(tǒng)控制。
單片機(jī)通用程序分別運(yùn)行在100多個(gè)單片機(jī)上,是實(shí)現(xiàn)系統(tǒng)功能的基礎(chǔ)。圖3為單片機(jī)程序流程圖。
單片機(jī)初始化后,接收PC機(jī)送來(lái)的初始指令,然后開始運(yùn)行主程序,執(zhí)行單片機(jī)的主功能。同時(shí)開放串行接收中斷,一旦接收到PC機(jī)發(fā)來(lái)的指令,就進(jìn)行對(duì)比判斷,如果是PC 機(jī)對(duì)自己的點(diǎn)名,則響應(yīng)PC 機(jī)的回送指令,開始占用總線,向PC機(jī)傳送數(shù)據(jù),結(jié)束后向PC機(jī)發(fā)送結(jié)束狀態(tài)字,結(jié)束占用總線,回到主程序,同時(shí)等待接收串行數(shù)據(jù)。
4 結(jié)語(yǔ)
經(jīng)過(guò)大量試驗(yàn),課題組應(yīng)用點(diǎn)名式總線控制方式,成功解決了PC機(jī)與大量單片機(jī)的雙向互通問(wèn)題,實(shí)現(xiàn)了100 多個(gè)單片機(jī)與主控PC 機(jī)之間的互通信,達(dá)到了設(shè)計(jì)要求。電路經(jīng)過(guò)長(zhǎng)時(shí)間運(yùn)行,實(shí)際情況表明,該系統(tǒng)運(yùn)行穩(wěn)定、控制靈活、可靠性高,采用的點(diǎn)名式總線控制方式具有很好的實(shí)用價(jià)值。
評(píng)論