多通道超聲波探傷實時處理-飛泰
多通道系統(tǒng)的超聲探傷波形數(shù)據(jù)需要實時傳輸?shù)轿⑻幚砥鬟M(jìn)行處理和顯示,應(yīng)用程序還需要監(jiān)控多通道的實時報警情況。這些功能都是通過軟硬件共同實現(xiàn)的,其中 FPGA 相關(guān)算法模塊實現(xiàn)多通道高速采樣數(shù)據(jù)的非均勻壓縮算法和閘門報警算法,應(yīng)用程序?qū)崿F(xiàn)軟件功能的控制與數(shù)據(jù)的存儲等。實時功能模塊的設(shè)計直接影響本系統(tǒng)的性能指標(biāo),也是超聲波探傷系統(tǒng)的技術(shù)重點(diǎn)和難點(diǎn)。
1.多通道超聲回波信號輸入到 AD9212 進(jìn)行高速采樣,采樣后的數(shù)字信號送入 FPGA。FPGA對多通道高速數(shù)字信號進(jìn)行并行非均勻壓縮,壓縮后的數(shù)據(jù)存放在 8 個 FIFO 中。因為 ARM 子系統(tǒng)同時只處理一個物理通道的數(shù)據(jù),所以,同一時刻 FPGA 也只有一個 FIFO 與 ARM 子系統(tǒng)連接,稱為當(dāng)前實時波形 FIFO。當(dāng)當(dāng)前實時波形 FIFO 產(chǎn)生完一幀數(shù)據(jù)時,F(xiàn)PGA 向 ARM 子系統(tǒng)發(fā)送一個硬件中斷 int1。如果開啟了硬件報警功能,相關(guān)通道實時數(shù)據(jù) FIFO 將繼續(xù)輸入到FPGA 中的實時報警模塊,分別與相應(yīng)的閘門數(shù)據(jù)進(jìn)行比較,如果數(shù)據(jù)超過相應(yīng)的閘門門限值,將進(jìn)行實時聲光報警,并對相應(yīng)的狀態(tài)寄存器進(jìn)行置位。當(dāng)實時報警模塊判定報警結(jié)束時,將產(chǎn)生的報警數(shù)據(jù)寫入相應(yīng)的報警數(shù)據(jù) FIFO 中,并向 ARM 子系統(tǒng)發(fā)送硬件中斷 int2。以上是FPGA 相關(guān)算法模塊的具體工作。
2.操作系統(tǒng)接收到外部中斷 int1 或者 int2 后,根據(jù)相關(guān)驅(qū)動程序中已經(jīng)注冊的中斷,調(diào)用相關(guān)的驅(qū)動程序中的中斷服務(wù)子程序。探傷系統(tǒng)中,int1 的中斷服務(wù)子程序在實時波形模塊驅(qū)動程序中實現(xiàn),int2 的中斷服務(wù)子程序在實時報警模塊驅(qū)動程序中實現(xiàn)。在這兩個中斷服務(wù)子程序中,都向應(yīng)用程序發(fā)送了 SIGIO 信號,從而通知應(yīng)用程序波形數(shù)據(jù)或者報警數(shù)據(jù)已經(jīng)就緒。
3.應(yīng)用程序在運(yùn)行過程中接收到 SIGIO 信號后,便跳轉(zhuǎn)到相應(yīng)的信號處理函數(shù)。首先通過調(diào)用實時報警模塊驅(qū)動程序中的 ioctl(),判斷是否是報警中斷。如果是報警中斷,則將報警 FIFO中的數(shù)據(jù)讀取到用戶空間并保存;如果是實時波形中斷,則首先通過 ioctl() 方法讀取報警狀態(tài)寄存器 reg_state,根據(jù) reg_state 判斷哪幾個通道發(fā)生報警,并在顯示屏上進(jìn)行顯示,然后將當(dāng)前通道的數(shù)據(jù)從 FIFO 中讀取到用戶空間,進(jìn)行處理后在波形區(qū)域?qū)崟r顯示。