董 剛
(煙臺汽車工程職業(yè)學院機電工程系,山東煙臺265500)
中小型企業(yè)采購高精密數(shù)控機床時,往往采用分期付款形式。為保證買方能按期付款,機床廠家常在系統(tǒng)中加入分期付款功能,具體要求:①付款日前三天,系統(tǒng)應(yīng)每天發(fā)出付費預報警,預報警可解除;②買方正常支付分期款項,機床廠商給出當期密碼和解鎖密碼地址,用戶按照地址輸入密碼后,系統(tǒng)自動解除當期預報警和逾期報警;③如到付款日買方未支付,系統(tǒng)發(fā)出逾期報警,機床不能工作,除非付款,否則報警無法解除。
筆者按照機床廠要求,給出一種FANUC 0i系統(tǒng)機床分期付款控制方法。
系統(tǒng)時間是分期付款的時間基準,如果被買方修改,系統(tǒng)將無法按照正確時間發(fā)出報警,分期付款功能也將失效。所以需保護系統(tǒng)時間不被修改,如圖1所示。系統(tǒng)時間保護需設(shè)定參數(shù)3290#7=0和信號G46.4=0,兩個條件缺一不可。
為防止買方修改3290#7參數(shù),有兩種方法,第一種開啟全局參數(shù)保護功能,設(shè)定3299#0=1和G46.0=0,開啟后,全部參數(shù)寫保護,也使得用戶無法調(diào)整反向間隙等常用參數(shù),對用戶造成不便。第二種方法是利用WINDW指令實現(xiàn)部分參數(shù)寫保護。具體做法為:WINDW指令代碼設(shè)為二進制數(shù)18;結(jié)束代碼不需設(shè)定,數(shù)據(jù)系統(tǒng)自動產(chǎn)生;數(shù)據(jù)長度設(shè)為1個字節(jié);數(shù)據(jù)號設(shè)為3290;數(shù)據(jù)屬性不需設(shè)定;參數(shù)數(shù)據(jù)設(shè)定為0。由于執(zhí)行寫參數(shù)功能的WINDW指令是低速響應(yīng)指令,其驅(qū)動條件在指令執(zhí)行結(jié)束后需復位,否則指定參數(shù)將只被保護一次,部分參數(shù)保護功能將失效。本例中,使用該指令執(zhí)行完成信號E600.3的常閉觸點激活WINDW指令,當WINDW指令執(zhí)行未完成時E600.3為0,E600.3常閉觸點驅(qū)動 WINDW 指令工作,當WINDW指令執(zhí)行完成時E600.3為1,E600.3常閉觸點自動復位,WINDW指令停止工作,E600.3常閉觸點重新為0,進而重新驅(qū)動WINDW指令工作,如此反復,保證部分參數(shù)保護功能有效,如圖2所示。
信號G46.4 PMC程序,如圖3所示,也需保護,相關(guān)方法在PMC程序保護中詳細說明。
本例中,第一期付款日為2018.09.20,共6期,每期間隔兩個月,如表1所示。
預報警、逾期報警都以系統(tǒng)時間作為基準,因此程序使用 WINDR指令讀取系統(tǒng)時間,注意事項為:WINDR指令代碼設(shè)為二進制數(shù)151;結(jié)束代碼不需設(shè)定,數(shù)據(jù)系統(tǒng)自動產(chǎn)生;數(shù)據(jù)長度不需設(shè)定;數(shù)據(jù)號不需設(shè)定;數(shù)據(jù)屬性不需設(shè)定;結(jié)果數(shù)據(jù)區(qū)E210、E211字節(jié)為年數(shù)據(jù),E212、E213字節(jié)為月數(shù)據(jù),E214、E215字節(jié)為日數(shù)據(jù)。由于執(zhí)行讀參數(shù)功能的WINDR指令同樣為低速響應(yīng)指令,為保證其一直讀取系統(tǒng)時間,使用指令執(zhí)行完成信號E100.0的常閉觸點反復激活WINDR指令,如圖4所示。
為簡化系統(tǒng)時間和當期付款日之間的數(shù)據(jù)比較,需對系統(tǒng)時間數(shù)據(jù)中月、日部分進行數(shù)據(jù)簡化處理,使用DCNV指令將月、日分別轉(zhuǎn)化成單字節(jié)BCD碼,地址分別為D601、D600,使原來月、日各兩字節(jié)的二進制數(shù)轉(zhuǎn)化成一個兩字節(jié)的月日組合數(shù)據(jù),如圖5所示。
(1)預報警
比較系統(tǒng)時間距離付款日是否3天以內(nèi),如果是,則發(fā)出預報警。
以第一期預報警為例說明。使用二進制字等于指令EQW判斷年數(shù)據(jù)E210和2018是否相等,如相等則E501.0=1,如圖6所示。使用BCD碼比較指令COIN判斷月日數(shù)據(jù)D600是否等于0917、0918、0919,如其中之一相等,則對應(yīng)輸出E502.1、E503.1、E504.1為1,如圖 7所示。 如果 E501.0=1、E502.1=1,則觸發(fā)上升沿脈沖E505.0,E505.0觸發(fā)第一天預報警信號A6.1,剩余兩天預報警原理相同,如圖7所示。預報警發(fā)生后,用戶可手動按下RESET鍵,使信號F1.1=1,復位報警,如圖8所示。
為保證預警報發(fā)生時不影響加工,報警號取外部報警2000~3000中間序號2400、2401、2402號,如圖9所示。
(1)逾期報警
將系統(tǒng)時間和付款日的數(shù)據(jù)比較分為兩部分進行,一部分是采用二進制字指令GWT判斷前者年數(shù)據(jù)是否大于后者,如圖10所示,采用二進制指令EQW判斷兩者年數(shù)據(jù)是否相等,如圖6所示;另一部分是采用BCD比較指令COMP,判斷前者月日數(shù)據(jù)是否大于等于后者,如圖11、12所示。
判斷系統(tǒng)時間大于等于付款日時間的依據(jù)有,兩者年數(shù)據(jù)相等且前者月日組合數(shù)據(jù)大于等于后者,或者前者年數(shù)據(jù)大于后者,如圖13所示。
如果系統(tǒng)時間大于等于某付款日,且未進行該期密碼解鎖,則發(fā)出報警號處于1000~2000中間序號的嚴重報警,使機床停止工作,同時報警觸發(fā)系統(tǒng)急停信號G8.4,使機床伺服和主軸都不能動,整個機床處于鎖機狀態(tài),如圖14所示。
(3)密碼解鎖
為保證密碼數(shù)據(jù)斷電不丟失,解鎖密碼地址設(shè)置在系統(tǒng)D數(shù)據(jù)區(qū)。D數(shù)據(jù)區(qū)查看和輸入數(shù)據(jù)有十進制、16進制或BCD碼方式,數(shù)據(jù)長度有字節(jié)、字或雙字類型,為了方便用戶使用輸入密碼和系統(tǒng)調(diào)試,本例中選擇BCD碼字方式,如圖15所示。
每期解鎖密碼地址非連續(xù),密碼數(shù)據(jù)無規(guī)律,目的是防止用戶破解密碼。本例中,每期解鎖密碼地址和密碼如表1所示,由機床廠商指定。
表1 付款日期、解鎖地址和密碼
使用BCD碼指令COIN判斷輸入密碼是否正確,如圖16~21所示。如解鎖密碼地址中密碼數(shù)據(jù)正確,COIN指令輸出線圈為1,解除當期預報警和逾期報警,如圖8、圖13所示,否則輸出線圈為0,系統(tǒng)狀態(tài)不變。
當期密碼、解鎖地址、當期付款日等重要數(shù)據(jù)固化在PMC程序中,如果被用戶查看到,則分期付款功能將完全失效,所以設(shè)計程序時分別設(shè)置16位編輯和查看密碼,保證買方無法查看并修改PMC程序,如圖22所示。
為防止買方使用PMC輸入輸出畫面導出PMC程序,需使 K900.1=0、K901.6=0、K900.0=1,關(guān)閉程序?qū)С龉δ埽鐖D23所示。
為防止買方使用PMC程序停止功能,停止PMC,強制G46.0=1,破除系統(tǒng)時間保護,需使K900.1=0、K901.6=0、K902.2=0,關(guān)閉停止功能,如圖24所示;需使 K900.1=0、K901.6=0、K900.4=0,圖 25 關(guān)閉強制功能。K900數(shù)據(jù)相關(guān)程序如圖26所示,PMC程序保護功能效果如圖27所示。
本文給出了一種FANUC 0i系統(tǒng)的機床分期付款控制方法,滿足了機床廠家分期付款功能要求。該方法的系統(tǒng)時間保護、預報警、逾期報警、密碼解鎖和PMC程序保護等內(nèi)容和詳細示例程序,具有一定示范意義。