使用IOT-Tree的用户和角色控制监控画面指令下达授权
在工业现场监控中心,值班人员通过图示化的监控画面对现场设备设施运行情况进行监控,并且在必要的时候下达一些控制或参数调整指令。为了支持操作员操作的身份验证、安全防护(防止误操作和非当前工作人员操作),同时兼顾使用的流畅,本文以IOT-Tree用户角色管理为基础,详细举例说明了HMI画面的相关配置说明。
如果你对IOT-Tree Server不了解,可以看如下内容:
IOT-Tree Server是个开源物联网软件,可以作为组态软件成为自动化系统的上位软件。她提供了各种设备接入、数据组织管理、数据分享使用、消息流控制逻辑和人机交互多个方面的功能。当然,你也可以仅仅使用这个软件作为数据采集终端或边缘计算的软件。
这是IOT-Tree Server相关的系列文章,你可以参考其他文章更多了解IOT-Tree能给你带来的好处:
使用IOT-Tree Server通过MC协议连接三菱Q系列PLC
使用IOT-Tree Server通过FINS协议连接欧姆龙CP2E-N系列PLC
使用IOT-Tree Server通过S7 Eth协议连接西门子PLC S7-1200
系列文章还包含IOT-Tree完成一个具体项目的过程,非常详细,如下:
机房自动化监控手把手分享给你 - 10 项目完成总结
从版本2.0开始,IOT-Tree完善了用户和角色管理。管理员可以在用户和角色管理界面中维护用户的添加、删除、修改(含登录密码)。对角色进行添加,修改和删除等操作。对选中用户进行角色分配。
1 用户角色管理
管理员登录管理主界面右上角,点击图标即可进入:
左边是用户列表,右边是角色列表。可以对用户/角色分别进行添加、修改或删除。具体的分配用户角色过程为:点击某个用户,在右边角色选择框进行勾选,然后点击上方的“保存角色到用户”按钮即可
用户admin和角色admin是系统自带的,并且是超级管理员,不允许被删除。当然,你也可以设置其他用户为admin角色
2 HMI写操作(下达指令)授权
在IOT-Tree项目组织树节点中,新增了属性“授权”-“写入限制角色(用户组)”。点击之后,可以在弹出对话框中选择设置需要的角色。
当一个节点设置了此限制角色之后,其子孙节点会自动继承此内容,除非子孙节点自己设置了限制角色——此时,继承的祖先配置内容被屏蔽。
因此,你可以在靠近根部的节点设置角色之后,下面的所有HMI节点都会使用此权限验证要求。
注:如果没有设置任何角色,说明相关节点不需要验证。
3 举例说明HMI写操作验证全过程
以系统自带的demo项目进行相关权限设置说明,此项目导入运行请参考下面的文章(也就几分钟的事):
快速开始IOT-Tree
3.1 准备用户和角色
先管理员登录,在管理主界面 http://localhost:9090/admin/ 的右上角点击打开用户角色管理对话框。我们在里面添加如下用户和角色。用户op1,op2,op3;并且op1分配角色oper,op2和op3分配角色oper1。如下:
op1|oper op2|oper1 op3|oper1
3.2 设置节点角色
我们进入demo项目,点击hmi节点"u1"。然后在主内容区选项“属性”。点击“写入限制角色(用户组)”对应的编辑框,在弹出的角色选择对话框中,选择角色"oper":
完成之后不要忘记点击属性上方“应用”按钮进行保存设置。这样我们就完成了hmi u1节点的写操作限制。
3.3 在HMI画面中设置指令下达事件绑定
我们鼠标右键"u1"节点,选择“编辑UI",在主内容区,选择启动图元,点击右边Events列表,如下图:
在事件"on_mouse_clk"对应的内容区,点击打开对话框,进行客户端事件触发和服务端事件处理JS脚本,如下
Client JS运行在UI画面端,只需要如下一行代码,此代码是的前端向IOT-Tree Server端触发一个鼠标click事件。
$server.fire_to_server("")Server JS运行在IOT-Tree Server内部,在接收到客户端触发的事件之后,这个JS代码会被运行。此代码对应水泵启动的标签点写入值1,这最终会通过设备驱动向控制器发出写指令。
ch1.dio.pstart._pv=1;但Server JS在运行前会进行上面配置的用户权限验证,如果验证失败,则Server JS不会被运行并且返回错误提示。
对于"Run Name",如果你希望IOT-Tree能够自动对操作员的操作做记录,请填写能够区分此操作的运行名称,这样在操作日志中,就可以直观的区分是何种操作了。
3.4 HMI画面操作效果
确保demo项目启动,且正常运行。建议打开一个新的浏览器(无用户登录信息)。访问下面的url,你可以发现画面右下角有个人员图标——这说明当前画面有指令下达时有用户验证要求:
http://localhost:9090/watertank/u1
此时,我们直接点击“Start”对应的图元,会自动弹出操作员用户名和密码验证对话框。如图:
我们填写op1这个用户密码,这个用户对于oper角色——于此UI设定匹配。点击确定。可以看到指令下达成功提示,并且当前用户也有了显示:
此时,在一定的时间之内,ui画面不需要你重新进行用户密码验证。但超过一定时间长度之后(此时间可以在项目根节点设置),如果要做写操作,系统还会提示需要用户密码验证——这样做的好处是既可以防止误操作,又可以保证操作方便流畅。
3.5 切换用户测试无权限用户效果
点击右下角的用户图标,则可以强制弹出用户验证对话框。你可以在此输入其他用户的验证信息。我们此时可以填写op2这个用户,此用户就算登录能成功,但与此UI的限制角色不匹配,下达指令时会提示无权限。
4 总结
以上过程非常简单,只需要注意掌握组织树结构的角色分配和继承关系即可。
如果要实现操作员操作日志记录,你可以使用IOT-Tree中的消息流节点“接入与设备-HMI事件触发器”,2分钟(包含数据库表的建立)即可完成操作员操作记录到关系数据库中的配置。关系数据库的使用请参考其他文档和相关文章。
