5 <修改报警注释> <在“写入原因”按钮中使用 MSRTSetComment 函数来修改报警注释。
C 脚本如下:
#include "msrtapi.h"
#include "apdefap.h"
static DWORD l_svID = 0; //Connection ID to Alarmlogging
CMN_ERROR g_sErr;
LPCMN_ERROR pError = &g_sErr;
MSG_COMMENT_STRUCT MsgComment;
SYSTEMTIME almTime =
{GetTagWord("alarmYear"),GetTagByte("alarmMonth"),GetTagWord("alarmDay"),
GetTagWord("alarmDay"),GetTagByte("alarmHour"),GetTagByte("alarmMin"),GetT
agByte("alarmSec"),GetTagWord("alarmMsec")}; //获取报警时间
MsgComment.dwMsgNr =GetTagDWord("alarmNum"); //报警编号
MsgComment.stTime = almTime;//报警时间
strcpy( MsgComment.szText,GetPropChar(lpszPictureName,"R1","SelText"));//将
要写入的注释
strcpy( MsgComment.szUser, GetTagChar("@CurrentUser"));//操作人员
MSRTSetComment( l_svID, &MsgComment, pError );//写入注释
脚本中要引用“ msrtapi.h” 和“apdefap.h” 头文件, 这需要安装 ODK 之后才支持。另外,脚本GetPropChar(lpszPictureName,"R1","SelText"))是获取组合框R1” 所选择的文本。
6 <运行结果> <在 WinCC 启动列表中选择“报警记录运行系统”和“图形运行系统”,并激活 WinCC运行系统。如图 13 所示。
项目运行后的初始状态如图 14 所示。
通过设置报警变量“alarm1”来触发报警,如图 15 所示。可以看到此时的报警消息文字中并不包含报警原因。
接下来在报警视图中选择一条报警,可以看到所选报警的时间(包括毫秒)和编号信息已经被读出。如图 16 所示。接下来,选择报警原因,如图中②所示,最后点击“写入原因”按钮。
可以看到报警原因“电气故障”已经写入到所选报警的消息文本中, 如图 17 所示。注意,需要先切换到“消息列表”视图,再切换到“短期归档列表”视图才能刷新出已经写入的报警原因。
同样,可以为其它的报警写入报警原因,如图 18 所示。