吉林西門(mén)子S7-200SMART代理商(歡迎您)

西門(mén)子S7-300/400PLC邏輯控制指令
邏輯控制指令是指邏輯塊中的跳轉(zhuǎn)和循環(huán)指令。在沒(méi)有執(zhí)行跳轉(zhuǎn)和循環(huán)指令之前,各語(yǔ)句按先后順序執(zhí)行,這種執(zhí)行方式稱(chēng)為線性掃描。而邏輯控制指令終止了線性掃描,跳轉(zhuǎn)到地址標(biāo)號(hào)( Label)所的目的地址。然后,程序再次開(kāi)始線性掃描。需要注意的是:跳轉(zhuǎn)指令不執(zhí)行跳轉(zhuǎn)指令和標(biāo)號(hào)之間的程序;跳轉(zhuǎn)可以是從上至下,也可以反向;跳轉(zhuǎn)指令只能在同一邏輯塊內(nèi)跳轉(zhuǎn),而不能在不同邏輯塊之間跳轉(zhuǎn);在同一塊中,跳轉(zhuǎn)目的地址只能出現(xiàn)一次,否則,程序?qū)⒉恢谰烤雇睦锾D(zhuǎn)。
跳轉(zhuǎn)和循環(huán)指令的操作數(shù)是地址標(biāo)號(hào),標(biāo)號(hào)多有四個(gè)字符,*個(gè)字符必須是字母,其余的可以是字母或數(shù)字。由于標(biāo)號(hào)是指目的地址,所以又稱(chēng)為目的地址標(biāo)號(hào)。在語(yǔ)句表
中,目的標(biāo)號(hào)與目的指令之間用“:”分隔,而在梯形圖中目的地址標(biāo)號(hào)必須在一個(gè)網(wǎng)絡(luò)的開(kāi)始。
跳轉(zhuǎn)指令有幾種形式:無(wú)條件跳轉(zhuǎn)指令、多分支跳轉(zhuǎn)指令、與RLO和BR有關(guān)的跳轉(zhuǎn)指令、與信號(hào)狀態(tài)位有關(guān)的跳轉(zhuǎn)指令、與條件碼CCO和CC1有關(guān)的跳轉(zhuǎn)指令。
只能在同一邏輯塊內(nèi)跳轉(zhuǎn),即跳轉(zhuǎn)指令與對(duì)應(yīng)的跳轉(zhuǎn)目的地址應(yīng)在同一邏輯塊內(nèi)。在一個(gè)塊中,同一個(gè)跳轉(zhuǎn)目的地址只能出現(xiàn)一次。長(zhǎng)的跳轉(zhuǎn)距離為程序代碼中的-32768或+32767個(gè)字。實(shí)際可以跳轉(zhuǎn)的多語(yǔ)句條數(shù)與每條語(yǔ)句的長(zhǎng)度(1~3個(gè)字)有關(guān)。跳轉(zhuǎn)指令只能在FB、FC和OB內(nèi)部使用,即不能跳轉(zhuǎn)到別的FB、FC和OB中去。
1.無(wú)條件跳轉(zhuǎn)指令
無(wú)條件跳轉(zhuǎn)(Jump Unonditional)指令的格式為JU<跳轉(zhuǎn)標(biāo)號(hào)>,JU指令中斷程序的線性掃描,跳轉(zhuǎn)到標(biāo)號(hào)所在的目的地址,無(wú)條件跳轉(zhuǎn)與狀態(tài)字的內(nèi)容無(wú)關(guān)。
2.多分支跳轉(zhuǎn)指令
多分支跳轉(zhuǎn)指令JL (JumpVia Jump to List)必須與無(wú)條件跳轉(zhuǎn)指令JU -起使用,指令格式為JL<跳轉(zhuǎn)標(biāo)號(hào)>,多分支的路徑參數(shù)在累加器1中。跳步目標(biāo)表多255個(gè)入口通道,從JL指令的下一行開(kāi)始,在JL指令中的跳步標(biāo)號(hào)之前結(jié)束。每個(gè)跳步目標(biāo)由一條JU指令和一個(gè)標(biāo)號(hào)組成。跳步目標(biāo)號(hào)在累加器1的低字節(jié)ACCU 1一11中。
當(dāng)累加器1低字節(jié)ACCU l-LL中的跳步目標(biāo)號(hào)小于JL指令和它給出的標(biāo)號(hào)之間的JU指令的條數(shù)時(shí),執(zhí)行JL指令后將根據(jù)跳步目標(biāo)號(hào)跳到對(duì)應(yīng)的JU指令的標(biāo)號(hào)。ACCU1-LL=0時(shí)跳轉(zhuǎn)到*條JU指令的標(biāo)號(hào),ACCU l-LL=1時(shí)跳轉(zhuǎn)到第二條JU指令的標(biāo)號(hào)……如果跳步目標(biāo)號(hào)過(guò)大,JL指令將跳到跳步目標(biāo)表中后一條JU指令后面的*條指令。跳步目標(biāo)表必須由在JL指令中的跳步標(biāo)號(hào)之前的JU指令組成,其他任何指令都是非法的。
3.與RLO和BR有關(guān)的跳轉(zhuǎn)指令
這些指令檢查前一條指令執(zhí)行后RLO(邏輯運(yùn)算結(jié)果)和BR(二進(jìn)制結(jié)果位)的狀態(tài),滿足條件時(shí)則中斷程序的線性掃描,跳轉(zhuǎn)到標(biāo)號(hào)所在的目的地址,不滿足條件時(shí)不跳轉(zhuǎn)。
如果邏輯運(yùn)算結(jié)果RLO =1,跳轉(zhuǎn)指令JC將跳轉(zhuǎn)到標(biāo)號(hào)所在的目的地址。
如果邏輯運(yùn)算結(jié)果RLO=0,跳轉(zhuǎn)指令JCN將跳轉(zhuǎn)到標(biāo)號(hào)所在的目的地址。
如果邏輯運(yùn)算結(jié)果RLO =1,且BR=1,跳轉(zhuǎn)指令JCB將跳轉(zhuǎn)到標(biāo)號(hào)所在的目的地址。
如果邏輯運(yùn)算結(jié)果RLO=0,且BR=1,跳轉(zhuǎn)指令JNB將跳轉(zhuǎn)到標(biāo)號(hào)所在的目的地址。
4.與信號(hào)狀態(tài)位有關(guān)的跳轉(zhuǎn)指令
這些指令檢查前一條指令執(zhí)行后信號(hào)狀態(tài)位BR(二進(jìn)制結(jié)果位)、OV(溢出位)和OS(溢出狀態(tài)保持位)的狀態(tài),滿足條件時(shí)則中斷程序的線性掃描,跳轉(zhuǎn)到標(biāo)號(hào)所在的目的地址,不滿足條件時(shí)不跳轉(zhuǎn)。
如果BR=1,跳轉(zhuǎn)指令JBI將跳轉(zhuǎn)到標(biāo)號(hào)所在的目的地址。
如果BR=O,跳轉(zhuǎn)指令JNBI將跳轉(zhuǎn)到標(biāo)號(hào)所在的目的地址。
如果OV=1,跳轉(zhuǎn)指令JO將跳轉(zhuǎn)到標(biāo)號(hào)所在的目的地址。
如果OS=1,跳轉(zhuǎn)指令JOS將跳轉(zhuǎn)到標(biāo)號(hào)所在的目的地址。
5.與條件碼CCO和CCI有關(guān)的跳轉(zhuǎn)指令
這些指令根據(jù)前一條指令執(zhí)行后與運(yùn)算結(jié)果有關(guān)的條件碼CCO和CCI的狀態(tài),確定是否中斷程序的線性掃描,跳轉(zhuǎn)到標(biāo)號(hào)所在的目的地址。
如果運(yùn)算結(jié)果為0 (CCO=O,CCl=0),跳轉(zhuǎn)指令JZ將跳轉(zhuǎn)到標(biāo)號(hào)所在的目的地址。
如果運(yùn)算結(jié)果非0(CCl=O/CCO=1或CCl=1/CCO=O),跳轉(zhuǎn)指令JN將跳轉(zhuǎn)到標(biāo)號(hào)所在的目的地址。
如果運(yùn)算結(jié)果為正(CCl=1與CCO =0),跳轉(zhuǎn)指令JP將跳轉(zhuǎn)到標(biāo)號(hào)所在的目的地址。
如果運(yùn)算結(jié)果為負(fù)(CCl=0與CCO=1),跳轉(zhuǎn)指令JM將跳轉(zhuǎn)到標(biāo)號(hào)所在的目的地址。
如果運(yùn)算結(jié)果大于等于0(CCl=O/CCO=O或CCl=1/CCO=O),跳轉(zhuǎn)指令JPZ將跳轉(zhuǎn)到標(biāo)號(hào)所在的目的地址。
如果運(yùn)算結(jié)果小于等于0(CCl=O/CCO=O或CCl=1/CCO=O),跳轉(zhuǎn)指令JMZ將跳轉(zhuǎn)到標(biāo)號(hào)所在的目的地址。
如果CCO =CCl=1,表示指令出錯(cuò)(除數(shù)為0;使用了非法的指令;浮點(diǎn)數(shù)比較時(shí)使用了非法的格式),跳轉(zhuǎn)指令JUO將跳轉(zhuǎn)到標(biāo)號(hào)所在的目的地址。
6.梯形圖中的跳轉(zhuǎn)指令
梯形圖中有3條用線圈表示的跳轉(zhuǎn)指令,如圖3-59所示。無(wú)條件跳轉(zhuǎn)(UnconditionalJump)指令與條件跳轉(zhuǎn)(Conditional Jump)指令的助記符均為JMP (Jump),其區(qū)別在于跳轉(zhuǎn)指令是否受觸點(diǎn)電路的控制。
無(wú)條件跳轉(zhuǎn)指令直接與右邊的垂直電源線相連,執(zhí)行無(wú)條件跳轉(zhuǎn)指令后馬上跳轉(zhuǎn)到指令給出的標(biāo)號(hào)處。
條件跳轉(zhuǎn)指令的線圈受觸點(diǎn)電路的控制,它前面的邏輯運(yùn)算結(jié)果RLO=1時(shí),跳轉(zhuǎn)線圈“通電”,跳轉(zhuǎn)到指令給出的標(biāo)號(hào)處。
JMPN (Jump-If-Not)指令在它右邊的電路斷開(kāi)(RLO=O)時(shí)跳轉(zhuǎn),如圖3-60所示。
圖3-59 條件跳轉(zhuǎn)指令
圖3-60 JMPN跳轉(zhuǎn)指令
標(biāo)號(hào)用于指示跳轉(zhuǎn)指令的目的地址,它多由4個(gè)字符組成,*個(gè)字符必須是字母或下畫(huà)線。標(biāo)號(hào)必須放在一個(gè)網(wǎng)絡(luò)開(kāi)始的地方??梢韵蚯疤部梢韵蚝筇?。雙擊梯形圖編輯器右邊的指令測(cè)覽器窗口中的“Jumps”文件夾中的“LABEL”圖標(biāo),一個(gè)空的標(biāo)號(hào)框?qū)⒊霈F(xiàn)在梯形圖編輯區(qū)光標(biāo)所在的地方。也可以用鼠標(biāo)左鍵按住LABEL圖標(biāo),將它“拖”到梯形圖中。
在PLC的應(yīng)用中經(jīng)常用到移位指令,在STEP 7中的移位指令,包括有符號(hào)整數(shù)和長(zhǎng)整數(shù)的右移指令、無(wú)符號(hào)字型數(shù)據(jù)的左移和右移指令、無(wú)符號(hào)雙字型數(shù)據(jù)的左移和右移指令、雙字的循環(huán)左移和循環(huán)右移指令。
移位指令是將累加器1中的數(shù)據(jù)或者累加器1低字中的數(shù)據(jù)逐位左移或逐位右移。左移相當(dāng)于累加器的內(nèi)容乘以2“,右移相當(dāng)于累加器的內(nèi)容除以2n(n為的移動(dòng)位數(shù)或移位次數(shù))。
累加器1中移位后空出的位填0或符號(hào)位。被移動(dòng)的后1位保存在狀態(tài)字的CC1中,可使用條件跳轉(zhuǎn)指令對(duì)CC1進(jìn)行判斷,CCO和OV被復(fù)位到0。
循環(huán)移位指令的特點(diǎn)是移出的空位填以從累加器中移出的位。移位和循環(huán)移位指令的操作數(shù)及功能說(shuō)明如表3-35所示。
圖3-54所示為字的左移(6位)指令,圖3-55所示為雙字的右移(3位)指令。
圖3-54字的左移(6位)指令
圖3-55雙字的右移(3位)指令
雙字左移指令的具體應(yīng)用如圖3-56所示。
圖3-56雙字左移指令的應(yīng)用
圖3-56中,當(dāng)10.0接通時(shí),雙字左移指令開(kāi)始工作,將MD10中的內(nèi)容左移4位,并將結(jié)果存入MD20中,如果移位指令執(zhí)行,則輸出Q4.0為“1”。
實(shí)現(xiàn)上述相同功能的語(yǔ)句表程序?yàn)椋?/span>
循環(huán)移位指令只能對(duì)雙字進(jìn)行操作,移位范圍為0~31,如果移位大于32,高位移出的位信號(hào)插入到低位移空的位中,例如將一個(gè)雙字循環(huán)左移3位,移位前后位排列次序如圖3-57所示。
圖3-57循環(huán)移位示意圖
STL編程語(yǔ)言中,RLDA與RRDA指令對(duì)雙字進(jìn)行循環(huán)移位操作,每次觸發(fā)時(shí)循環(huán)左移、右移一位,將狀態(tài)字中CC1的信號(hào)插入移空的位上。如果移出的位信號(hào)為1,置位狀態(tài)字中CC1位,可以觸發(fā)JP程序跳轉(zhuǎn)指令進(jìn)行邏輯判斷。
吉林西門(mén)子S7-200SMART代理商(歡迎您)