WINCC中报警脚本

合集下载

WINCC语音报警脚本

WINCC语音报警脚本

通过报警记录报警,现在报警记录中组态好报警记录
建全局脚本,时基为2s
#include "apdefap.h"
int gscAction(void)
{
MSG_RTDATA_STRUCT mRT;
int i;
char* pszToken
//NOW is my code
#pragma code ("Winmm.dll")
LPVOID lpvUser;
LPCMN_ERROR lpError;
BOOL n1;
n1=MSRTGetMsgQuit(&alarmunack,errorunack);
SetTagWord("number",alarmunack);
MSRTGetMsgActual(&alarmsum,errorsum);
BOOL WINAPI sndPlaySoundA(char* szWave,DWORD dwFlag);
#pragma code)()
DWORD SND_ASYNC=0x0001;
DWORD SND_LOOP=0X0008;
DWORD alarmsum,alarmunack;
LPCMN_ERROR errorunack,errorsum;
if (GatTagByte)("TAG")==1) 或 if (GetTagByte("TAG")>500)
{PlaySoundA("d:\\ringout.wav",NULL,1);}
return 0;
}
可实现单变量报警,开关量为1或模拟量大于500即可报警,若有多个变量可增加多个if.

WinCC实现声音报警的方法

WinCC实现声音报警的方法

#include "apdefap.h"int gscAction( void ){#pragma code("Winmm.dll")VOID WINAPI PlaySoundA(char* pszSound,char* hmode,DWORD dwFlag);#pragma code( )if (GetTagByte("TI101")>100){PlaySoundA("C:\\\\Program Files\\\\Windows NT\\\\Pinball\\\\SOUND36.WAV",NULL,1);} return 0;}报警可以用以下两种实现方法: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:\\ringout.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* szWave,DWORD dwFlag);#pragma code()DWORD SND_ASYNC=0x0001;DWORD SND_LOOP=0x0008;DWORD alarmsum,alarmunack;LPCMN_ERROR errorunack,errorsum;#pragma code("msrtcli.dll")#pragma code()LPDWORD lpdwServiceID;MSG_SERVICE_NOTIFY_PROC lpfnNotifyProc;LPMSG_FILTER_STRUCT lpMsgFilter;DWORD dwNotifyMask;LPVOID lpvUser;LPCMN_ERROR lpError;BOOL n1;n1=MSRTGetMsgQuit(&alarmunack,errorunack);SetTagDWord("number",alarmunack);MSRTGetMsgActual(&alarmsum,errorsum);SetTagDWord("sum",alarmsum);if (alarmsum==0)sndPlaySoundA(NULL,SND_ASYNC);else{if (alarmunack>0)sndPlaySoundA("C:\\Program Files\\WindowsNT\\Pinball\\SOUND36.WAV",SND_ASYNC|SND_LOOP);elsesndPlaySoundA(NULL,SND_ASYNC);//sndPlaySoundA("C:\\windows\\media\\office97\\laser.wav",SND_ASYNC|SND_LOOP); }return 1;}这个可以实现报警记录中只要有报警发生,那么就触发声音报警。

WinCC实现声音报警的方法

WinCC实现声音报警的方法
Windows XP电
^JWindo*rs XPK£]WlndQrS XP J
Windows XF PS^Jringin WaVsΛjWιndovs XP ^^jrlngout. WaVrJWindO^SXP
请单击继续
大才
——
40
39
39
首先请记录声音文件所
WaV
.WaV
.VraLv
.Wav
vfs XF腿?单命令・way
工15t辽t∙*3
23
23
22
22
20
20
17
10
7
6
3
2
2
205
□≡≡同步
匚:线性标定
过程值范圉
值1
≡2
变呈值范国
从操作粟纭观点看变星的数据类型
取消

■全局库
÷IBiSPlayrS
÷ _J OPerati on
÷ _J Γl WtELein^nt 2
SlQ
+_J SyiTlbOIS
念项目库
⅛ ⅛β X
^pragmaOPtiOn(mbcs)
//WIN ∞:TAGNAME-BSECTlONeSTART
// syntax: #define TQgNameInAetion "DMTagName11
//nextTQglD:1
//WIN CC:TAGNAME_S ECTIONLEND
/∕WIN∞PICNAME-SECTION-START
inf
+:」InStalIer
,*∣j ⅛v∙⅛
12 sChelnaS
Media
Mi CrOSOft. NEr ms agent Risapps fhui network diagnostic OfnLRe Web P⅛ξβs

