版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
可編程序控制器主講:張波第四章S7-200編程語言及指令系統(tǒng)4.1編程語言與指令操作數(shù)范圍4.2基本指令4.3程序控制指令4.4數(shù)學(xué)運(yùn)算指令4.5數(shù)據(jù)操作指令4.6PID指令4.7其他操作指令4.1編程語言與指令操作數(shù)范圍4.1.1編程語言梯形圖(LAD)語句表(STL)功能塊圖(FBD)
1、梯形圖(圖形語言)適用:開關(guān)量和邏輯控制設(shè)計(jì)思想:讓CPU模仿電源的電流通過一系列邏輯控制條件,并根據(jù)結(jié)構(gòu)產(chǎn)生邏輯輸出。邏輯控制條件按其控制功能分解成多個(gè)“梯級”,構(gòu)成梯形圖。執(zhí)行程序時(shí),從左到右,從上到下逐級執(zhí)行,執(zhí)行到程序結(jié)尾,再從上至下反復(fù)循環(huán)。梯形圖組成:左右兩條垂直線:左母線、右母線。常開觸點(diǎn)、常閉觸點(diǎn):代表邏輯“輸入”條件,如:開關(guān)、按鈕、內(nèi)部軟元件等。輸出線圈:代表邏輯“輸出”結(jié)果,如:電機(jī)啟動(dòng)器、電磁閥、軟元件、繼電器。方框:代表附加指令,如:定時(shí)器、計(jì)數(shù)器、數(shù)學(xué)運(yùn)算指令等。梯形圖編程就是用軟繼電器線圈的吸、放和觸點(diǎn)的通、斷實(shí)現(xiàn)各種實(shí)際控制系統(tǒng)。左母線右母線AB(M)(Q)INTONPT100T33CD注:-通常括號(hào)(輸出驅(qū)動(dòng)線圈)右邊的部分在梯形圖中不畫出。觸點(diǎn)在水平線上若是互相串聯(lián),則相當(dāng)于邏輯與(AND)若相鄰的水平線用一條垂直線連接起來形成并聯(lián),相當(dāng)于邏輯或(OR)能流:假想在梯形圖中有“電流”流動(dòng),這個(gè)“電流”稱為“能流”?!澳芰鳌敝荒軉畏较蛄鲃?dòng),不可逆。即從上至下、從左到右。梯形圖左邊的母線即為“能流”源,并能沿著“梯級”線從左到右驅(qū)動(dòng)最右邊的輸出線圈。如果這個(gè)“能流”能暢通無阻地到達(dá)最右邊,則輸出線圈被驅(qū)動(dòng);否則,輸出線圈不被驅(qū)動(dòng)。2.語句表語句表是由各種指令組成的語言程序。使用NETWORK對程序分段??梢詫?shí)現(xiàn)某些不能用梯形圖或功能塊圖實(shí)現(xiàn)的功能。(1)指令指令是構(gòu)成語句表的元素,由一個(gè)或幾個(gè)容易記憶的字符來表示。每一條指令帶上必要的符號(hào)和參數(shù)就形成一個(gè)語句,可完成一特點(diǎn)功能。程序執(zhí)行時(shí),按從上到下的順序逐條執(zhí)行。(2)梯形圖轉(zhuǎn)換成語句表規(guī)則梯形圖中的線圈、觸點(diǎn)、方塊等符號(hào),在語句表中有具體的指令與其對應(yīng)。利用PLC基本指令對梯形圖編程時(shí),務(wù)必按從上到下、從左到右的原則進(jìn)行。為了減少程序步驟,要優(yōu)化編程順序,其原則是串聯(lián)多的電路放在上面,并聯(lián)多的電路盡量靠近左母線。對于不符合編程要求的梯形圖控制電路必須重新編排,以便于正確使用PLC指令進(jìn)行語句表編程。I0.0I0.1()()I0.2I0.3NETWORK1LDI0.0AI0.1=M0.0NETWORK2LDI0.2ONI0.3=Q0.0M0.0Q0.03、功能塊圖采用半導(dǎo)體邏輯電路方塊圖。每一種功能使用一個(gè)運(yùn)算方塊,其運(yùn)算功能由方塊內(nèi)的符號(hào)表示。功能塊圖編輯器沒有梯形圖中的線圈和觸點(diǎn),但有與之等價(jià)的指令。4、指令操作數(shù)范圍(P65表4.1)I2.1V50.0ANDT33INTonPT1004.1.3梯形圖設(shè)計(jì)規(guī)則梯形圖沒有實(shí)際的電流流動(dòng),被假設(shè)的“能流”實(shí)際是控制系統(tǒng)的信號(hào)流,它只能單方向流動(dòng),不能產(chǎn)生反流。即梯形圖必須符合從上至下、從左到右的執(zhí)行原則,否則不能直接編程。梯形圖中的觸點(diǎn)應(yīng)畫在水平線上,不能畫在垂直線上。c錯(cuò)誤正確不包含觸點(diǎn)的分支應(yīng)放在垂直方向上,不能放在水平方向上,以便識(shí)別觸點(diǎn)的組合和對輸出線圈的控制路徑。錯(cuò)誤正確梯形圖每一“梯級”都是從左邊母線開始,輸出線圈接在右邊母線上,所有觸點(diǎn)不能畫在輸出線圈的右邊。輸出線圈不能直接連接在左母線上,若必須的話,則可通過插入常閉觸點(diǎn)將線圈連于左母線上。錯(cuò)誤正確若幾個(gè)并聯(lián)回路串聯(lián),應(yīng)將觸點(diǎn)最多的回路放在梯形圖的最左面;若幾個(gè)串聯(lián)回路并聯(lián),應(yīng)將觸點(diǎn)最多的回路放在梯形圖的最上面。錯(cuò)誤正確4.2基本指令
4.2.1邏輯位標(biāo)準(zhǔn)操作指令1、邏輯取、線圈驅(qū)動(dòng)指令LD、LDN和=LD指令用于常開觸點(diǎn)邏輯運(yùn)算開始。LDN指令用于常閉觸點(diǎn)邏輯運(yùn)算開始?!埃健保∣UT)線圈驅(qū)動(dòng)指令,使該線圈所代表的軟元件的觸點(diǎn)閉合或斷開。網(wǎng)絡(luò)2LDNI0.1=M0.0=Q0.0網(wǎng)絡(luò)1LDI0.0=Q0.0幾點(diǎn)說明LD、LDN用于將左母線與觸點(diǎn)相連;也可以與其他指令配合,用于其他分支回路的開始?!埃健敝噶钣糜隍?qū)動(dòng)輸出繼電器、輔助繼電器、特殊功能寄存器、定時(shí)器及計(jì)數(shù)器等,但不能用于驅(qū)動(dòng)輸入繼電器。并聯(lián)的“=”指令可以連續(xù)使用任意次。LD、LDN的操作數(shù)為I、Q、M、SM、T、C、V、S、L“=”的操作數(shù)為Q、M、SM、T、C、V、S、L2、邏輯與操作指令A(yù)、AN在梯形圖中,如果有串聯(lián)觸點(diǎn),要用邏輯與指令對其編程。若串聯(lián)的觸點(diǎn)是常開觸點(diǎn),則使用與指令A(yù);若串聯(lián)的觸點(diǎn)是常閉觸點(diǎn),則使用與非指令A(yù)N。幾點(diǎn)說明A、AN指令是單個(gè)觸點(diǎn)串聯(lián)連接指令,可連續(xù)使用。若串聯(lián)一個(gè)由多觸點(diǎn)并聯(lián)的回路,則不能用A、AN指令,需采用邏輯塊與指令A(yù)LD。并聯(lián)的“=”指令可以連續(xù)使用任意次。A、AN指令的操作數(shù)為I、Q、M、SM、T、C、V、S、L3、邏輯或操作指令O、ON在梯形圖中,如果有單個(gè)觸點(diǎn)并聯(lián),要用邏輯或指令對其編程。若并聯(lián)的觸點(diǎn)是常開觸點(diǎn),則使用或指令O;若并聯(lián)的觸點(diǎn)是常閉觸點(diǎn),則使用或非指令ON。幾點(diǎn)說明O、ON指令是單個(gè)觸點(diǎn)并聯(lián)連接指令,一般緊跟在LD、LDN等指令后。即對其前面LD、LDN指令所指定的觸點(diǎn)再并聯(lián)一個(gè)觸點(diǎn),并聯(lián)的次數(shù)可以是無限次。若并聯(lián)兩個(gè)以上觸點(diǎn)的串聯(lián)回路,則不能用O、ON指令,需采用邏輯塊或指令OLD。O、ON指令的操作數(shù)為I、Q、M、SM、T、C、V、S、L4、塊操作指令A(yù)LD、OLD有兩個(gè)或兩個(gè)以上串聯(lián)觸點(diǎn)的控制電路稱為串聯(lián)電路塊。有兩個(gè)或兩個(gè)以上并聯(lián)觸點(diǎn)的控制電路稱為并聯(lián)電路塊。在梯形圖中,若有兩個(gè)以上的并聯(lián)塊觸點(diǎn)串聯(lián),則用塊與指令A(yù)LD。若有兩個(gè)以上的串聯(lián)塊觸點(diǎn)并聯(lián),則用塊或指令OLD幾點(diǎn)說明幾個(gè)串、并聯(lián)支路進(jìn)行并聯(lián)或串聯(lián)連接時(shí),其支路的起點(diǎn)以LD、LDN開始,支路終點(diǎn)用OLD、ALD指令。如需將多個(gè)支路并聯(lián)或串聯(lián),則從第二條支路開始,在每一條支路后面加OLD指令或ALD支路。對串、并聯(lián)支路的個(gè)數(shù)沒有限制。OLD、ALD支路均無操作數(shù)。5、置位指令S和復(fù)位指令R執(zhí)行S、R指令時(shí),從bit或out指定的地址參數(shù)開始的N個(gè)點(diǎn)都被置位或復(fù)位。N可以是1~255。當(dāng)用復(fù)位指令時(shí),如果bit或out指定的是T位或C位,則定時(shí)器或計(jì)數(shù)器被復(fù)位的同時(shí)當(dāng)前值將被清零。被置位的位一旦為1后,在執(zhí)行復(fù)位指令前不會(huì)改變?yōu)?,即置位指令具有鎖存功能。輸入/輸出操作數(shù)數(shù)據(jù)類型位I,Q,M,SM,T,C,V,S,LBOOLNVB,IB,QB,MB,SMB,SB,LB,AC,常數(shù),*VD,*AC,*LDBYTE6、脈沖生成指令EU、ED用于檢測開關(guān)量狀態(tài)的變化以及配合功能指令完成一些邏輯控制。當(dāng)對應(yīng)EU指令前的邏輯運(yùn)算結(jié)果有一個(gè)上升沿跳變時(shí),EU指令讓能流接通一個(gè)掃描周期,即產(chǎn)生一個(gè)寬度為一個(gè)掃描周期的脈沖,驅(qū)動(dòng)其后面的輸出線圈。當(dāng)對應(yīng)ED指令前的邏輯運(yùn)算結(jié)果有一個(gè)下降沿跳變時(shí),ED指令讓能流接通一個(gè)掃描周期,即產(chǎn)生一個(gè)寬度為一個(gè)掃描周期的脈沖,驅(qū)動(dòng)其后面的輸出線圈。對應(yīng)的梯形圖EU、EDPNEU上升沿跳變ED下降沿跳變I0.0M0.0I0.1M0.1Q0.0一個(gè)掃描周期一個(gè)掃描周期7、邏輯取反NOT和空操作NOP指令NOT指令是邏輯取反指令,它可改變能流狀態(tài),能流達(dá)到取反觸點(diǎn)時(shí)則停止,能流未達(dá)到取反觸點(diǎn)時(shí)則通過。NOT指令無操作數(shù)。NOP為空操作指令,它的使用對程序不產(chǎn)生任何影響,用于調(diào)試及修改程序,也可用于短暫的延時(shí)。NOP指令的操作數(shù)N是一個(gè)0-255的常數(shù),表示要進(jìn)行的空操作的次數(shù)。8、邏輯堆棧指令S7-200系列PLC中有一個(gè)9層的堆棧,用于處理所有邏輯操作,稱為邏輯堆棧。有6條邏輯操作指令要用到邏輯堆棧。在語句表(STL)中,常開觸點(diǎn)由LD(裝載)、A(與)及O(或)指令描述,LD將位bit值裝入棧頂,A、O分別將位bit值與、或棧頂值,運(yùn)算結(jié)果仍存入棧頂。在語句表中,常閉觸點(diǎn)由LDN(非裝載)、AN(非與)、和ON(非或)指令描述,LDN將位bit值取反后再裝入棧頂,AN、ON先將位bit值取反,再分別與、或棧頂值,其運(yùn)算結(jié)果仍存入棧頂。ALD和OLD指令操作時(shí)利用堆棧作為中間結(jié)果的暫存區(qū)。ALD指令對堆棧中的第一層和第二層的值進(jìn)行邏輯與操作,結(jié)果放入棧頂。執(zhí)行完后堆棧深度減1。操作數(shù):無OLD指令對堆棧中的第一層和第二層的值進(jìn)行邏輯或操作,結(jié)果放入棧頂。執(zhí)行完后堆棧深度減1。操作數(shù):無棧頂值復(fù)制指令第2級棧頂值復(fù)制指令LPS指令復(fù)制棧頂?shù)闹挡⑦@個(gè)值推入棧,棧底的值被推出并丟失。操作數(shù):無LRD指令復(fù)制堆棧中的第二個(gè)值到棧頂,堆棧沒有推入或彈出棧操作,但舊的棧頂值被新的復(fù)制值取代。操作數(shù):無棧頂彈出指令n級堆棧值復(fù)制指令LPP指令彈出棧頂?shù)闹?,堆棧的第二個(gè)值成為新的棧頂值,其他堆棧值依次被向上推移一級。該指令使原堆棧頂值彈出后丟失,最底層成為不確定值。操作數(shù):無LDS指令復(fù)制堆棧中的第n個(gè)值到棧頂,原有的堆棧值依次被向下推移一級,原堆棧底層值被壓出而丟失。操作數(shù):n(1~8的立即數(shù))4.2.2邏輯位立即操作指令(1)立即觸點(diǎn)指令在每個(gè)標(biāo)準(zhǔn)觸點(diǎn)指令的后面加“I”。指令執(zhí)行時(shí),立即讀取物理輸入點(diǎn)的值,但是不刷新對應(yīng)映像寄存器的值。這類指令包括:LDI、LDNI、AI、ANI、OI和ONI。下面以LDI指令為例。用法: LDI bit例: LDI I0.2注意:bit只能是I類型。LDI指令把物理輸入點(diǎn)的值立即裝入棧頂。AI和OI指令分別將物理輸入點(diǎn)的值與堆棧頂值進(jìn)行與和或,運(yùn)算結(jié)果仍放于棧頂。LDNI指令把物理輸入點(diǎn)的值取反后立即裝入棧頂。ANI和ONI指令分別將物理輸入點(diǎn)的值取反與堆棧頂值進(jìn)行與和或,運(yùn)算結(jié)果仍放于棧頂。(2)=I,立即輸出指令用立即指令訪問輸出點(diǎn)時(shí),把棧頂值立即復(fù)制到指令所指出的物理輸出點(diǎn),同時(shí),相應(yīng)的輸出映像寄存器的內(nèi)容也被刷新。用法: =I bit例: =I Q0.2注意:bit只能是Q類型。(3)SI,立即置位指令用立即置位指令訪問輸出點(diǎn)時(shí),從指令所指出的位(bit)開始的N個(gè)(最多為128個(gè))物理輸出點(diǎn)被立即置位,同時(shí),相應(yīng)的輸出映像寄存器的內(nèi)容也被刷新。用法: SI bit, N例:SI Q0.0, 2注意:bit只能是Q類型。(4)RI,立即復(fù)位指令用立即復(fù)位指令訪問輸出點(diǎn)時(shí),從指令所指出的位開始的N個(gè)(最多為128個(gè))物理輸出點(diǎn)被立即復(fù)位,同時(shí),相應(yīng)的輸出映像寄存器的內(nèi)容也被刷新。用法: RI bit, N例:RI Q0.0, 14.2.3定時(shí)器指令S7-200系列PLC內(nèi)部有256個(gè)定時(shí)器。按功能分為3類:接通延時(shí)定時(shí)器TON、斷開延時(shí)定時(shí)器TOF和有記憶接通延時(shí)定時(shí)器TONR。按定時(shí)器的分辨率分為3個(gè)等級:1ms、10ms和100ms。每個(gè)定時(shí)器由一個(gè)16位寄存器和1個(gè)狀態(tài)位(反映其觸點(diǎn)狀態(tài))構(gòu)成。定時(shí)器編號(hào)和分辨率TXXX:定時(shí)器編號(hào)PT(INT)預(yù)置常數(shù):VW、IW、QW、MW、SMW、LW、AIW、AC、T、CIN(BOOL)使能輸入:I、Q、M、SM、T、C、V、S、L1、定時(shí)器工作工程接通延時(shí)定時(shí)器TON,接通延時(shí)定時(shí)器指令。用于單次時(shí)間定時(shí)。上電時(shí)或首次掃描,該定時(shí)器的狀態(tài)位T和寄存器內(nèi)容被清0。當(dāng)使能輸入接通時(shí),定時(shí)器狀態(tài)位為OFF,當(dāng)前值從0開始計(jì)時(shí),當(dāng)前值達(dá)到預(yù)設(shè)值時(shí),定時(shí)器狀態(tài)位為ON,繼續(xù)計(jì)時(shí),一直計(jì)到最大值32767。當(dāng)使能輸入斷開,定時(shí)器自動(dòng)復(fù)位,即定時(shí)器狀態(tài)位為OFF,當(dāng)前值為0。指令格式: TON Txxx,PT例: TON T120,8I0.0T33當(dāng)前值T33狀態(tài)位Q0.0=PT(100)=PT(100)有記憶接通延時(shí)定時(shí)器TONR,有記憶接通延時(shí)定時(shí)器指令。用于多次時(shí)間間隔累計(jì)定時(shí)。上電時(shí)或首次掃描,定時(shí)器狀態(tài)位被清零,寄存器內(nèi)容保持為上次停機(jī)時(shí)的值。當(dāng)使能輸入接通時(shí),定時(shí)器狀態(tài)位為OFF,當(dāng)前值從上次數(shù)值基礎(chǔ)上開始計(jì)時(shí)。當(dāng)前值大于等于預(yù)設(shè)值時(shí),狀態(tài)位被置為1,當(dāng)前值連續(xù)計(jì)到32767。TONR定時(shí)器只能用復(fù)位指令進(jìn)行復(fù)位操作。指令格式:TONR Txxx,PT
例:TONR T20,63I0.0T3當(dāng)前值T3狀態(tài)位Q0.0=PT(100)=PT(200)最大值=32767I0.1斷開延時(shí)定時(shí)器TOF,斷開延時(shí)定時(shí)器指令。上電時(shí)或首次掃描,定時(shí)器狀態(tài)位為OFF,當(dāng)前值為0。當(dāng)使能輸入接通時(shí),定時(shí)器狀態(tài)位立即接通被置為ON,并將當(dāng)前值清0。當(dāng)使能輸入由接通到斷開時(shí),定時(shí)器開始計(jì)時(shí),當(dāng)前值達(dá)到預(yù)設(shè)值時(shí),定時(shí)器狀態(tài)位被清零,當(dāng)前值等于預(yù)設(shè)值,停止計(jì)時(shí)。TOF復(fù)位后,如果使能輸入再有從ON到OFF的負(fù)跳變,則可實(shí)現(xiàn)再次啟動(dòng)。指令格式:TOF Txxx,PT例: TOF T35,6I0.0T33當(dāng)前值T33狀態(tài)位Q0.01001002、定時(shí)器的分辨率定時(shí)原理:對內(nèi)部時(shí)基脈沖進(jìn)行計(jì)數(shù)。S7-200PLC提供給定時(shí)器的時(shí)基脈沖有1ms、10ms、100ms三種。定時(shí)器的分辨率為1ms、10ms、100ms。定時(shí)器的分辨率不同,刷新方法也不同。1ms分辨率
系統(tǒng)每隔1ms刷新一次,狀態(tài)位和當(dāng)前值在一個(gè)掃描周期內(nèi)可能被多次刷新。10ms分辨率在每次掃描周期的開始時(shí)自動(dòng)刷新,狀態(tài)位和當(dāng)前值在一個(gè)周期內(nèi)只改變一次100ms分辨率只有定時(shí)器指令執(zhí)行過程中被啟動(dòng)后才能在每個(gè)掃描周期開始時(shí)被刷新。1ms定時(shí)器的使用方法在修改之前,只有當(dāng)該定時(shí)器的當(dāng)前值更新發(fā)生在常閉觸點(diǎn)T32執(zhí)行以后及常開觸點(diǎn)T32執(zhí)行以前Q0.0才能被置位一個(gè)掃描周期,其他情況不能置位。10ms定時(shí)器的使用方法在修改以前,Q0.0將不會(huì)被置位,因?yàn)槎〞r(shí)位T33只能在每次掃描開始被置位。往后,執(zhí)行定時(shí)指令時(shí),定時(shí)器將被復(fù)位。當(dāng)常開觸點(diǎn)T33被執(zhí)行,因?yàn)門33為OFF,所以Q0.0也為OFF,即Q0.0永不會(huì)被置位。100ms定時(shí)器的使用方法在修改前,只有當(dāng)定時(shí)器當(dāng)前值達(dá)到預(yù)置值時(shí),Q0.0會(huì)被置位一個(gè)掃描周期。用常閉觸點(diǎn)Q0.0代替常閉觸點(diǎn)T32作為定時(shí)器的允許計(jì)時(shí)輸入,這就保證當(dāng)定時(shí)器達(dá)到預(yù)置時(shí),Q0.0會(huì)置位一個(gè)掃描周期。4.2.4計(jì)數(shù)器指令S7-200PLC內(nèi)部有256個(gè)計(jì)數(shù)器C0-C255。按計(jì)數(shù)方式不同分為加計(jì)數(shù)(CTU)、減計(jì)數(shù)(CTD)、加/減計(jì)數(shù)(CTUD)。每個(gè)計(jì)數(shù)器有16位寄存器和一個(gè)狀態(tài)位(反映其觸點(diǎn)狀態(tài))即C位構(gòu)成。計(jì)數(shù)范圍為0-32767。Cxxx(WORD):計(jì)數(shù)器編號(hào)。CU(加計(jì)數(shù)輸入端)、CD(減計(jì)數(shù)輸入端)、LD(裝載復(fù)位端)、R(復(fù)位輸入端)(BOOL)使能輸入。PV(INT)預(yù)設(shè)常值:VW、IW、QW、MW、SMW、LW、AIW、AC、T、C、常數(shù)、SW、*VD、*AC、*LD。加計(jì)數(shù)器CTU,加計(jì)數(shù)器指令。首次掃描,定時(shí)器狀態(tài)位為0,當(dāng)前值為0。脈沖輸入的每個(gè)上升沿,計(jì)數(shù)器計(jì)數(shù)1次,當(dāng)前值增加1個(gè)單位,當(dāng)前值達(dá)到預(yù)設(shè)值時(shí),計(jì)數(shù)器狀態(tài)位為1,當(dāng)前值繼續(xù)計(jì)數(shù)到32767停止計(jì)數(shù)。復(fù)位輸入有效或執(zhí)行復(fù)位指令,計(jì)數(shù)器自動(dòng)復(fù)位,即計(jì)數(shù)器狀態(tài)位和當(dāng)前值清零。指令格式:CTU Cxxx,PV例: CTU C20,3減計(jì)數(shù)器CTD,增減計(jì)數(shù)器指令。脈沖輸入端CD用于遞減計(jì)數(shù)。首次掃描,定時(shí)器狀態(tài)位為0,當(dāng)前值為等于預(yù)設(shè)值PV。計(jì)數(shù)器檢測到CD輸入的每個(gè)上升沿時(shí),計(jì)數(shù)器當(dāng)前值減小1個(gè)單位,當(dāng)前值減到0時(shí),計(jì)數(shù)器狀態(tài)位為1。復(fù)位輸入有效或執(zhí)行復(fù)位指令,計(jì)數(shù)器自動(dòng)復(fù)位,即計(jì)數(shù)器狀態(tài)位為0,當(dāng)前值復(fù)位為預(yù)設(shè)值,而不是0。指令格式:CTD Cxxx,PV例: CTD C40,4增減計(jì)數(shù)器CTUD,增減計(jì)數(shù)器指令。有兩個(gè)脈沖輸入端:CU輸入端用于遞增計(jì)數(shù),CD輸入端用于遞減計(jì)數(shù)。當(dāng)加計(jì)數(shù)輸入端有上升沿輸入時(shí),計(jì)數(shù)器當(dāng)前值加1;當(dāng)減計(jì)數(shù)輸入端有上升沿輸入時(shí),計(jì)數(shù)器從預(yù)設(shè)的當(dāng)前值中1。當(dāng)計(jì)數(shù)器當(dāng)前值大于或等于預(yù)設(shè)值(PV)時(shí),該計(jì)數(shù)器狀態(tài)位置為1。當(dāng)復(fù)位輸入端R被置位時(shí),計(jì)數(shù)器復(fù)位,當(dāng)前值和狀態(tài)位被清零。指令格式:CTUD Cxxx,PV例: CTUD C30,54.2.5比較指令1.字節(jié)比較字節(jié)比較用于比較兩個(gè)字節(jié)型整數(shù)值IN1和IN2的大小,字節(jié)比較是無符號(hào)的。比較式可以是LDB、AB或OB后直接加比較運(yùn)算符構(gòu)成。如:LDB=、AB<>、OB>=等。整數(shù)IN1和IN2的尋址范圍:VB、IB、QB、MB、SB、SMB、LB、*VD、*AC、*LD和常數(shù)。指令格式例:LDB= VB10, VB12AB<> MB0, MB1OB<= AC1, 116在梯形圖中,當(dāng)比較式為真時(shí),該觸點(diǎn)閉合在語句表中,當(dāng)比較式為真時(shí),將棧頂置14.2.5比較指令2.整數(shù)比較整數(shù)比較用于比較兩個(gè)一字長整數(shù)值IN1和IN2的大小,整數(shù)比較是有符號(hào)的(整數(shù)范圍為16#8000和16#7FFF之間)。比較式可以是LDW、AW或OW后直接加比較運(yùn)算符構(gòu)成。如:LDW=、AW<>、OW>=等。整數(shù)IN1和IN2的尋址范圍:VW、IW、QW、MW、SW、SMW、LW、AIW、T、C、AC、*VD、*AC、*LD和常數(shù)。指令格式例:LDW= VW10, VW12AW<> MW0, MW4OW<= AC2, 1160在梯形圖中,當(dāng)比較式為真時(shí),該觸點(diǎn)閉合在語句表中,當(dāng)比較式為真時(shí),將棧頂置13.雙字整數(shù)比較雙字整數(shù)比較用于比較兩個(gè)雙字長整數(shù)值IN1和IN2的大小,雙字整數(shù)比較是有符號(hào)的(雙字整數(shù)范圍為16#80000000和16#7FFFFFFF之間)。指令格式例:LDD= VD10, VD14AD<> MD0, MD8OD<= AC0, 1160000LDD>= HC0, *AC0在梯形圖中,當(dāng)比較式為真時(shí),該觸點(diǎn)閉合在語句表中,當(dāng)比較式為真時(shí),將棧頂置14.實(shí)數(shù)比較實(shí)數(shù)比較用于比較兩個(gè)雙字長實(shí)數(shù)值IN1和IN2的大小,實(shí)數(shù)比較是有符號(hào)的(負(fù)實(shí)數(shù)范圍為-1.175495E-38和-3.402823E+38,正實(shí)數(shù)范圍為+1.175495E-38和+3.402823E+38)。比較式可以是LDR、AR或OR后直接加比較運(yùn)算符構(gòu)成。指令格式例:LDR= VD10, VD18AR<> MD0, MD12OR<= AC1, 1160.478AR> *AC1, VD100在梯形圖中,當(dāng)比較式為真時(shí),該觸點(diǎn)閉合在語句表中,當(dāng)比較式為真時(shí),將棧頂置14.2.6基本指令的編程實(shí)例1、輸出自鎖2、輸入優(yōu)先
輸入信號(hào)A和輸入信號(hào)B先到者取得優(yōu)先權(quán)的梯形圖程序。3、輸入判斷對輸入信號(hào)A和輸入信號(hào)B的狀態(tài)進(jìn)行判斷,并給予相對指示的梯形圖程序。4、信號(hào)分頻I0.0(Q0.0)I0.1Q0.1Q0.2TI0.0(Q0.0)Q0.3Q0.1Q0.2T5、擴(kuò)展定時(shí)I0.0T37T38Q0.05S3S8S6、延時(shí)接通/斷開1S3SI0.0Q0.07、閃光電路Q0.0I0.0T37T381S3S3S4.3S7-200PLC的程序控制指令
4.3.1跳轉(zhuǎn)、標(biāo)號(hào)指令程序控制指令控制程序轉(zhuǎn)向和停止執(zhí)行。1.跳轉(zhuǎn)指令JMP,跳轉(zhuǎn)指令。使能輸入有效時(shí),使程序流程跳到同一程序中的指定標(biāo)號(hào)n處執(zhí)行。n由標(biāo)號(hào)指令LBL說明,n的取值范圍為0-255。JMP和LBL必須成對使用。執(zhí)行跳轉(zhuǎn)指令后,邏輯堆棧的棧頂值總是1。2.標(biāo)號(hào)指令LBL,標(biāo)號(hào)指令。標(biāo)記程序段,作為跳轉(zhuǎn)指令執(zhí)行時(shí)跳轉(zhuǎn)到的目的位置。操作數(shù)n為0-255的字型數(shù)據(jù)。程序?qū)嵗?/p>
如右圖所示。用增減計(jì)數(shù)器進(jìn)行計(jì)數(shù),如果當(dāng)前值小于500,則程序按原順序執(zhí)行,若當(dāng)前值超過500,則跳轉(zhuǎn)到從標(biāo)號(hào)10開始的程序執(zhí)行。4.3.2子程序調(diào)用、子程序入口和返回指令CALL子程序調(diào)用指令。將主程序轉(zhuǎn)到子程序(n)的入口處去執(zhí)行子程序。SBR子程序入口指令。該指令確定n號(hào)子程序的開始位置。CRET子程序條件返回指令。當(dāng)條件成立時(shí),該指令結(jié)束子程序(n),返回主程序調(diào)用處。RET子程序無條件返回指令。該指令無條件結(jié)束子程序的執(zhí)行,返回主程序調(diào)用處。每個(gè)子程序均要以此指令結(jié)束。STEP7-Micro/Win32在執(zhí)行子程序時(shí)自動(dòng)將無條件返回指令加在每一個(gè)子程序的末尾。當(dāng)有一個(gè)子程序被調(diào)用時(shí)系統(tǒng)會(huì)保存當(dāng)前的邏輯堆棧,置棧頂值為1,堆棧的其他值為0把控制交給被調(diào)用的子程序。當(dāng)子程序完成后恢復(fù)邏輯堆棧,把控制權(quán)交還給調(diào)用程序。注意幾點(diǎn):當(dāng)子程序執(zhí)行結(jié)束時(shí),程序應(yīng)該返回到原調(diào)用指令(CALL)的下一條指令。子程序可以嵌套,但最多不能超過8層,允許自調(diào)用(自己調(diào)用自己),但使用時(shí)要謹(jǐn)慎,避免出現(xiàn)混亂。累加器值可在主、子程序之間自由傳遞,調(diào)用子程序時(shí)無需保存累加器。4.3.3STOP、WDR、END、MEND指令STOP指令用以暫停程序執(zhí)行。使能輸入有效時(shí),該指令使主機(jī)CPU的工作方式由RUN切換到STOP方式,從而立即終止用戶程序的執(zhí)行。STOP指令在梯形圖中以線圈形式編程。指令不含操作數(shù)。指令的執(zhí)行不考慮對特殊標(biāo)志寄存器位和能流的影響。指令格式:STOP (無操作數(shù))WDR看門狗復(fù)位指令(監(jiān)控復(fù)位指令)。當(dāng)使能輸入有效時(shí),執(zhí)行WDR指令,每執(zhí)行一次,看門狗定時(shí)器就被復(fù)位一次。用本指令可用以延長掃描周期,從而可以有效避免看門狗超時(shí)錯(cuò)誤。S7-200警戒時(shí)鐘默認(rèn)監(jiān)控時(shí)間為300ms。指令格式:WDR (無操作數(shù))程序?qū)嵗褐噶頢TOP、END、WDR的應(yīng)用如圖5.2所示。一次掃描結(jié)束之前以下處理被禁止:通信(自由口通信除外)、I/O口刷新(直接I/O除外)、強(qiáng)制刷新、特殊標(biāo)志位刷新、執(zhí)行時(shí)間診斷、中斷程序中的STOP指令。
結(jié)束指令結(jié)束指令有兩條:END和MEND。兩條指令在梯形圖中以線圈形式編程。
END,有條件結(jié)束指令。使能輸入有效時(shí),終止用戶主程序,并返回主程序的第一條指令執(zhí)行。END指令可以在主程序中使用,但不能用在子程序或中斷子程序中。END指令后面無操作數(shù)。MEND無條件結(jié)束指令。無條件終止用戶程序的執(zhí)行,返回主程序的第一條指令。用Micro/Win32編程時(shí),編程人員不需手工輸入MEND指令,而是由軟件自動(dòng)加在主程序結(jié)尾。指令格式:MEND (無操作數(shù))4.3.4FOR與NEXT循環(huán)指令FOR指令和NEXT指令必須成對使用,F(xiàn)OR標(biāo)記循環(huán)的開始,NEXT標(biāo)記循環(huán)的結(jié)束。FOR標(biāo)記在FOR和NEXT之間執(zhí)行指令,必須給FOR指令指定當(dāng)前循環(huán)計(jì)數(shù)值(INDX)、初值(INIT)、和終值(FINAL)。NEXT指令標(biāo)記循環(huán)的結(jié)束,并置棧頂值為1。如果初值大于終值,那么循環(huán)體不被執(zhí)行。每執(zhí)行一次循環(huán)體,當(dāng)前計(jì)數(shù)值增加1,并且將其結(jié)果同終值作比較,如果大于終值,那么循環(huán)結(jié)束。4.4數(shù)學(xué)運(yùn)算指令4.4.1數(shù)學(xué)邏輯運(yùn)算指令4.4.2四則運(yùn)算指令4.4.3數(shù)學(xué)函數(shù)指令返回本章首頁4.4.1數(shù)學(xué)邏輯運(yùn)算指令數(shù)學(xué)邏輯運(yùn)算指令:按字節(jié)、字或雙字進(jìn)行邏輯運(yùn)算的指令。S7-200提供的數(shù)學(xué)邏輯運(yùn)算指令可以按字、字節(jié)或雙字進(jìn)行邏輯與、邏輯或、邏輯異或和邏輯取反等數(shù)學(xué)操作。1.字節(jié)運(yùn)算指令字節(jié)邏輯運(yùn)算包括字節(jié)與、字節(jié)或、字節(jié)異或、字節(jié)取反。ANDB(字節(jié)與)指令對兩個(gè)輸入字節(jié)按位與,得到一個(gè)字節(jié)結(jié)果(OUT)ORB(字節(jié)或)指令對兩個(gè)輸入字節(jié)按位或,得到一個(gè)字節(jié)結(jié)果(OUT)XORB(字節(jié)與)指令對兩個(gè)輸入字節(jié)按位異或,得到一個(gè)字節(jié)結(jié)果(OUT)2.字邏輯運(yùn)算字邏輯運(yùn)算包括字與、字或、字異或、字取反。ANDW(字與)指令對兩個(gè)輸入字按位與,得到一個(gè)字結(jié)果(OUT)ORW(字或)指令對兩個(gè)輸入字按位或,得到一個(gè)字結(jié)果(OUT)XORW(字與)指令對兩個(gè)輸入字按位異或,得到一個(gè)字結(jié)果(OUT)3.雙字邏輯運(yùn)算雙字邏輯運(yùn)算包括雙字與、雙字或、雙字異或、雙字取反。
ANDD(雙字與)指令對兩個(gè)輸入雙字按位與,得到一個(gè)雙字結(jié)果(OUT)ORD(雙字或)指令對兩個(gè)輸入雙字按位或,得到一個(gè)雙字結(jié)果(OUT)XORD(雙字與)指令對兩個(gè)輸入雙字按位異或,得到一個(gè)雙字結(jié)果(OUT)4、邏輯取反運(yùn)算指令I(lǐng)NVB字節(jié)取反指令求出輸入字節(jié)(IN)的反碼,得到一個(gè)字節(jié)結(jié)果(OUT)INVW字取反指令求出輸入字(IN)的反碼,得到一個(gè)字結(jié)果(OUT)INVD雙字取反指令求出輸入雙字(IN)的反碼,得到一個(gè)雙字結(jié)果(OUT)5、使用數(shù)學(xué)邏輯運(yùn)算指令注意以下幾點(diǎn)在梯形圖中,執(zhí)行結(jié)果放在OUT中,在語句表中,執(zhí)行結(jié)果則放在IN2中。且在梯形圖中,可以設(shè)定OUT和IN2指向同一個(gè)單元以節(jié)省內(nèi)存空間。指令執(zhí)行影響零特殊標(biāo)志位SM1.0,當(dāng)執(zhí)行結(jié)果為0時(shí),SM1.0被置1。在執(zhí)行程序時(shí)出錯(cuò),將使輸出允許ENO為0,從而終止梯形圖中的“能流”繼續(xù)下傳。4.4.2四則運(yùn)算指令
S7-200PLC四則運(yùn)算指令有加法、減法、乘法、除法、加1和減1等指令。加、減法指令包括:整數(shù)加、減法運(yùn)算指令雙整數(shù)加、減法運(yùn)算指令實(shí)數(shù)加、減法運(yùn)算指令1.整數(shù)加法+I,整數(shù)加法指令。使能輸入有效時(shí),將兩個(gè)單字長(16位)的符號(hào)整數(shù)IN1和IN2相加,產(chǎn)生一個(gè)16位整數(shù)結(jié)果OUT。圖4.25整數(shù)加法例2.雙整數(shù)加法+D,雙整數(shù)加法指令。使能輸入有效時(shí),將兩個(gè)雙字長(32位)的符號(hào)雙整數(shù)IN1和IN2相加,產(chǎn)生一個(gè)32位雙整數(shù)結(jié)果OUT。在LAD和FBD中,執(zhí)行結(jié)果:IN1+IN2=OUT。在STL中,執(zhí)行結(jié)果:IN1+OUT=OUT。
OUT的尋址范圍:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*AC、*LD。指令格式:+D IN1,OUT例: +D VD0,VD43、實(shí)數(shù)加法指令+R,實(shí)數(shù)加法指令。使能輸入有效時(shí),將兩個(gè)雙字長(32位)的實(shí)數(shù)IN1和IN2相加,產(chǎn)生一個(gè)32位實(shí)數(shù)結(jié)果OUT。在LAD和FBD中,執(zhí)行結(jié)果:IN1+IN2=OUT。OUT的尋址范圍:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*AC、*LD。本指令影響的特殊存儲(chǔ)器位:SM1.0(零);SM1.1(溢出);SM1.2(負(fù))。返回本節(jié)44.減法減法指令是對有符號(hào)數(shù)進(jìn)行相減操作。包括:整數(shù)減法、雙整數(shù)減法和實(shí)數(shù)減法。這三種減法指令與所對應(yīng)的加法指令除運(yùn)算法則不同之外,其他方面基本相同。在LAD和FBD中,執(zhí)行結(jié)果:IN1-IN2=OUT。在STL中,執(zhí)行結(jié)果:OUT-IN2=OUT。指令格式:-I IN2, OUT (整數(shù)減法)
-D IN2, OUT (雙整數(shù)減法)
-R IN2, OUT (實(shí)數(shù)減法)例:-I AC0, VW45、乘法*I,整數(shù)乘法指令。使能輸入有效時(shí),將兩個(gè)單字長(16位)的符號(hào)整數(shù)IN1和IN2相乘,產(chǎn)生一個(gè)16位整數(shù)結(jié)果OUT。IN2和OUT指向同一個(gè)內(nèi)存單元以節(jié)省內(nèi)存空間。指令格式:*I IN1,OUT例: *I VW0,AC0整數(shù)乘法
完全整數(shù)乘法MUL,完全整數(shù)乘法指令。使能輸入有效時(shí),將兩個(gè)單字長(16位)的符號(hào)整數(shù)IN1和IN2相乘,產(chǎn)生一個(gè)32位雙整數(shù)結(jié)果OUT。在LAD和FBD中,執(zhí)行結(jié)果:IN1*IN2=OUT。OUT的尋址范圍:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*AC、*LD。本指令影響的特殊存儲(chǔ)器位:SM1.0(零);SM1.1(溢出);SM1.2(負(fù));SM1.3(被0除)。指令格式:MUL IN1,OUT例:MUL AC0,VD10雙整數(shù)乘法*D,雙整數(shù)乘法指令。使能輸入有效時(shí),將兩個(gè)雙字長(32位)的符號(hào)整數(shù)IN1和IN2相乘,產(chǎn)生一個(gè)32位雙整數(shù)結(jié)果OUT。在STL中,執(zhí)行結(jié)果:IN1*OUT=OUT。IN1和IN2的尋址范圍:VD、ID、QD、MD、SD、SMD、LD、HC、AC、*VD、*AC、*LD和常數(shù)。OUT的尋址范圍:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*AC、*LD。本指令影響的特殊存儲(chǔ)器位:SM1.0(零);SM1.1(溢出);SM1.2(負(fù));SM1.3(被0除)。指令格式:*D IN1,OUT例:*D VD0,AC0
實(shí)數(shù)乘法*R,實(shí)數(shù)乘法指令。使能輸入有效時(shí),將兩個(gè)雙字長(32位)的實(shí)數(shù)IN1和IN2相乘,產(chǎn)生一個(gè)32位實(shí)數(shù)結(jié)果OUT。在LAD和FBD中,以指令盒形式編程,執(zhí)行結(jié)果:IN1*IN2=OUT。在STL中,執(zhí)行結(jié)果:IN1*OUT=OUT。IN1和IN2的尋址范圍:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*AC、*LD和常數(shù)。OUT的尋址范圍:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*AC、*LD。本指令影響的特殊存儲(chǔ)器位:SM1.0(零);SM1.1(溢出);SM1.2(負(fù));SM1.3(被0除)。指令格式: *R IN1,OUT例: *R VD0,AC06.除法在LAD和FBD中,以指令盒形式編程,執(zhí)行結(jié)果:IN1/IN2=OUT。在STL中,執(zhí)行結(jié)果:OUT/IN2=OUT。指令格式:/I IN2, OUT (整數(shù)除法)DIV IN2, OUT (整數(shù)完全除法)/D IN2, OUT (雙整數(shù)除法/R IN2, OUT (實(shí)數(shù)除法)例:DIV VW10,VD100 /I VW20,VW200兩條指令的編程及執(zhí)行情況比較如圖所示。對于除法指令:
對于完全除法指令:
增減指令1.字節(jié)增和字節(jié)減INCB,字節(jié)增指令。使能輸入有效時(shí),把一字節(jié)長的無符號(hào)輸入數(shù)(IN)加1,得到一字節(jié)的無符號(hào)輸出結(jié)果OUT。DECB,字節(jié)減指令。使能輸入有效時(shí),把一字節(jié)長的無符號(hào)輸入數(shù)(IN)減1,得到一字節(jié)的無符號(hào)輸出結(jié)果OUT。2.字增和字減
INCW字增指令,使能輸入有效時(shí),把一字長的有符號(hào)輸入數(shù)(IN)加1,得到32位的有符號(hào)輸出結(jié)果OUT。DECW字減指令,使能輸入有效時(shí),把一字節(jié)的有符號(hào)輸入數(shù)(IN)減1,得到一字長的有符號(hào)輸出結(jié)果OUT。IN的尋址范圍:VW、IW、QW、MW、SW、SM、LW、AIW、T、C、AC、*VD、*AC、*LD和常數(shù)OUT的尋址范圍:VW、IW、QW、MW、SW、SMW、LW、AIW、T、C、AC、*VD、*AC、*LD。3.雙字增和雙字減INCD雙字增指令。使能輸入有效時(shí),把雙字長(32位)的有符號(hào)輸入數(shù)(IN)加1,得到雙字長的有符號(hào)輸出結(jié)果OUT。DECD雙字減指令。使能輸入有效時(shí),把雙字長的有符號(hào)輸入數(shù)(IN)減1,得到雙字長的有符號(hào)輸出結(jié)果OUT。幾點(diǎn)說明在梯形圖中IN+1=OUT,IN-1=OUT在指令表中IN+1=IN,IN-1=IN或OUT+1=OUT,OUT-1=OUT。即在梯形圖中,可以設(shè)定OUT和IN指向同一個(gè)內(nèi)存單元以節(jié)省內(nèi)存空間。指令執(zhí)行結(jié)果影響零特殊標(biāo)志位SM1.0、溢出特殊標(biāo)志位SM1.1和符號(hào)特殊標(biāo)志位SM1.2。當(dāng)指令運(yùn)算結(jié)果為0、有溢出或?yàn)樨?fù)值時(shí),SM1.0、SM1.1和SM1.2分別被置1。4.應(yīng)用實(shí)例控制要求:食品加工廠對飲料生產(chǎn)線上的盒裝飲料進(jìn)行計(jì)數(shù),每24盒為一箱,要求能記錄生產(chǎn)的箱數(shù)4.4.3數(shù)學(xué)函數(shù)指令
1.平方根指令2.自然對數(shù)指令3.指數(shù)指令4.正弦、余弦、正切指令1.平方根SQRT,平方根指令。把一個(gè)雙字長(32位)的實(shí)數(shù)IN開平方,得到32位的實(shí)數(shù)結(jié)果。在LAD中,執(zhí)行結(jié)果:SQRT(IN)=OUT。在STL中,執(zhí)行結(jié)果:SQRT(IN)=OUT。本指令影響的特殊存儲(chǔ)器位:SM1.0(零);SM1.1(溢出和非法值);SM1.2(負(fù))。使能流輸出ENO斷開的出錯(cuò)條件:SM1.1(溢出);SM4.3(運(yùn)行時(shí)間)。指令格式: SQRT IN,OUT例: SQRT VD0,AC02.自然對數(shù)指令
LN,自然對數(shù)指令。將一個(gè)雙字長(32位)的實(shí)數(shù)IN取自然對數(shù),得到32位的實(shí)數(shù)結(jié)果放入輸出單元OUT中。求以10為底的對數(shù)時(shí),用除法指令將自然對數(shù)除以2.302585即可。該指令影響下列的特殊存儲(chǔ)器位:SM1.0(零位),SM1.1(溢出),SM1.2(負(fù)數(shù)),SM4.3(運(yùn)行時(shí)間)。指令格式: LN IN,OUT應(yīng)用實(shí)例:求以10為底的50(存于VD0)的常用對數(shù),結(jié)果放到AC0。3.指數(shù)指令EXP,指數(shù)指令。將一個(gè)雙字長(32位)的實(shí)數(shù)IN取以e為底的指數(shù),得到32位的實(shí)數(shù)結(jié)果OUT。在LAD中,執(zhí)行結(jié)果:EXP(IN)=OUT。在STL中,執(zhí)行結(jié)果:EXP(IN)=OUT。指令格式:
EXP IN,OUT
例: EXP VD0,AC0該指令影響下列的特殊存儲(chǔ)器位:SM1.0(零位),SM1.1(溢出),SM1.2(負(fù)數(shù)),SM4.3(運(yùn)行時(shí)間)。4.正弦、余弦、正切指令SIN、COS、TAN,即正弦、余弦、正切指令。將一個(gè)雙字長(32位)的實(shí)數(shù)弧度值IN分別取正弦、余弦、正切,各得到32位的實(shí)數(shù)結(jié)果。如果已知輸入值為角度,要先將角度值轉(zhuǎn)化為弧度值,方法:使用(*R)MUL_R乘法指令用角度值乘以π/180°即可轉(zhuǎn)換為弧度值。例:TAN VD0,AC0,應(yīng)用實(shí)例:求COS160o的值4.5
數(shù)據(jù)操作指令
4.5.1數(shù)據(jù)移位指令4.5.2數(shù)據(jù)循環(huán)移位指令4.5.3數(shù)據(jù)傳送指令4.5.4數(shù)據(jù)轉(zhuǎn)換指令(1)字節(jié)左移(SLB)和字節(jié)右移(SRB)此指令可將字節(jié)的移出位逐位移入溢出標(biāo)志位SM1.1,被移字節(jié)的最后移位逐次自動(dòng)補(bǔ)0。最大實(shí)際可移位次數(shù)為8。此時(shí)該字節(jié)的實(shí)際值已為0。如果移位操作的結(jié)果使字節(jié)的每一位都是0,則零標(biāo)志存儲(chǔ)器位SM1.0就被置位。字節(jié)操作是無符號(hào)的。
SLB OUT,N(字左移)
SRB OUT,N(字右移)4.5.1數(shù)據(jù)移位指令
以第一條指令為例,指令執(zhí)行情況如表所示。表指令SLB執(zhí)行結(jié)果(2)字左移(SLW)和字右移(SRW)最大實(shí)際可移位次數(shù)為16。此指令可將字節(jié)的移出位逐位移入溢出標(biāo)志位SM1.1,被移字節(jié)的最后移位逐次自動(dòng)補(bǔ)0。如果移位操作的結(jié)果使字節(jié)的每一位都是0,則零標(biāo)志存儲(chǔ)器位SM1.0就被置位。字操作是有符號(hào)的。當(dāng)使用有符號(hào)數(shù)據(jù)類型時(shí),符號(hào)位也被移動(dòng)。指令格式: SLW OUT,N(字左移)
SRW OUT,N(字右移)例: SLW MW0,2 SRW LW0,3以第二條指令為例,指令執(zhí)行情況如表所示。(3)雙字左移(SLD)和雙字右移(SRD)使能輸入有效時(shí),把雙字型輸入數(shù)據(jù)IN左移或右移N位后,再將結(jié)果輸出到OUT所指的雙字存儲(chǔ)單元。最大實(shí)際可移位次數(shù)為32。此指令可將字節(jié)的移出位逐位移入溢出標(biāo)志位SM1.1,被移字節(jié)的最后移位逐次自動(dòng)補(bǔ)0。如果移位操作的結(jié)果使字節(jié)的每一位都是0,則零標(biāo)志存儲(chǔ)器位SM1.0就被置位。雙字操作是有符號(hào)的。當(dāng)使用有符號(hào)數(shù)據(jù)類型時(shí),符號(hào)位也被移動(dòng)。指令格式:
SLD OUT,N(雙字左移)
SRD OUT,N(雙字右移)例:
SLD MD0,2 SRD LD0,34.5.2.數(shù)據(jù)循環(huán)移位指令
循環(huán)左移和循環(huán)右移根據(jù)所循環(huán)移位的數(shù)的長度分別又可分為字節(jié)型、字型、雙字型。循環(huán)移位特點(diǎn):數(shù)據(jù)循環(huán)移位指令是在移位的基礎(chǔ)上再進(jìn)行循環(huán)操作,從而到達(dá)循環(huán)移位的目的。它將第一個(gè)移出位移入溢出標(biāo)志位,同時(shí)也將它復(fù)制送到最后一個(gè)移出位。例如在循環(huán)右移時(shí),移位數(shù)據(jù)的最右端位移入最左端,同時(shí)又進(jìn)入SM1.1。SM1.1始終存放最后一次被移出的位。循環(huán)移位的類型(1)字節(jié)循環(huán)左移和字節(jié)循環(huán)右移(2)字循環(huán)左移和字循環(huán)右移(3)雙字循環(huán)左移和雙字循環(huán)右移
(1)字節(jié)循環(huán)左移(RLB)和字節(jié)循環(huán)右移(RRB)如果所需移位次數(shù)大于或等于8,那么在執(zhí)行循環(huán)位前,先對N除以8,其余數(shù)為實(shí)際移動(dòng)位數(shù)。如果鎖移位數(shù)N為0,那么就不執(zhí)行循環(huán)移位在每次執(zhí)行循環(huán)移位時(shí),溢出位SM1.1的值就是本次循環(huán)移動(dòng)最后一位的值。如果移位操作的結(jié)果為0,則零標(biāo)志位SM1.0就被置位。指令格式:RRBOUT,NRLBOUT,N
(2)字循環(huán)左移(RLW)和字循環(huán)右移(RRW)如果所需移位次數(shù)大于或等于16,那么在執(zhí)行循環(huán)位前,先對N除以16,其余數(shù)為實(shí)際移動(dòng)位數(shù)。如果鎖移位數(shù)N為0,那么就不執(zhí)行循環(huán)移位在每次執(zhí)行循環(huán)移位時(shí),溢出位SM1.1的值就是本次循環(huán)移動(dòng)最后一位的值。如果移位操作的結(jié)果為0,則零標(biāo)志位SM1.0就被置位。指令格式:RRWOUT,NRLWOUT,N(3)雙字循環(huán)左移(RLD)和雙字循環(huán)右移(RRD)
如果所需移位次數(shù)大于或等于32,那么在執(zhí)行循環(huán)位前,先對N除以32,其余數(shù)為實(shí)際移動(dòng)位數(shù)。如果鎖移位數(shù)N為0,那么就不執(zhí)行循環(huán)移位在每次執(zhí)行循環(huán)移位時(shí),溢出位SM1.1的值就是本次循環(huán)移動(dòng)最后一位的值。如果移位操作的結(jié)果為0,則零標(biāo)志位SM1.0就被置位。指令格式:RRDOUT,NRLDOUT,N移位和循環(huán)移位舉例3.位寄存器移位
SHRB,寄存器移位指令。DATA為數(shù)值輸入,將該位的值移入移位寄存器;S_BIT為移位寄存器的最低位端;N指定移位寄存器的長度和移位方向(正向移位=N,反向移位=-N)。每次使能輸入有效時(shí),整個(gè)移位寄存器移動(dòng)1位。移位特點(diǎn):移位寄存器長度在指令中指定,沒有字節(jié)型、字型、雙字型之分??芍付ǖ淖畲箝L度為64位,可正也可負(fù)。受影響的SM標(biāo)志位:SM1.1(溢出)指令格式:SHRBDATA,S_BIT,N在每個(gè)掃描周期整個(gè)移位寄存器移動(dòng)一位。此移位寄存器由S-BIT和N決定。位移為寄存器的最高位(MSB.b)可通過下面公式計(jì)算:MSB.b=[(S-BIT的字節(jié)號(hào))+([N-1]+(S-BIT的位號(hào)))/8的商].[除8的余數(shù)]。因S-BIT也是移位寄存器中的一位,故必須減1。位移為寄存器移位方向由N的正負(fù)決定。反移時(shí)N為負(fù),輸入數(shù)據(jù)從最高位移入,最低位(S-BIT)移出;正移時(shí)N為正,輸入數(shù)據(jù)從最低位(S-BIT)移入,最高位移出。移出的數(shù)據(jù)放在一處存儲(chǔ)器位(SM1.1)。移位寄存器的最大長度是64位,可正可負(fù)例:如果S-BIT是V33.4,N是14,那么MSB.b是V35.1
MSB.b=V33+([14]-1+4)/8=V33+17/8=V33+2(余數(shù)為1)=V35.14.5.3數(shù)據(jù)傳送指令
1.單數(shù)據(jù)傳送(1)MOVB,字節(jié)傳送指令(2)BIR,傳送字節(jié)立即讀指令(3)BIW,傳送字節(jié)立即寫指令(4)MOVW,字傳送指令(5)MOVD,雙字傳送指令(6)MOVR,實(shí)數(shù)傳送指令2.塊數(shù)據(jù)傳送(1)BMB,字節(jié)塊傳送指令(2)BMW,字塊傳送指令(3)BMD,雙字塊傳送指令1.字節(jié)、字、雙字和實(shí)數(shù)傳送指令使能輸入有效時(shí),把一個(gè)字節(jié)、字、雙字和實(shí)數(shù)由IN傳送到OUT所指的存儲(chǔ)單元。傳送之后,原內(nèi)容保持不變。指令格式分別為:
MOVB IN,OUTMOVWIN,OUTMOVDIN,OUTMOVRIN,OUT 例:
MOVB VB0,QB02.字節(jié)、字和雙字塊傳送指令字節(jié)塊傳送指令(BMB)是將從字節(jié)(IN)開始的連續(xù)N個(gè)字節(jié)的數(shù)據(jù)塊全部復(fù)制到從字節(jié)輸出單元(OUT)開始的數(shù)據(jù)塊里,指令傳送是以一個(gè)字節(jié)為組進(jìn)行連續(xù)傳送,N的數(shù)值范圍是1-255,最大可傳送的字節(jié)數(shù)為256。字塊傳送指令(BMW)是將從字(IN)開始的連續(xù)N個(gè)字的數(shù)據(jù)塊全部復(fù)制到從字節(jié)輸出單元(OUT)開始的數(shù)據(jù)塊里,指令傳送是以一個(gè)字為組進(jìn)行連續(xù)傳送,其中N的數(shù)值范圍是1-255,最大可傳送的字節(jié)數(shù)為512。雙字塊傳送指令(BMD)是將從雙字(IN)開始的連續(xù)N個(gè)雙字的數(shù)據(jù)塊全部復(fù)制到從雙字輸出單元(OUT)開始的數(shù)據(jù)塊里,指令傳送是以一個(gè)雙字為組進(jìn)行連續(xù)傳送,其中N的數(shù)值范圍是1-255,最大可傳送的字節(jié)數(shù)為1024。在執(zhí)行塊傳送指令時(shí),輸入源字節(jié)、字或雙字的內(nèi)容都是不變的。3字節(jié)交換指令SWAP,字節(jié)交換指令。使能輸入有效時(shí),將字型輸入數(shù)據(jù)IN的高字節(jié)和低字節(jié)進(jìn)行交換。結(jié)果仍放回字IN中。本指令只對字型數(shù)據(jù)進(jìn)行處理,指令的執(zhí)行不影響的特殊存儲(chǔ)器位。使能流輸出ENO斷開的出錯(cuò)條件:SM4.3(運(yùn)行時(shí)間);0006(間接尋址)。指令格式:
SWAP IN
(字節(jié)交換)例:
SWAP VW104、傳送字節(jié)立即讀、立即寫指令BIR,傳送字節(jié)立即讀指令使能輸入有效時(shí),立即讀取單字節(jié)物理輸入?yún)^(qū)數(shù)據(jù)IN,并傳送到OUT所指的字節(jié)存儲(chǔ)單元。但過程映像寄存器并不刷新。IN的尋址范圍:IBOUT的尋址范圍:VB、IB、QB、MB、SB、SMB、LB、AC、*VD、*AC、*LD。指令格式:BIR IN1,OUT
例:
BIR IB0,VB10BIW,傳送字節(jié)立即寫指令使能輸入有效時(shí),從內(nèi)存地址(IN)中讀取數(shù)據(jù),并傳送到OUT所指的字節(jié)存儲(chǔ)單元。同時(shí)刷新過相應(yīng)的過程映像寄存器。IN的尋址范圍:IB、QB、VB、MB、SMB、SB、LB、AC、*VD、*AC、*LD、常數(shù)OUT的尋址范圍:QB、*VD、*AC、*LD
。指令格式:BIWIN1,OUT例:
BIWIB0,VB104.5.4數(shù)據(jù)轉(zhuǎn)換指令1、BCD碼與整數(shù)之間互換指令(1)BCD碼到整數(shù)BCDI,使能輸入有效時(shí),將BCD碼輸入數(shù)據(jù)IN轉(zhuǎn)換成整數(shù)類型,并將結(jié)果送到OUT輸出。輸入數(shù)據(jù)IN的范圍為0~9999。(2)整數(shù)到BCD碼IBCD,使能輸入有效時(shí),將整數(shù)輸入數(shù)據(jù)IN轉(zhuǎn)換成BCD碼類型,并將結(jié)果送到OUT輸出。輸入數(shù)據(jù)IN的范圍為0~9999。上述指令執(zhí)行結(jié)果影響特殊標(biāo)志位SM1.6(非法BCD碼標(biāo)志位),即輸入的源字若不是BCD碼,則標(biāo)志位被置1。2、雙整數(shù)轉(zhuǎn)換為實(shí)數(shù)指令DTR,使能輸入有效時(shí),將32位有符號(hào)的雙整數(shù)輸入數(shù)據(jù)IN轉(zhuǎn)換成32位的實(shí)數(shù),并將結(jié)果送到OUT輸出。使能流輸出ENO斷開的出錯(cuò)條件:SM4.3(運(yùn)行時(shí)間);0006(間接尋址)。指令格式:DTRIN,OUT
例:DTR AC0,VD1003、兩種取整指令ROUND,使能輸入有效時(shí),將輸入的實(shí)數(shù)IN轉(zhuǎn)換成雙整數(shù)的值,并將結(jié)果送到OUT輸出。如果小數(shù)部分大于0.5,就進(jìn)1位。該指令影響溢出標(biāo)志位SM1.1。使能流輸出ENO斷開的出錯(cuò)條件:SM4.3(運(yùn)行時(shí)間);0006(間接尋址);SM1.1(溢出)。指令格式:ROUNDIN,OUT 例:
ROUNDAC0,VD100TRUNC指令是將輸入的32位實(shí)數(shù)IN轉(zhuǎn)換為32位有符號(hào)的整數(shù)值,并存到OUT中去。只有實(shí)數(shù)的整數(shù)部分被轉(zhuǎn)換。如果要轉(zhuǎn)換的值是無效的實(shí)數(shù),或因太大而無法表示輸出,則溢出位SM1.1被置位,同時(shí)輸出保持上一次的值不變。該指令影響溢出標(biāo)志位SM1.1。使能流輸出ENO斷開的出錯(cuò)條件:SM4.3(運(yùn)行時(shí)間);0006(間接尋址);SM1.1(溢出)。指令格式:TRUNCIN,OUT
例:
TRUNCAC0,VD1004、雙整數(shù)和整數(shù)之間互換指令
DTI,使能輸入有效時(shí),將雙整數(shù)輸入數(shù)據(jù)IN轉(zhuǎn)換成整數(shù)類型,并將結(jié)果送到OUT輸出。輸入數(shù)據(jù)超出整數(shù)范圍則產(chǎn)生溢出。同時(shí)輸出保持上一次的值不變。移位指令影響的特殊存儲(chǔ)器位:SM1.1(溢出)。使能流輸出ENO斷開的出錯(cuò)條件:SM1.1(溢出);SM4.3(運(yùn)行時(shí)間);0006(間接尋址)。指令格式:DTI IN,OUT例:
DTI AC0,VW20
ITD,使能輸入有效時(shí),將整數(shù)輸入數(shù)據(jù)IN轉(zhuǎn)換成雙整數(shù)類型(符號(hào)進(jìn)行擴(kuò)展),并將結(jié)果送到OUT輸出。使能流輸出ENO斷開的出錯(cuò)條件:SM4.3(運(yùn)行時(shí)間);0006(間接尋址)。指令格式:ITD IN,OUT例: ITD VW0,AC05、整數(shù)和字節(jié)之間互換指令(1)字節(jié)到整數(shù)BTI,使能輸入有效時(shí),將字節(jié)輸入數(shù)據(jù)IN轉(zhuǎn)換成整數(shù)類型,并將結(jié)果送到OUT輸出。字節(jié)型是無符號(hào)的,所以沒有符號(hào)擴(kuò)展。使能流輸出ENO斷開的出錯(cuò)條件:SM4.3(運(yùn)行時(shí)間);0006(間接尋址)。指令格式:BTI IN,OUT例:
BTI VB0,AC0(2)整數(shù)到字節(jié)ITB,使能輸入有效時(shí),將整數(shù)輸入數(shù)據(jù)IN轉(zhuǎn)換成字節(jié)類型,并將結(jié)果送到OUT輸出。輸入數(shù)據(jù)超出字節(jié)范圍(0~255)則產(chǎn)生溢出。移位指令影響的特殊存儲(chǔ)器位:SM1.1(溢出)。使能流輸出ENO斷開的出錯(cuò)條件:SM1.1(溢出);SM4.3(運(yùn)行時(shí)間);0006(間接尋址)。指令格式:ITB IN,OUT
例:
ITB AC0,VB10程序?qū)嵗δ埽耗M量控制程序中的數(shù)據(jù)類型轉(zhuǎn)換。將模擬量輸入端采樣值由整數(shù)轉(zhuǎn)換為雙整數(shù),然后由雙整數(shù)轉(zhuǎn)換為實(shí)數(shù),再除以一個(gè)比例因子得到PLC可以處理的范圍內(nèi)的值。6、ASCII碼與十六進(jìn)制數(shù)(1)ASCII碼轉(zhuǎn)化為十六進(jìn)制數(shù)ATH,把從輸入字符IN開始的,長度為LEN的ASCII碼字符串轉(zhuǎn)換為十六進(jìn)制數(shù),并存到以O(shè)UT為首地址的連續(xù)輸出單元
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年醫(yī)療設(shè)備維修合同
- 2025年倉儲(chǔ)租金費(fèi)用合同
- 2025年家居和解協(xié)議書
- 2025年在線音樂電臺(tái)服務(wù)合約
- 2025年企業(yè)員工靈活用工管理服務(wù)合同
- 2025年分期付款游泳館會(huì)員購買合同
- 2025年度二零二五年度獼猴桃產(chǎn)業(yè)鏈金融服務(wù)平臺(tái)合作合同4篇
- 2025版小公司租車及車輛租賃售后服務(wù)合同2篇
- 二零二五版醫(yī)院康復(fù)病區(qū)承包服務(wù)協(xié)議2篇
- 二零二五年度木地板綠色環(huán)保材料采購合同4篇
- 光伏自發(fā)自用項(xiàng)目年用電清單和消納計(jì)算表
- 量子計(jì)算在醫(yī)學(xué)圖像處理中的潛力
- 阿里商旅整體差旅解決方案
- 浙江天臺(tái)歷史文化名城保護(hù)規(guī)劃說明書
- 邏輯思維訓(xùn)練500題
- 第八講 發(fā)展全過程人民民主PPT習(xí)概論2023優(yōu)化版教學(xué)課件
- 實(shí)體瘤療效評價(jià)標(biāo)準(zhǔn)RECIST-1.1版中文
- 企業(yè)新春茶話會(huì)PPT模板
- GB/T 19185-2008交流線路帶電作業(yè)安全距離計(jì)算方法
- DIC診治新進(jìn)展課件
- 公路工程施工現(xiàn)場安全檢查手冊
評論
0/150
提交評論