《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于多串口的熱量表系數(shù)修正軟件的設(shè)計(jì)
基于多串口的熱量表系數(shù)修正軟件的設(shè)計(jì)
來源:微型機(jī)與應(yīng)用2012年第18期
李世光1, 孟強(qiáng)強(qiáng)1, 桑志峰2,等
(1. 山東科技大學(xué) 信息與電氣工程學(xué)院, 山東 青島266590; 2. 青島盤古電氣有限公司,
摘要: 為了配合自主研發(fā)的超聲波熱量表的檢定工作,依據(jù)公司制定的熱量表紅外通信協(xié)議,進(jìn)行了熱量表修正軟件的設(shè)計(jì)。該軟件實(shí)現(xiàn)了對熱量表流量和溫度系數(shù)的修正,進(jìn)而提高了熱量表的檢定精度。在Visual CC++6.0平臺下,通過MFC來創(chuàng)建應(yīng)用程序框架,利用多線程串口通信類CnComm完成多線程之間的數(shù)據(jù)通信任務(wù)。通過發(fā)送控制命令和構(gòu)造接收處理子程序來完成對串口數(shù)據(jù)的讀寫和顯示。同時(shí),利用ADO類對數(shù)據(jù)庫進(jìn)行訪問,實(shí)現(xiàn)歷史記錄的查詢功能。該軟件經(jīng)過實(shí)際檢驗(yàn),操作簡單方便,通信可靠高效,達(dá)到了檢定工作的要求標(biāo)準(zhǔn)。
Abstract:
Key words :

摘  要: 為了配合自主研發(fā)的超聲波熱量表的檢定工作,依據(jù)公司制定的熱量表紅外通信協(xié)議,進(jìn)行了熱量表修正軟件的設(shè)計(jì)。該軟件實(shí)現(xiàn)了對熱量表流量和溫度系數(shù)的修正,進(jìn)而提高了熱量表的檢定精度。在Visual CC++6.0平臺下,通過MFC來創(chuàng)建應(yīng)用程序框架,利用多線程串口通信類CnComm完成多線程之間的數(shù)據(jù)通信任務(wù)。通過發(fā)送控制命令和構(gòu)造接收處理子程序來完成對串口數(shù)據(jù)的讀寫和顯示。同時(shí),利用ADO類對數(shù)據(jù)庫進(jìn)行訪問,實(shí)現(xiàn)歷史記錄的查詢功能。該軟件經(jīng)過實(shí)際檢驗(yàn),操作簡單方便,通信可靠高效,達(dá)到了檢定工作的要求標(biāo)準(zhǔn)。
關(guān)鍵詞: 紅外通信;多串口Visual C++;系數(shù)修正

    目前,熱量表檢定裝置在我國的發(fā)展還不是很成熟,大多數(shù)熱量表檢定裝置還沒有完全實(shí)現(xiàn)計(jì)算機(jī)自動控制,特別是在一些關(guān)鍵功能方面,國內(nèi)的熱量表檢定裝置及其檢定方法的科學(xué)性和自動化程度都有待提高,主要表現(xiàn)在兩個(gè)方面:一是缺少光電通信接口;二是缺乏對熱量表儀表系數(shù)的自動修正能力[1]。例如進(jìn)行熱量表流量檢定時(shí),無論是質(zhì)量法還是標(biāo)準(zhǔn)表法都需要人工讀取被檢定表的流量參數(shù),通過與熱量表檢定裝置的標(biāo)準(zhǔn)值進(jìn)行比較,確定其是否在規(guī)定誤差范圍內(nèi), 從而做出檢定結(jié)果[2]。其檢定過程存在的缺點(diǎn)是:易于引入讀數(shù)和計(jì)算偏差,使檢定結(jié)論不準(zhǔn)確;人工讀數(shù)導(dǎo)致檢定時(shí)間長,檢定效率低,檢定自動化程度低;在熱量表檢定不合格時(shí),無法及時(shí)根據(jù)誤差自動修正儀表的流量系數(shù),使熱量表的后續(xù)工作量較大。為了避免檢定過程中人為因素對檢定結(jié)果造成的影響,減少熱量表檢定的后續(xù)工作量及提高熱量表的檢定效率,配合熱量表檢定系統(tǒng)設(shè)計(jì)了熱量表系數(shù)修正軟件。
1 熱量表紅外通信電路
    目前,熱量表的通信方式主要有三種形式:(1)M_BUS通信,用于遠(yuǎn)程讀取熱量表數(shù)據(jù)的總線標(biāo)準(zhǔn);(2)紅外通信,采用紅外發(fā)送接收管,進(jìn)行近距離的通信,主要應(yīng)用于手持紅外設(shè)備對熱量表進(jìn)行近距離抄表;(3)RS-485通信,利用一對雙絞線,實(shí)現(xiàn)平衡發(fā)送和差分接收,硬件簡單,成本低廉,多站互聯(lián)較為方便,工業(yè)應(yīng)用成熟[3]。比較三種通信方式,公司研發(fā)的熱量表采用了前兩種通信方式,即M_BUS通信和紅外通信。而熱量表系數(shù)修正軟件正是以紅外通信為基礎(chǔ)來實(shí)現(xiàn)的。下面簡單介紹所設(shè)計(jì)的超聲波熱量表的紅外通信電路。
    超聲波熱量表選用紅外發(fā)射二極管EL351430和紅外接收二極管PT-BP351420來構(gòu)成紅外通信電路,如圖1所示。紅外發(fā)射電路由一個(gè)510 Ω的電阻和EL351430紅外發(fā)射二極管組成,通過單片機(jī)MSP430的P1.4(HW_TXD)發(fā)送數(shù)據(jù);在紅外接收部分,利用紅外一體化接收二極管PT-BP351420接收紅外脈沖信號,經(jīng)放大、濾波和檢波等處理,解調(diào)成二進(jìn)制電信號,然后通過P1.3(HW_RXD)進(jìn)入單片機(jī)MSP430。

2 系數(shù)修正軟件設(shè)計(jì)方案
    VC++由于功能強(qiáng)大和應(yīng)用靈活,同時(shí)具有圖形界面友好、系統(tǒng)資源豐富、操作配置方便、運(yùn)行速度較快等特點(diǎn);而串口通信具有實(shí)現(xiàn)簡單、使用靈活方便、數(shù)據(jù)傳輸可靠等優(yōu)點(diǎn),因而用VC++編制串口實(shí)時(shí)控制軟件十分方便[4]。在檢定超聲波熱量表時(shí),為了縮短檢定時(shí)間,提高檢定效率,該軟件一次需要與多塊熱量表進(jìn)行串口數(shù)據(jù)通信,從而需要開辟多個(gè)串口,完成多串口的讀寫命令又會涉及到多線程串口的操作。因?yàn)榇藭r(shí)程序需要循環(huán)檢測串口的事件狀態(tài),當(dāng)串口出現(xiàn)收發(fā)事件時(shí),必須立即進(jìn)行串口的讀寫操作。若將這些循環(huán)檢測操作放在主線程中,將使主線程執(zhí)行速度變慢,程序的效率降低[5]。該系數(shù)修正軟件利用多線程串口通信庫CnComm來解決多線程串口通信問題,從而提高了計(jì)算機(jī)執(zhí)行程序的能力以及軟件運(yùn)行和執(zhí)行的效率,并通過ADO類對數(shù)據(jù)庫進(jìn)行訪問,實(shí)現(xiàn)熱量表檢定數(shù)據(jù)的記錄保存。軟件工作流程圖如圖2所示。

