999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

應用SQL數據庫實現動力電池配組功能

2012-07-04 02:46:44徐萌飛
船電技術 2012年1期
關鍵詞:排序數據庫功能

徐萌飛

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

0 引言

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

1 蓄電池配組方法

當前業界常使用的蓄電池配組方法包括以下幾種:

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

(2)容量配組法:根據國家電池標準中的容量測試方法,將實驗過程中各電池的容量數據進行匹配,選擇出趨于一致的電池。

(3)動態特性配組法:使用一定的測試條件和測試環境,對所有進行配組的目標電池執行同樣的電池實驗,然后比較實驗過程中的數據,將實驗過程中充放電曲線趨于一致的電池挑選出來。

2 常規電池配組功能實現方式

電池配組功能基于電池實驗的特性數據,以實現電壓配組法的軟件為例,主要包括如下幾部分功能

(1)記錄解析功能

主要提供對電池實驗特征數據文件的解析,將實驗數據轉化為內部的數據結構。

其中數據結構一般包含以下內容:電池批次號,電池型號,電池組運行工藝,電池組運行工藝總時間,工藝步驟的時間、步驟號、單體電池編號、單體電壓等,如果用戶要對不同化成槽的多組電池組進行統一配組,還需要記錄化成槽(充放電通道)編號。因為記錄數據較多,一般常定義結構體,采用鏈表或者數組形式進行存儲。

(2)電池配組功能

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

a.以時間為條件按電壓配組

當客戶選取電池充放電記錄后,選擇某個充放電步驟以及步驟中某個時間點。然后根據需要,劃分出需要配組的電壓范圍,程序能夠根據用戶需要將在指定電壓范圍內的單體電池挑選出來配成一組。在同一個分組內,按電池充電的回路數和單體的序號進行排序。

為實現以上功能,需要生成相關的電壓范圍分段,然后在前述存儲記錄數據的鏈表和數組中執行查詢算法,以分段電壓為查詢條件,然后創建報表文件,將查詢得到的數據放到報表中展示給客戶。

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

當客戶指定某個工藝步驟,并按某個指定的單體電壓范圍對記錄中所有數據進行篩選。

篩選出來的單體電池數據可以按兩種方式排序,一種是按單步時間排序,即篩選出的數據的排序條件優先順序分別是:按單步時間從小到大,相同單步時間的,按化成槽編號排序,化成槽編號仍相同的,按單體電池序號排序。

另外一種排序優先級是按化成槽編號排序,化成槽編號相同的,按單體電池序號排序。

從前述的設計思路可以看到,配組算法是整個電池配組程序的核心,為實現配組功能,需要申請用于配組的內存空間來放置數據鏈表。在電池特性數據量很大的情況下,尤其是客戶根據不同電壓區間范圍進行分組時,要多次查詢比較和保存,可能還需要使用動態數組等可擴展結構來保留數據,實現此功能,對軟件功能的穩定性和性能要求比較高,需要花費較長時間來進行設計和測試。并且涉及到大量數據和復雜算法的程序,往往要考慮性能,資源,等多方面,相互影響的方面較多。而且軟件交付客戶后,如果客戶對電池配組的篩選條件發生變化,可能又要進行算法上的大幅度修改,涉及的代碼量大,不利于快速響應。

其次,出于統計和查看需要,用戶一般將需要進行電池配組的記錄挑選出來,保存為 excel文件形式,等需要進行配組時再使用,這樣配組軟件需要將數據從 excel文件中導入到內存中。由于用戶使用的 excel版本和格式的不同,需要用到不同的適配器與之匹配,將數據轉化為內部的鏈表或者數組結構,這要求開發者必須對excel格式有充分了解。同時,如果用戶保存的 excel文件中的數據字段順序和格式發生變化,軟件面臨需要修改文件解析代碼,這些也無疑增大了程序開發人員的工作量。

3 基于SQL數據庫實現配組功能

為解決前述問題,特提出一種基于SQL數據庫的配組功能實現方式,能夠大幅度降低代碼開發工作量,加快開發速度和效率,而且對于數據格式變化有很好的靈活適配性。

首先在數據庫中創建支持電池配組功能的基礎數據表。然后將用戶保存的實驗記錄數據導入到數據庫表中,最后借助 SQL語句進行配組實驗。

(1)基于SQL數據庫的記錄解析功能實現

如果用戶使用同一套軟件完成充放電實驗記錄和配組,則此過程可以忽略。否則就要通過導入功能將其他格式的數據轉換進入配組數據庫表中。考慮到大多數用戶經常使用 Excel來處理相關記錄數據,導入的數據源也使用 excel文件格式,即使不同廠商的數據,經過 excel調整后,也便于導入。很多基于 SQL的數據庫都提供對excel文件的導入支持,尤其是微軟的 SQL SERVER,提供了強大的導入功能,其具有特色的批量導入功能,效率很高。常用的是SqlBulkCopy 類,SqlBulkCopy 類不僅僅可以支持數據庫中表對表的數據轉換導入,還支持將其他將數據(如Excel、Access、文本)加載到 SQL Server 表中,只要這些數據可加載到 DataTable實例或可使用 IDataReader 實例讀取。相比起簡單調用 Insert語句,SqlBulkCopy具有很強的性能優勢。詳細代碼再次不多描述。

(2)使用SQL語句將橫表變為縱表

