WinCC实现声音报警的方法
- 格式:docx
- 大小:1.23 MB
- 文档页数:26


论WinCC监视系统语音报警中C语言的运用
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:指向要播放声音文件的全路径,使用两个连续的反斜杠转义代表一个反斜杠。
按时间查询报警记录
用到控件为listView,textbox,progctrl,ImageComboCtrl
Sub
X6309X94AE1X0000X59CB_X6309X94AE1X0000X0000_X6309X94AE1X0000X0058_X6309X94AE1X00009_OnClick(ByVal Item)
Dim sPro
Dim sDsn
Dim sSer
Dim sCon
Dim sSql
Dim oRs
Dim conn
Dim oCom
Dim oItem
Dim comItem
Dim m, n, s
Dim oList
Dim T1,T2,T3,T4,T5,T6,record1,record2
Dim a,b
Set oList = ScreenItems("ListView1")
Set T1=ScreenItems("T1")
Set T2=ScreenItems("T2")
Set T6=ScreenItems("2")
Set T3=ScreenItems("3") Set T4=ScreenItems("4")
Set T5=ScreenItems("pro")
Set record1=ScreenItems("5")
Set record2=ScreenItems("6")
oList.View =3
oList.ListItems.Clear
boItems.Clear
boItems.Clear
sPro = "Provider=WinCCOLEDBProvider.1;"
sDsn = "Catalog=CC_HJ_07_08_19_17_28_13R;"
sSer = "Data Source=.\WINCC"
sCon = sPro + sDsn + sSer
sSql = "ALARMVIEW:Select * FROM AlgViewCHT WHERE
WinCC -- 组态报警和消息 -- 声音报警和消息
如何设置带有声音的信号消息?
在SIMATIC PCS 7 / WinCC V6.x下如何组态单站、服务器、冗余服务器和客户OS站的Horn编辑器?
通过消息触发喇叭
从 SIMATIC PCS 7 V5.x 的 MultiClient 中确认服务器中的信号模块
如何只有在用户成功登陆以后才激活声音报警?
信号模块的连接电缆 (6XV2175-8AH30) 的色号分配(管脚分配)是怎样的?
OS - WinCC -- 组态报警和消息 -- 声音报警和消息
如何将一台PCS 7客户端组态在声音报警确认组里?
为什么在客户端上无法确认连接服务器的信号模板?
如何设置带有声音的信号消息?
如何只有在用户成功登陆以后才激活声音报警?
在SIMATIC PCS 7 / WinCC V6.x下如何组态单站、服务器、冗余服务器和客户OS站的Horn编辑器?
信号模块的连接电缆 (6XV2175-8AH30) 的色号分配(管脚分配)是怎样的?
怎样使用确认组将额外的变量写入 PLC?
在SIMATIC PCS 7 / WinCC V6.x下如何组态单站、服务器、冗余服务器和客户OS站的Horn编辑器?
显示订货号
说明:
下列组态过程基于SIMATIC PCS 7 V6.0版本。因此,适用于所有的PCS 7 V6.0 和WinCC
V6.0以上的版本。
注意:
从PCS 7 V7或WinCC V6.2开始,系统增加了一些功能。附录中详细介绍了这些附加功能。
在SIMATIC PCS 7 V6.0中,通过Horn编辑器为单站、服务器、冗余服务器和客户OS站配置声卡或信号模块。该实例描述了如何组态报警设备的报警和警告事件类来触发语音信号。下述内容包括了工程站的所有组态(包括冗余服务器和OS客户端组态及消息确认)。
1. 按照PCS 7 V6.0组态手册在SIMATIC Manager中组态所有单站、服务器、冗余服务器和客户OS站。
WinCC中使⽤脚本实现报警
WinCC中使⽤脚本实现报警
wincc 2009-01-19 14:30:04 阅读99 评论0 字号:⼤中⼩
在6.2⾥,新建⼀个画⾯,两个按钮,⼀个开始播放声⾳(循环播放)按钮,⼀个停⽌播放按钮(没次按钮将循环播放,退出wincc同样在播放),试验成功了,就是第⼀次反应很慢,第⼀次成功报警后,之后在
调⽤就快了。
开始播放按钮代码。#pragma code("Winmm.dll")
BOOL WINAPI sndPlaySoundA(char* szWave,DWORD dwFlag);
#pragma code()
DWORD SND_ASYNC=0x0001;
DWORD SND_LOOP=0x0008;
//循环播放
sndPlaySoundA("d:\\致爱丽丝.wav",SND_ASYNC|SND_LOOP);
停⽌播放按钮代码。#pragma code("Winmm.dll")
BOOL WINAPI sndPlaySoundA(char* szWave,DWORD dwFlag);
#pragma code()
DWORD SND_ASYNC=0x0001;
DWORD SND_LOOP=0x0008;
//停⽌播放
sndPlaySoundA(NULL,SND_ASYNC);
00000000000000000000000000000000000000000000000000
积累—WinCC报警实例wincc 2009-01-19 14:33:28 阅读458 评论0 字号:⼤中⼩
这是⽹友给的实际⼯程中的例⼦,以后做项⽬使⽤时可以仔细研究⼀下,再次感谢那位热⼼的⽹友,我贴
出来供⼤家学习:
在WinCC全局脚本编辑器中完成,达到了语⾔报警的预期效果。具体步骤如下:A.监控系统所在项⽬创建⽂件夹Voices,所有的语⾳报警⽂件存储在该⽂件夹。通过C脚本代码获取通
⽤路径。实现脚本如下:B.实现的具体C脚本代码如下: