第3章s7-300指令系統(tǒng)_第1頁
第3章s7-300指令系統(tǒng)_第2頁
第3章s7-300指令系統(tǒng)_第3頁
第3章s7-300指令系統(tǒng)_第4頁
第3章s7-300指令系統(tǒng)_第5頁
已閱讀5頁,還剩282頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第3章S7-300系列PLC編程語言與基本指令系統(tǒng)3.1編程語言3.2指令及其結(jié)構(gòu)3.3位邏輯指令3.4定時(shí)器與計(jì)數(shù)器指令3.5數(shù)據(jù)處理功能指令3.6數(shù)據(jù)運(yùn)算指令3.7控制指令思考與練習(xí)題3.1s7-300/400編程語言3.1.1PLC編程語言的國際標(biāo)準(zhǔn)IEC(國際電工委員會(huì))是為電子技術(shù)制定全球標(biāo)準(zhǔn)的世界性組織,IEC61131是PLC的國際標(biāo)準(zhǔn)。它由5部分組成:通用信息、設(shè)備要求和測(cè)試、編程語言、用戶指南、通信服務(wù)規(guī)范。其中IEC61131-3是PLC的編程語言標(biāo)準(zhǔn)。STEP7是s7-300/400系列PLC編程軟件,軟件包中配備了三種基本編程語言1.梯形圖(LAD)2.語句表(STL)3.功能塊圖(FBD)除此之外,選件包里提供了一些更高級(jí)的編程語言4.順序功能圖(SFC):對(duì)應(yīng)于西門子的s7Graph,用來編制順序控制程序。5.結(jié)構(gòu)文本(ST):是一種專用的高級(jí)語言,類似于PASCAL和C,適合于復(fù)雜計(jì)算任務(wù)和最優(yōu)化算法。6.S7HiGraph編程語言使用狀態(tài)圖來描述異步、非順序過程的編程語言。系統(tǒng)被分為幾個(gè)功能單元,每個(gè)單元呈現(xiàn)不同狀態(tài),各功能單元的同步信息可以在圖形之間交換,需要為不同之間的切換定義轉(zhuǎn)換條件,用類似于語句表的語言描述指定狀態(tài)的動(dòng)作和狀態(tài)之間的轉(zhuǎn)換條件。7.S7CFC(ContinuousFuntionChart)編程語言以圖形方式連接程序庫中以塊的形式提供的各種功能,包括從簡(jiǎn)單的邏輯操作到復(fù)雜的閉環(huán)和開環(huán)控制等領(lǐng)域。編程時(shí)將這些塊拷貝到圖中并用線連接起來。編程語言用戶類應(yīng)用語句表(STL)愿意用類似于機(jī)器碼語言編程的用戶程序在運(yùn)行時(shí)間和存貯空間要求上最優(yōu)梯形圖(LAD)習(xí)慣電路圖的用戶編寫邏輯控制程序功能圖(FBD)熟悉布爾代數(shù)邏輯圖的用戶編寫邏輯控制程序SCL(結(jié)構(gòu)控制語言)可選軟件包用高級(jí)語言。如PASCAL或C語言編程的用戶數(shù)據(jù)處理任務(wù)程序S7Graph(順序控制)可選軟件包有技術(shù)背景,沒有PLC編程經(jīng)驗(yàn)的用戶以順序過程的描述很方便S7HiGraph(狀態(tài)圖形)可選軟件包有技術(shù)背景,沒有PLC編程經(jīng)驗(yàn)的用戶以異步非順序過程的描述很方便CFC(連續(xù)功能圖)可選軟件包有技術(shù)背景,沒有PLC編程經(jīng)驗(yàn)的用戶適用于連續(xù)過程的描述3.1.2STEP7編程語言的程序結(jié)構(gòu)為了容易閱讀和理解,程序常常被分成若干部分。我們稱之為塊。程序包括用戶塊和系統(tǒng)塊。3-1塊的調(diào)用關(guān)系如下:系統(tǒng)啟動(dòng)過程中,CPU動(dòng)態(tài)工作過程上電初始化程序OB100刷新過程映像輸入表主程序OB1刷新過程映像輸出表注:對(duì)于數(shù)字量模塊不一定要進(jìn)行硬件組態(tài),而對(duì)于模擬量模塊一定要進(jìn)行硬件組態(tài)。數(shù)據(jù)類型決定了你以什么方式或格式理解或訪問存儲(chǔ)區(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é)、字、或雙字,也可以是十進(jìn)制、十六進(jìn)制ASCII或浮點(diǎn)數(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í)、分、秒、毫秒的數(shù)值,時(shí)間增量是10MS。C#為計(jì)數(shù)器的常數(shù)(BCD碼),如C#250B(b1,b2)、B(b1,b2,b3,b4)分別用來表示2B、4B常數(shù)。數(shù)據(jù)類型描述常用符號(hào)舉例表基本數(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位定點(diǎn)數(shù)32位定點(diǎn)數(shù)REALS5TIME浮點(diǎn)數(shù)S5格式時(shí)間值TIMEDATEIEC格式時(shí)間值日期TIME_OF_DAY時(shí)間日期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ù)合成一組,形成一個(gè)單元。(2)結(jié)構(gòu)(STRUCT)將不同類型的數(shù)據(jù)合成一組,形成一個(gè)單元。(3)字符串(STRING)將多個(gè)字符(CHAR)組成一維數(shù)組,形成字符串。(4)其它日期和時(shí)間類型、用戶定義的數(shù)據(jù)類型UDT。其中UDT類型在FB塊中也常常使用。3.參數(shù)類型參數(shù)類型為邏輯塊之間傳遞形參而設(shè)定的。(1)TIMER和COUNT,如T3,C21(2)BLOCK,如FB,FC,DB(3)POINTER(指針)指針指向一個(gè)變量的地址,即用地址作實(shí)參,如p#m50.0是指向M50.0雙字地址指針。(4)ANY用于實(shí)參的數(shù)據(jù)類型未知或?qū)崊⒖梢允褂萌我鈹?shù)據(jù)類型的情況。占用10B,如p#DB1.DBX0.0BYTE30,表示DB1中以0地址為起始地址的30個(gè)字節(jié)。4.1.3CPU的存儲(chǔ)區(qū)裝載存儲(chǔ)器工作存儲(chǔ)器RAM系統(tǒng)存儲(chǔ)器RAM動(dòng)態(tài)裝載存儲(chǔ)器RAM可保持的裝載存儲(chǔ)器FEPROM用戶程序,如邏輯塊,數(shù)據(jù)塊位存儲(chǔ)器,定時(shí)器,計(jì)數(shù)器局部數(shù)據(jù)堆棧,塊堆棧中斷堆棧,中斷緩沖區(qū)過程映像I/O表裝載存儲(chǔ)器是RAM和FEPROM,用于保存不包含地址和注釋的用戶程序和系統(tǒng)數(shù)據(jù)(組態(tài)、連接和模塊參數(shù)等)。有的CPU有集成裝載存儲(chǔ)器,有的可以用微存儲(chǔ)卡(MMC)來擴(kuò)展。斷電時(shí)數(shù)據(jù)保存在MMC存儲(chǔ)器中,因此數(shù)據(jù)塊的內(nèi)容基本上被永久保存。下載程序時(shí),用戶程序(邏輯塊和數(shù)據(jù)塊)被下載到CPU的裝載存儲(chǔ)器中,CPU把可執(zhí)行的部分復(fù)制到工作存儲(chǔ)器,符號(hào)表和注釋保存在編程設(shè)備中。工作存儲(chǔ)器是集成的高速存取的RAM存儲(chǔ)器,用于存儲(chǔ)CPU運(yùn)行時(shí)的用戶程序和數(shù)據(jù),如組織塊、功能塊、功能、數(shù)據(jù)塊。復(fù)位CPU的存儲(chǔ)器時(shí),RAM中的程序被清除,F(xiàn)EPROM中的程序不會(huì)被清除。系統(tǒng)存儲(chǔ)器為用戶提供的存儲(chǔ)器組件,被劃分為若干個(gè)地址區(qū)域,如過程映像輸入I、過程映像輸出Q、位存儲(chǔ)器M、定時(shí)器T、計(jì)數(shù)器C、塊堆棧(B堆棧)、中斷堆棧(I中斷)和診斷緩沖區(qū)等。S7-300PLC存儲(chǔ)區(qū)圖S7-300存儲(chǔ)區(qū)示意圖表程序可訪問的存儲(chǔ)區(qū)及功能3.2指令及其結(jié)構(gòu)3.2.1指令的組成1.語句指令語句指令用助記符表示PLC要完成的操作。指令:操作碼+操作數(shù)操作碼用來指定要執(zhí)行的功能,告訴CPU該進(jìn)行什么操作;操作數(shù)內(nèi)包含為執(zhí)行該操作所必需的信息,告訴CPU用什么地方的數(shù)據(jù)來執(zhí)行此操作。例如: AI1.0該指令是一條位邏輯操作指令,其中:“A”是操作碼,它表示執(zhí)行“與”操作;“I1.0”是操作數(shù),它指出這是對(duì)輸入繼電器I1.0進(jìn)行的操作。有些語句指令不帶操作數(shù)。它們操作的對(duì)象是惟一的,故為簡(jiǎn)便起見,不再特別說明。例如: NOT//是對(duì)邏輯操作結(jié)果(RLO)取反 SET//把RLO置1。

2.梯形邏輯指令

梯形邏輯指令用圖形元素表示PLC要完成操作。在梯形邏輯指令中,其操作碼是用圖素表示的,該圖素形象表明CPU做什么,其操作數(shù)的表示方法與語句指令相同。如:例如:

該梯形圖中:——()可認(rèn)為是操作碼,表示一個(gè)二進(jìn)制賦值操作。Q0.0是操作數(shù),表示賦值的對(duì)象。梯形邏輯指令也可不帶操作數(shù)。

——|NOT|——是對(duì)邏輯操作結(jié)果取反的操作。

4.2.2操作數(shù)1.標(biāo)識(shí)符及標(biāo)識(shí)參數(shù)主標(biāo)識(shí)符(操作數(shù)存放的存儲(chǔ)器的區(qū)域):I、Q、PI、PQ、M、T、C、L、DB輔助標(biāo)識(shí)符

(操作數(shù)的位數(shù)長(zhǎng)度):X、B、W、D標(biāo)識(shí)符

