《電氣控制基礎(chǔ)與可編程控制器應(yīng)用教程》課件第六章_第1頁
《電氣控制基礎(chǔ)與可編程控制器應(yīng)用教程》課件第六章_第2頁
《電氣控制基礎(chǔ)與可編程控制器應(yīng)用教程》課件第六章_第3頁
《電氣控制基礎(chǔ)與可編程控制器應(yīng)用教程》課件第六章_第4頁
《電氣控制基礎(chǔ)與可編程控制器應(yīng)用教程》課件第六章_第5頁
已閱讀5頁,還剩569頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

6.1可編程控制器的指令結(jié)構(gòu)和指令系統(tǒng)6.2位邏輯指令6.3定時器和計數(shù)器指令6.4數(shù)據(jù)處理功能指令6.5數(shù)據(jù)運算指令6.6控制指令思考題與習題第6章西門子S7-300系列PLC基本指令

主要內(nèi)容:

(1)掌握可編程控制器的編程語言。

(2)熟練掌握利用梯形圖、指令表進行電氣控制設(shè)計的方法。

PLC是由取代繼電器接觸器控制系統(tǒng)開始產(chǎn)生和發(fā)展的。隨著計算機技術(shù)的發(fā)展,PLC具有計算機控制系統(tǒng)的功能,例如算術(shù)運算、數(shù)據(jù)處理指令、中斷等極為強大的功能。這些功能通常是通過各種功能指令的形式來實現(xiàn)的。實際上,現(xiàn)在的PLC就是一個計算機控制系統(tǒng)。為了滿足工業(yè)控制的需要,PLC生產(chǎn)廠家為PLC增添了過程控制、數(shù)據(jù)處理和特殊功能的指令,這些指令稱為功能指令(FunctionInstruction)。功能指令的出現(xiàn),極大地拓寬了PLC的應(yīng)用范圍,增強了PLC編程的靈活性。功能指令的豐富程度及使用的方便程度是衡量PLC性能的一個重要指標??删幊炭刂破魇怯捎布糠趾蛙浖糠纸M成的。其硬件原理已經(jīng)在4.5節(jié)中詳細講述過,軟件可分為操作系統(tǒng)和用戶程序兩部分。操作系統(tǒng)是由PLC的生產(chǎn)廠家提供的,它用于支持和管理用戶程序,所以用戶只要會熟練應(yīng)用即可。用戶程序是用戶為了完成特定的任務(wù)而編寫的應(yīng)用程序,所以先要知道在什么編程軟件下進行自己的程序設(shè)計。對于西門子公司的SIMATICS7系列PLC,常用的編程軟件是STEP7,STEP7中有豐富的S7系列PLC的編程語言,通常我們使用的是梯形圖(LAD)、語句表(STL)和順控指令(GRAPH)等,另外,還有功能塊圖(FDB)、標準控制語言(SCL)、狀態(tài)圖(HiGraph)、連續(xù)功能圖(CFC)和STEP7的C語言等。在編程的過程中,用戶可以選擇上面所示的某一種語言進行編程,也可以利用多種語言的優(yōu)點來進行混合編程,使用戶的程序開發(fā)、輸入和調(diào)試等工作變得極為方便。對于初學者,我們建議先從梯形圖(LAD)開始學習。梯形圖具有直觀、簡單等優(yōu)點,并且在STEP7中,梯形圖可以轉(zhuǎn)換成為語句表(STL)和功能塊圖(FDB)。

在學習本章的過程中,用戶可以參照第9章的內(nèi)容進行實際操作或者實驗,同時結(jié)合第2章~第4章進行對比學習,這樣對學習該章有很大的促進作用。

可編程控制器的生產(chǎn)廠家很多,其型號眾多,不同的可編程控制器的指令都有區(qū)別,但是其指令的內(nèi)容基本是相同的。用戶程序是由若干條順序排列的指令組成的,指令是程序的最小獨立單位。對于不同的編程語言,如語句表和梯形圖,其指令也有所不同,分別稱為語句指令和梯形圖邏輯指令。盡管不同的語言的表達形式不同,但是它們表達的內(nèi)容都是相同的。下面介紹S7的編程語言,即語句指令(STL)、梯形圖(LAD)和功能塊圖(FDB)。6.1可編程控制器的指令結(jié)構(gòu)和指令系統(tǒng)6.1.1指令簡介

1.語句指令

語句指令類似于計算機中的助記符語言,是PLC的最基礎(chǔ)的編程語言。指令表編程是用一系列指令來表達程序的控制要求。指令的格式為:

操作碼[操作數(shù)]

其中,方括號表示可選用。

指令表和梯形圖具有一定的對應(yīng)關(guān)系。如下為一語句指令:

AI0.0//把輸入繼電器I0.0和其他元件串聯(lián),即“與”其中:A(是And的縮寫)代表“與”,I0.0代表輸入繼電器0.0(I代表輸入,是單詞In的縮寫;0.0代表繼電器的序號);“//”代表注釋,和C語言中的“/*”作用是相同的。我們把A稱為操作碼,I0.0稱為操作數(shù)。每一條語句指令是由一個操作碼和一個操作數(shù)(地址)組成的。操作碼是必不可少的,表示了該做什么事情;操作數(shù)為具體的操作對象,可以是一符號名或絕對標志,包括常數(shù),可編程控制器狀態(tài)字中的位、符號名、數(shù)據(jù)塊和數(shù)據(jù)塊區(qū)域中的單元、功能FC、功能塊FB、集成的系統(tǒng)功能SFC、集成的系統(tǒng)功能塊SFB及其編號,地址標識符和通過地址標識符指出的存儲區(qū)單元。有些指令沒有操作數(shù),如以下語句指令:

NOT//對操作結(jié)果取反,即“非”

2.梯形圖邏輯指令

PLC梯形圖是在繼電器接觸器控制電路中的繼電器接觸器基礎(chǔ)上演變而來的,用圖形符號進行編程,其中很多圖形符號和繼電器接觸器電路中的元件具有對應(yīng)關(guān)系。其編程思想也和繼電器接觸器控制電路的梯形圖基本一致,所以學習起來相對要方便一些。

梯形圖的內(nèi)容在4.2.2節(jié)中已做過介紹,這里不再贅述。

3.功能塊圖

功能塊圖(FBD)是一種與邏輯控制電路圖結(jié)構(gòu)相類似的圖形編程語言。它類似于“與”、“或”、“非”的邏輯電路結(jié)構(gòu)的編程方式。如用“&”來表示“與”邏輯操作等。FBD使用不同功能的“盒”,其中“盒”中的符號表示各種功能,就像邏輯方塊圖一樣,根據(jù)不同的方塊邏輯來表達控制任務(wù)。這種編程方式對計算機編程不熟悉的工程師來說是相當容易的。

圖6-1為邏輯功能塊圖。當輸入“Key_1”和“Key_2”均為“1”時,輸出“Green_Light”為“1”。

圖6-1邏輯功能塊圖6.1.2數(shù)據(jù)類型

數(shù)據(jù)是程序處理和控制的對象,在程序中對所有的數(shù)據(jù)都要指定其數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)的組織形式。數(shù)據(jù)是通過變量來傳遞和存儲的。一個變量需要兩個要素,即變量的名稱和變量的數(shù)據(jù)類型。數(shù)據(jù)類型決定了數(shù)據(jù)的屬性,包括其長度、取值范圍等。STEP7中的數(shù)據(jù)類型有基本數(shù)據(jù)類型、復雜數(shù)據(jù)類型和參數(shù)數(shù)據(jù)類型三大類。

1.基本數(shù)據(jù)類型

STEP7中的基本數(shù)據(jù)類型有12種,現(xiàn)分別介紹如下:

(1)位(Bit)。位數(shù)據(jù)的數(shù)據(jù)類型為BOOL(布爾)型,如I0.0,Q0.1,M0.0,V0.1等。該類型數(shù)據(jù)長度為1位,取值只有True(或1)和False(或0),標識符為X。它常用于開關(guān)量的表示,如各種觸點等,觸點閉合為“1”,斷開為“0”。

