| 作者 | 主题 |
|---|---|
|
烟台工控人 侠士 经验值:1439 发帖数:1130 精华帖:0 |
楼主
主题:对按钮的操作如何记录?急!
对按钮的操作如何记录?急!
我爱工控,我爱西门子!
|
|
凌波微步 奇侠 经验值:8842 发帖数:2715 精华帖:72 |
楼
主题:回复:对按钮的操作如何记录?急!
这是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 );
不以物喜,不以己悲;
达则兼济天下,穷则独善其身。
|