標(biāo)識(shí)參數(shù)

(操作數(shù)在該存儲(chǔ)區(qū)域內(nèi)的具體位置)

操作數(shù)

注釋: I:輸入過程映像存儲(chǔ)區(qū) Q:輸出過程映像存儲(chǔ)區(qū) PI:外部輸入 PQ:外部輸出 M:位存儲(chǔ)區(qū) T:定時(shí)器 C:計(jì)數(shù)器 L:本地?cái)?shù) DB:數(shù)據(jù) X:位 B:字 W: D:雙字注意:①PLC物理存儲(chǔ)器是以字節(jié)為單位的。②當(dāng)操作數(shù)長(zhǎng)度是字或雙字時(shí),標(biāo)識(shí)符后給出的標(biāo)識(shí)參數(shù)是字或雙字內(nèi)的最低字節(jié)單元號(hào)。③當(dāng)使用寬度是字或雙字的地址時(shí),應(yīng)保證沒有生成任何重疊的字節(jié)分配,以免造成數(shù)據(jù)讀寫錯(cuò)誤。一般情況下,指令的操作數(shù)在PLC的存儲(chǔ)器中,此時(shí)操作數(shù)由操作數(shù)標(biāo)識(shí)符和參數(shù)組成。操作數(shù)標(biāo)識(shí)符告訴處理器操作數(shù)放在存儲(chǔ)器的哪個(gè)區(qū)域及操作數(shù)位數(shù);標(biāo)識(shí)參數(shù)則進(jìn)一步說明操作數(shù)在該存儲(chǔ)區(qū)域內(nèi)的具體位置。操作數(shù)標(biāo)識(shí)符由主標(biāo)識(shí)符和輔助標(biāo)識(shí)符組成。主標(biāo)識(shí)符表示操作數(shù)所在的存儲(chǔ)區(qū),輔助標(biāo)識(shí)符進(jìn)一步說明操作數(shù)的位數(shù)長(zhǎng)度。若沒有輔助標(biāo)識(shí)符指操作數(shù)的位數(shù)是一位。主標(biāo)識(shí)符有:I(輸入過程映像存儲(chǔ)區(qū)),Q(輸出過程映象存儲(chǔ)區(qū)),M(位存儲(chǔ)區(qū)),PI(外部輸入),PQ(外部輸入),T(定時(shí)器),C(計(jì)數(shù)器),DB(數(shù)據(jù)塊),L(本地?cái)?shù)據(jù));輔助標(biāo)識(shí)符有:X(位),B(字節(jié)),W(字——2字節(jié)),D(雙字——4字節(jié))。PLC物理存儲(chǔ)器是以字節(jié)為單位的,所以存儲(chǔ)單元規(guī)定為字節(jié)單元。位地址參數(shù)用一個(gè)點(diǎn)與字節(jié)地址分開。如: M10.1當(dāng)操作數(shù)長(zhǎng)度是字或雙字時(shí),標(biāo)識(shí)符后給出的標(biāo)識(shí)參數(shù)是字或雙字內(nèi)的最低字節(jié)單元號(hào)。圖3.1給出了字節(jié)、字、雙字的相互關(guān)系及表示方法。當(dāng)使用寬度為字或雙字的地址時(shí),應(yīng)保證沒有生成任何重疊的字節(jié)分配,以免造成數(shù)據(jù)讀寫錯(cuò)誤。圖3.1以字節(jié)單元為基準(zhǔn)標(biāo)記存儲(chǔ)器存儲(chǔ)單元位存儲(chǔ)區(qū)M表3.2存儲(chǔ)區(qū)及其功能

表3.2存儲(chǔ)區(qū)及其功能

2.操作數(shù)的表示法

操作數(shù)的表示法物理地址(絕對(duì)地址)符號(hào)地址(必須先定義后使用,而且符號(hào)名必須是唯一的)關(guān)于定義符號(hào)地址的幾點(diǎn)說明:當(dāng)你在表中輸入符號(hào)地址時(shí),應(yīng)注意以下幾點(diǎn):

列注意符號(hào)在整個(gè)符號(hào)表中名字必須唯一。當(dāng)你確認(rèn)該區(qū)域的輸入或退出該區(qū)域時(shí),不唯一的符號(hào)則被標(biāo)定出來。符號(hào)名最長(zhǎng)可達(dá)24個(gè)字符。引號(hào)(“”)不允許使用。地址當(dāng)你確認(rèn)該區(qū)域的輸入或退出該區(qū)域時(shí),程序會(huì)自動(dòng)檢查該地址輸入是否是允許的。數(shù)據(jù)類型當(dāng)你確認(rèn)或退出地址時(shí),該區(qū)域被自動(dòng)地賦予一個(gè)缺省數(shù)據(jù)類型。如果你修改這個(gè)缺省類型,程序會(huì)檢查你的數(shù)據(jù)類型是否與地址相匹配。注釋你可以輸入注釋簡(jiǎn)單地解釋該符號(hào)的功能(最多80個(gè)字符)。在STEP7中,操作數(shù)有兩種表示方法:一是物理地址(絕對(duì)地址)表示法;二是符號(hào)地址表示法。為一個(gè)物理地址定義有意義的符號(hào)名,可使程序的可讀性增強(qiáng),降低編程時(shí)由于筆誤而造成的程序錯(cuò)誤。用物理地址表示操作數(shù)時(shí),要明確指出操作數(shù)的所在存儲(chǔ)區(qū),該操作數(shù)的位數(shù)具體位置。例如:Q4.0是用物理地址表示的操作數(shù),其中Q表示這是一個(gè)在輸出過程映像區(qū)中的輸出位,具體位置是第四個(gè)字節(jié)的第0位。STEP7允許用符號(hào)地址表示操作數(shù),如Q4.0可用符號(hào)名MOTOR_ON替代表示,符號(hào)名必須先定義后使用,而且符號(hào)名必須是惟一的,不能重名。定義符號(hào)時(shí),需要指明操作數(shù)所在的存儲(chǔ)區(qū),操作數(shù)的位數(shù)、具體位置及數(shù)據(jù)類型。3.局域(塊定義)符號(hào)和共享符號(hào)共享符號(hào)局域符號(hào)有效性?在整個(gè)用戶程序中有效?可以被所有的塊使用?在所有的塊中含義是一樣的?在整個(gè)用戶程序中是唯一的?只在定義的塊有效?相同的符號(hào)可在不同的塊中用于不同的目的允許使用的字符?字母、數(shù)字及特殊字符。?除0X00,0XFF及引號(hào)以外的強(qiáng)調(diào)號(hào)?如使用特殊字符,則符號(hào)須寫出在引號(hào)內(nèi)。?字母?數(shù)字?下劃線(_)(注意:不允許使用兩個(gè)連續(xù)的下劃線)使用你可以為以下各項(xiàng)定義共享符號(hào):?I/O信號(hào)(I,IB,IW,ID,Q,QB,QW,QD)?I/O輸入與輸出(PI,PQ)?存儲(chǔ)位(M,MB,MW,MD)?定時(shí)器(T)/計(jì)數(shù)器(C)?邏輯塊(FB,F(xiàn)C,SFB,SFC)?數(shù)據(jù)塊(DB)?用戶定義數(shù)據(jù)類型(UDT)?變量表(VAT)你可以為以下各項(xiàng)定義局域符號(hào):?塊參數(shù)(輸入,輸出和輸入輸出參數(shù))?塊的靜態(tài)數(shù)據(jù)?塊的臨時(shí)數(shù)據(jù)在哪里定義符號(hào)表塊的變量聲明表?符號(hào)表中定義的符號(hào)(共享)顯示在引號(hào)內(nèi)。?塊變量聲明表中的符號(hào)(局域)顯示時(shí)前面加上“#”。提示:使用菜單命令View>Display>SymbolicRepresentation,你可以在所有聲明的符號(hào)地址和絕對(duì)地址之間進(jìn)行切換。3.2.3尋址方式操作數(shù)是指令的操作或運(yùn)算對(duì)象。所謂尋址方式是指令得到操作數(shù)的方式,可以直接給出或間接給出??捎米鱏TEP7指令操作對(duì)象的有:常數(shù);S7狀態(tài)字中的狀態(tài)位;S7的各種寄存器、數(shù)據(jù)塊;功能塊FB,F(xiàn)C和系統(tǒng)功能塊SFB,SFC;S7的各存儲(chǔ)區(qū)中的單元。S7有四種尋址方式,它們分別是:立即尋址、存儲(chǔ)器直接尋址、存儲(chǔ)器間接尋址和寄存器間接尋址。立即尋址:操作數(shù)本身直角接包含在指令中直接尋址:指令中直接給出操作數(shù)的存儲(chǔ)單元地址

存儲(chǔ)器間接尋址寄存器間接尋址

S7尋址方式

1.立即尋址這是對(duì)常數(shù)或常量的尋址方式。操作數(shù)本身直接包含在指令中。有些指令中的操作數(shù)是惟一的,為方便起見不再在指令中特別寫出。下面是立即尋址的例子:SET //把RLO置1OWW#16#A320//將常量W#16#A320與累加器1“或”運(yùn)算L27//把整數(shù)27裝入累加器1L'ABCD'//把ASCII碼字符ABCD裝入累加器1LC#0100//把BCD碼常數(shù)0100裝入累加器1

2.直接尋址包括對(duì)寄存器和存儲(chǔ)器的直接尋址。在直接尋址的指令中,直接給出操作數(shù)的存儲(chǔ)單元地址。例如:AI0.0//對(duì)輸入位I0.0進(jìn)行“與”邏輯操作SL20.0//把本地?cái)?shù)據(jù)位L20.0置1=M115.4//使存儲(chǔ)區(qū)位M115.4的內(nèi)容等于RLO的內(nèi)容LIB10//把輸入字節(jié)IB10的內(nèi)容裝入累加器1TDBD12//把累加器1中的內(nèi)容傳送給數(shù)據(jù)雙字DBD12中

