资源描述
(完整版)WinCC语音报警说明
WinCC语音报警说明
1、 需要建立一个语音数据库,用来保存需报警的语音文件名,打开SQL的“Enterprise Manager”,如下图所示:
新建一个数据库,名为“comm”,如下图所示:
2、修改comm数据库的属性,将Model改为Simple,勾选Auto Shrink,如下所示:
3、新建一张数据表sound,如下图所示:
表的结构如下所示:
保存,名为“sound”,如下图所示:
关闭Sql。
4、打开 Windows的控制面板 —〉 管理工具 -〉 数据源(ODBC),如下图所示:
点击“添加"按钮:
选中SQL Server,点击“完成"。
在名称中输入comm,在服务器中选择本机的WinCC,然后点击“下一步”:
默认选择,点击“下一步”:
选中“更改默认的数据库为",选择comm数据库,点击“下一步”:
默认选择,点击“完成”:
点击“测试数据源按钮”:
出现“测试成功!”时,说明ODBC数据源添加OK,点击“确定”即可:
5、 打开WinCC的报警记录,将需要报警的项选中“触发一个动作”,如果想让变量在下降沿报警,就还要选中“是在下降沿创建”,如下图所示:
6、打开WinCC的全局脚本,添加一个项目函数AddSoundToDatabase,代码如下:
void AddSoundToDatabase(char* DatabaseName,char* TableName,char* Text)
{
__object *db, *rs;
char sql[500];
db = __object_create("ADODB。Connection”);
rs = __object_create("ADODB.Recordset");
if(db!=NULL)
{
sprintf(sql,"DSN=%s”,DatabaseName);
db->Open(sql);
if(db—>State!=0)
{
sprintf(sql,”INSERT %s VALUES (1,’%s')",TableName,Text);
rs—>Open(sql,db,1);
}
}
db-〉Close();
__object_delete(rs);
__object_delete(db);
}
如下图所示:
7、 当变量“aaa"由0变成1时,就会触发一个动作,执行WinCC内部的GMsgFunction,我们需要修改这个脚本.打开WinCC的全局脚本,如下图所示:
然后将下面的GMsgFunction的代码覆盖原代码:
#include ”apdefap。h"
BOOL GMsgFunction( char* pszMsgData)
{
MSG_RTDATA_STRUCT mRT;
char SQLString[128];
memset( &mRT, 0, sizeof( MSG_RTDATA_STRUCT ) );
if( pszMsgData != NULL )
{
sscanf( pszMsgData, ”%ld,%ld",
&mRT.dwMsgNr, // Meldungsnummer
&mRT。dwMsgState); // Status MSG_STATE_COME, .。_GO, .._QUIT, 。._QUIT_SYSTEM
// &mRT.stMsgTime。wYear, // Tag
// &mRT.stMsgTime。wMonth, // Monat
// &mRT。stMsgTime。wDay, // Jahr
// &mRT。stMsgTime。wHour, // Stunde
// &mRT.stMsgTime。wMinute, // Minute
// &mRT.stMsgTime.wSecond, // Sekunde
// &mRT.stMsgTime.wMilliseconds, // Millisekunde
// &mRT.dwTimeDiff, // Zeitdauer der anstehenden Meldung
// &mRT.dwCounter, // Interner Meldungsz?hler
// &mRT.dwFlags, // Flags( intern )
// &mRT。wPValueUsed,
// &mRT.wTextValueUsed
// Prozesswerte lesen, falls gew????????????????????????nscht
}
if(mRT.dwMsgState==1)
{
sprintf(SQLString,”d:\\test\\sound\\%d。wav”,mRT.dwMsgNr);
AddSoundToDatabase("comm",”sound”,SQLString);
SetVisible(”","Alarm_push",1);
}
return 1;
}
修改后的GMsgFunction如下图所示:
其中选中的文本就是语音文件所在的目录,可根据需要进行修改,图中所示语音文件所在的目标为d:\test\sound.
8、将Playwav.exe复制至d:\test目录下,语音文件1.wav复制至d:\test\sound目录下:
9、打开WinCC的计算机属性:
添加D:\test\playwav.exe至“附加的任务/应用程序”:
点击“确定”即可,让Playwav。exe随WinCC自动启动.
10、运行WinCC。当变量“aaa”由0变成1时,就会自动播放1。wav两遍。
程序原理如下:
当变量“aaa"由0变成1时,就会自动触发动作“GMsgFunction”,此动作将会在comm数据库中的sound表中添加一条记录,记录的格式为“d:\test\sound\1。wav",Playwav。exe就会不停的查询此数据库,当发现有记录时,就会将记录读出,按照记录中的路径播放语音文件,在播放了两遍之后,将此记录删除.
16
展开阅读全文