我才学习使用宏指令 ,想通过宏指令直接判断是否授权。不用在PLC里写程序。
初步功能可以实现,就是开机出厂密码成功写入HMI内存,也可以输入密码比较。输入正确正确则可以正常授权。否则指定干扰PLC数据的程序。
但是发现个问题,就是我输入的次数,始终不能断电保存。断电重启后无论正确与否,还可以点击输入元件,同时我原本需要隐藏的输入键盘元件居然还能再次点开。这都是累计输入次数的数据没有保存到内存的原因。
初学者,求师兄们帮帮我吧。程序图和源代码如下,拜谢!!
macro_command main()
short date,date1,zero,conter,conter1,password
bool a,b,c,d,g
DELAY(1000)
password=5239//出厂权限密码
d=true
DELAY(1000)
SetData(password, "本机 触摸屏", RW, 22, 1)//把出厂密码写入HMI内存RW22
DELAY(1000)
d=false
SetData(d, "本机 触摸屏", LB, 9029, 1) //强制保存到内存
GetData(date, "本机 触摸屏", RW, 22, 1)//读取出厂权限密码
GetData(date1, "本机 触摸屏", RW, 24 , 1)//读取人工输入密码
GetData(c, "本机 触摸屏", LB,120, 1) //输入密码ENTER确认一次通知LB120累计输入的次数
SetData(conter, "本机 触摸屏", RW, 26, 1)//把输入的次数保存到HMI内存RW26
GetData(conter1, "本机 触摸屏", RW, 26, 1)//再从内存里读出保存后的次数
if c==true then //输入确认一次
conter=conter+1 //累加一次次数
SetData(c, "本机 触摸屏", LB, 9029, 1) //强制保存
DELAY(200)
c=false //输入成功一次强制OFF通知 以便下次再ON时计数
SetData(c, "本机 触摸屏", LB, 9029, 1)//强制保存
SetData(c, "本机 触摸屏", LB,120, 1)//复位通知原件 以便下次通知计数
end if
if conter1>=2 then//如果输入密码次数大于等于2
g=true //通知原件准备锁定并隐藏输入键盘
SetData(g, "本机 触摸屏", LB, 9029, 1)
DELAY(200)
SetData(c, "本机 触摸屏", LB, 9029, 1)
SetData(g, "本机 触摸屏", LB, 130, 1)//输入键盘的安全条件 当130置位 就隐藏键盘
else //如果输入密码次数没到2次
g=false
SetData(g, "本机 触摸屏", LB, 130, 1) //输入键盘的安全条件 当130保持OFF 可以继续输入
end if
if date<>date1 then//如果输入密码不等于 出厂权限密码
a=true//准备执行脚本程序 清楚PLC里指定数据 并断开输出
SetData(a, "本机 触摸屏", LB, 100, 1)//弹出锁定文字指示
SetData(zero, "MITSUBISHI FX0n/FX2", D, 132, 1)
SetData(zero, "MITSUBISHI FX0n/FX2", D, 138, 1)
SetData(zero, "MITSUBISHI FX0n/FX2", D, 229, 1)
SetData(a, "MITSUBISHI FX0n/FX2", SM, 8034, 1)
else
a=false
SetData(a, "本机 触摸屏", LB, 100, 1)//弹出锁定文字指示
SetData(a, "MITSUBISHI FX0n/FX2", SM, 8034, 1)
end if
end macro_command