3.存儲(chǔ)器間接尋址在存儲(chǔ)器間接尋址的指令中,給出一個(gè)存儲(chǔ)器(必須是表3.1中的存儲(chǔ)器),該存儲(chǔ)器的內(nèi)容是操作數(shù)所在存儲(chǔ)單元的地址,該地址又被稱為地址指針。存儲(chǔ)器間接尋址方式的優(yōu)點(diǎn)是,當(dāng)程序執(zhí)行時(shí),能改變操作數(shù)的存儲(chǔ)器地址,這對(duì)程序中的循環(huán)尤為重要。以下是使用存儲(chǔ)器雙字指針間接尋址的例子:AI[MD2]//對(duì)由MD2指出的輸入位進(jìn)行“與”邏輯操作。如:MD2的值為//2#00000000000000000000000001010110,則是對(duì)I10.6進(jìn)行“與”操作。=DIX[DBD2]//將RLO賦值給數(shù)據(jù)位,具體數(shù)據(jù)由數(shù)據(jù)雙字DBD2指出。LIB[DID4]//將由數(shù)據(jù)雙字DID4指出的輸入字節(jié)裝入累加器1。如:DID4的值為2#000000000000000000000000//01010000,則是對(duì)IB10進(jìn)行裝入操作。OQ[LD3]//對(duì)由本地?cái)?shù)據(jù)雙字指出的輸出位進(jìn)行“或”邏輯操作。依據(jù)要描述的地址復(fù)雜程度,地址指針可以是字或雙字的,存儲(chǔ)指針的存儲(chǔ)器大小也應(yīng)是字的或雙字的,由于定時(shí)器(T)、計(jì)數(shù)器(C)、數(shù)據(jù)塊(DB)、功能塊(FB或FC)的編號(hào)范圍在0到65535之內(nèi),所以用字指針就足夠了,相應(yīng)的也只需字存儲(chǔ)器存儲(chǔ)指針。其它的地址,如:輸入位、輸出位,則要用到雙字指針,并用雙字存儲(chǔ)器存儲(chǔ)指針。指針的兩種格式如圖3.2所示。如果要用雙字格式的指針訪問一個(gè)字、字節(jié)或雙字存儲(chǔ)器,必須保證指針中的位編號(hào)為0。圖3.2存儲(chǔ)器間接尋址的指針格式位3至18(范圍0至65535):被尋址字節(jié)的字節(jié)編號(hào) 位0至2(范圍0至7):被尋址位的位編號(hào)下面的例子顯示如何產(chǎn)生字或雙字指針并用其尋址:L+5//將整數(shù)+5裝入累加器1TMW2//將累加器1的內(nèi)容傳送給存儲(chǔ)字MW2,此時(shí)MW2的內(nèi)容為5OPNDB[MW2]//打開由MW2指出的數(shù)據(jù)塊,即,打開數(shù)據(jù)塊5LP#8.7//將2#00000000000000000000000001000111(二進(jìn)制數(shù))裝入累加器1TMD2//將累加器1的內(nèi)容傳送給存儲(chǔ)字MD2,此時(shí)MD2的內(nèi)容為//2#00000000000000000000000001000111LP#4.0//將2#00000000000000000000000000100000裝入累加器1,累//加器1原內(nèi)容被裝入累加器2+I//將累加器1和累加器2內(nèi)容相加,在累加器1中得到的“和”為 //2#00000000000000000000000001100111TMD4//將累加器1的當(dāng)前內(nèi)容傳送給存儲(chǔ)字MD4AI[MD2]//對(duì)輸入位I8.7進(jìn)行“與”邏輯操作=Q[MD4]//將RLO賦值給輸出位Q12.7

4.寄存器間接尋址在S7中有兩個(gè)地址寄存器,它們是AR1和AR2。通過地址寄存器,可以對(duì)各存儲(chǔ)區(qū)的存儲(chǔ)器內(nèi)容實(shí)現(xiàn)寄存器間接尋址。地址寄存器的內(nèi)容加上偏移量形成地址指針,該指針指向數(shù)值所在的存儲(chǔ)單元。地址寄存器存儲(chǔ)的地址指針有兩種格式,其長(zhǎng)度均為雙字。圖3.3給出了這兩種格式的細(xì)節(jié)及其差別。其中,第一種地址指針格式包括被尋址數(shù)值所在存儲(chǔ)單元地址的字節(jié)編號(hào)和位編號(hào),至于對(duì)哪個(gè)存儲(chǔ)區(qū)尋址,則必須在指令中明確直接給出。這種指針格式適用于在確定的存儲(chǔ)區(qū)內(nèi)尋址,即區(qū)內(nèi)寄存器間接尋址。而第二種地址指針格式中還包含了數(shù)值所在存儲(chǔ)區(qū)的說明位(存儲(chǔ)區(qū)域標(biāo)志位),這樣,就可通過改變這些位,實(shí)現(xiàn)跨區(qū)尋址,這種指針格式用于區(qū)域間寄存器間接尋址。區(qū)域標(biāo)識(shí)位的組合狀態(tài)見表3.2。圖3.3寄存器間接尋址的指針格式3124231615870位31=0表明是區(qū)域內(nèi)寄存器間接尋址;=1表明是區(qū)域間寄存器間接尋址。位24、25和26(rrr):區(qū)域標(biāo)識(shí)(見表3.2)位3至18(bbbbbbbbbbbbbbbb):被尋址位的字節(jié)編號(hào)(范圍0至65535)位0至2(×××):被尋址的位編號(hào)(范圍0至7)表3.3地址指針區(qū)域標(biāo)識(shí)位含義如果要用到寄存器指針格式訪問一個(gè)字節(jié)、字或雙字,則必須保證指針中位地址編號(hào)為0。下面的例子分別說明如何使用這兩種指針格式實(shí)現(xiàn)間接尋址:LP#8.6//將2#00000000000000000000000001000110裝入累加器1LAR1//將累加器1的內(nèi)容傳送至地址寄存器1AI[AR1,P#0.0]//地址寄存器1加偏移量結(jié)果為2#0000000000000000//////0000000001000110,指明是對(duì)輸入位I8.6進(jìn)行“與”操作=Q[AR1,P#4.1]//地址寄存器1加偏移量結(jié)果為2#0000000000000000//////0000000001100111,指明對(duì)輸出位Q12.7進(jìn)行賦值操作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)容傳送至存儲(chǔ)字MW208LP#I8.7//將2#10000001000000000000000001000111裝入累加器1LAR1//將累加器1的內(nèi)容傳送至地址寄存器1LP#Q8.7//將2#10000010000000000000000001000111裝入累加器1LAR2//將累加器1的內(nèi)容傳送至地址寄存器2A[AR1,P#0.0]//對(duì)輸入位I8.7進(jìn)行“與”邏輯操作=[AR2,P#1.1]//賦值給輸出位Q10.0LP#I8.0//將輸入位I8.0的雙字指針裝入累加器1LAR2//將累加器1的內(nèi)容傳送至地址寄存器2LP#M8.0//將存儲(chǔ)位M8.0的雙字指針裝入累加器1LAR1//將累加器1的內(nèi)容傳送至地址寄存器1LB[AR2,P#2.0]//把輸入字節(jié)IB10裝入累加器1,輸入字節(jié)10為8(AR2)加2(偏移量)TD[AR1,P#56.0]//把存儲(chǔ)雙字MD64裝入累加器1,存儲(chǔ)雙字64為8(AR1)//加56(偏移量)3.2.4狀態(tài)字狀態(tài)字用于表示CPU執(zhí)行指令時(shí)所具有的狀態(tài)。一些指令是否執(zhí)行或以何方式執(zhí)行可能取決于狀態(tài)字中的某些位;執(zhí)行指令時(shí)也可能改變狀態(tài)字中的某些位;你也能在位邏輯指令或字邏輯指令中訪問并檢測(cè)它們。圖3.4顯示了狀態(tài)字的結(jié)構(gòu)。圖3.4狀態(tài)字的結(jié)構(gòu)159876543210(1)首次檢測(cè)位(FC)狀態(tài)字的位0稱為首次檢測(cè)位。若FC位的狀態(tài)為0,則表明一個(gè)梯形邏輯網(wǎng)絡(luò)的開始,或指令為邏輯串第一條指令。CPU對(duì)邏輯串第一條指令的檢測(cè)(稱為首次檢測(cè))產(chǎn)生的結(jié)果直接保存在狀態(tài)字的RLO位中,經(jīng)過首次檢測(cè)存放在RLO中的0或1被稱為首次檢測(cè)結(jié)果。FC位在邏輯串的開始時(shí)總是0,在邏輯串指令執(zhí)行過程中FC位為1,輸出指令或與邏輯運(yùn)算有關(guān)的轉(zhuǎn)移指令(表示一個(gè)邏輯串結(jié)束的指令)將FC清0。(2)邏輯操作結(jié)果(RLO)狀態(tài)字的位1稱為邏輯操作結(jié)果RLO(ResultofLogicOperation)。該位存儲(chǔ)位邏輯指令或算術(shù)比較指令的結(jié)果。在邏輯串中,RLO位的狀態(tài)能夠表示有關(guān)信號(hào)流的信息。RLO的狀態(tài)為1,表示有信號(hào)流(通);為0,表示無信號(hào)流(斷)??捎肦LO觸發(fā)跳轉(zhuǎn)指令。(3)狀態(tài)位(STA)狀態(tài)字的位2稱為狀態(tài)位。狀態(tài)位不能用指令檢測(cè),它只是在程序測(cè)試中被CPU解釋并使用。如果一條指令是對(duì)存儲(chǔ)區(qū)操作的位邏輯指令,則無論是對(duì)該位的讀與寫操作,STA總是與該位的值取得一致;對(duì)不訪問存儲(chǔ)區(qū)的位邏輯指令來說,STA沒有意義,此時(shí)它總被置為1。(4)或位(OR)狀態(tài)字的位3稱為或位(OR)。在先邏輯“與”后邏輯“或”的邏輯串中,OR位暫存邏輯“與”的操作結(jié)果,以便進(jìn)行后面的邏輯“或”運(yùn)算。其它指令將OR位清0。(5)溢出位(OV)狀態(tài)字的位4稱為溢出位,溢出位被置1,表明一個(gè)算術(shù)運(yùn)算或浮點(diǎn)數(shù)比較指令執(zhí)行時(shí)出現(xiàn)錯(cuò)誤(錯(cuò)誤:溢出、非法操作、不規(guī)范格式)。后面的算術(shù)運(yùn)算或浮點(diǎn)數(shù)比較指令執(zhí)行結(jié)果正常的話OV位就被清0。(6)溢出狀態(tài)保持位(OS)狀態(tài)字的位5稱為溢出狀態(tài)保持位(或稱為存儲(chǔ)溢出位)。OV被置1時(shí)OS也被置1;OV被清0時(shí)OS仍保持。所以它保存了OV位,可用于指明在先前的一些指令執(zhí)行中是否產(chǎn)生過錯(cuò)誤。只有下面的指令才能復(fù)位OS位:JOS(OS=1時(shí)跳轉(zhuǎn));塊調(diào)用指令和塊結(jié)束指令。(7)條件碼1(CC1)和條件碼0(CC0)狀態(tài)字的位7和位6稱為條件碼1和條件碼0。這兩位結(jié)合起來用于表示在累加器1中產(chǎn)生的算術(shù)運(yùn)算或邏輯運(yùn)算結(jié)果與0的大小關(guān)系;比較指令的執(zhí)行結(jié)果或移位指令的移出位狀態(tài)。詳見表3.4和表3.5。表3.4算術(shù)運(yùn)算后的CC1和CC0表3.5比較、移位和循環(huán)移位、字邏輯指令后的CC1和CC0(8)二進(jìn)制結(jié)果位(BR)狀態(tài)字的位8稱為二進(jìn)制結(jié)果位。它將字處理程序與位處理聯(lián)系起來,在一段既有位操作又有字操作的程序中,用于表示字操作結(jié)果是否正確(異常)。將BR位加入程序后,無論字操作結(jié)果如何,都不會(huì)造成二進(jìn)制邏輯鏈中斷。在LAD的方塊指令中,BR位與ENO有對(duì)應(yīng)關(guān)系,用于表明方塊指令是否被正確執(zhí)行:如果執(zhí)行出現(xiàn)了錯(cuò)誤,BR位為0,ENO也為0;如果功能被正確執(zhí)行,BR位為1,ENO也為1。在用戶編寫的FB和FC程序中,必須對(duì)BR位進(jìn)行管理,當(dāng)功能塊正確運(yùn)行后使BR位為1,否則使其為0。使用STL指令SAVE或LAD指令——(SAVE),可將RLO存入BR中,從而達(dá)到管理BR位的目的。當(dāng)FB或FC執(zhí)行無錯(cuò)誤時(shí),使RLO為1并存入BR,否則,在BR中存入0。3.3位邏輯指令位邏輯指令主要包括位邏輯運(yùn)算指令、位操作指令和位測(cè)試指令,它們可以對(duì)布爾操作數(shù)(BOOL)的信號(hào)映態(tài)掃描并完成邏輯操作。邏輯操作結(jié)果(RLO)用以賦值、置位、復(fù)位布爾操作數(shù),也控制定時(shí)器和計(jì)數(shù)器的運(yùn)行。3.3.1位邏輯運(yùn)算指令位邏輯運(yùn)算指令是“與”(AND)、“或”(OR)、“異或”(XOR)指令及其組合。它對(duì)“0”或“1”這些布爾操作數(shù)掃描,經(jīng)邏輯運(yùn)算后將邏輯操作結(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布爾邏輯串開始的真值表梯形圖邏輯指令常開接點(diǎn)(動(dòng)合觸點(diǎn))元素和參數(shù)常閉接點(diǎn)(動(dòng)斷觸點(diǎn))元素和參數(shù)

