国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

應(yīng)用SQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)動(dòng)力電池配組功能

2012-07-04 02:46:44徐萌飛
船電技術(shù) 2012年1期
關(guān)鍵詞:語(yǔ)句單體排序

徐萌飛

( 中國(guó)船舶重工集團(tuán)公司第七一二研究所,武漢 430064 )

0 引言

電池組在使用和維護(hù)過(guò)程中,只要出現(xiàn)某些電池相對(duì)其他電池性能衰減較大,將使整個(gè)電池組的容量明顯下降,導(dǎo)致不能滿(mǎn)足設(shè)備的動(dòng)力需求。由于蓄電池生產(chǎn)廠家的技術(shù)、生產(chǎn)批次以及管理方面的因素,同一個(gè)廠家的同批次同型號(hào)的電池及時(shí)實(shí)施同樣的化成工藝也無(wú)法完全保持一致,為了在電池化成時(shí)把性能相近的電池組合到一起,使得組合后電池組平均放電容量基本趨同于單體電池最小放電容量,從而確保蓄電池功能及壽命。

1 蓄電池配組方法

當(dāng)前業(yè)界常使用的蓄電池配組方法包括以下幾種:

(1)電壓配組法:電壓配組法中又包括靜態(tài)電壓配組法和負(fù)載電壓配組法,通過(guò)在指定時(shí)間內(nèi)或指定電壓范圍內(nèi)電池組中單體電池兩端的電壓記錄,選擇出趨于一致性的電池。

(2)容量配組法:根據(jù)國(guó)家電池標(biāo)準(zhǔn)中的容量測(cè)試方法,將實(shí)驗(yàn)過(guò)程中各電池的容量數(shù)據(jù)進(jìn)行匹配,選擇出趨于一致的電池。

(3)動(dòng)態(tài)特性配組法:使用一定的測(cè)試條件和測(cè)試環(huán)境,對(duì)所有進(jìn)行配組的目標(biāo)電池執(zhí)行同樣的電池實(shí)驗(yàn),然后比較實(shí)驗(yàn)過(guò)程中的數(shù)據(jù),將實(shí)驗(yàn)過(guò)程中充放電曲線(xiàn)趨于一致的電池挑選出來(lái)。

2 常規(guī)電池配組功能實(shí)現(xiàn)方式

電池配組功能基于電池實(shí)驗(yàn)的特性數(shù)據(jù),以實(shí)現(xiàn)電壓配組法的軟件為例,主要包括如下幾部分功能

(1)記錄解析功能

主要提供對(duì)電池實(shí)驗(yàn)特征數(shù)據(jù)文件的解析,將實(shí)驗(yàn)數(shù)據(jù)轉(zhuǎn)化為內(nèi)部的數(shù)據(jù)結(jié)構(gòu)。

其中數(shù)據(jù)結(jié)構(gòu)一般包含以下內(nèi)容:電池批次號(hào),電池型號(hào),電池組運(yùn)行工藝,電池組運(yùn)行工藝總時(shí)間,工藝步驟的時(shí)間、步驟號(hào)、單體電池編號(hào)、單體電壓等,如果用戶(hù)要對(duì)不同化成槽的多組電池組進(jìn)行統(tǒng)一配組,還需要記錄化成槽(充放電通道)編號(hào)。因?yàn)橛涗洈?shù)據(jù)較多,一般常定義結(jié)構(gòu)體,采用鏈表或者數(shù)組形式進(jìn)行存儲(chǔ)。

(2)電池配組功能

以基于電池單體電壓數(shù)據(jù)進(jìn)行配組的客戶(hù)需求為例,客戶(hù)需要的電池配組篩選方式包含兩種:

a.以時(shí)間為條件按電壓配組

當(dāng)客戶(hù)選取電池充放電記錄后,選擇某個(gè)充放電步驟以及步驟中某個(gè)時(shí)間點(diǎn)。然后根據(jù)需要,劃分出需要配組的電壓范圍,程序能夠根據(jù)用戶(hù)需要將在指定電壓范圍內(nèi)的單體電池挑選出來(lái)配成一組。在同一個(gè)分組內(nèi),按電池充電的回路數(shù)和單體的序號(hào)進(jìn)行排序。

為實(shí)現(xiàn)以上功能,需要生成相關(guān)的電壓范圍分段,然后在前述存儲(chǔ)記錄數(shù)據(jù)的鏈表和數(shù)組中執(zhí)行查詢(xún)算法,以分段電壓為查詢(xún)條件,然后創(chuàng)建報(bào)表文件,將查詢(xún)得到的數(shù)據(jù)放到報(bào)表中展示給客戶(hù)。

b.以指定工藝步驟中指定電壓為條件配組

當(dāng)客戶(hù)指定某個(gè)工藝步驟,并按某個(gè)指定的單體電壓范圍對(duì)記錄中所有數(shù)據(jù)進(jìn)行篩選。

