回复:对按钮的操作如何记录?急!

凌波微步

  • 帖子

    2715
  • 精华

    72
  • 被关注

    208

论坛等级:奇侠

注册时间:2003-06-11

普通 普通 如何晋级?

发布于 2008-06-18 09:17:19

0楼

这是PCS7_OperationLog_V6的脚本!


//--------------------------------------------------------------------------------------------------------------------------------------------
// Copyright (C) 2000 Siemens AG All Rights Reserved.
// Datum: 20.06.2004
// Version: V6.1
//
// Changing this s cript can cause abnormal behaviour of faceplates
//--------------------------------------------------------------------------------------------------------------------------------------------
// Generate an log message and put into WinCC Alarm Logging
//--------------------------------------------------------------------------------------------------------------------------------------------
#ifndef RUN_ON_WEBNAVIGATOR
#include "apdefap.h"
#pragma code ("ssmrt.dll")
#include "ssmrt.h"
#pragma code ()
#endif

void PCS7_OperationLog_V6(char* lpszPictureName, double dOldValue, double dNewValue, char* lpszOperationText, char* lpszUnit)
{

BOOL bOkay;
char szVariable[_MAX_PATH];
char * lpszparent;
char * lpszareaname;
char* lpszbatchname;
char *lpszCurrentUser;
char *lpszTag;

char *lpszVarSTEP_N1;
char *lpszVarSTEP_NO;
char *lpszVarBatchID;
char *lpszVarBName;
char *lpszVarAreaname;
char szCommentAndCurrentUser[_MAX_PATH];

CMN_ERROR Error;
DWORD dwBA_ID;
DWORD dwServiceID;
DWORD dwSTEP_NO;
DWORD dwState;
MSG_RTDATA_INSTANCECOMMENT_STRUCT MsgCreate;
struct tm* OperationTime;
SYSTEMTIME stTime;
time_t ltime;

time( <ime ); // Get time as long integer
OperationTime = localtime (<ime); // Convert to local time
stTime.wYear=(WORD)(OperationTime->tm_year + 1900);
stTime.wMonth =(WORD) (OperationTime->tm_mon + 1) ;
stTime.wDay=(WORD)(OperationTime->tm_mday);
stTime.wHour=(WORD)(OperationTime->tm_hour);
stTime.wMinute=(WORD)(OperationTime->tm_min);
stTime.wSecond=(WORD)(OperationTime->tm_sec);
stTime.wMilliseconds=0;

MsgCreate.stMsgTime = stTime;
MsgCreate.dwMsgState = MSG_STATE_COME;
if (OperationTime->tm_isdst)
MsgCreate.dwMsgState = MSG_STATE_SUMTIME; // summertime
MsgCreate.dwMsgNr = 1013004;
MsgCreate.wPValueUsed = 0x001E;
MsgCreate.wTextValueUsed = 0x03E1;


// get user and tagname (member of parent)
lpszparent = GetParentPicture(lpszPictureName);
#ifdef RUN_ON_WEBNAVIGATOR
lpszCurrentUser = GetUserName();
#else
lpszCurrentUser = GetPropChar(lpszparent,"@Faceplate", "CurrentUser");
#endif
lpszTag = GetPropChar(lpszparent,"@Faceplate", "tag"); // tagname without server prefix


// add block comment to textvalue of username
{
#define KEY_SIZE 260
char RegEntry[KEY_SIZE] = "";
SSMRTGetRegistryString ("SOFTWARE\\Siemens\\WinCC\\PCS7 FACEPLATES\\RelVersion",
"OperatingMessageWithBlockComment",
"@",
RegEntry,
KEY_SIZE,
&Error);


if ( RegEntry[0] == '1')
{
strcpy(szCommentAndCurrentUser,GetTagCharWait(".#comment"));
strcat(szCommentAndCurrentUser," / ");
strcat(szCommentAndCurrentUser,lpszCurrentUser);
}
else
strcpy(szCommentAndCurrentUser,lpszCurrentUser);

}

// get area and batchparameter ---------------------------------------------------------------------------------------------------------------------------------------------------------------

lpszVarAreaname = GetPropChar(lpszparent,"@Faceplate","Areaname");
if (strcmp(lpszVarAreaname,"")!=0)
{
lpszareaname = GetTagCharStateWait(lpszVarAreaname, &dwState);
// copy message data into AlarmLogging structure
strcpy(MsgCreate.mtTextValue[8].szText, lpszareaname); // areaname
}

lpszVarBName = GetPropChar(lpszparent,"@Faceplate","BName");
if (strcmp(lpszVarBName,"")!=0)
{
lpszbatchname = GetTagCharWait(lpszVarBName);
// copy message data into AlarmLogging structure
strcpy(MsgCreate.mtTextValue[0].szText, lpszbatchname); // name of batch
}
// get stepnumber STEP_NO---------------------------------------------------------------------------------------------
lpszVarSTEP_NO = GetPropChar(lpszparent,"@Faceplate","STEP_NO");
if (strcmp(lpszVarSTEP_NO,"")!=0)
{
dwSTEP_NO = GetTagDWordWait(lpszVarSTEP_NO);
// copy message data into AlarmLogging structure
MsgCreate.dPValue[1] = dwSTEP_NO; // stepnumber of batch;
}
// read STEP_N1 if STEP_NO is 0
if (dwSTEP_NO == 0)
{
lpszVarSTEP_N1 = GetPropChar(lpszparent,"@Faceplate","STEP_N1");
if (strcmp(lpszVarSTEP_N1,"")!=0)
{
dwSTEP_NO = GetTagDWordWait(lpszVarSTEP_N1);
// copy message data into AlarmLogging structure
MsgCreate.dPValue[1] = dwSTEP_NO; // stepnumber of batch
}
}

// get batch ID--------------------------------------------------------------------------------------------------------------------
lpszVarBatchID = GetPropChar(lpszparent,"@Faceplate","BatchID");
if (strcmp( lpszVarBatchID,"")!=0)
{
dwBA_ID = GetTagDWordWait(lpszVarBatchID);
// copy message data into AlarmLogging structure
MsgCreate.dPValue[2] = dwBA_ID; // batch id
}



//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// copy message data into AlarmLogging structure
MsgCreate.dPValue[3] = dOldValue; // old value
MsgCreate.dPValue[4] = dNewValue; // new value

strcpy(MsgCreate.szInstance, lpszTag); // tagname
strcpy(MsgCreate.mtTextValue[5].szText, lpszOperationText); // operation
strncpy(MsgCreate.mtTextValue[6].szText, szCommentAndCurrentUser,254); // login of operator
MsgCreate.mtTextValue[6].szText[255] = '\0';
strcpy(MsgCreate.mtTextValue[7].szText, lpszUnit); // unit



// send message to Alarmlogging
bOkay = MSRTCreateMsgInstanceWithComment(0,&MsgCreate,&Error);
if (!bOkay)
printf("MSRTCreateMsgInstanceWithComment szErrorText = %s \r\n",Error.szErrorText );
不以物喜,不以己悲; 达则兼济天下,穷则独善其身。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32564条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。