3 系數(shù)修正軟件程序設(shè)計(jì)
    利用VC++ 6.0的MFC創(chuàng)建一個(gè)單文檔的應(yīng)用程序框架,添加相應(yīng)的按鈕、編輯框、靜態(tài)文本框等控件創(chuàng)建應(yīng)用程序的人機(jī)交互界面。將所用的CGridCtrl類、CnComm類和Ado類的文件包含到應(yīng)用程序中,并在所應(yīng)用的類中包含它們的頭文件。
3.1初始化串口
    初始化主要對串口參數(shù)進(jìn)行設(shè)置,包括使用的端口、通信波特率、數(shù)據(jù)位數(shù)、奇偶校驗(yàn)、起始/停止位數(shù)等參數(shù)。設(shè)置好參數(shù)后,就可以打開串口,準(zhǔn)備進(jìn)行數(shù)據(jù)傳輸。軟件根據(jù)被檢定的表數(shù)確定打開的串口數(shù)目,并設(shè)置串口的工作狀態(tài)和波特率等參數(shù)。程序中添加讀取檢定熱量表的表號并打開相應(yīng)的串口及設(shè)置參數(shù)的代碼如下:
    void CHeatMeterView::OnButtonOpen()
    {
    for(intm_nActivePos=0;
    m_nActivePos<m_Number;m_nActivePos++)
//獲取被檢定熱量表的實(shí)際數(shù)目
  {
    nPort= m_Pos[m_nActivePos]+10;
                  //得到串口號,+10表示從COM11開始    if(Comm_[nPort].IsOpen()) Comm_[nPort].Close();
                                 //關(guān)閉已被打開的串口    
    Comm_[nPort].SetOption( Comm_[nPort].GetOption() | Cn-    Comm::EN_RX_BUFFER| CnComm::EN_TX_BUFFER);
                                      //設(shè)置串口參數(shù)        Comm_[nPort].Open(nPort,"1200,E,8,1");
    Comm_[nPort].SetWnd(this->GetSafeHwnd());
                     //設(shè)定需要監(jiān)視串口數(shù)據(jù)接收的窗口
             }
    }
