WINCC6.0版本,如何来记录操不同的作员操作记录,比如甲操作员在某年某月某日某时某分进入WINCC运行系统,在某年某月某日某时某分开某某设备,又在某年某月某日某时某分关设备,这些都要记录下来;另一个操作员换班进入WINCC系统等操作也要记录下来,这个功能怎么实现啊?有没有具体的例子?麻烦高手帮帮忙啊,正在做工程,急用啊。查询过以前类似问题的回答,感觉都很笼统,有没有具体点的回答和例子说明?谢谢
邮箱:yxh-0818@qq.com
最佳答案
以下可做参考:
如何实现用户登陆日志(wincc中用c脚本实现?)( 柳树成林原创)
用户登陆日志:(包括用户的登陆退出信息,以便查询在什么时间段是哪个用户在使用这个监控软件)
#i nclude "apdefap.h"
int gscAction( void )
{
#pragma code("kernel32.dll")
VOID GetLocalTime(LPSYSTEMTIME lpSystemTime);
#pragma code()
char* username;
char buf[128];
static char preuser[128];
unsigned a,b,c,d,e,f;
FILE* fp;
SYSTEMTIME sysTime;
//读取系统时间,并且复制给变量a,b,c,d,e,f
GetLocalTime(&sysTime);
a=sysTime.wHour;
b=sysTime.wMinute;
c=sysTime.wSecond;
f=sysTime.wYear;
e=sysTime.wMonth;
d=sysTime.wDay;
//得到当前用户名称
username = GetTagChar("@CurrentUser");
fp= fopen("c:\\wincclog.txt", "a+");
if(strcmp(username, preuser)!=0) //如果当前用户名称和前一个用户名不同
{
if((strcmp(username, "") != 0)&&(strcmp(preuser, "") == 0)) //如果当前用户名称不空同时前一个用户名为空
{
sprintf(buf, "用户:%s\t登陆时间是:\t %d-%d-%d,%d-%d-%d\n", username,a,b,c,d,e,f);
fputs(buf, fp);
}
else
{
if((strcmp(username, "") == 0)&&(strcmp(preuser, "") != 0)) //如果当前用户名称为空同时前一个用户名不空
{
sprintf(buf, "用户:%s\t退出时间是:\t %d-%d-%d,%d-%d-%d\n", preuser,a,b,c,d,e,f);
fputs(buf, fp);
}
else
{
sprintf(buf, "用户:%s\t退出时间是:\t %d-%d-%d,%d-%d-%d\n", preuser,a,b,c,d,e,f);
fputs(buf, fp);
sprintf(buf, "用户:%s\t登陆时间是:\t %d-%d-%d,%d-%d-%d\n", username,a,b,c,d,e,f);
fputs(buf, fp);
}
}
}
strcpy(preuser, username);
fclose(fp);
return 0;
}
提问者对于答案的评价:
探索中
专家置评
可参考SG9所提供的WinCC关于操作员操作消息的标准做法
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc272506.html