WINCC声音报警脚本

WINCC声音报警脚本
首先,这是一个全局脚本(在全局脚本中创建一个项目函数,然后调用此函数),
可以放在当前显示的画面的任何元素中,并对代码进行如下的添加:
建个变量(Bit)“AlarmSound”有报警的时候为“1”,没有报警的时候“0”,
写个全局脚本触发器里选择变量触发“AlarmSound”
{
#pragma code("Winmm.dll")
BOOL WINAPI sndPlaySoundA(char* szWave,DWORD dwFlag); laySoundA(NULL,0X0);
}
对上述代码中: 关于windows API函数sndPlaySoundA(char* szWave,DWORD dwFlag);
使用该代码即可实现WinCC中的声音报警.
if(GetTagBit("AlarmSound")!=0)
sndPlaySoundA("c:\\win2003\\system32\\ALSNDMGR.WAV",0X1|0X8);
else
sndPlaySoundA(NULL,0X0);
return 0;
(脚本触发变量为内部变量,若是外部变量则使其与一内部变量关联)
int gscAction( void )
{
#pragma code("Winmm.dll")
BOOL WINAPI sndPlaySoundA(char* szWave,DWORD dwFlag);
#pragma code()
char* szWave 是声音文件的路径
DWORD dwFlag 是标识常量
0x0:播放WAV 文件,播放完毕后将控制转移回你的应用程序中。是不会一直响个不停的。

wincc声音报警实现方法

wincc声音报警实现方法
NT\\Pinball\\SOUND36.WAV",SND_ASYNC|SND_LOOP);
else
sndPlaySoundA(NULL,SND_ASYNC);
//sndPlaySoundA("C:\\windows\\media\\office97\\laser.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;
DWORD alarmsum,alarmunack;
#pragma code( )
if (GetTagByte("TAG")==1) 或 if (GetTagByte("TAG")>500)
{PlaySoundA("d:\\ringout.wav",NULL,1);}
return 0;
}
用以上程序就可以实现单个变量报警,开关量为1或模似量大于500都可以报警,用户可以根据自己的情况改变以上数值,如果有多个变量可以增加多个if .
MSRTGetMsgActual(&alarmsum,errorsum);
SetTagDWord("sum",alarmsum);
if (alarmsum==0)
sndPlaySoundA(NULL,SND_ASYNC);
else

WINCC语音报警脚本

WINCC语音报警脚本
if (GatTagByte)("TAG")==1) 或 if (GetTagByte("TAG")>500)
{PlaySoundA("d:\\ringout.wav",NULL,1);}
return 0;
}
可实现单变量报警,开关量为1或模拟量大于500即可报警,若有多个变量可增加多个if.
#pragma code("msrtcli.dll")
#pragma code()
LPDWORD lpdwServiceID;
MSG_SERVICE_NOTIFY_PROC lpfnNotifyProc;
LPMSG_FILTER_STRUCT lpMsgFilter;
DWORD dwNotifyMask;
LPVOID lpvUser;
LPCMN_ERROR lpError;
BOOL n1;
n1=MSRTGetMsgQuit(&alarmunack,errorunack);
SetTagWord("number",alarmunack);
MSRTGetMsgActual(&alarmsum,errorsum);
BOOL WINAPI sndPlaySoundA(char* szWave,DWORD dwFlag);
#pragma code)()
DWORD SND_ASYNC=0x0001;
DWORD SND_LOOP=0X0008;
DWORD alarmsum,alarmunack;
LPCMN_ERROR errorunack,errorsum;

WinCC实现声音报警的方法