(2)字節(jié)(Byte)。一個字節(jié)(Byte)等于8位(Bit),其中0位為最低位,7位為最高位。如IB0(包括I0.0~I0.7位),QB0(包括Q0.0~Q0.7位),MB0(包括MB0.0~MB0.7位),VB0(包括VB0.0~VB0.7位)等。其范圍為00~FF(即十進制的0~255),助記符為B。它在STEP7中的格式為B#16#0~B#16#FF。

(3)字(Word)。兩個字節(jié)(Byte)組成一個字(Word),用來表示一個無符號數(shù),因此,字為16位。如IW0是由IB0和IB1組成的,其中I是區(qū)域標識符,W表示字,0是字的起始字節(jié)。需要注意的是,字的起始字節(jié)(如上例中的“0”)都必須是偶數(shù)。字的范圍為十六進制的0000~FFFF(即十進制的0~65536),助記符為W。在編程時要注意,如果已經(jīng)用了IW0,則再用IB0或IB1要特別加以小心,由于IB0和IB1的地址為IW0的低8位和高8位,可能使IW0的內(nèi)容發(fā)生變化。它在STEP7中的格式有以下幾種:二進制表達式:2#0~2#1111_1111_1111_1111

十六進制表達式:W#16#0000~W#16#FFFF

無符號十進制表達式:B#(0,0)~B#(255,255)

BCD表達式:C#-999~C#999或C#0~C#999

(4)雙字(DoubleWord)。相鄰的兩個字(Word)組成一個雙字,用來表示一個無符號數(shù),因此,雙字為32位。如MD100是由MW100和MW102組成的,其中M是區(qū)域標識符,D表示雙字,100是雙字的起始字節(jié)。需要注意的是,雙字的起始字節(jié)(如上例中的“100”)和字一樣,必須是偶數(shù)。雙字的范圍為十六進制的0000~FFFFFFFF(即十進制的0~4

294

967

295)

,助記符為DW。在編程時要注意,如果已經(jīng)用了MD100,則再用MW100或MW102要特別加以小心。以上的字節(jié)、字和雙字數(shù)據(jù)類型均為無符號數(shù),即只有正數(shù),沒有負數(shù)。雙字長度為4字節(jié),其表達格式如下:

二進制表達式:

2#0~2#1111_1111_1111_1111_1111_1111_1111_1111

十六進制表達式:W#16#0000_0000~W#16#FFFF_FFFF

無符號十進制表達式:B#(0,0,0,0)~B#(255,255,255,255)

(5)字符類型(Char)。字符類型用來表示ASCII字符,其長度為1字節(jié),8位,如“A”、“a”等。

(6)單整數(shù)(Int)。單整數(shù)的長度為雙字節(jié),取值范圍為-215~215-1(即-32

768~32

767)。整數(shù)為有符號數(shù),最高位為符號位,“1”表示負數(shù),“0”表示正數(shù)。

(7)長整數(shù)(Dint)。32位整數(shù)和16位整數(shù)一樣,為有符號數(shù),最高位為符號位,“1”表示負數(shù),“0”表示正數(shù)。其長度為4字節(jié),取值范圍為-231~231-1(即-2

147

483

648~

2

147

483

647)。它的表達式格式為L#-2147483648~L#2147483647。

(8)實數(shù)(Real)。實數(shù)的長度為4字節(jié),表達式格式為±3.402823E+38~±1.175495E-38,實數(shù)為32位,可以用來表示小數(shù)。實數(shù)可以表示為1.m

×

2e,且式中指數(shù)e

=

E

+

127

(1≤e≤254),為8位整數(shù),其存儲結(jié)構(gòu)如圖6-2所示。

圖6-2實數(shù)的存儲結(jié)構(gòu)

(9)定時器數(shù)(S5Time)。定時器數(shù)用來設(shè)置SIMATIC時間格式,長度為2字節(jié),16位。其表達式格式為S5T#1H_10M_10S_20MS(定時時間為1小時10分鐘10秒鐘20毫秒)。S5時間常數(shù)的取值范圍(用特定格式表示)為S5T#0H_0M_0S_0MS~S5T#2H_46M_30S_0MS,即0ms~2h46ms30s0ms時間增量為10ms。

(10)時間數(shù)(Time)。時間數(shù)用來設(shè)置IEC時間格式(帶符號),分辨率為1ms,長度為4字節(jié),32位。其取值范圍為T#-24D_20H_31M_23S_648MS~T#24D_20H_31M_23S_647MS。

(11)日期(Date)。日期用來設(shè)置IEC日期格式,分辨率為一天,長度為4字節(jié),32位。其取值范圍為D#1990_1_1~D#2168_12_31。

(12)時間數(shù)(Time_Of_Day)。時間數(shù)用來設(shè)置24小時時間格式,分辨率為1ms,長度為4字節(jié),32位。其表達式格式為TOD#0:0:0.0~TOD#23:59:59.999。

2.復雜數(shù)據(jù)類型

復雜數(shù)據(jù)是由一些基本數(shù)據(jù)類型組合而成的復合型數(shù)據(jù),或者是長度超過32位的數(shù)據(jù)類型。STEP7中的復雜數(shù)據(jù)類型有以下7種。

(1)日期時間數(shù)據(jù)類型(Date_And_Time)。該數(shù)據(jù)類型用于存儲年、月、日、時、分、秒、毫秒和星期的數(shù)據(jù)。它占用8個字節(jié),使用BCD編碼。星期天代碼為1,星期一~星期六代碼分別為2~7。其取值范圍為DT#1990-1-1-0:0:0.0~DT#2089-12-31-23:59:59.999。

如:DT#2004-07-16-12:30:16.200為2004年7月16日12時30分16.2秒。

(2)字符串類型(String)。字符串是由最多254個字符組成的一維數(shù)組。其最大長度為256字節(jié),String類型的前兩個字節(jié)存儲字符串長度信息,因此一個String類型的數(shù)據(jù)最多包含254個字符。其常數(shù)表示形式為有兩個單引號包括的字符串,如‘Abcde-300F’等。用戶在定義String類型變量的時候也可以限定它的最大長度,如String[8],表示該變量最多可以包含8個字符。

(3)數(shù)組類型(Array)。將一組同一類型的數(shù)據(jù)組合在一起組成一個單位就是數(shù)組。數(shù)組的維數(shù)最大可以到6維;數(shù)組中的元素可以是基本數(shù)據(jù)類型或者附在數(shù)據(jù)類型中的任一數(shù)據(jù)類型,但是數(shù)組類型不能嵌套。數(shù)組中的每一維的上、下標取值范圍為-32768~32767,同時下標須小于上標。

數(shù)組的定義必須說明數(shù)組的維數(shù)、元素類型和每一維的上、下標范圍。如A[1..3,1..5,1..4]表示3×5×4的三維數(shù)組,而A[1,2,3]表示數(shù)組中的一個元素。

(4)結(jié)構(gòu)類型(Struct)。將一組不同類型的數(shù)據(jù)組合在一起組成一個單位就是結(jié)構(gòu)。結(jié)構(gòu)類型是由不同數(shù)據(jù)類型組成的復合型數(shù)據(jù),用來定義某一組相關(guān)的數(shù)據(jù)。如定義電機的一組數(shù)據(jù)可以用如下方式:

Motor:STRUCT

Speed:INT

Current:REAL

END_STRUCT

(5)用戶定義類型(UDT)。用戶定義的數(shù)據(jù)類型(User-DefinedDataTypes,UDT)是由用戶將基本數(shù)據(jù)類型和復合數(shù)據(jù)類型組合在一起形成的數(shù)據(jù)類型,用在數(shù)據(jù)塊(DB)和變量聲明表中定義復合數(shù)據(jù)類型。同樣,該類型也是由不同的數(shù)據(jù)類型組合而成的復合數(shù)據(jù)類型,UDT是一個模塊,可以用來定義其他變量。它在STEP

7中也是以模塊的形式存儲的,稱為UDT塊(UDT1~UDT65535)。使用該類型數(shù)據(jù)時,在Blocks目錄下單擊鼠標右鍵,在快捷菜單中選擇InsertNewObject/DataType,就可以建立一個UDT塊,以后就可以將一個變量聲明成為UDT類型。

(6)

FB功能塊型。該數(shù)據(jù)類型僅可以在FB的靜態(tài)變量區(qū)定義,用于實現(xiàn)多背景數(shù)據(jù)塊。

(7)

