威纶通触摸屏MT6071IP如何使用宏指令编程设置密码登陆界面进行用户操作权限管理

        在工控领域中,我们将我们制作的软件工程交付生产人员使用时,为了防止各类不相干的人员进行随手操作或产线工人误操作导致停机,造成不必要的损失,就需要对项目操作界面进行用户权限加密。一般像我使用的威纶通触摸屏比较多,所以有现成的方案可供大家借用,也节省了大家的时间。话不多说,我以型号为MT6071ip的屏做为示例,制作按钮操作权限登陆界面。

1、新建一个主页面,比如在该页面上我的设置1和设置2按钮对应界面都要加密,则在页面上添加两个打开对应1、2页面的功能按钮【设置1】【设置2】

威纶通触摸屏MT6071IP如何使用宏指令编程设置密码登陆界面进行用户操作权限管理

2、新建一个密码登陆页面,作为用户输入密码验证正确与否的一个权限管理页面

威纶通触摸屏MT6071IP如何使用宏指令编程设置密码登陆界面进行用户操作权限管理

3、回到主页面上双击设置1和设置2,弹出其对应的属性窗口,其功能都是打开密码登陆界面,但打开后分别设ON的是LB100、LB101,(其最终对应的是:设置1----我的第14页面;设置2----我的第15页面,怎么实现可以继续往下读。。。)

威纶通触摸屏MT6071IP如何使用宏指令编程设置密码登陆界面进行用户操作权限管理

威纶通触摸屏MT6071IP如何使用宏指令编程设置密码登陆界面进行用户操作权限管理

4、在触摸屏【系统参数】里预先设定【用户密码】,比如我将编号1设置的密码为1234,将编号1启动的勾选上。确定。

威纶通触摸屏MT6071IP如何使用宏指令编程设置密码登陆界面进行用户操作权限管理

在【PLC控制】里,将我的所有页面的换页地址关联到LW0软元件。即LW0=14时,表示打开左侧目录树编号为14的页面(即我的设置1详细页面)或LW0=15时目录树编号为15的页面(即我的设置2详细页面)。

威纶通触摸屏MT6071IP如何使用宏指令编程设置密码登陆界面进行用户操作权限管理

5、制作用户密码登陆界面 ,添加两个数值元件,其读取写入地址分别是LW9219、LW9220。由于上一步我们设置的编号1的密码值为1234,所以当所有的都制作好后,运行状态就是操作者打开此页面,将用户编号输入1,密码输入1234,即可成功解锁界面。

威纶通触摸屏MT6071IP如何使用宏指令编程设置密码登陆界面进行用户操作权限管理

5.1、用户编号LW9219的属性:

威纶通触摸屏MT6071IP如何使用宏指令编程设置密码登陆界面进行用户操作权限管理

5.2 密码LW9220的属性:

威纶通触摸屏MT6071IP如何使用宏指令编程设置密码登陆界面进行用户操作权限管理

5.3、新建一个wrong password 页面,作为密码错误后弹出的提示页面:

威纶通触摸屏MT6071IP如何使用宏指令编程设置密码登陆界面进行用户操作权限管理

回到用户密码登陆界面添加一个直接窗口,其控制软元件是LB0,密码输入错误后弹出上面的wrong password 页面。

威纶通触摸屏MT6071IP如何使用宏指令编程设置密码登陆界面进行用户操作权限管理

5.4、在用户登陆页面添加【确定】按钮,执行宏指令macro_1(检查密码对错),其属性如下:

威纶通触摸屏MT6071IP如何使用宏指令编程设置密码登陆界面进行用户操作权限管理

5.5 在用户登陆页面添加【取消】按钮,执行宏指令macro_2(关闭当前页面),其属性如下:

威纶通触摸屏MT6071IP如何使用宏指令编程设置密码登陆界面进行用户操作权限管理

5.6、在用户登陆页面添加LB-1位状态设置按钮,当窗口打开时,其自动执行宏指令macro_3(清除密码记忆),当该窗口关闭时,添加一个窗口打开时设OFF的位状态设置按钮即可。

威纶通触摸屏MT6071IP如何使用宏指令编程设置密码登陆界面进行用户操作权限管理

6、制作宏指令macro_1,macro_2,制作完成后,才能完成上一步的5.4,5.5的属性设置,由于上一步的连贯性,所以提前描述了,如果事先没有做好宏指令,上一步5.4,5.5的属性设置里是找不到的。打开宏指令界面,新增macro_1,macro_2,

威纶通触摸屏MT6071IP如何使用宏指令编程设置密码登陆界面进行用户操作权限管理

6.1 宏指令macro_1 :密码验证程序

威纶通触摸屏MT6071IP如何使用宏指令编程设置密码登陆界面进行用户操作权限管理

我将macro_1 全部代码粘贴在下面,感兴趣的同学可以看一上注释并研究一下威纶屏支持的代码格式与函数定义,COPY后点击保存&编译,0 errors 方可通过。 

//按确定键检验密码程序
macro_command main()
short pageset,pageyes14,pageyes15,wrongLB0
bool status,label1,label2,ON=true,OFF=false
pageyes14=14
pageyes15=15
wrongLB0=1
GetData(status, "Local HMI", LB, 9060, 1)        //获取密码输入结果
GetData(label1, "Local HMI", LB, 100, 1)        //获取登陆标志位-延时设置按钮
GetData(label2, "Local HMI", LB, 101, 1)        //获取登陆标志位-分Bin设置按钮
if status==true then                            //如果密码错误
    SetData(wrongLB0, "Local HMI", LB, 0, 1)    //弹出报警标志位使能
end if 
if status==false and label1==true then        //如果密码正确且登陆标志位LB100=1
    SetData(OFF, "Local HMI", LB, 100, 1)        //清除标志位
    SetData(pageyes14, "Local HMI", LW, 0, 1)    //转换到基本窗口LW0.14(在元件-PLC控制中设置关联)
end if 
if status==false and label2==true then        //如果密码正确且登陆标志位LB101=1
    SetData(OFF, "Local HMI", LB, 101, 1)        //清除标志位
    SetData(pageyes15, "Local HMI", LW, 0, 1)    //转换到基本窗口LW0.15
end if 

end macro_command

6.2 宏指令macro_2 :关闭当前页面程序
macro_command main()
bool ON=true,OFF=false
short page=12
SetData(OFF, "Local HMI", LB, 100, 1)
SetData(OFF, "Local HMI", LB, 101, 1)
SetData(page, "Local HMI", LW, 0, 1)
end macro_command

6.3 宏指令macro_3 :清除密码记忆
macro_command main()
int password=0
bool passwordLB1,ON=true,OFF=false
//GetData(passwordLB1, "Local HMI", LB, 1, 1)
//if passwordLB1==true then 
SetData(password, "Local HMI", LW, 9220, 1) //打开密码登陆窗口时清除密码内存
//end if 
end macro_command

7、至此,所有的操作都已经完成,点击编译按钮,编译程序,保存程序。点击离线模拟,进行模拟操作运行即可。