• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    在Visual Basic中用DDE實現報警控制

    發布: 2007-7-14 20:28 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 13次 | 進入軟件測試論壇討論

    領測軟件測試網 作者:楊軍

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

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

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

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

    程序設計
    下面舉實例來說明程序的具體實現過程:該程序將實現無論何種原因,當進水泵房故障停機時,PC機將報警顯示“進水泵故障!”。
    我們首先建立好“進水泵故障!”的語音文件,存為alarm.mp3,然后建立一個標準VB程序,在Form1上添加一個Timer控件用于控制程序循環、一個Mp3Play控件用于播放報警文件、一個Label控件用于建立DDE通訊和一個Listbox控件用于建立報警隊列。Name屬性均為默認,listbox 的visible 屬性設為False。
    在Form1_load事件中加入如下代碼:
    Timer1.enable=true ′打開定時器
    End sub
    在Label1的Label1_Change()中加入如下代碼:
    Label1_Change()
    dim i as integer
    if label.caption=1 then
    ′如果變為報警狀態則
    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運行之后啟動該程序,就可以實現進水泵故障的語音報警了。

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

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>