西門子PLC指令實(shí)例教程.ppt
第四章S7-300軟件基礎(chǔ),4.1PLC編程基礎(chǔ)4.2STEP7的指令結(jié)構(gòu)4.3位邏輯指令4.5定時器與計數(shù)器指令,4.1PLC編程基礎(chǔ),4.1.1STEP7編程語言,STEP7是S7-300/400系列PLC應(yīng)用設(shè)計軟件包,所支持的PLC編程語言非常豐富。該軟件的標(biāo)準(zhǔn)版支持STL(語句表)、LAD(梯形圖)及FBD(功能塊圖)3種基本編程語言,并且在STEP7中可以相互轉(zhuǎn)換。不同的編程語言可供不同知識背景的人員采用。其中LAD、STL和FBD是三種基本編程語言。,4.1.1STEP7編程語言,LAD(LAD:LadderDiagram)簡稱梯形圖,LAD是使用最多的PLC編程語言。因與繼電器電路很相似,具有直觀易懂的特點(diǎn),很容易被熟悉繼電器控制的電氣人員所掌握,特別適合于數(shù)字量邏輯控制,也適合于熟悉繼電器電路的人員使用。LAD編程語言如圖4.1所示。,圖4.1LAD編程語言,1、梯形圖(LAD),4.1.1STEP7編程語言,2、語句表(STL)STL(STL:StatementList)簡稱語句表,STL是一種類似于微機(jī)匯編語言的一種文本編程語言,由多條語句組成一個程序段。語句表適合于經(jīng)驗(yàn)豐富的程序員使用,可以實(shí)現(xiàn)某些梯形圖不能實(shí)現(xiàn)的功能。STL適用于喜歡用匯編語言編程的人員使用。STL編程語言如圖4.2所示。,圖4.2STL編程語言,4.1.1STEP7編程語言,3、功能塊圖(FBD)FBD(FBD:FunctionBlockDiagram)簡稱功能塊圖,功能塊圖使用類似于布爾代數(shù)的圖形邏輯符號來表示控制邏輯,一些復(fù)雜的功能用指令框表示。FBD適合于有數(shù)字電路基礎(chǔ)的編程人員使用。FBD編程語言如圖4.3所示。,4.1.1STEP7編程語言,圖4.3FBD編程語言,4.1.2S7-300CPU的系統(tǒng)存儲器,1、過程映像輸入表/輸出表(I/Q)過程映像輸入表(PII):循環(huán)掃描開始時,存儲數(shù)字量輸入模塊的輸入信號的狀態(tài)。過程映像輸出表(PIQ):循環(huán)掃描結(jié)束時,存儲用戶程序計算的輸出值,并將PIQ的內(nèi)容寫入數(shù)字量輸出模塊。2、內(nèi)部存儲器區(qū)(M)內(nèi)部存儲器區(qū)(M),主要用于存儲中間變量。3、定時器(T)存儲器區(qū)在CPU的存儲器中,有一個區(qū)域是專為定時器保留的。此存儲區(qū)域?yàn)槊總€定時器地址保留一個16位字。梯形圖邏輯指令集支持256個定時器。時間值可以用二進(jìn)制或BCD碼方式讀取。,4.1.2S7-300CPU的系統(tǒng)存儲器,4、計數(shù)器(C)存儲器區(qū)在用戶CPU的存儲器中,有為計數(shù)器保留的存儲區(qū)。此存儲區(qū)為每個計數(shù)器地址保留一個16位字。梯形圖指令集支持256個計數(shù)器。計數(shù)值(0999)可以用二進(jìn)制或BCD碼方式讀取。5、數(shù)據(jù)塊/背景數(shù)據(jù)塊(DB)DB為共享數(shù)據(jù)塊,DBX2.3,DBB5,DBW10和DBD12。DI為背景數(shù)據(jù)塊,DIX,DIB,DIW和DID。6、外部I/O存儲區(qū)(PI/PQ)外設(shè)輸入(PI)區(qū)和外設(shè)輸出(PQ)區(qū)允許直接訪問本地的和分布式的輸入模塊和輸出模塊。,4.1.3S7-300CPU的寄存器,1、累加器(ACCUx)累加器用于處理字節(jié)、字或雙字的寄存器。S7-300有兩個32位累加器(ACCU1和ACCU2)。2、狀態(tài)字寄存器(16位)狀態(tài)字用于表示CPU執(zhí)行指令時所具有的狀態(tài)。一些指令是否執(zhí)行或以何方式執(zhí)行可能取決于狀態(tài)字中的某些位;執(zhí)行指令時也可能改變狀態(tài)字中的某些位,也能在位邏輯指令或字邏輯指令中訪問并檢測。狀態(tài)字的結(jié)構(gòu)如圖4.4所示。,圖4.4狀態(tài)字的結(jié)構(gòu),4.1.4STEP7數(shù)據(jù)類型,在STEP7中,大多數(shù)指令要與具有一定大小的數(shù)據(jù)對象一起操作,不同的數(shù)據(jù)類型具有不同的格式。編程所用的數(shù)據(jù)要指定數(shù)據(jù)類型,要確定數(shù)據(jù)大小和數(shù)據(jù)的位結(jié)構(gòu)。數(shù)據(jù)類型分為3大類。1、基本數(shù)據(jù)類型基本數(shù)據(jù)類型有很多種,每種數(shù)據(jù)類型在分配內(nèi)存空間時有確定的位數(shù),如布爾型(BOOL)數(shù)據(jù)為1位,字節(jié)型(BYTE)數(shù)據(jù)為8位,字型(WORD)數(shù)據(jù)為16位,雙字型(DWORD)數(shù)據(jù)為32位。基本數(shù)據(jù)類型見表4-1。,4.1.4STEP7數(shù)據(jù)類型,表4-1STEP7中常用的基本數(shù)據(jù)類型,4.1.4STEP7數(shù)據(jù)類型,2、復(fù)式數(shù)據(jù)類型超過32位或由其他數(shù)據(jù)類型組成的數(shù)據(jù)為復(fù)式數(shù)據(jù)類型,STEP7允許4種復(fù)式數(shù)據(jù)類型,見表4-2。,表4-2STEP7中的復(fù)式數(shù)據(jù)類型,4.1.4STEP7數(shù)據(jù)類型,3、參數(shù)類型參數(shù)類型用于向FB和FC傳送參數(shù)。STEP7提供的參數(shù)類型見表4-3。,表4-3STEP7的參數(shù)類型,4.1.5PLC編程的基本原則,1)外部輸入、輸出繼電器、內(nèi)部繼電器、定時器、計數(shù)器等器件的接點(diǎn)可多次重復(fù)使用;2)梯形圖每一行都是從左母線開始,線圈接在最右邊,接點(diǎn)不能放在線圈的右邊;3)線圈不能直接與左母線相連;4)同一編號的線圈在一個程序中使用兩次容易引起誤操作,應(yīng)盡量避免線圈重復(fù)使用;5)梯形圖程序必須符合順序執(zhí)行的原則,從左到右,從上到下地執(zhí)行,如不符合順序執(zhí)行的電路不能直接編程;6)在梯形圖中串聯(lián)接點(diǎn)、并聯(lián)接點(diǎn)的使用次數(shù)沒有限制,可無限次地使用。,PLC編程應(yīng)該遵循以下基本原則:,4.2STEP7的指令結(jié)構(gòu)指令是程序的最小獨(dú)立單位,用戶程序是由若干條順序排列的指令構(gòu)成。STEP7編程語言其指令功能非常豐富。利用程序編輯器,可以進(jìn)行離線編程,即把程序存儲在編程器中,也可以進(jìn)行在線編程,將程序存儲在CPU中。4.2.1指令操作數(shù)指令操作數(shù)(又稱編程元件)一般在用戶存儲區(qū)中,操作數(shù)由操作標(biāo)識符和參數(shù)組成。操作標(biāo)識符由主標(biāo)識符和輔助標(biāo)識符組成,主標(biāo)識符用來指定操作數(shù)所使用的存儲區(qū)類型,輔助標(biāo)識符則用來指定操作數(shù)的單位(如:位、字節(jié)、字、雙字等)。主標(biāo)識符有:I(輸入過程映像寄存器)、Q(輸出過程映像寄存器)、M(位存儲器)、PI(外部輸入寄存器)、PQ(外部輸出寄存器)、T(定時器)、C(計數(shù)器)、DB(數(shù)據(jù)塊寄存器)和L(本地數(shù)據(jù)寄存器);輔助標(biāo)識符有:X(位)、B(字節(jié))、W(字)、D(雙字)。4.2.2尋址方式所謂尋址方式就是指令執(zhí)行時獲取操作數(shù)的方式,可以直接或間接方式給出操作數(shù)。S7-300有4種尋址方式:立即尋址、存儲器直接尋址、存儲器間接尋址和寄存器間接尋址。,1、立即尋址立即尋址是對常數(shù)或常量的尋址方式,其特點(diǎn)是操作數(shù)直接表示在指令中,或以唯一形式隱含在指令中。下面各條指令操作數(shù)均采用了立即尋址方式。SET/把RLO置1OWW#16#A320/將常量W#16#A320與累加器1“或”運(yùn)算L27/把整數(shù)27裝入累加器1LC#0100/把BCD碼常數(shù)0100裝入累加器12、存儲器直接尋址存儲器直接尋址,簡稱直接尋址。該尋址方式在指令中直接給出操作數(shù)的存儲單元地址。存儲單元地址可用符號地址(如SB1、KM等)或絕對地址(如I0.0、Q4.1等)。下面各條指令操作數(shù)均采用了直接尋址方式。AI0.0/對輸入位I0.0進(jìn)行“與”邏輯操作SL20.0/把本地數(shù)據(jù)位L20.0置1=M115.4/使存儲區(qū)位M115.4的內(nèi)容等于RLO的內(nèi)容LIB10/把輸入字節(jié)IB10的內(nèi)容裝入累加器1TDBD12/把累加器1中的內(nèi)容傳送給數(shù)據(jù)雙字DBD12中,3、存儲器間接尋址存儲器間接尋址,簡稱間接尋址。該尋址方式在指令中以存儲器的形式給出操作數(shù)所在存儲器單元的地址,也就是說該存儲器的內(nèi)容是操作數(shù)所在存儲器單元的地址。該存儲器一般稱為地址指針,在指令中需寫在方括號“”內(nèi)。地址指針可以是字或雙字,對于地址范圍小于65535的存儲器可以用字指針;對于其他存儲器則要使用雙字指針。存儲器間接尋址的雙字指針的格式如圖4.5所示。,圖4.5寄存器間接尋址的指針格式,4.3位邏輯指令,位邏輯指令包含位邏輯運(yùn)算指令、定時器指令、計數(shù)器指令和位測試指令等。可以使用位邏輯指令掃描布爾操作數(shù)的狀態(tài),通過“與(AND)”、“或(OR)”、“異或(XOR)”及其組合操作實(shí)現(xiàn)邏輯操作。所產(chǎn)生的結(jié)果(“1”或“0”)稱為邏輯運(yùn)算結(jié)果,存儲在狀態(tài)字的“RLO”中。邏輯操作結(jié)果(RLO)用于賦值、置位/復(fù)位布爾操作數(shù),也用于控制定時器和計數(shù)器的運(yùn)行。4.3.1觸點(diǎn)與線圈在LAD(梯形圖)程序中,通常使用類似繼電器控制電路中的觸點(diǎn)符號及線圈符號來表示PLC的位元件,被掃描的操作數(shù)(用絕對地址或符號地址表示)則標(biāo)注在觸點(diǎn)符號的上方,如圖4.6所示。,圖4.6觸點(diǎn)符號的表示方式,1、常開觸點(diǎn)對于常開觸點(diǎn)(動合觸點(diǎn)),則對“1”掃描相應(yīng)操作數(shù)。在PLC中規(guī)定:若操作數(shù)是“1”則常開觸點(diǎn)“動作”,即認(rèn)為是“閉合”的;若操作數(shù)是“0”,則常開觸點(diǎn)“復(fù)位”,即認(rèn)為是“打開”的。常開觸點(diǎn)所使用的操作數(shù)是:I、Q、M、L、D、T、C。2、常閉觸點(diǎn)常閉觸點(diǎn)(動斷觸點(diǎn))則對“0”掃描相應(yīng)操作數(shù)。在PLC中規(guī)定:若操作數(shù)是“1”則常閉觸點(diǎn)“動作”,即觸點(diǎn)“斷開”;若操作數(shù)是“0”,則常閉觸點(diǎn)“復(fù)位”,即觸點(diǎn)“閉合”。常閉觸點(diǎn)所使用的操作數(shù)是:I、Q、M、L、D、T、C。3、輸出線圈(賦值指令)輸出線圈與繼電器控制電路中的線圈一樣,如果有電流(信號流)流過線圈(RLO=“1”),則被驅(qū)動的操作數(shù)置“1”;如果沒有電流流過線圈(RLO=“0”),則被驅(qū)動的操作數(shù)復(fù)位(置“0”)。輸出線圈只能出現(xiàn)在梯形圖邏輯串的最右邊。輸出線圈等同于STL程序中的賦值指令(用等于號“=”表示)。輸出線圈所使用的操作數(shù)是:Q、M、L、D。,4、中間輸出在梯形圖設(shè)計時,如果一個邏輯串很長不便于編輯時,可以將邏輯串分成幾個段,前一段的邏輯運(yùn)算結(jié)果(RLO)可作為中間輸出,存儲在位存儲器(I、Q、M、L或D)中,該存儲位可以當(dāng)作一個觸點(diǎn)出現(xiàn)在其他邏輯串中。中間輸出只能放在梯形圖邏輯串的中間,而不能出現(xiàn)在最左端或最右端,如圖4.7所示。,(a)帶中間輸出的梯形圖(b)不帶中間輸出的等效梯形圖圖4.7帶中間輸出和不帶中間輸出的梯形圖程序,4.3.2位邏輯運(yùn)算指令,4.3.2位邏輯運(yùn)算指令位邏輯運(yùn)算指令是對“0”或“1”的布爾操作數(shù)進(jìn)行掃描,經(jīng)過相應(yīng)的位邏輯運(yùn)算,將邏輯運(yùn)算結(jié)果“0”或“1”送到狀態(tài)字的RLO位。1、“與”和“與非”(A,AN)指令邏輯“與”在梯形圖里是用串聯(lián)的觸點(diǎn)回路表示的,如果串聯(lián)回路里的所有觸點(diǎn)皆閉合,該回路就通“電”了。如圖4.8所示。,圖4.8“與”邏輯指令,2、“或”和“或非”(O,ON)指令邏輯“或”在梯形圖里是用并聯(lián)的觸點(diǎn)回路表示的,被掃描的操作數(shù)標(biāo)在觸點(diǎn)上方。在圖4.9中,只要有一個觸點(diǎn)閉合,輸出0.1的信號狀態(tài)就為“1”。,圖4.9“或”和“或非”邏輯梯形圖,3、“異或”和“異或非”(X,XN)指令圖4.10是“異或”邏輯梯形圖,它類似“或”和“或非”指令,用于掃描并聯(lián)回路能否“通電”。,圖4.10“異或”邏輯梯形圖,4、輸出指令邏輯輸出指令又稱為賦值操作指令,該操作把狀態(tài)字中RLO的值賦給指定的操作數(shù)(位地址)。表4.4列出了操作數(shù)的數(shù)據(jù)類型和所在的存儲區(qū)。,表4.4輸出指令,【例4-1】用“與”、“或”、“輸出”指令編寫電機(jī)啟動停止控制程序。編程元件地址分配:啟動按鈕SB1(常開觸點(diǎn)),I0.1;停止按鈕SB2(常閉觸點(diǎn)),I0.2;接觸器線圈KM,Q0.0。用梯形圖編寫的控制程序如圖4.11所示。,圖4.11電機(jī)啟停控制梯形圖程序,4.4.3置位和復(fù)位指令置位復(fù)位指令根據(jù)RLO的值,來決定被尋址位的信號狀態(tài)是否需要改變。若RLO的值為1,被尋址位的信號狀態(tài)被置1或清0;若RLO是0,則被尋址位的信號保持原狀態(tài)不變。置位復(fù)位指令有關(guān)內(nèi)容見表4.5。表4.5置位復(fù)位指令,(a)復(fù)位指令操作,(b)置位操作指令圖4.12置位復(fù)位指令,【例4.2】用置位與復(fù)位指令編制傳送帶運(yùn)動控制程序。如圖4.13所示為一個傳送帶,在傳送帶的起點(diǎn)有兩個按鈕:用于啟動的S1和用于停止的S2。在傳送帶的尾端也有兩個按鈕:用于啟動的S3和用于停止的S4。要求能從任一端啟動或停止傳送帶。另外,當(dāng)傳送帶上的物件到達(dá)末端時,傳感器S5使傳送帶停止。,圖4.13傳送帶示意圖,地址分配,梯形圖程序,圖4.14控制傳送帶程序,4.4.4RS和SR觸發(fā)器如果置位/復(fù)位指令用功能框圖表示就構(gòu)成了觸發(fā)器。該功能框有兩個輸入端,分別是置位輸入端S和復(fù)位輸入端R,有一個輸出Q(位地址)。觸發(fā)器可分為兩種類型:置位優(yōu)先型(RS觸發(fā)器,當(dāng)R和S驅(qū)動信號同時為“1”時,觸發(fā)器最終為置位狀態(tài))和復(fù)位優(yōu)先型(SR觸發(fā)器,當(dāng)R和S驅(qū)動信號同時為“1”時,觸發(fā)器最終為復(fù)位狀態(tài))。觸發(fā)器指令和操作數(shù)指令見表4.6。,表4.6RS觸發(fā)器,RS觸發(fā)器分為置位優(yōu)先和復(fù)位優(yōu)先型兩種,置位優(yōu)先型RS觸發(fā)器的R端在S端之上,當(dāng)兩個輸入端都為1時,下面的置位輸入最終有效。既置位輸入優(yōu)先,觸發(fā)器或被復(fù)位或保持復(fù)位不變,如圖4.15所示。,圖4.15置位優(yōu)先型RS觸發(fā)器,4.4.5位測試指令,當(dāng)信號狀態(tài)變化時就產(chǎn)生跳變沿。當(dāng)從0變到1時,產(chǎn)生一個上升沿(或正跳沿);若從1變到0,則產(chǎn)生一個下降沿(或負(fù)跳沿)。S7中有兩類跳變沿檢測指令,一種是對RLO的跳變沿檢測的指令,另一種是對觸點(diǎn)跳變沿直接檢測的梯形圖方塊指令。具體內(nèi)容見表4.7。,表4.7跳變沿檢測指令,圖4.16是使用RLO正跳沿檢測指令的例子。這個例子中,若CPU檢測到輸入I1.0有一個正跳沿,將使得輸出Q4.0的線圈在一個掃描周期內(nèi)通電。對輸入I1.0常開觸點(diǎn)掃描的RLO值存放在存儲位M1.0中。,圖4.16RLO正跳沿檢測,圖4.17是使用觸點(diǎn)負(fù)跳沿檢測指令的例子。圖中,由給出需要檢測的觸點(diǎn)編號(I0.3),(M0.0)用于存放該觸點(diǎn)在前一個掃描周期的狀態(tài)。,圖4.17觸點(diǎn)負(fù)跳沿檢測,【例4.3】設(shè)計故障信息顯示電路,若故障信號I0.0為1,使Q4.0控制的指示燈以1HZ的頻率閃爍。操作人員按復(fù)位按鈕I0.1后,如故障信息消失,指示燈熄滅。如果沒有消失,指示燈轉(zhuǎn)為常亮,直至故障消失。分析:故障信息顯示程序如圖4.18所示,在設(shè)置CPU屬性時令M1為時鐘存儲器字節(jié),其中的M1.5提供周期為1S的時鐘脈沖。出現(xiàn)故障時,將I0.0提供的故障信號用M0.1鎖存起來,使Q4.0控制的指示燈以1Hz的頻率閃爍。按復(fù)位按鈕I0.1后,將故障鎖存信號M0.1復(fù)位為0狀態(tài),如果這時故障以消失,指示燈熄滅。如果沒有消失,M0.1的常閉觸點(diǎn)與I0.0的常開觸點(diǎn)組成的串聯(lián)電路使指示燈轉(zhuǎn)為常亮,直至故障消失,I0.0變?yōu)?狀態(tài)。,圖4.18故障信息顯示梯形圖程序,4.5定時器與計數(shù)器指令,4.5.1定時器指令1、定時器的種類定時器是PLC中的重要部件,它用于實(shí)現(xiàn)或監(jiān)控時間序列。定時器是一種由位和字組成的復(fù)合單元,定時器的觸點(diǎn)由位表示,其定時時間值存儲在字存儲器中。不同的CPU模塊,用于定時器的存儲區(qū)域也不同,最多允許使用64512個定時器。在S7-300中有5種定時器可供選擇:脈沖定時器(SP)、擴(kuò)展定時器(SE)、接通延時定時器(SD)、帶保持的接通延時定時器(SS)和斷電延時定時器(SF)。2、定時器的組成在CPU的存儲器中留出了定時器區(qū)域,用于存儲定時器的定時時間值。每個定時器有一個16位的字和一個二進(jìn)制位,定時器的字用來存放它當(dāng)前的定時時間值,定時器觸點(diǎn)的狀態(tài)由它的位的狀態(tài)來決定。用定時器地址(T和定時器號,例如T6)來存取它的時間值和定時器位,帶操作數(shù)的指令存取定時器位,帶字操作數(shù)的指令存取定時器的時間值。不同的CPU支持32512個定時器,在S7-300中,最多允許使用256個定時器。,3、定時器的表示方法S7中的定時時間由時基和定時值兩部分組成,定時時間等于時基與定時值的乘積。采用減計時,定時時間到后會引起定時器觸點(diǎn)的動作。時間值以二進(jìn)制格式存放,定時器的第0位到第11位存放二進(jìn)制格式的定時值,第12、13位存放二進(jìn)制格式的時基,如圖4.19所示。表4.8給出了可能出現(xiàn)的組合情況。表4.8給出了可能出現(xiàn)的組合情況。,圖4.19累加器1低字的內(nèi)容(定時值127,時基1s),表4.8時基與定時范圍,設(shè)置定時時間,用戶需給累加器1裝入需要的數(shù)值,為避免格式錯誤,用戶可以按下列的形式將時間預(yù)置值裝入累加器的低位字:1)十六進(jìn)制數(shù)W#16#wxyz,其中,w=時間基準(zhǔn),取值為0,1,2或3,分別表示時基為10ms,100ms,1s或10s;xyz為定時值,取值范圍為1999;2)直接使用S5中的時間表示法裝入定時數(shù)值,例如:S5T#aH_bM_cS_dMS,其中,H=小時,M=分鐘,S=秒,MS=毫秒;a、b、c、d為用戶設(shè)置的值??奢斎氲淖畲髸r間值為9990s或2H-46M_30S。例如S5T#1H_12M_18S為1h12min18s;S5T#18S為18秒。,4、定時器梯形圖方塊指令,1)S5脈沖定時器脈沖定時器的功能類似于數(shù)字電路中上升沿觸發(fā)的單穩(wěn)態(tài)電路,圖4.19中的指令框中,S為脈沖定時器的設(shè)置輸入端,TV為預(yù)置值輸入端,R為復(fù)位輸入端;Q為定時器位輸出端,BI輸出16進(jìn)制格式的當(dāng)前時間值,BCD輸出當(dāng)前時間值的BCD碼。,圖4.19脈沖定時器指令,在I0.0提供的啟動輸入信號S的上升沿,脈沖定時器開始定時,輸出Q04.0變?yōu)?。定時器的當(dāng)前時間值等于TV端輸入的預(yù)置值(即初值)減去啟動后的時間值。定時時間到時,當(dāng)前時間值變?yōu)?,Q輸出變?yōu)?狀態(tài)。在定時期間,如果I0.0的常開觸點(diǎn)斷開,則停止定時,當(dāng)前時間值便為0,Q0.0的線圈斷電。工作時序如圖4.20,圖4.20中的t是定時器的預(yù)置值。R是復(fù)位輸入端,在定時器輸出為1時,如果復(fù)位輸入I0.1由0變?yōu)?,定時器被復(fù)位,復(fù)位后輸出Q0.0變?yōu)?狀態(tài),當(dāng)前時間值和時標(biāo)被請0。BI輸出端輸出不帶時基的十六進(jìn)制整數(shù)格式的定時器當(dāng)前值,BCD輸出端輸出BCD碼格式的當(dāng)前時間值和時基。,圖4.20脈沖定時器時序,2)S5擴(kuò)展脈沖定時器S5擴(kuò)展脈沖定時器如圖4.21,各個輸入輸出端的意義與S5脈沖定時器相同。,圖4.21擴(kuò)展脈沖定時器指令,在啟動輸入信號S的上升沿,脈沖定時器開始定時,在定時期間,Q輸出端為1狀態(tài),直到定時結(jié)束。在定時期間即使S輸入變?yōu)?狀態(tài),仍繼續(xù)定時,Q輸出端為1狀態(tài),直到定時結(jié)束。在定時期間,如果S輸入又由0變?yōu)?狀態(tài),定時器被重新啟動,開始以預(yù)置的時間值定時。,R輸入有0變?yōu)?狀態(tài)時,定時器被復(fù)位,停止定時。復(fù)位后Q輸出端變?yōu)?狀態(tài),當(dāng)前時間和時標(biāo)被清0。工作時序圖如圖4.22所示。,圖4.22擴(kuò)展脈沖定時器時序,3)S5開通延時計時器接通延時定時器是使用最多的定時器,定時器各輸入端和輸出端的意義和S5脈沖定時器相同,如圖4.23。,圖4.23開通延時定時器指令,在啟動輸入信號S的上升沿,定時器開始定時。定時器的當(dāng)前時間值等于預(yù)設(shè)值TV減去啟動后的時間值。如果定時期間S的狀態(tài)一直為1,定時時間到時,當(dāng)前時間值變?yōu)?,Q輸出端變?yōu)?狀態(tài),使Q0.2的線圈通電。此后如果S輸入由1變?yōu)?,Q輸出端的信號也變?yōu)?。在定時期間,如果S輸入由1變?yōu)?,則停止定時,當(dāng)前時間值保持不變。S又變?yōu)?時,又從預(yù)設(shè)值開始定時,工作時序圖如圖4.24。R是復(fù)位輸入信號,定時器的S輸入為1時,不管定時時間是否已到,只要復(fù)位輸出R由0變?yōu)?,定時器都要被復(fù)位,復(fù)位后當(dāng)前時間和時基被清0。如果定時時間已到,復(fù)位后輸出Q由1變?yōu)?。,圖4.24開通延時計時器時序,4)S5保持型接通延時定時器定時器各輸入端和輸出端的意義與S5定時器相同,如圖4.25所示。在啟動輸入信號S的上升沿,定時器開始定時,工作時序圖如圖4.26所示,定時期間及輸入S變?yōu)?,仍然繼續(xù)定時。定時時間到時,輸出Q變?yōu)?并保持。在定時期間,如果輸入S又由0變?yōu)?,定時器被重新啟動,又從預(yù)置值開始定時。不管輸入S是什么狀態(tài),只要復(fù)位輸入R從0變?yōu)?,定時器就被復(fù)位,輸出變?yōu)?。,圖4.25保持型開通延時定時器,圖4.26保持型開通延時定時器時序,圖4.26保持型開通延時定時器時序5)S5斷開延時定時器定時器各輸入端和輸出端的意義與S5脈沖延時器相同,如圖4.27。在啟動輸入信號S的上升沿,定時器的Q輸出信號變?yōu)?狀態(tài),當(dāng)前時間值為0。在S輸入的下降沿,定時器開始定時。定時時間到時,輸出Q變?yōu)?狀態(tài),正在定時的時候,如果S信號由0變?yōu)?,定時器的時間值保持不變,停止定時。如果輸入S重新變?yōu)?,定時器從預(yù)置值開始重新定時。,復(fù)位輸入I0.1為1狀態(tài)時,定時器被復(fù)位,時間值被清0,輸出Q變?yōu)?狀態(tài)。S5斷開延時定時器工作時序圖如圖4.28。,圖4.27斷開延時定時器,圖4.28斷開延時定時器工作時序圖,5、定時器線圈指令1)脈沖定時器線圈脈沖定時器線圈的功能和時序圖和S5脈沖定時器的相同,定時器位為1時,定時器的常開觸點(diǎn)閉合,常閉觸點(diǎn)斷開。在圖4.29中,當(dāng)I0.0的常開觸點(diǎn)由斷開變?yōu)榻油〞r,定時器開始定時,T0的常開觸點(diǎn)閉合。定時時間到時,T0的常開觸點(diǎn)斷開。在定時期間,如果I0.0變?yōu)?狀態(tài),或者復(fù)位輸入I0.1變?yōu)?狀態(tài),T0的常開觸點(diǎn)都將斷開,定時器的當(dāng)前值被清0。,圖4.29脈沖定時器線圈2)擴(kuò)充的脈沖定時器線圈在圖4.30中,當(dāng)I0.2的常開觸點(diǎn)由斷開變?yōu)榻佑|時,定時器T1開始定時,在定時期間,T1的常開觸點(diǎn)閉合。定時時間到時,T1的常開觸點(diǎn)斷開。在定時期間,即使I0.2變?yōu)?狀態(tài),仍繼續(xù)定時。定時期間如果I0.2又由0狀態(tài)變?yōu)?狀態(tài),定時器被重新啟動。復(fù)位輸入I0.3由0變?yōu)?狀態(tài)時,T1被復(fù)位,其常開觸點(diǎn)斷開。,3)接通延時定時器線圈如圖4.31當(dāng)I0.4的常開觸點(diǎn)由斷開變?yōu)榻油〞r,定時器T2開始定時,如果I0.4一直為1,定時時間到時,T2的常開觸點(diǎn)閉合。定時期間如果SD的線圈斷電,T2的當(dāng)前時間保持不變。線圈重新通電時,又從預(yù)置值開始定時。復(fù)位輸入I0.5變?yōu)?時,T2的常開觸點(diǎn)斷開,時間被清0。,圖4.30擴(kuò)充的脈沖定時器線圈,4)保持型接通延時定時器線圈如圖4.32,當(dāng)I0.6的常開觸點(diǎn)由斷開變?yōu)榻油〞r,定時器開始定時。定時期間即使T3的線圈斷電,仍繼續(xù)定時。定時時間到時,T3的定時器位變?yōu)?,其常開觸點(diǎn)閉合。只有復(fù)位輸入I0.7變?yōu)?,才能使T3復(fù)位,復(fù)位后其定時器位變?yōu)?,常開觸點(diǎn)斷開。在定時期間,I0.6的常開觸點(diǎn)如果斷開后又變?yōu)榻油?,定時器將被重新啟動,以設(shè)置的預(yù)置值重新開始定時。,圖4.31接通延時定時器線圈,5)斷開延時定時器線圈如圖4.33,當(dāng)I1.0的常開觸點(diǎn)由斷開變?yōu)榻油〞r,T4的輸出變?yōu)?,其常開觸點(diǎn)閉合。在I1.0的下降沿,定時器開始定時。定時器到時,T5的時間值變?yōu)?,其常開觸點(diǎn)斷開。在定時期間,如果I1.0的常開觸點(diǎn)由斷開變?yōu)榻油?,定時器的時間值保持不變,停止定時。如果I1.0的常開觸點(diǎn)重新斷開,定時器從預(yù)置值開始重新啟動定時。復(fù)位輸入I1.1為1狀態(tài)時,定時器被復(fù)位,時間值被清0,Q4.4的線圈斷電。,圖4.32保持型接通延時定時器線圈,對于以上不同形式的定時器指令,一般的選擇原則是:1、如果要求輸入信號為1的時間等于定時器的設(shè)定時間,且要求輸入與輸出信號狀態(tài)一致時,可選擇脈沖定時器SP;2、如果要求輸出信號為1的時間等于定時器的設(shè)定時間,但不要求輸入與輸出信號狀態(tài)一致,不考慮輸入信號為1的時間長短,可選擇擴(kuò)展定時器SE;3、如果要求設(shè)定時間到且輸入信號仍為1時,輸出信號才從0變到1,可選擇接通延時定時器SD;,圖4.33斷開延時定時器線圈,4、如果要求設(shè)定時間到時,輸出信號才從0變到1,而不考慮輸入信號此時的狀態(tài)及為1的時間長短可選擇保持型接通延遲定時器SS;5、如果要求輸入信號從0變到1時,輸出信號也從0變化到1,當(dāng)輸入信號從1變化到0才開始延遲,延遲時間到時輸出信號才從1變化到0,可選擇斷開延遲定時器SF?!纠?.4】脈沖定時器應(yīng)用:優(yōu)先搶答器設(shè)計,圖4.32搶答器示意圖,設(shè)計說明:參賽者要搶答主持人所提問題時,需搶先按下桌上的按鈕;指示燈亮后需待主持人按下“復(fù)位”鍵R后才熄燈;對初中班學(xué)生照顧,只要按下SB11和SB12中任一個按鈕燈HL1都亮;對高三班學(xué)生限制,只有SB31和SB32都按下時燈HL3才亮;若在主持人按下“開始”按鈕S后10s內(nèi)有搶答按鈕壓下,則電磁鐵YC得電,使彩球搖動,以示競賽者得到一次幸運(yùn)的機(jī)會;如果定時到仍未有搶答,則禁止繼續(xù)搶答,如圖4.32。參考答案:端子接線圖,如圖4.33.,圖4.33搶答器端子接線圖,I/O地址分配表,如圖4.34,圖4.34搶答器I/O地址分配表,控制程序如圖4.35,設(shè)置搶答定時器,初中組搶答控制,高一組搶答控制,圖4.35搶答器的梯形圖程序,高三組搶答控制,【例4.5】擴(kuò)展脈沖定時器應(yīng)用電動機(jī)延時自動關(guān)閉控制。控制要求:按動起動按鈕S1(I0.0),電動機(jī)M(Q4.0)立即起動,延時5分鐘以后自動關(guān)閉。起動后按動停止按鈕S2(I0.1),電動機(jī)立即停機(jī)??刂瞥绦蛉鐖D4.36。,圖4.36電動機(jī)延時自動關(guān)閉控制梯形圖,【例4.6】接通延時定時器和脈沖定時器應(yīng)用用定時器構(gòu)成一脈沖發(fā)生器,當(dāng)滿足一定條件時,能夠輸出一定頻率和一定占空比的脈沖信號。控制要求:當(dāng)按鈕S1(I0.0)按下時,輸出指示燈H1(Q4.0)以滅2s,亮1s規(guī)律交替進(jìn)行。,(方法1:使用接通延時定時器),(方法2:使用脈沖定時器),圖4.37應(yīng)用接通延時定時器和脈沖定時器構(gòu)成脈沖發(fā)生器梯形圖,【例4.7】接通延時定時器的應(yīng)用電動機(jī)順序起??刂???刂埔螅喝鐖D4.38所示,某傳輸線由兩個傳送帶組成,按物流要求,當(dāng)按動起動按鈕S1時,皮帶電機(jī)Motor_2首先起動,延時5s后,皮帶電機(jī)Motor_1自動起動;如果按動停止按鈕S2,則Motor_1立即停機(jī),延時10s后,Motor_2自動停機(jī)。,圖4.38電機(jī)順序起??刂剖疽鈭D,圖4.40I/O地址分配表,圖4.39電機(jī)順序起停控制接線端子圖,圖4.41電機(jī)順序起??刂铺菪螆D程序,【4.8】閃爍燈控制程序。某信號燈HL,當(dāng)開關(guān)S1接通后,就以滅1S、亮2S的頻率不斷閃爍。IO地址分配:本例中只有一個輸入,開關(guān)S1,編程地址為I0.0;1個輸出,信號燈HL,編程地址為Q4.0。因?yàn)樾盘枱酎c(diǎn)亮和熄滅的時間不同,所以需要兩個定時器T1和T2,T1的時間設(shè)定值為2S,T2的時間設(shè)定值為1S??刂瞥绦蛉缦拢?圖4.42信號燈閃爍控制程序,【4.9】定時器擴(kuò)展應(yīng)用。在S7-300中,單個定時器的最大計時范圍是9990s(2H_46M_30S),如果超過這個范圍,可以采用兩個或多個定時器級聯(lián)的方法來擴(kuò)展計時范圍。現(xiàn)在考慮一個要求延時為5個小時的控制任務(wù)。假定T1的時間設(shè)定值為2H_20M,T2的時間設(shè)定值為2H_40M,則T1+t2=5H。其控制程序如圖所示。,圖4.43兩個定時器級聯(lián)梯形圖,【4.10】用定時器設(shè)計周期和占空比可調(diào)的震蕩電路。圖4.44中I0.0的常開觸點(diǎn)接通后,T8的線圈通電,開始定時。2S后定時時間到,T8的常開觸點(diǎn)接通,使Q4.7變?yōu)?狀態(tài),同時T9開始定時。3S后T9的定時時間到,它的常閉觸點(diǎn)斷開使T8的線圈斷電,T8的常開觸點(diǎn)斷開,使Q4.7和T9的線圈斷電。下一個掃描周期因T9的常閉觸點(diǎn)接通,T8又從預(yù)置值開始定時,以后Q4.7的線圈將這樣的周期性地通電和斷電,直到I0.0變?yōu)?狀態(tài)。Q4.7線圈通電和斷電的時間分別等于T9和T8的預(yù)置值。振蕩電路實(shí)際上是一個有正反饋的電路,T8和T9通過它們的觸點(diǎn)分別控制對方的線圈,形成了正反饋。,圖4.44振蕩電路梯形圖,4.5.2計數(shù)器指令計數(shù)器是PLC提供的一個基本功能,S7系列PLC的CPU中有專門的計數(shù)器存儲區(qū),計數(shù)器存儲區(qū)的大小由CPU的型號決定。例如:CPU313C的PLC計數(shù)存儲區(qū)為256個計數(shù)器,即C0-C255。每個計數(shù)器有一個16位的字和一個二進(jìn)制的位,計數(shù)器的字用來存放它的當(dāng)前值,計數(shù)器觸點(diǎn)的狀態(tài)由它的位的狀態(tài)來決定。計數(shù)器指令是存取計數(shù)器存儲區(qū)的唯一功能。S7300中有3種計數(shù)器可供選擇:加計數(shù)器(CU)、減計數(shù)器(CD)和加減技術(shù)器(CUD)。與定時器指令一樣,計數(shù)器指令在梯形圖中也有兩種表示形式:計數(shù)器線圈指令表4.9和計數(shù)器方框指令表4.10。兩者可實(shí)現(xiàn)相同的功能,用戶可根據(jù)實(shí)際需要選擇使用。表4.9計數(shù)器線圈指令表,表4.10計數(shù)器方框指令表,1、加計數(shù)器如圖4.45的指令框中,S為加計數(shù)器的設(shè)置輸入端,PV為設(shè)置值輸入端,CU為加計數(shù)脈沖輸入端,R為復(fù)位輸入端;Q為計數(shù)器位輸出端,CV輸出十六進(jìn)制格式的當(dāng)前計數(shù)值,BCD輸出當(dāng)前計數(shù)值的BCD碼。,圖4.45加計數(shù)器梯形圖在“設(shè)置”輸入信號I0.1的上升沿,將預(yù)置值PV指定的值送入計數(shù)器字。在“加計數(shù)脈沖”輸入信號I0.0的上升沿,如果計數(shù)值小于999,計數(shù)值加1。“復(fù)位”輸入信號I0.2為1時,計數(shù)器被復(fù)位,計數(shù)值被清0。計數(shù)值大于0時計數(shù)器位即輸出Q為1;計數(shù)值為0時,計數(shù)器復(fù)位也為0。,如果在用“設(shè)置”輸入S設(shè)置計數(shù)器時CU輸入為1,即使信號沒有變化,下一個掃描周期也會計數(shù)。2、加計數(shù)器線圈設(shè)置計數(shù)值線圈SC用來設(shè)置計數(shù)值,該指令僅在RLO的上升沿(由0變?yōu)?)時執(zhí)行,此時預(yù)置值被送入指定的計數(shù)器。圖4.46中I0.2的觸點(diǎn)由斷開變?yōu)榻油〞r,預(yù)置值6給送入計數(shù)器C10。圖中標(biāo)有CU的線圈為加計數(shù)線圈。在I0.0的上升沿,如果計數(shù)值小于6,計數(shù)值加1。復(fù)位輸入I0.3為1時,計數(shù)器被復(fù)位,計數(shù)值被清0。,圖4.46加計數(shù)線圈,3、減計數(shù)器在圖4.47中的設(shè)置輸入S的上升沿,用PV指定的值預(yù)置減計數(shù)器。在減計數(shù)輸入信號CD上升沿,如果計數(shù)值大于0,計數(shù)值減1。復(fù)位輸入R為1時,計數(shù)器被復(fù)位,計數(shù)值被清0。計數(shù)值大于0時計數(shù)器的輸出Q為1;計數(shù)值為0時,Q為0。如果在設(shè)置計數(shù)器時CD輸入為1,即使信號沒有變化,下一掃描周期也會計數(shù)。,圖4.47減計數(shù)器梯形圖,4、減計數(shù)器線圈圖4.48中標(biāo)有CD的線圈為減計數(shù)線圈,I0.5的觸點(diǎn)由斷開變?yōu)榻油〞r,預(yù)置值5被送入計數(shù)器C11。在I0.4的上升沿,如果計數(shù)值大于0,計數(shù)值減1.計數(shù)值非0時,C11的常開觸點(diǎn)閉合,為0時c11的常開觸點(diǎn)斷開。復(fù)位輸入I0.6為1時,計數(shù)器被復(fù)位,計數(shù)值被清0。,圖4.48減計數(shù)器線圈,【4.11】用計數(shù)器擴(kuò)展定時器的定時范圍。s7300的定時器的最常定時時間為9990s,如果需要更長的定時時間,可以使用圖4.49所示的電路。I0.0為0狀態(tài)時,計數(shù)器C0被復(fù)位。I0.0變?yōu)?狀態(tài)時,其常開觸點(diǎn)接通,使T11和T12組成的震蕩電路開始工作,計數(shù)器的預(yù)置值999被送入計數(shù)器C0。I0.0的常閉觸點(diǎn)斷開,C0被解除復(fù)位。振蕩電路的振蕩周期為T11和T12預(yù)置值之和,圖中的振蕩電路相當(dāng)于周期為4小時的時鐘脈沖發(fā)生器。每隔4小時,當(dāng)T12的定時時間到,T11的常開觸點(diǎn)由接通變?yōu)閿嚅_,其脈沖的下降沿通過減計數(shù)線圈CD使C0的計數(shù)值減1。計滿999個數(shù)(即3996H)C0的當(dāng)前值減為0,它的常閉觸點(diǎn)閉合,使Q5.4的線圈通電。總的定時時間等于震蕩電路的振蕩周期乘以C0的計數(shù)預(yù)置值。,圖4.49定時器范圍的擴(kuò)展,5、加減計數(shù)器在設(shè)置輸入S的上升沿,見圖4.50,用PV指定的預(yù)置值設(shè)置加減計數(shù)器。復(fù)位輸入R為1時,計數(shù)器被復(fù)位,計數(shù)值被清0。在加計數(shù)輸入信號CU的上升沿,如果計數(shù)器值小于999,計數(shù)器加1。在減計數(shù)器輸入信號CD的上升沿,如果計數(shù)器值大于0,計數(shù)值減1。如果兩個計數(shù)輸入均為上升沿,兩條指令均被執(zhí)行,計數(shù)值保持不變。計數(shù)值大于0時輸出信號Q為1;計數(shù)值為0時,Q亦為0。如果在設(shè)置計數(shù)器時CU或CD輸入為1,即使信號沒有變化,下一掃描周期也會計數(shù)。,圖4.50加減計數(shù)器梯形圖方塊,4.5.3CPU的時鐘存儲器在S7系列PLC的CPU的位存儲器M中,可以任意指定一個字節(jié),如MB100作為時鐘脈沖存儲器,當(dāng)PLC運(yùn)行時,MB100的各個位能周期性地改變二進(jìn)制值,即產(chǎn)生不同頻率或周期的時鐘脈沖。時鐘存儲器字節(jié)產(chǎn)生的時鐘脈沖與存儲器位的關(guān)系見表4.11。表4.11時鐘脈沖與存儲器位的關(guān)系,圖4.51硬件配置畫面,圖4.52選擇CPU模板,圖4.53設(shè)置時鐘存儲器【例4.12】時鐘存儲器與計數(shù)器的應(yīng)用。當(dāng)定時器不夠用時,可以將計數(shù)器擴(kuò)展為定時器。圖4.54中給出了用減計數(shù)器擴(kuò)展定時器的控制程序,程序中使用了CPU的時鐘存儲器,設(shè)置MB10為時鐘存儲器,由表4-11可知M10.0的變化周期為0.1s。,圖4.54減計數(shù)器擴(kuò)展定時器的控制程序4.6數(shù)據(jù)處理指令數(shù)據(jù)處理指令包括數(shù)據(jù)傳送指令與數(shù)據(jù)轉(zhuǎn)換指令,其中輸出傳送包括數(shù)據(jù)裝入與傳送指令。4.6.1裝入和傳送指令裝入(L,Load)指令和傳送(T,Transfer)指令用于在存儲區(qū)之間或存儲區(qū)與過程輸入、過程輸出之間交換數(shù)據(jù)。CPU執(zhí)行這些指令不受邏輯操作結(jié)果RLO的影響。數(shù)據(jù)裝入L和數(shù)據(jù)傳送T指令通過累加器進(jìn)行數(shù)據(jù)交換。累加器是CPU中的一種專用寄存器,可以作為“緩沖器”。數(shù)據(jù)的傳送和交換一般是通過累加器進(jìn)行的,而不是在存儲區(qū)直接進(jìn)行。在S7-300中,有兩個32位的累加器:累加器1和累加器2。當(dāng)執(zhí)行裝入指令L時,是將源操作數(shù)裝入累加器1中,而累加器原有的數(shù)據(jù)移入累加器2中,累加器2中原有的內(nèi)容被覆蓋。當(dāng)執(zhí)行傳送指令T時,是將累加器1中的內(nèi)容寫入目的存儲區(qū)中,累加器的內(nèi)容保持不變。L和T指令可以對字節(jié)(8位)、字(16位)、雙字(32位)數(shù)據(jù)進(jìn)行操作,當(dāng)數(shù)據(jù)長度小于32位時,數(shù)據(jù)在累加器1中右對齊(低位對齊),其余各位填0。裝入指令與傳送指令見表4.12。,表4.12裝入指令與傳送指令表,4.6.2梯形圖中方塊傳送指令在梯形圖中,用MOVE功能框圖表示裝入和傳送指令,指令框的輸入端在左邊,輸出端在右邊。能傳送數(shù)據(jù)長度為8位、16位或32位的所有基本數(shù)據(jù)類型。如果允許輸入端EN為1,則允許執(zhí)行傳送操作,使輸出OUT等于輸入IN,并使允許輸出端ENO為1。如果允許輸入端EN為0,則不進(jìn)行傳送操作,并使允許輸出端ENO為0。梯形圖傳送指令及操作數(shù)見表4.13。表4.13傳送指令梯形圖及操作數(shù),【例4.13】當(dāng)輸入I0.2為1時,執(zhí)行傳送操作,將MW20的內(nèi)容傳送到DBW20,且使輸出Q4.0為1。梯形圖控制程序如圖4.55。,圖4.55傳送指令梯形圖控制程序4.6.2轉(zhuǎn)換指令轉(zhuǎn)換指令是將累加器1中的數(shù)據(jù)進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換,轉(zhuǎn)換的結(jié)果仍存放在累加器1中。STEP7能夠?qū)崿F(xiàn)的轉(zhuǎn)換操作有:BCD碼和整數(shù)到其他類型轉(zhuǎn)換指令;整數(shù)和實(shí)數(shù)的變換指令;實(shí)數(shù)取整指令;累加器1調(diào)整指令。,1、BCD和整數(shù)的轉(zhuǎn)換,見表4.14。表4.14BCD和整數(shù)的轉(zhuǎn)換,【例4.14】如果輸入I0.1為1,則將MD0的內(nèi)容以7位BCD碼的格式裝入累加器1,并將其轉(zhuǎn)換為長整數(shù),存放到MD10,如果轉(zhuǎn)換不執(zhí)行,則輸出Q4.0為1。梯形圖控制程序如圖4.56所示。,4.7運(yùn)算指令STEP7的運(yùn)算指令包括算數(shù)運(yùn)算指令、字邏輯運(yùn)算指令和比較指令。4.7.1算數(shù)運(yùn)算指令算術(shù)運(yùn)算指令包括整數(shù)(INT)運(yùn)算指令、雙整數(shù)(DINT)運(yùn)算指令和實(shí)數(shù)(REAL)運(yùn)算指令。無論是哪種數(shù)據(jù)類型均有以下四種運(yùn)算指令:1、加法運(yùn)算指令A(yù)DD2、減法運(yùn)算指令SUB3、乘法運(yùn)算指令MUL4、除法運(yùn)算指令DIV,整數(shù)、雙整數(shù)以及實(shí)數(shù)在指令中的簡寫分別為I、DI、R,因此由指令的名稱可以判斷指令的功能,例如ADD_R,表示實(shí)數(shù)指令加法指令。DIV_DI,表示雙整數(shù)除法指令。MUL_I,表示整數(shù)乘法指令。表4.15給出了算數(shù)運(yùn)算的方框圖指令,圖中的EN為使能輸入端,ENO為使能輸出端。IN1和IN2為操作數(shù)輸入端,OUT為運(yùn)算結(jié)果輸出端。在加減法指令中,IN1+IN2=OUT,IN1-IN2=OUT在乘除法指令中,IN1*IN2=OUT,IN1/IN2=OUT表4.15算數(shù)運(yùn)算的方框圖指令,在圖4.57中,如果I0.6為1,MD2中的雙整數(shù)除以MD6中的雙整數(shù),運(yùn)算結(jié)果傳送到MD10。如果運(yùn)算未能成功地完成,則狀態(tài)字的OV和OS位為1,且使ENO為0,Q4.1為1狀態(tài);若運(yùn)算成功地完成,則狀態(tài)字的OV被清0,OS位保持原狀態(tài)不變,且使RLO為1。,圖4.57整數(shù)除法指令,【例4.15】壓力變送器的量程為0-10Mpa,輸出信號為4-20mA,S7-300的模擬量輸入模塊的量程為4-20mA,轉(zhuǎn)換后的數(shù)字量為0-27468,設(shè)轉(zhuǎn)換后的數(shù)字為N,試求以kPa為單位的壓力值。解:0-10MPa(0-10000kPa)對應(yīng)轉(zhuǎn)換后的數(shù)字0-27468,轉(zhuǎn)換公式為P=(10000N)/27468kPa(4-1)值得注意的是在運(yùn)算時一定要先乘后除,否則會損失原數(shù)據(jù)的精度。假設(shè)A/D轉(zhuǎn)換后的數(shù)據(jù)N在MD6中,以kPa為單位的運(yùn)算結(jié)果在MW10中。圖4.58是實(shí)現(xiàn)式4-1中的運(yùn)算的梯形圖程序。,圖4.58算術(shù)運(yùn)算指令,如果某一方框指令的運(yùn)算結(jié)果超出了整數(shù)運(yùn)算指令的允許范圍,狀態(tài)位OV和OS將為1,使能輸入ENO為0,不會執(zhí)行在該方框指令右邊的指令。值得注意的是梯形圖中的MUL_I指令的運(yùn)算結(jié)果為16位整數(shù),A/D轉(zhuǎn)換后的最大數(shù)字為27468,乘以10000以后可能超過16位整數(shù)的允許范圍,所以需要使用雙字乘法指令MUL_DI。雙字除法指令DIV_DI的運(yùn)算結(jié)果為雙字,但是由式4-1可知運(yùn)算實(shí)際結(jié)果不會超過16位整數(shù)的最大值(32767),所以可以用MOVE指令將MD20的低字MW22中16位整數(shù)運(yùn)算結(jié)果傳送到MW10中。4.7.2字邏輯運(yùn)算指令字邏輯運(yùn)算指令按照布爾邏輯將成對的字(16位)和雙字(32位)逐位進(jìn)行比較。字邏輯運(yùn)算指令見表4.16。表4.16字邏輯運(yùn)算指令,【例4.17】如果I0.0為1,則只允許將MW0的第0-3位的數(shù)據(jù)狀態(tài)傳送到MW4的對應(yīng)位,而將MW0的其余屏蔽。如果傳送成功,則Q4.0為1。根據(jù)要求,可采用邏輯字與(AW)指令,控制程序如圖4.59所示。,圖4.59邏輯字與控制程序,4.7.3比較指令比較指令用于對累加器2和累加器1中的數(shù)據(jù)進(jìn)行比較。數(shù)據(jù)類型可以是整數(shù)、長整數(shù)或?qū)崝?shù),但是要確保進(jìn)行比較的兩個數(shù)據(jù)的類型相同。如果比較條件滿足,則RLO為1,否則為0。梯形圖中的方框比較指令用來比較兩個同類型的數(shù),與語句表中的比較指令類似,可以比較整數(shù)(I)、雙整數(shù)(D)和浮點(diǎn)數(shù)(R),比較指令見表4.17。表4.17比較指令表,在使能輸入信號為1時,比較IN1和IN2輸入的兩個操作數(shù)。方框比較指令在梯形圖中相當(dāng)于一個常開觸點(diǎn),可以與其他觸點(diǎn)串聯(lián)和并聯(lián)。如果被比較的兩個數(shù)滿足指令的大于、等于、小于條件,比較結(jié)果為真,等效觸點(diǎn)閉合,指令框有能流流過。【例4.18】比較指令應(yīng)用實(shí)例圖4.60示出包括兩臺傳送帶的系統(tǒng),在兩臺傳送帶之間有一個倉庫區(qū)。傳送帶1將包裹運(yùn)送至臨時倉庫區(qū)。傳送帶1靠近倉庫區(qū)一端安裝的光電傳感器確定已有多少包裹運(yùn)送至倉庫區(qū)。傳送帶2將臨時庫區(qū)中的包裹運(yùn)送至裝貨場,在這里貨物由卡車運(yùn)送至顧客。傳送帶2靠近庫區(qū)一端安裝的光電傳感器確定已有多少包裹從庫區(qū)運(yùn)送至裝貨場。含5個指示燈的顯示盤表示臨時倉庫區(qū)的占用程度。圖4.61給出了啟動顯示盤上指示燈的梯形邏輯程序。,圖4.60裝有計數(shù)器和比較器的倉庫區(qū),程序段1:MW200中保存計數(shù)器C1當(dāng)前值的BCD碼,Q12.1指示“倉庫區(qū)不空”,程序段2:Q12.0指示“倉庫區(qū)空”,程序段3:如果計數(shù)器值大于等于50,則“倉庫區(qū)裝入50%”指示燈亮。,程序段4:如果計數(shù)器值大于等于90,則“倉庫區(qū)裝入90%”指示燈亮。,程序段5:如果計數(shù)器值大于等于100,則“倉庫區(qū)裝滿”指示燈亮,用輸出Q15.4將傳送帶1連鎖。,圖4.61啟動顯示盤上指示燈的梯形邏輯,思考與練習(xí)題,1、S7-300系列PLC如何直接尋址?什么是間接尋址?如何使用?2、采用間接尋址方式設(shè)計一段程序,將10個字節(jié)的數(shù)據(jù)從100MB開始的存儲單元轉(zhuǎn)移到從200MB開始的存儲單元。3、試設(shè)計一個3H40M的長延時電路程序。4、編寫一段程序計算sin120cos10的值。5、試設(shè)計一個照明燈的控制程序。當(dāng)按下接在I0.0上的按鈕后,接在Q4.0上的照明燈可發(fā)光30s,如果在這段時間內(nèi)又有人按下按鈕,則時間間隔從頭開始。這樣可確保在最后一次按完按鈕后,燈光可維持30s照明。6、試設(shè)計一個搶答器電路程序。出題人提出問題,3個答題人按動按鈕,僅僅是最早按的人面前的信號燈亮。然后出題人按動復(fù)位按鈕后,引出下一個問題。7、設(shè)計一個對鍋爐鼓風(fēng)機(jī)和引風(fēng)機(jī)控制的梯形圖程序??刂埔螅?1)開機(jī)時首先啟動引風(fēng)機(jī),10s后自動啟動鼓風(fēng)機(jī);(2)停止時立即關(guān)斷鼓風(fēng)機(jī),20s后自動關(guān)斷引風(fēng)機(jī)。,