3.2信息幀的發(fā)送處理
    在發(fā)送信息幀控制命令的各子程序中編寫相應(yīng)的熱量表控制命令。由于信息幀發(fā)送過程中可能出現(xiàn)誤碼或其他外界干擾,容易造成信息幀發(fā)送失敗,為了提高信息幀發(fā)送的成功率,每次發(fā)送信息幀控制命令后自動啟動超時(shí)定時(shí)器,用于計(jì)算發(fā)送數(shù)據(jù)后的超時(shí),若控制命令連續(xù)三次發(fā)送超時(shí),主站沒有得到從站的響應(yīng),則關(guān)閉超時(shí)定時(shí)器,退出本次控制命令的發(fā)送,同時(shí)提示檢定人員通信失敗的表號。各個(gè)控制命令的發(fā)送基本一致,下面以檢定啟動控制命令為例來說明,其程序代碼如下:
    void CHeatMeterView::OnButtonStart()
    {
    if (m_bSerialPortOpened==TRUE && m_Number>0)
                //確認(rèn)有被測熱量表和相應(yīng)的串口已打開
        {
        m_nActivePos = 0;                           //第一組表位
            StartTest(m_nActivePos);    
                      //發(fā)送檢定啟動控制命令的子程序
        }
    }
3.3 信息幀的接收處理
    當(dāng)主站成功發(fā)送控制命令后,從站將按照已制定的紅外通信協(xié)議給予響應(yīng)。串口接收數(shù)據(jù)采用事件驅(qū)動的方式。當(dāng)串口有數(shù)據(jù)進(jìn)入接收緩沖區(qū)時(shí),程序?qū)?zhí)行ON_MESSAGE(ON_COM_RECEIVE, OnReceive)事件。在程序中,該事件的函數(shù)名稱是OnReceive(OnReceive(WPARAM wParam, LPARAM lParam))。在該函數(shù)中,首先判斷信息幀是否出現(xiàn)數(shù)據(jù)長度、控制碼、數(shù)據(jù)標(biāo)識和偶校驗(yàn)等錯(cuò)誤,如果沒有錯(cuò)誤,則讀取接收緩沖區(qū)有效的數(shù)據(jù)字節(jié)存放到所定義的數(shù)組內(nèi),然后解析報(bào)文內(nèi)容,做出相應(yīng)的應(yīng)答;否則自動放棄該信息幀,不予響應(yīng)。在此僅給出數(shù)據(jù)幀接收處理函數(shù)OnReceive()中檢定啟動控制命令響應(yīng)信息幀的處理,其程序代碼如下:
    LRESULT CHeatMeterView::OnReceive(WPARAM wParam,        LPARAM lParam)
    {
        if (wParam  == Comm_[nPort].GetPort())
              {    
          if(firstdata_addr<=511)
               {
                m_usDataNmbr = Comm_[nPort].Read(&m_
            ReceiveBuf
            [firstdata_addr], 512);//讀取串口緩沖區(qū)信息幀
             }
         else
           firstdata_addr=0;
             }
    ……
         BYTE KeyCRT;       //檢定啟動的控制碼
          KeyCRT = m_ReceiveBuf[nStart+9];
    if (0xA3== KeyCRT)              //是否為檢定啟動響應(yīng)           {
    if(m_nActivePos!=m_Number - 1)
                                                  //下一個(gè)表位            {
              m_nActivePos++;
              Sleep(SleepTime);
              StartTest(m_nActivePos);
                          //發(fā)送檢定啟動控制命令
        }
    else
          MessageBox("通信全部成功!);
         }