SFB順序功能塊型。該數(shù)據(jù)類型同F(xiàn)B功能塊型。

3.參數(shù)數(shù)據(jù)類型

該類型是一種用于FC或FB的參數(shù)的數(shù)據(jù)類型,是為在邏輯塊之間傳遞參數(shù)的形參(FormalParameter,形式參數(shù))定義的數(shù)據(jù)類型。其主要包括以下幾種。

(1)

Timer/Counter:定時器/計數(shù)器類型。

(2)

BLOCK_FB/BLOCK_FC/BLOCK_DB/BLOCK_SDB:塊類型。

(3)

Pointer:6字節(jié)指針類型,傳遞DB塊號和數(shù)據(jù)地址。

(4)

Any:10字節(jié)指針類型,傳遞DB塊號、數(shù)據(jù)地址、數(shù)據(jù)數(shù)量以及數(shù)據(jù)類型。

使用以上數(shù)據(jù)類型時,可以把定時器、計數(shù)器、程序塊、數(shù)據(jù)塊,甚至不確定類型和長度的數(shù)據(jù)通過參數(shù)傳遞給FC和FB。參數(shù)類型為程序提供了很高的靈活性,可以實現(xiàn)更通用的控制功能。6.1.3操作數(shù)和存儲區(qū)功能

1.操作數(shù)

操作數(shù)是一條指令的地址,指一個常數(shù)或指令能找到一個數(shù)值(數(shù)據(jù)對象)的位置,指令可對該數(shù)進行操作。該地址可以是一符號名或絕對標志。地址可為下面的任意一項。

(1)常數(shù)。常數(shù)即定時器或計數(shù)器的數(shù)值,或一待裝入累加器1的ASCII碼字符串,見表6-1。

表6-1操作數(shù)(2)可編程控制器狀態(tài)字中的位。語句表指令的地址可以是PLC狀態(tài)字中的一個或多個位。指令檢查并影響狀態(tài)字中單個位的狀態(tài),或解釋狀態(tài)字中兩個位的組合,如表6-2所示。

表6-2可編程控制器狀態(tài)字中的位(3)符號名。在STL中僅能使用已聲明過的符號名,包括已輸入到符號表中的共享符號名和塊中的局部名,如表6-3所示。表6-3符號名(4)數(shù)據(jù)塊和數(shù)據(jù)塊區(qū)域中的單元、功能(FC)、功能塊(FB)、集成的系統(tǒng)功能(SFC)、集成的系統(tǒng)功能塊(SFB)及編號,如表6-4所示表6-4數(shù)據(jù)塊(5)地址標識符和通過地址標識符表示的存儲區(qū)單元。一個地址標識符可以是以下三個基本類型之一:

①指明PLC中存儲區(qū)域和該區(qū)域中數(shù)據(jù)對象大小的地址標識符,見表6-5。存儲區(qū)是指令能在其中尋找到一個值(數(shù)據(jù)對象)并對它進行操作的區(qū)域(如“I”指輸入過程暫存區(qū)),數(shù)值(數(shù)據(jù)對象)的大小是指令對其進行操作的長度(如“B”指字節(jié),“W”指字,“D”指雙字)。

表6-5指明存儲區(qū)域和數(shù)據(jù)對象大小的地址標識符②指明一個存儲區(qū)域,但沒有該區(qū)域中數(shù)據(jù)對象大小的地址標識符(如一個標識符表示區(qū)域,T指定時器,C指計數(shù)器,DB指數(shù)據(jù)塊,并加上這些定時器、計數(shù)器、數(shù)據(jù)塊的編號),見表6-6。表6-6指明存儲區(qū),但沒有數(shù)據(jù)對象大小的地址標識符③指明一個數(shù)據(jù)對象的大小,但無存儲區(qū)域的地址標識符,見表6-7。其實它的存儲區(qū)域已經(jīng)在跟隨地址標識符的存儲單元中編碼了存儲區(qū)單元,如表6-8所示。表6-7指明數(shù)據(jù)對象大小,但無存儲區(qū)域的地址標識符表6-8包括地址標識符和地址單元的地址

(6)字或雙字作為數(shù)據(jù)對象的應(yīng)用。如果運用一條指令的地址標識符指明可編程邏輯控制器(PLC)中的存儲區(qū)域,并且它的數(shù)據(jù)對象大小是一個字或雙字,則必須注意這里的存儲單元總是指一個字節(jié)單元,如圖6-3和6-4所示。這個字節(jié)單元是字或雙字最低的字節(jié)號,如圖6-4中的地址指在存儲區(qū)域M中四個連續(xù)的字節(jié),它從字節(jié)10(MB10)開始到字節(jié)13(MB13)結(jié)束。

圖6-3以字節(jié)單元注明存儲單元的例子

圖6-4數(shù)據(jù)對象的大小雙字:存儲區(qū)雙字MD10。

字:存儲區(qū)字MW10、MW12。

字節(jié):存儲區(qū)字節(jié)MB10、MB11、MB12、MB13。

當絕對地址的寬度為字或雙字時,要保證沒有指定任何字節(jié),以免造成重疊。

(7)存儲器單元。地址標識符的地址屬于以下兩種類型之一:

①在規(guī)定存儲區(qū)域中的單元(如1.0在地址I1.0中指“輸入模塊1,輸入0位”)。

