宏指令腳本如下:
- 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)指出,本站將立即改正。
|