充放電數據記錄基本表中單體電壓數據是以橫表的形式出現,即單體電壓V1,V2,…V(n)出現在字段名中,對應同一個化成槽中的n個單體電壓數據以一條記錄的形式出現,如下表:

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

為實現電池配組需求,需要使用SQL語句對電池單體電壓進行分組和排序,根據單體電壓字段進行篩選。所以,需要將橫表還原成以單體電壓序號和單體電壓值兩個字段組成的縱表樣式。如下表:

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

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

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

(3)使用SQL語句進行電池配組

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

例如:按指定某個工藝步驟,并按某個指定的單體電壓范圍對記錄中所有數據進行篩選,結果按步驟時間排序的SQL語句如下:

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

具體實現的代碼不再詳述。

考慮到需要從多個電池批次的記錄中提取數據,如果先合并對應的多張電池記錄表,再使用SQL查詢排序,因合并占用較多時間而低效。所以采用先查詢出符合條件的記錄放到dataset中,然后再合并dataset的有效數據,提高處理效率。

圖1 程序流程

假設完成以上功能后,客戶需要更新配組條件,比如僅對狀態處于放電過程中的數據進行匹配,此時只需要簡單修改查詢的SQL語句為

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

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

比以上方式更為靈活的設計是,將查詢的SQL語句放置到數據庫的存儲過程中實現,一旦用戶需要調整,直接修改存儲過程,代碼都無需重新修改編譯。

最后,用戶一般需要進行報表打印和配組標簽打印功能,常用的水晶報表軟件等報表工具都已經實現了對SQL數據庫的全面支持,實現更加方便。

4 結束語

配組是電池充放電系統的必須功能之一,實現方式多樣。本文提出了一種基于SQL數據庫實現配組功能的方法,和普通實現配組功能的硬編碼相比,除了前述提及的開發速度快,應對需求變化靈活,接口開放的優點外,還具有其他優勢。

首先,SQL是已經標準化的數據庫語言,得到幾乎所有主流數據庫的支持,經過全球用戶多年的驗證使用,基于其實現的軟件質量有良好保障。而大多數充放電管理系統本身就需要用到數據庫,無需為配組功能另外安裝數據庫,配組算法組算法中只要簡單保證SQL語句的正確性,基本就保證了功能正確性,降低了大量編碼中人為引入的代碼缺陷。

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

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

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

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

[3]郭自強. 關于鉛酸蓄電池配組. 中國自行車, 2009,(2).

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

[5]王有山, 孫力生, 王海博. 電動車電池配組問題探析. 蓄電池, 2007, 44(2).

猜你喜歡
排序數據庫功能
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
排序不等式
恐怖排序
節日排序
刻舟求劍
兒童繪本(2018年5期)2018-04-12 16:45:32
關于非首都功能疏解的幾點思考
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
主站蜘蛛池模板: 91久久性奴调教国产免费| 日本精品视频一区二区| 亚洲欧美极品| 91久久偷偷做嫩草影院精品| 亚洲精品动漫| 少妇露出福利视频| 国产成人一二三| 久久无码高潮喷水| 亚洲av无码成人专区| 91视频青青草| 久久黄色视频影| 亚洲日本一本dvd高清| 欧美性久久久久| 国产成人1024精品下载| 日韩欧美综合在线制服| 久久精品66| 亚洲欧美日韩高清综合678| 日韩a在线观看免费观看| 少妇人妻无码首页| 91免费国产在线观看尤物| 久久综合丝袜日本网| 老司机精品一区在线视频| 国产成人高清在线精品| 四虎成人免费毛片| 亚洲欧美另类中文字幕| 无码'专区第一页| 亚洲欧洲日韩久久狠狠爱| 国产精品亚洲а∨天堂免下载| 18禁不卡免费网站| 国产色婷婷视频在线观看| 国产永久在线视频| 婷婷六月色| 国产成人精品高清在线| 精品国产一二三区| 亚洲综合色婷婷| 久久午夜夜伦鲁鲁片不卡| 国内99精品激情视频精品| 国产亚洲视频中文字幕视频 | 国产乱人伦偷精品视频AAA| 激情国产精品一区| 国产成人无码久久久久毛片| 日韩欧美网址| 久久频这里精品99香蕉久网址| 午夜精品久久久久久久99热下载| 国产精品女熟高潮视频| 成年午夜精品久久精品| 国产视频自拍一区| 99视频精品在线观看| 国产专区综合另类日韩一区| 亚洲AV无码久久精品色欲| 国产精品免费露脸视频| 日韩最新中文字幕| 91精品啪在线观看国产91九色| 久久精品人妻中文视频| 国产激情无码一区二区APP | 久久精品丝袜| 亚洲国产综合精品中文第一| 免费激情网址| 亚洲 欧美 日韩综合一区| 国产一区二区三区在线无码| 香蕉综合在线视频91| 欧美激情第一欧美在线| 国产免费好大好硬视频| 幺女国产一级毛片| 亚洲精品福利视频| 久草视频福利在线观看| 在线看片中文字幕| 国产美女无遮挡免费视频| 色婷婷亚洲综合五月| 五月婷婷欧美| 99人妻碰碰碰久久久久禁片| 国产在线拍偷自揄拍精品| 成人免费一级片| 欧洲熟妇精品视频| 精品国产成人国产在线| 国产另类视频| lhav亚洲精品| 8090成人午夜精品| 97精品国产高清久久久久蜜芽| 玖玖精品视频在线观看| 在线观看热码亚洲av每日更新| 真实国产精品vr专区|