1.“與”和“與非”(A,AN)指令

邏輯“與”在梯形圖里是用串聯(lián)的觸點(diǎn)回路表示的,被掃描的操作數(shù)則表示為觸點(diǎn)符號(hào),操作數(shù)標(biāo)在觸點(diǎn)上方。如果觸點(diǎn)是常開觸點(diǎn)(動(dòng)合觸點(diǎn)),則對(duì)“1”掃描相應(yīng)操作數(shù)。在PLC中規(guī)定:若操作數(shù)是“1”,則常開觸點(diǎn)“動(dòng)作”,即認(rèn)為是“閉合”的;若操作數(shù)是“0”,則常開觸點(diǎn)“不動(dòng)作”,即觸點(diǎn)仍然打開。如果觸點(diǎn)是常閉觸點(diǎn)(動(dòng)斷觸點(diǎn)),則對(duì)“0”掃描相應(yīng)操作數(shù)。在PLC中規(guī)定:若操作數(shù)是“1”,則常閉觸點(diǎn)“動(dòng)作”,即觸點(diǎn)“斷開”;若操作數(shù)是“0”,則常閉觸點(diǎn)“不動(dòng)作”,即觸點(diǎn)仍保持閉合。如果串聯(lián)回路里的所有觸點(diǎn)皆閉合,該回路就通“電”了。在圖3.5的回路中,如果所有觸點(diǎn)閉合,即當(dāng)輸入I0.0和輸出Q4.1的信號(hào)狀態(tài)都是“1”(觸點(diǎn)閉合)、且位存儲(chǔ)器M10.1為“0”(該觸點(diǎn)仍保持原閉合位置)時(shí),輸出Q4.0才為“1”;如果有一個(gè)或多個(gè)觸點(diǎn)是打開的,則輸出Q4.0的信號(hào)狀態(tài)就為“0”(繼電器觸點(diǎn)打開)。上述梯形邏輯圖,可用語句表指令完全表示。對(duì)應(yīng)的語句表為:AI0.0AQ4.1ANM10.1=Q4.0圖3.5“與”邏輯梯形圖()I0.0Q4.1M10.1Q4.0在上面的語句表中,操作數(shù)是被依次掃描的,其掃描的結(jié)果再邏輯“與”。對(duì)信號(hào)狀態(tài)進(jìn)行“1”掃描,并做邏輯”與”運(yùn)算,則用助記符“A”來標(biāo)識(shí),相關(guān)的操作數(shù)指定了要掃描對(duì)象。當(dāng)操作數(shù)的信號(hào)狀態(tài)是“1”時(shí),其掃描結(jié)果也是“1”。如果操作數(shù)的信號(hào)狀態(tài)是“0”,則掃描結(jié)果也是“0”。對(duì)信號(hào)狀態(tài)進(jìn)行“0”掃描,并做邏輯“與”運(yùn)算,則用助記符“AN”來標(biāo)識(shí)取反的“與”邏輯操作.當(dāng)操作數(shù)的信號(hào)狀態(tài)是“0”時(shí),其掃描結(jié)果就是“1”。如果操作數(shù)的信號(hào)狀態(tài)是“1”,則掃描結(jié)果就是“0”。在第一條語句里,CPU掃描的是輸入I0.0本次掃描也被稱為首次掃描。首次掃描的結(jié)果被直接保存在RLO(邏輯操作結(jié)果)中,在下一條語句中,掃描操作數(shù)輸出Q4.1;這次掃描的結(jié)果和RLO中保存的上一次結(jié)果相“與”,產(chǎn)生的新結(jié)果再存入RLO。如此逐一進(jìn)行,在邏輯序列結(jié)束處的RLO可用作進(jìn)一步處理。例如,用來激勵(lì)一個(gè)輸出信號(hào)。在上面的語句表中,把RLO的值賦給輸出Q4.0(=Q4.0)。

2.“或”和“或非”(O,ON)指令邏輯“或”在梯形圖里是用并聯(lián)的觸點(diǎn)回路表示的,被掃描的操作數(shù)標(biāo)在觸點(diǎn)上方。在觸點(diǎn)并聯(lián)的情況下,若有一個(gè)或一個(gè)以上的觸點(diǎn)閉合,則該回路就“通電”。在圖3.6中,驅(qū)動(dòng)信號(hào)通過并聯(lián)觸點(diǎn)回路加到輸出Q4.1。只要有一個(gè)觸點(diǎn)閉合,輸出4.1的信號(hào)狀態(tài)就為“l(fā)”。如果所有的觸點(diǎn)都是打開的,則輸出Q4.1就為“0”。在圖3.6中,僅當(dāng)輸入I1.1和輸出Q4.0兩者都為“0”,且M2.0為“1”時(shí),輸出Q4.1才為“0”。圖3.6“或”邏輯梯形圖I1.1M2.0Q4.0()Q4.1上述梯形邏輯圖,也可用語句表指令表示。對(duì)應(yīng)的語句表為:OI1.1ONM2.0OQ4.0=Q4.1在上面的語句表中,操作數(shù)是依次被掃描的,其掃描的結(jié)果再邏輯“或”。對(duì)信號(hào)狀態(tài)進(jìn)行“1掃描,并做邏輯“或”運(yùn)算,用助記符“O”來標(biāo)識(shí)。當(dāng)操作數(shù)的信號(hào)狀態(tài)是“1”時(shí),其掃描結(jié)果也是“1”。對(duì)信號(hào)狀態(tài)進(jìn)行“0”掃描,并做邏輯“或”運(yùn)算,則用助記符“ON”來標(biāo)識(shí)取反的“或”邏輯操作.當(dāng)操作數(shù)的信號(hào)狀態(tài)是“0”時(shí),其掃描結(jié)果就是“1”。如果操作數(shù)的信號(hào)狀態(tài)是“1”,則掃描結(jié)果就是“0”。在第一條語句里,處理器掃描的是輸入I1.1.首次掃描的結(jié)果被直接保存在RLO中,并和下一條語句的掃描結(jié)果相“或”,產(chǎn)生的新結(jié)果再存入RLO。如此逐一進(jìn)行,在邏輯序列結(jié)束處的RLO可用作進(jìn)一步處理。例如,用來激勵(lì)一個(gè)輸出信號(hào)。在上面的語句表中,把RLO的值賦給輸出Q4.1。

