劉 雄 王 軍 琚格格 劉 紅
(1.中國船舶重工集團公司第七二二研究所 武漢 430205)(2.中國船級社武漢分社 武漢 430022)
隨著電磁兼容檢測任務(wù)逐年增多,目前每年需要出具多達400份試驗檢測報告。而出具一份內(nèi)容完整詳實、格式規(guī)范的報告需要花費一個人2~3天時間,因此每年需要在試驗報告的編制上花費大量的人力,并且如果試驗報告不能及時處理就會越積越多,最終影響客戶信心;由于檢測報告內(nèi)容繁多,并且包含很多重復(fù)的信息數(shù)據(jù),人工編制時難免忙中出錯,試驗報告中容易出現(xiàn)編輯錯誤;人工編制模式使得試驗流程的各個階段相互零散獨立,未能實現(xiàn)試驗室試驗流程的信息化管理?;谝陨戏治觯瑸榻鉀Q人工編制試驗報告效率低下、規(guī)避在試驗報告中出現(xiàn)人工編輯錯誤、實現(xiàn)試驗流程統(tǒng)一管理等問題,開發(fā)了一套試驗流程管理系統(tǒng),該系統(tǒng)能夠?qū)崿F(xiàn)委托單位信息、試驗要求條件等信息的輸入、保存和查詢;根據(jù)委托單號自動生成相對應(yīng)的試驗委托單、試驗測試細則、試驗報告等;根據(jù)導(dǎo)入的測試數(shù)據(jù)的相關(guān)信息,統(tǒng)計分析試驗室各試驗人員的績效統(tǒng)計分析,最終將試驗流程的各個階段統(tǒng)一起來,為試驗室實現(xiàn)現(xiàn)代化的信息化管理打下基礎(chǔ)。
本系統(tǒng)使用到的關(guān)鍵技術(shù)包括LabView開發(fā)工具的使用、LabSQL軟件工具包的使用、Microsoft ADO技術(shù)[3]、ODBC數(shù)據(jù)源的使用[4]、ActiveX控件的調(diào)用[5]等。具體如圖1所示。
圖1 系統(tǒng)總體設(shè)計框圖
按照試驗流程劃分,本系統(tǒng)包括試驗前部分和試驗后部分,具體的試驗檢測過程由另外一套電磁兼容自動測試系統(tǒng)完成。其中實驗前主要工作過程為:通過軟件界面錄入試驗基本信息,然后調(diào)用委托單模版和試驗細則模版,完成模版的自動編輯工作,最后輸出電子檔試驗委托單和試驗細則。試驗完成后主要工作過程為:通過軟件界面導(dǎo)入試驗測試數(shù)據(jù),調(diào)用試驗報告模版完成試驗檢測報告的動態(tài)自動編輯工作,最后輸出電子檔試驗報告。其中測試數(shù)據(jù)由另外一套電磁兼容軟件自動測試系統(tǒng)導(dǎo)出,測試數(shù)據(jù)以委托單號為唯一標(biāo)識,其導(dǎo)出文件以委托單號為總目錄的文件目錄格式,具體格式如下:委托單號測試項代號測試部位測試結(jié)果圖片名稱。
按功能模塊劃分,本系統(tǒng)包括儀器儀表管理模塊、溫濕度環(huán)境管理模塊、試驗人員管理模塊、新建委托單模塊、刪除委托單模塊、委托單編輯模塊、委托單保存模塊、委托單生成模塊、試驗細則生成模塊、試驗報告生成模塊、績效統(tǒng)計管理模塊。具體見下圖。
圖2 系統(tǒng)功能設(shè)計框圖
本系統(tǒng)涉及到的數(shù)據(jù)信息較多,所有數(shù)據(jù)信息以受試設(shè)備為中心,包括受試設(shè)備本身的基本信息、與受試設(shè)備供電相關(guān)的供電信息數(shù)據(jù)、陪試設(shè)備信息數(shù)據(jù)、連接線纜信息數(shù)據(jù)、委托單位信息數(shù)據(jù)、試驗條件信息數(shù)據(jù)等。本系統(tǒng)數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)的設(shè)計同時考慮兩方面內(nèi)容,其一為試驗流程先后帶來的數(shù)據(jù)錄入時間不一致所帶來的數(shù)據(jù)分離,其二為同一委托單號下的數(shù)據(jù)記錄是否唯一。由于受試設(shè)備與委托單號一一對應(yīng),同一受試設(shè)備所對應(yīng)的所有數(shù)據(jù)可以依據(jù)同一委托單號進行連接。受試設(shè)備對應(yīng)的部分數(shù)據(jù)信息包括受試設(shè)備信息、委托單位信息、試驗條件等信息,由于一個委托單號下有且僅有一條記錄,因此這些信息可以設(shè)計一個總的關(guān)系數(shù)據(jù)表,而對于供電信息、陪試設(shè)備信息、線纜信息由于某些受試設(shè)備可能對應(yīng)多條數(shù)據(jù)記錄,因此這些信息必須單獨設(shè)計數(shù)據(jù)表,不能設(shè)計在總表中。另外對于試驗完成后導(dǎo)入的數(shù)據(jù)信息,也不宜設(shè)計在總表中,需要單獨設(shè)計數(shù)據(jù)關(guān)系表。
本系統(tǒng)涉及到的主要數(shù)據(jù)表包括:設(shè)備信息(委托單號,樣品名稱,型號,編號,研制單位,委托時間,委托單位,委托單位地址,代理人,代理人手機,付款人,付款人手機,郵編,傳真,固定電話,密級,軍種,安裝平臺,平臺位置,設(shè)備特性,試驗大綱名稱,工作狀態(tài)描述,敏感性判據(jù),項目經(jīng)理,分包,標(biāo)準(zhǔn)號,測試項目)、供電(委托單號,交直流,電壓,電流,功率)、測試結(jié)論(委托單號,測試項目,檢測要求,符合性,主要超標(biāo)頻點,測試部位數(shù)量)等。
軟件系統(tǒng)需要反復(fù)存儲、讀取大量的數(shù)據(jù)信息,Labview本身雖不具備數(shù)據(jù)庫訪問功能,但卻提供了豐富的外部程序接口,本系統(tǒng)利用第三方開發(fā)的免費工具包LabSQL訪問數(shù)據(jù)庫,該工具包利用 Microsoft ADO(Ac?tiveX Data Object)技 術(shù)通 過 ODBC(open data?base connectivity)數(shù)據(jù)源與數(shù)據(jù)庫進行連接,其連接過程如圖 3[6]。
圖3 應(yīng)用程序與數(shù)據(jù)源連接框圖
如圖3所示,ODBC是數(shù)據(jù)庫與應(yīng)用程序之間的一個公共接口,應(yīng)用程序通過訪問ODBC而不是直接訪問具體數(shù)據(jù)庫來與數(shù)據(jù)庫通信。一個基于ODBC的應(yīng)用程序?qū)?shù)據(jù)庫的操作不依賴任何形式的數(shù)據(jù)庫系統(tǒng),所用的數(shù)據(jù)庫操作都由對應(yīng)數(shù)據(jù)庫系統(tǒng)的ODBC驅(qū)動程序完成。ODBC的最大優(yōu)點是能以統(tǒng)一的方式處理所有的數(shù)據(jù)庫。
LabSQL工具包[7]將復(fù)雜的底層ADO及SQL 操作封裝成一系列的LabView子程序,使用簡單方便。采用該方式既可以節(jié)省用于購買NI公司的附加工具包中數(shù)據(jù)庫接口工具包LabView SQL Tool?kit所需高額花費,又不需要對Microsoft ADO以及SQL語言有較深的了解,這樣可以進一步加快系統(tǒng)開發(fā)的進度。
安裝LabSQL后需要對LabSQL進行配置,在Windows操作系統(tǒng)的控制面板上,雙擊“數(shù)據(jù)源(ODBC)”,在出現(xiàn)的面板中單擊“系統(tǒng)DSN”選項中“添加”按鈕,然后在彈出的界面上選擇已經(jīng)安裝的“SQL Server Native Client 10.0”驅(qū)動程序,最后點擊“完成”按鈕,輸入數(shù)據(jù)源的名稱,就完成了對數(shù)據(jù)源名稱(DSN)的建立,應(yīng)用程序就可以通過數(shù)據(jù)源訪問數(shù)據(jù)庫了。
數(shù)據(jù)庫連接成功以后就可以在LabView環(huán)境下通過LabSQL對數(shù)據(jù)庫進行直接操作了。LabS?QL對數(shù)據(jù)庫的基本操作流程是先創(chuàng)建一個連接、打開此連接、執(zhí)行SQL語句,關(guān)閉該連接、最后將該連接銷釋放掉[8],具體見圖4。
圖4 數(shù)據(jù)庫基本操作流程
圖4中過程執(zhí)行的最頻繁,該過程中執(zhí)行最頻繁的SQL語句包括向數(shù)據(jù)庫中記錄表中插入記錄和從數(shù)據(jù)庫記錄表中讀取相關(guān)信息。向數(shù)據(jù)庫記錄表中插入記錄軟件代碼實現(xiàn)如下:
該子程序的輸入?yún)?shù)為輸入簇,該簇包含一個表頭名和一個字符串?dāng)?shù)組,其中表頭名為字符串格式,內(nèi)容為需要記錄表名稱和需要插入的字段,格式要求需要按SQL語言語法規(guī)范。數(shù)組為需要向數(shù)據(jù)庫記錄表中插入的信息,插入的信息需要與記錄表中列名對應(yīng)。
圖5 數(shù)據(jù)庫插入記錄
從數(shù)據(jù)庫記錄表中讀取記錄表內(nèi)容同樣是使用過程,其輸入?yún)?shù)相對簡單,為滿足SQL語言語法規(guī)范用于查詢數(shù)據(jù)格式的字符串,如查詢設(shè)備信息標(biāo)中所有記錄信息,則過程函數(shù)的輸入?yún)?shù)為“use lx select*from設(shè)備信息 where委托單號=xxx”,其中l(wèi)x為本系統(tǒng)設(shè)置的DNS數(shù)據(jù)源名稱,xxx為需要查詢的委托單號。
由于電磁兼容測試涉及的標(biāo)準(zhǔn)眾多,每個標(biāo)準(zhǔn)中包含的測試項目也較多,因此每個測試項目對應(yīng)的測試細則和檢測報告的內(nèi)容也不盡相同,這就導(dǎo)致每個測試項目對應(yīng)的文檔模版文件也不相同。對于相關(guān)模板的設(shè)計有兩種方式,其一是所有項目同一類型的文檔設(shè)計一個模板,如所有測試細則設(shè)計為一個模板,所有實驗報告的測試項目首頁設(shè)計為一個模板,所有測試項目的數(shù)據(jù)頁設(shè)計為一個模板,但該模板必須兼顧所有的標(biāo)準(zhǔn)和測試項目,其二是對每一個標(biāo)準(zhǔn)的每一個測試項目設(shè)計一個模板,做到分別量身定做。
以上兩種方式各有優(yōu)缺點,方式一必須兼顧各個測試項目,模板設(shè)計復(fù)雜,最關(guān)鍵的由于需要兼顧各個實驗項,模板中只能包含各個試驗項目的共性參數(shù),在模板被調(diào)用時系統(tǒng)需要耗費大量的資源處理模板中信息的插入,最后導(dǎo)致各個文檔生成過程中幾乎需要完全生成所有的信息,整個過程耗時較長。其優(yōu)勢在于同一類型的文檔只需要設(shè)計一個,可減少模板重復(fù)設(shè)計工作;而方式二由于可以做到最大化的量身定做,模板在被調(diào)用時,系統(tǒng)的負擔(dān)較輕,文檔自動生成過程中只需要向模板中插入少量的關(guān)鍵信息就可以完成文檔的生成工作,系統(tǒng)負擔(dān)小,整個文檔生成過程耗時較短。其缺點在于每個試驗項目都需要編制一個模板,前期工作量較大。結(jié)合前期試驗過程,考慮到方式一調(diào)用方式復(fù)雜,實現(xiàn)難度較大,而且整個實現(xiàn)過程耗時較長,而方式二,雖然模板眾多,但利用現(xiàn)有的模板進行局部調(diào)整,也可以快速實現(xiàn),而且系統(tǒng)調(diào)用簡單、實現(xiàn)過程較快。
在Word中凡是手工可以完成的操作,包括對文字的編輯、圖片和表格的處理都可以通過軟件控制的方式由應(yīng)用程序?qū)崿F(xiàn)。LabView開發(fā)環(huán)境下對Word模板的訪問控制是通過ActiveX方式[9]調(diào)用Word實現(xiàn)的,ActiveX編程是一種基于面向?qū)ο蟮木幊谭椒?,其操作主要包括三種:屬性的設(shè)置、方法的調(diào)用和事件的處理。微軟公司的Word應(yīng)用軟件被看成一個Application對象,該對象中包含了Word軟件的各個組成部分,包括文檔對象、命令工具對象、幫助助手對象等,而本設(shè)計中使用到文檔對象中的表格、圖片、段落等對象[10]。LabView函數(shù)面板中“互聯(lián)接口”部分中部分中包含ActiveX方式所有控件[11],具體如圖6。
圖6 ActiveX控件
本系統(tǒng)中通過ActiveX方式對Word應(yīng)用軟件中Word文檔連接控制部分的軟件代碼如圖7[5]:
圖7 Word應(yīng)用程序調(diào)用
圖7中代碼打開了Word應(yīng)用程序并調(diào)用了Word文檔屬性節(jié)點,后面軟件代碼根據(jù)需要通過調(diào)用Word文檔屬性和文檔操作方法對需要操作的文檔進行需要的操作。
完成以上內(nèi)容后需要對Word模板進行編輯,完成相關(guān)文檔的輸出。常規(guī)的做法是在Word模板中需要插入信息的位置預(yù)先插入電子書簽,軟件系統(tǒng)連接Word應(yīng)用程序建立連接后,首先將光標(biāo)移動到插入書簽的位置,然后在該位置插入需要插入的信息[12]。由于受試設(shè)備各不一樣,依據(jù)檢測標(biāo)準(zhǔn)也不固定、具體的測試項目也不盡相同,因此最終生成的Word文檔框架也不一定固定,因此僅采用在電子書簽位置插入信息的方式不能完全滿足系統(tǒng)要求。本系統(tǒng)采用在電子書簽位置插入信息和對Word文檔表格對象動態(tài)調(diào)整相結(jié)合的動態(tài)編輯方式實現(xiàn)Word模板中信息的輸入編輯,根據(jù)受試設(shè)備實際測試要求,動態(tài)調(diào)整表格的行列數(shù),再根據(jù)表格對象的行列屬性實現(xiàn)對應(yīng)信息數(shù)據(jù)的編輯。
該軟件系統(tǒng)目前已經(jīng)具備基本的試驗流程管理功能,包括試驗開始前相關(guān)信息的錄入、試驗委托單的生成、試驗細則的生成、試驗完成后試驗數(shù)據(jù)的導(dǎo)入、試驗報告的生成等,但對于試驗過程主體卻還未涉及,即該試驗流程管理系統(tǒng)不具備電磁兼容自動測試能力,后期將依據(jù)GJB151系列標(biāo)準(zhǔn)、HJB34-2007、GD22-2015等標(biāo)準(zhǔn)在該軟件系統(tǒng)中加入自動測試功能,實現(xiàn)試驗流程管理和試驗自動測試于一體的軟件系統(tǒng)。
參考文獻
[1]楊樂平,李海濤.Labview高級程序設(shè)計[M].北京:清華大學(xué)出版社:2004.
[2]明日科技.SQL Server從入門到精通[M].北京:清華大學(xué)出版社:2015.
[3]付志超,陳馨,張聰?shù)?LabVIEW中基于ActiveX的報表生成技術(shù)研究[J].艦電技術(shù),2010,30(4):60-63.
[4]馬紹良,李鳳保,謝閱.用ODBC實現(xiàn)SQL Server 2000在VB中的應(yīng)用[J].計算機應(yīng)用,2003,23(1):115-118.
[5]唐波,潘紅兵,趙以順等.在LabVIEW環(huán)境下基于ADO技術(shù)和SQL語言的數(shù)據(jù)庫系統(tǒng)實現(xiàn)[J].儀器儀表學(xué)報,2007,28(4):227-229.
[6]周歡,莫軍,李代生,梁文靜.基于LabSQL的LabVIEW數(shù)據(jù)庫訪問功能研究[J].2009中國儀器儀表與測控技術(shù)大會論文集,2009,30(6):322-323.
[7]田彬.試析基于LabSQL的LabVIEW數(shù)據(jù)庫訪問技術(shù)[J].電子科學(xué)技術(shù),2017,4(2):42-45.
[8]尹技虎,王峰.基于LabSQL的LabVIEW數(shù)據(jù)庫訪問技術(shù)[J].儀表技術(shù),2011(4):55-56.
[9]曹玉保,周兆慶,吳凱.Labview基于ActiveX技術(shù)的word測試報表研究[J].中國集成電路,2016(205):71-72.
[10]趙波,陳道升.在LabVIEW中調(diào)用ActiveX自動填寫原始記錄的方法[J].測試技術(shù)研究與應(yīng)用,2011:70-72.
[11]古萍,王亮,馮磊等.基于LabSQL環(huán)境的ActiveX編程實例[J].科技創(chuàng)新與應(yīng)用,2016(19):23-25.
[12]李磊,楊峰,何耀等.基于Labview的檢測報告自動生成方法研究[J].自動化儀表,2012,33(1):65-69.