版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第3章S7-300系列PLC編程語言與基本指令系統(tǒng)3.1編程語言3.2指令及其結(jié)構(gòu)3.3位邏輯指令3.4定時器與計數(shù)器指令3.5數(shù)據(jù)處理功能指令3.6數(shù)據(jù)運算指令3.7控制指令思考與練習題3.1s7-300/400編程語言3.1.1PLC編程語言的國際標準IEC(國際電工委員會)是為電子技術(shù)制定全球標準的世界性組織,IEC61131是PLC的國際標準。它由5部分組成:通用信息、設(shè)備要求和測試、編程語言、用戶指南、通信服務(wù)規(guī)范。其中IEC61131-3是PLC的編程語言標準。STEP7是s7-300/400系列PLC編程軟件,軟件包中配備了三種基本編程語言1.梯形圖(LAD)2.語句表(STL)3.功能塊圖(FBD)除此之外,選件包里提供了一些更高級的編程語言4.順序功能圖(SFC):對應(yīng)于西門子的s7Graph,用來編制順序控制程序。5.結(jié)構(gòu)文本(ST):是一種專用的高級語言,類似于PASCAL和C,適合于復(fù)雜計算任務(wù)和最優(yōu)化算法。6.S7HiGraph編程語言使用狀態(tài)圖來描述異步、非順序過程的編程語言。系統(tǒng)被分為幾個功能單元,每個單元呈現(xiàn)不同狀態(tài),各功能單元的同步信息可以在圖形之間交換,需要為不同之間的切換定義轉(zhuǎn)換條件,用類似于語句表的語言描述指定狀態(tài)的動作和狀態(tài)之間的轉(zhuǎn)換條件。7.S7CFC(ContinuousFuntionChart)編程語言以圖形方式連接程序庫中以塊的形式提供的各種功能,包括從簡單的邏輯操作到復(fù)雜的閉環(huán)和開環(huán)控制等領(lǐng)域。編程時將這些塊拷貝到圖中并用線連接起來。編程語言用戶類應(yīng)用語句表(STL)愿意用類似于機器碼語言編程的用戶程序在運行時間和存貯空間要求上最優(yōu)梯形圖(LAD)習慣電路圖的用戶編寫邏輯控制程序功能圖(FBD)熟悉布爾代數(shù)邏輯圖的用戶編寫邏輯控制程序SCL(結(jié)構(gòu)控制語言)可選軟件包用高級語言。如PASCAL或C語言編程的用戶數(shù)據(jù)處理任務(wù)程序S7Graph(順序控制)可選軟件包有技術(shù)背景,沒有PLC編程經(jīng)驗的用戶以順序過程的描述很方便S7HiGraph(狀態(tài)圖形)可選軟件包有技術(shù)背景,沒有PLC編程經(jīng)驗的用戶以異步非順序過程的描述很方便CFC(連續(xù)功能圖)可選軟件包有技術(shù)背景,沒有PLC編程經(jīng)驗的用戶適用于連續(xù)過程的描述3.1.2STEP7編程語言的程序結(jié)構(gòu)為了容易閱讀和理解,程序常常被分成若干部分。我們稱之為塊。程序包括用戶塊和系統(tǒng)塊。3-1塊的調(diào)用關(guān)系如下:系統(tǒng)啟動過程中,CPU動態(tài)工作過程上電初始化程序OB100刷新過程映像輸入表主程序OB1刷新過程映像輸出表注:對于數(shù)字量模塊不一定要進行硬件組態(tài),而對于模擬量模塊一定要進行硬件組態(tài)。數(shù)據(jù)類型決定了你以什么方式或格式理解或訪問存儲區(qū)中的數(shù)據(jù)。 基本數(shù)據(jù)類型:定義不超過32位的數(shù)據(jù)
復(fù)式數(shù)據(jù)類型:定義超過32位或由其它數(shù)據(jù)類型組成的數(shù)據(jù)數(shù)據(jù)類型
參數(shù)類型:定義傳給FB塊和FC塊的參數(shù)3.1.3數(shù)據(jù)類型1.基本數(shù)據(jù)類型基本數(shù)據(jù)類型見表常數(shù)的表示可以是字節(jié)、字、或雙字,也可以是十進制、十六進制ASCII或浮點數(shù)形式表示。如B#16#FF,W#16#FFFF,DW#16#FFFF_FFFF,2#1101_1010,L#+5(32位雙整數(shù))P#為地址指針常數(shù),如P#M2.0是M2.0的地址S5T#aD_bH_cM_dS_eMS,a,b,c,d,e分別是日、小時、分、秒、毫秒的數(shù)值,時間增量是10MS。C#為計數(shù)器的常數(shù)(BCD碼),如C#250B(b1,b2)、B(b1,b2,b3,b4)分別用來表示2B、4B常數(shù)。數(shù)據(jù)類型描述常用符號舉例表基本數(shù)據(jù)類型BOOL位TRUE,F(xiàn)ALSEBYTE字節(jié)B#16#FFCHAR字符‘A’WORD字W#16#FFFF,2#1111_1111_1111_1111,C#999,B(255,255)DWORD雙字DW#16#FFFF_FFFFF,B(255,255,255,255)INTDINT16位定點數(shù)32位定點數(shù)REALS5TIME浮點數(shù)S5格式時間值TIMEDATEIEC格式時間值日期TIME_OF_DAY時間日期1位8位8位16位32位16位32位32位16位32位16位32位-32768~+32767-2147483648~+21474836471.234E+02S5T#0ms,S5TIME#2h46m30s(最大值)T#-24d20h31m23s6ms,TIME#24d20h31m23s6msD#1990_01_01,Date#2089_12_31TOD#00:00:00:000,TIME_OF_DAY#23:59:59.9992.復(fù)合數(shù)據(jù)類型(1)數(shù)組(ARRAY)將同一類型的數(shù)據(jù)合成一組,形成一個單元。(2)結(jié)構(gòu)(STRUCT)將不同類型的數(shù)據(jù)合成一組,形成一個單元。(3)字符串(STRING)將多個字符(CHAR)組成一維數(shù)組,形成字符串。(4)其它日期和時間類型、用戶定義的數(shù)據(jù)類型UDT。其中UDT類型在FB塊中也常常使用。3.參數(shù)類型參數(shù)類型為邏輯塊之間傳遞形參而設(shè)定的。(1)TIMER和COUNT,如T3,C21(2)BLOCK,如FB,FC,DB(3)POINTER(指針)指針指向一個變量的地址,即用地址作實參,如p#m50.0是指向M50.0雙字地址指針。(4)ANY用于實參的數(shù)據(jù)類型未知或?qū)崊⒖梢允褂萌我鈹?shù)據(jù)類型的情況。占用10B,如p#DB1.DBX0.0BYTE30,表示DB1中以0地址為起始地址的30個字節(jié)。4.1.3CPU的存儲區(qū)裝載存儲器工作存儲器RAM系統(tǒng)存儲器RAM動態(tài)裝載存儲器RAM可保持的裝載存儲器FEPROM用戶程序,如邏輯塊,數(shù)據(jù)塊位存儲器,定時器,計數(shù)器局部數(shù)據(jù)堆棧,塊堆棧中斷堆棧,中斷緩沖區(qū)過程映像I/O表裝載存儲器是RAM和FEPROM,用于保存不包含地址和注釋的用戶程序和系統(tǒng)數(shù)據(jù)(組態(tài)、連接和模塊參數(shù)等)。有的CPU有集成裝載存儲器,有的可以用微存儲卡(MMC)來擴展。斷電時數(shù)據(jù)保存在MMC存儲器中,因此數(shù)據(jù)塊的內(nèi)容基本上被永久保存。下載程序時,用戶程序(邏輯塊和數(shù)據(jù)塊)被下載到CPU的裝載存儲器中,CPU把可執(zhí)行的部分復(fù)制到工作存儲器,符號表和注釋保存在編程設(shè)備中。工作存儲器是集成的高速存取的RAM存儲器,用于存儲CPU運行時的用戶程序和數(shù)據(jù),如組織塊、功能塊、功能、數(shù)據(jù)塊。復(fù)位CPU的存儲器時,RAM中的程序被清除,F(xiàn)EPROM中的程序不會被清除。系統(tǒng)存儲器為用戶提供的存儲器組件,被劃分為若干個地址區(qū)域,如過程映像輸入I、過程映像輸出Q、位存儲器M、定時器T、計數(shù)器C、塊堆棧(B堆棧)、中斷堆棧(I中斷)和診斷緩沖區(qū)等。S7-300PLC存儲區(qū)圖S7-300存儲區(qū)示意圖表程序可訪問的存儲區(qū)及功能3.2指令及其結(jié)構(gòu)3.2.1指令的組成1.語句指令語句指令用助記符表示PLC要完成的操作。指令:操作碼+操作數(shù)操作碼用來指定要執(zhí)行的功能,告訴CPU該進行什么操作;操作數(shù)內(nèi)包含為執(zhí)行該操作所必需的信息,告訴CPU用什么地方的數(shù)據(jù)來執(zhí)行此操作。例如: AI1.0該指令是一條位邏輯操作指令,其中:“A”是操作碼,它表示執(zhí)行“與”操作;“I1.0”是操作數(shù),它指出這是對輸入繼電器I1.0進行的操作。有些語句指令不帶操作數(shù)。它們操作的對象是惟一的,故為簡便起見,不再特別說明。例如: NOT//是對邏輯操作結(jié)果(RLO)取反 SET//把RLO置1。
2.梯形邏輯指令
梯形邏輯指令用圖形元素表示PLC要完成操作。在梯形邏輯指令中,其操作碼是用圖素表示的,該圖素形象表明CPU做什么,其操作數(shù)的表示方法與語句指令相同。如:例如:
該梯形圖中:——()可認為是操作碼,表示一個二進制賦值操作。Q0.0是操作數(shù),表示賦值的對象。梯形邏輯指令也可不帶操作數(shù)。
——|NOT|——是對邏輯操作結(jié)果取反的操作。
4.2.2操作數(shù)1.標識符及標識參數(shù)主標識符(操作數(shù)存放的存儲器的區(qū)域):I、Q、PI、PQ、M、T、C、L、DB輔助標識符
(操作數(shù)的位數(shù)長度):X、B、W、D標識符
標識參數(shù)
(操作數(shù)在該存儲區(qū)域內(nèi)的具體位置)
操作數(shù)
注釋: I:輸入過程映像存儲區(qū) Q:輸出過程映像存儲區(qū) PI:外部輸入 PQ:外部輸出 M:位存儲區(qū) T:定時器 C:計數(shù)器 L:本地數(shù) DB:數(shù)據(jù) X:位 B:字 W: D:雙字注意:①PLC物理存儲器是以字節(jié)為單位的。②當操作數(shù)長度是字或雙字時,標識符后給出的標識參數(shù)是字或雙字內(nèi)的最低字節(jié)單元號。③當使用寬度是字或雙字的地址時,應(yīng)保證沒有生成任何重疊的字節(jié)分配,以免造成數(shù)據(jù)讀寫錯誤。一般情況下,指令的操作數(shù)在PLC的存儲器中,此時操作數(shù)由操作數(shù)標識符和參數(shù)組成。操作數(shù)標識符告訴處理器操作數(shù)放在存儲器的哪個區(qū)域及操作數(shù)位數(shù);標識參數(shù)則進一步說明操作數(shù)在該存儲區(qū)域內(nèi)的具體位置。操作數(shù)標識符由主標識符和輔助標識符組成。主標識符表示操作數(shù)所在的存儲區(qū),輔助標識符進一步說明操作數(shù)的位數(shù)長度。若沒有輔助標識符指操作數(shù)的位數(shù)是一位。主標識符有:I(輸入過程映像存儲區(qū)),Q(輸出過程映象存儲區(qū)),M(位存儲區(qū)),PI(外部輸入),PQ(外部輸入),T(定時器),C(計數(shù)器),DB(數(shù)據(jù)塊),L(本地數(shù)據(jù));輔助標識符有:X(位),B(字節(jié)),W(字——2字節(jié)),D(雙字——4字節(jié))。PLC物理存儲器是以字節(jié)為單位的,所以存儲單元規(guī)定為字節(jié)單元。位地址參數(shù)用一個點與字節(jié)地址分開。如: M10.1當操作數(shù)長度是字或雙字時,標識符后給出的標識參數(shù)是字或雙字內(nèi)的最低字節(jié)單元號。圖3.1給出了字節(jié)、字、雙字的相互關(guān)系及表示方法。當使用寬度為字或雙字的地址時,應(yīng)保證沒有生成任何重疊的字節(jié)分配,以免造成數(shù)據(jù)讀寫錯誤。圖3.1以字節(jié)單元為基準標記存儲器存儲單元位存儲區(qū)M表3.2存儲區(qū)及其功能
表3.2存儲區(qū)及其功能
2.操作數(shù)的表示法
操作數(shù)的表示法物理地址(絕對地址)符號地址(必須先定義后使用,而且符號名必須是唯一的)關(guān)于定義符號地址的幾點說明:當你在表中輸入符號地址時,應(yīng)注意以下幾點:
列注意符號在整個符號表中名字必須唯一。當你確認該區(qū)域的輸入或退出該區(qū)域時,不唯一的符號則被標定出來。符號名最長可達24個字符。引號(“”)不允許使用。地址當你確認該區(qū)域的輸入或退出該區(qū)域時,程序會自動檢查該地址輸入是否是允許的。數(shù)據(jù)類型當你確認或退出地址時,該區(qū)域被自動地賦予一個缺省數(shù)據(jù)類型。如果你修改這個缺省類型,程序會檢查你的數(shù)據(jù)類型是否與地址相匹配。注釋你可以輸入注釋簡單地解釋該符號的功能(最多80個字符)。在STEP7中,操作數(shù)有兩種表示方法:一是物理地址(絕對地址)表示法;二是符號地址表示法。為一個物理地址定義有意義的符號名,可使程序的可讀性增強,降低編程時由于筆誤而造成的程序錯誤。用物理地址表示操作數(shù)時,要明確指出操作數(shù)的所在存儲區(qū),該操作數(shù)的位數(shù)具體位置。例如:Q4.0是用物理地址表示的操作數(shù),其中Q表示這是一個在輸出過程映像區(qū)中的輸出位,具體位置是第四個字節(jié)的第0位。STEP7允許用符號地址表示操作數(shù),如Q4.0可用符號名MOTOR_ON替代表示,符號名必須先定義后使用,而且符號名必須是惟一的,不能重名。定義符號時,需要指明操作數(shù)所在的存儲區(qū),操作數(shù)的位數(shù)、具體位置及數(shù)據(jù)類型。3.局域(塊定義)符號和共享符號共享符號局域符號有效性?在整個用戶程序中有效?可以被所有的塊使用?在所有的塊中含義是一樣的?在整個用戶程序中是唯一的?只在定義的塊有效?相同的符號可在不同的塊中用于不同的目的允許使用的字符?字母、數(shù)字及特殊字符。?除0X00,0XFF及引號以外的強調(diào)號?如使用特殊字符,則符號須寫出在引號內(nèi)。?字母?數(shù)字?下劃線(_)(注意:不允許使用兩個連續(xù)的下劃線)使用你可以為以下各項定義共享符號:?I/O信號(I,IB,IW,ID,Q,QB,QW,QD)?I/O輸入與輸出(PI,PQ)?存儲位(M,MB,MW,MD)?定時器(T)/計數(shù)器(C)?邏輯塊(FB,F(xiàn)C,SFB,SFC)?數(shù)據(jù)塊(DB)?用戶定義數(shù)據(jù)類型(UDT)?變量表(VAT)你可以為以下各項定義局域符號:?塊參數(shù)(輸入,輸出和輸入輸出參數(shù))?塊的靜態(tài)數(shù)據(jù)?塊的臨時數(shù)據(jù)在哪里定義符號表塊的變量聲明表?符號表中定義的符號(共享)顯示在引號內(nèi)。?塊變量聲明表中的符號(局域)顯示時前面加上“#”。提示:使用菜單命令View>Display>SymbolicRepresentation,你可以在所有聲明的符號地址和絕對地址之間進行切換。3.2.3尋址方式操作數(shù)是指令的操作或運算對象。所謂尋址方式是指令得到操作數(shù)的方式,可以直接給出或間接給出??捎米鱏TEP7指令操作對象的有:常數(shù);S7狀態(tài)字中的狀態(tài)位;S7的各種寄存器、數(shù)據(jù)塊;功能塊FB,F(xiàn)C和系統(tǒng)功能塊SFB,SFC;S7的各存儲區(qū)中的單元。S7有四種尋址方式,它們分別是:立即尋址、存儲器直接尋址、存儲器間接尋址和寄存器間接尋址。立即尋址:操作數(shù)本身直角接包含在指令中直接尋址:指令中直接給出操作數(shù)的存儲單元地址
存儲器間接尋址寄存器間接尋址
S7尋址方式
1.立即尋址這是對常數(shù)或常量的尋址方式。操作數(shù)本身直接包含在指令中。有些指令中的操作數(shù)是惟一的,為方便起見不再在指令中特別寫出。下面是立即尋址的例子:SET //把RLO置1OWW#16#A320//將常量W#16#A320與累加器1“或”運算L27//把整數(shù)27裝入累加器1L'ABCD'//把ASCII碼字符ABCD裝入累加器1LC#0100//把BCD碼常數(shù)0100裝入累加器1
2.直接尋址包括對寄存器和存儲器的直接尋址。在直接尋址的指令中,直接給出操作數(shù)的存儲單元地址。例如:AI0.0//對輸入位I0.0進行“與”邏輯操作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.存儲器間接尋址在存儲器間接尋址的指令中,給出一個存儲器(必須是表3.1中的存儲器),該存儲器的內(nèi)容是操作數(shù)所在存儲單元的地址,該地址又被稱為地址指針。存儲器間接尋址方式的優(yōu)點是,當程序執(zhí)行時,能改變操作數(shù)的存儲器地址,這對程序中的循環(huán)尤為重要。以下是使用存儲器雙字指針間接尋址的例子:AI[MD2]//對由MD2指出的輸入位進行“與”邏輯操作。如:MD2的值為//2#00000000000000000000000001010110,則是對I10.6進行“與”操作。=DIX[DBD2]//將RLO賦值給數(shù)據(jù)位,具體數(shù)據(jù)由數(shù)據(jù)雙字DBD2指出。LIB[DID4]//將由數(shù)據(jù)雙字DID4指出的輸入字節(jié)裝入累加器1。如:DID4的值為2#000000000000000000000000//01010000,則是對IB10進行裝入操作。OQ[LD3]//對由本地數(shù)據(jù)雙字指出的輸出位進行“或”邏輯操作。依據(jù)要描述的地址復(fù)雜程度,地址指針可以是字或雙字的,存儲指針的存儲器大小也應(yīng)是字的或雙字的,由于定時器(T)、計數(shù)器(C)、數(shù)據(jù)塊(DB)、功能塊(FB或FC)的編號范圍在0到65535之內(nèi),所以用字指針就足夠了,相應(yīng)的也只需字存儲器存儲指針。其它的地址,如:輸入位、輸出位,則要用到雙字指針,并用雙字存儲器存儲指針。指針的兩種格式如圖3.2所示。如果要用雙字格式的指針訪問一個字、字節(jié)或雙字存儲器,必須保證指針中的位編號為0。圖3.2存儲器間接尋址的指針格式位3至18(范圍0至65535):被尋址字節(jié)的字節(jié)編號 位0至2(范圍0至7):被尋址位的位編號下面的例子顯示如何產(chǎn)生字或雙字指針并用其尋址:L+5//將整數(shù)+5裝入累加器1TMW2//將累加器1的內(nèi)容傳送給存儲字MW2,此時MW2的內(nèi)容為5OPNDB[MW2]//打開由MW2指出的數(shù)據(jù)塊,即,打開數(shù)據(jù)塊5LP#8.7//將2#00000000000000000000000001000111(二進制數(shù))裝入累加器1TMD2//將累加器1的內(nèi)容傳送給存儲字MD2,此時MD2的內(nèi)容為//2#00000000000000000000000001000111LP#4.0//將2#00000000000000000000000000100000裝入累加器1,累//加器1原內(nèi)容被裝入累加器2+I//將累加器1和累加器2內(nèi)容相加,在累加器1中得到的“和”為 //2#00000000000000000000000001100111TMD4//將累加器1的當前內(nèi)容傳送給存儲字MD4AI[MD2]//對輸入位I8.7進行“與”邏輯操作=Q[MD4]//將RLO賦值給輸出位Q12.7
4.寄存器間接尋址在S7中有兩個地址寄存器,它們是AR1和AR2。通過地址寄存器,可以對各存儲區(qū)的存儲器內(nèi)容實現(xiàn)寄存器間接尋址。地址寄存器的內(nèi)容加上偏移量形成地址指針,該指針指向數(shù)值所在的存儲單元。地址寄存器存儲的地址指針有兩種格式,其長度均為雙字。圖3.3給出了這兩種格式的細節(jié)及其差別。其中,第一種地址指針格式包括被尋址數(shù)值所在存儲單元地址的字節(jié)編號和位編號,至于對哪個存儲區(qū)尋址,則必須在指令中明確直接給出。這種指針格式適用于在確定的存儲區(qū)內(nèi)尋址,即區(qū)內(nèi)寄存器間接尋址。而第二種地址指針格式中還包含了數(shù)值所在存儲區(qū)的說明位(存儲區(qū)域標志位),這樣,就可通過改變這些位,實現(xiàn)跨區(qū)尋址,這種指針格式用于區(qū)域間寄存器間接尋址。區(qū)域標識位的組合狀態(tài)見表3.2。圖3.3寄存器間接尋址的指針格式3124231615870位31=0表明是區(qū)域內(nèi)寄存器間接尋址;=1表明是區(qū)域間寄存器間接尋址。位24、25和26(rrr):區(qū)域標識(見表3.2)位3至18(bbbbbbbbbbbbbbbb):被尋址位的字節(jié)編號(范圍0至65535)位0至2(×××):被尋址的位編號(范圍0至7)表3.3地址指針區(qū)域標識位含義如果要用到寄存器指針格式訪問一個字節(jié)、字或雙字,則必須保證指針中位地址編號為0。下面的例子分別說明如何使用這兩種指針格式實現(xiàn)間接尋址:LP#8.6//將2#00000000000000000000000001000110裝入累加器1LAR1//將累加器1的內(nèi)容傳送至地址寄存器1AI[AR1,P#0.0]//地址寄存器1加偏移量結(jié)果為2#0000000000000000//////0000000001000110,指明是對輸入位I8.6進行“與”操作=Q[AR1,P#4.1]//地址寄存器1加偏移量結(jié)果為2#0000000000000000//////0000000001100111,指明對輸出位Q12.7進行賦值操作LP#8.0//將2#00000000000000000000000001000000裝入累加器1LAR2//將累加器1的內(nèi)容傳送至地址寄存器2LIB[AR2,P#2.0]//將輸入字節(jié)IB10的內(nèi)容裝入累加器1TMW[AR2,P#200.0]//將累加器1的內(nèi)容傳送至存儲字MW208LP#I8.7//將2#10000001000000000000000001000111裝入累加器1LAR1//將累加器1的內(nèi)容傳送至地址寄存器1LP#Q8.7//將2#10000010000000000000000001000111裝入累加器1LAR2//將累加器1的內(nèi)容傳送至地址寄存器2A[AR1,P#0.0]//對輸入位I8.7進行“與”邏輯操作=[AR2,P#1.1]//賦值給輸出位Q10.0LP#I8.0//將輸入位I8.0的雙字指針裝入累加器1LAR2//將累加器1的內(nèi)容傳送至地址寄存器2LP#M8.0//將存儲位M8.0的雙字指針裝入累加器1LAR1//將累加器1的內(nèi)容傳送至地址寄存器1LB[AR2,P#2.0]//把輸入字節(jié)IB10裝入累加器1,輸入字節(jié)10為8(AR2)加2(偏移量)TD[AR1,P#56.0]//把存儲雙字MD64裝入累加器1,存儲雙字64為8(AR1)//加56(偏移量)3.2.4狀態(tài)字狀態(tài)字用于表示CPU執(zhí)行指令時所具有的狀態(tài)。一些指令是否執(zhí)行或以何方式執(zhí)行可能取決于狀態(tài)字中的某些位;執(zhí)行指令時也可能改變狀態(tài)字中的某些位;你也能在位邏輯指令或字邏輯指令中訪問并檢測它們。圖3.4顯示了狀態(tài)字的結(jié)構(gòu)。圖3.4狀態(tài)字的結(jié)構(gòu)159876543210(1)首次檢測位(FC)狀態(tài)字的位0稱為首次檢測位。若FC位的狀態(tài)為0,則表明一個梯形邏輯網(wǎng)絡(luò)的開始,或指令為邏輯串第一條指令。CPU對邏輯串第一條指令的檢測(稱為首次檢測)產(chǎn)生的結(jié)果直接保存在狀態(tài)字的RLO位中,經(jīng)過首次檢測存放在RLO中的0或1被稱為首次檢測結(jié)果。FC位在邏輯串的開始時總是0,在邏輯串指令執(zhí)行過程中FC位為1,輸出指令或與邏輯運算有關(guān)的轉(zhuǎn)移指令(表示一個邏輯串結(jié)束的指令)將FC清0。(2)邏輯操作結(jié)果(RLO)狀態(tài)字的位1稱為邏輯操作結(jié)果RLO(ResultofLogicOperation)。該位存儲位邏輯指令或算術(shù)比較指令的結(jié)果。在邏輯串中,RLO位的狀態(tài)能夠表示有關(guān)信號流的信息。RLO的狀態(tài)為1,表示有信號流(通);為0,表示無信號流(斷)??捎肦LO觸發(fā)跳轉(zhuǎn)指令。(3)狀態(tài)位(STA)狀態(tài)字的位2稱為狀態(tài)位。狀態(tài)位不能用指令檢測,它只是在程序測試中被CPU解釋并使用。如果一條指令是對存儲區(qū)操作的位邏輯指令,則無論是對該位的讀與寫操作,STA總是與該位的值取得一致;對不訪問存儲區(qū)的位邏輯指令來說,STA沒有意義,此時它總被置為1。(4)或位(OR)狀態(tài)字的位3稱為或位(OR)。在先邏輯“與”后邏輯“或”的邏輯串中,OR位暫存邏輯“與”的操作結(jié)果,以便進行后面的邏輯“或”運算。其它指令將OR位清0。(5)溢出位(OV)狀態(tài)字的位4稱為溢出位,溢出位被置1,表明一個算術(shù)運算或浮點數(shù)比較指令執(zhí)行時出現(xiàn)錯誤(錯誤:溢出、非法操作、不規(guī)范格式)。后面的算術(shù)運算或浮點數(shù)比較指令執(zhí)行結(jié)果正常的話OV位就被清0。(6)溢出狀態(tài)保持位(OS)狀態(tài)字的位5稱為溢出狀態(tài)保持位(或稱為存儲溢出位)。OV被置1時OS也被置1;OV被清0時OS仍保持。所以它保存了OV位,可用于指明在先前的一些指令執(zhí)行中是否產(chǎn)生過錯誤。只有下面的指令才能復(fù)位OS位:JOS(OS=1時跳轉(zhuǎn));塊調(diào)用指令和塊結(jié)束指令。(7)條件碼1(CC1)和條件碼0(CC0)狀態(tài)字的位7和位6稱為條件碼1和條件碼0。這兩位結(jié)合起來用于表示在累加器1中產(chǎn)生的算術(shù)運算或邏輯運算結(jié)果與0的大小關(guān)系;比較指令的執(zhí)行結(jié)果或移位指令的移出位狀態(tài)。詳見表3.4和表3.5。表3.4算術(shù)運算后的CC1和CC0表3.5比較、移位和循環(huán)移位、字邏輯指令后的CC1和CC0(8)二進制結(jié)果位(BR)狀態(tài)字的位8稱為二進制結(jié)果位。它將字處理程序與位處理聯(lián)系起來,在一段既有位操作又有字操作的程序中,用于表示字操作結(jié)果是否正確(異常)。將BR位加入程序后,無論字操作結(jié)果如何,都不會造成二進制邏輯鏈中斷。在LAD的方塊指令中,BR位與ENO有對應(yīng)關(guān)系,用于表明方塊指令是否被正確執(zhí)行:如果執(zhí)行出現(xiàn)了錯誤,BR位為0,ENO也為0;如果功能被正確執(zhí)行,BR位為1,ENO也為1。在用戶編寫的FB和FC程序中,必須對BR位進行管理,當功能塊正確運行后使BR位為1,否則使其為0。使用STL指令SAVE或LAD指令——(SAVE),可將RLO存入BR中,從而達到管理BR位的目的。當FB或FC執(zhí)行無錯誤時,使RLO為1并存入BR,否則,在BR中存入0。3.3位邏輯指令位邏輯指令主要包括位邏輯運算指令、位操作指令和位測試指令,它們可以對布爾操作數(shù)(BOOL)的信號映態(tài)掃描并完成邏輯操作。邏輯操作結(jié)果(RLO)用以賦值、置位、復(fù)位布爾操作數(shù),也控制定時器和計數(shù)器的運行。3.3.1位邏輯運算指令位邏輯運算指令是“與”(AND)、“或”(OR)、“異或”(XOR)指令及其組合。它對“0”或“1”這些布爾操作數(shù)掃描,經(jīng)邏輯運算后將邏輯操作結(jié)果送入狀態(tài)字的RLO位。語句指令助記符指令指令前RLO地址狀態(tài)RLO結(jié)果A與001101010001AN與非001101010010O或001101010111布爾邏輯串內(nèi)的真值表(根據(jù)下列表可以確定第二條布爾位操作后的RLO)ON或非001101011011X異或001101010110XN異或非001101011001助記符指令地址狀態(tài)RLO結(jié)果A與0101AN與非0110O或0101ON或非0110X異或0101XN異或非0110布爾邏輯串開始的真值表梯形圖邏輯指令常開接點(動合觸點)元素和參數(shù)常閉接點(動斷觸點)元素和參數(shù)
1.“與”和“與非”(A,AN)指令
邏輯“與”在梯形圖里是用串聯(lián)的觸點回路表示的,被掃描的操作數(shù)則表示為觸點符號,操作數(shù)標在觸點上方。如果觸點是常開觸點(動合觸點),則對“1”掃描相應(yīng)操作數(shù)。在PLC中規(guī)定:若操作數(shù)是“1”,則常開觸點“動作”,即認為是“閉合”的;若操作數(shù)是“0”,則常開觸點“不動作”,即觸點仍然打開。如果觸點是常閉觸點(動斷觸點),則對“0”掃描相應(yīng)操作數(shù)。在PLC中規(guī)定:若操作數(shù)是“1”,則常閉觸點“動作”,即觸點“斷開”;若操作數(shù)是“0”,則常閉觸點“不動作”,即觸點仍保持閉合。如果串聯(lián)回路里的所有觸點皆閉合,該回路就通“電”了。在圖3.5的回路中,如果所有觸點閉合,即當輸入I0.0和輸出Q4.1的信號狀態(tài)都是“1”(觸點閉合)、且位存儲器M10.1為“0”(該觸點仍保持原閉合位置)時,輸出Q4.0才為“1”;如果有一個或多個觸點是打開的,則輸出Q4.0的信號狀態(tài)就為“0”(繼電器觸點打開)。上述梯形邏輯圖,可用語句表指令完全表示。對應(yīng)的語句表為:AI0.0AQ4.1ANM10.1=Q4.0圖3.5“與”邏輯梯形圖()I0.0Q4.1M10.1Q4.0在上面的語句表中,操作數(shù)是被依次掃描的,其掃描的結(jié)果再邏輯“與”。對信號狀態(tài)進行“1”掃描,并做邏輯”與”運算,則用助記符“A”來標識,相關(guān)的操作數(shù)指定了要掃描對象。當操作數(shù)的信號狀態(tài)是“1”時,其掃描結(jié)果也是“1”。如果操作數(shù)的信號狀態(tài)是“0”,則掃描結(jié)果也是“0”。對信號狀態(tài)進行“0”掃描,并做邏輯“與”運算,則用助記符“AN”來標識取反的“與”邏輯操作.當操作數(shù)的信號狀態(tài)是“0”時,其掃描結(jié)果就是“1”。如果操作數(shù)的信號狀態(tài)是“1”,則掃描結(jié)果就是“0”。在第一條語句里,CPU掃描的是輸入I0.0本次掃描也被稱為首次掃描。首次掃描的結(jié)果被直接保存在RLO(邏輯操作結(jié)果)中,在下一條語句中,掃描操作數(shù)輸出Q4.1;這次掃描的結(jié)果和RLO中保存的上一次結(jié)果相“與”,產(chǎn)生的新結(jié)果再存入RLO。如此逐一進行,在邏輯序列結(jié)束處的RLO可用作進一步處理。例如,用來激勵一個輸出信號。在上面的語句表中,把RLO的值賦給輸出Q4.0(=Q4.0)。
2.“或”和“或非”(O,ON)指令邏輯“或”在梯形圖里是用并聯(lián)的觸點回路表示的,被掃描的操作數(shù)標在觸點上方。在觸點并聯(lián)的情況下,若有一個或一個以上的觸點閉合,則該回路就“通電”。在圖3.6中,驅(qū)動信號通過并聯(lián)觸點回路加到輸出Q4.1。只要有一個觸點閉合,輸出4.1的信號狀態(tài)就為“l(fā)”。如果所有的觸點都是打開的,則輸出Q4.1就為“0”。在圖3.6中,僅當輸入I1.1和輸出Q4.0兩者都為“0”,且M2.0為“1”時,輸出Q4.1才為“0”。圖3.6“或”邏輯梯形圖I1.1M2.0Q4.0()Q4.1上述梯形邏輯圖,也可用語句表指令表示。對應(yīng)的語句表為:OI1.1ONM2.0OQ4.0=Q4.1在上面的語句表中,操作數(shù)是依次被掃描的,其掃描的結(jié)果再邏輯“或”。對信號狀態(tài)進行“1掃描,并做邏輯“或”運算,用助記符“O”來標識。當操作數(shù)的信號狀態(tài)是“1”時,其掃描結(jié)果也是“1”。對信號狀態(tài)進行“0”掃描,并做邏輯“或”運算,則用助記符“ON”來標識取反的“或”邏輯操作.當操作數(shù)的信號狀態(tài)是“0”時,其掃描結(jié)果就是“1”。如果操作數(shù)的信號狀態(tài)是“1”,則掃描結(jié)果就是“0”。在第一條語句里,處理器掃描的是輸入I1.1.首次掃描的結(jié)果被直接保存在RLO中,并和下一條語句的掃描結(jié)果相“或”,產(chǎn)生的新結(jié)果再存入RLO。如此逐一進行,在邏輯序列結(jié)束處的RLO可用作進一步處理。例如,用來激勵一個輸出信號。在上面的語句表中,把RLO的值賦給輸出Q4.1。
3.“異或”和“異或非”(X,XN)指令圖3.7是“異或”邏輯梯形圖,下面是與梯形圖對應(yīng)的語句表。在的語句表中,使用了“異或”和“異或非”指令,分別用助記符“X”和“XN”來標識。它類似“或”和“或非”指令,用于掃描并聯(lián)回路能否“通電”。XI1.0XNI1.1=Q4.0當執(zhí)行語句表中的第一條指令時,首次掃描的結(jié)果被直接保存在RLO中,然后RLO中的值和第二條指令的掃描結(jié)果進行“異或”操作,得到的新結(jié)果再存入RLO。如此掃描、“異或”并刷新RLO,直到賦值指令將RLO的值賦給輸出Q4.0。圖中,僅當兩個觸點(輸入I1.0和輸入I1.1)的掃描結(jié)果不同,即只有一個為“1”時,RLO才為“1”,并賦值給輸出使Q4.0為“1”。若兩個信號的掃描結(jié)果相同(均為“1”或“0”),則Q4.0為“0”。與O和ON比較,X和XN排除了兩個信號掃描結(jié)果為“1”時,使輸出為“1”的可能。圖3.7“異或”邏輯梯形圖3.3.2位操作指令1.輸出指令邏輯串輸出指令又稱為賦值操作指令,該操作把狀態(tài)字中RLO的值賦給指定的操作數(shù)(位地址)。若RLO為“1”,則操作數(shù)被置位,否則操作數(shù)被復(fù)位。表3.5列出了操作數(shù)的數(shù)據(jù)類型和所在的存儲區(qū)。邏輯串輸出指令通過把首次檢測位(FC位)置0,來結(jié)束一個邏輯串。當FC位為0時,表明程序中的下一條指令是一個新邏輯串的第一條指令,CPU對其進行首次掃描操作。這一點在梯形圖中顯示得很清楚。表3.6輸出指令LAD輸出指令像繼電器邏輯圖中的線圈一樣工作。如果電流能夠流經(jīng)電路到達線圈(即RLO為1)的話,則繼電器線圈通電,其常開觸點閉合,否則線圈不通電,常開觸點斷開。在LAD中,只能將輸出指令放在邏輯符號串的最右端,但其前面必須有鏈路,不能將輸出指令單獨放在一個空網(wǎng)絡(luò)中。一個RLO可被用來驅(qū)動幾個輸出元件。在LAD中,輸出線圈是上下依次排列的。在STL中,與輸出信號有關(guān)的指令被一個接一個地連續(xù)編程,這些輸出具有相同的優(yōu)先級。圖3.8是多重輸出梯形圖,與之對應(yīng)的語句表如下:AI0.0AI0.1ONI0.2=Q4.0AI0.3=Q4.1圖3.8是多重輸出梯形圖中間輸出指令在存儲邏輯中,用于存儲RLO的中間值,該值是中間輸出指令前的位前的邏輯操作結(jié)果。在與其它觸點串聯(lián)的情況下,中間輸出與一般觸點的功能一樣。中間輸出指令不能用于結(jié)束一個邏輯串,因此,中間輸出指令不能放在邏輯串的結(jié)尾或分支的結(jié)尾處,圖3.9是中間輸出梯形圖。從圖3.9中可以看出,中間輸出指令能夠在位操作邏輯串中驅(qū)動等效繼電器,并影響繼電器的觸點狀態(tài)。這使得梯形圖可以多級輸出,從而提高了編程效率。圖3.9中間輸出
2.置位/復(fù)位指令置位/復(fù)位指令根據(jù)RLO的值,來決定被尋址位的信號狀態(tài)是否需要改變。若RLO的值為1,被尋址位的信號狀態(tài)被置1或清0;若RLO是0,則被尋址位的信號保持原狀態(tài)不變。置位/復(fù)位指令有關(guān)內(nèi)容見表3.6。對于置位操作,一旦RLO為1,則被尋址信號(輸出信號)狀態(tài)置1,即使RLO又變?yōu)?,輸出仍保持為1;對于復(fù)位操作,一旦RLO為1,則被尋址信號(輸出信號)狀態(tài)置0,即使RLO又變?yōu)?,輸出仍保持為0;這一特性又被稱為靜態(tài)的置位/復(fù)位,相應(yīng)地,賦值輸出被稱為動態(tài)賦值輸出。置位/復(fù)位指令也用于結(jié)束一個邏輯串,因此,在LAD中置位/復(fù)位指令要放在邏輯串的最右端,而不能放在邏輯串中間。復(fù)位指令還可用于復(fù)位定時器和計數(shù)器。表3.7置位/復(fù)位指令(S)圖3.10置位/復(fù)位指令(a)復(fù)位指令操作
3.RS觸發(fā)器RS觸發(fā)器梯形圖方塊指令表示見表3.8。方塊中標有一個置位輸入(S)端,一個復(fù)位輸入(R)端,輸出端標為Q。觸發(fā)器可以用在邏輯串最右端,結(jié)束一個邏輯串,也可用在邏輯串中,影響右邊的邏輯操作結(jié)果。表3.8RS觸發(fā)器如果置位輸入為1,即有電加到S端,則觸發(fā)器置位。此時,即使置位輸入為0,觸發(fā)器也保持置位不變。如果復(fù)位輸入為1,即有電加到R端,則觸發(fā)器復(fù)位。此時,即使復(fù)位輸入為0,觸發(fā)器也保持復(fù)位不變。RS觸發(fā)器分為置位優(yōu)先和復(fù)位優(yōu)先型兩種。置位優(yōu)先型RS觸發(fā)器的R端在S端之上,當兩個輸入端都為1時,下面的置位輸入最終有效。既置位輸入優(yōu)先,觸發(fā)器或被復(fù)位或保持復(fù)位不變。復(fù)位優(yōu)先型RS觸發(fā)器的S端在R端之上,當兩個輸入端都為1時,下面的復(fù)位輸入最終有效.既復(fù)位輸入優(yōu)先,觸發(fā)器或被置位或保持置位不變。圖3.11給出了使用置位優(yōu)先型RS觸發(fā)器的梯形圖例子,圖中也給出了與梯形圖對應(yīng)的語句表程序。AI0.0RM0.0AI0.1SM0.0AM0.0=Q4.0圖3.11置位優(yōu)先型RS觸發(fā)器
4.對RLO的直接操作指令這一類指令直接對邏輯操作結(jié)果RLO進行操作,改變狀態(tài)字中RLO位的狀態(tài)。有關(guān)內(nèi)容見表3.8。表3.8對RLO的直接操作指令3.3.3位測試指令當信號狀態(tài)變化時就產(chǎn)生跳變沿。當從0變到1時,產(chǎn)生一個上升沿(或正跳沿);若從1變到0,則產(chǎn)生一個下降沿(或負跳沿)。跳變沿檢測的原理是:在每個掃描周期中把信號狀態(tài)和它在前一個掃描周期的狀態(tài)進行比較,若不同則表明有一個跳變沿。因此,前一個周期里的信號狀態(tài)必須被存儲,以便能和新的信號狀態(tài)相比較。S7中有兩類跳變沿檢測指令,一種是對RLO的跳變沿檢測的指令,另一種是對觸點跳變沿直接檢測的梯形圖方塊指令。具體內(nèi)容見表3.9。表3.9跳變沿檢測指令圖3.12是使用RLO正跳沿檢測指令的例子。這個例子中,若CPU檢測到輸入I1.0有一個正跳沿,將使得輸出Q4.0的線圈在一個掃描周期內(nèi)通電。對輸入I1.0常開觸點掃描的RLO值(在本例中,此RLO正好與輸入I1.0的信號狀態(tài)相同)存放在存儲位M1.0中。圖3.12RLO正跳沿檢測在掃描周期中,CPU對I1.0信號狀態(tài)掃描并形成RLO值,若該RLO值是1而存放在M1.0中的上次RLO值是0,這說明FP指令檢測到一個RLO的正跳沿,那么FP指令把RLO位置1。如果RLO在相鄰的兩個掃描周期中相同(全為1或0),那么FP語句把RLO位清0。同樣,如果FN指令檢測到一個RLO的負跳沿,那么FN指令把RLO位置1。如果RLO在相鄰的兩個掃描周期中相同(全為1或0),那么FN語句把RLO位清0。需要注意的是,在編程時必須考慮到,F(xiàn)P和FN檢測到的是在RLO中表現(xiàn)出的變化,而不是觸點的狀態(tài)變化(前面的圖中是特例)。因為,一般情況下,RLO可能由一個邏輯串形成,并不單獨與某觸點的狀態(tài)直接相關(guān)。若需要在邏輯串中單獨檢測某觸點的跳變沿,可使用對觸點跳變沿直接檢測的梯形圖方塊指令。圖3.13是使用觸點負跳沿檢測指令的例子。圖中,由<位地址1>給出需要檢測的觸點編號(I0.3),<地址2>(M0.0)用于存放該觸點在前一個掃描周期的狀態(tài)。圖3.13觸點負跳沿檢測執(zhí)行觸點正跳沿檢測指令時,CPU將<位地址1>的當前觸點狀態(tài)與存在<地址2>中的上次觸點狀態(tài)相比較,若當前為1上次為0,表明有正跳沿產(chǎn)生,則輸出Q置1;其它情況下,輸出Q被清0。對于觸點負跳沿指令,若當前為0上次為1,則輸出Q置1,其余情況Q被清0。由于不可能在相鄰的兩個掃描周期中連續(xù)檢測到正跳沿(或負跳沿),因此,輸出Q只可能在一個掃描周期中保持為1(單穩(wěn)輸出)。在梯形圖中,觸點跳變沿檢測方塊和RS觸發(fā)器方塊可被看做一個特殊常開觸點。該常開觸點的特性是:若方塊的Q為1,則觸點閉合;若Q為0,則觸點斷開。3.3.4位邏輯指令編程舉例例1.傳送帶控制圖3.14表示一個能夠電氣啟動的傳送帶。在傳送帶的起點有兩個按鈕開關(guān):用于START的S1和用于STOP的S2。在傳送帶的尾部也有兩個按鈕開關(guān):S3用于START,S4用于STOP??梢詮娜我欢藛踊蛲V箓魉蛶?。另外,當傳送帶上的物件到達末端時,傳感器S5使傳送帶停機。圖3.14傳送帶示意圖表3.10用于傳送帶系統(tǒng)符號編程的元素圖3.15控制傳送帶的梯形圖與相應(yīng)的語句表圖3.16串并聯(lián)組合邏輯梯形圖(a)先并后串邏輯梯形圖;(b)先串后并邏輯梯形圖例2.串并聯(lián)組合表示法
當邏輯串是復(fù)雜組合時,CPU的掃描順序是先“與”后“或”。圖3.16(a)給出的梯形邏輯是觸點先并后串的例子,與其對應(yīng)的語句表為:A(OI0.0OI0.2)A(OM10.0OM0.3)AM10.1=Q4.0圖3.16(b)是先串后并的例子,與其對應(yīng)的語句表如下:A(AI0.0AM10.0OAI0.2AM0.3)AM10.1=Q4.0例3.風機監(jiān)控程序某設(shè)備有三臺風機,當設(shè)備處于運行狀態(tài)時,如果風機至少有兩臺以上轉(zhuǎn)動,則指示燈常亮;如果僅有一臺風機轉(zhuǎn)動,則指示燈以0.5Hz的頻率閃爍;如果沒有任何風機轉(zhuǎn)動,則指示燈以2Hz的頻率閃爍。當設(shè)備不運行時,指示燈不亮。實現(xiàn)上述功能的梯形圖程序見圖3.17。圖3.17風機監(jiān)控程序下面給出實現(xiàn)風機狀態(tài)檢測的語句表程序,從中可看出中間輸出指令的用法:輸入位I0.0,I0.1,I0.2分別表示風機1,2,3。存儲位M100.3為2Hz的頻率信號,M100.7為0.5Hz的信號。風機轉(zhuǎn)動狀態(tài)指示燈由Q4.0控制。存儲位M10.0為1時用于表示至少有兩臺風機轉(zhuǎn)動,M10.1為1時表示沒有風機轉(zhuǎn)動。例4.二分頻器二分頻器是一種具有一個輸入端和一個輸出端的功能單元,輸出頻率為輸入頻率的一半。如下,輸入為I0.0,輸出為Q4.0。梯形圖程序:語句表程序:方法2例5燈泡控制程序一盞燈泡由一個按鈕來控制,已知第一次按下按鈕,燈泡亮,第二次按下按鈕,燈光滅。PLC接線圖定義符號地址符號地址絕對地址類據(jù)類型說明S0I0.0BOOL按鈕L0Q0.0BOOL燈泡M0M0.0BOOL標標位梯形圖程序3.4定時器與計數(shù)器指令3.4.1定時器指令定時器可以提供等待時間或監(jiān)控時間,定時器還可產(chǎn)生一定寬度的脈沖,亦可測量時間。定時器是一種由位和字組成的復(fù)合單元,定時器的觸點由位表示,其定時時間值存儲在字存儲器中。脈沖定時器(SP)擴展脈沖定時器(SE)接通延時定時器(SD)保持型接通延時定時器(SS)關(guān)斷延時定時器(SF)定時器的種類1.定時器的組成在CPU的存儲器中留出了定時器區(qū)域,該區(qū)域用于存儲定時器的定時時間值。每個定時器為2B,稱為定時字。在S7-300中,定時器區(qū)為512B,因此最多允許使用256個定時器。因為定時器區(qū)域的編址(以T打頭后跟定時器號,只能按字訪問)以及存儲格式的特殊性,所以只有通過使用有關(guān)的定時器指令才能對該區(qū)域進行訪問。S7中定時時間由時基和定時值兩部分組成,定時時間等于時基與定時值的乘積。當定時器運行時,定時值不斷減1,直至減到0,減到0表示定時時間到。定時時間到后會引起定時器觸點的動作。定時器的第0位到第11位存放二進制格式的定時值,第12、13位存放二進制格式的時基(如圖3.18所示)。這12位二進制代碼表示的數(shù)值范圍是0~4096,實際使用范圍是0~999。時基和時間值可以任意組合,以得到不同的定時分辨率和定時時間。表3.11中給出了可能的組合情況。從表3.11中可以看出,時基小,則定時分辨率高,但定時時間范圍窄;時基大,則定時分辨率低,但定時時間范圍寬。圖3.18累加器1低字的內(nèi)容(定時值127,時基ls)表3.11時基與定時范圍當定時器啟動時,累加器1低字的內(nèi)容被當作定時時間裝入定時字中。這一過程是由操作系統(tǒng)控制自動完成的,用戶只需給累加器1裝入不同的數(shù)值,即可設(shè)置需要的定時時間。為累加器1裝入定時時間值的表示方法:為累加器1裝入數(shù)值的指令很多,但在累加器1低字中的數(shù)據(jù)應(yīng)符合圖3.18所示的格式。為避免格式錯誤,推薦采用下述直觀的句法:方法1:
LW#16#wxyz其中,w,x,y,z均為十進制數(shù)。w為時基,取值為0,1,2或3,分別表示時基為10ms,l00ms,1s或10s;xyz為定時值,取值范圍為1~999。方法2:也可直接使用S5中的時間表示法裝入定時數(shù)值,例如: LS5T#aH_bbM_ccS_dddMS其中,a:小時,bb:分鐘,cc:秒,ddd:毫秒,范圍:1MS到2H_46M_30S;此時,時基是自動選擇的,原則是根據(jù)定時時間選擇能滿足定時范圍要求的最小時基。
2.定時器的啟動與運行PLC中的定時器相當于時間繼電器。在使用時間繼電器時,要為其設(shè)置定時時間,當時間繼電器的線圈通電后,時間繼電器被啟動。若定時時間到,繼電器的觸點動作。當時間繼電器的線圈斷電時,也將引起其觸點的動作。該觸點可以在控制線路中控制其它繼電器。S7中的定時器與時間繼電器的工作特點相似,對定時器同樣要設(shè)置定時時間,也要啟動定時器(使定時器線圈通電)。除此之外,定時器還增加了一些功能,如隨時復(fù)位定時器、隨時重置定時時間(定時器再啟動)、查看當前剩余定時時間等。S7中的定時器不僅功能強,而且類型多。圖3.19給出了為定時作業(yè)如何正確選擇定時器的示意圖。以下將以LAD方塊圖為主詳細介紹定時器的運行原理及使用方法。圖3.19五種類型定時器總覽3.定時器梯形圖方塊指令1)脈沖定時器(見表3.13)表3.13脈沖定時器如果RLO有正跳沿,則脈沖定時器啟動指令,以給出的時間值啟動指定的定時器。只要RLO為1,定時器就保持運行。在定時器運行時,其常開觸點閉合,即對該定時器按1掃描的結(jié)果為1。當定時時間到,常開觸點斷開,對1信號的掃描結(jié)果為0。若在給定的時間(即定時時間)過去之前RLO由1變?yōu)?,則定時器被復(fù)位至啟動前的狀態(tài),在這種情況下定時器的常開觸點斷開。圖3.20脈沖定時器指令圖3.20是使用脈沖定時器的梯形圖編程例子,圖3.21是脈沖定時器的時序。以下是與梯形圖對應(yīng)的語句表: A I0.0 L S5T#2SSP T5 //以脈沖定時器方式啟動T5A I0.1R T5 //復(fù)位定時器T5A T5= Q4.0 //使用定時器T5的觸點圖3.21脈沖定時器時序2)擴展脈沖定時器(見表3.14)表3.14擴展脈沖定時器如果RLO有正跳沿,則擴展(輸入)脈沖定時器啟動指令,以給出的時間值啟動指定的定時器。即使RLO變?yōu)?,定時器仍保持運行,直到定時時間到后才停止(定時器被復(fù)位)。在定時器運行時,其常開觸點閉合,即對該定時器按1掃描的結(jié)果為1。當定時時間到后,則常開觸點斷開,對1信號的掃描結(jié)果為0。圖3.22擴展脈沖定時器指令圖3.22是使用擴展脈沖定時器的梯形圖編程例子,圖3.23是擴展脈沖定時器的時序。以下是與梯形圖對應(yīng)的語句表:A I0.0L S5T#2SSE T5 //以擴展脈沖定時器方式啟動T5A I0.1R T5 //復(fù)位定時器T5A T5= Q4.0 //使用定時器T5的觸點圖3.23擴展脈沖定時器時序3)接通延時定時器(見表3.14)表3.14接通延時定時器如果RLO有正跳沿,則接通延時定時器啟動指令,以給出的時間值啟動指定的定時器。當定時時間到后,則常開觸點閉合并保持(對1信號的掃描結(jié)果為1)。直到RLO變?yōu)?,定時器才被復(fù)位至啟動前的狀態(tài),此時定時器的常開觸點斷開。若在給定的時間(即定時時間)過去之前RLO由1變?yōu)?,則定時器也被復(fù)位。圖3.24接通延時定時器指令圖3.24是使用接通延時定時器的梯形圖編程例子,圖3.25是接通延時定時器的時序。以下是與梯形圖對應(yīng)的語句表:A I0.0L S5T#2SSD T5 //以接通延時定時器方式啟動T5A I0.1R T5 //復(fù)位定時器T5A T5= Q4.0 //使用定時器T5的觸點圖3.25接通延時定時器時序4)保持型接通延時定時器(見表3.16)表3.16保持型接通延時定時器如果RLO有正跳沿,則保持型接通延時定時器啟動指令,以給出的時間值啟動指定的定時器,即使RLO變?yōu)?,定時器仍保持運行。此時,定時器常開觸點斷開(即對該定時器按1掃描的結(jié)果為0),當定時時間到后,常開觸點閉合并保持。若RLO再有一個正跳沿,定時器重新啟動,只有用復(fù)位指令才能復(fù)位該定時器。圖3.26是使用保持型接通延時定時器的梯形圖編程例子,圖3.27是保持型接通延時定時器的時序。圖3.26保持型接通延時定時器指令圖3.27保持型接通延時定時器時序以下是與梯形圖對應(yīng)的語句表:A I0.0L S5T#2SSS T5 //以保持型接通延時定時器方式啟動T5A I0.1R T5 //復(fù)位定時器T5A T5= Q4.0 //使用定時器T5的觸點5)關(guān)斷延時定時器(見表3.17)表3.17關(guān)斷延時定時器如果RLO有負跳沿,則關(guān)斷延時定時器啟動指令,以給出的時間值啟動指定的定時器。當RLO為1或在定時器運行時,其常開觸點閉合,即對該定時器按1掃描的結(jié)果為1。當定時時間到后,則常開觸點斷開。若在給定的時間(即定時時間)過去之前RLO由0變?yōu)?,則定時器被復(fù)位至啟動前的狀態(tài)。一直到RLO從1變?yōu)?之前,定時器不再啟動(使用FR指令除外)。圖3.28關(guān)斷延時定時器指令圖3.28是使用關(guān)斷延時定時器的梯形圖編程例子,圖3.29是關(guān)斷延時定時器的時序。以下是與梯形圖對應(yīng)的語句表:A I0.0L S5T#2SSF T5 //以關(guān)斷延時定時器方式啟動T5A I0.1R T5 //復(fù)位定時器T5A T5= Q4.0 //使用定時器T5的觸點圖3.29關(guān)斷延時定時器時序4.定時器線圈指令表3.18定時器線圈指令圖3.30擴展脈沖定時器線圈指令圖3.30以擴展脈沖定時器為例說明定時器線圈指令的用法。與梯形圖功能對應(yīng)的語句表程序如下:A I0.0L S5T#2SSE T5 //以擴展脈沖定時器方式啟動T5A I0.1R T5 //復(fù)位定時器T5A T5= Q4.0 //使用定時器T5的觸點定時器應(yīng)用舉例例1脈沖發(fā)生器
用定時器可構(gòu)成脈沖發(fā)生器,這里用了兩個定時器產(chǎn)生頻率占空比均可設(shè)置的脈沖信號。如下圖的脈沖發(fā)生器的時序圖,當輸入I0.0為1時,輸出Q0.0為1或0交替進行,脈沖信號的周期為3s,脈沖寬度為1s。
梯形圖程序:網(wǎng)絡(luò)1A I0.0AN T1L S5T#2SSD T2網(wǎng)絡(luò)2A T2L SST#1SSD T1A T2= Q0.0
例2.頻率監(jiān)測器頻率監(jiān)測器用于監(jiān)測脈沖信號的頻率,若其低于下限,則指示燈亮,“確認”按鍵能使指示燈復(fù)位。為此,使用了一個擴展脈沖定時器,即每當頻率信號有一個上升沿就啟動一次定時器。如果超過了定時時間沒有啟動定時器,則表明兩個脈沖之間的時間間隔太長,即頻率太低了。圖3.36為頻率監(jiān)測器時序。圖3.36頻率監(jiān)測器時序圖3.37頻率監(jiān)測梯形圖程序在頻率監(jiān)測程序中,輸入I0.0用于關(guān)閉監(jiān)測器,I0.1用于確認頻率低;輸出Q4.0用以控制指示燈。定時器T1的定時時間為2s,即設(shè)置脈沖信號M10.0的頻率監(jiān)測下限為0.5Hz。梯形圖程序見圖3.37,以下是頻率監(jiān)測語句表程序:A M10.0AN I0.0L S5T#2SSE T1AN T1S Q4.0O I0.1O I0.0R Q4.0例3:順序循環(huán)執(zhí)行程序當X0接通,燈Y0亮;經(jīng)5s后,燈Y0滅,燈Y1亮;經(jīng)5s后,燈Y1滅,燈Y2亮,再過5s后,燈Y2滅,燈Y0亮,如此順序循環(huán),其時序圖如下。例4.電動機順序啟動控制程序
有三臺電動機M1、M2、M3,按下啟動按鈕后M1啟動,延時5s后M2啟動,再延時16s后M3啟動。
PLC接線定義符號地址梯形圖程序例5.十字路口的交通指揮信號燈布置如下圖:
一、控制要求(1)信號燈系統(tǒng)由一個啟動開關(guān)控制,當啟動開關(guān)接通時,該信號燈系統(tǒng)開始工作,當啟動開關(guān)關(guān)斷時,所有信號燈都熄滅。(2)南北綠燈和東西綠燈不能同時亮。如果同時亮應(yīng)關(guān)閉信號燈系統(tǒng),并立刻報警。(3)南北紅燈亮維持25s。在南北紅燈亮的同時東西綠燈也亮,并維持20s。到20s時,東西綠燈閃亮,閃亮3s后熄滅,此時,東西黃燈亮,并維持2s。到2s時,東西黃燈熄滅,東西紅燈亮。同時,南北紅燈熄滅,南北綠燈亮。(4)東西紅燈亮維持30s。南北綠燈亮維持25s,然后閃亮3s后熄滅。同時南北黃燈亮,維持2s后熄滅,這時南北紅燈亮,東西綠燈亮。(5)以上南北、東西信號燈周而復(fù)始地交替工作狀態(tài),指揮著十字路口的交通,其時序如下所示。二、PLC接線三、定義符號地址四、梯形圖程序3.4.2計數(shù)器指令S7中的計數(shù)器用于對RLO正跳沿計數(shù)。計數(shù)器是一種復(fù)合單元,它由表示當前計數(shù)值的字和表示其狀態(tài)的位組成。S7中有三種計數(shù)器,它們分別是加計數(shù)器、減計數(shù)器和可逆計數(shù)器。
1.計數(shù)器組成在CPU中保留一塊存儲區(qū)作為計數(shù)器計數(shù)值存儲區(qū),每個計數(shù)器占用兩個字節(jié),稱為計數(shù)器字。計數(shù)器字中的第0~11位表示計數(shù)值(二進制格式),計數(shù)范圍是0~999。當計數(shù)值達到上限999時,累加停止。計數(shù)值到達下限0時,將不再減小。對計數(shù)器進行置數(shù)(設(shè)置初始值)操作時,累加器1低字中的內(nèi)容被裝入計數(shù)器字。計數(shù)器的計數(shù)值,將以此為初值增加或減小??梢杂枚喾N方式為累加器1置數(shù),但要確保累加器1低字符合圖3.31規(guī)定的格式。圖3.31累加器1低字的內(nèi)容計數(shù)值1272.計數(shù)器梯形圖方塊指令表3.19計數(shù)器梯形圖方塊指令使用復(fù)位指令R可復(fù)位計數(shù)器。計數(shù)器被復(fù)位后,其計數(shù)值被清0,計數(shù)器輸出狀態(tài)也為0(常開觸點斷開)。計數(shù)器的各項操作應(yīng)按下列順序(編程順序)進行:加計數(shù)、減計數(shù)、計數(shù)器置數(shù)、計數(shù)器復(fù)位、使用計數(shù)器輸出狀態(tài)信號和讀取當前計數(shù)值。在圖3.32中使用了梯形圖可逆計數(shù)器方塊指令,輸入I0.0的正跳沿使計數(shù)器C10的計數(shù)值增加,輸入I0.1使計數(shù)值減小。計數(shù)器C10的狀態(tài)用于控制輸出Q4.0。給C10預(yù)置的初始值放在MW10中,當I0.2有正跳沿時,該值被置入計數(shù)器C10。以下是與梯形圖對應(yīng)的語句表程序:圖3.32可逆計數(shù)器梯形圖方塊應(yīng)用A I0.0CU C10//若I0.0有正跳沿,則計數(shù)器C10的計數(shù)值加1A I0.1CD C10 //若I0.1有正跳沿,則計數(shù)器C10的計數(shù)值減1A I0.2L MW10S C10 //若I0.2有正跳沿,則C1置數(shù)A I0.3R C10 //若I0.3有正跳沿,則C10復(fù)位A C10= Q4.0 //若C10數(shù)值不為0,則Q4.0為13.計數(shù)器線圈指令表3.20計數(shù)器線圈指令圖3.33以加計數(shù)器為例說明計數(shù)器線圈指令的用法。與梯形圖功能對應(yīng)的語句表程序如下:A I0.0L C#100S C10A I0.1CU C10A I0.2R C10A C10= Q4.0這個例子用于對輸入I0.1的正跳沿計數(shù)。每一個正跳沿使計數(shù)器C10的計數(shù)值加1。輸入I0.0的信號狀態(tài)從0變?yōu)?,則計數(shù)器C10被置初始值100,C#表示以BCD碼格式輸入一個數(shù)值。若沒有正跳沿,計數(shù)器C10的計數(shù)值保持不變。輸入I0.2若為1,計數(shù)器被復(fù)位。計數(shù)器C10的計數(shù)值若不等于0,則C10輸出狀態(tài)為1,Q4.0也為1。3.4.3應(yīng)用舉例例1.計數(shù)器擴展為定時器當定時器不夠用時,可以用計數(shù)器擴展為定時器.程序中使用了CPU的時鐘存儲器,設(shè)置MB100為時鐘存儲器,則M100.0的變化周期為0.1s。在程序中,如果I0.1的正跳沿為減計數(shù)器C0置數(shù).若I0.0為1,則C0每0.1s減1。當C0減到0后,輸出Q0.0為1.I0.1的又一個正跳沿使C0置數(shù)并使輸出為0.這樣,在I0.0為1后2s(20*0.1s=2s),Q0.0為1,I0.1的正跳沿使Q0.0復(fù)位.例2.長時間延時程序采用定時器和計數(shù)器可以組成長時間延時程序,如下:當輸入I0.0接通時,定時器T0經(jīng)過10s時間延時后,其動合觸點T0閉合,計數(shù)器C0開始遞減運算,與此同時T0的動斷觸點是斷開的,造成T0線圈斷電,使T0的動合觸點斷開,C0僅計數(shù)一次,而后T0線圈又接通,如此循環(huán).當C0經(jīng)過10s*10=100s時間后,計數(shù)器C0輸出為0,輸出Q0.0接通,具有長時間延時的功能.例3.當X0接通,燈Y0亮;經(jīng)5s后,燈Y0滅,燈Y1亮;經(jīng)5s后,燈Y1滅,燈Y2亮,再過5s后,燈Y2滅,燈Y0亮,如此順序循環(huán)10次后自動停止。3.5數(shù)據(jù)處理功能指令3.5.1裝入和傳送指令裝入(L)和傳送(T)指令可以在存儲區(qū)之間或存儲區(qū)與過程輸入、輸出之間交換數(shù)據(jù)。CPU執(zhí)行這些指令不受邏輯操作結(jié)果RLO的影響。L指令將源操作數(shù)裝入累加器1中,而累加器原有的數(shù)據(jù)移入累加器2中,累加器2中原有的內(nèi)容被覆蓋。T指令將累加器1中的內(nèi)容寫入目的存儲區(qū)中,累加器的內(nèi)容保持不變。L和T指令可對字節(jié)(8位)、字(16位)、雙字(32位)數(shù)據(jù)進行操作,當數(shù)據(jù)長度小于32位時,數(shù)據(jù)在累加器右對齊(低位對齊),其余各位填0。裝入和傳送操作有三種尋址方式,即立即尋址、直接尋址和間接尋址。1.對累加器1的裝入和傳送指令L+5 //將立即數(shù)+5裝入累加器1中LMW10 //將MW10中的值裝入累加器1中LIB[DID8] //將由數(shù)據(jù)雙字DID8指出的輸入字節(jié)裝入累加器1中TMW20 //將累加器1中的內(nèi)容傳送給存儲字MW20TMW[AR1,P#10.0] //將累加器1中的內(nèi)容傳送給由地址寄存器1加偏移量確定的存儲字中
2.讀取或傳送狀態(tài)字LSTW //將狀態(tài)字中0~8位裝入累加器1中,累 加器9~3l位被清0TSTW //將累加器1中的內(nèi)容傳送到狀態(tài)字中
3.裝入時間值或計數(shù)值定時器字中的剩余時間值以二進制格式保存,用L指令從定時器字中讀出二進制時間值裝入累加器1中,稱為直接裝載。也可用LC指令以BCD碼格式讀出時間值,裝入累加器1低字中,稱為BCD碼格式讀出時間值。以BCD碼格式裝入時間值可以同時獲得時間值和時基,時基與時間值相乘就得到定時剩余時間。同理,對當前計數(shù)值也有直接裝載和以BCD碼格式讀出計數(shù)值之分。例如:
LT1//將定時器T1中二進制格式的時間值直接裝入累加器1的低字中LCT1//將定時器T1中的時間值和時基以BCD碼格式裝入累加器1的低字中LC1//將計數(shù)器C1中二進制格式的計數(shù)值直接裝入累加器1的低字中LCC1//將計數(shù)器Cl中的計數(shù)值以BCD碼格式裝入累加器1的低字中
4.地址寄存器裝入和傳送對于地址寄存器,可以不經(jīng)過累加器l而直接將操作數(shù)裝入或傳送,或?qū)蓚€地址寄
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度綠色交通基礎(chǔ)設(shè)施建設(shè)融資協(xié)議書
- 施工單位關(guān)于施工方案調(diào)整的工作聯(lián)系函
- 遠程教育技術(shù)在小學教育中的應(yīng)用
- 高處墜落機械傷害搶救應(yīng)急預(yù)案格式
- 二手車質(zhì)押貸款合同范文
- 不履行租賃合同起訴書范本
- 臨時聘請合同書
- 上海市糧食買賣合同參考樣本
- 臨沂沂州醫(yī)院合同醫(yī)療服務(wù)質(zhì)量提升策略
- 中外合資經(jīng)營項目投資合同范文(適用于房地產(chǎn)開發(fā))
- 北師大版小學六年級下冊數(shù)學全冊教學設(shè)計
- YY/T 0681.2-2010無菌醫(yī)療器械包裝試驗方法第2部分:軟性屏障材料的密封強度
- GB/T 20472-2006硫鋁酸鹽水泥
- 煙氣管道阻力計算
- 城鄉(xiāng)環(huán)衛(wèi)一體化保潔服務(wù)迎接重大節(jié)日、活動的保障措施
- 醫(yī)院-9S管理共88張課件
- 高考作文復(fù)習:議論文論證方法課件15張
- MySQL數(shù)據(jù)庫項目式教程完整版課件全書電子教案教材課件(完整)
- 藥品生產(chǎn)質(zhì)量管理工程完整版課件
- 《網(wǎng)絡(luò)服務(wù)器搭建、配置與管理-Linux(RHEL8、CentOS8)(微課版)(第4版)》全冊電子教案
- 職業(yè)衛(wèi)生教學課件生物性有害因素所致職業(yè)性損害
評論
0/150
提交評論