3.“異或”和“異或非”(X,XN)指令圖3.7是“異或”邏輯梯形圖,下面是與梯形圖對(duì)應(yīng)的語句表。在的語句表中,使用了“異或”和“異或非”指令,分別用助記符“X”和“XN”來標(biāo)識(shí)。它類似“或”和“或非”指令,用于掃描并聯(lián)回路能否“通電”。XI1.0XNI1.1=Q4.0當(dāng)執(zhí)行語句表中的第一條指令時(shí),首次掃描的結(jié)果被直接保存在RLO中,然后RLO中的值和第二條指令的掃描結(jié)果進(jìn)行“異或”操作,得到的新結(jié)果再存入RLO。如此掃描、“異或”并刷新RLO,直到賦值指令將RLO的值賦給輸出Q4.0。圖中,僅當(dāng)兩個(gè)觸點(diǎn)(輸入I1.0和輸入I1.1)的掃描結(jié)果不同,即只有一個(gè)為“1”時(shí),RLO才為“1”,并賦值給輸出使Q4.0為“1”。若兩個(gè)信號(hào)的掃描結(jié)果相同(均為“1”或“0”),則Q4.0為“0”。與O和ON比較,X和XN排除了兩個(gè)信號(hào)掃描結(jié)果為“1”時(shí),使輸出為“1”的可能。圖3.7“異或”邏輯梯形圖3.3.2位操作指令1.輸出指令邏輯串輸出指令又稱為賦值操作指令,該操作把狀態(tài)字中RLO的值賦給指定的操作數(shù)(位地址)。若RLO為“1”,則操作數(shù)被置位,否則操作數(shù)被復(fù)位。表3.5列出了操作數(shù)的數(shù)據(jù)類型和所在的存儲(chǔ)區(qū)。邏輯串輸出指令通過把首次檢測(cè)位(FC位)置0,來結(jié)束一個(gè)邏輯串。當(dāng)FC位為0時(shí),表明程序中的下一條指令是一個(gè)新邏輯串的第一條指令,CPU對(duì)其進(jìn)行首次掃描操作。這一點(diǎn)在梯形圖中顯示得很清楚。表3.6輸出指令LAD輸出指令像繼電器邏輯圖中的線圈一樣工作。如果電流能夠流經(jīng)電路到達(dá)線圈(即RLO為1)的話,則繼電器線圈通電,其常開觸點(diǎn)閉合,否則線圈不通電,常開觸點(diǎn)斷開。在LAD中,只能將輸出指令放在邏輯符號(hào)串的最右端,但其前面必須有鏈路,不能將輸出指令單獨(dú)放在一個(gè)空網(wǎng)絡(luò)中。一個(gè)RLO可被用來驅(qū)動(dòng)幾個(gè)輸出元件。在LAD中,輸出線圈是上下依次排列的。在STL中,與輸出信號(hào)有關(guān)的指令被一個(gè)接一個(gè)地連續(xù)編程,這些輸出具有相同的優(yōu)先級(jí)。圖3.8是多重輸出梯形圖,與之對(duì)應(yīng)的語句表如下:AI0.0AI0.1ONI0.2=Q4.0AI0.3=Q4.1圖3.8是多重輸出梯形圖中間輸出指令在存儲(chǔ)邏輯中,用于存儲(chǔ)RLO的中間值,該值是中間輸出指令前的位前的邏輯操作結(jié)果。在與其它觸點(diǎn)串聯(lián)的情況下,中間輸出與一般觸點(diǎn)的功能一樣。中間輸出指令不能用于結(jié)束一個(gè)邏輯串,因此,中間輸出指令不能放在邏輯串的結(jié)尾或分支的結(jié)尾處,圖3.9是中間輸出梯形圖。從圖3.9中可以看出,中間輸出指令能夠在位操作邏輯串中驅(qū)動(dòng)等效繼電器,并影響繼電器的觸點(diǎn)狀態(tài)。這使得梯形圖可以多級(jí)輸出,從而提高了編程效率。圖3.9中間輸出

2.置位/復(fù)位指令置位/復(fù)位指令根據(jù)RLO的值,來決定被尋址位的信號(hào)狀態(tài)是否需要改變。若RLO的值為1,被尋址位的信號(hào)狀態(tài)被置1或清0;若RLO是0,則被尋址位的信號(hào)保持原狀態(tài)不變。置位/復(fù)位指令有關(guān)內(nèi)容見表3.6。對(duì)于置位操作,一旦RLO為1,則被尋址信號(hào)(輸出信號(hào))狀態(tài)置1,即使RLO又變?yōu)?,輸出仍保持為1;對(duì)于復(fù)位操作,一旦RLO為1,則被尋址信號(hào)(輸出信號(hào))狀態(tài)置0,即使RLO又變?yōu)?,輸出仍保持為0;這一特性又被稱為靜態(tài)的置位/復(fù)位,相應(yīng)地,賦值輸出被稱為動(dòng)態(tài)賦值輸出。置位/復(fù)位指令也用于結(jié)束一個(gè)邏輯串,因此,在LAD中置位/復(fù)位指令要放在邏輯串的最右端,而不能放在邏輯串中間。復(fù)位指令還可用于復(fù)位定時(shí)器和計(jì)數(shù)器。表3.7置位/復(fù)位指令(S)圖3.10置位/復(fù)位指令(a)復(fù)位指令操作

3.RS觸發(fā)器RS觸發(fā)器梯形圖方塊指令表示見表3.8。方塊中標(biāo)有一個(gè)置位輸入(S)端,一個(gè)復(fù)位輸入(R)端,輸出端標(biāo)為Q。觸發(fā)器可以用在邏輯串最右端,結(jié)束一個(gè)邏輯串,也可用在邏輯串中,影響右邊的邏輯操作結(jié)果。表3.8RS觸發(fā)器如果置位輸入為1,即有電加到S端,則觸發(fā)器置位。此時(shí),即使置位輸入為0,觸發(fā)器也保持置位不變。如果復(fù)位輸入為1,即有電加到R端,則觸發(fā)器復(fù)位。此時(shí),即使復(fù)位輸入為0,觸發(fā)器也保持復(fù)位不變。RS觸發(fā)器分為置位優(yōu)先和復(fù)位優(yōu)先型兩種。置位優(yōu)先型RS觸發(fā)器的R端在S端之上,當(dāng)兩個(gè)輸入端都為1時(shí),下面的置位輸入最終有效。既置位輸入優(yōu)先,觸發(fā)器或被復(fù)位或保持復(fù)位不變。復(fù)位優(yōu)先型RS觸發(fā)器的S端在R端之上,當(dāng)兩個(gè)輸入端都為1時(shí),下面的復(fù)位輸入最終有效.既復(fù)位輸入優(yōu)先,觸發(fā)器或被置位或保持置位不變。圖3.11給出了使用置位優(yōu)先型RS觸發(fā)器的梯形圖例子,圖中也給出了與梯形圖對(duì)應(yīng)的語句表程序。AI0.0RM0.0AI0.1SM0.0AM0.0=Q4.0圖3.11置位優(yōu)先型RS觸發(fā)器

4.對(duì)RLO的直接操作指令這一類指令直接對(duì)邏輯操作結(jié)果RLO進(jìn)行操作,改變狀態(tài)字中RLO位的狀態(tài)。有關(guān)內(nèi)容見表3.8。表3.8對(duì)RLO的直接操作指令3.3.3位測(cè)試指令當(dāng)信號(hào)狀態(tài)變化時(shí)就產(chǎn)生跳變沿。當(dāng)從0變到1時(shí),產(chǎn)生一個(gè)上升沿(或正跳沿);若從1變到0,則產(chǎn)生一個(gè)下降沿(或負(fù)跳沿)。跳變沿檢測(cè)的原理是:在每個(gè)掃描周期中把信號(hào)狀態(tài)和它在前一個(gè)掃描周期的狀態(tài)進(jìn)行比較,若不同則表明有一個(gè)跳變沿。因此,前一個(gè)周期里的信號(hào)狀態(tài)必須被存儲(chǔ),以便能和新的信號(hào)狀態(tài)相比較。S7中有兩類跳變沿檢測(cè)指令,一種是對(duì)RLO的跳變沿檢測(cè)的指令,另一種是對(duì)觸點(diǎn)跳變沿直接檢測(cè)的梯形圖方塊指令。具體內(nèi)容見表3.9。表3.9跳變沿檢測(cè)指令圖3.12是使用RLO正跳沿檢測(cè)指令的例子。這個(gè)例子中,若CPU檢測(cè)到輸入I1.0有一個(gè)正跳沿,將使得輸出Q4.0的線圈在一個(gè)掃描周期內(nèi)通電。對(duì)輸入I1.0常開觸點(diǎn)掃描的RLO值(在本例中,此RLO正好與輸入I1.0的信號(hào)狀態(tài)相同)存放在存儲(chǔ)位M1.0中。圖3.12RLO正跳沿檢測(cè)在掃描周期中,CPU對(duì)I1.0信號(hào)狀態(tài)掃描并形成RLO值,若該RLO值是1而存放在M1.0中的上次RLO值是0,這說明FP指令檢測(cè)到一個(gè)RLO的正跳沿,那么FP指令把RLO位置1。如果RLO在相鄰的兩個(gè)掃描周期中相同(全為1或0),那么FP語句把RLO位清0。同樣,如果FN指令檢測(cè)到一個(gè)RLO的負(fù)跳沿,那么FN指令把RLO位置1。如果RLO在相鄰的兩個(gè)掃描周期中相同(全為1或0),那么FN語句把RLO位清0。需要注意的是,在編程時(shí)必須考慮到,F(xiàn)P和FN檢測(cè)到的是在RLO中表現(xiàn)出的變化,而不是觸點(diǎn)的狀態(tài)變化(前面的圖中是特例)。因?yàn)?,一般情況下,RLO可能由一個(gè)邏輯串形成,并不單獨(dú)與某觸點(diǎn)的狀態(tài)直接相關(guān)。若需要在邏輯串中單獨(dú)檢測(cè)某觸點(diǎn)的跳變沿,可使用對(duì)觸點(diǎn)跳變沿直接檢測(cè)的梯形圖方塊指令。圖3.13是使用觸點(diǎn)負(fù)跳沿檢測(cè)指令的例子。圖中,由<位地址1>給出需要檢測(cè)的觸點(diǎn)編號(hào)(I0.3),<地址2>(M0.0)用于存放該觸點(diǎn)在前一個(gè)掃描周期的狀態(tài)。圖3.13觸點(diǎn)負(fù)跳沿檢測(cè)執(zhí)行觸點(diǎn)正跳沿檢測(cè)指令時(shí),CPU將<位地址1>的當(dāng)前觸點(diǎn)狀態(tài)與存在<地址2>中的上次觸點(diǎn)狀態(tài)相比較,若當(dāng)前為1上次為0,表明有正跳沿產(chǎn)生,則輸出Q置1;其它情況下,輸出Q被清0。對(duì)于觸點(diǎn)負(fù)跳沿指令,若當(dāng)前為0上次為1,則輸出Q置1,其余情況Q被清0。由于不可能在相鄰的兩個(gè)掃描周期中連續(xù)檢測(cè)到正跳沿(或負(fù)跳沿),因此,輸出Q只可能在一個(gè)掃描周期中保持為1(單穩(wěn)輸出)。在梯形圖中,觸點(diǎn)跳變沿檢測(cè)方塊和RS觸發(fā)器方塊可被看做一個(gè)特殊常開觸點(diǎn)。該常開觸點(diǎn)的特性是:若方塊的Q為1,則觸點(diǎn)閉合;若Q為0,則觸點(diǎn)斷開。3.3.4位邏輯指令編程舉例例1.傳送帶控制圖3.14表示一個(gè)能夠電氣啟動(dòng)的傳送帶。在傳送帶的起點(diǎn)有兩個(gè)按鈕開關(guān):用于START的S1和用于STOP的S2。在傳送帶的尾部也有兩個(gè)按鈕開關(guān):S3用于START,S4用于STOP??梢詮娜我欢藛?dòng)或停止傳送帶。另外,當(dāng)傳送帶上的物件到達(dá)末端時(shí),傳感器S5使傳送帶停機(jī)。圖3.14傳送帶示意圖表3.10用于傳送帶系統(tǒng)符號(hào)編程的元素圖3.15控制傳送帶的梯形圖與相應(yīng)的語句表圖3.16串并聯(lián)組合邏輯梯形圖(a)先并后串邏輯梯形圖;(b)先串后并邏輯梯形圖例2.串并聯(lián)組合表示法

