最近在论坛上看到有人在问如何获取WINCC已经登陆的账号所拥有的权限,这个问题在几年前我也考虑过,当时我是想根据权限来进入不同的窗口。但那时候我刚接触WINCC不是很久,也没研究出来。
去年我在研究WINCC的数据库结构时意外发现了用户相关的数据库,当时就有了思路,可以是一直没有时间去实现。正好最近有时间,又看到有人问,我把这个写出来分享一下。
先说一下大体思路:这里所用到的数据库都是wincc项目中不带R的数据库
从数据库中的PW_LINE表中获取WINCC所有的权限编号和权限名称文字的编号;
从数据库中的TXTTable表中获取权限的对应中文名;
从数据库中的PW_USER表中获取用户名所对于的ID(这是使用WINCC自带登录的,如果使用的是LOGON登录只需要把用户名改成用户组名即可,logon登录的用户权限绑定用户组的);
从数据库中的PW_PERM表中获取用户所拥有的权限。
这是主要脚本的截图:


我在最后是使用了wincc的DATASET对权限进行了临时存储,这样方便随时使用,这个脚本也只需要在用户发生改变时执行一次即可,没必要每次需要检查权限的时候都执行。需要检查权限时直接读取DATASET中的数据即可。
下面是调用的脚本:

这是执行结果:

这是目前我可以想到的方案,不知道有没有什么更简单的方案,欢迎各位指导。