2系統(tǒng)的硬件構(gòu)成

根據(jù)系統(tǒng)的總體要求,構(gòu)建了如圖1所示的硬件平臺。

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


[!--empirenews.page--]


為了實現(xiàn)RS485的半雙工通信,必須有一個方向切換控制信號,如圖2所示。在單片機端,這個控制信號很容易獲得,引出一個I/O腳,即可在單片機程序中控制該信號的切換;但是PC機端的RS485的切換就相對比較麻煩,這也是復(fù)位監(jiān)視與讀寫轉(zhuǎn)換電路完成的另外一個重要功能:讀寫轉(zhuǎn)換。如果PC機要占用RS485總線,則發(fā)送一個特定的串行碼,該專用單片機接收并響應(yīng)該串行碼,切換RS485控制器,開始占用485總線并發(fā)送數(shù)據(jù),如果PC機結(jié)束發(fā)送數(shù)據(jù),則要同時發(fā)送一個特定的串行碼,通知該專用單片機,進行相應(yīng)的RS485切換。單片機及其附屬電路組成了相關(guān)的功能電路。



主單片機采用了Silicon公司的8051F020型增強型單片機。該單片機最大的優(yōu)勢是內(nèi)部集成的模擬電路功能較為強大、單片機運行速度快、程序編寫-燒寫-仿真較為方便。

3系統(tǒng)的軟件構(gòu)成

軟件分為3個部分:PC機上位機程序、單片機通用程序和專用單片機程序。專用單片機的程序運行在復(fù)位監(jiān)視與讀寫轉(zhuǎn)換電路中,該程序較為簡單,就是在上電后,一直按照約定的波特率和數(shù)據(jù)格式接收PC機送出的串行數(shù)據(jù),若得到的數(shù)據(jù)符合約定的復(fù)位格式,則送出復(fù)位信號;若接收到的數(shù)據(jù)符合總線切換的格式,則送出相應(yīng)的切換信號。PC機上位機程序比較復(fù)雜,可以根據(jù)用戶的實際需要,編寫相關(guān)的應(yīng)用程序。在本文中,采用Delphi編寫了應(yīng)用程序,實現(xiàn)了對單片機群的參數(shù)設(shè)置、狀態(tài)調(diào)整、信息反饋和系統(tǒng)控制。

單片機通用程序分別運行在100多個單片機上,是實現(xiàn)系統(tǒng)功能的基礎(chǔ)。圖3為單片機程序流程圖。



單片機初始化后,接收PC機送來的初始指令,然后開始運行主程序,執(zhí)行單片機的主功能。同時開放串行接收中斷,一旦接收到PC機發(fā)來的指令,就進行對比判斷,如果是PC機對自己的點名,則響應(yīng)PC機的回送指令,開始占用總線,向PC機傳送數(shù)據(jù),結(jié)束后向PC機發(fā)送結(jié)束狀態(tài)字,結(jié)束占用總線,回到主程序,同時等待接收串行數(shù)據(jù)。