【LabVIEW開(kāi)發(fā)】如何使用LabVIEW自動(dòng)保存數(shù)據(jù)?

黑夜給了我黑色的眼睛,我卻用它尋找光明

一、 前言

??經(jīng)常做上位機(jī)軟件開(kāi)發(fā)的小伙伴應(yīng)該都比較清楚,當(dāng)硬件采集了很多模擬量數(shù)據(jù)的時(shí)候,甲方不僅會(huì)要求將這些采集的模擬量參數(shù)在上位機(jī)上進(jìn)行實(shí)時(shí)顯示,還會(huì)要求將重要的參數(shù)進(jìn)行本地保存,方便后期查詢,甚至還可能要求將數(shù)據(jù)同步到服務(wù)器的數(shù)據(jù)庫(kù)上。這個(gè)時(shí)候就需要在編寫(xiě)程序的時(shí)候把自動(dòng)保存數(shù)據(jù)的功能考慮進(jìn)去。
??LabVIEW可以保存的文件類型很多,諸如常見(jiàn)的txt、ini、excel文件,還有不怎么常見(jiàn)的tdms、dat、xml、json文件等,種類特別多。具體要將數(shù)據(jù)保存成哪種格式的文件,就要看自身的實(shí)際需求。在實(shí)際的工控項(xiàng)目中,硬件的采樣周期都比較短,所以上傳的數(shù)據(jù)量都特別大,如果設(shè)備在連續(xù)運(yùn)行十天半個(gè)月,硬件采集的數(shù)據(jù)量就非常龐大,將這些數(shù)據(jù)全部保存成文件存儲(chǔ)起來(lái),會(huì)占用比較大的存儲(chǔ)空間,這就要求保存的數(shù)據(jù)文件占用的內(nèi)存空間要盡量小一點(diǎn),這么看二進(jìn)制文件tdms、dat就比較適合。
??今天主要講如何將數(shù)據(jù)自動(dòng)保存到TDMS格式文件中,有些不清楚啥是TDMS的萌新可以去看看我之前寫(xiě)過(guò)一篇關(guān)于TDMS讀寫(xiě)的文章【LabVIEW開(kāi)發(fā)】TDMS文件存儲(chǔ)與讀取,里面的介紹還比較詳細(xì),有時(shí)間可以看看。

二、實(shí)戰(zhàn)練習(xí)

??我的開(kāi)發(fā)環(huán)境:Windows10(64bit)、LabVIEW2017

1、編程思路

??要實(shí)現(xiàn)數(shù)據(jù)的自動(dòng)保存,先要搞清楚兩個(gè)問(wèn)題:一是數(shù)據(jù)的保存周期,即多長(zhǎng)時(shí)間保存一次數(shù)據(jù),這個(gè)就看項(xiàng)目的實(shí)際需求以及硬件的最快采樣頻率,我編寫(xiě)的例子是1s保存一次,僅供參考;二是單個(gè)TDMS文件保存多少次數(shù)據(jù),不能讓一個(gè)文件保存所有數(shù)據(jù),文件太大后期讀取數(shù)據(jù)的時(shí)候速度會(huì)很慢,也不方便按時(shí)間進(jìn)行查詢,這就要求單個(gè)文件存了一定數(shù)量的文件后,程序要自動(dòng)新建新的文件來(lái)保存數(shù)據(jù),這樣就可以保證保存數(shù)據(jù)的單個(gè)文件不至于過(guò)大。
??還有,保存數(shù)據(jù)的文件后綴是.tdms,文件名用"年-月-日 時(shí)'分'秒"進(jìn)行命名。因?yàn)樽x取系統(tǒng)時(shí)間很方便,后期對(duì)數(shù)據(jù)文件進(jìn)行查詢也很方便,只要輸入對(duì)應(yīng)的時(shí)間,就可以查到相應(yīng)的文件進(jìn)行數(shù)據(jù)讀取。

2、實(shí)現(xiàn)過(guò)程

??再來(lái)看看具體實(shí)現(xiàn)的程序,如下圖1所示,我們先用函數(shù)“當(dāng)前VI路徑”進(jìn)行拆分,獲得當(dāng)前VI的路徑,然后用系統(tǒng)時(shí)間給tdms文件命名,最后在創(chuàng)建一個(gè)新的路徑。也就是說(shuō),保存數(shù)據(jù)的文件存放在當(dāng)前VI所在路徑目錄下的save_file文件夾中,文件名是當(dāng)前系統(tǒng)時(shí)間,文件格式是.tdms,然后在whlie循環(huán)外創(chuàng)建TDMS文件。



