返回主站|会员中心|保存桌面

新松机器人综合服务商    

新松工业机器人,新松协作机器人

新闻分类
  • 暂无分类
站内搜索
 
首页 > 新闻中心 > wincc7.0用Horn 做声音报警输出!
新闻中心
wincc7.0用Horn 做声音报警输出!
发布时间:2025-10-22        浏览次数:4        返回列表

在 WinCC 7.0 中,可通过调用 Windows 系统的Horn函数(或利用 Windows 音频接口)实现声音报警输出,即当特定报警触发时自动播放提示音(如蜂鸣声、自定义音频文件)。以下是具体实现步骤,包括全局脚本配置、报警触发关联及调试方法:

一、原理说明

WinCC 通过全局动作(VBscript 或 C 脚本) 调用系统音频函数,在报警触发时(如变量达到报警阈值)执行声音播放命令。核心依赖:

  • Windows 系统的Beep函数(生成简单蜂鸣,无需音频文件);

  • Shell命令调用系统播放器(如wmplayer.exe)播放自定义音频(.wav 格式推荐,兼容性好)。

二、具体实现步骤

1. 准备工作:确认音频文件(可选)

  • 若使用自定义声音(如报警提示音),需准备.wav格式音频文件(建议放在 WinCC 项目路径下,如C:\WinCC\Projects\你的项目\Sounds\alarm.wav,避免路径含中文或空格)。

  • 若使用系统蜂鸣,无需准备文件,直接调用Beep函数。

2. 创建全局动作(触发声音播放)

通过 WinCC 的 “全局脚本” 创建触发声音的动作,关联报警变量的状态变化。

步骤 1:打开全局脚本编辑器
  • 在 WinCC 项目管理器中,依次展开 “计算机”→“全局脚本”→“动作”,右键 “动作”→“新建”,选择脚本类型(推荐VBscript,简单易实现)。

步骤 2:编写声音播放脚本

根据需求选择以下一种脚本:

方案 1:播放系统蜂鸣(无文件依赖)

VBscript 代码(通过Beep函数生成蜂鸣,频率和时长可调整):

vbscript

' 当报警变量"Tag_Alarm"从0变为1时,触发蜂鸣(频率1000Hz,时长500ms)
If HMIRuntime.Tags("Tag_Alarm").Value = 1 Then
    ' 调用Windows API的Beep函数(需通过Wscript.Shell执行)
    Set objShell = CreateObject("Wscript.Shell")
    objShell.Run "cmd /c echo ^G", 0, False  ' ^G是ASCII码的蜂鸣符(按Ctrl+G输入)
    Set objShell = Nothing
End If
  • 说明:echo ^G中的^G是通过Ctrl+G在脚本编辑器中输入的蜂鸣控制符(ASCII 7),执行后系统会发出一声蜂鸣。

方案 2:播放自定义 WAV 音频文件

VBscript 代码(调用系统播放器播放指定音频):

vbscript

' 当报警变量"Tag_Alarm"为1时,播放自定义声音
If HMIRuntime.Tags("Tag_Alarm").Value = 1 Then
    Dim soundPath, objShell
    ' 音频文件路径(替换为你的实际路径)
    soundPath = "C:\WinCC\Projects\MyProject\Sounds\alarm.wav"
    ' 调用Windows Media Player播放(参数"play /close"表示播放后关闭播放器)
    Set objShell = CreateObject("Wscript.Shell")
    objShell.Run "wmplayer.exe """ & soundPath & """ /play /close", 0, False
    Set objShell = Nothing
End If
  • 说明:/close参数确保播放完成后自动关闭播放器,避免残留进程;路径需用双引号包裹,防止含空格时出错。

3. 关联报警触发条件

将全局动作与报警变量的状态变化关联,确保仅在报警发生时触发声音。

步骤 1:设置触发变量
  • 在全局脚本编辑器的 “触发器” 选项卡中,选择 “变量触发”,勾选报警关联的变量(如Tag_Alarm,该变量在报警发生时置 1,恢复时置 0)。

  • 触发方式:选择 “边沿触发”→“上升沿”(仅当变量从 0 变为 1 时执行,避免持续报警时重复播放)。

步骤 2:设置执行周期(可选)
  • 若需在报警持续期间间隔播放(如每 5 秒一次),可选择 “时间触发”,设置周期(如 5000ms),并在脚本中增加计时逻辑(通过全局变量记录上次播放时间)。

4. 激活全局脚本并测试

  • 保存全局动作,点击 “激活” 按钮(或通过 “项目→激活” 启动 WinCC 运行系统)。

  • 手动将Tag_Alarm变量置 1(可通过 WinCC 在线监控或变量模拟器),验证是否播放声音:

    • 若无声,检查音频文件路径是否正确、文件是否损坏,或系统音量是否开启;

    • 若重复播放,确认触发方式是否为 “上升沿”,避免变量持续为 1 时多次执行。

5. 进阶:结合 WinCC 报警控件(实现报警消音)

若需在报警确认后停止声音,可配合 WinCC 报警控件的 “确认” 事件:

  1. 在画面中添加 “报警控件”(Alarm Control),右键属性→“事件”→“确认”,关联一个新的全局动作;

  2. 该动作中编写脚本,停止音频播放(如通过taskkill关闭播放器进程):

    vbscript

  3. ' 报警确认后,关闭wmplayer进程
    Set objShell = CreateObject("Wscript.Shell")
    objShell.Run "taskkill /f /im wmplayer.exe", 0, False
    Set objShell = Nothing

三、常见问题与解决

  1. 脚本执行无声音

    • 检查路径:自定义音频路径是否正确,避免中文或特殊字符;

    • 权限问题:WinCC 运行需管理员权限,右键 “WinCC Explorer”→“以管理员身份运行”;

    • 播放器问题:系统是否安装 Windows Media Player,或尝试替换为mplayer等轻量播放器。

  2. 声音重复播放

    • 触发方式错误:确保选择 “上升沿触发”,而非 “电平触发”;

    • 变量未复位:报警恢复后,需将Tag_Alarm置 0,避免再次触发。

  3. 蜂鸣音量过小

    • 调整系统 “蜂鸣器音量”(控制面板→声音→系统声音→程序事件→默认蜂鸣→调整音量)。

总结

WinCC 7.0 通过全局 VBscript 调用系统音频功能实现声音报警,核心是将脚本与报警变量的上升沿触发关联,可灵活选择系统蜂鸣或自定义音频。实际应用中需注意路径正确性和权限设置,必要时结合报警确认功能实现 “报警 - 发声 - 消音” 的完整逻辑。

收缩
  • QQ咨询

  • 电话咨询

  • 18576370666
  • 添加微信客服