使用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分钟(包含数据库表的建立)即可完成操作员操作记录到关系数据库中的配置。关系数据库的使用请参考其他文档和相关文章。

相关推荐
hzcj8882 小时前
汇正财经:AI重构信创,算力安全战略升级
人工智能·安全·重构
桐盛科技2 小时前
景区智慧公厕:解决“找厕难、排队长”的技术实践
物联网·智慧城市·风景
曦尧2 小时前
`claude-video /watch`:给 Claude 装上“眼睛“看视频的工程实现与边界分析
ai·自动化
CodexDave2 小时前
Python 自动化接单实战(四):PDF 批量提取先识别文本层还是扫描件
python·pdf·自动化·ocr·python自动化·文档处理·pdf提取
TDengine (老段)2 小时前
已有TSDB?一条配置,免费解锁AI数据管理平台
大数据·数据库·物联网·ai·时序数据库·tdengine·涛思数据
蝎蟹居3 小时前
GBT 4706.1-2024逐句解读系列(31) 第7.21.1条款:说明书怎么写符合标准要求
人工智能·单片机·嵌入式硬件·物联网·安全
Inhand陈工3 小时前
路由器专题二:有线为主,蜂窝备份——映翰通路由器链路备份功能详解
运维·网络·物联网·智能路由器·系统安全
Allen_LVyingbo4 小时前
基于结构化电子病历的临床风险预测模型构建与大模型协同优化
python·安全·机器学习·docker·vim·健康医疗
王维同学13 小时前
Winsock 协议与名称空间 Provider 目录
网络·c++·windows·安全