WINCC实现声音报警.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在WINCC中实现声音报警 2009-02-06 20:13 先在alarm logging里把报警分类 打开自定义的报警类属性有3项 status tag lock tag acknowledge tag 后两个没用 在status tag里添加一个byte格式的tag A 然后你可以试验一下 有报警了A为0x1f 确认后为0x01 然后C s cript编一下须要编一下了 if(GetTagByte(OS1_ALARM) 0xf0) { cc_playsound(A.wav); return 1; } 此外还需要cc_playsound()和GetProjectPath()两个函数 我有现成了 把这两个函数复制到项目library里 编译一下脚本就行了 对了 声音文件*.wav放在项目sound下 没有的自己建一个 //Project Function GetProjectPath() BOOL GetProjectPath(char* lpstrProjectPath) { BOOL bRet = FALSE; char szProjectFile[_MAX_PATH+1]; char* psz = NULL; CMN_ERROR Error; bRet = DMGetRuntimeProject(szProjectFile,_MAX_PATH+1,Error); if (bRet == FALSE) { return FALSE; } psz = strrchr(szProjectFile,\); if (psz ==NULL) { return FALSE; } *(psz+1) = 0; strcpy(lpstrProjectPath, szProjectFile); return TRUE; } //Project Function CC_PlaySound() #include apdefap.h void cc_playsound(char* lpszSoundFile) { #pragma code(winmm.dll) BOOL PlaySound(LPCTSTR lpszSound, HMODULE hModule,DWORD dwSound); #define SND_FILENAME 0 #define SND_ASYNC 0x0001 #define SND_LOOP 0x0008 #pragma code() BOOL bRet = FALSE; char szProjectPath[_MAX_PATH]; char szSoundPath[_MAX_PATH]; if (lpszSoundFile == NULL) { bRet=PlaySound(NULL,NULL,SND_FILENAME|SND_ASYNC); } else { GetProjectPath(szProjectPath); sprintf(szSoundPath,%sSound%s, szProjectPath, lpszSoundFile); bRet=PlaySound(szSoundPath,NULL,SND_FILENAME|SND_ASYNC); } if (bRet == FALSE) {MessageBeep((WORD)-1);}} 报警可以用以下两种实现方法: 1、建一个全局脚本,时基为2S #include apdefap.h int gscAction( void ) { #pragma code(Winmm.dll) VOID WINAPI PlaySoundA(char* pszSound,char* hmode,DWORD dwFlag); #pragma code( ) if (GetTagByte(TAG)==1)?????????????????? 或?????? if (GetTagByte(TAG)500)???? {PlaySoundA(d: ingout.wav,NULL,1);} return 0; } 用以上程序就可以实现单个变量报警,开关量为1或模似量大于500都可以报警, 用户可以根据自己的情况改变以上数值,如果有多个变量可以增加多个if . 2、通过报警记录,先在报警记录中组态好报警记录 建一个全局脚本,时基为2S #include apdefap.h int gscAction( void ) { MSG_RTDATA_STRUCT mRT; int i; char* pszToken; //Now is my code #pragma code(Winmm.dll) BOOL WINAPI sndPlaySoundA(char* szWav

文档评论(0)

星愿 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档