熊俊俏 (武漢工程大學(xué)電氣信息學(xué)院,湖北武漢430073)
許多數(shù)據(jù)采集場(chǎng)合出現(xiàn)數(shù)據(jù)不能或不必要實(shí)時(shí)傳輸,需要對(duì)數(shù)據(jù)進(jìn)行穩(wěn)定性、可靠性和和安全地存儲(chǔ),這就對(duì)數(shù)據(jù)采集轉(zhuǎn)存系統(tǒng)的容量提出了更高的要求。以MD110程控交換機(jī)為例,筆者設(shè)計(jì)了大容量的數(shù)據(jù)轉(zhuǎn)存系統(tǒng),存儲(chǔ)容量達(dá)到16Mb,能存儲(chǔ)12.5萬(wàn)條電話記錄,滿足1mon的電話記錄容量需要,較好地解決MD110程控交換機(jī)存儲(chǔ)空間小的問(wèn)題。
系統(tǒng)硬件由DS80C320單片機(jī)系統(tǒng)、程序存儲(chǔ)器 (EPROM)、大容量數(shù)據(jù)存儲(chǔ)器 (NVRAM)和非易失性的串行存儲(chǔ)器等組成,系統(tǒng)框圖如圖1所示。單片機(jī)80C320擁有 8051內(nèi)核,工作時(shí)鐘達(dá)到33MHz的高速處理器,擁有 2個(gè)串口(外部電平轉(zhuǎn)換選用MAX232)、可編程的看門狗定時(shí)器、掉電中斷保護(hù)等功能,在高速數(shù)據(jù)處理、協(xié)議轉(zhuǎn)換等方面應(yīng)用廣泛[1~4]。大容量的數(shù)據(jù)存儲(chǔ)器選用HK12A5,為NVRAM器件,單片容量為4Mb,數(shù)據(jù)保存可達(dá)10a以上,這里選用4片HK12A5,總?cè)萘窟_(dá)到16Mb。
圖1 系統(tǒng)框圖
80C320單片機(jī)有4組IO端口,P0為數(shù)據(jù)/地址復(fù)用,P1為聲光報(bào)警、擴(kuò)展串口、掉電保護(hù)的串行存儲(chǔ)器接口使用,P3口為外中斷、串口、讀寫控制等使用。因此,對(duì)于16Mb的外部存儲(chǔ)空間,需要進(jìn)行地址擴(kuò)展,這里采用大規(guī)??删幊唐骷蘒SPLsi1016進(jìn)行擴(kuò)展。
由于存儲(chǔ)器要實(shí)時(shí)寫入和批量讀取數(shù)據(jù),因此必須記錄數(shù)據(jù)寫入和讀取的地址。由于交換機(jī)MD110的數(shù)據(jù)記錄中的日期和時(shí)間不含時(shí)間秒,為了數(shù)據(jù)記錄的完整性,在記錄存儲(chǔ)中還需要由單片機(jī)產(chǎn)生時(shí)間秒,添加到記錄中,系統(tǒng)由定時(shí)器產(chǎn)生秒,并安排存儲(chǔ)空間保存。考慮到數(shù)據(jù)記錄的安全性,系統(tǒng)設(shè)有報(bào)警地址 (距離上次讀數(shù)據(jù)地址一定的空間),即寫地址不能超過(guò)讀地址,具體的端口與空間分配如表1所示。
表1 系統(tǒng)I/O分配與存儲(chǔ)空間分配
系統(tǒng)設(shè)計(jì)中,采用了2片可編程器件,其中GAL16V8用于替代74LS373,用于改善電路PCB板設(shè)計(jì),使布線更加流暢,適合系統(tǒng)高速運(yùn)行,具體的設(shè)計(jì)可參考文獻(xiàn)[5];可編程器件 ISPLsi1016為2000門的邏輯電路,用于擴(kuò)展地址空間,內(nèi)部設(shè)計(jì)2個(gè)8位寄存器和一個(gè)3~8譯碼器,譯碼器產(chǎn)生4片HK12A5的片選信號(hào),其結(jié)構(gòu)如圖2所示。
圖2 地址空間的擴(kuò)展電路
顯然,在讀寫數(shù)據(jù)時(shí),將首先確定讀寫數(shù)據(jù)的地址,高位地址分別寫入鎖存器0和鎖存器1中,低位地址A0~A7則通過(guò)指令賦給DPL寄存器,最后通過(guò)MOVX指令進(jìn)行外部數(shù)據(jù)的讀寫操作。地址寄存器每操作一次,自動(dòng)加1并保存,地址空間為環(huán)形結(jié)構(gòu),即達(dá)到最大存儲(chǔ)空間 (3FFFH)時(shí)將自動(dòng)回到起始地址0000H。
由于數(shù)據(jù)記錄的重要性,系統(tǒng)必須采用較強(qiáng)的保護(hù)措施。首先考慮掉電保護(hù),由于HK12A5為NVRAM,因此掉電對(duì)數(shù)據(jù)存儲(chǔ)器沒(méi)有影響,但數(shù)據(jù)的讀寫地址是需要保存的。系統(tǒng)選用非易失性的93C46串行存儲(chǔ)器,在掉電時(shí)可及時(shí)保存讀寫數(shù)據(jù)地址、報(bào)警地址和重要的標(biāo)志位等。
同時(shí),考慮到數(shù)據(jù)讀、寫的安全性,除分別有讀、寫數(shù)據(jù)地址存儲(chǔ)區(qū)外,還設(shè)有報(bào)警地址。報(bào)警地址與讀數(shù)據(jù)地址間留有100個(gè)記錄的空間,當(dāng)寫數(shù)據(jù)地址達(dá)到報(bào)警地址時(shí),系統(tǒng)提供聲光報(bào)警,提示用戶盡快將數(shù)據(jù)記錄轉(zhuǎn)存到上位機(jī)。若用戶開始讀數(shù)據(jù)記錄時(shí),讀數(shù)據(jù)地址與報(bào)警地址一并后移,否則當(dāng)寫數(shù)據(jù)地址達(dá)到讀數(shù)據(jù)地址時(shí),將停止保存新數(shù)據(jù)記錄,確保數(shù)據(jù)空間的數(shù)據(jù)完整。
系統(tǒng)軟件包括存儲(chǔ)控制器和上位機(jī)2部分,上位機(jī)的軟件設(shè)計(jì)可參考文獻(xiàn) [6],下面筆者重點(diǎn)介紹存儲(chǔ)控制器的軟件設(shè)計(jì)。
控制器程序由主程序、串口中斷服務(wù)子程序、定時(shí)器中斷服務(wù)子程序、看門狗掉電保護(hù)中斷服務(wù)子程序等組成。主程序完成地址空間的初始化、定時(shí)器的設(shè)置、2個(gè)串口通信的波特率設(shè)置等,其中串口1采用查詢方式與上位機(jī)通信,串口0采用中斷方式與交換機(jī)通信。
圖3為主程序流程圖,完成初始化設(shè)置,并采用查詢方式與上位機(jī)進(jìn)行通信,上位機(jī)可通過(guò)命令讀取和設(shè)置當(dāng)前的讀地址值,也可對(duì)時(shí)間秒清零,通過(guò)呼叫信號(hào)采集數(shù)據(jù)記錄,上位機(jī)接收一個(gè)記錄后將再次發(fā)送呼叫信號(hào)。在數(shù)據(jù)傳輸過(guò)程中,讀地址將不斷更新,報(bào)警地址也將隨之更新。當(dāng)讀地址等于寫地址時(shí),將向上位機(jī)發(fā)送實(shí)時(shí)數(shù)據(jù)指令,上位機(jī)將啟動(dòng)數(shù)據(jù)記錄的實(shí)時(shí)顯示[6]。
圖3 主程序流程
串口0的中斷服務(wù)子程序用于接收交換機(jī)的數(shù)據(jù)記錄,除接收交換機(jī)的完整記錄外,在每個(gè)記錄后添加時(shí)間秒,時(shí)間秒與計(jì)費(fèi)無(wú)關(guān) (數(shù)據(jù)記錄中含有計(jì)費(fèi)脈沖數(shù)),只是由于記錄中時(shí)間只有小時(shí)和分鐘,為區(qū)別一分鐘內(nèi)的連續(xù)通話記錄而添加的。掉電中斷服務(wù)子程序在掉電時(shí)觸發(fā),用于保護(hù)讀、寫地址和報(bào)警地址,確保數(shù)據(jù)安全,定時(shí)器中斷服務(wù)子程序則通過(guò)定時(shí)器產(chǎn)生秒計(jì)數(shù)。
基于80C320單片機(jī)設(shè)計(jì)的大容量數(shù)據(jù)存儲(chǔ)系統(tǒng),存儲(chǔ)容量達(dá)到16Mb。如果要擴(kuò)展存儲(chǔ)容量,只需通過(guò)可編程器件進(jìn)行地址擴(kuò)展并增加存儲(chǔ)器即可。通過(guò)實(shí)際使用表明,該系統(tǒng)可穩(wěn)定、可靠地完成數(shù)據(jù)的采集和存儲(chǔ),而且操作方便,擴(kuò)展性強(qiáng),具有一定的工程應(yīng)用價(jià)值和參考價(jià)值。
[1]張宏,李景飛.基于80C320單片機(jī)雙串口同時(shí)通訊的實(shí)現(xiàn) [J].科技資訊,2008,(15):8.
[2]鄧必紅,余臻,王威.基于80C320的通訊控制器的實(shí)現(xiàn)[J].電腦知識(shí)與技術(shù),2006,(10):44,88.
[3]祁文哲,吳慶立,王安民.智能振動(dòng)時(shí)效控制系統(tǒng)的設(shè)計(jì)與應(yīng)用 [J].機(jī)械設(shè)計(jì)與制造,2008(7):112~114.
[4]衛(wèi)曉娟,蔣兆遠(yuǎn).基于80C320型微控制器的系統(tǒng)設(shè)計(jì)和應(yīng)用 [J].電子元器件應(yīng)用,2005,7(1):44~46.
[5]熊俊俏,劉益成.基于∑-△D/A技術(shù)的信號(hào)發(fā)生器的設(shè)計(jì)及E-PLD的應(yīng)用 [J].測(cè)控技術(shù),2002,21(10):64~66.
[6]甘?;?熊俊俏.大容量數(shù)據(jù)采集與數(shù)據(jù)庫(kù)管理系統(tǒng)設(shè)計(jì) [J].測(cè)控技術(shù),2005,24(8):16~17,26.