施耐德citect2018R2针对计算机IP做操作限制
(2024-03-04 20:15:24)
标签:
施耐德citect2018r2获取ip权限设置 |
分类: 施耐德PLC |
刚才同事打电话过来,说现场有这样的需求:同一套控制系统某机台计算机只能看,不能修改数据,不能操作设备,该控制系统使用M580,上位机是citect2018R2。这是一个脑洞的需求,虽然我的领导说不要理会这种需求,我在心里还是想了想如何实现。
常规方法看,只需要针对那几个不能修改的计算机上的citect项目程序定制,使其不能操作和修改参数即可。但是这样一来,同一套控制系统不同的上位机需要备份不同的项目程序,不通用。
我决定根据计算机IP区别来做,根据当前计算机IP来决定自动登录什么用户,不同的用户权限不一样,有的用户可以操作设备修改参数,有的用户只能浏览数据切换画面。
关于获取本地计算机IP,我曾经做过练习,博客地址如下:
做一个简单的例子。
新建一个citect项目程序,新建一个页面,放一个按钮,按钮鼠标点击事件脚本为
Message("Title", "Prompt", 0)
这是鼠标点击弹出对话框。
这个按钮设置访问权限,默认是不需要访问的。
在安全性-用户中新建用户admin,属于administrators角色,设置密码1234,该用户级别最高。
新建一个citectVBA脚本
Function GetIPAddress()
Dim objWMIService As Object
Dim colItems As Object
Dim objItem As Object
Dim
objAddress
Set objWMIService =
GetObject("winmgmts:\\." & "\root\cimv2")
Set colItems =
objWMIService.ExecQuery("Select * From
Win32_NetworkAdapterConfiguration Where IPEnabled = True")
For Each objItem In colItems
Exit For
Next
End Function
该脚本获取当前计算机IP地址,如果IP地址是192.168.1.10,则自动登录admin用户。
在citect页面的进入页面时事件写下面的脚本
VbCallReturn(VbCallRun(vbcallopen("GetIPAddress")))
这个脚本就是打开页面是判断当前计算机IP,如果满足条件自动登录admin用户,获取最高权限,可以操作按钮。如果IP地址不匹配,则不登录,没有那么高的权限,无法操作按钮。
按照这种思路,就可以实现同样的citect项目程序,不同的计算机实现不同的权限。