WinCC实现声音报警的方法
//Syntex: ^define PiCNGmeInACtiOnllPictureNsme"
//next PidD:1
//WlNCCFICNAMEeSECTIONeEND
^include,⅛pdefap h"
^PrSgmaCOde("Winmrn.dll,,)
VOlD WlNAPl PleySOUndA (CharfcPSZSOUnd,ChGL广hmode, DWORD dυvflag);
#Pragma code(
PlaySOUndA(
}
PlaySOUndA ι⅛数的说啊=
姿数char* PSZSoUndt
指定声音文件r.wav ±ftj的全S⅛径G
篆武CharThmodθf为NLILL.
参数DWoRD Clvxflag:
SND,SYNC = OXOOOOf津首文件播取一次J诙脚本一宜尊到播歆结朿
^pragmaOPtiOn(mbcs)
//WIN ∞:TAGNAME-BSECTlONeSTART
// syntax: #define TQgNameInAetion "DMTagName11
//nextTQglD:1
//WIN CC:TAGNAME_S ECTIONLEND
/∕WIN∞PICNAME-SECTION-START
在WirlCC中实现声音报警功能
内容介绍;
1、C脚本播放WaV文件
2、C脚本触发Pe蜂鸣器
3、VBS脚本调用媒体播放器
3、报警器HORN的使用
C脚本播放WaV文杵
ffinclude "aρdefap.h
VOid OnCliCk(Char
ffpragma COde ('Winmrτι.dll

WinCC的声音报警(通过HORN控件和脚本分别实现)

WinCC的声音报警(通过HORN控件和脚本分别实现)

WinCC的声音报警对于组态软件WinCC中的声音报警,也有不少的朋友在讨论这个话题,在这里写的是我在出差期间,需要在项目中用到的声音报警,并且实现自动触发,按钮关闭声音,再次自动触发的循环声音报警代码.1.采用代码实现首先,这是一个全局脚本(在全局脚本中创建一个项目函数,然后调用此函数),可以放在当前显示的画面的任何元素中,并对代码进行如下的添加:建个变量(Bit)“AlarmSound”有报警的时候为“1”,没有报警的时候“0”,写个全局脚本触发器里选择变量触发“AlarmSound”(脚本触发变量为内部变量,若是外部变量则使其与一内部变量关联)int gscAction( void ){#pragma code("Winmm.dll")BOOL WINAPI sndPlaySoundA(char* szWave,DWORD dwFlag);#pragma code()if(GetTagBit("AlarmSound")!=0)sndPlaySoundA("c:\\win2003\\system32\\ALSNDMGR.WAV",0X1|0X8);elsesndPlaySoundA(NULL,0X0);return 0;}即可实现在肩控画面中出现报警的同时启动声音文件.在停止的时候用按钮控制,其中事件代码为:#include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){#pragma code("Winmm.dll")BOOL WINAPI sndPlaySoundA(char* szWave,DWORD dwFlag);#pragma code()sndPlaySoundA(NULL,0X0);}对上述代码中:关于windows API函数sndPlaySoundA(char* szWave,DWORD dwFlag);char* szWave是声音文件的路径DWORD dwFlag是标识常量0x0:播放WAV文件,播放完毕后将控制转移回你的应用程序中。

WINCC-C脚本大全

WINCC-C脚本大全

WINCC C脚本的标准函数 12009-08-06 17:04标准函数该系统包含标准函数。

可以按需要修改这些函数。

此外,还可以自己创建标准函数。

该系统包括一个标准函数集。

一、Alarm - 简短描述Alarm组包含控制WinCC报警控件的函数。

标准函数可用于工具栏中的每一个按钮。

这些函数可用来创建自定义工具栏,例如选择画面,或者定义控件上的设置。

1.void AcknowledgeMessage(DWORD MsgNr)函数,确认消息系统中带编号的消息,该编号被传递为参数。

使用标准函数操作WinCC报警控件的实例{//确认选择的报警记录消息AcknowledgeMessage(GetTagWord("U08i_Msg Nr"));}指定待确认的消息号。

在本例中是从变量读取的。

2.BOOL AXC_OnBtnArcLong(char* lpszPi ctureName, char* pszMsgWin)函数,在消息窗口中该函数表示消息存储在长期归档中。

使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Contro l1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。

Control 1是WinCC报警控件的对象名。

3.BOOL AXC_OnBtnArcShort(char* lpszPic tureName, char* pszMsgWin)函数,在消息窗口中该函数表示消息存储在短期归档中。

使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Contro l1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。

【WinCC】使用VBS读取报警记录数据到EXCEL

【WinCC】使用VBS读取报警记录数据到EXCEL

【WinCC】使用VBS读取报警记录数据到EXCEL1概述介绍如何在WinCC项目中使用VBS脚本读取报警记录归档数据,并把获取的数据保存成新的Excel文件。

2软件环境Windows XP SP3 中文版、WinCC7.0 SP2 ASIA、Microsoft office Excel 20073访问原理WinCC报警记录数据是以压缩的形式存储在数据库中,需要通过WinCC连通性软件包提供的OLE-DB接口才能够解压并读取这些数据。

当使用OLE-DB方式访问数据库时关键需要注意连接字符串的写法和查询语句的格式。

连接字符串格式为“ Provider=WinCCOLEDBProvider.1; Catalog= ***; Data Source= ***;”,其中:Catalog为WinCC运行数据库的名称,当修改项目名称或在其它计算机上打开原项目时, Catalog会发生变化。

建议使用WinCC内部变量“@DatasourceNameRT”获得当前项目的Catalog。

Data Source为服务器名称,格式为“〈计算机名称>\WinCC”。

3.1 查询语句格式查询语句的格式要求如下:AlARMVIEW:SELECT * FROM [ WHERE ..... optional ]其中参数信息如下所示:ViewName:数据库表名。

必须用需要的语言指定该表。

比如:中文字符表名为:ALGVIEWCHT,英文字符表明为:ALGVIEWENU等。

Condition:为过滤标准。

详细说明请参见下表:表1查询参数表3.2查询结果查询结果作为记录集返回。

可以根据需要有选择的返回特定的数据集。

例如:oRs.Fields(0).Value返回的是消息的编号;oRs.Fields(2).Value返回的是消息的时间戳;oRs.Fields(37).Value返回的是消息文本的内容。

记录集的结构如下表所示:2表3记录集结构(续表)注意:WinCC的归档数据是使用UTC (协调世界时)时间保存的。

如何自动语音播报Wincc报警消息

如何自动语音播报Wincc报警消息

自动识别并播放wincc报警消息文本
测试环境:wincc 7.5 sp2
问题:
自动播放wincc报警配置的消息文本,不用单独配置语音文件。

正文:
1.首先启动windows自带的音频服务,打开命令行,执行以下命令,打开
服务
2.新建WINCC项目,建立两个内部变量,然后组态报警设置
编辑报警记录,对需要语音播报的消息变量,选择触发动作选项,这个报警消息触发后,会执行GMsgFunction函数。

3.在全局C脚本里面的GMsgFunction函数里添加自定义的脚本,再原函
数中添加下列红色框内的文本,用来抓取报警消息文本,传递给内部变量。

4.新建全局VBS脚本,新建动作,动作脚本内容如下:
保存设置触发动作为变量,选择alarmcoming ,变量有变化时,执行此vbs脚本动作。

5.组态完成,新建画面如下,进行测试
把IO域的两个变量置分别置1,查看报警消息,听报警语音消息声音正常,测试画面如下:
声音输出正常,直接转化消息文本为语音并读出来。

注意:假如多个报警变量同时进来,目前只能是上一个声音读完之后发生的报警,才能继续读取,同时多个报警进来会被覆盖。

还需要继续完善。

WinCC中使用脚本实现报警

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脚本代码获取通用路径。

WINCC-C脚本大全

WINCC-C脚本大全

WINCC C脚本的标准函数 12009-08-06 17:04标准函数该系统包含标准函数。

可以按需要修改这些函数。

此外,还可以自己创建标准函数。

该系统包括一个标准函数集。

一、Alarm - 简短描述Alarm组包含控制WinCC报警控件的函数。

标准函数可用于工具栏中的每一个按钮。

这些函数可用来创建自定义工具栏,例如选择画面,或者定义控件上的设置。

1.void AcknowledgeMessage(DWORD MsgNr)函数,确认消息系统中带编号的消息,该编号被传递为参数。

使用标准函数操作WinCC报警控件的实例{//确认选择的报警记录消息AcknowledgeMessage(GetTagWord("U08i_Msg Nr"));}指定待确认的消息号。

在本例中是从变量读取的。

2.BOOL AXC_OnBtnArcLong(char* lpszPi ctureName, char* pszMsgWin)函数,在消息窗口中该函数表示消息存储在长期归档中。

使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Contro l1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。

Control 1是WinCC报警控件的对象名。

3.BOOL AXC_OnBtnArcShort(char* lpszPic tureName, char* pszMsgWin)函数,在消息窗口中该函数表示消息存储在短期归档中。

使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Contro l1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。

如何能在WINCC在做单个报警触发对应单个报警声音

如何能在WINCC在做单个报警触发对应单个报警声音

2017年8月16日15:05:27如何在WINCC中做单个报警触发对应单个报警声音如某个电机故障报警,就发出“某某电机故障报警”起到警示作用一、首先安装一个文字转语音的软件!并打开软件!二、在软件里输入报警内容,如“P001收尘风机电机故障”三、点击生成MP3四、指定存放文件的路径,最好是存放在所要实现该功能的WINCC项目在网上邻居上的路径下的Horn下,这样到后面的组态就方便很多。

在WINCC项目在本电脑被正确打开后就会在网上邻居存放有WINCC项目和路径。

以上就是刚刚生成的报警声音所在的路径的报警声音文件,但它们格式只是MP3格式,不是WINCC系统所要求的WAV格式,所以要下载的格式转换软件,将刚刚生成的MP3格式转换成WAV格式才行。

利用这个格式转换软件将MP3转换成WAV格式,再次将文件存放在刚刚的路径中来。

方便后面的组态。

打开WINCC项目,新建一个二进制变量内部变量Error打开WINCC报警器组件在报警器组态的对话框中的消息分配中设置如上图所示内容,意思就是当报警记录中的错误类别有报警触发时就置位刚刚新建的内部变量Error。

然后在报警器组态的信息分配中组态最关键的内容4的意思即使有很多报警同时触发时,也只能有一个声音报警响起,5组态触发声音报警的变量,6组态触发声音报警变量所对应的报警声音。

此处选择触发的报警变量此处选择报警触发变量所对应的报警声音至此报警器组态工作完成。

五、然后在WINCC项目的主画面组态能打开和关闭报警声音的按钮功能所用的报警的内部系统自动的变量如下:其内部变量对应的功能如上图所示它在WINCC项目的位置如下:六、在WINCC主画面中新建一个打开声音报警功能的按钮组件:它的属性如下:几何属性颜色属性样式属性字体属性主要是在文本中输入“报警音关”内容闪烁属性如下不开闪烁功能其它功能如下主要是想组态当报警声音被关闭的时候显示该按钮填充属性如下画面属性如下效果属性如下然后就在事件选项中组态意思就是当在按钮组件上释放左键时就将常数1赋值给@HornTriggeringSignalsActive,打开声音报警功能七、再新建一个取消声音报警功能的按钮组件该按钮的属性如下几何属性如下颜色属性如下:样式属性如下:字体属性如下:关键是在文本里输入“报警音开”字体闪烁属性如下:闪烁功能不开其它属性如下:意思是当报警声音开时显示该按钮组件填充属性如下:画面属性如下:效果属性如下:下面组态事件意思当鼠标在该按钮有鼠标动作时有如下C动作1、会弹出一个对话框,让你选择是进行取消报警声音的操作,并进行操作提示“请确认是否取消报警声音”2、同时赋值0给@HornTriggeringSignalsActive和@HornRese完成后将两个按钮重叠在一起并在画面中合适的位置上!C脚本如下:#include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){#pragma option(mbcs)// WINCC:TAGNAME_SECTION_START// syntax: #define TagNameInAction "DMTagName"// next TagID : 1// WINCC:TAGNAME_SECTION_END// WINCC:PICNAME_SECTION_START// syntax: #define PicNameInAction "PictureName"// next PicID : 1if( MessageBox(NULL,"请确认是取消报警声音","报警声音取消操作提示!!",MB_OKCANCEL )== IDOK){SetTagBitWait("@HornTriggeringSignalsActive",0);//Return-Type: BOOLSetTagBitWait("@HornReset",0);//Return-Type: BOOL}// WINCC:PICNAME_SECTION_END//Return-Type: BOOL// WINCC:PICNAME_SECTION_START// syntax: #define PicNameInAction "PictureName"// next PicID : 1// WINCC:PICNAME_SECTION_END}至此整个组态工作完成以上的这种消除报警声音的方法只要取消报警声音按钮按下,即使系统再有报警出现也不会发出报警,除非再次点击“报警音开”打开报警音功能,此时若再有报警出现才会有报警声音出现。

WinCC使用VBS读取报警记录数据到EXCEL

WinCC使用VBS读取报警记录数据到EXCEL

【WinCC使用VBS读取报警记录数据到EXCEL1、概述介绍如何在WinCC项目中使用VBS脚本读取报警记录归档数据,并把获取的数据保存成新的Excel 文件。

2、软件环境WindowsXPSP3中文版、WinCC7.0SP2ASIA、Microsoft office Excel 20073、访问原理WinCC报警记录数据是以压缩的形式存储在数据库中,需要通过WinCC连通性软件包提供的OLE-DB接口才能够解压并读取这些数据。

当使用OLE-DB方式访问数据库时关键需要注意连接字符串的写法和查询语句的格式。

连接字符串格式为“ Provider=WinCCOLEDBProvider.1; Catalog二***; Data Source二***; ”,其中:Catalog 为WinCC运行数据库的名称,当修改项目名称或在其它计算机上打开原项目时, Catalog 会发生变化。

建议使用WinCC内部变量“ @DatasourceNameRT获得当前项目的Catalog 。

Data Source 为服务器名称,格式为“ <计算机名称>\Wi nCC”。

3.1 查询语句格式查询语句的格式要求如下:AIARMVIEW:SELECT * FROM [ WHERE-optio nal ]其中参数信息如下所示:ViewName数据库表名。

必须用需要的语言指定该表。

比如:中文字符表名为:ALGVIEWCHT英文字符表明为:ALGVIEWENU 等。

Condition :为过滤标准。

详细说明请参见下表:3 . 2查询结果表1查询参数表查询结果作为记录集返回。

可以根据需要有选择的返回特定的数据集。

例如:oRs.Fields(0).Value 返回的是消息的编号;oRs.Fields (2).Value 返回的是消息的时间戳;oRs.Fields(37).Value 返回的是消息文本的内容。

记录集的结构如下表所示:表2记录集结构表2记录集结构表3记录集结构(续表)注意:WinCC勺归档数据是使用UTC(协调世界时)时间保存的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、PLC做报警监测,将变量发送到WINCC,WINCC通过变量触发报警,报警可用以下简短语句,
#pragma code ("Winmm.dll ")
VOID WINAPI PlaySoundA ( char* pszSound, char* hmode, DWORD dwflag );
#pragma code()
PlaySoundA("D:\\baojin.wav",NULL,1);
当然,如果想连续报警可将1改为0x0001| 0x0008;
2、通过全局脚本实现。

BOOL GMsgFunction( char* pszMsgData)
{
MSG_RTDATA_STRUCT mRT;
if (mRT.dwMsgState==MSG_STATE_COME)//报警到达,开始报警
{
#pragma code ("Winmm.dll ")
VOID WINAPI PlaySoundA ( char* pszSound, char* hmode, DWORD dwflag );
#pragma code()
PlaySoundA("D:\\baojin.wav",NULL,0x0001| 0x0008 );
}
if (mRT.dwMsgState==MSG_STATE_GO || mRT.dwMsgState==MSG_STATE_QUIT)//报警离开或确认后,停止报警
{
#pragma code ("Winmm.dll ")
VOID WINAPI PlaySoundA ( char* pszSound, char* hmode, DWORD dwflag );
#pragma code()
PlaySoundA("NULL",NULL,1 );//播放空文件
}
return( TRUE );
}
这种方法要在报警设置中勾上“触发一个动作”,连接到GMsgFunction函数。

相关文档
最新文档