版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基本指令4.1.1指令使用概述
1.主機的有效編程范圍存儲器的存儲容量及各編程元件的有效編程范圍如右表4.1所示。許多指令中含有操作數(shù),操作數(shù)的有效編址范圍如表4.2所示。(1)指令例整數(shù)加法+I,整數(shù)加法指令。使能輸入有效時,將兩個單字長(16位)的符號整數(shù)IN1和IN2相加,產(chǎn)生一個16位整數(shù)結(jié)果輸出(OUT)。在LAD和FBD中,以指令盒形式編程。指令盒的執(zhí)行結(jié)果:IN1+IN2=OUT在STL中,執(zhí)行結(jié)果:IN1+OUT=OUTIN1和IN2的尋址范圍:VW、IW、QW、MW、SW、SMW、LW、AIW、T、C、AC、*VD、*AC、*LD和常數(shù)。OUT的尋址范圍:VW、IW、QW、MW、SW、SMW、LW、T、C、AC、*VD、*AC和*LD。本指令影響的特殊存儲器位:SM1.0(零);SM1.1(溢出);SM1.2(負(fù))使能流輸出ENO斷開的出錯條件:SM1.1(溢出);SM4.3(運行時間);0006(間接尋址)指令格式:+I IN1,OUT 例:+I VW0,VW4本指令在梯形圖和語句表中的編程如圖4.1所示。圖4.1整數(shù)加法3.梯形圖的基本繪制規(guī)則
(1)Network
(2)能流/使能
(3)編程順序
(4)編號分配
(5)內(nèi)、外觸點的配合
(6)觸點的使用次數(shù)
(7)線圈的使用次數(shù)
(8)線圈的連接
返回本節(jié)4.1.2基本邏輯指令
基本邏輯指令在語句表語言中是指對位存儲單元的簡單邏輯運算,在梯形圖中是指對觸點的簡單連接和對標(biāo)準(zhǔn)線圈的輸出。一般來說,語句表語言更適合于熟悉可編程序控制器和邏輯編程方面有經(jīng)驗的編程人員。用這種語言可以編寫出用梯形圖或功能框圖無法實現(xiàn)的程序。選擇語句表時進(jìn)行位運算要考慮主機的內(nèi)部存儲結(jié)構(gòu)。可編程序控制器中的堆棧與計算機中的堆棧結(jié)構(gòu)相同,堆棧是一組能夠存儲和取出數(shù)據(jù)的暫時存儲單元。堆棧的存取特點是“后進(jìn)先出”,S7-200可編程序控制器的主機邏輯堆棧結(jié)構(gòu)如表4.3所示。1.標(biāo)準(zhǔn)觸點指令(1)LD:裝入常開觸點(LoaD)(2)LDN:裝入常閉觸點(LoaDNot)
(3)A:與常開觸點(And)
(4)AN:與常閉觸點(AndNot)。
(5)O:或常閉觸點(Or)
(6)ON:或常閉觸點(OrNot)
(7)NOT:觸點取非(輸出反相)
(8)=:輸出指令
在語句表中,LD、LDN、A、AN、O、ON、NOT這幾條指令的執(zhí)行對邏輯堆棧的影響分別如表4.4、表4.5其后的說明。表4.5指令A(yù)
I0.2的執(zhí)行程序?qū)嵗罕境绦蚨斡靡越榻B標(biāo)準(zhǔn)觸點指令在梯形圖、語句表和功能塊圖3種語言編程中的應(yīng)用,仔細(xì)比較不同編程工具的區(qū)別與聯(lián)系。其梯形圖和語句表程序結(jié)構(gòu)如圖4.2所示。圖4.2標(biāo)準(zhǔn)觸點LAD和STL例2.正負(fù)跳變指令
本程序?qū)?yīng)的功能框圖如圖4.3所示。在功能框圖中,常閉觸點的裝入和串并聯(lián)用指令盒的對應(yīng)輸入信號端加圓圈來表示。程序執(zhí)行的時序圖如圖4.4所示。圖4.3標(biāo)準(zhǔn)觸點FBD例圖4.4時序圖負(fù)跳變觸點檢測到脈沖的每一次負(fù)跳變后,產(chǎn)生一個微分脈沖。指令格式:ED(無操作數(shù))應(yīng)用舉例:圖4.5是跳變指令的程序片斷。圖4.6是圖4.5指令執(zhí)行的時序。圖4.5跳變應(yīng)用圖4.6時序3.置位和復(fù)位指令
(1)S,置位指令
(2)R,復(fù)位指令
置位即置1,復(fù)位即置0。置位和復(fù)位指令可以將位存儲區(qū)的某一位開始的一個或多個(最多可達(dá)255個)同類存儲器位置1或置0。這兩條指令在使用時需指明三點:操作性質(zhì)、開始位和位的數(shù)量。各操作數(shù)類型及范圍如表4.6所示。(1)S,置位指令
將位存儲區(qū)的指定位(位bit)開始的N個同類存儲器位置位。用法: S bit, N例: S Q0.0, 1(2)R,復(fù)位指令
將位存儲區(qū)的指定位(位bit)開始的N個同類存儲器位復(fù)位。當(dāng)用復(fù)位指令時,如果是對定時器T位或計數(shù)器C位進(jìn)行復(fù)位,則定時器位或計數(shù)器位被復(fù)位,同時,定時器或計數(shù)器的當(dāng)前值被清零。用法: R bit, N例: R Q0.2, 3應(yīng)用舉例:圖4.7為置位和復(fù)位指令應(yīng)用程序片斷。圖4.7置位復(fù)位本程序?qū)?yīng)的時序圖如圖4.8所示。圖4.8時序圖4.立即指令
(1)立即觸點指令
(2)=I,立即輸出指令
(3)SI,立即置位指令
(4)RI,立即復(fù)位指令
(1)立即觸點指令在每個標(biāo)準(zhǔn)觸點指令的后面加“I”。指令執(zhí)行時,立即讀取物理輸入點的值,但是不刷新對應(yīng)映像寄存器的值。這類指令包括:LDI、LDNI、AI、ANI、OI和ONI。下面以LDI指令為例。用法: LDI bit例: LDI I0.2注意:bit只能是I類型。(2)=I,立即輸出指令用立即指令訪問輸出點時,把棧頂值立即復(fù)制到指令所指出的物理輸出點,同時,相應(yīng)的輸出映像寄存器的內(nèi)容也被刷新。用法: =I bit例: =I Q0.2注意:bit只能是Q類型。(3)SI,立即置位指令用立即置位指令訪問輸出點時,從指令所指出的位(bit)開始的N個(最多為128個)物理輸出點被立即置位,同時,相應(yīng)的輸出映像寄存器的內(nèi)容也被刷新。用法: SI bit, N例: SI Q0.0, 2注意:bit只能是Q類型。SI和RI指令的操作數(shù)類型及范圍如表4.7所示。(4)RI,立即復(fù)位指令用立即復(fù)位指令訪問輸出點時,從指令所指出的位(bit)開始的N個(最多為128個)物理輸出點被立即復(fù)位,同時,相應(yīng)的輸出映像寄存器的內(nèi)容也被刷新。用法: RI bit, N例: RI Q0.0, 1應(yīng)用舉例:圖4.9為立即指令應(yīng)用中的一段程序,圖4.10是程序?qū)?yīng)的時序圖。圖4.9立即指令程序圖4.10時序圖返回本節(jié)4.1.3復(fù)雜邏輯指令
1.棧裝載與指令
2.棧裝載或指令
3.邏輯推入棧指令
4.邏輯彈出棧指令
5.邏輯讀棧指令
6.裝入堆棧指令
1.棧裝載與指令
ALD,棧裝載與指令(與塊)。在梯形圖中用于將并聯(lián)電路塊進(jìn)行串聯(lián)連接。在語句表中指令A(yù)LD執(zhí)行情況如表4.8所示。2.棧裝載或指令
OLD,棧裝載或指令(或塊)。在梯形圖中用于將串聯(lián)電路塊進(jìn)行并聯(lián)連接。在語句表中指令OLD執(zhí)行情況如表4.9所示。3.邏輯推入棧指令
LPS,邏輯推入棧指令(分支或主控指令)。在梯形圖中的分支結(jié)構(gòu)中,用于生成一條新的母線,左側(cè)為主控邏輯塊時,第一個完整的從邏輯行從此處開始。注意:使用LPS指令時,本指令為分支的開始,以后必須有分支結(jié)束指令LPP。即LPS與LPP指令必須成對出現(xiàn)。在語句表中指令LPS執(zhí)行情況如下表4.10所示。4.邏輯彈出棧指令
LPP,邏輯彈出棧指令(分支結(jié)束或主控復(fù)位指令)。在梯形圖中的分支結(jié)構(gòu)中,用于將LPS指令生成一條新的母線進(jìn)行恢復(fù)。注意:使用LPP指令時,必須出現(xiàn)在LPS的后面,與LPS成對出現(xiàn)。在語句表中指令LPP執(zhí)行情況如下表4.11所示。5.邏輯讀棧指令
LRD,邏輯讀棧指令。在梯形圖中的分支結(jié)構(gòu)中,當(dāng)左側(cè)為主控邏輯塊時,開始第二個和后邊更多的從邏輯塊。在語句表中指令LRD執(zhí)行情況如表4.12所示。6.裝入堆棧指令
LDS,裝入堆棧指令。本指令編程時較少使用。指令格式: LDS n(n為0~8的整數(shù))例: LDS 4指令LDS 4在語句表中執(zhí)行情況如下表4.13所示。應(yīng)用舉例:圖4.11是復(fù)雜邏輯指令在實際應(yīng)用中的一段程序的梯形圖。圖4.11復(fù)雜邏輯指令的應(yīng)用返回本節(jié)4.1.4定時器指令
系統(tǒng)提供3種定時指令:TON、TONR和TOF。精度等級:S7-200定時器的精度(時間增量/時間單位/分辨率)有3個等級:1ms、10ms和100ms,精度等級和定時器號關(guān)系如表4.14所示。指令操作數(shù)
1)編號:
2)預(yù)設(shè)值PT:
3)使能輸入(只對LAD和FBD):
1.接通延時定時器
TON,接通延時定時器指令。用于單一間隔的定時。上電周期或首次掃描,定時器位OFF,當(dāng)前值為0。使能輸入接通時,定時器位為OFF,當(dāng)前值從0開始計數(shù)時間,當(dāng)前值達(dá)到預(yù)設(shè)值時,定時器位ON,當(dāng)前值連續(xù)計數(shù)到32767。使能輸入斷開,定時器自動復(fù)位,即定時器位OFF,當(dāng)前值為0。指令格式: TON Txxx,PT例: TON T120,82.有記憶接通延時定時器
TONR,有記憶接通延時定時器指令。用于對許多間隔的累計定時。上電周期或首次掃描,定時器位OFF,當(dāng)前值保持。使能輸入接通時,定時器位為OFF,當(dāng)前值從0開始計數(shù)時間。使能輸入斷開,定時器位和當(dāng)前值保持最后狀態(tài)。使能輸入再次接通時,當(dāng)前值從上次的保持值繼續(xù)計數(shù),當(dāng)累計當(dāng)前值達(dá)到預(yù)設(shè)值時,定時器位ON,當(dāng)前值連續(xù)計數(shù)到32767。TONR定時器只能用復(fù)位指令進(jìn)行復(fù)位操作。指令格式:TONR Txxx,PT例: TONR T20,633.斷開延時定時器TOF,斷開延時定時器指令。用于斷開后的單一間隔定時。上電周期或首次掃描,定時器位OFF,當(dāng)前值為0。使能輸入接通時,定時器位為ON,當(dāng)前值為0。當(dāng)使能輸入由接通到斷開時,定時器開始計數(shù),當(dāng)前值達(dá)到預(yù)設(shè)值時,定時器位OFF,當(dāng)前值等于預(yù)設(shè)值,停止計數(shù)。TOF復(fù)位后,如果使能輸入再有從ON到OFF的負(fù)跳變,則可實現(xiàn)再次啟動。指令格式:TOF Txxx,PT例: TOF T35,64.應(yīng)用舉例例1:圖4.12是介紹3種定時器的工作特性的程序片斷,其中T35為通電延時定時器,T2為有記憶通電延時定時器,T36為斷電延時定時器。圖4.12定時器特性本梯形圖程序中輸入輸出執(zhí)行時序關(guān)系如圖4.13所示。圖4.13定時器時序例2:用TON構(gòu)造各種類型的時間繼電器觸點。有的廠商的PLC只有TON定時器,因此,在這種情況下可以利用TON來構(gòu)造斷電延時型的各種觸點。圖4.14是用TON構(gòu)造TOF作用的觸點。其時序圖與TOF的時序完全相同。圖4.15用通電延時定時器與輸出繼電器組成帶瞬動觸點的定時器。圖4.16是利用常開觸點實現(xiàn)通電和斷電都延時的觸點作用。本程序?qū)崿F(xiàn)的功能是:用輸入端I0.0控制輸出端Q0.0,當(dāng)I0.0接通后,過3個時間單位Q0.0端輸出接通,當(dāng)I0.0斷開后,過6個時間單位Q0.0斷開。圖4.14定時器應(yīng)用圖4.14定時器應(yīng)用圖4.15定時器應(yīng)用圖4.16定時器應(yīng)用返回本節(jié)4.1.5計數(shù)器指令
1.概述
2.增計數(shù)器
3.增減計數(shù)器
4.減計數(shù)器
5.應(yīng)用舉例
1.概述
計數(shù)器用來累計輸入脈沖的次數(shù)。計數(shù)器也是由集成電路構(gòu)成,是應(yīng)用非常廣泛的編程元件,經(jīng)常用來對產(chǎn)品進(jìn)行計數(shù)。
計數(shù)器指令有3種:增計數(shù)CTU、增減計數(shù)CTUD和減計數(shù)CTD。指令操作數(shù)有4方面:編號、預(yù)設(shè)值、脈沖輸入和復(fù)位輸入。圖4.18電機順序起動2.增計數(shù)器
CTU,增計數(shù)器指令。首次掃描,定時器位OFF,當(dāng)前值為0。脈沖輸入的每個上升沿,計數(shù)器計數(shù)1次,當(dāng)前值增加1個單位,當(dāng)前值達(dá)到預(yù)設(shè)值時,計數(shù)器位ON,當(dāng)前值繼續(xù)計數(shù)到32767停止計數(shù)。復(fù)位輸入有效或執(zhí)行復(fù)位指令,計數(shù)器自動復(fù)位,即計數(shù)器位OFF,當(dāng)前值為0。指令格式:CTU Cxxx,PV例: CTU C20,3程序?qū)嵗簣D4.19為增計數(shù)器的程序片斷和時序圖。圖4.19增計數(shù)程序及時序3.增減計數(shù)器
CTUD,增減計數(shù)器指令。有兩個脈沖輸入端:CU輸入端用于遞增計數(shù),CD輸入端用于遞減計數(shù)。
指令格式:CTUD Cxxx,PV例: CTUD C30,5程序?qū)嵗喝鐖D4.20所示為增減計數(shù)器的程序片斷和時序圖。
圖4.20增減計數(shù)程序及時序4.減計數(shù)器
CTD,增減計數(shù)器指令。脈沖輸入端CD用于遞減計數(shù)。首次掃描,定時器位OFF,當(dāng)前值為等于預(yù)設(shè)值PV。計數(shù)器檢測到CD輸入的每個上升沿時,計數(shù)器當(dāng)前值減小1個單位,當(dāng)前值減到0時,計數(shù)器位ON。復(fù)位輸入有效或執(zhí)行復(fù)位指令,計數(shù)器自動復(fù)位,即計數(shù)器位OFF,當(dāng)前值復(fù)位為預(yù)設(shè)值,而不是0。指令格式:CTD Cxxx,PV例: CTD C40,4程序?qū)嵗簣D4.21為減計數(shù)器的程序片斷和時序圖。圖4.21減計數(shù)程序及時序5.應(yīng)用舉例
1)循環(huán)計數(shù)。以上三種類型的計數(shù)器如果在使用時,將計數(shù)器位的常開觸點作為復(fù)位輸入信號,則可以實現(xiàn)循環(huán)計數(shù)。2)用計數(shù)器和定時器配合增加延時時間,如圖4.22所示。試分析以下程序中實際延時為多長時間。圖4.22計數(shù)器應(yīng)用例返回本節(jié)4.1.6比較
1.字節(jié)比較
2.整數(shù)比較
3.雙字整數(shù)比較
4.實數(shù)比較
5.應(yīng)用舉例
1.字節(jié)比較
字節(jié)比較用于比較兩個字節(jié)型整數(shù)值IN1和IN2的大小,字節(jié)比較是無符號的。比較式可以是LDB、AB或OB后直接加比較運算符構(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, 1162.整數(shù)比較
整數(shù)比較用于比較兩個一字長整數(shù)值IN1和IN2的大小,整數(shù)比較是有符號的(整數(shù)范圍為16#8000和16#7FFF之間)。比較式可以是LDW、AW或OW后直接加比較運算符構(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, 11603.雙字整數(shù)比較
雙字整數(shù)比較用于比較兩個雙字長整數(shù)值IN1和IN2的大小,雙字整數(shù)比較是有符號的(雙字整數(shù)范圍為16#80000000和16#7FFFFFFF之間)。
指令格式例:LDD= VD10, VD14AD<> MD0, MD8OD<= AC0, 1160000LDD>= HC0, *AC04.實數(shù)比較
實數(shù)比較用于比較兩個雙字長實數(shù)值IN1和IN2的大小,實數(shù)比較是有符號的(負(fù)實數(shù)范圍為-1.175495E-38和-3.402823E+38,正實數(shù)范圍為+1.175495E-38和+3.402823E+38)。比較式可以是LDR、AR或OR后直接加比較運算符構(gòu)成。指令格式例:LDR= VD10, VD18AR<> MD0, MD12OR<= AC1, 1160.478AR> *AC1, VD1005.應(yīng)用舉例
控制要求:一自動倉庫存放某種貨物,最多6000箱,需對所存的貨物進(jìn)出計數(shù)。貨物多于1000箱,燈L1亮;貨物多于5000箱,燈L2亮。其中,L1和L2分別受Q0.0和Q0.1控制,數(shù)值1000和5000分別存儲在VW20和VW30字存儲單元中。本控制系統(tǒng)的程序如圖4.23所示。程序執(zhí)行時序如圖4.24所示。圖4.23程序舉例圖4.24時序圖返回本節(jié)4.2運算指令
4.2.1加法
4.2.2減法
4.2.3乘法
4.2.4除法
4.2.5數(shù)學(xué)函數(shù)指令
4.2.6增減
4.2.7邏輯運算
返回本章首頁4.2.1加法
1.整數(shù)加法+I,整數(shù)加法指令。使能輸入有效時,將兩個單字長(16位)的符號整數(shù)IN1和IN2相加,產(chǎn)生一個16位整數(shù)結(jié)果OUT。圖4.25整數(shù)加法例2.雙整數(shù)加法+D,雙整數(shù)加法指令。使能輸入有效時,將兩個雙字長(32位)的符號雙整數(shù)IN1和IN2相加,產(chǎn)生一個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,VD4+R,實數(shù)加法指令。使能輸入有效時,將兩個雙字長(32位)的實數(shù)IN1和IN2相加,產(chǎn)生一個32位實數(shù)結(jié)果OUT。在LAD和FBD中,以指令盒形式編程,執(zhí)行結(jié)果:IN1+IN2=OUT。OUT的尋址范圍:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*AC、*LD。本指令影響的特殊存儲器位:SM1.0(零);SM1.1(溢出);SM1.2(負(fù))。返回本節(jié)4.2.2減法
減法指令是對有符號數(shù)進(jìn)行相減操作。包括:整數(shù)減法、雙整數(shù)減法和實數(shù)減法。這三種減法指令與所對應(yīng)的加法指令除運算法則不同之外,其他方面基本相同。在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ù)減法)例:-I AC0, VW4返回本節(jié)4.2.3乘法
*I,整數(shù)乘法指令。使能輸入有效時,將兩個單字長(16位)的符號整數(shù)IN1和IN2相乘,產(chǎn)生一個16位整數(shù)結(jié)果OUT。指令格式:*I IN1,OUT例: *I VW0,AC01.整數(shù)乘法
2.完全整數(shù)乘法
MUL,完全整數(shù)乘法指令。使能輸入有效時,將兩個單字長(16位)的符號整數(shù)IN1和IN2相乘,產(chǎn)生一個32位雙整數(shù)結(jié)果OUT。
在LAD和FBD中,以指令盒形式編程,執(zhí)行結(jié)果:IN1*IN2=OUT。
OUT的尋址范圍:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*AC、*LD。本指令影響的特殊存儲器位:SM1.0(零);SM1.1(溢出);SM1.2(負(fù));SM1.3(被0除)。指令格式: MUL IN1,OUT例: MUL AC0,VD10
3.雙整數(shù)乘法
*D,雙整數(shù)乘法指令。使能輸入有效時,將兩個雙字長(32位)的符號整數(shù)IN1和IN2相乘,產(chǎn)生一個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。本指令影響的特殊存儲器位:SM1.0(零);SM1.1(溢出);SM1.2(負(fù));SM1.3(被0除)。指令格式: *D IN1,OUT例: *D VD0,AC04.實數(shù)乘法*R,實數(shù)乘法指令。使能輸入有效時,將兩個雙字長(32位)的實數(shù)IN1和IN2相乘,產(chǎn)生一個32位實數(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。本指令影響的特殊存儲器位:SM1.0(零);SM1.1(溢出);SM1.2(負(fù));SM1.3(被0除)。指令格式: *R IN1,OUT例: *R VD0,AC0返回本節(jié)4.2.4除法
在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ù)除法)例: DIV VW10,VD100 /I VW20,VW200兩條指令的編程及執(zhí)行情況比較如圖4.26所示。圖4.26除法指令應(yīng)用對于除法指令:
對于完全除法指令:
返回本節(jié)4.2.5數(shù)學(xué)函數(shù)指令
1.平方根
2.自然對數(shù)
3.指數(shù)
4.正弦、余弦、正切
1.平方根
SQRT,平方根指令。把一個雙字長(32位)的實數(shù)IN開平方,得到32位的實數(shù)結(jié)果。在LAD和FBD中,以指令盒形式編程,執(zhí)行結(jié)果:SQRT(IN)=OUT。在STL中,執(zhí)行結(jié)果:SQRT(IN)=OUT。本指令影響的特殊存儲器位:SM1.0(零);SM1.1(溢出和非法值);SM1.2(負(fù))。使能流輸出ENO斷開的出錯條件:SM1.1(溢出);SM4.3(運行時間);0006(間接尋址)。指令格式: SQRT IN,OUT例: SQRT VD0,AC02.自然對數(shù)
LN,自然對數(shù)指令。將一個雙字長(32位)的實數(shù)IN取自然對數(shù),得到32位的實數(shù)結(jié)果。應(yīng)用實例:求以10為底的50(存于VD0)的常用對數(shù),結(jié)果放到AC0。本運算程序如圖4.27所示。圖4.27自然對數(shù)的應(yīng)用3.指數(shù)
EXP,指數(shù)指令。將一個雙字長(32位)的實數(shù)IN取以e為底的指數(shù),得到32位的實數(shù)結(jié)果OUT。在LAD和FBD中,以指令盒形式編程,執(zhí)行結(jié)果:EXP(IN)=OUT。在STL中,執(zhí)行結(jié)果:EXP(IN)=OUT。指令格式: EXP IN,OUT例: EXP VD0,AC0
4.正弦、余弦、正切
SIN、COS、TAN,即正弦、余弦、正切指令。將一個雙字長(32位)的實數(shù)弧度值IN分別取正弦、余弦、正切,各得到32位的實數(shù)結(jié)果。如果已知輸入值為角度,要先將角度值轉(zhuǎn)化為弧度值,方法:使用(*R)MUL_R指令用角度值乘以π/180°即可。例: TAN VD0,AC0應(yīng)用實例:求COS160o的值。如圖4.28所示。圖4.28三角函數(shù)應(yīng)用例返回本節(jié)4.2.6增減
1.字節(jié)增和字節(jié)減
2.字增和字減
3.雙字增和雙字減
4.應(yīng)用實例
1.字節(jié)增和字節(jié)減
INCB,字節(jié)增指令。使能輸入有效時,把一字節(jié)長的無符號輸入數(shù)(IN)加1,得到一字節(jié)的無符號輸出結(jié)果OUT。DECB,字節(jié)減指令。使能輸入有效時,把一字節(jié)長的無符號輸入數(shù)(IN)減1,得到一字節(jié)的無符號輸出結(jié)果OUT。2.字增和字減
3.雙字增和雙字減
INCD,雙字增指令。使能輸入有效時,把雙字長(32位)的有符號輸入數(shù)(IN)加1,得到雙字長的有符號輸出結(jié)果OUT。DECD,雙字減指令。使能輸入有效時,把雙字長的有符號輸入數(shù)(IN)減1,得到雙字長的有符號輸出結(jié)果OUT。4.應(yīng)用實例
控制要求:食品加工廠對飲料生產(chǎn)線上的盒裝飲料進(jìn)行計數(shù),每24盒為一箱,要求能記錄生產(chǎn)的箱數(shù)。程序及說明:程序如圖4.29所示。圖4.29增減指令的應(yīng)用返回本節(jié)4.2.7邏輯運算
1.字節(jié)邏輯運算
2.字邏輯運算
3.雙字邏輯運算
1.字節(jié)邏輯運算
字節(jié)邏輯運算包括字節(jié)與、字節(jié)或、字節(jié)異或、字節(jié)取反。2.字邏輯運算
字節(jié)邏輯運算包括字節(jié)與、字節(jié)或、字節(jié)異或、字節(jié)取反。3.雙字邏輯運算
字邏輯運算包括雙字與、雙字或、雙字異或、雙字取反。
返回本節(jié)4.3其他數(shù)據(jù)處理指令
4.3.1傳送類指令
4.3.2移位指令
4.3.3字節(jié)交換指令
4.3.4填充指令
返回本章首頁4.3.1傳送類指令
1.單一傳送
(1)MOVB,字節(jié)傳送指令
(2)BIR,傳送字節(jié)立即讀指令
(3)BIW,傳送字節(jié)立即寫指令
(4)MOVW,字傳送指令
(5)MOVD,雙字傳送指令
(6)MOVR,實數(shù)傳送指令
2.塊傳送
(1)BMB,字節(jié)塊傳送指令
(2)BMW,字塊傳送指令
(3)BMD,雙字塊傳送指令
1.單一傳送
(1)MOVB,字節(jié)傳送指令使能輸入有效時,把一個單字節(jié)無符號數(shù)據(jù)由IN傳送到OUT所指的字節(jié)存儲單元。IN的尋址范圍:VB、IB、QB、MB、SB、SMB、LB、AC、*VD、*AC、*LD和常數(shù)。OUT的尋址范圍:VB、IB、QB、MB、SB、SMB、LB、AC、*VD、*AC、*LD。指令格式: MOVB IN1,OUT 例: MOVB VB0,QB0(2)BIR,傳送字節(jié)立即讀指令使能輸入有效時,立即讀取單字節(jié)物理輸入?yún)^(qū)數(shù)據(jù)IN,并傳送到OUT所指的字節(jié)存儲單元。IN的尋址范圍:IBOUT的尋址范圍:VB、IB、QB、MB、SB、SMB、LB、AC、*VD、*AC、*LD。指令格式: BIR IN1,OUT 例: BIR IB0,VB102.塊傳送
指令可用來進(jìn)行一次多個(最多255個)數(shù)據(jù)的傳送,數(shù)據(jù)塊類型可以是字節(jié)塊、字塊、雙字塊。三條指令中N的尋址范圍都是:VB、IB、QB、MB、SB、SMB、LB、AC、*VD、*AC、*LD和常數(shù)。使ENO斷開的出錯條件:SM4.3(運行時間);0006(間接尋址);0091(數(shù)超界)。返回本節(jié)4.3.2移位指令
1.左移和右移
2.循環(huán)左移、循環(huán)右移
3.寄存器移位
1.左移和右移
(1)字節(jié)左移和字節(jié)右移SLB和SRB,字節(jié)左移和字節(jié)右移。使能輸入有效時,把字節(jié)型輸入數(shù)據(jù)IN左移或右移N位后,再將結(jié)果輸出到OUT所指的字節(jié)存儲單元。最大實際可移位次數(shù)為8。以第一條指令為例,指令執(zhí)行情況如表4.16所示。表4.16指令SLB執(zhí)行結(jié)果SLW和SRW,字左移和字右移。指令盒與字節(jié)移位比較,只有名稱變?yōu)镾HR_W和SHR_W。使能輸入有效時,把字型輸入數(shù)據(jù)IN左移或右移N位后,再將結(jié)果輸出到OUT所指的字存儲單元。最大實際可移位次數(shù)為16。指令格式: SLW OUT,N (字左移)
SRW OUT,N (字右移)例: SLW MW0,2 SRW LW0,3以第二條指令為例,指令執(zhí)行情況如表4.17所示。(3)雙字左移和雙字右移SLD和SRD,雙字左移和雙字右移。指令盒與字節(jié)移位比較,只有名稱變?yōu)镾HL_DW和SHR_DW,其他部分完全相同。使能輸入有效時,把雙字型輸入數(shù)據(jù)IN左移或右移N位后,再將結(jié)果輸出到OUT所指的雙字存儲單元。最大實際可移位次數(shù)為32。指令格式: SLD OUT,N (雙字左移)
SRD OUT,N (雙字右移)例: SLD MD0,2 SRD LD0,32.循環(huán)左移、循環(huán)右移
循環(huán)左移和循環(huán)右移根據(jù)所循環(huán)移位的數(shù)的長度分別又可分為字節(jié)型、字型、雙字型。循環(huán)移位特點:移位數(shù)據(jù)存儲單元的移出端與另一端相連,同時又與SM1.1(溢出)相連,所以最后被移出的位被移到另一端的同時,也被放到SM1.1位存儲單元。例如在循環(huán)右移時,移位數(shù)據(jù)的最右端位移入最左端,同時又進(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)右移
表4.18指令RRW執(zhí)行結(jié)果3.寄存器移位
SHRB,寄存器移位指令。該指令在梯形圖中有3個數(shù)據(jù)輸入端:DATA為數(shù)值輸入,將該位的值移入移位寄存器;S_BIT為移位寄存器的最低位端;N指定移位寄存器的長度。每次使能輸入有效時,整個移位寄存器移動1位。移位特點:移位寄存器長度在指令中指定,沒有字節(jié)型、字型、雙字型之分??芍付ǖ淖畲箝L度為64位,可正也可負(fù)。表4.19指令SHRB執(zhí)行結(jié)果返回本節(jié)4.3.3字節(jié)交換指令
SWAP,字節(jié)交換指令。使能輸入有效時,將字型輸入數(shù)據(jù)IN的高字節(jié)和低字節(jié)進(jìn)行交換。本指令只對字型數(shù)據(jù)進(jìn)行處理,指令的執(zhí)行不影響的特殊存儲器位。使能流輸出ENO斷開的出錯條件:SM4.3(運行時間);0006(間接尋址)。指令格式: SWAP IN (字節(jié)交換)例: SWAP VW10以第本指令為例,指令執(zhí)行情況如表4.20所示。返回本節(jié)4.3.4填充指令
FILL,存儲器填充指令。使能輸入有效時,用字型輸入數(shù)據(jù)IN填充從輸出OUT所指的單元開始的N個字存儲單元。填充指令只對字型數(shù)據(jù)進(jìn)行處理,N值為字節(jié)型,可取從1~255的整數(shù)。指令的執(zhí)行不影響的特殊存儲器位。使能流輸出ENO斷開的出錯條件:SM4.3(運行時間);0006(間接尋址);0091(操作數(shù)超界)。
指令格式: FILL IN,OUT,N (填充指令)例: FILL 10,VW100,12本條指令的執(zhí)行結(jié)果是:將數(shù)據(jù)10填充到從VW100到VW122共12個字存儲單元。
返回本節(jié)4.4表功能指令
4.4.1表存數(shù)指令4.4.2表取數(shù)指令
4.4.3表查找指令
返回本章首頁表只對字型數(shù)據(jù)存儲,表的格式例如表4.21所示。
4.4.1表存數(shù)指令
ATT,表存數(shù)指令。該指令在梯形圖中有2個數(shù)據(jù)輸入端:DATA為數(shù)值輸入,指出將被存儲的字型數(shù)據(jù)或其地址;TBL表格的首地址,用以指明被訪問的表格。當(dāng)使能輸入有效時,將輸入字型數(shù)據(jù)添加到指定的表格中。表存數(shù)特點:表存數(shù)時,新存的數(shù)據(jù)添加在表中最后一個數(shù)據(jù)的后面。每向表中存一個數(shù)據(jù),實際填表數(shù)EC會自動加1。表4.22指令A(yù)TT執(zhí)行結(jié)果
返回本節(jié)4.4.2表取數(shù)指令
1.FIFO,先進(jìn)先出指令
2.LIFO,后進(jìn)先出指令
1.FIFO,先進(jìn)先出指令
當(dāng)使能輸入有效時,從TBL指明的表中移出第一個字型數(shù)據(jù)并將其輸出到DATA所指定的字單元。FIFO表取數(shù)特點:取數(shù)時,移出的數(shù)據(jù)總是最先進(jìn)入表中的數(shù)據(jù)。每次從表中移出一個數(shù)據(jù),剩余數(shù)據(jù)依次上移一個字單元位置,同時實際填表數(shù)EC會自動減1。指令格式: FIFO TBL,DATA 例: FIFO VW100,AC0如果仍是對表4.21存取,則指令執(zhí)行情況如表4.23所示。
表4.23指令FIFO執(zhí)行結(jié)果
2.LIFO,后進(jìn)先出指令
當(dāng)使能輸入有效時,從TBL指明的表中移出最后一個字型數(shù)據(jù)并將其輸出到DATA所指定的字單元。LIFO表取數(shù)特點:取數(shù)時,移出的數(shù)據(jù)是最后進(jìn)入表中的數(shù)據(jù)。每次從表中取出一個數(shù)據(jù),剩余數(shù)據(jù)位置保持不變,實際填表數(shù)EC會自動減1。指令格式: LIFO TBL,DATA 例: LIFO VW100,AC0如果仍是對表4.21存取,則指令執(zhí)行情況如表4.24所示。表4.24指令LIFO執(zhí)行結(jié)果返回本節(jié)4.4.3表查找指令
FND?,表查找指令。通過表查找指令可以從字型數(shù)表中找出符合條件的數(shù)據(jù)所在的表中數(shù)據(jù)編號,編號范圍為0~99。在梯形圖中有4個數(shù)據(jù)輸入端:TBL表格的首地址,用以指明被訪問的表格;PTN是用來描述查表條件時進(jìn)行比較的數(shù)據(jù);CMD是比較運算符“?”的編碼,它是一個1~4的數(shù)值,分別代表=、<>、<和>運算符;INDX用來指定表中符合查找條件的數(shù)據(jù)的地址。表4.25表查找指令執(zhí)行結(jié)果返回本節(jié)4.5轉(zhuǎn)換指令
4.5.1數(shù)據(jù)類型轉(zhuǎn)換
4.5.2編碼和譯碼
4.5.3七段碼
4.5.4字符串轉(zhuǎn)換
返回本章首頁4.5.1數(shù)據(jù)類型轉(zhuǎn)換
1.字節(jié)與整數(shù)(1)字節(jié)到整數(shù)(2)整數(shù)到字節(jié)
2.整數(shù)與雙整數(shù)
(1)雙整數(shù)到整數(shù)
(2)整數(shù)到雙整數(shù)
3.雙整數(shù)與實數(shù)
(1)實數(shù)到雙整數(shù)
(2)雙整數(shù)到實數(shù)
4.整數(shù)與BCD碼
(1)BCD碼到整數(shù)
(2)整數(shù)到BCD碼
5.程序?qū)嵗?/p>
1.字節(jié)與整數(shù)
(1)字節(jié)到整數(shù)BTI,字節(jié)轉(zhuǎn)換為整數(shù)指令。使能輸入有效時,將字節(jié)輸入數(shù)據(jù)IN轉(zhuǎn)換成整數(shù)類型,并將結(jié)果送到OUT輸出。字節(jié)型是無符號的,所以沒有符號擴展。使能流輸出ENO斷開的出錯條件:SM4.3(運行時間);0006(間接尋址)。指令格式: BTI IN,OUT例: BTI VB0,AC0(2)整數(shù)到字節(jié)ITB,整數(shù)轉(zhuǎn)換字節(jié)指令。使能輸入有效時,將整數(shù)輸入數(shù)據(jù)IN轉(zhuǎn)換成字節(jié)類型,并將結(jié)果送到OUT輸出。輸入數(shù)據(jù)超出字節(jié)范圍(0~255)則產(chǎn)生溢出。移位指令影響的特殊存儲器位:SM1.1(溢出)。使能流輸出ENO斷開的出錯條件:SM1.1(溢出);SM4.3(運行時間);0006(間接尋址)。指令格式: ITB IN,OUT 例: ITB AC0,VB102.整數(shù)與雙整數(shù)(1)雙整數(shù)到整數(shù)DTI,雙整數(shù)轉(zhuǎn)換為整數(shù)指令。使能輸入有效時,將雙整數(shù)輸入數(shù)據(jù)IN轉(zhuǎn)換成整數(shù)類型,并將結(jié)果送到OUT輸出。輸入數(shù)據(jù)超出整數(shù)范圍則產(chǎn)生溢出。移位指令影響的特殊存儲器位:SM1.1(溢出)。使能流輸出ENO斷開的出錯條件:SM1.1(溢出);SM4.3(運行時間);0006(間接尋址)。指令格式: DTI IN,OUT 例: DTI AC0,VW20(2)整數(shù)到雙整數(shù)ITD,整數(shù)轉(zhuǎn)換為雙整數(shù)指令。使能輸入有效時,將整數(shù)輸入數(shù)據(jù)IN轉(zhuǎn)換成雙整數(shù)類型(符號進(jìn)行擴展),并將結(jié)果送到OUT輸出。使能流輸出ENO斷開的出錯條件:SM4.3(運行時間);0006(間接尋址)。指令格式: ITD IN,OUT 例: ITD VW0,AC03.雙整數(shù)與實數(shù)(1)實數(shù)到雙整數(shù)(2)雙整數(shù)到實數(shù)DTR,雙整數(shù)轉(zhuǎn)換實數(shù)指令。使能輸入有效時,將雙整數(shù)輸入數(shù)據(jù)IN轉(zhuǎn)換成實型,并將結(jié)果送到OUT輸出。使能流輸出ENO斷開的出錯條件:SM4.3(運行時間);0006(間接尋址)。指令格式:DTR IN,OUT 例: DTR AC0,VD1004.整數(shù)與BCD碼(1)BCD碼到整數(shù)BCDI,BCD碼轉(zhuǎn)換為整數(shù)指令。使能輸入有效時,將BCD碼輸入數(shù)據(jù)IN轉(zhuǎn)換成整數(shù)類型,并將結(jié)果送到OUT輸出。輸入數(shù)據(jù)IN的范圍為0~9999。指令格式:BCDI OUT 例: BCDI AC0
(2)整數(shù)到BCD碼IBCD,整數(shù)轉(zhuǎn)換為BCD碼指令。使能輸入有效時,將整數(shù)輸入數(shù)據(jù)IN轉(zhuǎn)換成BCD碼類型,并將結(jié)果送到OUT輸出。輸入數(shù)據(jù)IN的范圍為0~9999。指令格式:IBCD OUT 例: IBCD AC05.程序?qū)嵗δ埽耗M量控制程序中的數(shù)據(jù)類型轉(zhuǎn)換。將模擬量輸入端采樣值由整數(shù)轉(zhuǎn)換為雙整數(shù),然后由雙整數(shù)轉(zhuǎn)換為實數(shù),再除以一個比例因子得到PLC可以處理的范圍內(nèi)的值。程序?qū)崿F(xiàn):本程序如圖4.30所示。返回本節(jié)4.5.2編碼和譯碼
1.編碼ENCO,編碼指令。使能輸入有效時,將字型輸入數(shù)據(jù)IN的最低有效位(值為1的位)的位號輸出到OUT所指定的字節(jié)單元的低4位。即用半個字節(jié)來對一個字型數(shù)據(jù)16位中的1位有效位進(jìn)行編碼。使能流輸出ENO斷開的出錯條件:SM4.3(運行時間);0006(間接尋址)。指令格式: ENCO IN,OUT例: ENCO AC0,VB0以本指令為例,指令執(zhí)行情況如表4.26所示。表4.26編碼指令執(zhí)行結(jié)果2.譯碼DECO,譯碼指令。使能輸入有效時,將字節(jié)型輸入數(shù)據(jù)IN的低4位所表示的位號對OUT所指定的字單元的對應(yīng)位置1,其他位置0。即對半個字節(jié)的編碼進(jìn)行譯碼來選擇一個字型數(shù)據(jù)16位中的1位。使能流輸出ENO斷開的出錯條件:SM4.3(運行時間);0006(間接尋址)。指令格式: DECO IN,OUT例: DECO VB0,AC0本指令執(zhí)行情況如表4.27所示。返回本節(jié)4.5.3七段碼
SEG,七段碼指令。使能輸入有效時,將字節(jié)型輸入數(shù)據(jù)IN的低4位有效數(shù)字產(chǎn)生相應(yīng)的七段碼,并將其輸出到OUT所指定的字節(jié)單元。返回本節(jié)4.5.4字符串轉(zhuǎn)換
1.指令種類(1)ASCII碼轉(zhuǎn)換16進(jìn)制指令(2)16進(jìn)制到ASCII碼(3)整數(shù)到ASCII碼(4)雙整數(shù)到ASCII碼(5)實數(shù)到ASCII碼2.指令介紹下面僅以ASCII碼轉(zhuǎn)換16進(jìn)制指令為例說明字符串與其他數(shù)據(jù)類型之間的轉(zhuǎn)換。ATH,ASCII碼轉(zhuǎn)換16進(jìn)制指令。指令盒中有3個操作數(shù):IN,開始字符的字節(jié)地址,字節(jié)類型;LEN,字符串的長度,字節(jié)類型,最大長度為255;OUT,輸出目的開始字節(jié)地址,字節(jié)類型。使能輸入有效時,把從IN開始的長度為LEN的ASCII碼轉(zhuǎn)換為16進(jìn)制數(shù),并將結(jié)果送到OUT開始的字節(jié)進(jìn)行輸出。3.程序?qū)嵗陨厦娴闹噶顬槔?,條指令的執(zhí)行結(jié)果如表4.28所示,程序如圖4.31所示。表4.28指令A(yù)TH執(zhí)行結(jié)果圖4.31字符串轉(zhuǎn)換返回本節(jié)
應(yīng)用指令
5.1.1空操作
NOP,空操作指令。使能輸入有效時,執(zhí)行空操作指令??詹僮髦噶畈挥绊懹脩舫绦虻膱?zhí)行,操作數(shù)N是標(biāo)號,是一個0~255的常數(shù)。指令格式:
NOP N例:
NOP 30 程序如下圖5.1所示。返回本節(jié)5.1.2結(jié)束及暫停
1.結(jié)束指令結(jié)束指令有兩條:END和MEND。兩條指令在梯形圖中以線圈形式編程。
END,條件結(jié)束指令。使能輸入有效時,終止用戶主程序。MEND無條件結(jié)束指令。無條件終止用戶程序的執(zhí)行,返回主程序的第一條指令。用Micro/Win32編程時,編程人員不需手工輸入MEND指令,而是由軟件自動加在主程序結(jié)尾。指令格式:END (無操作數(shù))2.暫停指令STOP,暫停指令。使能輸入有效時,該指令使主機CPU的工作方式由RUN切換到STOP方式,從而立即終止用戶程序的執(zhí)行。STOP指令在梯形圖中以線圈形式編程。指令不含操作數(shù)。指令的執(zhí)行不考慮對特殊標(biāo)志寄存器位和能流的影響。指令格式:STOP (無操作數(shù))返回本節(jié)5.1.3看門狗
WDR,看門狗復(fù)位指令。當(dāng)使能輸入有效時,執(zhí)行WDR指令,每執(zhí)行一次,看門狗定時器就被復(fù)位一次。用本指令可用以延長掃描周期,從而可以有效避免看門狗超時錯誤。指令格式:WDR (無操作數(shù))程序?qū)嵗褐噶頢TOP、END、WDR的應(yīng)用如圖5.2所示。圖5.2停止、結(jié)束、看門狗指令返回本節(jié)5.1.4跳轉(zhuǎn)
1.跳轉(zhuǎn)指令與跳轉(zhuǎn)相關(guān)的指令有下面兩條:(1)跳轉(zhuǎn)指令JMP,跳轉(zhuǎn)指令。使能輸入有效時,使程序流程跳到同一程序中的指定標(biāo)號n處執(zhí)行。執(zhí)行跳轉(zhuǎn)指令時,邏輯堆棧的棧頂值總是1。(2)標(biāo)號指令LBL,標(biāo)號指令。標(biāo)記程序段,作為跳轉(zhuǎn)指令執(zhí)行時跳轉(zhuǎn)到的目的位置。操作數(shù)n為0~255的字型數(shù)據(jù)。程序?qū)嵗喝缬覉D5.3所示。用增減計數(shù)器進(jìn)行計數(shù),如果當(dāng)前值小于500,則程序按原順序執(zhí)行,若當(dāng)前值超過500,則跳轉(zhuǎn)到從標(biāo)號10開始的程序執(zhí)行。返回本節(jié)圖5.3程序跳轉(zhuǎn)實例5.1.5子程序指令
建立子程序2.子程序調(diào)用
3.帶參數(shù)的子程序調(diào)用
1.建立子程序
可用編程軟件Edit菜單中的Insert選項,選擇Subroutine,以建立或插入一個新的子程序,同時在指令樹窗口可以看到新建的子程序圖標(biāo),默認(rèn)的程序名是SBR_n,編號n從0開始按遞增順序生成,可以在圖標(biāo)上直接更改子程序的程序名。在指令樹窗口雙擊子程序的圖標(biāo)就可對它進(jìn)行編輯。2.子程序調(diào)用
(1)子程序調(diào)用和返回指令子程序調(diào)用
子程序條件返回(2)注意事項
(3)應(yīng)用實例
圖5.4所示的程序?qū)崿F(xiàn)用外部控制條件分別調(diào)用兩個子程序。圖5.4子程序調(diào)用舉例3.帶參數(shù)的子程序調(diào)用
(1)子程序參數(shù)
變量名
變量類型
數(shù)據(jù)類型
(2)參數(shù)子程序調(diào)用的規(guī)則
(3)變量表使用
(4)程序?qū)嵗?/p>
以上面指令為例,局部變量表分配如表5.1所示,程序段如圖5.5所示。表5.1局部變量表例圖5.5帶參數(shù)的子程序調(diào)用返回本節(jié)5.1.6程序循環(huán)
循環(huán)開始
循環(huán)結(jié)束
3.程序?qū)嵗?/p>
圖5.6程序循環(huán)(1)返回本節(jié)圖5.6程序循環(huán)(2)5.1.7順序控制繼電器
1.順序繼電器指令(1)定義順序段(2)段開始(3)段結(jié)束(4)段轉(zhuǎn)移2.注意事項3.順序結(jié)構(gòu)
4.程序?qū)嵗?/p>
本例是用順序繼電器實現(xiàn)的順序控制中的一個步的程序段,這一步實現(xiàn)的功能是使兩個電機M1和M2起動運行20秒后停止,切換到下一步。程序如圖5.7所示。返回本節(jié)5.1.8與ENO指令
AENO,與ENO指令。ENO是梯形圖和功能框圖編程時指令盒的布爾能流輸出端。如果指令盒的能流輸入有效,同時執(zhí)行沒有錯誤,ENO就置位,將能流向下傳遞。當(dāng)用梯形圖編程時,且指令盒后串聯(lián)一個指令盒或線圈,語句表語言中用AENO指令描述。
指令格式:AENO(無操作數(shù))圖5.8與ENO指令A(yù)ENO指令只能在語句表中使用,將棧頂值和ENO位的邏輯與運算,運算結(jié)果保存到棧頂。程序如圖5.8所示。返回本節(jié)5.2特殊指令
5.2.1時鐘指令
5.2.2中斷
5.2.3通信
5.2.4高速計數(shù)
5.2.5高速脈沖輸出
5.2.6
PID回路指令
返回本章首頁5.2.1時鐘指令
1.讀實時時鐘TODR,讀實時時鐘指令。當(dāng)使能輸入有效時,系統(tǒng)讀當(dāng)前時間和日期,并把它裝入一個8字節(jié)的緩沖區(qū)。
2.寫實時時鐘TODW,寫實時時鐘指令。用來設(shè)定實時時鐘。當(dāng)使能輸入有效時,系統(tǒng)將包含當(dāng)前時間和日期,一個8字節(jié)的緩沖區(qū)將裝入時鐘。
時鐘緩沖區(qū)的格式如表5.2所示。
表5.2時鐘緩沖區(qū)程序?qū)嵗刂埔螅壕帉懸欢纬绦?,可實現(xiàn)讀、寫實時時鐘,并以BCD碼顯示分鐘。時鐘緩沖區(qū)從VB100開始。程序中的子程序SBR_0為寫時鐘子程序,將當(dāng)前時間寫入從VB100開始的8字節(jié)時間緩沖區(qū),時間設(shè)置如下表5.3所示。程序?qū)崿F(xiàn):讀寫時鐘程序如圖5.9所示。圖5.9讀寫時鐘返回本節(jié)5.2.2中斷
1.中斷源(1)中斷源及種類中斷源,即中斷事件發(fā)出中斷請求的來源。S7-200可編程序控制器具有最多可達(dá)34個中斷源,每個中斷源都分配一個編號用以識別,稱為中斷事件號。這些中斷源大致分為三大類:通信中斷、輸入輸出中斷和時基中斷。(2)中斷優(yōu)先級
中斷優(yōu)先級由高到低依次是:通信中斷、輸入輸出中斷、時基中斷。每種中斷中的不同中斷事件又有不同的優(yōu)先權(quán)。主機中的所有中斷事件及優(yōu)先級如表5.4所示。表5.4中斷事件及優(yōu)先級2.中斷調(diào)用即調(diào)用中斷程序,使系統(tǒng)對特殊的內(nèi)部或外部事件作出響應(yīng)。系統(tǒng)響應(yīng)中斷時自動保存邏輯堆棧、累加器和某些特殊標(biāo)志存儲器位,即保護現(xiàn)場。中斷處理完成時,又自動恢復(fù)這些單元原來的狀態(tài),即恢復(fù)現(xiàn)場。(1)中斷調(diào)用指令(2)注意事項(3)程序?qū)嵗?)程序?qū)嵗刂埔螅撼绦驅(qū)崿F(xiàn)的功能是調(diào)用I0.1輸入點的上升沿中斷,若發(fā)現(xiàn)I/O錯誤,則禁止本中斷,用外部條件可以禁止全局中斷。程序?qū)崿F(xiàn):本程序如圖5.10所示。圖5.10中斷調(diào)用程序3.中斷程序(1)構(gòu)成中斷程序必須由三部分構(gòu)成:中斷程序標(biāo)號、中斷程序指令和無條件返回指令。(2)要求(3)編制方法(4)注意事項返回本節(jié)5.2.3通信
通信指令包括:XMT,自由口發(fā)送指令RCV,自由口接收指令NETR,網(wǎng)絡(luò)讀指令NETW,網(wǎng)絡(luò)寫指令GPA,獲取口地址指令5.2.4高速計數(shù)
1.高速計數(shù)器介紹2.高速計數(shù)指令
3.高速計數(shù)器的使用方法
4.應(yīng)用實例
1.高速計數(shù)器介紹(1)數(shù)量及編號(2)中斷事件類型
(3)工作模式及輸入點
(1)數(shù)量及編號高速計數(shù)器在程序中使用時的地址編號用HCn來表示(在非程序中有時用HSCn),HC表編程元件名稱為高速計數(shù)器,n為編號。HCn除了表示高速計數(shù)器的編號之外,還代表兩方面的含義:高速計數(shù)器位和高速計數(shù)器當(dāng)前值。編程時,從所用的指令可以看出是位還是當(dāng)前值。不同型號的PLC主機,高速計數(shù)器的數(shù)量對應(yīng)如表5.7所示。(2)中斷事件類型高速計數(shù)器的計數(shù)和動作可采用中斷方式進(jìn)行控制,與CPU的掃描周期關(guān)系不大,各種型號的PLC可用的高速計數(shù)器的中斷事件大致分為3類:當(dāng)前值等于預(yù)設(shè)值中斷、輸入方向改變中斷和外部復(fù)位中斷。所有高速計數(shù)器都支持當(dāng)前值等于預(yù)設(shè)值中斷。每個高速計數(shù)器的3種中斷的優(yōu)先級由高到低,不同高速計數(shù)器之間的優(yōu)先級又按編號順序由高到低。具體對應(yīng)關(guān)系如表5.8所示。(3)工作模式及輸入點 工作模式 輸入端連接
高速計數(shù)器的工作模式共有12種。以模式4為例,時序如圖5.11所示。圖5.11模式4操作時序選用某個高速計數(shù)器在某種工作模式下工作,高速計數(shù)器的輸入端不是任意選擇,必須按系統(tǒng)指定的輸入點。如表5.9所示。2.高速計數(shù)指令
高速計數(shù)器指令有兩條:HDEF和HSC。(1)HDEF指令HDEF,定義高速計數(shù)器指令。使能輸入有效時,為指定的高速計數(shù)器分配一種工作模式,即用來建立高速計數(shù)器與工作模式之間的聯(lián)系。梯形圖指令盒中有兩個數(shù)據(jù)輸入端:HSC,高速計數(shù)器編號,為0~5的常數(shù),字節(jié)型;MODE,工作模式,為0~11的常數(shù),字節(jié)型。(2)HSC指令HSC,高速計數(shù)器指令。使能輸入有效時,根據(jù)高速計數(shù)器特殊存儲器位的狀態(tài),并按照HDEF指令指定的工作模式,設(shè)置高速計數(shù)器并控制其工作。梯形圖指令盒數(shù)據(jù)輸入端N:高速計數(shù)器編號,為0~5的常數(shù),字型。每個高速計數(shù)器都有固定的特殊功能存儲器與之相配合,完成高速計數(shù)功能。具體對應(yīng)關(guān)系如表5.11所示。3.高速計數(shù)器的使用方法
每個高速計數(shù)器都有一個狀態(tài)字節(jié),程序運行時根據(jù)運行狀況自動使某些位置位,可以通過程序來讀相關(guān)位的狀態(tài),用以作為判斷條件實現(xiàn)相應(yīng)的操作。狀態(tài)字節(jié)中各狀態(tài)位的功能如表5.12所示。使用高速計數(shù)器時,要按以下步驟進(jìn)行:(1)選擇計數(shù)器及工作模式
(2)設(shè)置控制字節(jié)
(3)執(zhí)行HDEF指令
(4)設(shè)定當(dāng)前值和預(yù)設(shè)值
(5)設(shè)置中斷事件并全局開中斷
(6)執(zhí)行HSC指令
表5.13控制位含義4.應(yīng)用實例
要對一高速事件精確控制,通過對脈沖信號進(jìn)行增計數(shù),計數(shù)當(dāng)前值達(dá)到24產(chǎn)生中斷,重新從0計數(shù),對中斷次數(shù)進(jìn)行累計。計數(shù)方向用一個外部信號控制,并能實現(xiàn)外部復(fù)位。所用的主機型號為CPU221。設(shè)計步驟:①選擇高速計數(shù)器HSC0,并確定工作方式4。②令SM37=16#F8③執(zhí)行HDEF指令,輸入端HSC為0,MODE為4。④裝入當(dāng)前值,令SMD38=0。⑤裝入設(shè)定值,令SMD42=24。⑥執(zhí)行中斷連接ATCH指令,輸入端INT為INT0,EVNT為10。
主程序、初始化子程序和中斷程序分別如圖5.12、圖5.13和圖5.14所示。圖5.12主程序圖5.13初始化子程序圖5.14中斷程序返回本節(jié)5.2.5高速脈沖輸出
1.高速脈沖輸出介紹(1)高速脈沖輸出的形式
(2)輸出端子的確定
(3)相關(guān)寄存器
(4)脈沖輸出指令
每個高速脈沖發(fā)生器對應(yīng)一定數(shù)量特殊標(biāo)志寄存器,這些寄存器包括控制字節(jié)寄存器、狀態(tài)字節(jié)寄存器和參數(shù)數(shù)值寄存器,用以控制高速脈沖的輸出形式、反映輸出狀態(tài)和參數(shù)值。各寄存器分配如表5.14所示。l
狀態(tài)字節(jié)每個高速脈沖輸出都有一個狀態(tài)字節(jié),程序運行時根據(jù)運行狀況自動使某些位置位,可以通過程序來讀相關(guān)位的狀態(tài),用以作為判斷條件實現(xiàn)相應(yīng)的操作。狀態(tài)字節(jié)中各狀態(tài)位的功能如表5.15所示。
控制字節(jié)每個高速脈沖輸出都對應(yīng)一個控制字節(jié),通過對控制字節(jié)中指定位的編程,可以根據(jù)操作要求設(shè)置字節(jié)中各控制位,如脈沖輸出允許、PTO/PWM模式選擇、單段/多段選擇、更新方式、時間基準(zhǔn)、允許更新等??刂谱止?jié)中各控制位的功能如表5.16所示。2.高速脈沖串輸出PTO(1)周期和脈沖數(shù)(2)PTO的種類(3)中斷事件類型(4)PTO的使用(1)周期和脈沖數(shù)周期:單位可以是微秒μs或毫秒ms;為16位無符號數(shù)據(jù),周期變化范圍是50~65535μs或2~65535ms,通常應(yīng)設(shè)定周期值為偶數(shù),若設(shè)置為奇數(shù),則會引起輸出波形占空比的輕微失真。如果編程時設(shè)定周期單位小于2,系統(tǒng)默認(rèn)按2進(jìn)行設(shè)置。脈沖數(shù):用雙字長無符號數(shù)表示,脈沖數(shù)取值范圍是1~4294967295之間。如果編程時指定脈沖數(shù)為0,則系統(tǒng)默認(rèn)脈沖數(shù)為1個。(2)PTO的種類PTO方式中,如果要輸出多個脈沖串,允許脈沖串進(jìn)行排隊,形成管線,當(dāng)前輸出的脈沖串完成之后,立即輸出新脈沖串,這保證了脈沖串順序輸出的連續(xù)性。單段管線
多段管線
包絡(luò)表由包絡(luò)段數(shù)和各段構(gòu)成。每段長度為8個字節(jié),包括:脈沖周期值(16位)、周期增量值(16位)和脈沖計數(shù)值(32位)。以包絡(luò)3段的包絡(luò)表為例,包絡(luò)表的結(jié)構(gòu)如表5.17所示。(3)中斷事件類型高速脈沖串輸出可以采用中斷方式進(jìn)行控制,各種型號的PLC可用的高速脈沖串輸出的中斷事件有兩個,如表5.18所示。(4)PTO的使用使用高速脈沖串輸出時,要按以下步驟進(jìn)行:確定脈沖發(fā)生器及工作模式
設(shè)置控制字節(jié)寫入周期值、周期增量值和脈沖數(shù)裝入包絡(luò)的首地址設(shè)置中斷事件并全局開中斷執(zhí)行PLS指令3.應(yīng)用實例(1)控制要求步進(jìn)電機轉(zhuǎn)動過程中,要從A點加速到B點后恒速運行,又從C點開始減速到D點,完成這一過程時用指示燈顯示。電機的轉(zhuǎn)動受脈沖控制,A點和D點的脈沖頻率為2kHz,B點和C點的頻率為10kHz,加速過程的脈沖數(shù)為400個,恒速轉(zhuǎn)動的脈沖數(shù)為4000個,減速過程脈沖數(shù)為200個。工作過程如圖5.15所示。圖5.15步進(jìn)電機工作過程(2)分析確定脈沖發(fā)生器及工作模式
設(shè)置控制字節(jié)
寫入周期值、周期增量值和脈沖數(shù)
裝入包絡(luò)表首地址
中斷調(diào)用
執(zhí)行PLS指令
(3)程序?qū)崿F(xiàn)本控制系統(tǒng)主程序如下圖5.16所示。初始化子程序SBR_1如圖5.17所示。包絡(luò)表子程序如圖5.18所示。中斷程序如圖5.19所示。圖5.16主程序圖5.17初始化子程序SBR_1圖5.18包絡(luò)表子程序SBR_0(1)圖5.18包絡(luò)表子程序SBR_0(2)圖5.19中斷程序4.寬度可調(diào)脈沖輸出PWM(1)周期和脈沖寬度
(2)更新方式
(3)PWM的使用
返回本節(jié)5.2.6
PID回路指令
PID算法
2.PID指令
3.應(yīng)用實例
1.PID算法
1.PID算法如果一個PID回路的輸出M(t)是時間的函數(shù),則可以看作是比例項、積分項和微分項三部分之和。即:用數(shù)字計算機處理這樣的控制算式,連續(xù)的算式必須周期采樣進(jìn)行離散化,同時各信號也要離散化,公式如下:MPn=Kc*(SPn-PVn)+Kc*Ts/Ti*(SPn-PVn)+MX+Kc*Td/Ts*(PVn-1-PVn)回路表初始化程序?qū)嵗喝绻鸎c為0.4,Ts為0.2秒,Ti為30分鐘,Td為15分鐘,則可以建立一個子程序SBR0用來對回路表進(jìn)行初始化。程序如圖5.20所示。圖5.20回路表初始化子程序SBR02.PID指令
PID,PID回路指令。使能輸入有效時,該指令利用回路表中的輸入信息和組態(tài)信息,進(jìn)行PID運算。梯形圖的指令盒中有2個數(shù)據(jù)輸入端:TBL,回路表的起始地址,是由VB指定的字節(jié)型數(shù)據(jù);LOOP,回路號,是0~7的常數(shù)。指令影響的特殊標(biāo)志存儲器位:SM1.1(溢出)。使能流輸出ENO斷開的出錯條件:SM1.1(溢出);SM4.3(運行時間);0006(間接尋址)。指令格式:PID TBL,LOOP3.應(yīng)用實例
(1)控制要求有一水箱有一條進(jìn)水管和一條出水管,進(jìn)水管的水流量隨時間不斷變化,要求控制出水管閥門的開度,使水箱內(nèi)的液位始終保持在水滿時液位的一半。系統(tǒng)使用比例積分微分控制,假設(shè)采用下列控制參數(shù)值:Kc為0.4,Ts為0.2秒,Ti為30分鐘,Td為15分鐘。(2)分析本系統(tǒng)標(biāo)準(zhǔn)化時可采用單極性方案,系統(tǒng)的輸入來自液位計的液位測量采樣;設(shè)定值是液位的50%,輸出是單極性模擬量用以控制閥門的開度,可以在0%~100%之間變化。(3)程序?qū)崿F(xiàn)本程序的主程序如圖5.21所示,回路表初始化子程序SBR0如圖5.22所示,中斷程序INT0如圖5.23所示。圖5.21主程序圖5.22初始化子程序SBR1圖5.23中斷子程序INT0(1)圖5.23中斷子程序INT0(2)返回本節(jié)
編程軟件
6.1.1系統(tǒng)要求操作系統(tǒng):Windows95、Windows98、WindowsME或
Windows2000計算機:IBM486以上兼容機,內(nèi)存8MB以上,VGA顯示器,至少50MB以上硬盤空間,Windows支持的鼠標(biāo)。通信電纜:PC/PPI電纜(或使用一個通信處理器卡),用來將計算機與PLC連接。返回本節(jié)6.1.2軟件安裝STEP7-Micro/WIN32編程軟件在一張光盤上,用戶可按以下步驟安裝:①將光盤插入光盤驅(qū)動器。
②系統(tǒng)自動進(jìn)入安裝向?qū)?,或單擊“開始”按鈕啟動Windows菜單。
③單擊“運行”菜單。
④按照安裝向?qū)瓿绍浖陌惭b。
⑤在安裝結(jié)束時,會出現(xiàn)是否重新起動計算機選項。返回本節(jié)6.1.3硬件連接可以用PC/PPI電纜建立個人計算機與PLC之間的通信。這是單主機與個人計算機的連接,不需要其他硬件,如調(diào)制解調(diào)器和編程設(shè)備等。典型的單主機連接及CPU組態(tài)如下圖6.1所示。返回本節(jié)6.1.4參數(shù)設(shè)置安裝完軟件并且設(shè)置連接好硬件之后,可以按下面的步驟核實默認(rèn)的參數(shù):(1)在STEP7-Micro/WIN32運行時單擊通信圖標(biāo),或從菜單中選擇View中選擇選項Communications,則會出現(xiàn)一個通信對話框。(2)在對話框中雙擊PC/PPI電纜的圖標(biāo),將出現(xiàn)PG/PC接口的對話框,可參見第7章的圖7.14。(3)單擊Properties按鈕,將出現(xiàn)接口屬性對話框,如圖8.16所示。檢查各參數(shù)的屬性是否正確,其中通信波特率默認(rèn)值為9600波特。返回本節(jié)6.1.5在線聯(lián)系前幾步如果都順利完成,則可以建立與SIMATICS7-200CPU的在線聯(lián)系,步驟如下:(1)在STEP7-Micro/WIN32下,單擊通信圖標(biāo),或從菜單中選擇View中選擇選項Communications,則會出現(xiàn)一個通信建立結(jié)果對話框,顯示是否連接了CPU主機。(2)雙擊通信建立對話框中的刷新圖標(biāo),STEP7-Micro/WIN32將檢查所連接的所有S7-200CPU站,并為每個站建立一個CPU圖標(biāo)。(3)雙擊要進(jìn)行通信的站,在通信建立對話框中可以顯示所選站的通信參數(shù)。返回本節(jié)6.1.6設(shè)置修改PLC通信參數(shù)如果建立了計算機和PLC的在線聯(lián)系,就可利用軟件檢查、設(shè)置和修改PLC的通信參數(shù)。步驟如下:(1)單擊引導(dǎo)條中的系統(tǒng)塊圖標(biāo),或從主菜單中選擇View菜單中的SystemBlock選項,將出現(xiàn)系統(tǒng)塊對話框。(2)單擊Port(s)選項卡。檢查各參數(shù),認(rèn)為無誤單擊OK確認(rèn)。如果需要修改某些參數(shù),可以先進(jìn)行有關(guān)的修改,然后單擊Apply按鈕,再單擊OK確認(rèn)后退出。(3)單擊工具條中的下裝圖標(biāo),即可把修改后的參數(shù)下裝到PLC主機。返回本節(jié)6.2功能6.2.1基本功能
6.2.2外觀
6.2.3各部分功能
6.2.4系統(tǒng)組態(tài)
返回本章首頁6.2.1基本功能程序編輯中的語法檢查功能可以提前避免一些語法和數(shù)據(jù)類型方面的錯誤。梯形圖和語句表的錯誤檢查結(jié)果如下圖6.2所示。軟件功能的實現(xiàn)可以在聯(lián)機工作方式(在線方式)下進(jìn)行,部分功能的實現(xiàn)也可以在離線工作方式下進(jìn)行。聯(lián)機方式:有編程軟件的計算機或編程器與PLC連接,此時允許兩者之間作直接的通信。有關(guān)聯(lián)機的方法可參見本章第1節(jié)。離線方式:有編程軟件的計算機或編程器與PLC斷開連接,此時能完成大部分基本功能。如編程、編譯和調(diào)試程序、系統(tǒng)組態(tài)等。返回本節(jié)6.2.2外觀啟動STEP7-Micro/WIN32編程軟件,其主界面外觀如圖6.3所示。界面一般可分以下幾個區(qū):菜單條(包含8個主菜單項)、工具條(快捷按鈕)、導(dǎo)引條(快捷操作窗口)、指令樹(快捷操作窗口)、輸出窗口和用戶窗口(可同時或分別打開圖中的5個用戶窗口)。圖6.3編程軟件外觀返回本節(jié)6.2.3各部分功能1.菜單條
2.工具條
3.導(dǎo)引條
4.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版:石料市場交易合同集3篇
- 科學(xué)解讀自然
- 2024版設(shè)備客戶服務(wù)保障合同版
- 健身房設(shè)備臨時租賃協(xié)議
- 石材回收利用合同
- 農(nóng)業(yè)用地土地開發(fā)協(xié)議書
- 電商物流產(chǎn)業(yè)園購房合同范本
- 人工智能服務(wù)保函協(xié)議書
- 娛樂行業(yè)墻面施工合同
- 深圳二手房合同范本解析
- 員工積分制管理實施方案細(xì)則
- GB/T 19752-2024混合動力電動汽車動力性能試驗方法
- 大灣區(qū)2023一2024學(xué)年第一學(xué)期末普通高中一年級聯(lián)合考試地理附有答案
- 美的簡單高效的管理邏輯
- 醫(yī)院科研成果轉(zhuǎn)化管理制度
- 魯科版小學(xué)英語三年級下冊全冊教案
- 醫(yī)院科研項目合同準(zhǔn)則
- 醫(yī)院精神科住院醫(yī)師病歷書寫考核評分表
- 證書掛靠協(xié)議書
- 防止騷擾聲明
- 2024年蘇州市職業(yè)大學(xué)單招職業(yè)適應(yīng)性測試題庫附答案
評論
0/150
提交評論