②在局部存儲區(qū)域、數(shù)據(jù)區(qū)或地址寄存器中的單元(如[AR1,P#4.3]指在地址寄存器1中的數(shù)值,加上4個字節(jié),3個位)。前面介紹了操作碼和操作數(shù),操作數(shù)是由標識符和參數(shù)組成的,如I0.0,I0.1,I0.2和Q0.0等。從控制線路來說,操作數(shù)代表了某一個或者某一組元件,和低壓電器元件類似,區(qū)別是一個是軟元件,一個是硬件的元件。從PLC角度來說,操作數(shù)代表了I/O口的某一個地址或者內(nèi)部的某一個軟元件(如中間繼電器等)。從PLC內(nèi)部來說,操作數(shù)表示了其在內(nèi)存中的具體地址,其中標識符表示內(nèi)存的某一區(qū)域,參數(shù)表示該區(qū)域中的具體位置。梯形圖和語句指令中均有操作數(shù)。對于梯形圖,操作數(shù)在梯形圖指令符號的上方;對于語句指令,操作數(shù)在操作碼的后面。在學習過程中,可以認為操作數(shù)是某一個元件。標識符由主標識符和輔助標識符構(gòu)成。其中:主標識符表示元件的類型,也表示操作數(shù)在內(nèi)存中的區(qū)域,如表6-9所示;輔助標識符代表操作數(shù)的位數(shù),如一個字節(jié)或者兩個字節(jié)等,對于單字節(jié)長度的標識符是沒有輔助標識符的,如表6-10所示。

表6-9主標識符表6-10輔助輸入標識符上面所講到的操作數(shù)使用的是絕對地址,也就是PLC的存儲區(qū)域的物理地址,該地址的參數(shù)范圍可在STEP7硬件組態(tài)中直接查閱。圖6-5所示為硬件地址的查閱,其中開關(guān)量輸入為I124.0~I126.7,輸出為Q124.0~Q125.7(注意:每一個地址代表0~7八位)。而模擬量的輸入為PIW752~PIW761,計數(shù)器為C768~C783等。

圖6-5STEP7硬件組態(tài)圖編程人員希望使用一些有意義的符號來表示元件,如“啟動按鈕”和“停止按鈕”等符號,這是符號地址的表示方法,該方法可以增強程序的可讀性和方便的修改能力,特別是對比較大的程序更有意義。所以在編程過程中希望能夠使用符號地址,符號地址必須先定義,也就是和絕對地址相對應(yīng),然后才能使用。對于不同的元件不能使用相同的符號地址,當然,作為符號地址,一方面要表示元件的具體意義,同時也要將操作數(shù)的其他信息表達清楚,方便以后更改和編程。

2.存儲區(qū)

S7系列PLC的存儲區(qū)分為系統(tǒng)存儲區(qū)、裝載存儲區(qū)和工作存儲器三個基本存儲區(qū)。CPU可以通過輸入/輸出的映像存儲區(qū)來訪問對應(yīng)的I/O口,所以操作數(shù)實際是I/O口的映像存儲區(qū)的實際物理地址。通過對映像存儲區(qū)的訪問就可以訪問相應(yīng)的I/O口。S7系列PLC的存儲區(qū)域及其功能見表6-11。

表6-11存儲區(qū)域及其功能續(xù)表續(xù)表在SIMATICS7系列可編程控制器中,梯形圖(LAD)可以和語句指令(STL)直接轉(zhuǎn)換。另外,電氣控制電路向梯形圖轉(zhuǎn)換是很方便的,所以本章主要講述梯形圖邏輯指令。6.1.4尋址方式

在STEP7中,操作數(shù)可以是常數(shù)、S7狀態(tài)字的狀態(tài)位、各種寄存器、數(shù)據(jù)塊(DB)、功能塊(FB和FC)、系統(tǒng)功能塊(SFB和SFC)以及S7中的各存儲區(qū)中的單元。

尋址方式是指指令如何得到操作數(shù)的各種方式,對于操作數(shù),在指令中可以直接給出,也可以間接給出。S7有四種尋址方式,即立即尋址、直接尋址、存儲器間接尋址和寄存器間接尋址。

1.立即尋址

立即尋址的指令直接跟著它要操作的數(shù)值,或者操作數(shù)本身也可直接包含在指令中。立即尋址用于對常數(shù)或者常量的尋址。如:

SET //將RLO置“1”,RLO是Resultof LogicOperation的縮寫

OW W#16#A320 //將字常量W#16#A320與累加器 1“或”運算

L 30 //把整數(shù)30裝入累加器1中,L是 Load的縮寫

L ‘ABC’ //把ASCII碼字符ABC裝入累加器1中

L B#(100,12) //將字100和12裝入累加器1中

L C#0100 //把BCD碼常數(shù)0100裝入累加器1中

2.直接尋址

直接尋址是對寄存器和存儲器的直接尋址,直接尋址中直接給出操作數(shù)的存儲單元地址。用于直接尋址的指令具有以下兩部分的地址,它們指明指令將要處理的數(shù)值單元:地址標識符(如“IB”指輸入字節(jié))和地址標識符指明的在存儲區(qū)域中確切的單元地址直接指向數(shù)值的單元。如:

A I0.0 //對輸入位I0.0進行“與”邏輯操作

S L20.0 //把本地數(shù)據(jù)位L20.0置“1”,L為Local的 縮寫,意為本地數(shù)據(jù)

= M0.0 //把RLO結(jié)果存于M0.0中

L IB10 //把輸入字節(jié)IB10的內(nèi)容裝入累加器1

T DBD12 //把累加器1中的內(nèi)容傳送給數(shù)據(jù)雙字 DBD12中

3.存儲器間接尋址

存儲器間接尋址指令中的存儲器中的內(nèi)容為操作數(shù)所在存儲單元的地址,該地址也稱為地址指針。用于存儲器間接尋址的指令具有以下兩部分的地址,它們指明指令將要處理的數(shù)值單元:地址標識符(如“IB”指輸入字節(jié))和以下指針之一:

字:包含了定時器(T)、計數(shù)器(C)、數(shù)據(jù)塊(B)、功能(FC)、功能塊(FB)的編號。

雙字:包含了地址標識符指明的在存儲區(qū)域中確切的數(shù)值單元地址,通過指針指明數(shù)值或編號的單元。字或雙字應(yīng)在位存儲區(qū)(M)、背景數(shù)據(jù)塊(DIB)、數(shù)據(jù)塊(DB)和局部數(shù)據(jù)(L)的區(qū)域之中。

存儲器間接尋址的好處是當程序執(zhí)行時能動態(tài)地修改語句的地址。

當用一個存放在數(shù)據(jù)塊中的存儲器間接尋址時,必須首先用打開數(shù)據(jù)塊指令(OPEN)打開數(shù)據(jù)塊,這樣就可以用字或雙字作為一個間接地址,如:

OPENDB10

LIB[DBDZO]

又如:

AI[MD2] //對由MD2指出的輸入位進行“與” 邏輯操作

=DIX[DBD2] //把RLO結(jié)果賦值給數(shù)據(jù)位,具體 數(shù)據(jù)由數(shù)據(jù)雙字DBD2

//指出

LIB[DID4] //把由數(shù)據(jù)雙字DID4指出的輸入 字節(jié)裝入累加器1中

OQ[LD3] //把本地數(shù)據(jù)雙字指出的輸出位進 行“或”邏輯操作

4.寄存器間接尋址

在用STL編程時,有些間接尋址類型需要使用CPU中的某些寄存器。S7中有兩個地址寄存器AR1和AR2。地址寄存器的內(nèi)容加上偏移量形成地址指針,該指針可以指向數(shù)據(jù)所在的存儲單元。寄存器間接尋址分為區(qū)域內(nèi)寄存器間接尋址和區(qū)域間寄存器間接尋址兩種。如:

AI[AR1,P#4.3] //對輸入位進行“與”操作, 存儲單元為AR1的內(nèi)容加4

//字節(jié)3位計算

TLD[AR2,P#56.0] //將累加器1的內(nèi)容傳送給數(shù)據(jù)雙 字LD,存儲單元為AR2

//內(nèi)容加56字節(jié)加0位

LP#8.7 //裝載指向位地址單元8.7的雙字 指針至累加器16.1.5CPU的寄存器

1.累加器

S7-300系列PLC有兩個32位累加器,如圖6-6所示,它們是通用寄存器,用來處理位、字節(jié)、字和雙字。累加器可以裝載常數(shù)或裝載作為地址的存儲區(qū)的數(shù)據(jù)并對它們做邏輯運算,也可把累加器1中的操作結(jié)果傳送到存儲區(qū)單元。操作指令對其影響如下:

(1)裝載指令總是影響累加器1,且把舊的內(nèi)容存入累加器2。

(2)傳送指令不改變累加器中的內(nèi)容(除TAR1和TAR2指令之外)。

(3)

TAK指令對換累加器1和累加器2中的內(nèi)容。

圖6-6累加器

2.狀態(tài)字

狀態(tài)字表示了CPU在執(zhí)行指令時的狀態(tài),有些指令的執(zhí)行會影響到狀態(tài)字中的某些位,同樣指令的執(zhí)行也會受到狀態(tài)字的影響。狀態(tài)字可以在位邏輯指令和字邏輯指令中訪問并檢測。狀態(tài)字的結(jié)構(gòu)如圖6-7所示。

圖6-7狀態(tài)字的結(jié)構(gòu)

1)

/FC(首次檢測位)

CPU對邏輯串第一條指令的檢測產(chǎn)生的結(jié)果存于RLO中,該結(jié)果稱為首次檢測結(jié)果。若該位為“0”,表示一個梯形圖邏輯網(wǎng)絡(luò)的開始或者語句指令的第一條指令。也就是說,/FC在邏輯串的開始時為“0”,在邏輯串的執(zhí)行過程中為“1”,當一個邏輯串結(jié)束時(如輸出或者跳轉(zhuǎn)等),/FC被清0。

2)

RLO(邏輯操作結(jié)果)

該位用來存儲邏輯指令或者算術(shù)比較指令的邏輯結(jié)果。RLO的狀態(tài)可以表示有關(guān)信號流的信息。當RLO為“1”時,表示有信號流(接通);當RLO為“0”時,表示無信號流(斷開)。RLO結(jié)果可以在定時器、計數(shù)器等上作為觸發(fā)信號。

3)

STA(狀態(tài)位)

該位不能用指令來檢測,僅在程序測試中被CPU解釋并使用。若一條指令是對存儲區(qū)操作的位邏輯指令,則無論是對該位進行讀或?qū)懖僮?,STA總是與該位的值取得一致;對不訪問存儲區(qū)的位邏輯指令來說,STA沒有意義,此時,它總被置位為“1”。

4)

OR(或位)

在先邏輯“與”后邏輯“或”的邏輯串操作中,OR位暫存邏輯“與”的操作結(jié)果,以便進行后面的邏輯“或”運算。其他指令將OR位清0。

5)

OV(溢出位)

當一個算術(shù)運算或?qū)崝?shù)比較指令執(zhí)行時出現(xiàn)溢出、非法操作和不規(guī)范格式時,該位被置1。若后面的算術(shù)運算或?qū)崝?shù)比較指令執(zhí)行結(jié)果正常,則OV位就被清0。

