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脚本代码如下:
#include "apdefap.h"
int gscAction( void )
{
//引用API语音函数
#pragma code ("winmm.dll");
VOID WINAPI PlaySoundA(char * pszSound,char * hmode,DWORD dwFlag);
A.监控系统所在项目创建文件夹Voices,所有的语音报警文件存储在该文件夹。通过C脚本代码获取通用路径。实现脚本如下:
B.实现的具体C脚本代码如下:
#include "apdefap.h"
int gscAction( void )
{
//引用API语音函数
#pragma code ("winmm.dll");
VOID WINAPI PlaySoundA(char * pszSound,char * hmode,DWORD dwFlag);
#pragma code();
char PrjDir[_MAX_PATH+1];
char ProjectDir01[_MAX_PATH+1];
char ProjectDir02[_MAX_PATH+1];
DM_DIRECTORY_INFO DMINFO;
CMN_ERROR error;
//项目公用路径
//项目名称应注意大小写
DMGetProjectDirectory("CDQ",PrjDir,&DMINFO,&error);
//对应于wincc语音报警序号
//修改对应的声音文件
//总共2vbs脚本怎么停止个声音文件
strcat(ProjectDir01,DMIN
hnldlg_gwp 11:12:38
FO.szProjectDir);
char PrjDir[_MAX_PATH+1];
char ProjectDir01[_MAX_PATH+1];
char ProjectDir02[_MAX_PATH+1];
DM_DIRECTORY_INFO DMINFO;
CMN_ERROR error;
//项目公用路径
//项目名称应注意大小写
DMGetProjectDirectory("CDQ",PrjDir,&DMINFO,&error);
//对应于wincc语音报警序号
//修改对应的声音文件
//总共2vbs脚本怎么停止个声音文件
strcat(ProjectDir01,DMIN
hnldlg_gwp 11:12:38
FO.szProjectDir);
strcat(ProjectDir01,"Voice\\01.wav");
strcat(ProjectDir02,DMINFO.szProjectDir);
strcat(ProjectDir02,"Voice\\02.wav");
/ Q对应于本台计算机机器名称
//如果条件满足,触发循环报警,直到给定条件消失
if ( strcmp(GetTagChar("@LocalMachineName"), "CDQ") == NULL )
{
//对应于wincc语音报警序号
//01 排焦温度:高报200(大于200触发语音报警)
if ((GetTagBit("winccENplay01")==1)&&(GetTagFloat("TT4105.PV")>=200))
{
PlaySoundA(ProjectDir01,NULL,0);
}
//02 排焦温度:高报200(大于200触发语音报警)
if ((GetTagBit("winccENplay02")==1)&&(GetTagFloat("TT4106.PV")>=200))
strcat(ProjectDir02,DMINFO.szProjectDir);
strcat(ProjectDir02,"Voice\\02.wav");
/ Q对应于本台计算机机器名称
//如果条件满足,触发循环报警,直到给定条件消失
if ( strcmp(GetTagChar("@LocalMachineName"), "CDQ") == NULL )
{
//对应于wincc语音报警序号
//01 排焦温度:高报200(大于200触发语音报警)
if ((GetTagBit("winccENplay01")==1)&&(GetTagFloat("TT4105.PV")>=200))
{
PlaySoundA(ProjectDir01,NULL,0);
}
//02 排焦温度:高报200(大于200触发语音报警)
if ((GetTagBit("winccENplay02")==1)&&(GetTagFloat("TT4106.PV")>=200))
{
PlaySoundA(ProjectDir02,NULL,0);
}
return 0;
}
PlaySoundA(ProjectDir02,NULL,0);
}
return 0;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论