当使用 V1.2 SP1 版本以上的 SIMATIC 登录时,如何在运行时校验已登录用户?

说明:
WinCC 用户管理器默认情况下不提供这种功能,即通过密码确认的方式去校验当前的登录用户。WinCC 拥有触发并执行登录过程的函数。但是,即使再次使用当前的用户名去登录,仍会被认为是一次全新的登录。登录通常链接到画面切换(调用起始画面)和关闭所有面板。n

目标:
通常,仅仅是在切换动作执行之前,需要使用密码确认来检查当前的登录用户。这不是全新的登录。当用户校验通过后,切换动作被执行,并且操作动作存储为操作员输入消息。这样可以防止未授权的用户操作。例如当当前的登录用户没有从系统中注销,仅是短暂的离开时。n

解决方法:
如果您使用V1.2 SP1 版本以上SIMATIC Logon选件,那么就拥有所谓 AUA 接口的函数。使用该函数可以用于访问 SIMATIC Logon 用户管理器。现有的条目使用 AUA 接口的函数“VerifyUser()”“GetSignature()”去校验运行时当前登录的用户。n

警告!
注意从 V1.3 版本开始,SIMATIC Logon 不再支持 AUA 接口。条目 24458155 说明了这种情况下的处理方法。
n

序号 说明
1 “VerifyUser()”
该函数声明如下: n

LPCSTR WINAPI VerifyUser (LPCTSTR UserID, LPCSTR Password);n

参数“UserID”“Password”的数据类型都是字符串。该函数检查传入的“UserID”(用户名称)的密码。一旦密码通过校验则函数返回字符串“ok”,否则返回错误描述文本。

2“GetSignature()”
该函数声明如下: n

BOOL GetSignature(LPCTSTR UserID);n

参数UserID”作为字符串参数传递给该函数。该函数打开“电子签名”对话框,并使用参数“UserID”的值预设“UserID”文本域。n

当使用 V1.2 SP1 版本以上的 SIMATIC 登录时,如何在运行时校验已登录用户?
图 01n

现在,用户可以在“Password”输入域输入密码。然后单击“Sign”按钮,函数将检查已传输的用户名称和密码。一旦指定的用户通过校验,则对话框关闭并且函数返回“TRUE”值。如果出现错误,则“Electronic Signature”对话框保持显示状态。此时可以重新输入密码。若单击“Cancel”按钮,则对话框关闭并且函数返回“FALSE”值。

本文档提供了脚本“SimaticLogonVerifyUser()”,用于执行运行时的用户校验。运行这段脚本需要 SIMATIC Logon 选件。下表说明了如何使用及调整这段脚本,使它适合自己的需要。
n

步骤 说明
1 将用户校验 C 函数拷贝到 WinCC 工程中。
下面是“simaticlogonverifyuser.fct”文件的下载链接。 n

当使用 V1.2 SP1 版本以上的 SIMATIC 登录时,如何在运行时校验已登录用户? WinCC_VerifyUser.zip ( 3 KB ) n

将这个文件拷贝到您的 WinCC 工程目录的“library”文件夹下面。打开“Global Script C”编辑器,并执行“Tools > Regenerate Header”菜单命令。于是函数“SimaticLogonVerifyUser()”就成为有效的项目函数。如果在 WinCC 工程(多客户机)的客户端也有验证用户的操作,那么同样需要在客户端上执行如上这些步骤。n

提示:
函数“SimaticLogonVerifyUser()”的原型说明如下。n

BOOL SimaticLogonVerifyUser(char* pszUserID, char* pszPassword);n

该函数校验传递的参数pszUserID”和“pszPassword”是否包含有效的字符串。然后将值传给“VerifyUser()”函数。如果参数“pszUserID”被传递了“ZERO”值,则自动获取当前登录的用户并传递给该参数。如果“VerifyUser()”函数成功完成校验,则函数返回“TRUE”值。若函数“VerifyUser()”发现错误,则会用关联的用户去调用“GetSignature()”函数。如果用户在“Electronic Signature”对话框中输入了有效的密码并通过“Sign”按钮确认了输入,则函数返回“TRUE”值。如果“Electronic Signature”被异常终止,则函数返回“FALSE”值。

2使用 C 函数进行用户校验
您可以直接在过程画面或面板中调用“SimaticLogonVerifyUser()”函数。如下是通过单击按钮调用该函数的例子。

当使用 V1.2 SP1 版本以上的 SIMATIC 登录时,如何在运行时校验已登录用户?
图 02 n

根据自己的需要修改该示例代码。示例中,在函数“SimaticLogonVerifyUser()”被成功调用后,触发了一条操作员输入消息,并且用于切换泵的 WinCC 变量被置位。n

注意:
函数“ISALG_OperationLog()”只是用来产生操作员输入消息。条目 ID 24325381 提供了生成操作员输入消息更为详细的信息。注意当产生一条操作员输入消息时,系统自动在 WinCC 报警控件用于显示“用户名称”的系统块中加入当前登录的用户名称。因此,在示例中“ZERO”值被故意传递给“SimaticLogonVerifyUser()”函数的“pszUserID”参数,这样对于当前登录的用户和实际校验的用户之间就没有差别了。

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc337913.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日
下一篇 2021年4月12日

相关推荐

发表回复

登录后才能评论