亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        水準(zhǔn)儀磁致誤差檢定程序的VC++實(shí)現(xiàn)

        2016-04-11 10:51:29趙立軍程增杰李文一蘇國營張晶
        計(jì)算技術(shù)與自動化 2016年1期
        關(guān)鍵詞:數(shù)據(jù)庫

        趙立軍 程增杰 李文一 蘇國營 張晶

        摘要:在VisualC++平臺上編寫了水準(zhǔn)儀磁致誤差檢定程序。利用NIVISA接口對產(chǎn)生磁場的可編程電源輸出電流進(jìn)行精確控制,通過Access數(shù)據(jù)庫實(shí)現(xiàn)對儀器信息和檢定數(shù)據(jù)的存儲與提取,最終根據(jù)規(guī)程要求計(jì)算出檢定結(jié)果并將其在對話框中進(jìn)行打?。ɑ蝾A(yù)覽),可應(yīng)用于磁致誤差檢定裝置中以提高檢定效率和自動化水平。

        關(guān)鍵詞:磁致誤差檢定;NIVISA;數(shù)據(jù)庫;打印及打印預(yù)覽

        中圖分類號:TP317文獻(xiàn)標(biāo)識碼:A

        1引言

        水準(zhǔn)儀是以儀器的水平視準(zhǔn)線作為基準(zhǔn)線,進(jìn)行高差測量的計(jì)量器具。它廣泛地用于大地水準(zhǔn)測量、地形變測量、各種工程水準(zhǔn)測量與大型精密機(jī)械安裝等。對于高精度的水準(zhǔn)測量,必須考慮到儀器的磁致誤差影響,尤其是在對補(bǔ)償器進(jìn)行修理之后,更應(yīng)及時(shí)對水準(zhǔn)儀的磁致誤差進(jìn)行檢定,以確保精密水準(zhǔn)測量成果[1-2]。

        本單位自上世紀(jì)80年代建立了水準(zhǔn)儀磁致誤差檢定實(shí)驗(yàn)室[3],利用亥姆赫茲線圈產(chǎn)生勻強(qiáng)磁場的方法對置于其中的水準(zhǔn)儀的磁致誤差進(jìn)行測量,通過改變可調(diào)電源輸出的電流調(diào)節(jié)線圈所產(chǎn)生的磁場。該裝置對電流的調(diào)整均需通過檢定人員人工設(shè)置實(shí)現(xiàn),電流輸出精度往往很難達(dá)到規(guī)程要求的0.01A,且檢定過程中的數(shù)據(jù)記錄和處理均由手寫完成,嚴(yán)重影響了檢定精度及效率。因此,急需開發(fā)出一套具有電源輸出控制和數(shù)據(jù)記錄處理功能的磁致誤差檢定程序以取代傳統(tǒng)的人工操作,從而提高水準(zhǔn)儀磁致誤差的檢定效率及裝置精度。

        本文利用VisualC++平臺進(jìn)行程序開發(fā),重點(diǎn)解決了USBTMC協(xié)議可編程數(shù)字電源控制、儀器檢定數(shù)據(jù)庫的設(shè)計(jì)及對話框模式下的打?。A(yù)覽)等實(shí)際問題,最終編寫了水準(zhǔn)儀磁致誤差檢定程序。該程序利用VISA接口對產(chǎn)生磁場的可編程電源輸出電流進(jìn)行精確控制,使電流輸出精度達(dá)到0.01A,并通過Access數(shù)據(jù)庫實(shí)現(xiàn)對儀器信息和檢定數(shù)據(jù)的存儲與提取,最終按照規(guī)程要求計(jì)算出檢定結(jié)果并將其在對話框中進(jìn)行打?。ɑ?、預(yù)覽),可應(yīng)用于磁致誤差檢定裝置中以提高檢定效率和自動化水平。

        2磁致誤差檢定方法及檢定程序

        《JJG425-2003水準(zhǔn)儀檢定規(guī)程》對水準(zhǔn)儀磁致誤差的檢定方法進(jìn)行了規(guī)定[4],儀器置于如圖1所示的兩維亥姆赫茲線圈中,通過電源分別為該線圈施加電流以控制儀器所處的磁場大小及方向。檢定過程中,需要根據(jù)規(guī)程逐漸變化磁場條件并通過測微光管讀取不同磁場下的儀器十字絲偏移量,對這些數(shù)據(jù)進(jìn)行數(shù)學(xué)計(jì)算可得到該臺儀器全方位直(交)流水平磁場最大磁致誤差方位角和全方位直(交)流豎直磁場最大磁致誤差方位角,最終擬合出最大磁致誤差方位上的特性曲線檢定以計(jì)算儀器在一倍地磁場下的磁致誤差值。

        圖1磁致誤差檢定裝置示意圖

        本文利用VisualC++平臺開發(fā)了磁致誤差檢定程序[5],采用基于對話框的構(gòu)架進(jìn)行設(shè)計(jì),程序界面如圖2(a)所示,包括了檢定日期、檢定人員、證書編號、儀器基本信息等內(nèi)容,同時(shí)針對直(交)流水平磁場最大磁致誤差方位角、直(交)流豎直磁場最大磁致誤差方位角以及最大磁致誤差方位上的直(交)流特性曲線分別設(shè)計(jì)了相應(yīng)的檢定程序。

        以最大磁致誤差方位上的直流特性曲線檢定程序界面(圖2(b))為例。在分別輸入“水平、垂直最大方位角”以及“電流最大值”后,根據(jù)規(guī)程要求程序?qū)⒂?jì)算出第1測回、第1檢測點(diǎn)的正向往測電流值的水平及垂直分量,并分別通過可編程電源施加于水平及垂直線圈中,在每個(gè)檢測點(diǎn)均需檢定員通過測微光管分別讀取通電、斷電情況下的儀器十字絲位置各兩次并將數(shù)據(jù)輸入至程序中,直至兩個(gè)測回共計(jì)28個(gè)檢測點(diǎn)均測量完畢即完成此項(xiàng)檢測工作。

        計(jì)算技術(shù)與自動化2016年3月

        第35卷第1期趙立軍等:水準(zhǔn)儀磁致誤差檢定程序的VC++實(shí)現(xiàn)

        在六個(gè)項(xiàng)目的檢測工作均完成后,程序會根據(jù)規(guī)程方法對測量數(shù)據(jù)進(jìn)行計(jì)算,檢定人員可以通過程序查看計(jì)算結(jié)果,并在程序中對檢測報(bào)告進(jìn)行預(yù)覽并打印。

        (a)程序主界面

        (b)直流特性曲線檢定程序界面

        3基于VISA接口的可編程電源控制

        檢定裝置選用兩臺固瑋公司生產(chǎn)的APS-1102型可編程電源分別驅(qū)動亥姆赫茲線圈產(chǎn)生水平、垂直方向磁場,通過程序?qū)崿F(xiàn)對輸出電流的精確控制。該電源可通過USB線與電腦相連,遵循USBTMC(USBTest&MeasurementClass)協(xié)議,同時(shí)提供了標(biāo)準(zhǔn)VISA(VirtualInstrumentSoftwareArchitecture,以下簡稱為"Visa")接口,可采用SCPI指令結(jié)構(gòu)進(jìn)行通信[5]。

        3.1VISA接口及其基本指令

        Visa是美國國家儀器公司開發(fā)的一種用來與各種儀器總線進(jìn)行通信的高級應(yīng)用編程接口。Visa總線軟件是不受平臺、總線和環(huán)境的限制的虛擬儀器系統(tǒng)I/O接口軟件,可用來對遵循USBTMC協(xié)議的儀器進(jìn)行配置、編程和調(diào)試[6-7]。

        在使用時(shí)需要在VC工程中導(dǎo)入庫文件庫文件visa32.lib。在VC環(huán)境下使用VISA接口與儀器進(jìn)行連接,并實(shí)現(xiàn)指令傳輸及數(shù)據(jù)讀取的基本程序如下:

        ViSessiondefaultRm,instr;

        ViStatusstatus=viOpenDefaultRM(&defaultRm);

        //建立VISA資源管理對象

        if(status//判斷是否初始化成功

        ViCharrsc[256];

        sprintf(rsc,"USB0:0x0D4A:12:%s:INSTR",serial);

        //VISA儀器信息(用于連接)

        viOpen(defaultRm,rsc,accessMode,timeout,&instr);

        //通過VISA接口連接設(shè)備

        ViUInt32count;

        Cstringwritestr=":VOLT3.0;:MEAS:CURR?";

        //符合USBTMC協(xié)議的SPCI命令

        char*p=(LPSTR)(LPCSTR)writestr;

        ViBufbuf=(ViBuf)p;

        viWrite(instr,buf,(ViUInt32)strlen((ViPChar)buf),&count);

        //向儀器寫數(shù)據(jù)

        ViCharresult[257];

        viRead(instr,(ViPBuf)result,256,&count);//從儀器讀數(shù)據(jù)至ViChar型數(shù)組

        result[count]=0;

        viClose(instr);

        viClose(defaultRm);

        //關(guān)閉VISA連接

        其中:

        viOpen(Sesn1,rsrcName,acessMode,timeout,Sesn2)用于與名為”rsrcName”的儀器進(jìn)行連接;

        viWrite(Sesn,CommStr,Count,retCount)用于向儀器寫內(nèi)容為”CommStr”的指令;

        viRead(Sesn,CommStr,Count,retCount)用于從儀器讀取”Count”字節(jié)的數(shù)據(jù),并存入數(shù)組”CommStr”中。

        3.2輸出電流精確控制程序的設(shè)計(jì)

        APS-1102型可編程電源可以通過VISA接口設(shè)置輸出電壓及控制輸出的打開及關(guān)閉,并對其實(shí)時(shí)電流進(jìn)行讀取,主要用到以下四類命令:

        [SOURce:]VOLTage[:LEVel][:IMMediate][:AMPLitude]

        該命令設(shè)置了AC+DC模式下的交流電壓。例如:”VOLT100”表示輸出交流電壓為100V。

        [SOURce:]VOLTage:OFFSet[:IMMediate]

        該命令設(shè)置了AC+DC模式下的直流電壓。例如:”VOLT:OFFS10”表示輸出直流電壓為10V。

        OUTPut[:STATe]

        該命令控制輸出繼電器的開關(guān)。例如:”O(jiān)UTPON”表示打開電源輸出繼電器。

        MEASure[:SCALar]:CURRent[:AC]?

        該命令返回輸出單位為A的電流值。例如:”MEAS:CURR?”。

        為了快速而精確地控制電源輸出電流,檢定過程中先根據(jù)線圈內(nèi)阻計(jì)算出所需電流對應(yīng)的理論電壓值,再根據(jù)施加理論電壓后線圈電流的實(shí)時(shí)測量值對輸出電壓進(jìn)行閉環(huán)微調(diào),以保證電流輸出精度控制在±0.01A之內(nèi)的同時(shí)保證調(diào)整速度,程序流程圖如圖3所示。4檢定數(shù)據(jù)庫的設(shè)計(jì)與實(shí)現(xiàn)

        4.1檢定數(shù)據(jù)庫結(jié)構(gòu)及設(shè)計(jì)思想

        根據(jù)磁致誤差檢定時(shí)儀器信息和檢定數(shù)據(jù)存儲的具體需要,對數(shù)據(jù)庫的結(jié)構(gòu)進(jìn)行了設(shè)計(jì)。

        1)設(shè)備管理數(shù)據(jù)庫:使用一個(gè)數(shù)據(jù)庫文件“sjb.mdb”來存儲被檢儀器的有關(guān)信息,包括檢定證書號、檢定日期、儀器型號規(guī)格、儀器編號、檢定單位、檢定人員、檢定環(huán)境條件等,這些信息均以證書號為主鍵保存在數(shù)據(jù)庫表中。

        圖3電流輸出精確控制程序流程圖

        2)檢定數(shù)據(jù)庫:每個(gè)證書號所對應(yīng)的儀器檢定數(shù)據(jù)均保存在以證書號命名的.mdb數(shù)據(jù)庫文件中,文件內(nèi)有六個(gè)數(shù)據(jù)表分別用于存儲該證書儀器檢定過程中六個(gè)項(xiàng)目的全部檢測點(diǎn)的觀測數(shù)據(jù)。

        檢定過程中數(shù)據(jù)庫的工作方式為(以證書號C1504001為例):

        1)在程序主界面中輸入證書號C1504001并按回車,程序會在“sjb.mdb”中的數(shù)據(jù)庫表“sjlb”的主鍵中搜尋該證書號,如果存在該主鍵則會讀取該行內(nèi)容并依次將儀器信息顯示在主界面中;如果該主鍵不存在則會在數(shù)據(jù)庫表“sjlb”創(chuàng)建一條新信息,同時(shí)創(chuàng)建一個(gè)“C1504001.mdb”文件用來存儲檢定信息。點(diǎn)擊“保存資料”可以將儀器的所有信息儲存在數(shù)據(jù)庫表“sjlb”中。

        2)點(diǎn)擊主界面中的任意檢定項(xiàng)目,即可進(jìn)入到相應(yīng)的檢定程序界面中,在界面中輸入某個(gè)檢測點(diǎn)的測量數(shù)據(jù)后,按“確定”鍵即可將該檢測點(diǎn)的數(shù)據(jù)存入C1504001.mdb中對應(yīng)該項(xiàng)目的數(shù)據(jù)庫表中,直至完成所有檢測點(diǎn)的測量。

        4.2Access數(shù)據(jù)庫及其訪問方法

        MicrosoftOfficeAccess是由微軟發(fā)布的關(guān)系數(shù)據(jù)庫管理系統(tǒng),具有等優(yōu)點(diǎn)。其符合ODBC數(shù)據(jù)庫標(biāo)準(zhǔn),同時(shí)VisualC++編程環(huán)境中提供了諸如ADO(ActiveXDataObject)數(shù)據(jù)庫應(yīng)用程序開發(fā)接口,便于數(shù)據(jù)庫程序的開發(fā)。本軟件使用Access數(shù)據(jù)庫實(shí)現(xiàn)對檢定信息及數(shù)據(jù)結(jié)果的存取。

        VisualC++平臺下訪問和處理Access數(shù)據(jù)庫的步驟如下:

        1)初始化COM庫,并用#import指令引入ADO類型庫;

        2)用Connection對象連接數(shù)據(jù)庫;

        3)建立好連接后,利用Connection、Command對象執(zhí)行SQL命令以完成對記錄集中數(shù)據(jù)記錄查詢、添加、刪除、更新等操作;

        4)使用完畢后關(guān)閉連接釋放對象。

        5對話框中的打印程序

        在VisualC++環(huán)境中,單/多文檔構(gòu)架下的打印機(jī)操作可以在向?qū)J较吕肅View類添加消息映像來完成,只需根據(jù)實(shí)際需要添加少量打印內(nèi)容的代碼就可以滿足功能,但對于對話框VisualC++并沒有配備專門的打印庫文件,因此需要進(jìn)行基于對話框的打印程序移植及開發(fā)工作[9]。本文在對話框結(jié)構(gòu)下實(shí)現(xiàn)了對檢測報(bào)告的打印及預(yù)覽功能,打印界面如圖4所示。

        在程序開發(fā)過程中通過虛擬的文檔視圖框架結(jié)構(gòu)和視圖類來實(shí)現(xiàn)與設(shè)備無關(guān)的圖像繪制及打印工作。具體流程如下:

        1)重新定義并導(dǎo)入利用VisualC++在文檔結(jié)構(gòu)中打印時(shí)用到的三個(gè)類:①CframeWnd的派生類CmainFrame作為用來定義打印的主框架窗口;②CpreviewView的派生類CmyPreviewView用來實(shí)現(xiàn)打印預(yù)覽界面的子窗口;③CscrollView的派生類CwrapperView用來控制打印過程中的視圖,將預(yù)覽的內(nèi)容輸出到打印機(jī)進(jìn)行打印。

        2)在預(yù)編譯頭文件stdafx.h中增加的指向顯示內(nèi)容的函數(shù)指針的定義語句:typedefvoid(*DRAWFUN)(CDC*pDC,CPrintInfo*pInfo,void*pVoid=NULL)。

        3)在打印內(nèi)容繪制函數(shù)OnPrint(CDC*pDC,CPrintInfo*pInfo)中對要打印的內(nèi)容進(jìn)行繪制。在此函數(shù)中可以使用CDC*虛擬設(shè)備變量(即打印紙面)定義一個(gè)畫板,利用Cfont類及Cpen類分別對打印的字體和劃線進(jìn)行定義,最后在畫板中進(jìn)行字符的書寫和線型的繪制。pInfo為CPrintInfo類型的指針,其包括了頁數(shù)、頁眉、頁腳等信息。

        4)通過以下語句實(shí)現(xiàn)對OnPrint中繪制內(nèi)容的打印及預(yù)覽:m_PreFrame=newCMainFrame(DRAWFUNpDraw,CWnd*pOldWnd,CWnd*pCallWnd,BOOLbDirect);

        其中:DRAWFUNpDraw為顯示內(nèi)容函數(shù)指針;

        CWnd*pOldWnd和CWnd*pCallWnd分別指主對話框和調(diào)用窗口指針;

        BOOLbDirect決定是否直接打印。

        6結(jié)語

        使用VC++平臺開發(fā)了水準(zhǔn)儀磁致誤差檢定程序,重點(diǎn)解決了基于VISA接口的USBTMC協(xié)議可編程數(shù)字電源輸出電流精確控制、儀器檢定數(shù)據(jù)庫的設(shè)計(jì)及對話框模式下的打?。A(yù)覽)等實(shí)際問。該軟件目前經(jīng)實(shí)驗(yàn)驗(yàn)證,已成功應(yīng)用于中,有效地提高了檢定效率和自動化水平。

        參考文獻(xiàn)

        [1]任道勝,陳如麗,楊輝.精密補(bǔ)償器水準(zhǔn)儀磁致誤差及其測試方法[J].地殼形變與地震,1997,17(04):67-72.

        [2]彭沛民.對國家標(biāo)準(zhǔn)GB12897-91部分條款的修改建議[J].地殼形變與地震,1996,16(2):85-89.

        [3]董熾.磁場對Ni002水準(zhǔn)儀影響的實(shí)驗(yàn)[J].地殼形變與地震,1987,7(3):240-46.

        [4]國家技術(shù)監(jiān)督局.JJG425-2003,水準(zhǔn)儀檢定規(guī)程[S].北京:中國計(jì)量出版社,2003.

        [5]黃維通,姚瑞霞.VisualC++程序設(shè)計(jì)教程[M].北京:機(jī)械工業(yè)出版社,2001.

        [6]GWINSTEK.ProgrammbleAC/DCPowerSource(APS-1102)[M].2009.

        [7]孫景發(fā),李剛,李素芬,等.嵌入到VC程序中控制HP34401A進(jìn)行高精度電壓測量[J].儀表技術(shù)與傳感器,2003,(9):13-15.

        [8]朱波,李華.基于SCPI語言的智能儀器LabVIEW驅(qū)動程序設(shè)計(jì)[J].儀表技術(shù)與傳感器,2008,(9):53-54.

        [9]鄒漢斌,雷紅艷.在VC++6.0中利用MFC類庫實(shí)現(xiàn)打印功能[J].湖南文理學(xué)院學(xué)報(bào),2004,16(2):58-59.第35卷第1期2016年3月計(jì)算技術(shù)與自動化ComputingTechnologyandAutomationVol35,No1Mar.2016第35卷第1期2016年3月計(jì)算技術(shù)與自動化ComputingTechnologyandAutomationVol35,No1Mar.2016

        猜你喜歡
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        兩種新的非確定數(shù)據(jù)庫上的Top-K查詢
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        快射视频网站在线观看| 国产精品天堂| 国产麻传媒精品国产av| 亚洲人成网站免费播放| 欧美亚洲国产丝袜在线| 日本中文字幕乱码中文乱码| 久久午夜羞羞影院免费观看| 国产高潮国产高潮久久久| 亚洲一区区| 精品国产亚洲av高清日韩专区| 欧美老肥婆牲交videos| 亚洲色无码播放| www.av在线.com| 一区二区日本影院在线观看| 黄射视频在线观看免费| 东北女人毛多水多牲交视频| 天天综合天天色| 国产在线播放免费人成视频播放| 内射爆草少妇精品视频| 精品亚洲成a人无码成a在线观看| 品色堂永远的免费论坛| 日韩女优一区二区视频| 成人久久久精品乱码一区二区三区| 久久婷婷五月综合97色直播| 久久伊人色av天堂九九| 国产亚洲欧美日韩国产片| 日韩激情视频一区在线观看| 国产综合色在线精品| 国産精品久久久久久久| 国产一级在线现免费观看| 极品少妇被后入内射视| 日本最新一区二区三区在线视频| 国产免费人成视频在线观看| 国产福利片无码区在线观看| 日本福利视频免费久久久| 亚洲国产国语在线对白观看| 国产精品亚洲一区二区三区在线| 91av在线播放| 色噜噜精品一区二区三区| 99视频在线精品免费观看6| 麻豆国产在线精品国偷产拍|