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