plc 梯形圖是一種圖形語(yǔ)言,不僅支持按位、字節(jié)、字、雙字的方式訪問(wèn)存儲(chǔ)區(qū)域,同時(shí)也支持整數(shù)、實(shí)數(shù)、字符串、表格等高級(jí)數(shù)據(jù)類型。指令用三種圖形風(fēng)格進(jìn)行描述,圖形的掃描分析由系統(tǒng)編譯軟件解釋。圖形的串、并聯(lián)位置關(guān)系代表了邏輯控制條件的與、或關(guān)系。
在梯形邏輯指令中,其操作碼是用圖形元素表示的,該圖素形象地表明了cpu做什么,表示plc要完成的操作。其操作數(shù)的表示方法與語(yǔ)句指令相同。
(1)不帶操作數(shù)的梯形圖指令
如對(duì)邏輯操作結(jié)果( rlo)取反指令:┤ not├。
(2)位指令和邏輯運(yùn)算比較指令格式
這是plc的最基本的指令,指令根據(jù)存儲(chǔ)器中的某一位的邏輯值做相應(yīng)運(yùn)算,運(yùn)算的結(jié)果決定著后續(xù)指令能否被執(zhí)行,或者說(shuō)是否允許能流通過(guò)。該指令描述了存儲(chǔ)區(qū)中位邏輯值的使用方法。
(3)盒指令格式
盒指令一般由指令名稱、輸入操作數(shù)和輸出操作數(shù)3部分組成,是梯形圖語(yǔ)言編程中大量使用的指令。
①功能框內(nèi)的頂部標(biāo)有該指令名稱。指令名稱描述了指令所要進(jìn)行的操作,其作用相當(dāng)于stl中的操作符,如add_i及sub_i分別表示整數(shù)加法及整數(shù)減法指令。標(biāo)題一般由兩部分組成,前部分為指令的助記符,多為英語(yǔ)縮寫詞,如加法指令中addition簡(jiǎn)寫為add;后部分為參與運(yùn)算的數(shù)據(jù)類型,如表中的i,表示為整數(shù)。另外常見(jiàn)的有,di表示雙整數(shù),r表示實(shí)數(shù),b表示字節(jié),w表示字,dw表示雙字等。
②指令的執(zhí)行條件及執(zhí)行形式:
·允許輸入端/允許輸出端。在梯形圖中,功能框的en端是使能輸入端,功能框的使能輸入端必須存在“能流”,即與之相連的邏輯運(yùn)算結(jié)果為“1”(即en=“1”),才能執(zhí)行該功能框的功能。
在語(yǔ)句表程序中沒(méi)有en使能輸入端,但是執(zhí)行stl指令的條件是棧頂?shù)闹当仨毷恰?”。
在梯形圖中,功能框的eno端是使能輸出端,允許功能框的布爾量輸出,用于指令的級(jí)聯(lián)。
如果功能框使能輸入端(en)存在“能流”,且功能框準(zhǔn)確無(wú)誤地執(zhí)行了其功能,那么使能輸出端( eno)將把“能流”傳到下一個(gè)功能框,此時(shí),eno=“1”。如果執(zhí)行過(guò)程中存在錯(cuò)誤,那么“能流”就在出現(xiàn)錯(cuò)誤的功能框終止,即eno=“0”。
“使能”輸出端可以作為其他功能指令的“使能”端或用于驅(qū)動(dòng)線圈。當(dāng)“使能”輸出端作為其他功能指令的“使能”端時(shí),可以實(shí)現(xiàn)功能指令的“串聯(lián)”式控制,這一控制稱為功能指令的“級(jí)連”。
·連續(xù)執(zhí)行和脈沖執(zhí)行。功能框中以“en”表示的輸人為指令執(zhí)行的條件。在梯形圖中,en連接的為編程軟元件觸點(diǎn)的組合。從能流的角度出發(fā),當(dāng)觸點(diǎn)組合滿足能流達(dá)到功能框的條件時(shí),該功能框所表示的指令就得以執(zhí)行。需要說(shuō)明的是,當(dāng)功能框en前的執(zhí)行條件成立時(shí),該指令在每個(gè)掃描周期都會(huì)被執(zhí)行一次,這種執(zhí)行方式稱為連續(xù)執(zhí)行。而在很多場(chǎng)合希望某些功能框只執(zhí)行一次,即只在一個(gè)掃描周期中有效,這時(shí)可以用脈沖作為執(zhí)行條件,這種執(zhí)行方式稱為脈沖執(zhí)行。有些功能指令用連續(xù)執(zhí)行和脈沖執(zhí)行結(jié)果都一樣,但有些指令兩種執(zhí)行方式結(jié)果會(huì)大不一樣,如數(shù)據(jù)交換指令,原本是指兩個(gè)數(shù)據(jù)單元中的數(shù)據(jù)交換位置,如多次換位,就有可能換位和不換位是一樣的了。
因此,在編程時(shí)必須給功能框設(shè)定合適的執(zhí)行條件。
·條件輸入/無(wú)條件輸入。
條件輸入:在梯形圖中,與“能流”有關(guān)的功能框和線圈不直接與左母線連接。
無(wú)條件輸入:在梯形圖、功能塊圖中,與“能流”無(wú)關(guān)的功能框或線圈直接與左母線連接,如lbl、next、scr、scre等。
·無(wú)允許輸出端的指令。在梯形圖中,無(wú)使能輸出端(eno)的指令方框不能用于級(jí)聯(lián),如
call sbr_n( n1,…)子程序調(diào)用指令和lbl、scr等。
某些功能指令框右側(cè)設(shè)有eno使能輸出,它是lad功能框的布爾輸出,如果使能輸入en有能流并且指令被正常執(zhí)行,eno輸出會(huì)將能流傳遞給下一個(gè)元素;如果指令執(zhí)行出錯(cuò),則eno的輸出為0。
③數(shù)據(jù)輸入端和輸出端操作數(shù)類型及長(zhǎng)度。
數(shù)據(jù)輸入端:功能指令圖的in輸入端稱為功能指令的數(shù)據(jù)輸入端,用于指定功能指令的操作數(shù)。根據(jù)實(shí)際需要,操作數(shù)可以是單個(gè)或多個(gè)(分別以in1、in2表示)的常數(shù)、存儲(chǔ)器地址等。
結(jié)果輸出端:功能指令圖的out輸出端稱為功能指令的結(jié)果輸出端,用于指定功能指令的執(zhí)行結(jié)果存儲(chǔ)位置。
操作數(shù)是功能指令涉及或產(chǎn)生的數(shù)據(jù)。功能框及語(yǔ)句中用in及out表示的即為操作數(shù)。操作數(shù)又可分為源操作數(shù)、目標(biāo)操作數(shù)及其他操作數(shù)。源操作數(shù)是指令執(zhí)行后不改變其內(nèi)容的操作數(shù)。目標(biāo)操作數(shù)是指令執(zhí)行后將改變其內(nèi)容的操作數(shù)。從梯形圖符號(hào)來(lái)說(shuō),功能框左邊的操作數(shù)通常是源操作數(shù),功能框右邊的操作數(shù)為目標(biāo)操作數(shù),如加指令梯形圖符號(hào)中in1、in2為源操作數(shù),out為目標(biāo)操作數(shù)。有時(shí)源操作數(shù)及目標(biāo)操作數(shù)也可使用同一存儲(chǔ)單元。操作數(shù)中還有輔助操作數(shù),常用來(lái)對(duì)源操作數(shù)和目標(biāo)操作數(shù)做出補(bǔ)充說(shuō)明。
操作數(shù)的類型及長(zhǎng)度必須和指令相配合。s7系列plc的數(shù)據(jù)存儲(chǔ)單元有i、q、v、m、sm、s、l、ac等多種類型,長(zhǎng)度表達(dá)形式有字節(jié)(b)、字(w)、雙字(dw),需根據(jù)需要選用。各操作數(shù)適合的數(shù)據(jù)類型及長(zhǎng)度可在指令表說(shuō)明部分查閱。