1、基础阶段:博途PLC技术。
3、高级阶段:PLC标准化编程方法。
标准化方法之路!
一、背景
硬件配置:西门子1500PLC + Unified触摸屏
某设备客户要求实现触摸屏的配方管理功能,也交流了很多,听完心里已然万马奔腾,总结下来就是要能“增、删、改、查”,还要能实现不同配方之间的对比查看、导出备份。
说到这里已经有了答案,自己实现的话免不了要脱层皮,后期的可拓展性还不高,遂使用了参数集控件(配方),界面好看不说,还能通过JOB在PLC侧实现一些就简单的配方操控。(可不能浪费了这么贵的屏幕。。。)
经过牛马没日没夜的调试,在设备投产一段时间后,现场工艺人员反馈:要对配方进行进一步的权限管控,让操作工只能调用配方。(配方修改只有工艺人员有用户权限)(如下图)
至此内心依旧是万马奔腾,怎么又改改改,但是细细想来这个其实也是合理需求来的,他们描述的这个场景确实是存在的,不算是无理取闹(自我安慰)。
按照常规思路的话,是要找控件的安全-授权选项,去选择对应的用户管理角色的,如下图是一个按钮控件权限管理的示例。
照着这个思路,我便着手寻找参数集控件的安全管理,但是一通操作之后并没有,只有一个操作员控制-允许这一“布尔”选项,并不能关联到本地组的用户,如下图。
到这里我快要放弃这个思路的时候,突然注意到这个操作员控制是可以动态化的,这就意味着可以用脚本!!!
遂即又是一顿翻箱倒柜,查找怎么通过脚本实现用户验证,最后发现这个思路有点偏了,因为通过API手册发现系统提供了一个UserManagement类下的方法HasUserRole,可以直接验证当前登录用户的角色,如下图。
二、实现过程及原理
通过HMIRuntime.UserManagement.HasUserRole(“HMI Administrator”);判断当前用户是否为"HMI Administrator“角色,如果是的话则”允许操作员控制“。
1、先确定好工艺人员所用账户分配的角色,比如我这里给工艺人员分配的是HMI管理员,角色是HMI Administrator如下图。当然你也可以用“HMI Operator“之类的。
2、配置参数及控件,并插入脚本,如下图。核心原理就是,验证当前登录的用户是否具有HMI Administrator角色,返回验证结果变更操作员控制选项。
3、别忘了给这个脚本配置一个时间事件触发器,我选择一秒执行一次,如下图。
4、因为设备在工厂,没办法远程调试,只能在本地仿真测试完发给客户。
运行unified runtime和plcsim advanced,将项目下载进去,检验劳动成果:在未登录Admin用户之前,配方里“值“这一列无法选中和修改,在登录Admin之后,脚本检查到HMI Administrator角色,”值“可以被修改了,完结撒花。
触摸屏脚本的用法还是很灵活的,在此也是把这次解决问题的思路分享给大家,本人经验有限,抛砖引玉,我相信有更优雅的方式解决,欢迎大家在评论区交流。
总结:找到解决问题的合适的技术方法也是挺不容易的!