洪曄,李海平,劉學(xué)民
(中國船舶重工集團公司第七一八研究所,河北 邯鄲 056027)
?
基于VBA編程的數(shù)據(jù)庫建模自動化技術(shù)
洪曄,李海平,劉學(xué)民
(中國船舶重工集團公司第七一八研究所,河北 邯鄲 056027)
在艦船安全監(jiān)控系統(tǒng)設(shè)計過程中,利用VBA開發(fā)Access數(shù)據(jù)庫管理工具,解決由于上位機組態(tài)軟件變量數(shù)量龐大,建點工作繁雜,且當用戶需求發(fā)生變更的時候,重新布點工作量大、耗時長的問題,提高組態(tài)軟件數(shù)據(jù)變量建立的效率,快速生成測點分布表,建立清晰的邏輯控制關(guān)系,根據(jù)用戶需求快速調(diào)整布點表及變量。
VBA編程;Access數(shù)據(jù)庫;組態(tài)軟件;編程自動化技術(shù)
為了滿足現(xiàn)代艦船作戰(zhàn)要求,大型水面艦船需攜帶航空煤油。航空煤油易于燃燒,揮發(fā)性強,還具有一定的毒性和腐蝕性。航空煤油的儲存、輸送、加注、回收、裝卸等作業(yè)的安全越來越得到重視,建設(shè)艦船安全監(jiān)控系統(tǒng)的需求十分迫切。艦船安全監(jiān)控系統(tǒng)能夠?qū)ο嚓P(guān)艙室中濕度、溫度、可燃氣體、氧氣、二氧化碳等與艦船安全緊密相關(guān)的信息進行實時采集分析,出現(xiàn)危險時及時發(fā)出報警信息,并控制相關(guān)的通風(fēng)、消防設(shè)施采取應(yīng)急措施,確保艦船安全。
為了能夠反應(yīng)真實的安全環(huán)境信息,首先,從硬件布置上要設(shè)計能夠覆蓋防護需要的最低限度的探測器、報警器以及通風(fēng)、消防設(shè)施;其次要設(shè)計可靠的軟件用于采集、分析、存儲、報警和控制功能的實現(xiàn)。系統(tǒng)還應(yīng)及時將監(jiān)測信息送至安全監(jiān)控中心。艦船安全監(jiān)控系統(tǒng)總圖如圖1所示,采用上位機-總線中繼器-探測器的架構(gòu),為了保證系統(tǒng)的可靠性,采用組態(tài)軟件作為上位機監(jiān)控軟件的開發(fā)平臺。
隨著海軍由綠水海軍向藍水海軍進展,艦船的體積和噸位逐漸增大,甲板層數(shù)多、艙室數(shù)量大,艦船安全監(jiān)控系統(tǒng)需要同時采集各個艙室中的相關(guān)參數(shù),其測點分布范圍和探測器數(shù)量也急劇增加。上位機監(jiān)控軟件編制工作量也隨之增大。針對這一問題,提出在開發(fā)上位機軟件過程中,使用VBA在Access數(shù)據(jù)庫基礎(chǔ)上實現(xiàn)數(shù)據(jù)庫建模編程自動化。
大型艦船甲板層數(shù)多、艙室數(shù)量大,需要同時采集各個艙室中的相關(guān)參數(shù),監(jiān)測控制點數(shù)量很大。在設(shè)計監(jiān)控測點的過程中,需要根據(jù)不同客戶的不同要求,依據(jù)艙室的分布和布點規(guī)模,建立測控點位布置表,并制定相應(yīng)的控制策略。
艦船安全監(jiān)控系統(tǒng)上位機采用WINDOWS XP操作系統(tǒng),使用三維力控公司的組態(tài)軟件開發(fā)圖形化人機交互界面,實時監(jiān)測各測點的信息及狀態(tài),完成信號監(jiān)測、外部設(shè)備自動控制、故障分析等功能,并可進行數(shù)據(jù)實時存儲及歷史數(shù)查詢。
利用組態(tài)軟件進行開發(fā)必不可少的步驟是建立一個能夠覆蓋每一個監(jiān)測點、控制點和報警點的數(shù)據(jù)庫,再使用腳本語言將圖形標志與有關(guān)的數(shù)據(jù)點進行關(guān)聯(lián)。這一過程對于監(jiān)控點、報警點多、各報警點關(guān)聯(lián)性強的系統(tǒng)來說工作量巨大,重復(fù)性勞動多。以一個溫度測點為例,根據(jù)監(jiān)測、報警需求,數(shù)據(jù)庫中需要建立對應(yīng)的變量29個,那么,一只具有12層甲板、每層60個相關(guān)艙室的大型艦船,每個艙室按1個溫度探測器計算,僅溫度相關(guān)變量為20 880個(29×60×12=20 880)。此處僅是溫度一種類型的探測器以最低需求量,粗略計算的數(shù)據(jù),一套艦船安全監(jiān)控系統(tǒng)中的監(jiān)測點及控制點數(shù)量至少有千余個監(jiān)控點,再考慮到一些中間變量,大約變量總數(shù)在10萬個左右。完全依靠程序員手工操作具有以下難點。
①數(shù)據(jù)庫的逐一建點,效率低下,致使軟件編程人員把大量精力放在建點等基礎(chǔ)工作上,而疏忽了關(guān)鍵核心技術(shù)。
②這些變量在主程序腳本中都有相關(guān)語句,一旦一個測點發(fā)生調(diào)整,工程改動量非常龐大。
③在編程過程中,一旦變量變化,查找錯誤點及主程序中該點相關(guān)程序代碼的難度也很大。
這些數(shù)據(jù)變量具有與監(jiān)控點之間有一對多的關(guān)系,監(jiān)控點的腳本控制語言與其余監(jiān)控點之間具有確定的對應(yīng)關(guān)系,這恰好與關(guān)系型數(shù)據(jù)庫數(shù)據(jù)之間的關(guān)系一致。因此,提出利用利用VBA開發(fā)Access數(shù)據(jù)庫管理工具完成任務(wù),加快軟件開發(fā)進度,減少調(diào)試時間,提高軟件的可靠性。
2.1 數(shù)據(jù)點的建立
提出基于VBA編程的數(shù)據(jù)庫建模自動化編程方法,只要將測控布點位布置表(excel格式)導(dǎo)入Access數(shù)據(jù)庫,就可以生成測點總表,測點編號,測點對應(yīng)數(shù)據(jù)點總表,各艙室測點總表,各艙室變量總表,測點分類總表以及編程中需要的各種其他表格。
建立空窗體,在空窗體上建立2個按鈕,如圖2所示。按鈕“核對布置表”用于打開查看測控布點位布置表是否正確;按鈕“生成數(shù)據(jù)點”用于生成各種測點表。選擇數(shù)據(jù)庫工具中的Visual Basic打開代碼窗口,進行程序設(shè)計[1-2]。
數(shù)據(jù)庫點生成設(shè)計流程見圖3。
所有數(shù)據(jù)變量生成后,可以導(dǎo)出Access數(shù)據(jù)庫點,裝載至力控組態(tài)軟件中,大幅減少工作量,提高工作效率。
2.2 代碼的自動生成
在監(jiān)控軟件中,針對每一個測點需要生成腳本語言的代碼對應(yīng)于傳感器的各個變量,控制顯示的各種狀態(tài)和模擬狀態(tài)的切換。
考慮到每個測點數(shù)據(jù)變量多,各變量涉及到的主程序內(nèi)容較多,利用Access數(shù)據(jù)庫為每一類型測點創(chuàng)建1個窗體,在窗體上設(shè)置2個按鈕,一個生成代碼按鈕,一個復(fù)制代碼按鈕。
生成代碼按鈕設(shè)置的代碼流程見圖4。
復(fù)制代碼按鈕將窗體代碼框中的代碼復(fù)制到剪貼板上,直接用于力控組態(tài)軟件代碼的輸入[3-9]。復(fù)制代碼按鈕的代碼為
Private Sub 復(fù)制代碼按鈕_Click()
Me.生成的代碼.SetFocus
DoCmd.RunCommand acCmdCopy
End Sub
Access數(shù)據(jù)庫Microsoft Visual Basic編輯器中代碼截圖,如圖5所示。
2.3 工作流程
當與用戶確定測控點位布置表后,手工將測控點位布置表導(dǎo)入Access數(shù)據(jù)庫,打開數(shù)據(jù)點的建立窗體,按下數(shù)據(jù)點生成按鈕,生成各個測控點的數(shù)據(jù)點,同時生成每一類傳感器和控制器的總表。在監(jiān)控軟件人機界面設(shè)計好并得到用戶的確認后,進入代碼開發(fā)階段。編程人員打開力控的編程窗口,同時打開相應(yīng)代碼生成窗體,按下生成代碼按鈕,生成相應(yīng)測控點的代碼,按下復(fù)制按鈕就可以將代碼復(fù)制到粘貼板上,再將其粘貼到力控的編程窗口即可。
1)將原本近2個月的組態(tài)軟件建立數(shù)據(jù)庫的工作量,縮短至1周內(nèi)完成,即使考慮到工具的2周開發(fā)時間,也大大地縮短了開發(fā)時間,減少了工作量,同時,避免了大量的人工復(fù)制,替換,減少了錯誤的出現(xiàn)機會,節(jié)省了調(diào)試時間。
2)能夠快速生成測點分布表,建立清晰的邏輯控制關(guān)系。一旦用戶的數(shù)據(jù)測控點確定后,馬上就能生成數(shù)據(jù)點表,從數(shù)據(jù)庫中可以清晰地看到各種類探測器分布、每個房間的傳感器編號、通風(fēng)系統(tǒng)等外部設(shè)備與房間的關(guān)聯(lián)及邏輯控制關(guān)系,便于設(shè)計、維護。
3)使用Access數(shù)據(jù)庫,針對用戶需求改變的情況,只需重新組點,將用戶需求輸入數(shù)據(jù)庫,一鍵完成生成數(shù)據(jù)庫點、主程序代碼的工作,不易出錯,即使出錯,也容易查詢和修改。
編程中利用VBA實現(xiàn)的Access數(shù)據(jù)庫自動化編程技術(shù),對軟件項目成員理清邏輯關(guān)系、減少工作量、提高工作效率和后續(xù)軟件調(diào)整具有很大借鑒意義,值得推廣應(yīng)用。
[1] 王宇虹,朱亦文,陳格,等.Access數(shù)據(jù)庫系統(tǒng)開發(fā)從基礎(chǔ)到實踐[M].北京:電子工業(yè)出版社,2006.
[2] 于繁華,等.Access基礎(chǔ)教程[M].北京:中國水利水電出版社,2005.
[3] 李志梅,陳艷.利用Access VBA和SQL相結(jié)合實現(xiàn)教師信息動態(tài)查詢[J].桂林航天工業(yè)高等專科學(xué)校學(xué)報,2011(4):443-445.
[4] 常廣炎.用VBA開發(fā)Excel、Access的數(shù)據(jù)處理軟件[J].數(shù)字技術(shù)與應(yīng)用,2014(6):170-171.
[5] 張建莉.應(yīng)用程序中的VBA自動化設(shè)計[J].農(nóng)業(yè)網(wǎng)絡(luò)信息,2015(4):121-123.
[6] 張宏飛.利用VBA實現(xiàn)探測器測試報表的自動生成[J].福建電腦,2016(9):129-130.
[7] 陸錦鶴.利用VBA編程提高報表制作效率[J].中小企業(yè)管理與科技,2016(12):152-153.
[8] 韓澤坤.Access行業(yè)數(shù)據(jù)庫開發(fā)范例應(yīng)用[M].北京:中國青年出版社,2006.
[9] 張玉潔,孟祥武.數(shù)據(jù)庫與數(shù)據(jù)處理Access 2010實現(xiàn)[M].北京:機械工業(yè)出版社,2013.
On the Automation Technology of Database Modeling Based on VBA Programming
HONG Ye, LI Hai-ping, LIU Xue-min
(No. 718 Research Institute of CSIC, Handan Hebei 056027, China)
In design process of the safety monitoring system, the use of Access database management tools which developed by VBA can solve the problem of large number of the software data variables, also when the user's demand changes, re-distribution workload. The Access database can make a substantial increase in the configuration software variables to establish the efficiency, which can quickly generate the measuring point distribution tables, establish a clear logic control relationship, adjust the distribution table and variables quickly according to the user needs.
VBA; Access database; configuration software; technology of programming automation
10.3963/j.issn.1671-7953.2017.03.030
2017-01-18
國家部委基金資助項目
洪曄(1986—),女,碩士,工程師
研究方向:分析儀器
U665.261
A
1671-7953(2017)03-0128-03
修回日期:2017-03-20