自己想监测一下在产生消息时,都弹出一个对话框来提示操作人员有报警产生,弹出的信息用messagebox就可以解决了,但用什么事件来触发messagebox呢,找了一下c脚本编辑器中的操作alarm的函数,没有一个可以捕捉到报警产生消息的。或者自己不理解那些函数吧!!
报警产生只是起提示作用,具体的报警还得去报警控件中查。不知道这想做法行不行,如果有其他方法又怎么做呢?多谢!!
问题补充:
多谢哈!!明天试一下。
如果是监测的变量每个都用脚本做一个判断,变量太多的话,有点麻烦。
第一感觉就是用GMsgFunction,但它的参数是一个char*,而且对这个参数的说明是指向一个结构体,自己随便传入了一个char*类型的参数,也提示输入的函数要指向一个结构体,那个结构体也明白,但怎么要用一个char*类型来传入呢?疑问还蛮多地啊!!
补充2:新问题:标准函数改不了。哎……,问题刚写入一个字符,C脚本编辑器就关闭了,把工程取消激活也不行,勉强用复制的方法加入了一点,但,又识别不了那个类型的结构体了。呵呵!!
最佳答案
据我所知,方法不止一种:
1、由PLC产生一个综合报警的位,WinCC编写全局脚本,如果该位为1,则弹出消息。
2、利用Horn功能,为特定的报警类别配置一个内部变量,由该类别的报警发生时内部变量自动置1,然后编写全局脚本,如果该位为1,则弹出消息。
3、修改标准函数->Alarm->GMsgFunction,当发生报警时(消息必须勾选<触发一个动作>才能被GMsgFunction捕捉到),弹出消息。
暂时就想到这么多。。。
---------------------------
楼主第一感觉不错,上来就选了个最难的,呵呵。
注意:GMsgFunction由系统自动调用。该函数已经将pszMsgData读入了mRT中,根据mRT即可判断是否有报警发生,比如:
if (mRT.dwMsgState==MSG_STATE_COME)//信息到达处理
{
xxxxxxx;
}
提问者对于答案的评价:
多谢哈!!!还是明白了不少,又看了一下wincc教程1,从西门子上下的,又明白了很多!!!
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc274520.html