當(dāng)邏輯串是復(fù)雜組合時(shí),CPU的掃描順序是先“與”后“或”。圖3.16(a)給出的梯形邏輯是觸點(diǎn)先并后串的例子,與其對(duì)應(yīng)的語句表為:A(OI0.0OI0.2)A(OM10.0OM0.3)AM10.1=Q4.0圖3.16(b)是先串后并的例子,與其對(duì)應(yīng)的語句表如下:A(AI0.0AM10.0OAI0.2AM0.3)AM10.1=Q4.0例3.風(fēng)機(jī)監(jiān)控程序某設(shè)備有三臺(tái)風(fēng)機(jī),當(dāng)設(shè)備處于運(yùn)行狀態(tài)時(shí),如果風(fēng)機(jī)至少有兩臺(tái)以上轉(zhuǎn)動(dòng),則指示燈常亮;如果僅有一臺(tái)風(fēng)機(jī)轉(zhuǎn)動(dòng),則指示燈以0.5Hz的頻率閃爍;如果沒有任何風(fēng)機(jī)轉(zhuǎn)動(dòng),則指示燈以2Hz的頻率閃爍。當(dāng)設(shè)備不運(yùn)行時(shí),指示燈不亮。實(shí)現(xiàn)上述功能的梯形圖程序見圖3.17。圖3.17風(fēng)機(jī)監(jiān)控程序下面給出實(shí)現(xiàn)風(fēng)機(jī)狀態(tài)檢測(cè)的語句表程序,從中可看出中間輸出指令的用法:輸入位I0.0,I0.1,I0.2分別表示風(fēng)機(jī)1,2,3。存儲(chǔ)位M100.3為2Hz的頻率信號(hào),M100.7為0.5Hz的信號(hào)。風(fēng)機(jī)轉(zhuǎn)動(dòng)狀態(tài)指示燈由Q4.0控制。存儲(chǔ)位M10.0為1時(shí)用于表示至少有兩臺(tái)風(fēng)機(jī)轉(zhuǎn)動(dòng),M10.1為1時(shí)表示沒有風(fēng)機(jī)轉(zhuǎn)動(dòng)。例4.二分頻器二分頻器是一種具有一個(gè)輸入端和一個(gè)輸出端的功能單元,輸出頻率為輸入頻率的一半。如下,輸入為I0.0,輸出為Q4.0。梯形圖程序:語句表程序:方法2例5燈泡控制程序一盞燈泡由一個(gè)按鈕來控制,已知第一次按下按鈕,燈泡亮,第二次按下按鈕,燈光滅。PLC接線圖定義符號(hào)地址符號(hào)地址絕對(duì)地址類據(jù)類型說明S0I0.0BOOL按鈕L0Q0.0BOOL燈泡M0M0.0BOOL標(biāo)標(biāo)位梯形圖程序3.4定時(shí)器與計(jì)數(shù)器指令3.4.1定時(shí)器指令定時(shí)器可以提供等待時(shí)間或監(jiān)控時(shí)間,定時(shí)器還可產(chǎn)生一定寬度的脈沖,亦可測(cè)量時(shí)間。定時(shí)器是一種由位和字組成的復(fù)合單元,定時(shí)器的觸點(diǎn)由位表示,其定時(shí)時(shí)間值存儲(chǔ)在字存儲(chǔ)器中。脈沖定時(shí)器(SP)擴(kuò)展脈沖定時(shí)器(SE)接通延時(shí)定時(shí)器(SD)保持型接通延時(shí)定時(shí)器(SS)關(guān)斷延時(shí)定時(shí)器(SF)定時(shí)器的種類1.定時(shí)器的組成在CPU的存儲(chǔ)器中留出了定時(shí)器區(qū)域,該區(qū)域用于存儲(chǔ)定時(shí)器的定時(shí)時(shí)間值。每個(gè)定時(shí)器為2B,稱為定時(shí)字。在S7-300中,定時(shí)器區(qū)為512B,因此最多允許使用256個(gè)定時(shí)器。因?yàn)槎〞r(shí)器區(qū)域的編址(以T打頭后跟定時(shí)器號(hào),只能按字訪問)以及存儲(chǔ)格式的特殊性,所以只有通過使用有關(guān)的定時(shí)器指令才能對(duì)該區(qū)域進(jìn)行訪問。S7中定時(shí)時(shí)間由時(shí)基和定時(shí)值兩部分組成,定時(shí)時(shí)間等于時(shí)基與定時(shí)值的乘積。當(dāng)定時(shí)器運(yùn)行時(shí),定時(shí)值不斷減1,直至減到0,減到0表示定時(shí)時(shí)間到。定時(shí)時(shí)間到后會(huì)引起定時(shí)器觸點(diǎn)的動(dòng)作。定時(shí)器的第0位到第11位存放二進(jìn)制格式的定時(shí)值,第12、13位存放二進(jìn)制格式的時(shí)基(如圖3.18所示)。這12位二進(jìn)制代碼表示的數(shù)值范圍是0~4096,實(shí)際使用范圍是0~999。時(shí)基和時(shí)間值可以任意組合,以得到不同的定時(shí)分辨率和定時(shí)時(shí)間。表3.11中給出了可能的組合情況。從表3.11中可以看出,時(shí)基小,則定時(shí)分辨率高,但定時(shí)時(shí)間范圍窄;時(shí)基大,則定時(shí)分辨率低,但定時(shí)時(shí)間范圍寬。圖3.18累加器1低字的內(nèi)容(定時(shí)值127,時(shí)基ls)表3.11時(shí)基與定時(shí)范圍當(dāng)定時(shí)器啟動(dòng)時(shí),累加器1低字的內(nèi)容被當(dāng)作定時(shí)時(shí)間裝入定時(shí)字中。這一過程是由操作系統(tǒng)控制自動(dòng)完成的,用戶只需給累加器1裝入不同的數(shù)值,即可設(shè)置需要的定時(shí)時(shí)間。為累加器1裝入定時(shí)時(shí)間值的表示方法:為累加器1裝入數(shù)值的指令很多,但在累加器1低字中的數(shù)據(jù)應(yīng)符合圖3.18所示的格式。為避免格式錯(cuò)誤,推薦采用下述直觀的句法:方法1:

LW#16#wxyz其中,w,x,y,z均為十進(jìn)制數(shù)。w為時(shí)基,取值為0,1,2或3,分別表示時(shí)基為10ms,l00ms,1s或10s;xyz為定時(shí)值,取值范圍為1~999。方法2:也可直接使用S5中的時(shí)間表示法裝入定時(shí)數(shù)值,例如: LS5T#aH_bbM_ccS_dddMS其中,a:小時(shí),bb:分鐘,cc:秒,ddd:毫秒,范圍:1MS到2H_46M_30S;此時(shí),時(shí)基是自動(dòng)選擇的,原則是根據(jù)定時(shí)時(shí)間選擇能滿足定時(shí)范圍要求的最小時(shí)基。