6)

OS(溢出狀態(tài)保持位)

當OV位被置為“1”時,OS位也被置為“1”;當OV位被清0時,OS位保持為“1”。該位用來表明先前一些指令執(zhí)行中是否產(chǎn)生過錯誤。只有JOS(OS為“1”時跳轉(zhuǎn))、塊調(diào)用指令和塊結(jié)束指令才能使該位復位。

7)

CC1和CC0(條件碼1和條件碼0)

這兩位結(jié)合起來表示累加器1中產(chǎn)生的算術(shù)運算或邏輯運算結(jié)果與0的大小關(guān)系。表6-12所示為算術(shù)運算后的結(jié)果與0比較的結(jié)果。比較指令、移位指令的狀態(tài)如表6-13所示。

表6-12CC1和CC0(條件碼1和條件碼0)表6-13比較指令、移位指令的狀態(tài)8)

BR(二進制結(jié)果位)

該位用在一段既有位操作又有字操作的程序中,以表示字操作結(jié)果是否正常。把BR位加入程序中,無論字操作結(jié)果如何,均不會使二進制邏輯鏈中斷。在LAD的方塊指令中,BR位與ENO有對應(yīng)關(guān)系,用于表明方塊指令是否被正確執(zhí)行。當出現(xiàn)錯誤時,BR和ENO為“0”;當無錯誤時,BR和ENO均為“1”。

在用戶編寫的FB和FC中,須對BR位進行管理。當功能塊正確運行時,BR位為“1”,否則為“0”。在STL和LAD的SAVE指令中,將RLO結(jié)果存入BR位中。

位邏輯指令處理兩個數(shù)字,即“1”和“0”。這兩個數(shù)字是構(gòu)成二進制數(shù)字系統(tǒng)的基礎(chǔ),稱為二進制數(shù)字或二進制位。位邏輯指令主要對BOOL類型(即“0”和“1”)的操作數(shù)進行操作,這一點和繼電器接觸器控制系統(tǒng)中的觸點或者線圈等相似。在接點與線圈領(lǐng)域,“1”表示動作或通電,“0”表示未動作或未通電。如常閉觸點在未動作前為“1”,在動作后為“0”;常開觸點在得電之前為“0”,在得電以后為“1”。6.2位?邏?輯?指?令位邏輯指令掃描信號狀態(tài)“1”和“0”,并根據(jù)布爾邏輯對“0”和“1”進行布爾運算等操作,經(jīng)過操作后的結(jié)果也是邏輯值“0”或者“1”。結(jié)果將會置于位RLO中。邏輯運算有或、與、非及其組合。下面我們對位邏輯指令進行逐一講解。由位邏輯指令觸發(fā)的邏輯操作可執(zhí)行各種類型的功能,如用位邏輯來觸發(fā)定時器、計數(shù)器等。

可執(zhí)行下列功能的位邏輯指令如下:

——||—— 常開觸點(地址)

——|/|—— 常閉觸點(地址)

——(SAVE) 將RLO存入BR存儲器

XOR 位異或

——() 輸出線圈

——(#)—— 中間輸出

——|NOT|—— 信號流反向當RLO為1時,下列指令起作用,并執(zhí)行其相應(yīng)的功能:

——(S) 線圈置位

——(R) 線圈復位

SR 置位復位觸發(fā)器

RS 復位置位觸發(fā)器

對上升沿和下降沿有反應(yīng)的指令有:

——(N)—— RLO下降沿檢測

——(P)—— RLO上升沿檢測

NEG 地址下降沿檢測

POS 地址上升沿檢測

PIB/PIW 立即讀操作

PQB/PQW 立即寫操作6.2.1位邏輯運算和輸出指令

1.常開和常閉觸點指令

常開觸點指令和常閉觸點指令,相當于繼電器接觸器系統(tǒng)中的常開觸點和常閉觸點。

常開觸點指令和常閉觸點指令的LAD和STL形式及功能如表6-14所示。

——||——

為常開觸點指令。當該指令上方的地址中的值為“1”時,表示觸點閉合。當觸點閉合時,電流可以流過該元件,并且邏輯運算結(jié)果(RLO)為“1”。相反,當該指令上方的地址中的值為“0”時,表示觸點斷開。當觸點斷開時,電流無法通過該元件,并且邏輯運算結(jié)果(RLO)為“0”。

表6-14常開和常閉觸點指令的形式及功能——|/|——為常閉觸點指令。當該指令上方的地址中的值為“0”時,表示觸點閉合。當觸點閉合時,電流可以流過該元件,并且邏輯運算結(jié)果(RLO)為“1”。當該指令上方的地址中的值為“1”時,表示觸點斷開。當觸點斷開時,電流無法通過該元件,并且邏輯運算結(jié)果(RLO)為“0”。在語句指令中,這兩個指令在串聯(lián)使用時,使用邏輯“與”指令來表示RLO,并聯(lián)使用時,使用邏輯“或”指令來表示RLO。

對于常開觸點,我們通常使用A或O來表示。其中:操作碼A代表邏輯“與”,是And的縮寫,對應(yīng)于串聯(lián)的常開觸點;操作碼O代表邏輯“或”,是Or的縮寫,對應(yīng)于并聯(lián)的常開觸點。對于常閉觸點,使用操作碼AN或ON來描述。其中:AN代表邏輯“與非”,是AndNot的縮寫,對應(yīng)于串聯(lián)的常閉觸點;操作碼ON代表邏輯“或非”,是OrNot的縮寫,對應(yīng)于并聯(lián)的常閉觸點。

這兩個指令對狀態(tài)字的影響如表6-15所示。

表6-15常開和常閉觸點指令對狀態(tài)字的影響

【例6-1】

圖6-8所示為常開觸點指令的用法。

相應(yīng)的語句為:

A(

O I0.0 //并聯(lián)常開觸點I0.0

O I0.2 //并聯(lián)常開觸點I0.2

) //并聯(lián)塊

A I0.1 //串聯(lián)觸點I0.1

圖6-8常開觸點指令應(yīng)用舉例該圖的邏輯關(guān)系為:當輸入I0.0或者I0.2為“1”,并且I0.1為“1”時,RLO(結(jié)果)為“1”;當I0.0和I0.2都為“0”,或者I0.1為“0”時,RLO為“0”。即:RLO=(I0.0+I0.2)I0.1。

【例6-2】

圖6-9所示為常閉觸點指令的用法。

相應(yīng)的語句為:

A(

O I0.0 //并聯(lián)常開觸點I0.0

ON I0.0 //并聯(lián)常閉觸點I0.0,和上一條指 令共同代表“1”

) //并聯(lián)塊

A I0.1 //串聯(lián)觸點I0.1

邏輯關(guān)系為:RLO=(I0.0+)I0.2。

圖6-9常閉觸點指令應(yīng)用舉例2.輸出線圈指令

輸出線圈指令的LAD和STL形式及功能如表6-16所示。

表6-16輸出線圈指令的形式及功能——()為輸出線圈指令,用來表示輸出,它和繼電器或接觸器的線圈相似。當輸出結(jié)果RLO為“1”時,表示該線圈中流過電流,輸出為“1”;當RLO為“0”時,表示線圈斷電,輸出為“0”。該元件只能放在梯形圖的最右端,并且可以使用多達16個線圈作為輸出。使用——|NOT|——(翻轉(zhuǎn)電流)指令可以使輸出翻轉(zhuǎn),即“1”變?yōu)椤?”,“0”變?yōu)椤?”。在語句指令中,輸出指令用符號“=”來表示。

該指令在一個被激活的MCR(主控繼電器)區(qū)中,當電流流過該元件時,該元件被置位,而如果MCR區(qū)關(guān)閉,則無論是否有電流流過,該指令上的地址均為“0”。

該指令對狀態(tài)字的影響如表6-17所示。表6-17輸出線圈指令對狀態(tài)字的影響

【例6-3】

圖6-10所示為輸出線圈指令的用法。

語句指令如下:

A I0.0 //串聯(lián)常開觸點I0.0

A I0.1 //串聯(lián)常開觸點I0.1

ON I0.2 //并聯(lián)常閉觸電I0.2

