wincc 报警 C脚本

在自己笔记本上wincc 全局脚本中新建以下程序,变量满足条件这么没声音,现场拷贝过来的,我自己建了内部变量a测试,不行!请帮我做个测试吧。
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;
MSRTGetMsgQuit(&alarmunack,errorunack);

SetTagDWord("number",alarmunack);

MSRTGetMsgActual(&alarmsum,errorsum);

SetTagDWord("sum",alarmsum);

if (alarmsum==0)

sndPlaySoundA(NULL,SND_ASYNC);

else

{

if (GetTagFloat("PumpLevelY.Value")>7.1)


sndPlaySoundA("D:\\SXWSN\\Sound\\Sound2.WAV",SND_ASYNC|SND_LOOP);

else

sndPlaySoundA(NULL,SND_ASYNC);

}
return 1;

最佳答案

#include "apdefap.h"
int gscAction( void )
{
#pragma code("Winmm.dll")
void WINAPI PlaySoundA(char* pszSound ,char* hmode,DWORD dwFlag);
#pragma code()
 DWORD A1,A2,A3,A4,A5,A6,A7;
 DWORD B1,B2,B3,B4,B5,B6,B7;
A1=GetTagDWord("YQ_ALARM_1");
A2=GetTagDWord("YQ_ALARM_2");
A3=GetTagDWord("YQ_ALARM_3");
A4=GetTagDWord("YQ_ALARM_4");
A5=GetTagDWord("YQ_ALARM_5");
A6=GetTagDWord("YQ_ALARM_6");
A7=GetTagDWord("COMM_ALARM");
B1=GetTagDWord("YQ_ALARM_SAVE_1");
B2=GetTagDWord("YQ_ALARM_SAVE_2");
B3=GetTagDWord("YQ_ALARM_SAVE_3");
B4=GetTagDWord("YQ_ALARM_SAVE_4");
B5=GetTagDWord("YQ_ALARM_SAVE_5");
B6=GetTagDWord("YQ_ALARM_SAVE_6");
B7=GetTagDWord("COMM_ALARM_SAVE");
if(
 ((A1^B1)&A1)|
 ((A2^B2)&A2)|
 ((A3^B3)&A3)|
 ((A4^B4)&A4)|
 ((A5^B5)&A5)|
 ((A6^B6)&A6)|
 ((A7^B7)&A7)
)
SetTagBit("yq_alarm_out",1);
if (GetTagBit("yq_alarm_out"))
PlaySoundA("c:\\winnt\\Media\\chord.wav",NULL,1);
SetTagDWord("YQ_ALARM_SAVE_1",A1);
SetTagDWord("YQ_ALARM_SAVE_2",A2);
SetTagDWord("YQ_ALARM_SAVE_3",A3);
SetTagDWord("YQ_ALARM_SAVE_4",A4);
SetTagDWord("YQ_ALARM_SAVE_5",A5);
SetTagDWord("YQ_ALARM_SAVE_6",A6);
SetTagDWord("COMM_ALARM_SAVE",A7);
return 0; 
}
用这个

提问者对于答案的评价:
谢谢啊

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc255796.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月10日 下午8:41
下一篇 2019年6月10日 下午8:41

相关推荐

  • WinCC与数据库连接

    我的WinCC版本是7.4SP1,数据库是SQLServer2014,我根据网上的数据库读写例子通过按钮VB脚本写数据进新建的数据库表,没有成功,请问是哪里出问题了呢?主要代码如下…

    SIMATIC WinCC 2021年7月5日
  • wincc的Audit资料

    谁wincc的Audit资料?最好有中文的 最佳答案 你可以下载下面的资料—— http://www2.ad.siemens.com.cn/download/Upload…

    SIMATIC WinCC 2019年6月11日
  • 关于利用wincc全局脚本做判断的问题。

    如何在wincc中做一个全局脚本,在wincc处于runtime时将某一变量置位,否则不置位,最好是C脚本,这个脚本该如何写?或者有什么可以参考的资料?谢谢大家。 最佳答案 也就是…

    SIMATIC WinCC 2017年6月10日
  • HMI变量设置

    hmi上面如何将按钮设置为输入量,不是作为输出? 最佳答案 HMI不能是用I点为输入量  只能用M或者DB 提问者对于答案的评价:清楚了,谢谢,

    SIMATIC WinCC 2017年6月6日
  • 能不能给面板实例添加变量前缀属性

    大家好,我创建了如图的面板实例,添加了一些面板属性来动态显示背影颜色和文字,用的时候每次都要分别给面板相应的各个属性做动态组态,不是很方便,能不能添加像画面窗口那种变量前缀的属性呢…

    2017年6月3日
  • Wincc flexible项目如何传输到不同profinet地址的面板里?

    面板损坏,已经换新的,但由于没有之前这个项目的备份,用的另外一台的项目,但这两台所使用的profinet地址不一致,我如何才能将已有项目上传到这台新的面板?直接上传是否会和PLC通…

    SIMATIC WinCC 2017年6月27日
  • WINCC报警控件显示当前登录用户名问题1234

    如图。就是不显示用户名。版本是7.0SP3 问题补充:我在其他地方也看到说勾选检查运行语言,但我没找到在哪个地方,这一项RENHQ说的那个我也试过,不显示。 图片说明: &nbsp…

    2021年7月5日
  • 关于报警记录的问题

    各位专家:你们好。我在看别人写的程序,在报警记录里做开关量的报警,有的点在“消息变量”栏里什么都没有写,只是在“报警说明”里有点说明,我不知道这个报警对应的点名是什么呀!请专家门指…

    SIMATIC WinCC 2019年6月11日
  • 怎么能把PLC的输出都屏蔽了

    请问大家,假乳我想单独的调试画面但现场设备不运行,是不是可以在STEP7里边把输出都屏蔽了,怎么屏蔽! 最佳答案 1.可以给执行机构断电 2.可以给你的输出模块断电&nb…

    SIMATIC WinCC 2019年6月11日
  • wincc5.0是否可以直接升级到wincc7.0

    目前我们有个工厂用的是wincc5.0,现在要将其直接升级到wincc7.0,但是该系统有很多模拟量控制是在wincc的脚本中做的,不知能否直接升级 问题补充:如果购买wincc7…

    SIMATIC WinCC 2019年6月11日