加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

施耐德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
   For Each objAddress In objItem.IPAddress
   If objAddress = "192.168.1.10" Then
      CicodeCallOpen "Login","admin","1234"
   End If
   Exit For
   Next
Exit For
Next
End Function
该脚本获取当前计算机IP地址,如果IP地址是192.168.1.10,则自动登录admin用户。
在citect页面的进入页面时事件写下面的脚本
VbCallReturn(VbCallRun(vbcallopen("GetIPAddress")))
这个脚本就是打开页面是判断当前计算机IP,如果满足条件自动登录admin用户,获取最高权限,可以操作按钮。如果IP地址不匹配,则不登录,没有那么高的权限,无法操作按钮。

按照这种思路,就可以实现同样的citect项目程序,不同的计算机实现不同的权限。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有