= L20.0 //輸出給本地數(shù)據(jù)L20.0

A L20.0 //取L20.0

BLD 102

= Q4.0 //輸出給線圈Q4.0

A L20.0 //取L20.0

A I0.3 //串聯(lián)I0.3

= Q4.1 //輸出給線圈Q4.1

圖6-10輸出線圈指令應(yīng)用舉例當輸入I0.0和I0.1的狀態(tài)均為“1”或輸入I0.2的狀態(tài)為“0”時,則輸出信號Q4.0的狀態(tài)為“1”。

當輸入I0.0和I0.1的狀態(tài)均為“1”或輸入I0.2的狀態(tài)為“0”,并且輸入I0.3的狀態(tài)為“1”時,則輸出信號Q4.1的狀態(tài)為“1”。

【例6-4】

如圖2-11為三相交流異步電動機的啟動、停止和保護的繼電器接觸器控制電路。在此用梯形圖來表示。

(1)將電氣控制梯形圖轉(zhuǎn)化為PLC梯形圖,并對相應(yīng)的元件分配地址。在此我們給啟動按鈕分配地址I0.0,給停止按鈕分配地址I0.1,給接觸器分配地址Q0.0,暫時不考慮保護電路。轉(zhuǎn)換后的梯形圖如圖6-11所示。

圖6-11轉(zhuǎn)換后的PLC梯形圖

(2)按照梯形圖轉(zhuǎn)化為的語句指令如下:

OI0.0 //取并聯(lián)常開觸點I0.0

OQ0.0 //并聯(lián)常開觸點Q0.0

AI0.1 //串聯(lián)常閉觸點I0.1

=Q0.0 //將結(jié)果賦給線圈Q0.0

注意:

Q0.0就像接觸器或者繼電器一樣,既有線圈,又有觸點。

//

表示后面為注釋語句。

STEP7具有梯形圖和語句指令等語言的自動轉(zhuǎn)換功能。

3.將RLO存入BR存儲器指令

——(SAVE)(將RLO存入BR存儲器指令,也稱SAVE指令)可以將RLO存儲到狀態(tài)字的BR位。該指令首先檢查位/FC是否復位,然后將BR位的狀態(tài)在下一程序段的與(AND)邏輯運算中包含。

對于在LAD、FBD、STL中的SAVE指令,因為其中任何一個指令均可能改變BR位,所以盡量不要在同一個程序塊或者附屬的程序塊中使用SAVE指令和BR位,但是可以使用BR位來測試上一個程序塊中的SAVE指令。

SAVE指令對狀態(tài)字的影響如表6-18所示。

表6-18SAVE指令對狀態(tài)字的影響

【例6-5】

圖6-12所示為SAVE指令的用法。

語句指令如下:

A I0.0 //取常開觸點I0.0

A I0.1 //串聯(lián)常開觸點I0.1

O I0.2 //并聯(lián)常開觸點I0.2

SAVE //將結(jié)果保存在BR位中

該程序?qū)LO的狀態(tài)存儲于BR位中。圖6-12SAVE指令應(yīng)用舉例

4.異或指令XOR

該指令在語句指令中使用X來描述,在梯形圖中由常開觸點和常閉觸點指令組合而成。

圖6-13異或指令應(yīng)用舉例【例6-6】

如圖6-13所示為異或指令XOR的用法。

語句指令如下:

AN I0.0 //取常閉觸點I0.0

A I0.1 //串聯(lián)常開觸點I0.1

O //并聯(lián)塊

A I0.0 //取常開觸點I0.0

AN I0.1 //串聯(lián)常閉觸點I0.1

= Q4.0 //輸出給線圈Q4.0

或者:

AN I0.0

X I0.1

= Q4.0

則有:Q4.0

=?I0.0·I0.1

+

I0.0·I0.1。

【例6-7】

設(shè)計一個樓梯燈開關(guān),要求當行人從下到上或者從上到下時,可以在樓梯開關(guān)SB1上開燈,在SB2上關(guān)燈。

該設(shè)計可以使用自鎖按鈕進行設(shè)計。由邏輯關(guān)系知,輸出是兩個輸入的邏輯“異或”。

(1)樓梯燈開關(guān)功能塊圖如圖6-14所示。

(2)語句指令如下:

AN I0.0

X I0.1

= Q4.0

(3)樓梯燈開關(guān)梯形圖如圖6-13所示。

圖6-14樓梯燈開關(guān)功能塊圖

5.中間輸出指令

中間輸出指令用來存儲RLO的中間值,該值是該指令執(zhí)行前位邏輯串的操作的結(jié)果值,當它和其他觸點串聯(lián)時,功能和一般觸點是相同的。中間輸出指令不能用于結(jié)束一個邏輯串,所以,中間輸出指令不能置于邏輯串的結(jié)尾或者分支的結(jié)尾處。通過使用取反指令可以使其狀態(tài)翻轉(zhuǎn)。

中間輸出指令對狀態(tài)字的影響如表6-19所示。

表6-19中間輸出指令對狀態(tài)字的影響

【例6-8】

圖6-15所示為中間輸出指令的用法。

語句指令如下:

A I1.0 //取常開觸點I1.0

A I1.1 //串聯(lián)常開觸點I1.1

= M0.0 //輸出給中間線圈M0.0

A M0.0 //取中間線圈M0.0

A I2.2 //串聯(lián)常開觸點I2.2

A I1.3 //串聯(lián)常開觸點I1.3

NOT //結(jié)果取反

= M1.1 //輸出給中間線圈M1.1

A M1.1 //取中間線圈M1.1

NOT //結(jié)果取反

= M2.2 //取中間線圈M2.2

A M2.2 //取中間線圈M2.2

= Q4.0 //輸出給線圈Q4.0

其中:M0.0是I1.0和I1.1串聯(lián)的結(jié)果;M1.1是I1.0、I1.1、I2.2和I1.3串聯(lián)運算,再經(jīng)過對結(jié)果取反的結(jié)果;M2.2是M1.1取反的結(jié)果。

圖6-15中間輸出指令應(yīng)用舉例6.取反指令

取反指令將RLO邏輯結(jié)果進行取反。

取反指令對狀態(tài)字的影響如表6-20所示。表6-20取反指令對狀態(tài)字的影響【例6-9】

圖6-16所示為取反指令的用法。

語句指令如下:

A( //串聯(lián)塊

OI0.0 //并聯(lián)線圈I0.0

O //并聯(lián)塊

AI0.1 //串聯(lián)常開觸點I0.1

AI0.2 //串聯(lián)常開觸點I0.2

)

NOT //輸出取反

=Q4.0 //輸出給線圈Q4.0

當輸入觸點I0.0為1或者I0.2和I0.1均為“1”時,輸出Q4.0的結(jié)果為“0”。圖6-16取反指令應(yīng)用舉例6.2.2置位/復位指令

置位/復位指令根據(jù)RLO的值來決定被尋址位的狀態(tài)是否需要改變。如果RLO的值為“1”,則可以被置位為“1”或者被復位為“0”;如果RLO的值為“0”,則被尋址位的狀態(tài)保持不變。

1.置位指令和復位指令

置位/復位指令的LAD和STL形式及功能如表6-21所示。

表6-21置位/復位指令的形式及功能置位指令只有在RLO為“1”時,將對其上方的地址置“1”,即使RLO又變?yōu)椤?”,輸出仍然為“1”(電流流過線圈)。這種特性稱為靜態(tài)置位。當RLO為“0”時,置位指令沒有作用。置位指令在語句指令中使用S來標識。

復位指令只有在RLO為“1”時,將對其上方的地址復位為“0”,即使RLO又變?yōu)椤?”,輸出仍然為“0”。當RLO為“0”時,復位指令沒有作用。復位指令在語句指令中使用R來標識。該指令上方的地址也可以是定時器或者計數(shù)器,復位后均為“0”。

置位/復位指令在一個被激活的MCR(主控繼電器)區(qū)中,當電流流過該元件時,該元件被置位,而如果MCR區(qū)關(guān)閉,則無論是否有電流流過,該指令上的地址均為“0”。

置位/復位指令對狀態(tài)字的影響如表6-22所示。表6-22置位/復位指令對狀態(tài)字的影響【例6-10】

圖6-17所示為置位指令的用法。