圖1 程序面板

??程序中用到的函數(shù)模塊如下圖所示:


圖2 文件I/O面板

圖3 TDMS面板

??由于保存一定量的數(shù)據(jù)后,需要自動(dòng)新建新的tdms文件,這讓我立即想到了移位寄存器。在上圖1的whlie循環(huán)中,我把循環(huán)周期設(shè)置成1秒,也就是1秒鐘保存一組數(shù)據(jù),如果把循環(huán)周期設(shè)置成100ms,就是100ms保存一組數(shù)據(jù),這個(gè)主要取決于硬件的采樣頻率和實(shí)際需求。
??用循環(huán)次數(shù)除以60,判斷余數(shù)是否等于0,當(dāng)余數(shù)為0時(shí),說(shuō)明程序循環(huán)了60次,tdms文件保存了60組數(shù)據(jù),然后新建新的tdms文件來(lái)保存數(shù)據(jù),這樣,單個(gè)的tdms文件就不會(huì)過(guò)大。至于單個(gè)文件應(yīng)該保存多少組數(shù)據(jù),可以按實(shí)際需求來(lái)定,還可以在前面板設(shè)置一個(gè)數(shù)值輸入框,動(dòng)態(tài)調(diào)節(jié)單個(gè)文件存儲(chǔ)的數(shù)據(jù)量。實(shí)際上,單個(gè)tdms文件存幾萬(wàn)組數(shù)據(jù)是完全沒(méi)問(wèn)題的,占用的空間也不大。

??我在文件中存儲(chǔ)了2種數(shù)據(jù),一種是隨機(jī)數(shù),一種是固定值。程序每循環(huán)1秒,就往文件中存一組數(shù)據(jù),tdms文件可以存儲(chǔ)的數(shù)據(jù)種類很多,不過(guò)寫(xiě)入之前需要先轉(zhuǎn)換成數(shù)組,至于如何往tdms文件中寫(xiě)入數(shù)據(jù),大家可以看看我之前寫(xiě)的那篇文章。

3、示例結(jié)果

??在程序中,我把保存數(shù)據(jù)的tdms文件存放在當(dāng)前vi同路徑目錄下文件夾save_file中,將程序運(yùn)行一下,看看save_file文件夾下是否有tdms文件


圖4 save_fiel文件夾中的文件

??從上圖4可以看出,save_file文件夾中每1min就生成了一個(gè)tdms文件,對(duì)應(yīng)的還有一個(gè)index文件,這個(gè)不用管它,實(shí)際數(shù)據(jù)都存在.tdms文件中。我們用LabVIEW程序中自帶的TDMS文件查看器模塊查看save_file文件夾中的.tdms文件,結(jié)果如下:


圖5 TDMS文件查看結(jié)果

??在TDMS文件查看器頁(yè)面,打開(kāi)的是save_file文件夾中的第一個(gè).tdms文件,可以看到文件中保存了2列共60行數(shù)據(jù),與我們程序設(shè)計(jì)的要求是吻合的,說(shuō)明數(shù)據(jù)成功存入了對(duì)應(yīng)的.tdms文件中。

三、小結(jié)

??1、存儲(chǔ).tdms文件的路徑可以按自己的實(shí)際需求來(lái)設(shè)置,沒(méi)必要和我一樣;文件名也可以隨意設(shè)置;
??2、枚舉常量“create or replace”是通過(guò)在“創(chuàng)建TDMS文件”模塊的輸入端創(chuàng)建常量得來(lái)的,還可以根據(jù)需求選擇枚舉常量中的其他值;
??3、這個(gè)自動(dòng)分段保存數(shù)據(jù)的程序是我自己琢磨出來(lái)的,有什么不妥的地方或者有更好的方法,歡迎交流。
??



??想要源文件的記得私信我,大概一周以內(nèi)看到就會(huì)回復(fù),或者關(guān)注我的VX公號(hào),新寫(xiě)的博文會(huì)同步到該號(hào)上,感興趣可以關(guān)注一下。
??
本文為原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處!!!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,316評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,481評(píng)論 3 415
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 176,241評(píng)論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,939評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,697評(píng)論 6 409
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,182評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,247評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,406評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,933評(píng)論 1 334
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,772評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,973評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,516評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,209評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,638評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,866評(píng)論 1 285
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,644評(píng)論 3 391
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,953評(píng)論 2 373

推薦閱讀更多精彩內(nèi)容