……
    }
3.4 Ado類對數(shù)據(jù)庫的訪問

 


    在熱量表的檢定過程中,檢定人員容易出現(xiàn)忘記將某個(gè)流量點(diǎn)數(shù)據(jù)清零的情況,導(dǎo)致下一個(gè)流量點(diǎn)的檢定數(shù)據(jù)不準(zhǔn)確。補(bǔ)救的方法就是把檢定過的流量點(diǎn)再重新檢定一遍,這樣不僅增加檢定人員的工作量,降低熱量表的檢定效率,而且極易造成熱量表檢定結(jié)果和修正系數(shù)的不準(zhǔn)確,嚴(yán)重影響熱量表出廠的合格率。為此,建立一個(gè)Access數(shù)據(jù)庫來記錄熱量表每個(gè)檢定流量點(diǎn)的相關(guān)數(shù)據(jù)。其優(yōu)點(diǎn)是:(1)當(dāng)檢定人員誤操作后,可以及時(shí)從數(shù)據(jù)庫中恢復(fù)某一檢定過的流量點(diǎn)記錄的相關(guān)數(shù)據(jù),不需要檢定人員再重新操作; (2)可以作為研究和改進(jìn)熱量表檢定和系數(shù)修正的重要數(shù)據(jù)依據(jù)。
4 軟件運(yùn)行情況分析介紹
4.1 軟件總體概況

    該系數(shù)修正軟件利用熱量表的紅外通信功能,通過USB型光電讀寫頭與熱量表的主控制器進(jìn)行串口數(shù)據(jù)通信。在熱量表的流量檢定中,配合熱量表的流量檢定系統(tǒng)來讀取熱量表的流量基準(zhǔn)值和測量結(jié)束值,并根據(jù)有關(guān)公式計(jì)算相應(yīng)的誤差和流量修正系數(shù),從而真正實(shí)現(xiàn)熱量表檢定和儀表系數(shù)修正工作的一次性完成。不僅使熱量表檢定工作效率得到顯著的提高,而且使熱量表的批量檢定成為可能。軟件的人機(jī)界面如圖3所示。
4.2 軟件的信息幀發(fā)送和接收
    該系數(shù)修正軟件具有良好的人機(jī)交互界面,信息幀控制命令的發(fā)送都是通過單擊按鈕來實(shí)現(xiàn)的,并且發(fā)送成功與失敗都有相關(guān)的提示界面,便于檢定人員獲知相關(guān)操作是否完成。對于接收到的信息幀,軟件會自動判斷接收到信息幀的有效性和正確性,經(jīng)過相關(guān)的數(shù)據(jù)處理后顯示在人機(jī)交互界面上,便于檢定人員可以直觀地查看檢定熱量表的相關(guān)數(shù)據(jù)。在熱量表某一檢定流量點(diǎn)中,軟件讀取、顯示及計(jì)算相關(guān)誤差的界面如圖4所示。


