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