付純連
(通用技術(shù)集團(tuán)大連機(jī)床有限責(zé)任公司,遼寧 大連 116620)
西門子840Dsl系統(tǒng)的NC程序可以在單程序段上編5組M功能,用于輔助動(dòng)作的執(zhí)行。針對(duì)M功能,西門子提供了動(dòng)態(tài)和靜態(tài)兩種NCK到PLC的接口地址。動(dòng)態(tài)M功能接口地址可以將單程序段上的5組M0到M99這100個(gè)M功能一一對(duì)應(yīng)的直接輸出給PLC。當(dāng)需要使用M100以后的M功能時(shí),沒有動(dòng)態(tài)接口地址可以使用,只有將靜態(tài) M功能接口地址通過PLC程序處理后,才能得到一一對(duì)應(yīng)的PLC地址。由于每增加一個(gè)M功能,都需要增加相應(yīng)的PLC程序,程序編制的重復(fù)工作多。因此,我們編制對(duì)靜態(tài)M功能接口地址譯碼的程序,減少重復(fù)性的PLC程序編制工作,增強(qiáng)PLC程序的結(jié)構(gòu)化、模塊化和通用性。
有關(guān)NCK到PLC的靜態(tài)M功能接口地址見表1。
表1 靜態(tài)M功能接口地址表
同時(shí),我們還需要建一個(gè)用于存儲(chǔ)M功能譯碼地址的DB塊。在本文中,DB塊的容量是50個(gè)字節(jié),譯碼位地址是DBX0.0~DBX49.7,用于存儲(chǔ)M0到M399共計(jì)400個(gè)M功能。
在對(duì)西門子840Dsl系統(tǒng)的靜態(tài)M功能接口地址譯碼時(shí),需要用雙字指針(參數(shù)類型pointer)確定譯碼后的地址。雙字指針(參數(shù)類型pointer)用于存儲(chǔ)器間接尋址,它具有32bit的結(jié)構(gòu):0000 0000 0000 0BBB BBBB BBBB BBBB BXXX,其中0-2bit(3個(gè)X)的數(shù)值表示被尋址的位地址,3-18bit(16個(gè)B)的數(shù)值表示被尋址的字節(jié)地址。通過雙字指針確定具體地址byte.bit,例如,11011表示地址為3.3。
在對(duì)靜態(tài)M功能接口地址譯碼時(shí),我們先計(jì)算出譯碼后的字節(jié)地址和位地址,然后根據(jù)雙字指針格式,將字節(jié)地址左移三位,再與位地址進(jìn)行或運(yùn)算,就可以得到最終的譯碼地址并將譯碼地址置1。
同時(shí),對(duì)靜態(tài)M功能接口地址的處理,需要滿足以下要求:
(1)能夠完成在NC程序的單程序段上執(zhí)行多組M功能;
(2)程序段中的M功能不論在第幾組,具有唯一的PLC地址;
(3)M功能的PLC地址只保持一個(gè)PLC掃描周期;
(4)當(dāng)M功能超過最大數(shù)量時(shí),NC讀入禁止并有信息顯示。
按照要求,編制流程圖,見圖1。
圖1 多組M功能譯碼流程圖
在實(shí)際應(yīng)用中,通過在PLC程序中對(duì)西門子840Dsl靜態(tài) M功能接口地址的譯碼處理,譯碼結(jié)果準(zhǔn)確,可以實(shí)現(xiàn)在西門子NC程序的單程序段上編制、執(zhí)行多組M功能,增強(qiáng)了PLC程序的結(jié)構(gòu)化、模塊化和通用性,同時(shí)大幅減少了編制PLC程序的工作量。