• <del id="qqie6"><sup id="qqie6"></sup></del>
  • <tfoot id="qqie6"></tfoot>
  • <ul id="qqie6"></ul>
  • 行業(yè)產(chǎn)品

    • 行業(yè)產(chǎn)品

    上海立陽自動(dòng)化有限公司


    當(dāng)前位置:上海立陽自動(dòng)化有限公司>技術(shù)文章>用VB6.0實(shí)現(xiàn)PC機(jī)對多臺(tái)流量計(jì)遠(yuǎn)程數(shù)據(jù)采集與監(jiān)控

    經(jīng)營模式:經(jīng)銷商

    商鋪產(chǎn)品:3條

    所在地區(qū):上海

    聯(lián)系人:朱立榮 (銷售部經(jīng)理)

    技術(shù)文章

    用VB6.0實(shí)現(xiàn)PC機(jī)對多臺(tái)流量計(jì)遠(yuǎn)程數(shù)據(jù)采集與監(jiān)控

    閱讀:1356發(fā)布時(shí)間:2007-2-6

    摘要: 利用VB6.0 ActiveX 控件的MSComm通信控件,實(shí)現(xiàn)了Windows9X下單臺(tái)PC機(jī)與多臺(tái)智能流量計(jì)的串行通訊,達(dá)到了對分散設(shè)備的集中控制和計(jì)量數(shù)據(jù)的采集和自動(dòng)上報(bào)功能。

    關(guān)鍵詞:PC機(jī);流量計(jì);智能儀表;RS485;串口;事件驅(qū)動(dòng)

    Collecting and controlling the Long-distance Data of Flowrates by
    Using Personal Computer Base on VB6.0
    Xiang Tan Steel Automatic Department
    Yu Wei Gang

    Abstract: This paper describes one personal computer series-communicating with many inlectual-flowrates under Windows9X by using MSComm controls of VB6.0 ActiveX’s.Coming to centralized controlling scattered measure Equipment and Automatic data collecting and switching.
    Key word: Personal computer; floweret; inlectual meter; Serial communication
    RS485; incident driving

    一、 引言
    在工業(yè)生產(chǎn)中,能源、動(dòng)力介質(zhì)的測量設(shè)備分布在現(xiàn)場的各個(gè)區(qū)域,給設(shè)備的監(jiān)控和數(shù)據(jù)的統(tǒng)計(jì)帶來諸多不便,隨著智能儀表技術(shù)的不斷發(fā)展,其通訊技術(shù)也在不斷加強(qiáng),當(dāng)今的流量測量儀表大多帶有RS-485通訊接口,*可以運(yùn)用現(xiàn)場總線方式實(shí)現(xiàn)多臺(tái)測量儀表的集中監(jiān)控與數(shù)據(jù)采集。
    本文利用VB6.0的ActiveX控件——Microsoft Communication 控件,方便的實(shí)現(xiàn)了Window9X環(huán)境下一臺(tái)PC機(jī)與多臺(tái)流量計(jì)測量儀表的串行通信功能,完成24臺(tái)流量計(jì)的數(shù)據(jù)采集與管理。

    二、 系統(tǒng)的硬件設(shè)計(jì):
    根據(jù)RS—485電氣規(guī)定,在兩線制傳輸方式下,RS—485驅(qū)動(dòng)器可帶32個(gè)接收器,實(shí)現(xiàn)多半點(diǎn)雙工通訊,通訊距離在15m時(shí)波特率可達(dá)10Mb/s,通訊距離在1.2m范圍內(nèi)波特率可達(dá)100Mb/s,超過此距離可用Repeater(中繼器),增大傳輸距離,系統(tǒng)方框圖如圖所示:

    圖中PC機(jī)通過RS232接口,經(jīng)RS232—RS485模塊與多臺(tái)流量計(jì)儀表相連接,一條總線上zui多可接32臺(tái),每臺(tái)儀表被賦予各自的通訊地址碼用以識(shí)別身份,這樣上位PC即能通過RS—485總線對掛在總線上的每個(gè)儀表進(jìn)行通訊。實(shí)現(xiàn)對流量計(jì)的遠(yuǎn)程數(shù)據(jù)采集與監(jiān)控。

    三、 流量計(jì)結(jié)構(gòu)及通訊功能:

    3.1 流量計(jì)大致由三部分組成:
    1、 流量傳感器,包括殼體組合,前置放大電路等;
    2、 溫度傳感器組合;
    3、 流量積算儀表組合。
    隨著單片技術(shù)的不斷發(fā)展,流量積算儀大多采用單片計(jì)算機(jī)組成的智能系統(tǒng),在完成系統(tǒng)的采樣積算等功能的同時(shí),還可以采用一定的通訊協(xié)議與遵循相同協(xié)議的設(shè)備聯(lián)網(wǎng),積算儀表系統(tǒng)中有1K以上字節(jié)的EPROM可以*保存數(shù)據(jù)和命令,用戶的命令和系統(tǒng)運(yùn)行參數(shù)可通過串口從PC機(jī)發(fā)送到積算儀表,積算儀表將其格式化后存入不同的EPROM地址中,供運(yùn)行時(shí)直接調(diào)用。

    3.2 積算儀表與計(jì)算機(jī)的通訊采用RS-485半雙工的方式,積算儀表作為從機(jī),上位PC機(jī)作為主機(jī),控制和監(jiān)視流量計(jì)的運(yùn)行,通訊波特率大多為9600bps,通訊格式為:1位起始位,8位數(shù)據(jù)位,1位奇偶校驗(yàn)位,1位停止位,每個(gè)從站被賦予*的本機(jī)地址,采用主機(jī)輪詢,從機(jī)應(yīng)答的通訊方式。主機(jī)通過發(fā)送命令幀啟動(dòng)一次通訊,從機(jī)接收到數(shù)據(jù)后,判斷呼叫地址是否和本機(jī)地址相同,若不同,則不與理睬,若相同則根據(jù)命令幀中的特征字(命令字),發(fā)送主機(jī)要求的數(shù)據(jù)幀。以TLXZ系列流量計(jì)為例,命令幀的格式如下:

    項(xiàng)號(hào)
    1
    2
    3
    4
    字節(jié)數(shù)
    1字節(jié)
    2字節(jié)
    4字節(jié)
    1 字節(jié)
    意義
    起始字節(jié)(STX)
    從機(jī)地址(ADDR)
    特征字
    異或校驗(yàn)(BCC)

    *項(xiàng)為幀頭(STX)取值41H,用以標(biāo)志一幀的開始;第二項(xiàng)為從機(jī)地址(ADDR)流量計(jì)地址碼,取值為0—31,當(dāng)?shù)刂反a兩個(gè)字節(jié)都為255時(shí)為廣播地址;第三項(xiàng)命令特征字為3A、3C、3F,用以命令流量計(jì)回傳的數(shù)據(jù)內(nèi)容,第四項(xiàng)BCC為異或校驗(yàn),為前面數(shù)據(jù)的異或校驗(yàn)和用于通訊校錯(cuò)。
    數(shù)據(jù)幀比較長,有12個(gè)字節(jié),其格式如下:

    項(xiàng)號(hào)
    1
    2
    3
    1
    字節(jié)數(shù)
    1字節(jié)
    2字節(jié)
    8字節(jié)
    1 字節(jié)
    意義
    起始字節(jié)(STX)
    從機(jī)地址(ADDR)
    用戶數(shù)據(jù)
    異或校驗(yàn)

    命令幀與數(shù)據(jù)幀除第三項(xiàng)外,其它意義相同,數(shù)據(jù)幀的第三部內(nèi)容是從機(jī)根據(jù)主機(jī)發(fā)出的命令幀向主機(jī)發(fā)出的本機(jī)即時(shí)、累計(jì)數(shù)據(jù),或運(yùn)行參數(shù)。
    另外主機(jī)還有一個(gè)特殊的命令幀——參數(shù)修改數(shù)據(jù)幀,它的格式為:

    項(xiàng)號(hào)
    1
    2
    3
    4
    5
    字節(jié)數(shù)
    1字節(jié)
    2字節(jié)
    1字節(jié)
    8字節(jié)
    1字節(jié)
    意義
    起始字節(jié)(STX)
    從機(jī)地址(ADDR)
    命令字
    用戶數(shù)據(jù)
    異或校驗(yàn)

    該幀的命令字特征為3E,起始碼為3F,用以區(qū)別其它命令幀,第三部分是主機(jī)向從機(jī)發(fā)送的從機(jī)運(yùn)行參數(shù),從機(jī)收到此幀后,將數(shù)據(jù)格式化,存入EPROM中,以發(fā)送流量計(jì)的運(yùn)行參數(shù),對此幀從機(jī)不回應(yīng)。

    四、 VB6.0中的ActiveX控件:

    在Windows環(huán)境下,出于對系統(tǒng)的安全考慮,操作系統(tǒng)*接管了各種硬件資源,不允許用戶直接對包括串口在內(nèi)的硬件中斷進(jìn)行管理,以往人們只能通過繁瑣的API函數(shù)或VisualC++標(biāo)準(zhǔn)通訊函數(shù)來控制各種硬件,現(xiàn)在VB6.0提供了一個(gè)ActiveX控件——Microsoft Communication Control,Version 6.0,稱為MSComm控件,利用它可以方便地進(jìn)行計(jì)算機(jī)串口的通訊管理。MSComm控件有許多屬性,其中與串口有關(guān)的重要屬性有:

    CommPort
    設(shè)置串口號(hào),類型short,設(shè)置為1、2、3等,分別表示COM1、COM2、COM3
    Settings
    設(shè)置串口通訊參數(shù)(B、P、D、S),類型string ,B表示波特率,P表示奇偶校驗(yàn)(N—無校驗(yàn),E—偶校驗(yàn),O—奇校驗(yàn),M—符號(hào)校驗(yàn),S—空格校驗(yàn)),D表示有效數(shù)據(jù)位數(shù),S表示停止位數(shù)
    PortOpen
    設(shè)置或返回通信端口狀態(tài),類型Bool;
    InputMode
    從接收緩沖區(qū)讀取數(shù)據(jù)格式,類型VARIANT,設(shè)置為0時(shí)表示字符串格式,設(shè)置為1時(shí)表示二進(jìn)制格式
    Input
    設(shè)置從緩沖區(qū)中讀取數(shù)據(jù),類型Long;
    Output
    向發(fā)送緩沖區(qū)中寫入數(shù)據(jù),類型Long;
    InputLen
    設(shè)置或返回Input 每次讀取的字節(jié)數(shù),類型Short;
    Rthreshold
    設(shè)置返回要接收的字符數(shù),類型Short;
    Sthreshold
    設(shè)置并返回發(fā)送緩沖區(qū)中允許的zui少字符數(shù),類型Short;
    CommEvent
    串口事件,類型Short;

    InputMode 使程序方便地選擇從緩沖區(qū)讀取數(shù)據(jù)格式。當(dāng)串口接收到信息時(shí)MSComm 控件提供兩種處理方法,一種為查詢方式,一種為事件響應(yīng)方式,利用SetCommEvent()函數(shù)設(shè)置串口響應(yīng)事件。當(dāng)響應(yīng)事件發(fā)生時(shí),系統(tǒng)會(huì)激活OnComm()事件。在OnComm()事件中添加用戶處理代碼,則可實(shí)現(xiàn)類似中斷的串口事件處理。

    五、 用VB6.0實(shí)現(xiàn)對流量計(jì)積算儀表的串行通訊控制:

    在Windows9X VB6.0編程環(huán)境下,新建工程引用MSComm通訊控件,在窗體中至少添加以下幾個(gè)基本控件:
    1、 1個(gè)MSComm控件,控制名為MSComm1,用于軟件對串口的訪問;
    2、 兩個(gè)定時(shí)器控件,名為(TimPeriodic和TimNonPeriodic),TimPeriodic 用于使PC機(jī)定時(shí)向各儀表發(fā)送周期性命令,使其定時(shí)回傳實(shí)時(shí)數(shù)據(jù);TimNonPeriodic 用于控制兩次非周期性指令傳送之間的時(shí)間間隔;
    3、 1個(gè)非周期性命令發(fā)送按鈕CmdNonPeriodic,用于非周期性指令的傳送啟動(dòng);
    4、若干個(gè)用于顯示儀表參數(shù)的文本框和設(shè)置儀表參數(shù)的對話框;
    監(jiān)控軟件的核心是如何讀取和處理現(xiàn)場儀表的實(shí)時(shí)數(shù)據(jù),編程時(shí)應(yīng)注意以下幾個(gè)問題:
    ①、 主機(jī)采用輪詢方式訪問從機(jī),從機(jī)應(yīng)答到發(fā)送完數(shù)據(jù)有一定的時(shí)間間隔,一般設(shè)定為2—3秒;
    ②、 由于采用一個(gè)串口和半雙工通訊方式,一方發(fā)送數(shù)據(jù)時(shí)另一方必須等待接收,因此在發(fā)送非周期性命令時(shí),必須停止輪詢,否則會(huì)發(fā)生數(shù)據(jù)包碰撞,使通訊失敗;
    ③、 主機(jī)呼叫從機(jī)無應(yīng)答時(shí),要有報(bào)警設(shè)置,提示通訊出錯(cuò),一般設(shè)置3次呼叫無應(yīng)答后,即可停止呼叫,提示通訊出錯(cuò),跳過此從機(jī)繼續(xù)執(zhí)行;
    ④、 當(dāng)從機(jī)故障或停運(yùn)時(shí),應(yīng)可自動(dòng)跳過對此從機(jī)輪詢,以節(jié)省輪詢時(shí)間,并在顯示窗口提示,同時(shí)寫入故障記錄。
    下面給出讀取和處理現(xiàn)場儀表數(shù)據(jù)時(shí)的源代碼,供參考:

    5.1 窗體中各控件初始設(shè)置:

    Sub Form-load()
    MSComm1,CommPort=2 //選用COM2口通訊
    MSComm1,Setting=“9600,N,8,1 //設(shè)置通訊參數(shù)
    MSComm1,Inputlen=0 //Input將讀取緩沖區(qū)全部內(nèi)容
    MSComm1,InputlenSize=1024 //設(shè)置接收緩沖區(qū)大小
    MSComm1,PortOpen=True n //打開通訊端口
    MSComm1,InBufferCount=0 //清除發(fā)送緩沖區(qū)
    MSComm.OutbufferCount=0 //清除接收緩沖區(qū)
    TimNonPeriodic.Interval=3000 //設(shè)置3秒定時(shí)間間隔
    TimNonPeriodic.Interval=500 //設(shè)置0.5秒定時(shí)間間隔
    CmdPressed=False //命令按鈕在未激活狀態(tài)
    DuringPeriodic=False //周期命令傳輸未開始
    DuringNonPeriodic=False //非周期命令傳輸未開始
    End Sub

    5.2 周期性命令的發(fā)送:

    Sub TimPeriodic_Timer()
       If DuringNonPeriodic=True Then Exit Sub //非周期命令數(shù)據(jù)傳送未結(jié)束退出過程
              DuringPeriodic=True //周期命令準(zhǔn)許發(fā)送
              Call Send Date (Periodic_COMMAND) //發(fā)送周期性命令
              MSComm1.Rthreshold=R_PERIOPIE_BYTE //接收字節(jié)后引發(fā)OnCommgk 事件
    End Sub

    5.3 非周期命令的發(fā)送

        Sub CmdNomPeriodic_click()

     
               CmdPressed=true

    //允許發(fā)送
         End Sub

     
         Sub TimNoPeriodic_Timer()

    //發(fā)送周期性命令
              If DuringPeriodic=True or CmdPressed=False Then Exit Sub

    //周期性命令傳送未結(jié)束或本次傳送未被允許時(shí),退出本過程
               CmdPressed=false

    //發(fā)送命令按鈕恢復(fù)禁止
               Call SendDate(NoPeriodic_COMMAND) //發(fā)送命令
              MSComm1.Rthreshold=R_NONPERIODIC_BYTE //接收字節(jié)后引發(fā)Oncomm事件

    5.4 數(shù)據(jù)的接收和處理:

    流量計(jì)積算儀表回傳數(shù)據(jù)時(shí)即可在主機(jī)上引發(fā)OnComm()事件,在此事件處理函數(shù)中,首先判斷接收數(shù)據(jù)的完整性,然后將數(shù)據(jù)一次全部讀到所定義的變量參數(shù)中,根據(jù)流量計(jì)通訊協(xié)議中定義的內(nèi)容,分別取出各個(gè)字節(jié),解析出意義,在屏幕上顯示,同時(shí)利用OFFICE自帶的Access數(shù)據(jù)庫,在VB監(jiān)控程序中加入DATA控件,將數(shù)據(jù)存入數(shù)據(jù)庫中,使用VB的報(bào)表功能即可產(chǎn)生日、月、年報(bào)表,同時(shí)可以通過編程將數(shù)據(jù)發(fā)往企業(yè)內(nèi)部主數(shù)據(jù)庫,實(shí)現(xiàn)能源計(jì)量數(shù)據(jù)的自動(dòng)上報(bào)。

    六、結(jié)語:

    本文利用VB6.0下的ActiveX控件實(shí)現(xiàn)了在Windows9X環(huán)境下,單臺(tái)PC與多臺(tái)流量計(jì)的通訊監(jiān)控。本系統(tǒng)在寶鋼集團(tuán)調(diào)試系統(tǒng)中成功使用,實(shí)現(xiàn)了分散計(jì)量點(diǎn)數(shù)據(jù)的自動(dòng)采集、匯總與上報(bào),及時(shí)反應(yīng)出生產(chǎn)中能源計(jì)量數(shù)據(jù),為生產(chǎn)的成本控制起到了積極作用,整個(gè)系統(tǒng)結(jié)構(gòu)簡單,無需購置價(jià)格昂貴的組態(tài)軟件,方便、靈活,具有較好的實(shí)際價(jià)值和使用性。

    參考文獻(xiàn):
    1、范逸文、陳立元 Visual Basic與RS-232串行通信控制[M],清華大學(xué)出版社,2002年。
    2、王仲文等釋,精通串行通信[M],北京電子工業(yè)出版社,1995年。
    3、(美)Steven Holzner.Visual Basic 6.0 技術(shù)內(nèi)幕,機(jī)械工業(yè)出版社[M],1999。
    4、TLXZ系列流量計(jì)說明書,2002年


    儀表網(wǎng) 設(shè)計(jì)制作,未經(jīng)允許翻錄必究 .? ? ? Copyright(C)?2021 http://m.caria-chile.com,All rights reserved.

    以上信息由企業(yè)自行提供,信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性由相關(guān)企業(yè)負(fù)責(zé),儀表網(wǎng)對此不承擔(dān)任何保證責(zé)任。 溫馨提示:為規(guī)避購買風(fēng)險(xiǎn),建議您在購買產(chǎn)品前務(wù)必確認(rèn)供應(yīng)商資質(zhì)及產(chǎn)品質(zhì)量。

    會(huì)員登錄

    ×

    請輸入賬號(hào)

    請輸入密碼

    =

    請輸驗(yàn)證碼

    收藏該商鋪

    登錄 后再收藏

    提示

    您的留言已提交成功!我們將在第一時(shí)間回復(fù)您~
    主站蜘蛛池模板: 国产高清成人mv在线观看| 成人午夜免费福利| 欧洲成人r片在线观看| 777奇米四色成人影视色区| 亚洲激情成人网| 最新国产成人ab网站| 免费国产成人午夜私人影视 | 国产成人精品一区二三区| 亚洲欧洲精品成人久久曰| 欧美成人午夜视频在线观看| 国产成人无码综合亚洲日韩| 欧美成人手机视频| 国产69久久精品成人看| 日本成人免费网站| 亚洲欧美成人一区二区在线电影| 成人人免费夜夜视频观看| 欧美成人精品三级网站| 亚洲av成人综合网| 国产成人精品免费视频大全| 久久久久亚洲AV成人无码电影| 天天成人综合网| 欧美日韩一区二区成人午夜电影| 亚洲精品成人网站在线观看 | 成人免费在线播放| 91成人免费在线视频| 亚洲欧美日韩成人一区在线| 国产成人精品免费久久久久| 日韩国产成人精品视频人| 欧美成人全部视频| 久久成人精品视频| 亚洲av成人综合网| 久久久久久亚洲精品成人| 国产成人一区二区三区| 国产成人精品亚洲精品| 国产精品成人久久久久| 国产精品成人无码久久久| 外国成人网在线观看免费视频| 成人精品视频一区二区三区| 成人黄动漫画免费网站视频| 成人毛片一区二区| 成人品视频观看在线|