4.3 軟件的數(shù)據(jù)記錄保存與查詢
    每完成一個(gè)流量點(diǎn)的數(shù)據(jù)讀取和計(jì)算相關(guān)誤差后,檢定人員可以點(diǎn)擊保存數(shù)據(jù)按鈕對數(shù)據(jù)記錄進(jìn)行保存,每條記錄將按照所創(chuàng)建的數(shù)據(jù)庫格式進(jìn)行存儲,記錄包括表位號、表號、管徑、被測流量點(diǎn)、溫度、基準(zhǔn)值、測量結(jié)束值、實(shí)際值、誤差、修正系數(shù)等,便于以后的數(shù)據(jù)查詢和恢復(fù)操作。
    該系數(shù)修正軟件在國內(nèi)熱量表檢定裝置及其檢定方法的科學(xué)性和自動化程度不斷提高的環(huán)境下應(yīng)運(yùn)而生,進(jìn)行了多次改進(jìn)和調(diào)試,在實(shí)際運(yùn)行中也取得了比較理想的效果。在公司半年多的使用中,軟件運(yùn)行良好,操作簡單,使用方便,通信可靠高效,不但節(jié)省了人力,減少了檢定人員的工作量,而且大大提高了檢定的科學(xué)性、可靠性和正確性,使超聲波熱量表檢定提高到了一個(gè)新水平。