篩選出來(lái)的單體電池?cái)?shù)據(jù)可以按兩種方式排序,一種是按單步時(shí)間排序,即篩選出的數(shù)據(jù)的排序條件優(yōu)先順序分別是:按單步時(shí)間從小到大,相同單步時(shí)間的,按化成槽編號(hào)排序,化成槽編號(hào)仍相同的,按單體電池序號(hào)排序。

另外一種排序優(yōu)先級(jí)是按化成槽編號(hào)排序,化成槽編號(hào)相同的,按單體電池序號(hào)排序。

從前述的設(shè)計(jì)思路可以看到,配組算法是整個(gè)電池配組程序的核心,為實(shí)現(xiàn)配組功能,需要申請(qǐng)用于配組的內(nèi)存空間來(lái)放置數(shù)據(jù)鏈表。在電池特性數(shù)據(jù)量很大的情況下,尤其是客戶(hù)根據(jù)不同電壓區(qū)間范圍進(jìn)行分組時(shí),要多次查詢(xún)比較和保存,可能還需要使用動(dòng)態(tài)數(shù)組等可擴(kuò)展結(jié)構(gòu)來(lái)保留數(shù)據(jù),實(shí)現(xiàn)此功能,對(duì)軟件功能的穩(wěn)定性和性能要求比較高,需要花費(fèi)較長(zhǎng)時(shí)間來(lái)進(jìn)行設(shè)計(jì)和測(cè)試。并且涉及到大量數(shù)據(jù)和復(fù)雜算法的程序,往往要考慮性能,資源,等多方面,相互影響的方面較多。而且軟件交付客戶(hù)后,如果客戶(hù)對(duì)電池配組的篩選條件發(fā)生變化,可能又要進(jìn)行算法上的大幅度修改,涉及的代碼量大,不利于快速響應(yīng)。

其次,出于統(tǒng)計(jì)和查看需要,用戶(hù)一般將需要進(jìn)行電池配組的記錄挑選出來(lái),保存為 excel文件形式,等需要進(jìn)行配組時(shí)再使用,這樣配組軟件需要將數(shù)據(jù)從 excel文件中導(dǎo)入到內(nèi)存中。由于用戶(hù)使用的 excel版本和格式的不同,需要用到不同的適配器與之匹配,將數(shù)據(jù)轉(zhuǎn)化為內(nèi)部的鏈表或者數(shù)組結(jié)構(gòu),這要求開(kāi)發(fā)者必須對(duì)excel格式有充分了解。同時(shí),如果用戶(hù)保存的 excel文件中的數(shù)據(jù)字段順序和格式發(fā)生變化,軟件面臨需要修改文件解析代碼,這些也無(wú)疑增大了程序開(kāi)發(fā)人員的工作量。

3 基于SQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)配組功能

為解決前述問(wèn)題,特提出一種基于SQL數(shù)據(jù)庫(kù)的配組功能實(shí)現(xiàn)方式,能夠大幅度降低代碼開(kāi)發(fā)工作量,加快開(kāi)發(fā)速度和效率,而且對(duì)于數(shù)據(jù)格式變化有很好的靈活適配性。

首先在數(shù)據(jù)庫(kù)中創(chuàng)建支持電池配組功能的基礎(chǔ)數(shù)據(jù)表。然后將用戶(hù)保存的實(shí)驗(yàn)記錄數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)表中,最后借助 SQL語(yǔ)句進(jìn)行配組實(shí)驗(yàn)。

(1)基于SQL數(shù)據(jù)庫(kù)的記錄解析功能實(shí)現(xiàn)

如果用戶(hù)使用同一套軟件完成充放電實(shí)驗(yàn)記錄和配組,則此過(guò)程可以忽略。否則就要通過(guò)導(dǎo)入功能將其他格式的數(shù)據(jù)轉(zhuǎn)換進(jìn)入配組數(shù)據(jù)庫(kù)表中??紤]到大多數(shù)用戶(hù)經(jīng)常使用 Excel來(lái)處理相關(guān)記錄數(shù)據(jù),導(dǎo)入的數(shù)據(jù)源也使用 excel文件格式,即使不同廠商的數(shù)據(jù),經(jīng)過(guò) excel調(diào)整后,也便于導(dǎo)入。很多基于 SQL的數(shù)據(jù)庫(kù)都提供對(duì)excel文件的導(dǎo)入支持,尤其是微軟的 SQL SERVER,提供了強(qiáng)大的導(dǎo)入功能,其具有特色的批量導(dǎo)入功能,效率很高。常用的是SqlBulkCopy 類(lèi),SqlBulkCopy 類(lèi)不僅僅可以支持?jǐn)?shù)據(jù)庫(kù)中表對(duì)表的數(shù)據(jù)轉(zhuǎn)換導(dǎo)入,還支持將其他將數(shù)據(jù)(如Excel、Access、文本)加載到 SQL Server 表中,只要這些數(shù)據(jù)可加載到 DataTable實(shí)例或可使用 IDataReader 實(shí)例讀取。相比起簡(jiǎn)單調(diào)用 Insert語(yǔ)句,SqlBulkCopy具有很強(qiáng)的性能優(yōu)勢(shì)。詳細(xì)代碼再次不多描述。

