<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 測(cè)試測(cè)量 > 單片機(jī)測(cè)試系統(tǒng)的數(shù)據(jù)存儲(chǔ)和管理

          單片機(jī)測(cè)試系統(tǒng)的數(shù)據(jù)存儲(chǔ)和管理

          ——
          作者:趙成 袁海文 時(shí)間:2007-10-23 來源:電子設(shè)計(jì)信息網(wǎng) 收藏
              介紹一種應(yīng)用于的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),其特點(diǎn)在于采用數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)方式,并結(jié)合有效的存儲(chǔ)管理方法對(duì)系統(tǒng)的存儲(chǔ)空間進(jìn)行管理和分配,從而在普通的中實(shí)現(xiàn)了對(duì)大量測(cè)試結(jié)果的抽象化數(shù)據(jù)管理,便于系統(tǒng)進(jìn)行數(shù)據(jù)保存、數(shù)據(jù)刪除、數(shù)據(jù)查詢以及與上位機(jī)的數(shù)據(jù)傳輸?shù)雀黜?xiàng)操作,增強(qiáng)了系統(tǒng)的可靠性和可繼承性。

            引言

            在自動(dòng)化測(cè)試領(lǐng)域里,憑借其成熟的應(yīng)用體系,簡(jiǎn)單的系統(tǒng)結(jié)構(gòu)以及優(yōu)良的性價(jià)比得到了越來越廣泛的應(yīng)用。近年來,隨著新的測(cè)試對(duì)象不斷出現(xiàn),以及測(cè)試手段的不斷發(fā)展,測(cè)試系統(tǒng)的功能越來越完善,各種應(yīng)用場(chǎng)合對(duì)測(cè)試系統(tǒng)的要求也日益提高?,F(xiàn)在的大多數(shù)測(cè)試系統(tǒng)不僅要完成工業(yè)現(xiàn)場(chǎng)的實(shí)時(shí)測(cè)控任務(wù),同時(shí)還要進(jìn)一步實(shí)現(xiàn)對(duì)測(cè)試數(shù)據(jù)的實(shí)時(shí)處理和保存。以往在一般的單片機(jī)測(cè)試系統(tǒng)中,信息的存儲(chǔ)量并不大,系統(tǒng)只須用較少的資源就能實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)。但是隨著存儲(chǔ)芯片技術(shù)的不斷發(fā)展,適用于單片機(jī)系統(tǒng)的存儲(chǔ)芯片已經(jīng)可以在掉電保護(hù)的情況下保存上百KB甚至幾MB的數(shù)據(jù);同樣,目前的單片機(jī)測(cè)試系統(tǒng)也面臨動(dòng)輒處理并保存上千條乃至近萬條測(cè)試數(shù)據(jù)的問題。這對(duì)一般的缺少操作系統(tǒng)支持的單片機(jī)測(cè)試系統(tǒng)來說,是一項(xiàng)相當(dāng)復(fù)雜的工作,因而目前的測(cè)試系統(tǒng)往往只能針對(duì)具體數(shù)值對(duì)象進(jìn)行處理,對(duì)大量采集數(shù)據(jù)采取簡(jiǎn)單的順序存儲(chǔ)方式。顯然,這種方法缺少靈活性,不利于單片機(jī)測(cè)試系統(tǒng)處理大量測(cè)試數(shù)據(jù),限制了測(cè)試系統(tǒng)在這方面的發(fā)展。

            本文主要針對(duì)處理測(cè)試數(shù)據(jù)量較大的一類測(cè)試系統(tǒng),討論測(cè)試數(shù)據(jù)的存儲(chǔ)和管理問題。這類測(cè)試系統(tǒng)往往由抗干擾能力較強(qiáng)的單片機(jī)和大容量、掉電保護(hù)的存儲(chǔ)芯片組成,同時(shí)配有高精度數(shù)字式傳感器;造價(jià)便宜,性能穩(wěn)定,適合工作在工業(yè)現(xiàn)場(chǎng),保存和處理大量測(cè)試數(shù)據(jù),有的甚至能夠與上位機(jī)組成測(cè)控網(wǎng)絡(luò)完成更為復(fù)雜的測(cè)試任務(wù)。本文將介紹一種應(yīng)用于單片機(jī)測(cè)試系統(tǒng)的鏈?zhǔn)酱鎯?chǔ)方式,能夠在工業(yè)現(xiàn)場(chǎng)進(jìn)行實(shí)時(shí)測(cè)控的同時(shí),實(shí)現(xiàn)對(duì)大量測(cè)試數(shù)據(jù)的保存和管理,在實(shí)際應(yīng)用中取得了良好的效果。

            大容量單片機(jī)測(cè)試系統(tǒng)中的存儲(chǔ)結(jié)構(gòu)

            在大多數(shù)自動(dòng)測(cè)試系統(tǒng)中,測(cè)試數(shù)據(jù)的邏輯結(jié)構(gòu)一般都會(huì)遵循線性邏輯關(guān)系,即數(shù)據(jù)元素在時(shí)間或者空間順序上只分先后次序而不存在上下層次。因此在設(shè)計(jì)存儲(chǔ)結(jié)構(gòu)時(shí)往往采用順序存儲(chǔ)結(jié)構(gòu),其優(yōu)點(diǎn)在于處理線性數(shù)據(jù)結(jié)構(gòu)時(shí)速度快,而且結(jié)構(gòu)簡(jiǎn)單。

            但是上述情況在前文所述的大容量測(cè)試系統(tǒng)中并不是普遍適用的。大容量測(cè)試系統(tǒng)雖然同樣是線性邏輯結(jié)構(gòu),但其測(cè)試數(shù)據(jù)變化多樣,構(gòu)成數(shù)據(jù)元素的內(nèi)部結(jié)構(gòu)也非常復(fù)雜,而且系統(tǒng)又要執(zhí)行數(shù)據(jù)保存和數(shù)據(jù)查詢等多項(xiàng)指令操作,如果再應(yīng)用順序存儲(chǔ)結(jié)構(gòu)就會(huì)面臨許多問題。

            首先,測(cè)試系統(tǒng)經(jīng)常會(huì)面臨一些較為特殊的測(cè)試對(duì)象。其測(cè)試信息較為復(fù)雜且數(shù)據(jù)長(zhǎng)度不固定,顯然不利于采用順序存儲(chǔ)結(jié)構(gòu)。假設(shè)系統(tǒng)按照時(shí)間或空間上的邏輯順序來進(jìn)行順序存儲(chǔ),那么對(duì)存儲(chǔ)空間的分配將成為難題。若分配空間過大,則影響存儲(chǔ)效率;反之,又會(huì)出現(xiàn)數(shù)據(jù)溢出的情況。類似地,假設(shè)系統(tǒng)能夠安排好數(shù)據(jù)的存放空間,在進(jìn)行數(shù)據(jù)查詢、數(shù)據(jù)刪除等操作時(shí)系統(tǒng)也會(huì)顯得力不從心。

            其次,采用順序存儲(chǔ)結(jié)構(gòu)不能很好地處理抽象數(shù)據(jù)類型。系統(tǒng)在進(jìn)行數(shù)據(jù)保存、數(shù)據(jù)查詢以及數(shù)據(jù)刪除等操作時(shí)都要考慮數(shù)據(jù)元素的長(zhǎng)度和內(nèi)容,不能做到靈活、有效。當(dāng)系統(tǒng)需要修改或升級(jí)時(shí),對(duì)數(shù)據(jù)元素內(nèi)部結(jié)構(gòu)的修改又會(huì)影響到系統(tǒng)的整體操作,從而降低了系統(tǒng)的可靠性和高效性,同時(shí)使得系統(tǒng)進(jìn)行維護(hù)和升級(jí)的難度大大增加。

            綜上所述,順序存儲(chǔ)結(jié)構(gòu)并不能解決大容量測(cè)試系統(tǒng)在存儲(chǔ)和管理數(shù)據(jù)時(shí)面臨的所有問題,因此在實(shí)際操作中必須考慮非順序存儲(chǔ)結(jié)構(gòu)的應(yīng)用。長(zhǎng)久以來,在單片機(jī)系統(tǒng)中較少采用諸如鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)等非順序存儲(chǔ)結(jié)構(gòu),原因在于鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)必須有一套專門的存儲(chǔ)管理系統(tǒng)來支持。在通用計(jì)算機(jī)中,這一功能由操作系統(tǒng)或高級(jí)語言的編譯系統(tǒng)來實(shí)現(xiàn),但在普通單片機(jī)系統(tǒng)中沒有成熟的應(yīng)用案例,因而使程序設(shè)計(jì)的難度較高。下面介紹一種應(yīng)用于大容量單片機(jī)系統(tǒng)的存儲(chǔ)管理系統(tǒng),能夠支持大容量單片機(jī)測(cè)試系統(tǒng)的應(yīng)用鏈?zhǔn)酱鎯?chǔ)方式。

            大容量測(cè)試系統(tǒng)的存儲(chǔ)管理系統(tǒng)

            對(duì)于采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的大容量測(cè)試系統(tǒng),鏈表中各結(jié)點(diǎn)的物理地址是不固定的。為避免在保存數(shù)據(jù)時(shí)可能出現(xiàn)的存儲(chǔ)空間沖突問題,需要建立專門的存儲(chǔ)管理系統(tǒng)來管理存儲(chǔ)空間的開辟和釋放。其中,數(shù)據(jù)引導(dǎo)表是存儲(chǔ)管理系統(tǒng)的基礎(chǔ),負(fù)責(zé)記錄存儲(chǔ)空間中各個(gè)數(shù)據(jù)元素的存儲(chǔ)信息。利用數(shù)據(jù)引導(dǎo)表,同時(shí)配合實(shí)現(xiàn)開辟空間、釋放空間等操作的函數(shù),測(cè)試系統(tǒng)能夠?qū)崿F(xiàn)對(duì)大量存儲(chǔ)空間的有效管理。

            數(shù)據(jù)引導(dǎo)表

            建立數(shù)據(jù)引導(dǎo)表,就是建立一種鏈表中各結(jié)點(diǎn)與其相應(yīng)物理地址之間的聯(lián)系,規(guī)范每個(gè)結(jié)點(diǎn)對(duì)存儲(chǔ)空間的使用。在測(cè)試系統(tǒng)中,引導(dǎo)表只是占用存儲(chǔ)空間內(nèi)劃分的一段固定區(qū)域,其記錄對(duì)象是一段已被分配占用的連續(xù)地址空間的首地址和末地址,標(biāo)志著保存在存儲(chǔ)空間上的某個(gè)結(jié)點(diǎn)所分配占用的空間大小,稱為一個(gè)“記錄”。各個(gè)記錄在引導(dǎo)表中的物理地址是連續(xù)的,并且按照每個(gè)記錄首地址的大小依次排列。數(shù)據(jù)引導(dǎo)表工作原理如圖1所示。



          圖1 數(shù)據(jù)引導(dǎo)表工作原理示意圖

            在初始狀態(tài)時(shí),內(nèi)存引導(dǎo)表只有2個(gè)記錄,表明整個(gè)存儲(chǔ)空間的首地址和末地址,此時(shí)整個(gè)頁面空間沒有存儲(chǔ)任何測(cè)試數(shù)據(jù)。一旦有新的結(jié)點(diǎn)需要在這一空間上保存,CPU將為該結(jié)點(diǎn)開辟一段連續(xù)的存儲(chǔ)區(qū)間供其使用,并將該段空間的首地址和末地址作為一個(gè)記錄寫入內(nèi)存引導(dǎo)表中。同樣的當(dāng)系統(tǒng)需要在某一頁面上刪除一個(gè)鏈表中的結(jié)點(diǎn)時(shí),CPU將其對(duì)應(yīng)的記錄在內(nèi)存引導(dǎo)表中刪除,以此來釋放此段地址空間。值得說明的是,對(duì)于在引導(dǎo)表中被釋放的存儲(chǔ)空間部分,其保存的內(nèi)容并沒有真正刪除;在新的數(shù)據(jù)覆蓋該地址之前,CPU還是可以通過直接訪問該地址來讀取其中的存儲(chǔ)數(shù)據(jù)。

            管理存儲(chǔ)空間的函數(shù)

            一般來講,在通用計(jì)算機(jī)中往往利用C語言中的標(biāo)準(zhǔn)庫函數(shù)malloc()、realloc()和free()來實(shí)現(xiàn)對(duì)存儲(chǔ)空間的分配和管理,但這種方式對(duì)于一般的大容量測(cè)試系統(tǒng)并不合適。

            假設(shè)在前文所述的大容量測(cè)試系統(tǒng)中,系統(tǒng)采用16位地址的單片機(jī),利用分頁存儲(chǔ)模式對(duì)512KB掉電保護(hù)存儲(chǔ)器進(jìn)行訪問。將存儲(chǔ)器分為16個(gè)頁面(00H~0FH),每個(gè)頁面地址為0000H~7FFFFH,共計(jì)32KB。此時(shí)系統(tǒng)利用malloc()可以在未被使用的空間中開辟一段存儲(chǔ)空間,但是該函數(shù)返回的地址指針是隨機(jī)的,有可能將空間分配在系統(tǒng)無法識(shí)別的區(qū)間(如7FFFH~FFFFH),因此不能滿足需要。另外,由于系統(tǒng)中存儲(chǔ)器具有掉電保護(hù)功能,CPU在重新上電后將無法識(shí)別已保存測(cè)試數(shù)據(jù)的存儲(chǔ)空間,從而使malloc()函數(shù)失去意義。因此,還是以數(shù)據(jù)引導(dǎo)表為基礎(chǔ)來建立存儲(chǔ)空間的管理函數(shù)。其具體功能的實(shí)現(xiàn)都依賴于函數(shù)對(duì)數(shù)據(jù)引導(dǎo)表中各個(gè)記錄的操作,程序如下:  

            void *m_alloc(uintsize,ucharpage)//開辟存儲(chǔ)空間的函數(shù)
            void *m_free(voidxdata*p_free,ucharpage)//釋放已開辟存儲(chǔ)空間的函數(shù)
            void *re_alloc(voidxdata*p_re,uintsize,ucharpage)//重新開辟存儲(chǔ)空間的函數(shù)

            以m_alloc()函數(shù)為例,其程序流程圖如圖2所示。



          圖2 開辟存儲(chǔ)空間函數(shù)m_alloc()的程序流程

            當(dāng)系統(tǒng)需要為某一結(jié)點(diǎn)開辟存儲(chǔ)空間時(shí),首先給出指定的存儲(chǔ)空間頁面page和需要開辟空間的長(zhǎng)度size,然后通過m_alloc()函數(shù)在相應(yīng)頁面的引導(dǎo)表內(nèi)查詢是否有合適的存儲(chǔ)空間。由于引導(dǎo)表中每個(gè)記錄都代表一段已被分配的連續(xù)的地址區(qū)間,因此m_alloc()函數(shù)會(huì)從第一個(gè)記錄開始判斷每?jī)蓚€(gè)相鄰記錄之間未被分配空間的長(zhǎng)度是否滿足系統(tǒng)的需要。當(dāng)有一對(duì)記錄滿足條件時(shí),m_alloc()函數(shù)會(huì)返回該段未被分配存儲(chǔ)空間的首地址(即前一個(gè)記錄的末地址)指針,同時(shí)在這兩個(gè)記錄中間插入此次開辟空間段的新記錄。如果該頁面引導(dǎo)表的所有記錄都不滿足條件,則m_alloc()函數(shù)返回空指針。re_alloc()函數(shù)和m_free()函數(shù)分別完成重新分配指定首地址的一段存儲(chǔ)空間和刪除指定首地址的一段存儲(chǔ)空間的操作。其功能和用法與m_alloc()類似,不再贅述。

            鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)和存儲(chǔ)管理系統(tǒng)在實(shí)際操作中的應(yīng)用

            利用上文所述的存儲(chǔ)管理系統(tǒng)可以實(shí)現(xiàn)在大容量測(cè)試系統(tǒng)中應(yīng)用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),這樣做的好處在于能夠有效地簡(jiǎn)化系統(tǒng)存儲(chǔ)數(shù)據(jù)的過程,有利于執(zhí)行多項(xiàng)指令操作,提高系統(tǒng)存儲(chǔ)空間的利用率。

            SF6密度繼電器校驗(yàn)系統(tǒng)

            如圖3所示,SF6密度繼電器校驗(yàn)系統(tǒng)由51系列單片機(jī)、512KB掉電保護(hù)存儲(chǔ)器、打印機(jī)、時(shí)鐘系統(tǒng)和LCD組成,配有高精度的數(shù)字式壓力傳感器和溫度傳感器,可以通過485總線與上位機(jī)通信。該系統(tǒng)能夠?qū)Σ煌愋偷拿芏壤^電器進(jìn)行校驗(yàn),滿足各種額定參數(shù)和接點(diǎn)數(shù)目的需要,在校驗(yàn)過程中實(shí)現(xiàn)實(shí)時(shí)顯示、打印數(shù)據(jù)等多項(xiàng)功能;對(duì)同一繼電器能夠保存多組校驗(yàn)數(shù)據(jù),最多可保存4000多條校驗(yàn)數(shù)據(jù);對(duì)于所有的校驗(yàn)記錄,都可以隨時(shí)進(jìn)行查詢;另外,在與上位機(jī)進(jìn)行通信時(shí),有相應(yīng)的上位機(jī)軟件對(duì)下位機(jī)系統(tǒng)進(jìn)行的數(shù)據(jù)傳輸、存儲(chǔ)器空間查詢和數(shù)據(jù)刪除等操作。



          圖3 SF6密度繼電器校驗(yàn)系統(tǒng)結(jié)構(gòu)框圖

            具體來講,SF6密度繼電器校驗(yàn)系統(tǒng)以SF6密度繼電器作為校驗(yàn)對(duì)象,校驗(yàn)結(jié)果包含SF6氣體的壓力值和溫度值,因此將每個(gè)校驗(yàn)對(duì)象的校驗(yàn)結(jié)果抽象為一個(gè)數(shù)據(jù)元素,分別包括該校驗(yàn)對(duì)象的測(cè)試信息(如測(cè)試日期,繼電器的測(cè)試序號(hào)、接點(diǎn)數(shù)目和額定參數(shù)信息)和一組或多組的測(cè)量值信息(如校驗(yàn)次數(shù)、報(bào)警、閉鎖1、閉鎖2、超壓接點(diǎn)分別動(dòng)作、返回時(shí)的壓力值和溫度值)。系統(tǒng)以每個(gè)數(shù)據(jù)元素為結(jié)點(diǎn)建立鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),并通過上述的管理存儲(chǔ)系統(tǒng)來管理存儲(chǔ)空間的分配,這樣既能保證有效、合理地保存校驗(yàn)數(shù)據(jù),又能很好地實(shí)現(xiàn)數(shù)據(jù)查詢、數(shù)據(jù)刪除以及與上位機(jī)通信等操作,使系統(tǒng)的運(yùn)行更加高效可靠。

            非線性邏輯結(jié)構(gòu)的自動(dòng)測(cè)試系統(tǒng)

            當(dāng)自動(dòng)測(cè)試系統(tǒng)面臨非線性邏輯結(jié)構(gòu)的數(shù)據(jù)元素時(shí),必須要采取非順序存儲(chǔ)結(jié)構(gòu)來保存數(shù)據(jù),此時(shí)可以考慮鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),或者索引存儲(chǔ)結(jié)構(gòu)以及二叉樹等各種非順序存儲(chǔ)結(jié)構(gòu),但前提條件都是要有一套專門的存儲(chǔ)管理系統(tǒng)來支持。

            有了上述的存儲(chǔ)管理系統(tǒng)作基礎(chǔ),各種非順序存儲(chǔ)結(jié)構(gòu)的應(yīng)用就成為可能。在設(shè)計(jì)系統(tǒng)時(shí)充分權(quán)衡存儲(chǔ)空間的利用率和算法所耗費(fèi)的時(shí)間,就能夠有針對(duì)性地應(yīng)用多種存儲(chǔ)結(jié)構(gòu)并設(shè)計(jì)出相應(yīng)的算法,以滿足各種測(cè)試對(duì)象和測(cè)試環(huán)境的要求。

            結(jié)語

            以鏈?zhǔn)浇Y(jié)構(gòu)的形式保存數(shù)據(jù)和通過數(shù)據(jù)引導(dǎo)表來管理存儲(chǔ)空間,是應(yīng)用于大容量單片機(jī)測(cè)試系統(tǒng)的一種新的數(shù)據(jù)保存和管理方式。

            這種存儲(chǔ)方式既適用于線性邏輯結(jié)構(gòu)測(cè)試系統(tǒng),也適用于非線性邏輯結(jié)構(gòu)測(cè)試系統(tǒng),總體上使得單片機(jī)系統(tǒng)在處理多項(xiàng)復(fù)雜數(shù)據(jù)并進(jìn)行反復(fù)保存、查詢和刪除等操作時(shí)更加快捷簡(jiǎn)便,提高了對(duì)有限容量存儲(chǔ)空間的利用率;同時(shí),結(jié)構(gòu)化的使得系統(tǒng)的維護(hù)和升級(jí)更加輕松,實(shí)現(xiàn)了系統(tǒng)的結(jié)構(gòu)化管理。



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();