參考文獻(xiàn)
[1] 吳偉龍.熱能表新型自動檢定方法的研究[J].中國計(jì)量,2009(6):67-68.
[2] 劉劍,劉俊承.熱量表自動檢定系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電力,2011,28(5):72-75.
[3] 張旭. 城鎮(zhèn)供熱計(jì)量與管理系統(tǒng)的研究與設(shè)計(jì)[D].山東:山東科技大學(xué),2011.
[4] 曹西征,郭立紅.基于VC++的紅外相機(jī)串口通軟件設(shè)計(jì)[J].微計(jì)算機(jī)信息,2007,23(4):289-
290.
[5] 劉書智.Visual C++串口通信與工程應(yīng)用實(shí)踐[M].北京:中國鐵道出版社, 2011.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国产精品久久9| 精品福利免费观看| 你懂的视频欧美| 欧美在线亚洲在线| 午夜伦欧美伦电影理论片| 一区二区免费在线观看| 亚洲精品一区中文| 亚洲人在线视频| 亚洲欧洲日韩女同| 亚洲黄色毛片| 亚洲激情女人| 亚洲日韩第九十九页| 亚洲高清av在线| 亚洲激情啪啪| 亚洲日本电影| 日韩一级视频免费观看在线| 亚洲精品之草原avav久久| 久久国产日韩| 亚洲国产精品www| 91久久精品一区二区别| 亚洲第一福利视频| 久久av资源网站| 亚洲国产精品一区二区尤物区| 久久不射中文字幕| 亚洲高清在线观看| 亚洲人成人一区二区在线观看 | 欧美一二区视频| 欧美一级视频免费在线观看| 欧美在线观看视频在线| 亚洲第一精品福利| 亚洲精一区二区三区| 日韩一本二本av| 亚洲一区二区视频在线观看| 亚洲免费一区二区| 久久福利视频导航| 免费欧美日韩| 欧美日韩免费在线观看| 欧美视频不卡中文| 国产精品资源| 在线成人小视频| 亚洲精品一区二区在线| 中文av字幕一区| 这里只有精品视频| 午夜综合激情| 亚洲成人自拍视频| av72成人在线| 欧美在线free| 欧美h视频在线| 国产精品超碰97尤物18| 国产日韩欧美不卡| 亚洲国产你懂的| aa国产精品| 午夜精品免费视频| 亚洲精品一区二区三区蜜桃久| 亚洲一本视频| 久久亚洲综合色| 欧美无乱码久久久免费午夜一区| 国产欧美一区二区三区久久| 亚洲第一天堂av| 亚洲一区在线播放| 亚洲国产精品成人综合| 亚洲伊人网站| 免费看成人av| 国产精品观看| 在线观看成人av电影| 亚洲视频1区| 亚洲精品国产拍免费91在线| 亚洲欧美三级伦理| 欧美激情精品久久久| 国产精品一区=区| 亚洲人成人77777线观看| 亚洲欧美国产一区二区三区| 亚洲毛片在线| 久久久久久久久久久成人| 欧美日韩三级| 伊人久久噜噜噜躁狠狠躁| 在线视频日韩| 亚洲久久在线| 久久人91精品久久久久久不卡| 欧美日韩一区二区三区高清| 合欧美一区二区三区| 亚洲视频 欧洲视频| 9色国产精品| 麻豆国产精品一区二区三区| 国产精品入口麻豆原神| 亚洲欧洲一区二区在线播放| 欧美在线播放一区| 亚洲欧美国产va在线影院| 欧美二区在线播放| 国内外成人免费激情在线视频| 亚洲图片欧美日产| 日韩天堂在线观看| 久久综合激情| 国产欧美在线视频| 亚洲一二三四久久| 中文亚洲免费| 欧美极品在线观看| 在线精品视频免费观看| 午夜在线不卡| 午夜亚洲性色福利视频| 欧美日韩在线影院| 亚洲精品乱码久久久久久久久| 久久精品亚洲热| 欧美在线观看一区二区| 国产精品成人在线| av成人动漫| 在线视频一区二区| 欧美乱大交xxxxx| 亚洲黄网站在线观看| 亚洲国产三级在线| 久久五月天婷婷| 国产在线播放一区二区三区| 亚洲欧美视频在线观看视频| 午夜精品久久久久久久99水蜜桃| 欧美午夜宅男影院| 一本色道久久| 亚洲一区中文字幕在线观看| 欧美色视频一区| 99这里只有久久精品视频| 亚洲神马久久| 欧美视频免费看| 一区二区三区.www| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 亚洲国产岛国毛片在线| 91久久夜色精品国产九色| 美女黄网久久| 亚洲国产精品嫩草影院| 亚洲人体偷拍| 欧美另类一区二区三区| 日韩亚洲欧美在线观看| 99精品视频免费观看| 欧美日韩国产影院| 野花国产精品入口| 午夜精品久久一牛影视| 国产精品免费在线 | 欧美伊人久久| 久久综合五月| 亚洲国产日韩欧美一区二区三区| 日韩一区二区精品| 国产精品成人免费视频| 午夜激情久久久| 久久久久久有精品国产| 精品白丝av| 亚洲美女中文字幕| 欧美日韩综合另类| 亚洲自拍电影| 久热精品在线| 日韩视频在线你懂得| 午夜视频精品| 狠狠干综合网| 日韩视频在线免费| 国产精品区一区二区三| 欧美一区二区三区四区在线| 免费视频一区| 一本一本久久a久久精品牛牛影视| 亚洲欧美日韩精品在线| 国产有码在线一区二区视频| 亚洲精品视频一区| 国产精品扒开腿做爽爽爽视频 | 国产精品国产三级国产aⅴ无密码| 亚洲欧美日本伦理| 久久中文精品| 亚洲乱码精品一二三四区日韩在线 | 国产精品免费看久久久香蕉| 亚洲大胆美女视频| 欧美精品在线一区二区| 亚洲少妇在线| 免费成人在线观看视频| 亚洲免费高清| 久久精品国产清高在天天线 | 免播放器亚洲一区| 99亚洲精品| 久久狠狠婷婷| 亚洲六月丁香色婷婷综合久久| 性欧美8khd高清极品| 精品盗摄一区二区三区| 亚洲一区二区三区免费观看| 久久婷婷国产综合尤物精品| 亚洲人www| 久久se精品一区精品二区| 在线欧美日韩| 午夜在线视频一区二区区别| 一区二区三区我不卡| 亚洲男人av电影| 激情偷拍久久| 午夜精品久久久久久久蜜桃app| 一区免费观看视频| 亚洲图片欧洲图片日韩av| 国产一区久久| 亚洲一区二区三区涩| 激情亚洲一区二区三区四区| 亚洲午夜av在线| 黄色免费成人| 午夜视频久久久| 亚洲欧洲精品成人久久奇米网| 性感少妇一区| 亚洲精品自在久久| 久久亚洲综合色| 亚洲欧美日韩中文在线制服| 欧美人妖另类|