(2)使用SQL語(yǔ)句將橫表變?yōu)榭v表

充放電數(shù)據(jù)記錄基本表中單體電壓數(shù)據(jù)是以橫表的形式出現(xiàn),即單體電壓V1,V2,…V(n)出現(xiàn)在字段名中,對(duì)應(yīng)同一個(gè)化成槽中的n個(gè)單體電壓數(shù)據(jù)以一條記錄的形式出現(xiàn),如下表:

V1 V2 V3 … V(n)12.10 12.00 11.98 11.99

為實(shí)現(xiàn)電池配組需求,需要使用SQL語(yǔ)句對(duì)電池單體電壓進(jìn)行分組和排序,根據(jù)單體電壓字段進(jìn)行篩選。所以,需要將橫表還原成以單體電壓序號(hào)和單體電壓值兩個(gè)字段組成的縱表樣式。如下表:

電池單體序號(hào) 電壓V1 12.1 V2 12… …V(n-1)11.90 V(n)11.99

其他字段保持原有值不變。使用SQL語(yǔ)句中的Union all語(yǔ)句能夠輕松完成此功能。并且在實(shí)現(xiàn)橫表變縱表時(shí),為避免新建數(shù)據(jù)表造成數(shù)據(jù)冗余,可使用數(shù)據(jù)庫(kù)中的視圖(view)來(lái)完成同樣的功能,以上SQL語(yǔ)句在此不詳述。

由于不同型號(hào)的化成設(shè)備的單體數(shù)量不定,所以查詢(xún)用的 SQL語(yǔ)句主要使用程序代碼進(jìn)行自動(dòng)拼接而成,從理論上可以支持一個(gè)通道包含任意多個(gè)電池單體(前提是不超過(guò)數(shù)據(jù)庫(kù)表字段數(shù)的最大值),程序流程如圖1。

(3)使用SQL語(yǔ)句進(jìn)行電池配組

在步驟(2)中實(shí)現(xiàn)了橫表變縱表后,仍然使用SQL語(yǔ)句完成配組功能:

例如:按指定某個(gè)工藝步驟,并按某個(gè)指定的單體電壓范圍對(duì)記錄中所有數(shù)據(jù)進(jìn)行篩選,結(jié)果按步驟時(shí)間排序的SQL語(yǔ)句如下:

select * from table where [step =(指定步驟)],voltagevalue >(篩選范圍最小值)and voltage value <= (篩選范圍最大值)order by steptime

具體實(shí)現(xiàn)的代碼不再詳述。

考慮到需要從多個(gè)電池批次的記錄中提取數(shù)據(jù),如果先合并對(duì)應(yīng)的多張電池記錄表,再使用SQL查詢(xún)排序,因合并占用較多時(shí)間而低效。所以采用先查詢(xún)出符合條件的記錄放到dataset中,然后再合并dataset的有效數(shù)據(jù),提高處理效率。

圖1 程序流程

假設(shè)完成以上功能后,客戶(hù)需要更新配組條件,比如僅對(duì)狀態(tài)處于放電過(guò)程中的數(shù)據(jù)進(jìn)行匹配,此時(shí)只需要簡(jiǎn)單修改查詢(xún)的SQL語(yǔ)句為

select * from table where [step =(指定步驟)],voltagevalue >(篩選范圍最小值)and voltage value<= (篩選范圍最大值)and runmode =(放電)

其他部分的代碼將不需要改動(dòng),工作量很小。

比以上方式更為靈活的設(shè)計(jì)是,將查詢(xún)的SQL語(yǔ)句放置到數(shù)據(jù)庫(kù)的存儲(chǔ)過(guò)程中實(shí)現(xiàn),一旦用戶(hù)需要調(diào)整,直接修改存儲(chǔ)過(guò)程,代碼都無(wú)需重新修改編譯。

最后,用戶(hù)一般需要進(jìn)行報(bào)表打印和配組標(biāo)簽打印功能,常用的水晶報(bào)表軟件等報(bào)表工具都已經(jīng)實(shí)現(xiàn)了對(duì)SQL數(shù)據(jù)庫(kù)的全面支持,實(shí)現(xiàn)更加方便。

4 結(jié)束語(yǔ)