2.定時(shí)器的啟動(dòng)與運(yùn)行PLC中的定時(shí)器相當(dāng)于時(shí)間繼電器。在使用時(shí)間繼電器時(shí),要為其設(shè)置定時(shí)時(shí)間,當(dāng)時(shí)間繼電器的線圈通電后,時(shí)間繼電器被啟動(dòng)。若定時(shí)時(shí)間到,繼電器的觸點(diǎn)動(dòng)作。當(dāng)時(shí)間繼電器的線圈斷電時(shí),也將引起其觸點(diǎn)的動(dòng)作。該觸點(diǎn)可以在控制線路中控制其它繼電器。S7中的定時(shí)器與時(shí)間繼電器的工作特點(diǎn)相似,對(duì)定時(shí)器同樣要設(shè)置定時(shí)時(shí)間,也要啟動(dòng)定時(shí)器(使定時(shí)器線圈通電)。除此之外,定時(shí)器還增加了一些功能,如隨時(shí)復(fù)位定時(shí)器、隨時(shí)重置定時(shí)時(shí)間(定時(shí)器再啟動(dòng))、查看當(dāng)前剩余定時(shí)時(shí)間等。S7中的定時(shí)器不僅功能強(qiáng),而且類型多。圖3.19給出了為定時(shí)作業(yè)如何正確選擇定時(shí)器的示意圖。以下將以LAD方塊圖為主詳細(xì)介紹定時(shí)器的運(yùn)行原理及使用方法。圖3.19五種類型定時(shí)器總覽3.定時(shí)器梯形圖方塊指令1)脈沖定時(shí)器(見表3.13)表3.13脈沖定時(shí)器如果RLO有正跳沿,則脈沖定時(shí)器啟動(dòng)指令,以給出的時(shí)間值啟動(dòng)指定的定時(shí)器。只要RLO為1,定時(shí)器就保持運(yùn)行。在定時(shí)器運(yùn)行時(shí),其常開觸點(diǎn)閉合,即對(duì)該定時(shí)器按1掃描的結(jié)果為1。當(dāng)定時(shí)時(shí)間到,常開觸點(diǎn)斷開,對(duì)1信號(hào)的掃描結(jié)果為0。若在給定的時(shí)間(即定時(shí)時(shí)間)過去之前RLO由1變?yōu)?,則定時(shí)器被復(fù)位至啟動(dòng)前的狀態(tài),在這種情況下定時(shí)器的常開觸點(diǎn)斷開。圖3.20脈沖定時(shí)器指令圖3.20是使用脈沖定時(shí)器的梯形圖編程例子,圖3.21是脈沖定時(shí)器的時(shí)序。以下是與梯形圖對(duì)應(yīng)的語句表: A I0.0 L S5T#2SSP T5 //以脈沖定時(shí)器方式啟動(dòng)T5A I0.1R T5 //復(fù)位定時(shí)器T5A T5= Q4.0 //使用定時(shí)器T5的觸點(diǎn)圖3.21脈沖定時(shí)器時(shí)序2)擴(kuò)展脈沖定時(shí)器(見表3.14)表3.14擴(kuò)展脈沖定時(shí)器如果RLO有正跳沿,則擴(kuò)展(輸入)脈沖定時(shí)器啟動(dòng)指令,以給出的時(shí)間值啟動(dòng)指定的定時(shí)器。即使RLO變?yōu)?,定時(shí)器仍保持運(yùn)行,直到定時(shí)時(shí)間到后才停止(定時(shí)器被復(fù)位)。在定時(shí)器運(yùn)行時(shí),其常開觸點(diǎn)閉合,即對(duì)該定時(shí)器按1掃描的結(jié)果為1。當(dāng)定時(shí)時(shí)間到后,則常開觸點(diǎn)斷開,對(duì)1信號(hào)的掃描結(jié)果為0。圖3.22擴(kuò)展脈沖定時(shí)器指令圖3.22是使用擴(kuò)展脈沖定時(shí)器的梯形圖編程例子,圖3.23是擴(kuò)展脈沖定時(shí)器的時(shí)序。以下是與梯形圖對(duì)應(yīng)的語句表:A I0.0L S5T#2SSE T5 //以擴(kuò)展脈沖定時(shí)器方式啟動(dòng)T5A I0.1R T5 //復(fù)位定時(shí)器T5A T5= Q4.0 //使用定時(shí)器T5的觸點(diǎn)圖3.23擴(kuò)展脈沖定時(shí)器時(shí)序3)接通延時(shí)定時(shí)器(見表3.14)表3.14接通延時(shí)定時(shí)器如果RLO有正跳沿,則接通延時(shí)定時(shí)器啟動(dòng)指令,以給出的時(shí)間值啟動(dòng)指定的定時(shí)器。當(dāng)定時(shí)時(shí)間到后,則常開觸點(diǎn)閉合并保持(對(duì)1信號(hào)的掃描結(jié)果為1)。直到RLO變?yōu)?,定時(shí)器才被復(fù)位至啟動(dòng)前的狀態(tài),此時(shí)定時(shí)器的常開觸點(diǎn)斷開。若在給定的時(shí)間(即定時(shí)時(shí)間)過去之前RLO由1變?yōu)?,則定時(shí)器也被復(fù)位。圖3.24接通延時(shí)定時(shí)器指令圖3.24是使用接通延時(shí)定時(shí)器的梯形圖編程例子,圖3.25是接通延時(shí)定時(shí)器的時(shí)序。以下是與梯形圖對(duì)應(yīng)的語句表:A I0.0L S5T#2SSD T5 //以接通延時(shí)定時(shí)器方式啟動(dòng)T5A I0.1R T5 //復(fù)位定時(shí)器T5A T5= Q4.0 //使用定時(shí)器T5的觸點(diǎn)圖3.25接通延時(shí)定時(shí)器時(shí)序4)保持型接通延時(shí)定時(shí)器(見表3.16)表3.16保持型接通延時(shí)定時(shí)器如果RLO有正跳沿,則保持型接通延時(shí)定時(shí)器啟動(dòng)指令,以給出的時(shí)間值啟動(dòng)指定的定時(shí)器,即使RLO變?yōu)?,定時(shí)器仍保持運(yùn)行。此時(shí),定時(shí)器常開觸點(diǎn)斷開(即對(duì)該定時(shí)器按1掃描的結(jié)果為0),當(dāng)定時(shí)時(shí)間到后,常開觸點(diǎn)閉合并保持。若RLO再有一個(gè)正跳沿,定時(shí)器重新啟動(dòng),只有用復(fù)位指令才能復(fù)位該定時(shí)器。圖3.26是使用保持型接通延時(shí)定時(shí)器的梯形圖編程例子,圖3.27是保持型接通延時(shí)定時(shí)器的時(shí)序。圖3.26保持型接通延時(shí)定時(shí)器指令圖3.27保持型接通延時(shí)定時(shí)器時(shí)序以下是與梯形圖對(duì)應(yīng)的語句表:A I0.0L S5T#2SSS T5 //以保持型接通延時(shí)定時(shí)器方式啟動(dòng)T5A I0.1R T5 //復(fù)位定時(shí)器T5A T5= Q4.0 //使用定時(shí)器T5的觸點(diǎn)5)關(guān)斷延時(shí)定時(shí)器(見表3.17)表3.17關(guān)斷延時(shí)定時(shí)器如果RLO有負(fù)跳沿,則關(guān)斷延時(shí)定時(shí)器啟動(dòng)指令,以給出的時(shí)間值啟動(dòng)指定的定時(shí)器。當(dāng)RLO為1或在定時(shí)器運(yùn)行時(shí),其常開觸點(diǎn)閉合,即對(duì)該定時(shí)器按1掃描的結(jié)果為1。當(dāng)定時(shí)時(shí)間到后,則常開觸點(diǎn)斷開。若在給定的時(shí)間(即定時(shí)時(shí)間)過去之前RLO由0變?yōu)?,則定時(shí)器被復(fù)位至啟動(dòng)前的狀態(tài)。一直到RLO從1變?yōu)?之前,定時(shí)器不再啟動(dòng)(使用FR指令除外)。圖3.28關(guān)斷延時(shí)定時(shí)器指令圖3.28是使用關(guān)斷延時(shí)定時(shí)器的梯形圖編程例子,圖3.29是關(guān)斷延時(shí)定時(shí)器的時(shí)序。以下是與梯形圖對(duì)應(yīng)的語句表:A I0.0L S5T#2SSF T5 //以關(guān)斷延時(shí)定時(shí)器方式啟動(dòng)T5A I0.1R T5 //復(fù)位定時(shí)器T5A T5= Q4.0 //使用定時(shí)器T5的觸點(diǎn)圖3.29關(guān)斷延時(shí)定時(shí)器時(shí)序4.定時(shí)器線圈指令表3.18定時(shí)器線圈指令圖3.30擴(kuò)展脈沖定時(shí)器線圈指令圖3.30以擴(kuò)展脈沖定時(shí)器為例說明定時(shí)器線圈指令的用法。與梯形圖功能對(duì)應(yīng)的語句表程序如下:A I0.0L S5T#2SSE T5 //以擴(kuò)展脈沖定時(shí)器方式啟動(dòng)T5A I0.1R T5 //復(fù)位定時(shí)器T5A T5= Q4.0 //使用定時(shí)器T5的觸點(diǎn)定時(shí)器應(yīng)用舉例例1脈沖發(fā)生器

用定時(shí)器可構(gòu)成脈沖發(fā)生器,這里用了兩個(gè)定時(shí)器產(chǎn)生頻率占空比均可設(shè)置的脈沖信號(hào)。如下圖的脈沖發(fā)生器的時(shí)序圖,當(dāng)輸入I0.0為1時(shí),輸出Q0.0為1或0交替進(jìn)行,脈沖信號(hào)的周期為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)測(cè)器頻率監(jiān)測(cè)器用于監(jiān)測(cè)脈沖信號(hào)的頻率,若其低于下限,則指示燈亮,“確認(rèn)”按鍵能使指示燈復(fù)位。為此,使用了一個(gè)擴(kuò)展脈沖定時(shí)器,即每當(dāng)頻率信號(hào)有一個(gè)上升沿就啟動(dòng)一次定時(shí)器。如果超過了定時(shí)時(shí)間沒有啟動(dòng)定時(shí)器,則表明兩個(gè)脈沖之間的時(shí)間間隔太長(zhǎng),即頻率太低了。圖3.36為頻率監(jiān)測(cè)器時(shí)序。圖3.36頻率監(jiān)測(cè)器時(shí)序圖3.37頻率監(jiān)測(cè)梯形圖程序在頻率監(jiān)測(cè)程序中,輸入I0.0用于關(guān)閉監(jiān)測(cè)器,I0.1用于確認(rèn)頻率低;輸出Q4.0用以控制指示燈。定時(shí)器T1的定時(shí)時(shí)間為2s,即設(shè)置脈沖信號(hào)M10.0的頻率監(jiān)測(cè)下限為0.5Hz。梯形圖程序見圖3.37,以下是頻率監(jiān)測(cè)語句表程序:A M10.0AN I0.0L S5T#2SSE T1AN T1S Q4.0O I0.1O I0.0R Q4.0例3:順序循環(huán)執(zhí)行程序當(dāng)X0接通,燈Y0亮;經(jīng)5s后,燈Y0滅,燈Y1亮;經(jīng)5s后,燈Y1滅,燈Y2亮,再過5s后,燈Y2滅,燈Y0亮,如此順序循環(huán),其時(shí)序圖如下。例4.電動(dòng)機(jī)順序啟動(dòng)控制程序

有三臺(tái)電動(dòng)機(jī)M1、M2、M3,按下啟動(dòng)按鈕后M1啟動(dòng),延時(shí)5s后M2啟動(dòng),再延時(shí)16s后M3啟動(dòng)。

PLC接線定義符號(hào)地址梯形圖程序例5.十字路口的交通指揮信號(hào)燈布置如下圖:

