WINCC如何用计算机的蜂鸣器作声音报警?

没有音响,就不能使用Signal assingment选项页的Sound中选择.wav声音文件播放了,可不可以直接用pc上的蜂鸣器发声,脚本应该怎么编写?补充:报警变量是模拟量,怎么编脚本转换成布尔型变量用来报警?新手上路请高人指点

问题补充:
又有问题了,假如在PLC里把模拟量转换成了开关量horn作为报警变量,想组态一个报警,并编一个C脚本当报警消息来时报警,蜂鸣器发声,确认报警后,蜂鸣器声音停止。
(1)用wincc编C全局脚本:
#pragma option(mbcs)
void New_Function()
{
DWORD value;
value=GetTagDWord("horn");
while(value)
   {
    Beep(1000,100);  //蜂鸣器 频率:1000 Hz,指定蜂鸣声的持续时长100 ms
    }

}

(2)在图形编辑器的画面上加个按钮,C动作触发上面的New_Function()函数:#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 : 1
// WINCC:PICNAME_SECTION_END
New_Function();
}


(3)在报警记录中组态一个报警消息,message tag 为horn。
(4)在图形编辑器的画面上加个“输入/输出域”,选择变量“horn”,模拟报警信号输入。

运行:点击按钮,改变“输入/输出域”的horn值为1
结果:蜂鸣器长鸣,解除报警(horn置1)不能关闭蜂鸣器。。。。。。
是程序脚本编错了?陷入死循环了么?

最佳答案

是你的脚本用错了,不要用while,否则是死循环,改为if。

其触发条件也不应该放到按钮的事件中触发,应该放到全局脚本中,触发周期选1S。

提问者对于答案的评价:
嗯,多谢哈,照你的方法实现了,没用if ,在while里又加了一条语句也ok
while(value)
   {
   value=GetTagDWord("horn");
    Beep(1000,100);  
    }

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日
下一篇 2019年6月11日

相关推荐