為此,作者開發(fā)出一種設(shè)備簡單,成本低廉,便于維護經(jīng)濟型智能小區(qū)家庭管理系統(tǒng),能有效地實現(xiàn)三表自動采集計費,防盜、防災、自動報警和遠程監(jiān)控等功能.利用單片機進行實時采集,并將采集的數(shù)據(jù)通過串行口傳給PC機,PC機完成數(shù)據(jù)的運算、存儲、和打印。硬件通過PIC16FXX單片機實現(xiàn),軟件由VC++6.0實現(xiàn)。
系統(tǒng)結(jié)構(gòu)
系統(tǒng)是由一臺PC機(上位機)和多臺PIC單片機(下位機,作為終端控制器)構(gòu)成分布式控制系統(tǒng),PC機COM口帶多個終端控制器,終端控制器地址設(shè)為1-N。PC機采用巡查工作方式自動查詢小區(qū)內(nèi)所有終端控制器的報警狀態(tài),及時對各種報警信號做出響應,并通過有效手段(語音提示、電子地圖標識等)向監(jiān)控中心工作人員提供報警業(yè)主家庭有關(guān)地址、電話等詳細信息,以便及時處理;同時通過抄表工作方式完成自動抄表以及報表輸出等任務.終端控制器采集用戶煤氣表、電表、水表脈沖數(shù)據(jù),實現(xiàn)3表自動計數(shù);
同時采集現(xiàn)場的防盜、防災等信息,有意外事件發(fā)生時可自動啟動報警器報警.PC機與終端控制器采用總線式網(wǎng)絡結(jié)構(gòu)相連,采用RS-485接口總線通信;RS485接口總線利用平衡發(fā)送和差分接收方式實現(xiàn)通信,以半雙工工作方式工作,最大傳輸距離可達1200m,波特率在1200和38400b/s間可設(shè)置,RS485網(wǎng)絡采用一對有補償?shù)碾p絞線。
終端控制器采用PIC16FXX單片機,片中串行口加MAX487轉(zhuǎn)換器,選用在多點總線傳輸線中雙向數(shù)據(jù)通信應用網(wǎng)絡廣泛使用的MAX487收發(fā)器,其特點是具有限斜率的驅(qū)動器,即驅(qū)動器發(fā)送數(shù)字信號,其沿邊斜率是受限制的,這使電磁干擾(EMI)減至最小,并減少因電纜終端不匹配而產(chǎn)生的影響.接口接線簡單,維護方便,保證了抄表的可靠性和監(jiān)控的實時性.
終端控制器硬件設(shè)計
每個家庭安裝的終端控制器是以單片機PIC16FXX為核心的數(shù)據(jù)采集和處理裝置,電路結(jié)構(gòu)如圖2所示.PIC16FXX單片機是由美國Microchip公司推出的一種新型的CMOS工藝的8位單片機,具有別具特色的哈佛總線和RISC結(jié)構(gòu),以及PIC16FXX的程序存儲器為電可擦除閃速存儲器(flash),可修改程序,甚至可在線編程。PIC16F83和PIC16F84片內(nèi)數(shù)據(jù)存儲器除RAM外,還有64K字節(jié)的EPROM,可以當作一般的或非易失性數(shù)據(jù)存儲器使用,簡單方便,它還具有片內(nèi)上電復位,延時電路,看門狗電路等。終端控制器就是由PIC16FXX單片機擴展了8路信號輸入通道,通信接口電路,鍵盤,看門狗電路,LCD顯示器和EEPROM24C16等.
為了簡化硬件結(jié)構(gòu),將三表設(shè)計成脈沖表,報警探頭為脈沖輸出,從而避免了在控制器主板上使用A/D轉(zhuǎn)換接口.本系統(tǒng)對表脈沖安排4路輸入通道,利用單片機PIC16FXX的PORTA端口輸入,表脈沖和報警脈沖信號分別通過斯密特觸發(fā)器波形整形和74LS244緩沖器進入CPU,在一定的采樣周期內(nèi),CPU輪流查詢用戶表和報警的輸入端口狀態(tài),并進行數(shù)據(jù)分析處理,存到EEPROM24C16相應的存儲區(qū),等待中央計算機的查詢和抄寫.
再安排4路輸入通道用于對設(shè)防、撤防、解警和求助操作的遙控處理.串行接口器件LCD液晶顯示器可顯示表數(shù)據(jù)和有關(guān)報警狀態(tài)等信息,所采用的液晶顯示模塊,內(nèi)置顯示RAM和驅(qū)動控制器,通過4線與單片機相連.8KB串行EEPROM24C16,用以存儲用戶各表的數(shù)據(jù)信息、報警狀態(tài)信息和采集監(jiān)控終端地址以及有關(guān)初始化信息.每個用戶的采集監(jiān)控終端設(shè)置不同的地址,從而保證采集數(shù)據(jù)的正確無誤.
終端控制器工作過程如下:上電復位自檢后,開始運行,指示燈閃爍表示程序開始正常工作,初始化LCD,脈沖表,密碼,報警狀態(tài),鍵盤,串口。然后進入主程序循環(huán),首先記錄報警狀態(tài),脈沖表數(shù)據(jù),然后將上述兩種數(shù)據(jù)存入24C16中,查詢鍵盤,通過串口響應PC機通信命令與PC機之間進行數(shù)據(jù)傳輸。
系統(tǒng)通信
通信的發(fā)起方總是主機開始,由PC機控制通訊的主動性,單片機在通訊過程中處于被動地位。由于各分機共享同一頻率,為避免沖突,PC機通過巡查分機的工作方式查詢各單片機是否有信息要上報給PC機。
為了保證PC機與多臺單片機之間能夠準確、可靠的通信,確定一個明確而合理的通訊協(xié)議是關(guān)鍵。包括對數(shù)據(jù)格式、通訊方式、傳送速度、傳送步驟、檢糾錯方式以及控制字符定義等問題做出統(tǒng)一規(guī)定。
為區(qū)分不同的分機,必須為每一個分機分配一個唯一的地址,此地址唯一區(qū)別各單片機。數(shù)據(jù)格式采用數(shù)據(jù)包的形式,一次傳輸一組數(shù)據(jù),數(shù)據(jù)包格式如下所示:
起始標志位:1個字節(jié)數(shù)據(jù)長度:1個字節(jié)
分機地址:1個字節(jié)數(shù)據(jù)內(nèi)容:n個字節(jié)
和檢驗:2個字節(jié)命令/數(shù)據(jù):1個字節(jié)
結(jié)束標志位:1個字節(jié)
主機向單個單片機傳數(shù)據(jù)時,首先,上位機順次發(fā)送起始標志位,目的地址位,數(shù)據(jù),生成檢驗位,結(jié)束標志位,上位機發(fā)送后每個下位機都產(chǎn)生中斷把上位機數(shù)據(jù)包都接收下來,當接收到結(jié)束標志字符時,表示接受到一幀完整的數(shù)據(jù)包,然后對數(shù)據(jù)解包,把接收到的目的地和本機地址進行比較,如果不是則馬上跳出中斷服務程序,相同的話則表示要和本下位機進行通訊。
主機發(fā)完信息后便等待該分機的接收應答。當接收數(shù)據(jù)包完成后,接受方也生成相應的檢驗和,如果接受方生成的檢驗和與接收到的檢驗和一致,則表明這次通訊成功,下位機根據(jù)接收到的內(nèi)容給上位機發(fā)送相應的反饋信息。如果不一致,則表明此次通訊失敗,下位機給上位機發(fā)送失敗信息,要求上位機重新發(fā)送。
由于系統(tǒng)采用上位機巡查下位機的工作方式,單片機在通信過程中處于被動地位,只能其被輪詢到的時候才能給上位機發(fā)送數(shù)據(jù),否則即使信息要上報主機時,也必須處于等待。上位機從第一分機依次查詢下位機,給巡查到的下位機發(fā)送查詢命令,詢問該單片機是否有信息要上報給上位機。
被輪詢的單片機如果沒有信息要上報給上位機的話就給上位機發(fā)送無上報要求的指令,上位機接受到此指令后便輪詢下一地址的分機;若分機有數(shù)據(jù)需上報便回發(fā)一個有上報要求給主機,主機收到后便等待分機上報數(shù)據(jù),有上報數(shù)據(jù)的分機組織好數(shù)據(jù)后上報給主機,然后等待主機的接收應答。主機收到分機上報的數(shù)據(jù)后進行檢查,若正確接收發(fā)正確接收應答,否則發(fā)錯誤接收應答。當接收錯誤后,主機等待分機再次上報數(shù)據(jù),分機收到接收錯誤應答后再次發(fā)送數(shù)據(jù)。
信號傳輸中接受與發(fā)送都采用中斷方式,多機通信從機中斷服務程序。
PC機通信程序設(shè)計
上位機的軟件是基于VC++6.0實現(xiàn)的,其中的重點和難點是進行實時的串行通訊。應用VC++編寫串行通信程序,通常可歸納為如下四種方法:一是利用WindowsAPI通信函數(shù);二是使用Microsoft提供的MicrosoftCommunicationsControl控件(簡稱MSComm);三是利用第三方編寫的通信類(如MuMegaTechnologies公司提供的Cserial類);四是在VC++中用端口操作指令直接對串行端口編程,實現(xiàn)串行通信。本系統(tǒng)中采用的是MSComm控件,它是通過串行端口發(fā)送和接收數(shù)據(jù),為應用程序提供串行通信功能,使用非常方便。
小結(jié)
本系統(tǒng)提出的通訊硬件和通訊協(xié)議已經(jīng)在實際中使用,截止目前運行正常。這說明這種通訊方案在PC機和多臺單片機的數(shù)據(jù)通訊中快速、準確、可靠的。