PLC優(yōu)化程序的具體步驟
在工程實(shí)際需求基礎(chǔ)上,進(jìn)行功能塊規(guī)劃和子程序編寫是PLC優(yōu)化程序的第一步。子程序是為了特定的控制目的而編寫的相對(duì)獨(dú)立的程序。通過(guò)使用子程序調(diào)用指令CALL等,可以減少程序的掃描時(shí)間,提高程序的執(zhí)行效率
在工程實(shí)際需求基礎(chǔ)上,進(jìn)行功能塊規(guī)劃和子程序編寫是PLC優(yōu)化程序的第一步。子程序是為了特定的控制目的而編寫的相對(duì)獨(dú)立的程序。通過(guò)使用子程序調(diào)用指令CALL等,可以減少程序的掃描時(shí)間,提高程序的執(zhí)行效率。如果條件不滿足子程序調(diào)用時(shí),程序的掃描將僅在主程序中進(jìn)行,從而避免不必要的掃描時(shí)間。
使用字或雙字?jǐn)?shù)據(jù)傳送給DO點(diǎn)方法來(lái)控制輸出
在PLC的應(yīng)用中,通常會(huì)有大量的輸出控制。使用字或雙字?jǐn)?shù)據(jù)傳送給DO點(diǎn)方法來(lái)控制輸出可以提高速度。合理分配輸出地址并變換控制輸出控制字,可以減少PLC程序執(zhí)行的步數(shù),加快PLC的程序運(yùn)行速度。
脈沖觸發(fā)SET、RESET
在PLC中,使用SET指令只需要執(zhí)行一次即可,不必每次掃描都執(zhí)行這個(gè)指令。因此,SET指令與脈沖輸出(PLS/PLF)指令配合使用非常適合。有些工程人員可能會(huì)忽視這個(gè)問(wèn)題,使用常規(guī)的方法來(lái)驅(qū)動(dòng)SET指令,無(wú)意中增加了PLC程序掃描運(yùn)行時(shí)間。因此,合理使用脈沖觸發(fā)SET、RESET指令可以優(yōu)化程序效率。
避免類型轉(zhuǎn)換
為了避免類型轉(zhuǎn)換,在定義符號(hào)時(shí)可以采用明確的符號(hào)定義來(lái)區(qū)分字類型和雙字類型的變量。推薦使用類匈牙利命名法,即以前綴指示變量類型,并用首字母大寫的有意義的英文單詞的組合作為變量名。常用的后綴有:b(字節(jié)型變量)、w(字型變量)、d(雙字變量)、r(實(shí)型變量)、f(位變量)、btn(自復(fù)位按鈕式輸入)、sw(切換開關(guān)或自鎖按鈕輸入)、sig(傳感器、編碼等電平信號(hào)輸入)、rly(輸出繼電器位)。通過(guò)這種方式定義變量名,可以清晰地區(qū)分不同類型的變量,并減少類型轉(zhuǎn)換的需求。
在具體應(yīng)用中,可以將字變量放在后兩個(gè)字節(jié),并在程序初始化時(shí)將前兩個(gè)字節(jié)清零(除非程序的其他地方需要使用這兩個(gè)字節(jié))。如果定義一個(gè)字類型變量名為VarName,并將其定義為VW2,同時(shí)保持VW0的值為零,那么程序中可以使用VW2以字型訪問(wèn)該變量,同時(shí)也可以使用VD0以雙字型訪問(wèn)該變量,從而避免了類型轉(zhuǎn)換的問(wèn)題。在程序初始化時(shí)將VW0清零或者在數(shù)據(jù)塊中將VW0設(shè)置為零,以后需要以字類型訪問(wèn)變量時(shí)使用wVarName,需要以雙字類型訪問(wèn)變量時(shí)使用dVarName,完全不需要進(jìn)行類型轉(zhuǎn)換。
通過(guò)以上優(yōu)化步驟,可以極大地減少程序語(yǔ)句數(shù)量,使程序更簡(jiǎn)潔、可讀性更好,并提高程序運(yùn)行效率。尤其是在數(shù)學(xué)運(yùn)算量較大的情況下,優(yōu)化效果更為明顯。同時(shí),雖然優(yōu)化過(guò)程中會(huì)多占用兩個(gè)字節(jié)的內(nèi)存,并且不能使用VW0,但S7-200的RAM空間較大,一般情況下不會(huì)用完,因此可以盡量使用這種優(yōu)化方法來(lái)提升PLC程序的性能。