專(zhuān)利名稱(chēng):采集次數(shù)控制模式下的多線程數(shù)據(jù)采集系統(tǒng)同步控制方法
技術(shù)領(lǐng)域:
本發(fā)明屬于探地雷達(dá)的探測(cè)技術(shù)領(lǐng)域,特別涉及一種采集次數(shù)控制模式下的探地雷達(dá)多線程數(shù)據(jù)采集系統(tǒng)中多個(gè)相互獨(dú)立線程間的信息交互和同步控制方法,實(shí)現(xiàn)了采集系統(tǒng)的控制功能。
背景技術(shù):
探地雷達(dá)(GPR)是一種快速、高效、無(wú)損探測(cè)的物探方法。傳統(tǒng)的探地雷達(dá)設(shè)備的數(shù)據(jù)采集系統(tǒng)通常采用等效采樣方式,這種采樣方法采樣速度低(每秒發(fā)射和接收的脈沖數(shù)僅為50),對(duì)硬件要求也比較低,單一線程即可完成采樣工作。隨著雷達(dá)快速探測(cè)需求的增加,單一線程已無(wú)法滿(mǎn)足高采樣速率(每秒發(fā)射和接收的脈沖數(shù)I X IO5個(gè)以上,采樣率可達(dá)SGSamples/s以上)和高數(shù)據(jù)量存儲(chǔ)(每秒鐘要存儲(chǔ)數(shù)據(jù)量達(dá)I吉以上)的要求,所以多線程數(shù)據(jù)采集系統(tǒng)成為一個(gè)發(fā)展方向。若是用多個(gè)線程來(lái)協(xié)同完成探地?cái)?shù)據(jù)采集中不同的存取任務(wù)(任務(wù)包括雷達(dá)數(shù)據(jù)采集,頭文件數(shù)據(jù)采集和數(shù)據(jù)寫(xiě)入),其優(yōu)點(diǎn)是可以加快數(shù)據(jù)存取速度,大大提高數(shù)據(jù)采集系統(tǒng)的整體性能。但對(duì)多線程數(shù)據(jù)采集系統(tǒng)來(lái)說(shuō),最重要的難題則是如何實(shí)現(xiàn)多個(gè)相互獨(dú)立線程間的信息交互和同步控制。
發(fā)明內(nèi)容
本發(fā)明的目的是為解決多線程采集系統(tǒng)中的同步控制難題,提出一種基于采集次數(shù)控制模式下的多線程數(shù)據(jù)采集系統(tǒng)同步控制方法,本發(fā)明基于計(jì)算機(jī)控制理論,并利用計(jì)算機(jī)實(shí)現(xiàn)了探地雷達(dá)多線程采集系統(tǒng)的同步控制功能。本發(fā)明方法用多個(gè)線程來(lái)完 成探地?cái)?shù)據(jù)采集中不同的存取任務(wù),任務(wù)包括雷達(dá)數(shù)據(jù)采集,頭文件數(shù)據(jù)采集和數(shù)據(jù)寫(xiě)入,多個(gè)線程在數(shù)據(jù)采集和寫(xiě)入過(guò)程中各自都以循環(huán)形式相互獨(dú)立工作;所述數(shù)據(jù)采集和寫(xiě)入過(guò)程包括以下步驟:I)在所有雷達(dá)數(shù)據(jù)采集線程中設(shè)置一個(gè)整型變量X,用于控制雷達(dá)數(shù)據(jù)采集的總的次數(shù);設(shè)置一個(gè)全局控制變量Y,用于各線程間結(jié)束信息的傳遞;各個(gè)線程設(shè)置自身的局部控制變量Zi, i=l、2、".Ρ,P為總線程的個(gè)數(shù),該局部變量表示其所在線程的運(yùn)行正確與否;此外雷達(dá)數(shù)據(jù)采集線程還設(shè)置各自的采集控制變量%,用于檢測(cè)該雷達(dá)數(shù)據(jù)采集線程的采集次數(shù),j為雷達(dá)數(shù)據(jù)采集線程的個(gè)數(shù),j=l、2、…m,m;四種控制變量均有兩個(gè)狀態(tài):
U rp,,“ P,,.
2)對(duì)整型變量X進(jìn)行加處理,用于實(shí)現(xiàn)各數(shù)據(jù)采集線程的采集次數(shù)分配,具體方法為:對(duì)X值加0,I或2,使加處理后的值V能被m整除,商為XX ;將商XX和每個(gè)雷達(dá)數(shù)據(jù)采集線程的循環(huán)次數(shù)N0C’進(jìn)行比值運(yùn)算CO,所述CO規(guī)則為:如果V小于N0C,則該雷達(dá)數(shù)據(jù)采集線程的控制信號(hào)Su為“F”,如果V大于NOC則該雷達(dá)數(shù)據(jù)采集線程的控制信號(hào)Su為“T” ;同理加處理后的值V與數(shù)據(jù)寫(xiě)入線程的循環(huán)次數(shù)NOC進(jìn)行比值運(yùn)算CO,比值運(yùn)算CO運(yùn)算結(jié)果作為數(shù)據(jù)寫(xiě)入線程的控制信號(hào)S2k,k=l、2、…r,r為數(shù)據(jù)寫(xiě)入線程的個(gè)數(shù);
3)對(duì)所有雷達(dá)數(shù)據(jù)采集線程各自的采集控制變量Qj進(jìn)行布爾“與”運(yùn)算ΒΑ0,所述BAO規(guī)則為:如果所有的采集控制變量全部為“Τ”,則輸出控制信號(hào)S3為“Τ”,如果所有的采集控制變量至少有一個(gè)是“F”,則輸出控制信號(hào)S3為“F”,該控制信號(hào)作為頭文件數(shù)據(jù)采集和數(shù)據(jù)寫(xiě)入線程的控制信號(hào);4)各線程中分別對(duì)所述控制信號(hào)S1PS21^S3和變量Yji進(jìn)行布爾“或”運(yùn)算(B00);所述BOO規(guī)則為:各雷達(dá)數(shù)據(jù)采集線程中,如果Su_、Y和Zi全部為“F”,則該雷達(dá)數(shù)據(jù)采集線程輸出控制信號(hào)&為“F”,如果輸入的SmY和Zi至少有一個(gè)是“T”,則該雷達(dá)數(shù)據(jù)采集線程輸出控制信號(hào)&為“T” ;各頭文件采集線程中,如果輸入的S3、Y和Zi全部為“F”,則該頭文件采集線程輸出控制信號(hào)S5q (q=l、2、…V,V為頭文件采集線程的個(gè)數(shù))為“F”,如果輸入的S3、Y和Zi至少有一個(gè)是“T”,則該頭文件采集線程輸出控制信號(hào)S5q為“T”;各數(shù)據(jù)寫(xiě)入線程中,如果輸入的S2k、S3、Y和Zi全部為“F”,則該數(shù)據(jù)寫(xiě)入線程輸出控制信號(hào)S6k為“F”,如果輸入的S2k、S3、Y和Zi至少有一個(gè)是“T”,則該數(shù)據(jù)寫(xiě)入線程輸出控制信號(hào)S6k為T(mén);5)各個(gè)線程輸出的控制信號(hào)S4j或S5q或S6k控制著各自循環(huán)進(jìn)程(Fl):如果控制信號(hào)為“F”則該線程繼續(xù)運(yùn)行,并將該控制信號(hào)賦值(AO)給全局控制變量Y,重復(fù)步驟2);如果該線程輸出控制信號(hào)為“T”,則將該控制信號(hào)賦值給全局控制變量Y,同時(shí)對(duì)于雷達(dá)數(shù)據(jù)采集和頭文件數(shù)據(jù)采集線程運(yùn)行結(jié)束(End),對(duì)數(shù)據(jù)寫(xiě)入線程則轉(zhuǎn)至步驟6);(所述數(shù)據(jù)寫(xiě)入進(jìn)程還包括以下步驟:)6)檢測(cè)各數(shù)據(jù)寫(xiě)入線程中的數(shù)據(jù)是否全部被寫(xiě)入硬盤(pán)(F2),如果檢測(cè)結(jié)果顯示該線程數(shù)據(jù)全部寫(xiě)入,則該寫(xiě)入線程運(yùn)行結(jié)束(End),如果檢測(cè)結(jié)果顯示該線程數(shù)據(jù)沒(méi)有全部寫(xiě)入,則該寫(xiě)入線程繼續(xù)運(yùn)行,重復(fù)步驟2),從而確保采集到的所有數(shù)據(jù)都被存儲(chǔ)起來(lái)。本發(fā)明的技術(shù)特點(diǎn)及有益效果:
I)采集次數(shù)控制模式下多線程采集系統(tǒng)同步控制方法的實(shí)現(xiàn),使得多個(gè)相互獨(dú)立線程間的信息交互和同步控制成為可能,并通過(guò)預(yù)設(shè)值的采集次數(shù)控制采集過(guò)程;2)多個(gè)線程協(xié)同完成探地?cái)?shù)據(jù)采集中不同的存取任務(wù),可以加快數(shù)據(jù)存取速度,大大提高數(shù)據(jù)采集系統(tǒng)的整體性能;
圖1為本發(fā)明的4線程數(shù)據(jù)采集系統(tǒng)的同步控制流程圖。
具體實(shí)施例方式下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述,圖1為本發(fā)明的4線程數(shù)據(jù)采集系統(tǒng)的同步控制流程圖:本實(shí)例中用到的計(jì)算機(jī)CPU為4核17處理器,達(dá)數(shù)據(jù)采樣設(shè)備為AcqirisU1065A數(shù)字化儀,其實(shí)時(shí)采樣率可達(dá)到SGSamples/s。頭文件數(shù)據(jù)采樣設(shè)備有測(cè)量輪編碼器和QSB-M采集設(shè)備。多線程數(shù)據(jù)采集系統(tǒng)分為4個(gè)線程,多線程數(shù)據(jù)采集系統(tǒng)的同步控制流程圖如圖1所示,4個(gè)線程在數(shù)據(jù)采集和寫(xiě)入過(guò)程中各自都以循環(huán)形式相互獨(dú)立工作。其中雷達(dá)數(shù)據(jù)采集任務(wù)由線程I和線程2完成,頭文件數(shù)據(jù)采集任務(wù)由線程3完成,數(shù)據(jù)寫(xiě)入任務(wù)由線程4完成。雷因Labview開(kāi)發(fā)環(huán)境有其固有的語(yǔ)言?xún)?yōu)勢(shì),本實(shí)例的控制程序是在Labview環(huán)境中開(kāi)發(fā)設(shè)計(jì)的。Labview是美國(guó)國(guó)家儀器(NI)公司研制開(kāi)發(fā)的圖形化編程語(yǔ)言,由其開(kāi)發(fā)出來(lái)的程序都稱(chēng)為VI。一個(gè)VI由3部分組成,程序前面板(FrontPanel)、框圖程序(DiagramProgram)、圖標(biāo)/連接端口(Icon/Terminal)。其中,前面板是圖形化用戶(hù)界面,用于設(shè)置輸入數(shù)值和觀察輸出量??驁D程序是在后臺(tái)用圖形化編程語(yǔ)言編制的,每一個(gè)前面板都有一個(gè)框圖程序與之對(duì)應(yīng)。本實(shí)例所述數(shù)據(jù)采集和寫(xiě)入過(guò)程包括以下步驟:I)在兩個(gè)雷達(dá)數(shù)據(jù)采集線程中設(shè)置一個(gè)整型變量X,用于控制雷達(dá)數(shù)據(jù)采集的總的次數(shù);設(shè)置一個(gè)全局控制變量Y,用于各線程間結(jié)束信息的傳遞;各個(gè)線程設(shè)置自身的局部控制變量Zi, i=l、2、3、4,4為線程的個(gè)數(shù),該局部變量表示其所在線程的運(yùn)行正確與否;此外負(fù)責(zé)雷達(dá)數(shù)據(jù)采集任務(wù)的線程還設(shè)置了各自的采集控制變量Qy用于檢測(cè)該雷達(dá)數(shù)據(jù)采集任務(wù)的線程的采集次數(shù),j=l、2,即有2個(gè)雷達(dá)數(shù)據(jù)采集線程;四種控制變量均有兩個(gè)狀態(tài):“T,,、“F,,;2)對(duì)整型變量X進(jìn)行加處理,用于實(shí)現(xiàn)各數(shù)據(jù)采集線程的采集次數(shù)分配,具體方法為:對(duì)X值加0,I或2,使加處理后的值V能被m整除,商為XX ;將商XX和每個(gè)雷達(dá)數(shù)據(jù)采集線程的循環(huán)次數(shù)N0C’進(jìn)行比值運(yùn)算CO,所述CO規(guī)則為:如果V小于N0C,則該雷達(dá)數(shù)據(jù)采集線程的控制信號(hào)Su為“F”,如果V大于NOC則該雷達(dá)數(shù)據(jù)采集線程的控制信號(hào)Su為“T” ;同理加處理后的值V與數(shù)據(jù)寫(xiě)入線程的循環(huán)次數(shù)NOC進(jìn)行比值運(yùn)算CO,比值運(yùn)算CO運(yùn)算結(jié)果作為數(shù)據(jù)寫(xiě)入線程的控制信號(hào)S2 ;3)對(duì)2個(gè)雷達(dá)數(shù)據(jù)采集線程的采集控制變量Qj進(jìn)行布爾“與”運(yùn)算ΒΑ0,所述BAO規(guī)則為:如果2個(gè)采集控制變量全部為“Τ”,則輸出控制信號(hào)S3為“Τ”,如果2個(gè)采集控制變量至少有一個(gè)是“F”,則輸出控制信號(hào)S3為“F”,該控制信號(hào)作為頭文件數(shù)據(jù)采集和數(shù)據(jù)寫(xiě)入線程的控制信號(hào);4)各線程 中分別對(duì)所述控制信號(hào)Su、S2、S3和變量Yji進(jìn)行布爾“或”運(yùn)算(B00);所述BOO規(guī)則為:兩個(gè)雷達(dá)數(shù)據(jù)采集線程中,如果輸入的SuJ和Zi全部為“F”,則該雷達(dá)數(shù)據(jù)采集線程輸出控制信號(hào)&為“F”,如果輸入的SmY和Zi至少有一個(gè)是“T”,則該雷達(dá)數(shù)據(jù)采集線程輸出控制信號(hào)&為“T”;頭文件采集線程中,如果輸入的S3、Y和Z3全部為“F”,則該頭文件采集線程輸出控制信號(hào)S51為“F”,如果輸入的S3、Y和Z3至少有一個(gè)是“T”,則該頭文件采集線程輸出控制信號(hào)S51為“T” ;數(shù)據(jù)寫(xiě)入線程中,如果輸入的S2、S3、Y和Z4全部為“F”,則該數(shù)據(jù)寫(xiě)入線程輸出控制信號(hào)S61為“F”,如果輸入的S2、S3、Y和Z4至少有一個(gè)是“T”,則該數(shù)據(jù)寫(xiě)入線程輸出控制信號(hào)S61為“T” ;5)各個(gè)線程輸出的控制信號(hào)(S4j或S51或S61)控制著各自循環(huán)進(jìn)程(判據(jù)為Fl):如果控制信號(hào)為“F”則該線程繼續(xù)運(yùn)行,并將該控制信號(hào)賦值(賦值運(yùn)算A0)給全局控制變量Y,重復(fù)步驟2);如果該線程輸出控制信號(hào)為“T”,則將該控制信號(hào)賦值給全局控制變量Y,同時(shí)對(duì)于雷達(dá)數(shù)據(jù)采集和頭文件數(shù)據(jù)采集線程運(yùn)行結(jié)束(End),對(duì)數(shù)據(jù)寫(xiě)入線程則轉(zhuǎn)至步驟6);(所述數(shù)據(jù)寫(xiě)入進(jìn)程還包括以下步驟:)6)檢測(cè)各數(shù)據(jù)寫(xiě)入線程中的數(shù)據(jù)是否全部被寫(xiě)入硬盤(pán)(判據(jù)為F2),如果檢測(cè)結(jié)果顯示該線程數(shù)據(jù)全部寫(xiě)入,則該寫(xiě)入線程運(yùn)行結(jié)束(End),如果檢測(cè)結(jié)果顯示該線程數(shù)據(jù)沒(méi)有全部寫(xiě)入,則該寫(xiě)入線程繼續(xù)運(yùn)行,重復(fù)步驟2),從而確保采集到的所有數(shù)據(jù)都被存儲(chǔ)起來(lái)。
權(quán)利要求
1.一種采集次數(shù)控制模式下的多線程數(shù)據(jù)采集系統(tǒng)同步控制方法,其特征在于,采用多個(gè)線程來(lái)完成探地?cái)?shù)據(jù)采集中不同的存取任務(wù),該存取任務(wù)包括雷達(dá)數(shù)據(jù)采集,頭文件數(shù)據(jù)采集和數(shù)據(jù)寫(xiě)入;多個(gè)線程在數(shù)據(jù)采集和寫(xiě)入過(guò)程中各自根據(jù)控制信號(hào)以循環(huán)形式相互獨(dú)立工作;所述數(shù)據(jù)采集和寫(xiě)入過(guò)程包括以下步驟: 1)在所有雷達(dá)數(shù)據(jù)采集線程中設(shè)置一個(gè)整型變量X,用于控制雷達(dá)數(shù)據(jù)采集的總的次數(shù);設(shè)置一個(gè)全局控制變量Y,用于各線程間結(jié)束信息的傳遞;各個(gè)線程設(shè)置自身的局部控制變量Zi,i=l、2、".Ρ,P為總線程的個(gè)數(shù),該局部變量表示其所在線程的運(yùn)行正確與否;此外雷達(dá)數(shù)據(jù)采集線程還設(shè)置各自的采集控制變量Qy用于檢測(cè)該雷達(dá)數(shù)據(jù)采集線程的采集次數(shù),j為雷達(dá)數(shù)據(jù)采集線程的個(gè)數(shù),j=l、2、…m,m;四種控制變量均有兩個(gè)狀態(tài):“T”、“F,,; 2)對(duì)整型變量X進(jìn)行加處理,用于實(shí)現(xiàn)各數(shù)據(jù)采集線程的采集次數(shù)分配,具體方法為:對(duì)X值加O,I或2,使加處理后的值V能被m整除,商為XX ;將商XX和每個(gè)雷達(dá)數(shù)據(jù)采集線程的循環(huán)次數(shù)NO C’進(jìn)行比值運(yùn)算CO,所述CO規(guī)則為:如果X’小于NOC,則該雷達(dá)數(shù)據(jù)采集線程的控制信號(hào)Su為“F”,如果V大于NOC則該雷達(dá)數(shù)據(jù)采集線程的控制信號(hào)Slj為“T” ;同理加處理后的值V與數(shù)據(jù)寫(xiě)入線程的循環(huán)次數(shù)NOC進(jìn)行比值運(yùn)算CO,比值運(yùn)算CO運(yùn)算結(jié)果作為數(shù)據(jù)寫(xiě)入線程的控制信號(hào)S2k,k=l、2、…r,r為數(shù)據(jù)寫(xiě)入線程的個(gè)數(shù); 3)對(duì)所有雷達(dá)數(shù)據(jù)采集線程各自的采集控制變量進(jìn)行布爾“與”運(yùn)算ΒΑ0,所述BAO規(guī)則為:如果所有的采集控制變量Qj全部為“T”,則輸出控制信號(hào)S3為“T”,如果所有的采集控制變量至少有一個(gè)是“F”,則輸出控制信號(hào)S3為“F”,該控制信號(hào)作為頭文件數(shù)據(jù)采集和數(shù)據(jù)寫(xiě)入線程的控制信號(hào); 4)各線程中分別對(duì)所述控制信號(hào)Su、S2k、S3和變量Y、Zi進(jìn)行布爾“或”運(yùn)算(BOO);所述BOO規(guī)則為:各雷達(dá)數(shù)據(jù)采集線程中,如果S"、Y和Zi全部為“F”,則該雷達(dá)數(shù)據(jù)采集線程輸出控制信號(hào)&為“F”,如果輸入的SmY和Zi至少有一個(gè)是“T”,則該雷達(dá)數(shù)據(jù)采集線程輸出控制信號(hào)&為“T” ;各頭文件采集線程中,如果輸入的S3、Y和Zi全部為“F”,則該頭文件采集線程輸出控制信號(hào)S5q (q=l、2、…V,V為頭文件采集線程的個(gè)數(shù))為“F”,如果輸入的S3、Y和Zi至少有一個(gè)是“T”,則該頭文件采集線程輸出控制信號(hào)S5q為“T”;各數(shù)據(jù)寫(xiě)入線程中,如果輸入的S2k、S3、Y和Zi全部為“F”,則該數(shù)據(jù)寫(xiě)入線程輸出控制信號(hào)S6k為“F”,如果輸入的S2k、S3、Y和Zi至少有一個(gè)是“T”,則該數(shù)據(jù)寫(xiě)入線程輸出控制信號(hào)S6k為“T”; 5)各個(gè)線程輸出的控制信號(hào)&或S5q或S6k控制著各自循環(huán)進(jìn)程(Fl):如果控制信號(hào)為“F”則該線程繼續(xù)運(yùn)行,并將該控制信號(hào)賦值(AO)給全局控制變量Y,重復(fù)步驟2);如果該線程輸出控制信號(hào)為“T”,則將該控制信號(hào)賦值給全局控制變量Y,同時(shí)對(duì)于雷達(dá)數(shù)據(jù)采集和頭文件數(shù)據(jù)采集線程運(yùn)行結(jié)束(End),對(duì)數(shù)據(jù)寫(xiě)入線程則轉(zhuǎn)至步驟6); (所述數(shù)據(jù)寫(xiě)入進(jìn)程還包括以下步驟:) 6)檢測(cè)各數(shù)據(jù)寫(xiě)入線程中的數(shù)據(jù)是否全部被寫(xiě)入硬盤(pán)(F2),如果檢測(cè)結(jié)果顯示該線程數(shù)據(jù)全部寫(xiě)入,則該寫(xiě)入線程運(yùn)行結(jié)束(End),如果檢測(cè)結(jié)果顯示該線程數(shù)據(jù)沒(méi)有全部寫(xiě)入,則該寫(xiě)入線程繼續(xù)運(yùn)行,重復(fù)步驟2),從而確保采集到的所有數(shù)據(jù)都被存儲(chǔ)起來(lái)。
全文摘要
本發(fā)明涉及采集次數(shù)控制模式下的多線程數(shù)據(jù)采集系統(tǒng)同步控制方法,屬于探地雷達(dá)的探測(cè)技術(shù)領(lǐng)域,本方法包括預(yù)先建立一個(gè)控制數(shù)據(jù)采集的次數(shù)整型變量,其加處理和除處理后的值分別與其它兩個(gè)控制變量一起進(jìn)行布爾運(yùn)算并將其結(jié)果作為不同線程的同步控制信號(hào);通過(guò)各線程的判據(jù)函數(shù)和控制變量的賦值則實(shí)現(xiàn)了該模式下多線程的同步控制;寫(xiě)入線程預(yù)置的判據(jù)函數(shù)實(shí)現(xiàn)了對(duì)所有采集數(shù)據(jù)的存儲(chǔ)。本發(fā)明基于計(jì)算機(jī)控制理論,實(shí)現(xiàn)了探地雷達(dá)多線程采集系統(tǒng)的控制功能。
文檔編號(hào)G06F9/38GK103226328SQ20131015003
公開(kāi)日2013年7月31日 申請(qǐng)日期2013年4月21日 優(yōu)先權(quán)日2013年4月21日
發(fā)明者許獻(xiàn)磊, 胡振琪, 彭猛, 高楊 申請(qǐng)人:中國(guó)礦業(yè)大學(xué)(北京)