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