宏指令脚本如下:
- macro_command main()
- unsigned int time_sum[6]={0,0,0,0,0,0} //时间组合数组
- unsigned int Dynamic_password[2]={0,0} //动态密码存放
- unsigned int Verification_Code=0 //验证码存放
- unsigned int Input_password=0 //输入密码框
- unsigned int mm1=0, mk1=0,mm2=0, mk2=0,mm3=0, mk3=0,mm4=0, mk4=0,mm5=0, mk5=0 //定义10个变量为密码计算,
- unsigned short year=0,month=0,day=0,hour=0,minute=0,second=0 //系统时间存放---声明时间变量
- bool init_button=false,Open_button1=false,Open_button2=false,Open_button3=false,Open_button4=false,Open_button5=false//声明位状态变量
- //1.初始化按钮, 2.1#开启按钮, 3.2#开启按钮 4.3#开启按钮 5.4#开启按钮 6.5#开启按钮
- bool Release_button=false,ON=true,OFF=false, Picture_locked=false,M99_ON=true,M99_OFF=false //声明位状态变量
- //3.解除按钮 4.画面控制 5.PLC,M99-打开,PLC,M99-关闭
- unsigned short Year_input[5]={0,0,0,0,0},month_input[5]={0,0,0,0,0},day_input[5]={0,0,0,0,0},count=0 //获取-输入时间期限变量
- unsigned short K0=0,K1=1,K2=2,K3=3,K4=4 //常数赋值---5次期限0-4
- unsigned int DK0=0 //常数赋值
- unsigned short R1=11 //主画面编号
- GetData(year, "Local HMI", LW, 9022, 1) //获取系统时间年
- GetData(month, "Local HMI", LW, 9021, 1) //获取系统时间月
- GetData(day, "Local HMI", LW, 9020, 1) //获取系统时间日
- GetData(hour, "Local HMI", LW, 9019, 1) //获取系统时间时
- GetData(minute,"Local HMI", LW, 9018, 1) //获取系统时间分
- GetData(second,"Local HMI", LW, 9017, 1) //获取系统时间秒
- SetData(ON, "Local HMI", LB, 9029, 1) //强制保存---强制保存配方资料到触摸屏
- Dynamic_password[0]=(year+month+day+hour)*123+1234567 //期限解锁密码算法
- Dynamic_password[1]=(year+month+day+hour)*123+3456789 //终级解锁密码算法
- time_sum[0]=year*10000+month*100+day //系统时间组合
- Verification_Code=(year+month+day+hour)*123 //验证码算法
- GetData(Open_button1, "Local HMI", RW_Bit, 600, 1) //读取 分期按钮1 是否开启
- GetData(Open_button2, "Local HMI", RW_Bit, 601, 1) //读取 分期按钮2 是否开启
- GetData(Open_button3, "Local HMI", RW_Bit, 602, 1) //读取 分期按钮3 是否开启
- GetData(Open_button4, "Local HMI", RW_Bit, 603, 1) //读取 分期按钮4 是否开启
- GetData(Open_button5, "Local HMI", RW_Bit, 604, 1) //读取 分期按钮5 是否开启
- GetData(init_button, "Local HMI", RW_Bit, 11, 1)//读取 初始化按钮状态
- GetData(Release_button, "Local HMI", RW_Bit, 12, 1)//读取 解除按钮状态
- GetData(Picture_locked, "Local HMI", RW_Bit, 14, 1)//画面控制
- GetData(count, "Local HMI", RW, 2, 1) //读取期数
- GetData(Input_password, "Local HMI", RW, 3, 1) //读取密码
- SetData(Verification_Code, "Local HMI", RW, 5, 1) //验证码显示
- GetData(mm1, "Local HMI", RW, 5, 1) //读取验证码
- mk1=mm1+372100 //第一期密码:= 验证码 + 372100
- mk2=mm1+472800 //第二期密码:= 验证码 + 472800
- mk3=mm1+573500 //第三期密码:= 验证码 + 573500
- mk4=mm1+674200 //第四期密码:= 验证码 + 674200
- mk5=mm1+774900 //第五期密码:= 验证码 + 774900
- //初始化处理
- if init_button then
- SetData(OFF, "Local HMI", RW_Bit, 600, 1) //分期功能-关闭
- SetData(OFF, "Local HMI", RW_Bit, 601, 1) //分期功能-关闭
- SetData(OFF, "Local HMI", RW_Bit, 602, 1) //分期功能-关闭
- SetData(OFF, "Local HMI", RW_Bit, 603, 1) //分期功能-关闭
- SetData(OFF, "Local HMI", RW_Bit, 604, 1) //分期功能-关闭
-
- SetData(OFF, "Local HMI", RW_Bit, 12, 1) //解除按钮-复位
- SetData(K0, "Local HMI", RW, 2, 1) //期数-清
- SetData(DK0, "Local HMI", RW, 3, 1) //密码框-清零
- SetData(OFF, "Local HMI", RW_Bit, 13, 1) //密码输入错误复位
- end if
- //一期密码时间设定
- GetData(Year_input[0], "Local HMI", RW, 10, 1) //输入年
- GetData(month_input[0], "Local HMI", RW, 11, 1) //输入月
- GetData(day_input[0], "Local HMI", RW, 12, 1) //输入日
- time_sum[1]=Year_input[0]*10000+month_input[0]*100+day_input[0]//输入时间组合:如20211209
- if Open_button1 and time_sum[0]>=time_sum[1] and count==0 then //第1期打开锁机条件:1#开启+系统时间>=设定时间+1期
- SetData(ON, "Local HMI", RW_Bit, 14, 1) //锁机画面弹出
- end if
- if count==0 and mk1==Input_password and Release_button then //第1期解锁条件:1期+计算密码=输入密码+解锁按钮按下
- SetData(OFF, "Local HMI", RW_Bit, 14, 1) //锁机画面关闭
- SetData(DK0, "Local HMI", RW, 3, 1) //密码框清零
- SetData(OFF, "Local HMI", RW_Bit, 600, 1) //分期功能-关闭
- SetData(K1, "Local HMI", RW, 2, 1) //期数加1
- SetData(R1, "Local HMI", LW, 0, 1) //切换主画面
- end if
-
-
- //二期密码时间设定
- GetData(Year_input[1], "Local HMI", RW, 20, 1) //输入年
- GetData(month_input[1], "Local HMI", RW, 21, 1) //输入月
- GetData(day_input[1], "Local HMI", RW, 22, 1) //输入日
- time_sum[2]=Year_input[1]*10000+month_input[1]*100+day_input[1] //输入时间组合
- if Open_button2 and time_sum[0]>=time_sum[2] and count==1 then //第2期打开锁机条件:2#开启+系统时间>=设定时间+1期
- SetData(ON, "Local HMI", RW_Bit, 14, 1) //锁机画面弹出
- end if
- if count==1 and mk2==Input_password and Release_button then //第2期解锁条件:2期+计算密码=输入密码+解锁按钮按下
- SetData(OFF, "Local HMI", RW_Bit, 14, 1) //锁机画面关闭
- SetData(DK0, "Local HMI", RW, 3, 1) //密码框清零
- SetData(OFF, "Local HMI", RW_Bit, 601, 1) //分期功能-关闭
- SetData(K2, "Local HMI", RW, 2, 1) //期数加1
- SetData(R1, "Local HMI", LW, 0, 1) //切换主画面
- end if
- //三期密码时间设定
- GetData(Year_input[2], "Local HMI", RW, 30, 1) //输入年
- GetData(month_input[2], "Local HMI", RW, 31, 1) //输入月
- GetData(day_input[2], "Local HMI", RW, 32, 1) //输入日
- time_sum[3]=Year_input[2]*10000+month_input[2]*100+day_input[2] //输入时间组合
- if Open_button3 and time_sum[0]>=time_sum[3] and count==2 then //第3期打开锁机条件:3#开启+系统时间>=设定时间+1期
- SetData(ON, "Local HMI", RW_Bit, 14, 1) //锁机画面弹出
- end if
- if count==2 and mk3==Input_password and Release_button then //第3期解锁条件:3期+计算密码=输入密码+解锁按钮按下
- SetData(OFF, "Local HMI", RW_Bit, 14, 1) //锁机画面关闭
- SetData(DK0, "Local HMI", RW, 3, 1) //密码框清零
- SetData(OFF, "Local HMI", RW_Bit, 602, 1) //分期功能-关闭
- SetData(K3, "Local HMI", RW, 2, 1) //期数加1
- SetData(R1, "Local HMI", LW, 0, 1) //切换主画面
- end if
- //四期密码时间设定
- GetData(Year_input[3], "Local HMI", RW, 40, 1) //输入年
- GetData(month_input[3], "Local HMI", RW, 41, 1) //输入月
- GetData(day_input[3], "Local HMI", RW, 42, 1) //输入日
- time_sum[4]=Year_input[3]*10000+month_input[3]*100+day_input[3] //输入时间组合
- if Open_button4 and time_sum[0]>=time_sum[4] and count==3 then //第4期打开锁机条件:4#开启+系统时间>=设定时间+1期
- SetData(ON, "Local HMI", RW_Bit, 14, 1) //锁机画面弹出
- end if
- if count==3 and mk4==Input_password and Release_button then //第4期解锁条件:4期+计算密码=输入密码+解锁按钮按下
- SetData(OFF, "Local HMI", RW_Bit, 14, 1) //锁机画面关闭
- SetData(DK0, "Local HMI", RW, 3, 1) //密码框清零
- SetData(OFF, "Local HMI", RW_Bit, 603, 1) //分期功能-关闭
- SetData(K4, "Local HMI", RW, 2, 1) //期数加1
- SetData(R1, "Local HMI", LW, 0, 1) //切换主画面
- end if
- //五期密码时间设定
- GetData(Year_input[4], "Local HMI", RW, 50, 1) //输入年
- GetData(month_input[4], "Local HMI", RW, 51, 1) //输入月
- GetData(day_input[4], "Local HMI", RW, 52, 1) //输入日
- time_sum[5]=Year_input[4]*10000+month_input[4]*100+day_input[4] //输入时间组合
- if Open_button5 and time_sum[0]>=time_sum[5] and count==4 then //第5期打开锁机条件:1#开启+系统时间>=设定时间+1期
- SetData(ON, "Local HMI", RW_Bit, 14, 1) //锁机画面弹出
- end if
- if (count==4 and mk5==Input_password and Release_button)or(Dynamic_password[1]==Input_password and Release_button) then //第5期解锁条件:5期+计算密码=输入密码+解锁按钮按下(或者终极解码+解除按钮)
- SetData(OFF, "Local HMI", RW_Bit, 14, 1) //锁机画面关闭
- SetData(DK0, "Local HMI", RW, 3, 1) //密码框清零
- SetData(K0, "Local HMI", RW, 2, 1) //期数加1
- SetData(OFF, "Local HMI", RW_Bit, 600, 1) //分期功能-关闭
- SetData(OFF, "Local HMI", RW_Bit, 601, 1) //分期功能-关闭
- SetData(OFF, "Local HMI", RW_Bit, 602, 1) //分期功能-关闭
- SetData(OFF, "Local HMI", RW_Bit, 603, 1) //分期功能-关闭
- SetData(OFF, "Local HMI", RW_Bit, 604, 1) //分期功能-关闭
- SetData(R1, "Local HMI", LW, 0, 1) //切换主画面
- end if
- if Open_button1 and mk1 or Open_button2 and mk2 or Open_button3 and mk3 or Open_button4 and mk4 or Open_button5 and mk5 <>Input_password and Release_button==1 then//P判断输入密码是否正确,显示提示!
- SetData(ON, "Local HMI", RW_Bit, 13, 1) //密码输入错误
- else
- SetData(OFF, "Local HMI", RW_Bit, 13, 1) //密码输入错误复位
- end if
- //R0:画面切换备用 R1:各开关铵钮存放及位控制/的R1.0开启按钮R1.1初始化按钮R1.2解除按钮按钮R1.3密码错误指示R1.4锁机画面弹出
- //R2—R3:密码输入。
- end macro_command
复制代码
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|
|