配組是電池充放電系統(tǒng)的必須功能之一,實(shí)現(xiàn)方式多樣。本文提出了一種基于SQL數(shù)據(jù)庫(kù)實(shí)現(xiàn)配組功能的方法,和普通實(shí)現(xiàn)配組功能的硬編碼相比,除了前述提及的開(kāi)發(fā)速度快,應(yīng)對(duì)需求變化靈活,接口開(kāi)放的優(yōu)點(diǎn)外,還具有其他優(yōu)勢(shì)。

首先,SQL是已經(jīng)標(biāo)準(zhǔn)化的數(shù)據(jù)庫(kù)語(yǔ)言,得到幾乎所有主流數(shù)據(jù)庫(kù)的支持,經(jīng)過(guò)全球用戶(hù)多年的驗(yàn)證使用,基于其實(shí)現(xiàn)的軟件質(zhì)量有良好保障。而大多數(shù)充放電管理系統(tǒng)本身就需要用到數(shù)據(jù)庫(kù),無(wú)需為配組功能另外安裝數(shù)據(jù)庫(kù),配組算法組算法中只要簡(jiǎn)單保證SQL語(yǔ)句的正確性,基本就保證了功能正確性,降低了大量編碼中人為引入的代碼缺陷。

其次,配組功能隨著需要匹配的通道增加,數(shù)據(jù)量會(huì)成倍增加,如果配組功能是使用本地代碼算法進(jìn)行匹配篩選,會(huì)占用大量cpu和內(nèi)存空間,在配組功能和充放電系統(tǒng)管理程序其他功能(如實(shí)時(shí)數(shù)據(jù)記錄,實(shí)時(shí)數(shù)據(jù)顯示,數(shù)據(jù)繪圖)并行運(yùn)行時(shí),可能會(huì)導(dǎo)致機(jī)器資源匱乏,影響管理系統(tǒng)正常的通訊和處理。如果單獨(dú)為配組程序配置一臺(tái)機(jī)器又加大了成本。而采用本文提出的應(yīng)用SQL方式進(jìn)行配組后,配組處理都在性能更高的數(shù)據(jù)庫(kù)服務(wù)器上完成,僅僅將結(jié)果返回給客戶(hù)端的配組程序,在客戶(hù)端上運(yùn)行的配組和電池管理系統(tǒng)的其他功能所共用的資源很少,整個(gè)系統(tǒng)的性能和成本上都具備很大優(yōu)勢(shì)。

最后,不僅僅是電池配組功能可以采用本文中提到的方式來(lái)實(shí)現(xiàn),很多需要進(jìn)行大批量數(shù)據(jù)篩選匹配的系統(tǒng)(例如醫(yī)藥數(shù)據(jù)匹配,人員信息管理等),在需要快速交付且客戶(hù)定制化需求較多的情況下,都可以采用同樣的方式來(lái)實(shí)現(xiàn),為客戶(hù)提供高效低缺陷靈活的解決方案。

[1]MSDN Library for visual stduio 2005. Microsoft corporation. 1987-2005.2009年第六期.

[2]孫雪梅, 丁軍航, 原明亭. 基于 C#.NET的 Excel表格數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)技術(shù)研究. 信息技術(shù)與信息化,2009, (6).

[3]郭自強(qiáng). 關(guān)于鉛酸蓄電池配組. 中國(guó)自行車(chē), 2009,(2).

[4]趙亞鋒, 馮廣斌, 張連武. 蓄電池一致性配組研究兵工自動(dòng)化, 2006, 25(10).

[5]王有山, 孫力生, 王海博. 電動(dòng)車(chē)電池配組問(wèn)題探析. 蓄電池, 2007, 44(2).

猜你喜歡
語(yǔ)句單體排序
排序不等式
重點(diǎn):語(yǔ)句銜接
恐怖排序
節(jié)日排序
刻舟求劍
兒童繪本(2018年5期)2018-04-12 16:45:32
單體光電產(chǎn)品檢驗(yàn)驗(yàn)收方案問(wèn)題探討
精彩語(yǔ)句
相變大單體MPEGMA的制備與性能
巨無(wú)霸式醫(yī)療單體的選擇
類(lèi)姜黃素及其單體對(duì)β-內(nèi)分泌酶活性的抑制作用
宁陕县| 河南省| 蓬溪县| 和龙市| 辽宁省| 社会| 海口市| 宣恩县| 历史| 泰安市| 古交市| 淄博市| 兴文县| 兴隆县| 龙岩市| 郓城县| 石门县| 南江县| 八宿县| 汝州市| 阜南县| 金湖县| 如皋市| 图们市| 沽源县| 会宁县| 锦屏县| 溧水县| 包头市| 喀什市| 句容市| 镇康县| 嵊泗县| 富宁县| 抚顺市| 湖南省| 沿河| 尤溪县| 浮梁县| 嫩江县| 泰来县|