• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當(dāng)前位置:雨林木風(fēng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

        在Visual Basic中用DDE完成報警控制

        在Visual Basic中用DDE完成報警控制

        更新時間:2022-05-06 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

        作者:楊軍

        北京首都國際機(jī)場污水處理廠設(shè)備運(yùn)行使用的是基于某一公司的SLC500(該公司的可編程控制器型號)計算機(jī)控制系統(tǒng)。全廠設(shè)備采用遠(yuǎn)程控制,由工作人員在中央控制室發(fā)布命令控制設(shè)備運(yùn)轉(zhuǎn)(如:根據(jù)集水井液位控制水泵啟停等),大大減輕了工作人員的勞動強(qiáng)度。但由于設(shè)備出現(xiàn)故障時只顯示故障信息而沒有聲音報警,給工作人員及時發(fā)現(xiàn)問題帶來了極大不便。筆者對系統(tǒng)進(jìn)行分析后,利用VB編程通過DDE(Dynamic Data Exchange)與工控系統(tǒng)通訊,實現(xiàn)了系統(tǒng)語音報警的功能。

        通訊系統(tǒng)分析
        該系統(tǒng)為工業(yè)DH+網(wǎng),系統(tǒng)硬件環(huán)境由兩臺安裝1784-KTx通訊卡的工控PC機(jī)和五臺SLC500(AB公司的可編程控制器型號)組成。
        PC機(jī)上的通訊軟件和工業(yè)組態(tài)軟件分別為RSLINX和RSVIEW。它們之間的通訊采用DDE(Dynamic Data Exchange 動態(tài)數(shù)據(jù)交換)技術(shù),所以我們只要知道提供DDE服務(wù)的Application、Topic、Item就可以在VB開發(fā)環(huán)境下利用相關(guān)控件與RSLINX及RSVIEW進(jìn)行通訊了。

        語音提示報警功能的實現(xiàn)
        語音播放可以支持wav或MP3格式的聲音文件,由于MP3 文件體積小所以開發(fā)中我們選用這個格式。首先,我們從網(wǎng)站下載一個ActiveX控件用于播放語音,控件名為Mp3Play.OCX,下一步是錄制語音,我們先用Windows中的錄音機(jī)將所需提示的語音錄成wav格式,再用MP3轉(zhuǎn)換器將其轉(zhuǎn)成MP3格式。

        總體結(jié)構(gòu)圖
        A圖主要說明:DDE的建立以及出現(xiàn)報警后將報警信息插入到報警隊列最后。報警隊列是等候報警的信息的排隊。因為計算機(jī)在廣播報警信息時一次只能廣播一條,建立報警隊列后同時發(fā)生的報警將等候上一條播完后再廣播。
        B圖表示定時在報警隊列中檢查及有報警信息后的播放過程。

        程序設(shè)計
        下面舉實例來說明程序的具體實現(xiàn)過程:該程序?qū)崿F(xiàn)無論何種原因,當(dāng)進(jìn)水泵房故障停機(jī)時,PC機(jī)將報警顯示“進(jìn)水泵故障!”。
        我們首先建立好“進(jìn)水泵故障!”的語音文件,存為alarm.mp3,然后建立一個標(biāo)準(zhǔn)VB程序,在Form1上添加一個Timer控件用于控制程序循環(huán)、一個Mp3Play控件用于播放報警文件、一個Label控件用于建立DDE通訊和一個Listbox控件用于建立報警隊列。Name屬性均為默認(rèn),listbox 的visible 屬性設(shè)為False。
        在Form1_load事件中加入如下代碼:
        Timer1.enable=true ′打開定時器
        End sub
        在Label1的Label1_Change()中加入如下代碼:
        Label1_Change()
        dim i as integer
        if label.caption=1 then
        ′如果變?yōu)閳缶癄顟B(tài)則
        For i=0 to listbox1.listcount-1
        ′檢查隊列,有此信息則不插入信息
        If “alarm”=listbox1.list(i) then Exit sub
        Next i
        Listbox.AddItem(“alarm”)
        ′插入新報警信息到隊列最后
        End sub
        在Timer1的On_Timer事件中加入如下代碼:
        Private Sub Timer1_Timer()
        Dim retcode As Integer
        Dim temstring As String
        If LISTBOX1.ListCount = 0 Then Exit Sub ′檢查隊列是否為空
        temstring = LISTBOX1.List(0)
        ′取出第一條報警信息
        LISTBOX1.RemoveItem (0)
        ′將該條移出報警信息隊列
        On Error GoTo error_handle
        retcode = Mp3Play.Open(App.Path + temstring + ".mp3", "")
        retcode = Mp3Play.Play ′播放語音報警
        Exit Sub
        error_handle: ′錯誤處理
        'retcode = Error
        soundable = True
        Resume Next
        End Sub


        完成以上工作后,在RSLINX和RSVIEW運(yùn)行之后啟動該程序,就可以實現(xiàn)進(jìn)水泵故障的語音報警了。

        上面只是個例子,在功能上及用戶界面上都還很不完善,但是利用同一方法可以實現(xiàn)在線設(shè)備的監(jiān)視及信號采集等工作,有興趣的話,讀者可以自己嘗試。以上代碼在VB6、Windows 9X環(huán)境下運(yùn)行成功。

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 一级做a爰片久久毛片免费看| 成人免费视频一区| 亚洲国产成人久久精品99 | 色窝窝免费一区二区三区| 亚洲黄色中文字幕| 59pao成国产成视频永久免费| 久久精品亚洲中文字幕无码麻豆| 久久久久国色av免费看| 亚洲天堂中文资源| 国产成人精品免费视频动漫 | 一级女性全黄久久生活片免费| 免费A级毛片无码A| 免费一区二区三区在线视频| 国产啪亚洲国产精品无码| 国产免费A∨在线播放| 国产亚洲精AA在线观看SEE| 日韩免费无码一区二区三区| 亚洲国产电影在线观看| 免费黄色毛片视频| 免费大片av手机看片| 亚洲精品乱码久久久久久蜜桃不卡 | 亚洲伦理一二三四| 黄a大片av永久免费| 免费无码专区毛片高潮喷水| 伊人久久大香线蕉亚洲五月天| 久久久久国产精品免费网站| 亚洲va乱码一区二区三区| 国产精品麻豆免费版| 91免费在线视频| 亚洲人6666成人观看| 国产91在线免费| 久久这里只精品国产免费10| 91亚洲国产成人久久精品网址| 国产精品麻豆免费版| 国产精品区免费视频| 亚洲日韩精品无码专区加勒比 | 一级女性全黄久久生活片免费| 久久国产亚洲高清观看| 日韩一区二区免费视频| 在线观看特色大片免费网站| 亚洲国产精品免费观看|