電池高速測量數(shù)據(jù)的實時采集與保存
發(fā)布時間:2021-08-10 04:55
針對電池生產(chǎn)管理需求,在高速驗電機(jī)上開發(fā)數(shù)據(jù)采集與保存系統(tǒng),記錄每只電池的電參數(shù),為電池的質(zhì)量管理提供基礎(chǔ)數(shù)據(jù)。系統(tǒng)設(shè)計出一種特殊數(shù)據(jù)包的格式和多線程機(jī)制方法,確保在串口通信時能穩(wěn)定可靠的進(jìn)行,同時避免采集噪聲干擾后的數(shù)據(jù)。系統(tǒng)采集的數(shù)據(jù)既可快速保存在數(shù)據(jù)庫中,用WEB瀏覽器進(jìn)行查詢和統(tǒng)計,也可保存在TXT文檔中。
【文章來源】:電池. 2020,50(05)北大核心CSCD
【文章頁數(shù)】:3 頁
【部分圖文】:
圖1 串口讀數(shù)據(jù)的線程模型
圖1 串口讀數(shù)據(jù)的線程模型根據(jù)RXTXcomm串口驅(qū)動源碼的termios.c文件下參數(shù)timeouts.Read Interval Timeout=0的定義,數(shù)據(jù)包下的各幀沒有空閑位,因此數(shù)據(jù)包設(shè)計符合要求。信道出現(xiàn)數(shù)據(jù)時,串口會觸發(fā)一次事件,通知數(shù)據(jù)處理線程處理,但會出現(xiàn)數(shù)據(jù)包丟失的現(xiàn)象。經(jīng)過多次實驗分析,得知有兩個原因:(1)完全接受一個數(shù)據(jù)包需要一定的時間,當(dāng)有數(shù)據(jù)到達(dá)時,緩存的字節(jié)數(shù)有時不夠20字節(jié),當(dāng)前數(shù)據(jù)包需要下次數(shù)據(jù)到達(dá)時才接收;(2)如果測試儀發(fā)送信號和接收線程觸發(fā)的事件太快,數(shù)據(jù)處理線程在某些時刻的速度趕不上接收線程,有些事件來不及觸發(fā),緩存就會隨著時間的增長累積更多的數(shù)據(jù),且數(shù)據(jù)處理線程每次取數(shù)采用字節(jié)數(shù)組read Buffer[20]進(jìn)行接收,取完第1個數(shù)據(jù)包,第2個數(shù)據(jù)包已在緩存,而事件來不及觸發(fā),就要等第3個數(shù)據(jù)包到達(dá)才讀第2個數(shù)據(jù)包。這樣,隨著時間的推移,會導(dǎo)致內(nèi)存溢出和數(shù)據(jù)包丟失。
解決方法:(1)數(shù)據(jù)處理線程等待一小段時間,時間長短由串口的波特率和單個數(shù)據(jù)包的大小決定,讓當(dāng)前數(shù)據(jù)包完全到達(dá)緩存后,再讀數(shù);(2)取消對available()>=20的判斷,增加接收字節(jié)數(shù)組長度,定義為byte[]read Buffer=new byte[44],并約定數(shù)據(jù)包的前兩字節(jié)為生產(chǎn)線號標(biāo)識(見圖3)。數(shù)據(jù)處理線程判斷接收read Buffer數(shù)組的前兩位,如果符合生產(chǎn)線號標(biāo)識的約定,即為有效數(shù)據(jù);如果數(shù)組的第45位元數(shù)到48位元數(shù)也符合生產(chǎn)線號標(biāo)識的約定,即有兩個有效數(shù)據(jù)包,否則只有一個有效數(shù)據(jù)包。使用這些較為簡單的約定,就能避免串口速度過快的問題,緩存數(shù)據(jù)也能及時讀取,保障每個數(shù)據(jù)幀的完整性。檢測儀在開機(jī)和關(guān)機(jī)時,會產(chǎn)生一個全低電平或全高電平的無效數(shù)據(jù),使用生產(chǎn)線號標(biāo)識,也可避免垃圾數(shù)據(jù)進(jìn)入數(shù)據(jù)庫,并過濾一些受到噪聲干擾而產(chǎn)生的錯誤數(shù)據(jù)。生產(chǎn)線號標(biāo)識設(shè)定也有特殊意義,如A55A表達(dá)的二進(jìn)制數(shù)為1010010101011010,表達(dá)的高低電平曲線明顯,相比設(shè)計成0001、0003等更可靠。
【參考文獻(xiàn)】:
期刊論文
[1]堿性鋅錳電池生產(chǎn)設(shè)備的進(jìn)展和發(fā)展方向[J]. 李勝,楊林. 電池. 2015(04)
[2]磁盤存儲系統(tǒng)節(jié)能技術(shù)研究綜述[J]. 田磊,馮丹,岳銀亮,吳素貞,毛波. 計算機(jī)科學(xué). 2010(09)
碩士論文
[1]基于FLASH-DISK混合存儲數(shù)據(jù)動態(tài)遷移的研究[D]. 魏紅偉.湖南大學(xué) 2013
本文編號:3333504
【文章來源】:電池. 2020,50(05)北大核心CSCD
【文章頁數(shù)】:3 頁
【部分圖文】:
圖1 串口讀數(shù)據(jù)的線程模型
圖1 串口讀數(shù)據(jù)的線程模型根據(jù)RXTXcomm串口驅(qū)動源碼的termios.c文件下參數(shù)timeouts.Read Interval Timeout=0的定義,數(shù)據(jù)包下的各幀沒有空閑位,因此數(shù)據(jù)包設(shè)計符合要求。信道出現(xiàn)數(shù)據(jù)時,串口會觸發(fā)一次事件,通知數(shù)據(jù)處理線程處理,但會出現(xiàn)數(shù)據(jù)包丟失的現(xiàn)象。經(jīng)過多次實驗分析,得知有兩個原因:(1)完全接受一個數(shù)據(jù)包需要一定的時間,當(dāng)有數(shù)據(jù)到達(dá)時,緩存的字節(jié)數(shù)有時不夠20字節(jié),當(dāng)前數(shù)據(jù)包需要下次數(shù)據(jù)到達(dá)時才接收;(2)如果測試儀發(fā)送信號和接收線程觸發(fā)的事件太快,數(shù)據(jù)處理線程在某些時刻的速度趕不上接收線程,有些事件來不及觸發(fā),緩存就會隨著時間的增長累積更多的數(shù)據(jù),且數(shù)據(jù)處理線程每次取數(shù)采用字節(jié)數(shù)組read Buffer[20]進(jìn)行接收,取完第1個數(shù)據(jù)包,第2個數(shù)據(jù)包已在緩存,而事件來不及觸發(fā),就要等第3個數(shù)據(jù)包到達(dá)才讀第2個數(shù)據(jù)包。這樣,隨著時間的推移,會導(dǎo)致內(nèi)存溢出和數(shù)據(jù)包丟失。
解決方法:(1)數(shù)據(jù)處理線程等待一小段時間,時間長短由串口的波特率和單個數(shù)據(jù)包的大小決定,讓當(dāng)前數(shù)據(jù)包完全到達(dá)緩存后,再讀數(shù);(2)取消對available()>=20的判斷,增加接收字節(jié)數(shù)組長度,定義為byte[]read Buffer=new byte[44],并約定數(shù)據(jù)包的前兩字節(jié)為生產(chǎn)線號標(biāo)識(見圖3)。數(shù)據(jù)處理線程判斷接收read Buffer數(shù)組的前兩位,如果符合生產(chǎn)線號標(biāo)識的約定,即為有效數(shù)據(jù);如果數(shù)組的第45位元數(shù)到48位元數(shù)也符合生產(chǎn)線號標(biāo)識的約定,即有兩個有效數(shù)據(jù)包,否則只有一個有效數(shù)據(jù)包。使用這些較為簡單的約定,就能避免串口速度過快的問題,緩存數(shù)據(jù)也能及時讀取,保障每個數(shù)據(jù)幀的完整性。檢測儀在開機(jī)和關(guān)機(jī)時,會產(chǎn)生一個全低電平或全高電平的無效數(shù)據(jù),使用生產(chǎn)線號標(biāo)識,也可避免垃圾數(shù)據(jù)進(jìn)入數(shù)據(jù)庫,并過濾一些受到噪聲干擾而產(chǎn)生的錯誤數(shù)據(jù)。生產(chǎn)線號標(biāo)識設(shè)定也有特殊意義,如A55A表達(dá)的二進(jìn)制數(shù)為1010010101011010,表達(dá)的高低電平曲線明顯,相比設(shè)計成0001、0003等更可靠。
【參考文獻(xiàn)】:
期刊論文
[1]堿性鋅錳電池生產(chǎn)設(shè)備的進(jìn)展和發(fā)展方向[J]. 李勝,楊林. 電池. 2015(04)
[2]磁盤存儲系統(tǒng)節(jié)能技術(shù)研究綜述[J]. 田磊,馮丹,岳銀亮,吳素貞,毛波. 計算機(jī)科學(xué). 2010(09)
碩士論文
[1]基于FLASH-DISK混合存儲數(shù)據(jù)動態(tài)遷移的研究[D]. 魏紅偉.湖南大學(xué) 2013
本文編號:3333504
本文鏈接:http://sikaile.net/kejilunwen/dianlilw/3333504.html
最近更新
教材專著