首页 | 短信 | 随身邮 | 网游神 | 聊天 | 论坛 | 新闻 | 体育 | 娱乐 | 搜索
潮流科技> 学园> 程序开发> VB> 正文
频道搜索
手机短信
频道推荐
·巨酷!支持蓝牙的罗技无线指点光笔(图)
·索尼DSC-U10:数码相机还能怎么小?(图)
·NEC推出超高2048x1536分辨率笔记本(图)
·炫银酷蓝:尼康最新入门机CP2000(图)
·诱人苹果:超低价最新款iBOOK笔记本(图)
·SONY发表超强PEG-T665c掌上电脑(图)
·Sonicblue超高采样率的硬盘MP3播放器(图)
·27日行情:天气让市场冷淡 价格稳中有降
编辑信箱
it@bj.tom.com

在VB中用DDE实现报警控制
2001年11月15日来源:赛迪网杨军

北京首都国际机场污水处理厂设备运行使用的是基于某一公司的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环境下运行成功。

北京首都国际机场污水处理厂设备运行使用的是基于某一公司的SLC500(该公司的可编程控制器型号)计算机控制系统。全厂设备采用远程控制,由工作人员在中央控制室发布命令控制设备运转(如:根据集水井液位控制水泵启停等),大大减轻了工作人员的劳动强度。但由于设备出现故障时只显示故障信息而没有声音报警,给工作人员及时发现问题带来了极大不便。笔者对系统进行分析后,利用VB编程通过DDE(Dynamic Data Exchange)与工控系统通讯,实现了系统语音报警的功能。

看世界杯,闯美人关,获意外惊喜玩世界杯点球游戏 换取千元现金大奖
爱国 守法 自律 真实 文明
发表评论:
网友昵称:

关键字:VB  DDE  
进入论坛 推荐好友
相关文章
·显示器狂刮降价风 17英寸纯平跌进千元(7月9日10:41)
·CPU也来瘦身减肥:VIA最新C3(图)(7月9日10:21)
·爱立信为TCL提供手机核心技术平台(7月9日10:17)
·中国数图11亿元商机 跨国IT巨头纷纷争抢(7月9日09:55)
·试图打破CDMA市场坚冰 联通国美双双降价(7月8日16:18)
·8日行情:内存涨势不减速龙再跌 硬盘坚挺(7月8日16:06)
·It168.com首届在线DIY大赛今日拉开序幕(7月8日15:45)
·EXPRESS DV视频采集实战-下(图)(7月8日15:19)
TOM是谁   新闻室   投资讯息   刊登广告   私隐政策   TOM招聘
Copyright © 2002 TOM.COM LIMITED. All rights reserved.