語句指令如下:

AI0.0 //取常開觸點I0.0

AI0.1 //串聯(lián)常開觸點I0.1

ON

I0.2 //并聯(lián)常閉觸點I0.2

SQ4.0 //置位線圈Q4.0

圖6-17置位指令應(yīng)用舉例當輸入I0.0和I0.1的狀態(tài)都為“1”或者輸入I0.2的狀態(tài)為“0”時,輸出Q4.0將會變?yōu)椤?”。

如果RLO為“0”(邏輯串的執(zhí)行結(jié)果為“0”),則輸出Q4.0保持原來的狀態(tài)不變。

如果該段程序在一個被激活的MCR區(qū)中,則當MCR打開時,Q4.0的狀態(tài)和上述相同;當MCR關(guān)閉時,無論是否有電流流過,Q4.0的狀態(tài)均不改變。

【例6-11】

圖6-18所示為復位指令的用法。

語句指令如下:

Network1 //輸出線圈復位

A I0.0 //取常開觸點I0.0

A I0.1 //串聯(lián)常開觸點I0.1

ON I0.2 //并聯(lián)常閉觸點I0.2

R Q4.0 //復位線圈Q4.0

Network2 //定時器復位

A I0.3 //取常開觸點I0.3

R T1 //復位定時器T1

Network3 //計數(shù)器復位

圖6-18復位指令應(yīng)用舉例

A I0.4 //取常開觸點I0.4

R C1 //復位計數(shù)器C1

在梯形圖6-18中,如果RLO為“0”,則輸出Q4.0保持原來的狀態(tài)不變。如果下面任一條件成立,即

(1)輸入I0.0和I0.1的狀態(tài)均為“1”;

(2)輸入I0.2的狀態(tài)為“0”,

則輸出Q4.0將會被復位為“0”。

同樣,如果輸入I0.3的狀態(tài)為“1”,則定時器T1將會被復位。當輸入I0.4的狀態(tài)為“1”時,計數(shù)器C1將會被復位為“0”。

當MCR打開時,Q4.0、T1和C1的狀態(tài)與上述相同。當MCR關(guān)閉時,無論是否有電流流過,Q4.0、T1和C1的狀態(tài)均不改變。

2.?RS和SR觸發(fā)器指令

觸發(fā)器有兩種,即置位優(yōu)先型(SR)觸發(fā)器和復位優(yōu)先型(RS)觸發(fā)器。如表6-23所示,其中S為置位端子(Set),R為復位端子(Reset),Q為輸出端子。這兩種觸發(fā)器均可以用在邏輯串的最右端,用來結(jié)束一個邏輯串,或者用在邏輯串中間,用來影響右邊的邏輯操作結(jié)果。

表6-23RS和SR觸發(fā)器指令的功能RS和SR觸發(fā)器在置位輸入S為“1”時,觸發(fā)器置位,輸出Q為“1”,此時即使置位端子S變?yōu)椤?”,輸出Q仍然保持為“1”不變。只有當復位端子R為“1”時,輸出Q才能復位為“0”。

如果兩個端子都為“1”,則對于置位優(yōu)先型觸發(fā)器,S端子有效,輸出置位為“1”;對于復位優(yōu)先型觸發(fā)器,復位端子R有效,復位為“0”。

地址中的狀態(tài)和輸出Q的狀態(tài)相同。

同樣,上述兩個指令在一個被激活的MCR(主控繼電器)區(qū)中,RS觸發(fā)器的運行和上述相同,而如果MCR區(qū)關(guān)閉,則當前的地址單元的狀態(tài)將不發(fā)生任何變化。

RS和SR觸發(fā)器指令對狀態(tài)字的影響如表6-24所示。

表6-24RS和SR觸發(fā)器指令對狀態(tài)字的影響

【例6-12】

圖6-19所示為RS觸發(fā)器指令的用法。

語句指令如下:

AI0.0

RM0.0

AI0.1

SM0.0

AM0.0

=Q4.0圖6-19RS觸發(fā)器指令應(yīng)用舉例如果輸入I0.0的信號狀態(tài)為“1”,輸入I0.1的信號狀態(tài)為“0”,則存儲位M0.0將被復位,輸出Q4.0為“0”。相反,如果輸入I0.0的信號狀態(tài)為“0”,輸入I0.1的信號狀態(tài)為“1”,則存儲位M0.0將被復位,輸出Q4.0為“1”。如果兩個信號狀態(tài)均為“0”,則無變化。如果兩個信號狀態(tài)均為“1”,則由于順序之故,復位指令優(yōu)先,M0.0復位,Q4.0為“0”。

如果梯形圖6-19在一個激活的MCR區(qū)中,則Q4.0的狀態(tài)和上述相同;如果MCR關(guān)閉,則無論輸入狀態(tài)如何,Q4.0不作任何變化。

【例6-13】

圖6-20所示為SR觸發(fā)器指令的用法。

語句指令如下:

AI0.0

SM0.0

AI0.1

RM0.0

AM0.0

=Q4.0

圖6-20SR觸發(fā)器指令應(yīng)用舉例如果輸入I0.0的信號狀態(tài)為“1”,輸入I0.1的信號狀態(tài)為“0”,則存儲位M0.0將被置位,輸出Q4.0為“1”。相反,如果輸入I0.0的信號狀態(tài)為“0”,輸入I0.1的信號狀態(tài)為“1”,則存儲位M0.0將被復位,輸出Q4.0為“0”。如果兩個信號狀態(tài)均為“0”,則無變化。如果兩個信號狀態(tài)均為“1”,則由于順序之故,置位指令優(yōu)先,M0.0置位,Q4.0為“1”。

如果指令在被激活的MCR區(qū)中,則當MCR接通時,Q4.0將如上所述被置位或復位;當MCR斷開時,Q4.0將保持不變,與輸入狀態(tài)無關(guān)。6.2.3位測試指令

1.邊沿檢測指令

信號狀態(tài)的變化有兩種:一種是從“0”跳變?yōu)椤?”,即上升沿或者正跳沿;另一種是從“1”跳變?yōu)椤?”,即下降沿或者負跳沿。邊沿檢測將前一個掃描周期的信號狀態(tài)存儲起來,并且和當前的信號狀態(tài)掃描結(jié)果相比較,如二者不同,則表明有跳變信號。

邊沿檢測指令的LAD和STL形式及功能如表6-25所示。

RLO下降沿檢測指令可以檢測地址從“1”到“0”的信號變化,并在操作之后顯示RLO為“1”。將RLO的當前信號狀態(tài)與“邊沿存儲位”地址的信號狀態(tài)進行比較。如果操作之前地址的信號狀態(tài)為“1”,并且RLO為“0”,則在操作之后,RLO將為“1”(脈沖),所有其他的情況為“0”。操作之前的RLO存儲在地址中。

表6-25邊沿檢測指令的形式及功能

RLO上升沿檢測指令可以檢測地址從“0”到“1”的信號變化,并在操作之后顯示RLO為“1”。將RLO的當前信號狀態(tài)與“邊沿存儲位”地址的信號狀態(tài)進行比較。如果操作之前地址的信號狀態(tài)為“0”,并且RLO為“1”,則在操作之后,RLO將為“1”(脈沖),所有其他的情況為“0”。操作之前的RLO存儲在地址中。

邊沿檢測指令對狀態(tài)字的影響如表6-26所示。

表6-26邊沿檢測指令對狀態(tài)字的影響【例6-14】

圖6-21所示為邊沿檢測指令的用法。

在梯形圖6-21中,邊沿存儲位M0.0存儲RLO的舊狀態(tài)。如果RLO的信號從“1”變?yōu)椤?”,則程序跳轉(zhuǎn)至標號CAS1處。

語句指令如下:

A(

AI0.0

AI0.1

OI0.2

)

FPM0.0

JCCAS1

圖6-21邊沿檢測指令應(yīng)用舉例2.觸點跳變沿檢測指令

NEG(負跳沿檢測指令)可以將“<地址1>”的信號狀態(tài)與存儲在“<地址2>”中的先前掃描的信號狀態(tài)進行比較。如果當前的RLO狀態(tài)為“0”,而先前的狀態(tài)為“1”(上升沿檢測),則在操作之后,RLO位將為“1”。

