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