3、创建与管理用户组:内置用户组(Admin、User、Service)解析、创建自定义用户组、用户组权限继承规则

好,咱们接着聊用户管理。上一节我们把用户账户讲透了,这一节轮到「用户组」了。

说实话,我在现场调试时见过不少工程师,用户账户建了一大堆,权限却乱成一锅粥。为什么?因为没用好用户组。你想想看,如果每个操作员都单独配权限,项目里有五十个人,你得配五十次。万一哪天要统一调整某个权限,那简直是噩梦。

用户组就是来解决这个问题的。它像一个「权限模板」,你把用户丢进组里,他就自动继承组的所有权限。省事,而且不容易出错。

3.1 内置用户组:Admin、User、Service

WinCC 安装好之后,系统已经帮你建好了三个内置用户组。嗯,这三个组你动不了,也不能删除。它们各有各的定位。

内置组名称 默认权限范围 我一般用它来...
Admin 完全控制,所有功能开放 给工程师自己用,或者给维护主管
User 基本操作权限,比如画面浏览、数据查看 给普通操作员,只能看不能改
Service 介于 Admin 和 User 之间,通常包含诊断、维护类权限 给设备维护人员,能看报警、能复位,但不能改配方

Admin 组——说白了就是「超级管理员」。我个人的习惯是,Admin 组里只放两个人:一个是我自己,另一个是甲方的主管工程师。其他人一律不给。为什么?因为 Admin 能改系统时间、能删历史数据、能改用户权限。万一有人手滑,后果很严重。

User 组——这是最常用的组。操作员登录后,只能做你允许他做的事。比如启动设备、查看趋势图、确认报警。但不能修改参数,不能下载组态。我曾经在一个项目里遇到过,操作员不小心把画面上的一个输入框给改了,导致整条产线停了两个小时。从那以后,我坚决把操作员都放在 User 组,并且把「修改画面」的权限关掉。

Service 组——这个组容易被忽略。其实它很有用。比如设备维保人员,他们需要查看报警记录、需要手动复位一些故障,但不需要修改工艺参数。Service 组正好满足这个需求。我记得有一次,客户抱怨说维保人员总是误改配方,后来我把他们从 User 组移到 Service 组,问题就解决了。

重要提醒:内置组的权限是系统预设的,但你可以微调。比如你可以给 User 组额外开放「打印报表」的权限。但我不建议大幅修改内置组,因为系统升级时可能会覆盖你的改动。

3.2 创建自定义用户组

内置组不够用?那就自己建。我在实际项目中,几乎每个项目都会建一到两个自定义组。比如「质检组」、「工艺工程师组」、「班组长组」。

创建步骤很简单,我带你走一遍:

  1. 打开 WinCC 的 User Administrator 编辑器。
  2. 在左侧树形结构中,右键点击 Groups,选择 Add New Group
  3. 输入组名称,比如 Quality_Group
  4. 在右侧权限列表中,勾选你需要的权限项。
  5. 点击 Apply 保存。

举个例子。我在一个制药项目中,需要给质检员单独建一个组。他们的权限需求是:

  • 查看所有历史数据
  • 导出报表
  • 修改批号信息
  • 但不能启动/停止设备
  • 不能修改配方

你看,这种组合权限,内置组给不了。所以我建了一个 QA_Group,只勾选上面那几项。完美匹配。

我的小技巧:自定义组的命名,我建议用英文或拼音,不要用中文。因为 WinCC 底层对中文组名的支持偶尔会有 bug。我曾经吃过这个亏,项目部署到现场后,组名显示乱码,排查了半天。后来全部改成英文,再也没出过问题。

3.3 用户组权限继承规则

这部分是重点,也是很多人容易搞混的地方。我尽量讲清楚。

WinCC 的权限继承,遵循一个核心原则:子组继承父组的所有权限,但子组可以额外增加权限,不能减少父组已有的权限。

什么意思?我画个图你就明白了。

父组:Operator_Group 权限:查看画面、确认报警 子组:Senior_Operator 继承父组所有权限 额外:启动设备、打印报表 子组:Shift_Leader 继承父组所有权限 额外:修改参数、管理用户 用户:张三 属于 Senior_Operator 用户:李四 属于 Shift_Leader 张三的权限 = 查看画面 + 确认报警 + 启动设备 + 打印报表 李四的权限 = 查看画面 + 确认报警 + 修改参数 + 管理用户

看到没?子组 Senior_OperatorShift_Leader 都自动拥有了父组 Operator_Group 的「查看画面」和「确认报警」权限。然后各自再叠加自己的专属权限。

这里有个关键点:如果你把用户张三同时加入 Senior_Operator 和 Shift_Leader 两个组,那么张三的权限是两个组的并集。 也就是说,他既能启动设备,又能修改参数。权限取最大值。

注意避坑:我曾经在一个项目中,把同一个用户加入了两个权限冲突的组。结果用户登录后,某些功能时而能用时而不能用,排查了很久。后来发现是组之间的权限覆盖导致的问题。所以我的建议是:一个用户尽量只属于一个组。如果确实需要多个组,一定要仔细检查权限是否有冲突。

还有一个细节:权限继承是单向的。 父组不会因为子组增加了权限而自动获得那些权限。也就是说,如果你在子组里加了「删除历史数据」的权限,父组里的用户依然没有这个权限。只有子组里的用户才有。

嗯,这个规则其实很合理。你想想看,如果子组加了权限,父组也跟着有了,那权限管理就乱套了。WinCC 的设计思路是:权限只能向下传递,不能向上回溯。

最后总结一下我的经验:

  • 能用内置组,就别建自定义组。 内置组经过微软和西门子的严格测试,稳定性最好。
  • 自定义组要命名规范。 我一般用 部门_角色 的格式,比如 Production_OperatorMaintenance_Engineer
  • 权限继承要画图。 组多了之后,继承关系容易乱。我习惯在项目文档里画一张权限继承树,方便后期维护。
  • 测试很重要。 建好组之后,用不同账户登录,逐个功能测试一遍。别偷懒,这一步能帮你发现 90% 的权限问题。

好了,用户组这部分就讲到这里。下一节我们聊「权限分配实战」,我会拿一个真实项目案例,手把手教你如何给不同角色分配权限。


公众号:蓝海资料掘金营,微信deep3321