一、控制要求(1)信號(hào)燈系統(tǒng)由一個(gè)啟動(dòng)開關(guān)控制,當(dāng)啟動(dòng)開關(guān)接通時(shí),該信號(hào)燈系統(tǒng)開始工作,當(dāng)啟動(dòng)開關(guān)關(guān)斷時(shí),所有信號(hào)燈都熄滅。(2)南北綠燈和東西綠燈不能同時(shí)亮。如果同時(shí)亮應(yīng)關(guān)閉信號(hào)燈系統(tǒng),并立刻報(bào)警。(3)南北紅燈亮維持25s。在南北紅燈亮的同時(shí)東西綠燈也亮,并維持20s。到20s時(shí),東西綠燈閃亮,閃亮3s后熄滅,此時(shí),東西黃燈亮,并維持2s。到2s時(shí),東西黃燈熄滅,東西紅燈亮。同時(shí),南北紅燈熄滅,南北綠燈亮。(4)東西紅燈亮維持30s。南北綠燈亮維持25s,然后閃亮3s后熄滅。同時(shí)南北黃燈亮,維持2s后熄滅,這時(shí)南北紅燈亮,東西綠燈亮。(5)以上南北、東西信號(hào)燈周而復(fù)始地交替工作狀態(tài),指揮著十字路口的交通,其時(shí)序如下所示。二、PLC接線三、定義符號(hào)地址四、梯形圖程序3.4.2計(jì)數(shù)器指令S7中的計(jì)數(shù)器用于對(duì)RLO正跳沿計(jì)數(shù)。計(jì)數(shù)器是一種復(fù)合單元,它由表示當(dāng)前計(jì)數(shù)值的字和表示其狀態(tài)的位組成。S7中有三種計(jì)數(shù)器,它們分別是加計(jì)數(shù)器、減計(jì)數(shù)器和可逆計(jì)數(shù)器。

1.計(jì)數(shù)器組成在CPU中保留一塊存儲(chǔ)區(qū)作為計(jì)數(shù)器計(jì)數(shù)值存儲(chǔ)區(qū),每個(gè)計(jì)數(shù)器占用兩個(gè)字節(jié),稱為計(jì)數(shù)器字。計(jì)數(shù)器字中的第0~11位表示計(jì)數(shù)值(二進(jìn)制格式),計(jì)數(shù)范圍是0~999。當(dāng)計(jì)數(shù)值達(dá)到上限999時(shí),累加停止。計(jì)數(shù)值到達(dá)下限0時(shí),將不再減小。對(duì)計(jì)數(shù)器進(jìn)行置數(shù)(設(shè)置初始值)操作時(shí),累加器1低字中的內(nèi)容被裝入計(jì)數(shù)器字。計(jì)數(shù)器的計(jì)數(shù)值,將以此為初值增加或減小??梢杂枚喾N方式為累加器1置數(shù),但要確保累加器1低字符合圖3.31規(guī)定的格式。圖3.31累加器1低字的內(nèi)容計(jì)數(shù)值1272.計(jì)數(shù)器梯形圖方塊指令表3.19計(jì)數(shù)器梯形圖方塊指令使用復(fù)位指令R可復(fù)位計(jì)數(shù)器。計(jì)數(shù)器被復(fù)位后,其計(jì)數(shù)值被清0,計(jì)數(shù)器輸出狀態(tài)也為0(常開觸點(diǎn)斷開)。計(jì)數(shù)器的各項(xiàng)操作應(yīng)按下列順序(編程順序)進(jìn)行:加計(jì)數(shù)、減計(jì)數(shù)、計(jì)數(shù)器置數(shù)、計(jì)數(shù)器復(fù)位、使用計(jì)數(shù)器輸出狀態(tài)信號(hào)和讀取當(dāng)前計(jì)數(shù)值。在圖3.32中使用了梯形圖可逆計(jì)數(shù)器方塊指令,輸入I0.0的正跳沿使計(jì)數(shù)器C10的計(jì)數(shù)值增加,輸入I0.1使計(jì)數(shù)值減小。計(jì)數(shù)器C10的狀態(tài)用于控制輸出Q4.0。給C10預(yù)置的初始值放在MW10中,當(dāng)I0.2有正跳沿時(shí),該值被置入計(jì)數(shù)器C10。以下是與梯形圖對(duì)應(yīng)的語句表程序:圖3.32可逆計(jì)數(shù)器梯形圖方塊應(yīng)用A I0.0CU C10//若I0.0有正跳沿,則計(jì)數(shù)器C10的計(jì)數(shù)值加1A I0.1CD C10 //若I0.1有正跳沿,則計(jì)數(shù)器C10的計(jì)數(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.計(jì)數(shù)器線圈指令表3.20計(jì)數(shù)器線圈指令圖3.33以加計(jì)數(shù)器為例說明計(jì)數(shù)器線圈指令的用法。與梯形圖功能對(duì)應(yīng)的語句表程序如下:A I0.0L C#100S C10A I0.1CU C10A I0.2R C10A C10= Q4.0這個(gè)例子用于對(duì)輸入I0.1的正跳沿計(jì)數(shù)。每一個(gè)正跳沿使計(jì)數(shù)器C10的計(jì)數(shù)值加1。輸入I0.0的信號(hào)狀態(tài)從0變?yōu)?,則計(jì)數(shù)器C10被置初始值100,C#表示以BCD碼格式輸入一個(gè)數(shù)值。若沒有正跳沿,計(jì)數(shù)器C10的計(jì)數(shù)值保持不變。輸入I0.2若為1,計(jì)數(shù)器被復(fù)位。計(jì)數(shù)器C10的計(jì)數(shù)值若不等于0,則C10輸出狀態(tài)為1,Q4.0也為1。3.4.3應(yīng)用舉例例1.計(jì)數(shù)器擴(kuò)展為定時(shí)器當(dāng)定時(shí)器不夠用時(shí),可以用計(jì)數(shù)器擴(kuò)展為定時(shí)器.程序中使用了CPU的時(shí)鐘存儲(chǔ)器,設(shè)置MB100為時(shí)鐘存儲(chǔ)器,則M100.0的變化周期為0.1s。在程序中,如果I0.1的正跳沿為減計(jì)數(shù)器C0置數(shù).若I0.0為1,則C0每0.1s減1。當(dāng)C0減到0后,輸出Q0.0為1.I0.1的又一個(gè)正跳沿使C0置數(shù)并使輸出為0.這樣,在I0.0為1后2s(20*0.1s=2s),Q0.0為1,I0.1的正跳沿使Q0.0復(fù)位.例2.長(zhǎng)時(shí)間延時(shí)程序采用定時(shí)器和計(jì)數(shù)器可以組成長(zhǎng)時(shí)間延時(shí)程序,如下:當(dāng)輸入I0.0接通時(shí),定時(shí)器T0經(jīng)過10s時(shí)間延時(shí)后,其動(dòng)合觸點(diǎn)T0閉合,計(jì)數(shù)器C0開始遞減運(yùn)算,與此同時(shí)T0的動(dòng)斷觸點(diǎn)是斷開的,造成T0線圈斷電,使T0的動(dòng)合觸點(diǎn)斷開,C0僅計(jì)數(shù)一次,而后T0線圈又接通,如此循環(huán).當(dāng)C0經(jīng)過10s*10=100s時(shí)間后,計(jì)數(shù)器C0輸出為0,輸出Q0.0接通,具有長(zhǎng)時(shí)間延時(shí)的功能.例3.當(dāng)X0接通,燈Y0亮;經(jīng)5s后,燈Y0滅,燈Y1亮;經(jīng)5s后,燈Y1滅,燈Y2亮,再過5s后,燈Y2滅,燈Y0亮,如此順序循環(huán)10次后自動(dòng)停止。3.5數(shù)據(jù)處理功能指令3.5.1裝入和傳送指令裝入(L)和傳送(T)指令可以在存儲(chǔ)區(qū)之間或存儲(chǔ)區(qū)與過程輸入、輸出之間交換數(shù)據(jù)。CPU執(zhí)行這些指令不受邏輯操作結(jié)果RLO的影響。L指令將源操作數(shù)裝入累加器1中,而累加器原有的數(shù)據(jù)移入累加器2中,累加器2中原有的內(nèi)容被覆蓋。T指令將累加器1中的內(nèi)容寫入目的存儲(chǔ)區(qū)中,累加器的內(nèi)容保持不變。L和T指令可對(duì)字節(jié)(8位)、字(16位)、雙字(32位)數(shù)據(jù)進(jìn)行操作,當(dāng)數(shù)據(jù)長(zhǎng)度小于32位時(shí),數(shù)據(jù)在累加器右對(duì)齊(低位對(duì)齊),其余各位填0。裝入和傳送操作有三種尋址方式,即立即尋址、直接尋址和間接尋址。1.對(duì)累加器1的裝入和傳送指令L+5 //將立即數(shù)+5裝入累加器1中LMW10 //將MW10中的值裝入累加器1中LIB[DID8] //將由數(shù)據(jù)雙字DID8指出的輸入字節(jié)裝入累加器1中TMW20 //將累加器1中的內(nèi)容傳送給存儲(chǔ)字MW20TMW[AR1,P#10.0] //將累加器1中的內(nèi)容傳送給由地址寄存器1加偏移量確定的存儲(chǔ)字中

2.讀取或傳送狀態(tài)字LSTW //將狀態(tài)字中0~8位裝入累加器1中,累 加器9~3l位被清0TSTW //將累加器1中的內(nèi)容傳送到狀態(tài)字中

3.裝入時(shí)間值或計(jì)數(shù)值定時(shí)器字中的剩余時(shí)間值以二進(jìn)制格式保存,用L指令從定時(shí)器字中讀出二進(jìn)制時(shí)間值裝入累加器1中,稱為直接裝載。也可用LC指令以BCD碼格式讀出時(shí)間值,裝入累加器1低字中,稱為BCD碼格式讀出時(shí)間值。以BCD碼格式裝入時(shí)間值可以同時(shí)獲得時(shí)間值和時(shí)基,時(shí)基與時(shí)間值相乘就得到定時(shí)剩余時(shí)間。同理,對(duì)當(dāng)前計(jì)數(shù)值也有直接裝載和以BCD碼格式讀出計(jì)數(shù)值之分。例如:

LT1//將定時(shí)器T1中二進(jìn)制格式的時(shí)間值直接裝入累加器1的低字中LCT1//將定時(shí)器T1中的時(shí)間值和時(shí)基以BCD碼格式裝入累加器1的低字中LC1//將計(jì)數(shù)器C1中二進(jìn)制格式的計(jì)數(shù)值直接裝入累加器1的低字中LCC1//將計(jì)數(shù)器Cl中的計(jì)數(shù)值以BCD碼格式裝入累加器1的低字中

4.地址寄存器裝入和傳送對(duì)于地址寄存器,可以不經(jīng)過累加器l而直接將操作數(shù)裝入或傳送,或?qū)蓚€(gè)地址寄

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論