孙文杰 张志勇 马志出 王银龙
摘要:WinCC安装了Horn报警组件后,可以通过组态实现语音报警功能,实际应用中为提高WinCC运行性能往往不安装Horn组件。为实现语音报警功能,可以在全局脚本中使用C语言调用Windows函数来实现,驱动蜂鸣器或播放器输出指定音频。文章对C语言在WinCC监视系统语音报警中的应用进行了探讨。
关键词:Wincc监视系统;语音报警;Horn报警组件;脚本;C语言 文献标识码:A
中图分类号:TP273 文章编号:1009-2374(2017)08-0071-02 DOI:10.13535/j.cnki.11-4406/n.2017.08.034
WinCC是SIEMENS推出的运行于Windows操作系统的HMI/SCADA系统。作为全集成自动化系统的重要组成部分,该系统凭借集成方便、功能强大等优点在工业、农业等自动化领域中得到广泛应用。生产过程中如发生异常状况,SCADA系统应在第一时间以语音、图像等多种方式通知现场人员进行故障处理。WinCC的Horn组件可以通过组态配置来实现语音报警功能,但会降低WINCC的运行效率,本文介绍了一种借助脚本程序来实现语音报警功能的Wincc报警应用。
1 语音报警实现原理
WinCC本身不具备发出语音的功能,也没有提供处理声音的相关函数,但鉴于可以与操作系统完美结合的优点,我们可以通过在全局脚本使用C语言调用Windows的API函数来实现语音报警功能。
WinCC可以与PLC控制系统进行实时数据通讯。当生产过程出现异常时,WinCC可以及时准确地获取到PLC控制系统中的故障或异常代码,随后触发全局脚本执行特定程序,进而调用Windows系统API函数,驱动计算机声卡和音箱实现语言报警,如图1所示:
2 语音报警的实现
当我们对WinCC组态了消息归档(报警归档)后,在某報警事件发生时,就会触发相应的消息变量。如果在全局脚本中设定合适的触发器,就可以通过在全局脚本中编写执行C语言程序调用相关的Windows函数,使得电脑播放指定的Wav格式的音频文件,实现语音报警的功能。
2.1 Windows API函数
PlaySoundA(char*pszSound,char*hmode,DWORD dwflag)函数为Windows API函数,可以播放Wav格式的音频文件。
函数声明:
BOOL PlaySoundA(char*pszSound,char*hmode,DWORD dwflag)。
形参:
char*pszSound:指向要播放声音文件的全路径,使用两个连续的反斜杠转义代表一个反斜杠。
char*hmode:应用程序的实例句柄,除非指向一个资源标识符(即fdwSound被定义为SND_RESOURCE),否则必须设置为NULL。
DWORD dwflag:标志的组合,若成功则函数返回TRUE,否则返回FALSE。
当dwflag=0时,声音文件播放一次,该脚本一直等到播放结束。这时声音播放的脚本会一直占用这个线程,其他C脚本无法在期间执行。
当dwflag=1时,声音文件播放一次,同时并行其他的C脚本而不受影响。
当dwflag=2时,如果未找到声音文件,则不播放默认值,而是什么也不播放。
当dwflag=8时,重复该声音文件直到下个PlaySoundA调用。
2.2 全局脚本
WinCC系统运行后,当配置的相关变量的数值超出PLC系统的设定值时,电脑将自动以指定的播放形式播放指定的Wav格式的文件,实现语音报警。
全局脚本中编写相关程序并设定脚本触发器后,当触发条件满足时,WinCC系统会自动执行其中的程序实现语音报警。
实际工业生产使用中,语音报警音乐一般都很短暂,所以一般都会使用循环播放的模式,所以将PlaySoundA()函数的形参dwflag设置为0x0008,即声音文件循环播放,当故障确认后,利用故障确认位来实现报警音乐的停止播放。
此外代码编写时需要注意PlaySoundA()函数在调用中必须首先进行函数的声明,否则无法进行PlaySoundA()函数的调用,编译报错。
3 运行结果
由于该功能为语音报警的实现,虽然系统运行中可以实现语音报警,但无法直接展示运行结果,为此在全局脚本中通过格式化输出函数printf()函数以输出字符串的形式进行打印。如图3所示:
4 结语
通过在全局脚本中编写C语言可以在不安装Horn组件的情况下实现WinCC的语音报警功能,可以播放指定的Wav格式音频文件,具有方式灵活、减少系统占用资源、提高运行速度的优点,有较强的实际意义。
参考文献
[1] 何龄修.读顾城《南明史》[J].中国史研究,1998,
(3).
[2] 杨鸿.C语言在WinCC语言报警中应用[J].自动化应
用,2016,(3).
[3] 王晓东.SIMATIC WinCC环境中C语言的应用[J].控
制工程,1999,(6).
[4] 王禹.基于WinCC的操作画面语音报警设计[J].数字
技术与应用,2015,(7).
[5] 冉井旺,戴滔.语音报警在集中监控系统中的设计应
用[J].自动化应用,2011,(9).
作者简介:孙文杰(1989-),男,山东淄博人,供职于山东中烟工业有限责任公司青岛卷烟厂,研究方向:企业内自动化系统维护、管理;张志勇(1986-),男,供职于山东中烟工业有限责任公司青岛卷烟厂,硕士,研究方向:工厂自动化运维管理。
(责任编辑:蒋建华)