遠程終端中通信控制卡的設(shè)計與實現(xiàn)
關(guān)鍵詞:單片機;智能模塊;串口通信
1 概述
PC機與多臺單片機構(gòu)成小型的分布式測控系統(tǒng)已在工業(yè)控制、生產(chǎn)管理中得到了廣泛的應(yīng)用。在這類應(yīng)用系統(tǒng)中,PC機多作為上位機通過直接查詢來控制各從機。由于PC機本身還要進行動態(tài)數(shù)據(jù)顯示、數(shù)據(jù)庫實時錄入、越限報警、報表打印等任務(wù),因此,當從機數(shù)目過多時,上位機頻繁地響應(yīng)從機的中斷,并在一定時間內(nèi)等待和接收數(shù)據(jù)?這極大地影響了PC機的工作效率。為了提高上位機的工作效率,筆者在PC機與各個智能模塊間增加了一塊用AT89C51作為微控制器的通信控制卡。整個系統(tǒng)構(gòu)成一個3級分級控制系統(tǒng),通信控制卡位于中間層,它是系統(tǒng)控制、管理的中樞。
2 通信控制卡硬件電路
在本系統(tǒng)中,通信控制卡采用查詢方式對下位機的各智能模塊進行查詢,該智能模塊由AT89C51控制的電量、溫度、液位、開關(guān)量采集板構(gòu)成,它們分別可獨立完成各自的數(shù)據(jù)采集和處理任務(wù)。當處于被查詢狀態(tài)時,系統(tǒng)可采用中斷方式與通信卡進行通信。通信卡依次為人機完成各種數(shù)據(jù)處理任務(wù)提供各種數(shù)據(jù)和控制命令,然后把它們統(tǒng)一打包上傳給上位機,從而使上位機可以對其進行顯示、加工和處理,并形成各種報表。
該系統(tǒng)的硬件接口電路如圖1所示。其中控制卡的核心芯片是AT89C51,它利用本身自帶的串口與各智能模塊間通過多機通信方式3進行總線式多機通信。為了同時能與PC進行通信,另一端通過8251A的擴展串口與PC相連。即要求8251A芯片的接收數(shù)據(jù)線RXD(腳3)及發(fā)送數(shù)據(jù)線TXD(腳19)通過MAX232與PC相連?這是因為電平轉(zhuǎn)換器8251A的輸入、輸出均為TTL電平,而通過電平轉(zhuǎn)換器可將TTL電平轉(zhuǎn)換成RS232C標準電平以便與PC進行通信。
8251A芯片的時鐘輸入線CLK可為其提供定時信號。在異步方式時,CLK的頻率至少應(yīng)大于8251A內(nèi)接收器或發(fā)送器輸入頻率的4.5倍。其引腳RXC(腳25)為接收器時鐘,它的作用是控制字符的發(fā)送速率,其時鐘可使用8253產(chǎn)生的合適時鐘頻率。在異步方式中,引腳RXC和TXC(即接收、發(fā)送時鐘)為波特率的16倍。該控制卡中擴展的8kB RAM可分別開辟4個不同的存儲電量采集板的數(shù)據(jù),處理時可以將它們一起送到PC。
3 軟件系統(tǒng)設(shè)計
3.1 通信協(xié)議
通信控制卡的AT89C51串口與各智能模塊的通信按自定義的通信協(xié)議進行。過程如下:
(1)首先使所有從機SM2位置1,以使其處于只接收地址幀的狀態(tài)。
(2)控制卡先發(fā)一地址信息,其中8位為地址,第9位為地址/數(shù)據(jù)信息的標志位,該位為1表示該幀為地址信息。
(3)從機接收到地址幀后,會將其接收的地址與本從機的地址相比較。對于地址相符的從機,可置SM2=0,以接收主機隨后發(fā)來的所有信息;而對于地址不相符的從機,則置SM2=1,以繼續(xù)執(zhí)行采集任務(wù)和其它任務(wù)。
(4)當從機發(fā)送數(shù)據(jù)結(jié)束后,會發(fā)送一幀校驗和,并將第9位(TB8)置為1,以作為從機數(shù)據(jù)傳送結(jié)束標志。
(5)控制卡接受數(shù)據(jù)時,先判斷數(shù)據(jù)結(jié)束標志(RB8),若RB8=1,且校驗正確,則回送正確信號00H,此信號可令該從機復(fù)位以重新采集數(shù)據(jù),等待地址幀。若校驗和出錯,則送0FFH,以令該機重發(fā)數(shù)據(jù),如果重發(fā)5次還不行,則認為失敗,并轉(zhuǎn)入其它地址。若接收幀的RB8=0,則將原數(shù)據(jù)鎖定到緩沖區(qū),并準備接收下幀信息。
(6)從機接收到復(fù)位命令后,再回到監(jiān)聽地址狀態(tài)(SM2=1)。
3.2 程序框圖
設(shè)主機發(fā)送的地址信號01H、02H、03H為從機設(shè)備地址,地址FFH是命令各從機恢復(fù)SM2為1的狀態(tài)信號,即復(fù)位。從機的命令編碼為:
01H—請求從機接收通信卡的數(shù)據(jù)命令;
02H—請求從機向通信控制卡發(fā)送數(shù)據(jù);其它均按從機向通信卡發(fā)數(shù)據(jù)處理。
從機的狀態(tài)字節(jié)格式如圖2所示。其中TRDY為1表示從機已準備好接收通信卡的數(shù)據(jù)(見圖2中D1位);RRDY為1表示從機準備好向通信卡發(fā)送數(shù)據(jù)(見圖2中D0位);而ERR=1則表示從機接收到的命令是錯誤的(圖2中D7位)。
該通信控制卡與各智能模塊均采用12MHz晶振,它們之間的波特率為4800bps,采用定時器T1的工作方式2,這樣,當TL1計滿時,TH1將自動送數(shù)給TL1。當波特率為4800bps時,TH1=TL1=0xf3。而通信卡與PC間的波特率為9600bps,故可用產(chǎn)生的脈沖8分頻后送到8253。8253工作在方式3,它產(chǎn)生的周期性方波送給8251A的TXC、RXC,可作為波特率發(fā)生器。用C51實現(xiàn)的通信卡和從機的程序流程圖如圖3和如圖4所示。該通信卡采用查詢方式,從機采用中斷方式進行相互通信,并采用校驗方式進行數(shù)據(jù)校驗,然后將數(shù)據(jù)打包,上傳給上位PC。
本設(shè)計已用于鐵路調(diào)度監(jiān)督系統(tǒng)遠程終端單元中的控制信息采集板和開關(guān)量采集板,以及鐵路微機聯(lián)鎖系統(tǒng)中的上位機控制和模擬屏動態(tài)實時顯示等方面。整個系統(tǒng)實際運行良好,可靠性高,系統(tǒng)性能得到很大的改善