POS(正跳沿檢測指令)可以將“<地址1>”的信號狀態(tài)與存儲在“<地址2>”中的先前掃描的信號狀態(tài)進行比較。如果當前的RLO狀態(tài)為“1”,而先前的狀態(tài)為“0”(上升沿檢測),則在操作之后,RLO位將為“1”。

觸點跳變沿檢測指令的LAD和STL形式及功能如表6-27所示。

表6-27觸點跳變沿檢測指令的形式及功能觸點跳變沿檢測指令對狀態(tài)字的影響如表6-28所示。

表6-28觸點跳變沿檢測指令對狀態(tài)字的影響【例6-15】

圖6-22所示為負跳沿檢測指令的用法。

語句指令如下:

AI0.0

AI0.1

AI0.2

A(

AI0.3

BLD

100

FNM0.0

)

AI0.4

=Q4.0

圖6-22負跳沿檢測指令應(yīng)用舉例在梯形圖6-22中,當以下所有條件均成立時,即

①輸入I0.0、I0.1和I0.2均為“1”;

②輸入I0.3有負跳沿出現(xiàn)(下降沿);

③輸出I0.4的信號狀態(tài)為1,

輸出Q4.0將會變?yōu)椤?”。

【例6-16】

圖6-23所示為正跳沿檢測指令的用法。

語句指令如下:

AI0.0

AI0.1

AI0.2

A(

AI0.3

BLD100

FPM0.0

)

AI0.4

=Q4.0

圖6-23正跳沿檢測指令應(yīng)用舉例在梯形圖6-23中,當以下所有條件均成立時,即

①輸入I0.0、I0.1和I0.2均為“1”;

②輸入I0.3有正跳沿出現(xiàn)(上升沿);

③輸出I0.4的信號狀態(tài)為1,

輸出Q4.0將會變?yōu)椤?”。6.2.4立即讀/立即寫操作

1.立即讀操作

立即讀(ImmediateRead)功能對于有時間限制的應(yīng)用,可以以比每OB1掃描循環(huán)一次的正常情況快的速度讀取一個數(shù)字量輸入的當前狀態(tài)。立即讀功能可以在掃描立即讀邏輯程序級的同時,從輸入模塊獲得一個數(shù)字量輸入的狀態(tài)。否則,當I存儲區(qū)使用P存儲狀態(tài)更新時,必須等到下一OB1掃描循環(huán)結(jié)束。為了從輸入模塊立即讀取一個輸入,應(yīng)使用外圍輸入(PI)存儲區(qū),而不使用輸入(I)存儲區(qū)。外圍輸入存儲區(qū)可以作為一個字節(jié)、一個字或一個雙字來讀取。因此,通過一個接點(位)元素,不能讀取一個單獨的數(shù)字量輸入。

2.立即寫操作

立即寫(ImmediateWrite)功能對于有時間限制的應(yīng)用,可以以比每OB1掃描循環(huán)一次的正常情況快的速度,將一個數(shù)字量輸出的當前狀態(tài)發(fā)送到輸出模塊。立即寫功能可以在掃描立即寫邏輯程序級的同時,將一個數(shù)字量輸出寫入輸出模塊。否則,當Q存儲區(qū)使用P存儲狀態(tài)更新時,必須等到下一OB1掃描循環(huán)結(jié)束。為了將一個輸出立即寫入輸出模塊,應(yīng)使用外圍輸出(PQ)存儲區(qū),而不使用輸出(Q)存儲區(qū)。外圍輸出存儲區(qū)可以作為一個字節(jié)、一個字或一個雙字來讀取。因此,通過一個線圈元素,不能更新一個單獨的數(shù)字量輸出。為了將一個數(shù)字量輸出的狀態(tài)立即寫入輸出模塊,包含相關(guān)位的Q存儲器的字節(jié)、字或雙字可以有條件地復制到相應(yīng)的PQ存儲器中(直接輸出模塊地址)。注意:

(1)由于Q存儲器的整個字節(jié)被寫入輸出模塊,當進行立即輸出時,該字節(jié)中的所有輸出位都將被更新。

(2)如果一個輸出位在不應(yīng)發(fā)送到輸出模塊的整個程序中出現(xiàn)中間狀態(tài)(1/0),則立即寫功能會造成危險情況(輸出瞬時脈沖)。

(3)作為一般設(shè)計規(guī)則,在一個程序中,外部輸出模塊只能認為是一個線圈。如果遵守該設(shè)計規(guī)則,則可以避免使用立即輸出時的大多數(shù)潛在問題。

【例6-17】

控制傳送帶。圖6-24所示為一個能夠控制電氣啟停的傳送帶。在傳送帶的起點有兩個按鈕開關(guān):用于啟動的S1和用于停止的S2。在傳送帶的尾端也有兩個按鈕開關(guān):用于啟動的S3和用于停止的S4??梢詮娜我欢藛踊蛲V箓魉蛶АA硗?,當傳送帶上的物件到達末端時,傳感器S5使傳送帶停機。圖6-24控制傳動帶應(yīng)用舉例①絕對編程和符號編程。先作一個符號表,使選擇的符號與絕對值相對應(yīng)(參見“STEP7在線幫助”),如表6-29所示。

表6-29控制傳送帶系統(tǒng)地址分配②控制傳送帶的梯形邏輯程序。

程序段1:按動一個啟動開關(guān),可以接通電機,如圖6-25所示。

程序段2:按動一個停止開關(guān)或打開傳送帶端部的常閉接點,可以切斷電機,如圖6-26所示。

圖6-25控制傳送帶程序段1圖6-26控制傳送帶程序段2

【例6-18】

設(shè)計一個檢測傳送帶的運動方向的指示裝置。圖6-27所示為一個裝配有兩個光電傳感器(PEB1和PEB2)的傳送帶,傳感器用來檢測包裹在傳送帶上的移動方向。每一個光電傳感器都可以像常開接點一樣使用。

①絕對編程和符號編程。檢測傳送帶系統(tǒng)地址分配表如表6-30所示。

圖6-27檢測傳送帶應(yīng)用舉表6-30檢測傳送帶系統(tǒng)地址分配表②檢測傳送帶運動方向的梯形邏輯程序。

程序段1:如果在輸入I0.0上出現(xiàn)的信號狀態(tài)從“0”變?yōu)椤?”(上升沿),同時輸入I0.1的信號狀態(tài)為“0”,則傳送帶上的包裹向左移動,如圖6-28所示。

程序段2:如果在輸入I0.1上出現(xiàn)的信號狀態(tài)從“0”變?yōu)椤?”(上升沿),同時輸入I0.0的信號狀態(tài)為“0”,則傳送帶上的包裹向右移動。如果有一個光電傳感器被遮擋,則意味著在光電傳感器間有一個包裹,如圖6-29所示。

圖6-28檢測傳送帶程序段1圖6-29檢測傳送帶程序段2程序段3:如果沒有一個光電傳感器被遮擋,則在光電傳感器之間沒有包裹,方向指示燈熄滅,如圖6-30所示。圖6-30檢測傳送帶程序段3

6.3.1定時器指令

定時器是PLC中的重要元件,用來實現(xiàn)或者監(jiān)控時間序列。它是由位和字組成的復合單元,其中用位來表示定時器觸點的閉合和斷開(即輸出為“0”或“1”)。定時時間為字,存儲于字存儲器中,像時間繼電器一樣,其觸點為邏輯值,有延時關(guān)斷型和延時接通型兩種。S7-300系列有S_PULSE(脈沖定時器)、S_PEXT(擴展脈沖定時器)、S_ODT(接通延時定時器)、S_ODTS(保持型接通延時定時器)和S_OFFDT(斷開延時定時器)5種定時器方塊指令及對應(yīng)的5種定時器線圈指令,如表6-31所示。6.3定時器和計數(shù)器指令

表6-31定

1.定時器的組成

存儲器中的定時器區(qū)域用來存儲定時器的定時時間值。每一個定時器占2B,稱為定時字。在S7-300系列PLC中,定時區(qū)為512B,故只能使用256個定時器。定時器的訪問只能使用有關(guān)的定時器指令,其編址為T加編號,如T22、T200等。

在S7系列PLC中,定時時間值的表示方法有兩種。一種是用S5中的時間表示方法來裝入定時時間值,方式為

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論