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日
下一篇 2019年6月10日

相关推荐

  • 如何将WINCC接收的数据上传到SQL

    本人从PLC DB块中将PLC的数据采集过来,需要将这些数据上传到SQL做处理,再反传回来,请问怎么实现?谢谢 最佳答案 想读SQL数据的话需要写脚本。参考“深入浅出WI…

    SIMATIC WinCC 2019年6月11日
  • wincc项目不能打开…急

    朋友发了个WINCC项目给我,在我电脑上打开时弹出:组态的服务器不可用。是否打开项目,将本地计算机作为服务器?我点击了启动本地服务器,然后弹出0x8004610a的错误代码我跟他的…

    SIMATIC WinCC 2019年6月11日
  • 画面是否可以直接调用?

    现在做个改造项目,阀门、电机都用的WINCC库中的,点击他们弹出相对应的操作对话框,我是用画面窗口加VB程序弄的,但是运行时间长了总是点击出来有刷屏的现象(就是卡),我想问下能不能…

    SIMATIC WinCC 2019年6月11日
  • WINCC基础问题

    在做WINCC画面时,突然遇到一个小问题,却解决不了,我组态了一个按钮,鼠标动作时,弹出一个对话框,可以实现这个功能,但是,当这个对话框出现后,我用鼠标点击别的地方时,这个对话框消…

    SIMATIC WinCC 2019年6月11日
  • 变量触发Wincc动态显示

    我想做一个这样的功能:当某一个变量为True时,动态显示一个物体的前进,现在物体的前进已经做到了,通过VBSFunction Left_Trigger(Byval&nbs…

    SIMATIC WinCC 2017年12月9日
  • 关于wincc网络发布的问题

    各位师傅你们好,wincc的工程做网络发布,那建的工程,必须是多用户吗?是单用户可以做网络发布吗?谢谢谢谢 最佳答案 请问楼主所说的网络是因特网还是局域网,如果要用因特网的话就要用…

    SIMATIC WinCC 2019年6月11日
  • Sybase7的安装

    我在把以前的WINCC项目移植成当前版本时(5.0或5.1或6.0,转成6.2),通过项目移植器操作,提示未安装Sybase7。我在5.1C的文件里(不是光盘)找到了Sybase7…

    SIMATIC WinCC 2019年6月11日
  • 请教各位触摸屏177'6'

    请教各位触摸屏177'6'可以做报警显示和数据记录在触摸屏窗口上显示出来用按钮把报警显示和数据记录在触摸屏窗口上清零怎样做到有这方面程序吗 85449403@qq.com谢谢 问题…

    SIMATIC WinCC 2019年6月11日
  • 两台电脑监控两台PLC通信问题?

    有两台工控机,工控机上各装有5611卡,和两台PLC315-2DP通讯,采用的是MPI通讯方式,两台电脑上的WINCC软件版本不同,分别是5.1和6.0版本,请问PLC和电脑怎么接…

    SIMATIC WinCC 2019年6月11日
  • 当有传感器信号输入时,触摸屏上的指示灯亮,这个信号的地址范围应该是I还是M

    如题! 最佳答案 i是输入信号,M是中间变量,一般用于存储经过处理后的I信号。如你那样的指示灯,直接用I也就可以 提问者对于答案的评价:谢谢

    SIMATIC WinCC 2019年6月11日