![可編程序控制器原理及應(yīng)用第06章課件_第1頁](http://file4.renrendoc.com/view/20300434d4701d0675289526c29e7281/20300434d4701d0675289526c29e72811.gif)
![可編程序控制器原理及應(yīng)用第06章課件_第2頁](http://file4.renrendoc.com/view/20300434d4701d0675289526c29e7281/20300434d4701d0675289526c29e72812.gif)
![可編程序控制器原理及應(yīng)用第06章課件_第3頁](http://file4.renrendoc.com/view/20300434d4701d0675289526c29e7281/20300434d4701d0675289526c29e72813.gif)
![可編程序控制器原理及應(yīng)用第06章課件_第4頁](http://file4.renrendoc.com/view/20300434d4701d0675289526c29e7281/20300434d4701d0675289526c29e72814.gif)
![可編程序控制器原理及應(yīng)用第06章課件_第5頁](http://file4.renrendoc.com/view/20300434d4701d0675289526c29e7281/20300434d4701d0675289526c29e72815.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、6.1 西門子PLC的程序結(jié)構(gòu)6.2 程序控制指令與結(jié)構(gòu)化編程6.3 S7-200的中斷系統(tǒng)6.4 S7-300/400的中斷與組織塊6.5 S7-300/400的系統(tǒng)功能與系統(tǒng)功能塊本章的主要內(nèi)容 1 2022/7/216.1.1 西門子PLC的程序結(jié)構(gòu)概述 本章主要介紹PLC的程序結(jié)構(gòu)。這里的程序指的是用戶程序,即用戶根據(jù)控制要求編寫的控制程序。用戶程序是在系統(tǒng)程序之上運行的。西門子PLC的用戶程序都是編寫在一定的程序塊中的。在西門子PLC中,程序塊是存放程序的基本單元,所有的程序必定屬于特定的程序塊,所有指令編寫的所有程序均可以根據(jù)需要放在任意的程序塊中。 西門子PLC的程序總體結(jié)構(gòu)由主
2、程序(組織塊)和子程序(功能塊)等組成。西門子S7-200和S7-300/400 PLC程序結(jié)構(gòu)相似,只是各部分的名稱不一樣。 2 2022/7/216.1.1 西門子PLC的程序結(jié)構(gòu)概述(續(xù)) 西門子PLC中程序塊的執(zhí)行和調(diào)用是按一定規(guī)則進行的。根據(jù)程序執(zhí)行的調(diào)用機制不同,可以將程序塊分為兩類。一類是系統(tǒng)調(diào)用程序塊,這一類程序塊在系統(tǒng)事件或中斷事件發(fā)生后由系統(tǒng)程序激發(fā),從而得以執(zhí)行。如主程序塊OB1,由于PLC的“循環(huán)掃描”的原理,每個周期的開始是一個最重要的事件,系統(tǒng)會在該事件發(fā)生后,調(diào)用主程序塊OB1;又如中斷響應(yīng)子程序(程序塊),當相應(yīng)的中斷事件發(fā)生后,系統(tǒng)會調(diào)用對應(yīng)的中斷響應(yīng)子程序(
3、程序塊)。另一類程序塊是程序調(diào)用程序塊,這一類程序塊由其他程序調(diào)用后得以執(zhí)行,如S7-200中的子程序、S7-300/400中的功能(FC)和功能塊(FB)等。3 2022/7/216.1.1 西門子PLC的程序結(jié)構(gòu)概述(續(xù)) 在控制任務(wù)簡單時,經(jīng)常將一個工程的全部控制任務(wù)都按照工程控制的順序?qū)懺谝粋€程序中,如寫在OB1中。程序執(zhí)行過程中,CPU不斷地掃描OB1,按照事先準備好的順序去執(zhí)行工作。一般情況下,只要任務(wù)稍微復(fù)雜一些,就要把一個復(fù)雜的過程分解成多個簡單的過程,從而寫在不同的程序塊中。分為多個不同程序塊后,程序容易編寫,容易調(diào)試,從總體上看,分塊程序的優(yōu)勢是十分明顯的。4 2022/7
4、/216.1.2西門子S7-200 PLC的程序結(jié)構(gòu) 1. 程序結(jié)構(gòu)西門子S7-200 PLC的程序在結(jié)構(gòu)上是由主程序、子程序和中斷子程序組成的,如圖6-1所示。主程序只有一個,每個循環(huán)掃描周期,主程序會被執(zhí)行一遍。主程序執(zhí)行過程中可以調(diào)用子程序。子程序在S7-200中最多可以有64個,名稱為SBR0SBR63。子程序可以由主程序、其它子程序或中斷子程序調(diào)用。子程序調(diào)用后,才能執(zhí)行。中斷子程序是一類特殊的子程序,在系統(tǒng)規(guī)定的中斷請求到來時,調(diào)用對應(yīng)的中斷子程序。中斷子程序最多有128個,名稱為INT0INT127。中斷的內(nèi)容在本章6.3節(jié)中講解。圖6-1西門子S7-200的PLC的程序結(jié)構(gòu) 5
5、 2022/7/216.1.2西門子S7-200 PLC的程序結(jié)構(gòu)(續(xù)) 2.子程序子程序調(diào)用有時不帶參數(shù),這時調(diào)用比較簡單,如圖6-2所示。在圖示程序中,SM0.0是一直接通的,這是無條件調(diào)用。若換成其它接點,則稱為有條件調(diào)用。不帶參數(shù)子程序的調(diào)用中,子程序和主程序也是可以通過全局變量交換數(shù)據(jù)的。 圖6-2不帶參數(shù)的子程序的調(diào)用 6 2022/7/216.1.2西門子S7-200 PLC的程序結(jié)構(gòu)(續(xù)) 子程序調(diào)用也可以帶參數(shù)。每個子程序調(diào)用的輸入輸出參數(shù)最多限制為16個。在帶參數(shù)的“調(diào)用子程序”指令中,參數(shù)必須與子程序局部變量表中定義的變量完全匹配。參數(shù)順序必須以輸入?yún)?shù)開始,其次是輸入輸
6、出參數(shù),然后是輸出參數(shù)。子程序帶參數(shù)調(diào)用可以充分利用局部變量的優(yōu)勢,使程序更具模塊化。圖6-3是一子程序符號表,圖6-4為帶參數(shù)子程序調(diào)用的舉例。 圖6-3子程序符號表 7 2022/7/216.1.2西門子S7-200 PLC的程序結(jié)構(gòu)(續(xù)) 圖6-4 為帶參數(shù)子程序調(diào)用的舉例 8 2022/7/216.1.2西門子S7-200 PLC的程序結(jié)構(gòu)(續(xù)) 3.數(shù)據(jù)塊、符號表與狀態(tài)圖 S7-200 PLC可以定義數(shù)據(jù)塊,數(shù)據(jù)塊定義在V區(qū),因此S7-200 PLC中定義數(shù)據(jù)塊并沒有新建變量,而是對已有的變量區(qū)域進行再定義,如圖6-5所示。圖6-5 S7-200 PLC數(shù)據(jù)塊的定義9 2022/7/
7、216.1.2西門子S7-200 PLC的程序結(jié)構(gòu)(續(xù)) S7-200 PLC的數(shù)據(jù)塊定義完成后,這些數(shù)據(jù)有了初始值,訪問這些數(shù)據(jù)的時候,還使用V區(qū)的訪問辦法進行訪問??梢詫λ凶兞康拿Q和子程序塊的名稱定義符號名稱,在符號表中完成。符號表是給已有的變量等另外取個更容易閱讀和理解的名稱,主要是注釋的功能,不會下載到PLC中。 S7-200 PLC中還有一個概念叫狀態(tài)圖,也是一個表格,用于在線監(jiān)控時,把需要監(jiān)控的變量以各種格式集中在一起,方便變量的監(jiān)控和程序的調(diào)試。狀態(tài)圖既不會創(chuàng)建新的變量,也不會下載到PLC中。10 2022/7/216.1.3西門子S7-300/400的PLC的程序結(jié)構(gòu) 1.
8、程序結(jié)構(gòu) 西門子S7-300/400的PLC的程序在結(jié)構(gòu)上是由若干塊組成的。根據(jù)塊的特點不同,分為組織塊(OB)、功能塊(FB)、功能(FC)、系統(tǒng)功能塊(SFB)、系統(tǒng)功能(SFC)和數(shù)據(jù)塊(DB),如圖6-6所示。 圖6-6西門子S7-300/400的塊 11 2022/7/216.1.3西門子S7-300/400的PLC的程序結(jié)構(gòu)(續(xù)) 組織塊(OB)是系統(tǒng)自動調(diào)用的程序塊。根據(jù)組織塊的不同作用,系統(tǒng)會在相應(yīng)的時候和條件下進行調(diào)用。例如,組織塊OB1,系統(tǒng)會在每個循環(huán)掃描周期調(diào)用一次,我們稱為主程序。當程序不是很復(fù)雜時,我們可以將程序全部寫在OB1中。組織塊OB100是初始化組織塊,系統(tǒng)
9、會在上電后自動調(diào)用一次OB100,我們可以把初始化程序?qū)懺贠B100中。如圖6-6所示,除初始化和循環(huán)掃描可以調(diào)用相應(yīng)組織塊外,定時和故障會激發(fā)相應(yīng)的中斷,從而調(diào)用相應(yīng)的組織塊,中斷組織塊的內(nèi)容在6.4中講解。對PLC來說,不同的組織塊是有特定功能的。用戶不能定義組織塊的調(diào)用規(guī)則,從而不能創(chuàng)建新名稱的組織塊,而只能將系統(tǒng)的組織塊插入程序中,然后編寫組織塊的程序。12 2022/7/216.1.3西門子S7-300/400的PLC的程序結(jié)構(gòu)(續(xù)) 在STEP中,可以在工程的程序中插入塊。如圖6-7所示,在工程test的S7 Program(1)的Blocks中,可以插入OB塊、FB塊、FC塊和D
10、B塊。而SFC和SFB塊,則通過程序調(diào)用,由系統(tǒng)自動插入。例如,在圖6-8中調(diào)用了SFC14(DPRD_DAT),則系統(tǒng)會把SFC14自動加入程序中,如圖6-7所示。 圖6-7 插入塊的操作 13 2022/7/216.1.3西門子S7-300/400的PLC的程序結(jié)構(gòu)(續(xù)) 2. 功能(FC)和功能塊(FB) 功能塊(FB)和功能(FC)是用戶定義的子程序。我們可以在程序中任何地方通過程序調(diào)用功能塊(FB)和功能(FC)。FB和FC是有區(qū)別的,F(xiàn)B是帶有專用的背景數(shù)據(jù)塊的,F(xiàn)B可以訪問自己的背景數(shù)據(jù)塊,也可以訪問共享數(shù)據(jù)塊;FC不帶有專用的背景數(shù)據(jù)塊,可以訪問共享數(shù)據(jù)塊。 除此之外,F(xiàn)B和F
11、C的使用是一致的。塊的調(diào)用程序如圖6-8所示,第一行程序為條件調(diào)用,第二行程序為無條件調(diào)用。14 2022/7/216.1.3西門子S7-300/400的PLC的程序結(jié)構(gòu)(續(xù)) 圖6-8 塊的調(diào)用15 2022/7/216.1.3西門子S7-300/400的PLC的程序結(jié)構(gòu)(續(xù)) 與S7-200 PLC相似,在S7-300/400 PLC的塊中,可以使用局部變量L,從而支持帶參數(shù)的調(diào)用。局部變量L存儲區(qū)的大小與PLC型號有關(guān),一般大于256B。局部變量L在塊被調(diào)用時才分配存儲空間,當調(diào)用結(jié)束后,釋放存儲空間。 圖6-9為一帶參數(shù)程序塊的程序。需要首先定義該程序塊的輸入和輸出參數(shù),當然這些參數(shù)是
12、局部變量,在調(diào)用時,用實際參數(shù)代替局部變量。該圖中,定義了輸入?yún)?shù)x1和x2,輸出參數(shù)y,臨時的中間變量Temp1。程序中,計算x1和x2的平均值,保存在y中。16 2022/7/216.1.3西門子S7-300/400的PLC的程序結(jié)構(gòu)(續(xù)) 圖6-9 帶參數(shù)程序塊的編寫17 2022/7/216.1.3西門子S7-300/400的PLC的程序結(jié)構(gòu)(續(xù)) 帶參數(shù)程序塊的調(diào)用如圖6-10所示。FC1為已經(jīng)定義好的帶參數(shù)的功能(子程序)在主程序或其他程序中,可以多次調(diào)用FC1,調(diào)用時需要賦值給x1和x2,計算結(jié)果也要指定實際的存儲空間。用計算機的術(shù)語來講,x1、x2和y是形式參數(shù),而MW0和MW
13、2等是實際參數(shù)。圖6-10 帶參數(shù)程序塊的調(diào)用18 2022/7/216.1.3西門子S7-300/400的PLC的程序結(jié)構(gòu)(續(xù)) 系統(tǒng)功能塊(SFB)和系統(tǒng)功能(SFC)是系統(tǒng)定義的子程序,是PLC生產(chǎn)廠家將具有特定功能的子程序編好后,提供給用戶使用,用戶可以直接調(diào)用。比如SFC14/15是PROFIBUS數(shù)據(jù)發(fā)送/接收功能。SFB帶有背景數(shù)據(jù)塊,而SFC不帶。SFB和SFC調(diào)用方法與FC的調(diào)用一樣。了解和掌握系統(tǒng)功能對程序的編寫會帶來很大的便利 數(shù)據(jù)塊(DB)分為共享數(shù)據(jù)塊和背景數(shù)據(jù)塊。數(shù)據(jù)塊創(chuàng)建后,就是給PLC定義了新的變量,程序可以訪問這些變量。19 2022/7/216.1.3西門子
14、S7-300/400的PLC的程序結(jié)構(gòu)(續(xù)) 3. 數(shù)據(jù)塊 數(shù)據(jù)塊(DB)分為共享數(shù)據(jù)塊和背景數(shù)據(jù)塊。數(shù)據(jù)塊的創(chuàng)建,就是給PLC定義了新的變量,程序可以訪問這些變量。數(shù)據(jù)塊的名稱是按數(shù)字進行編號的,如DB1、DB2等。 在如圖6-7所示的界面中,插入數(shù)據(jù)塊。然后對數(shù)據(jù)塊進行定義,如圖6-11所示。數(shù)據(jù)塊的創(chuàng)建就是填一張表格,一行一行去填寫?!暗刂贰笔菙?shù)據(jù)塊中的物理地址,由系統(tǒng)自動依次生成;“名稱”是數(shù)據(jù)塊中變量的符號名;“類型”是變量的數(shù)據(jù)類型;在數(shù)據(jù)塊中還可以設(shè)定數(shù)據(jù)的初始值和注釋。20 2022/7/216.1.3西門子S7-300/400的PLC的程序結(jié)構(gòu)(續(xù)) 圖6-11 數(shù)據(jù)塊DB1
15、的創(chuàng)建21 2022/7/216.1.3西門子S7-300/400的PLC的程序結(jié)構(gòu)(續(xù)) 用戶可以在程序中訪問數(shù)據(jù)塊中的數(shù)據(jù),變量的表達有規(guī)定的形式。訪問某一位,用DB1.DBXx.y表示,如DB1.DBX0.0和DB1.DBX0.1表示DB1的第1個字節(jié)的第1位和第2位,當然也可以用DB1.b0和DB1.b1來表示。訪問某一字節(jié),用DB1.DBBx表示,如DB1.DBB1表示DB1的第2個字節(jié),也可以用DB1.x0表示。訪問某一個字,用DB1.DBWx表示,如DB1.DBW2表示以DB1的第3個字節(jié)開始的一個字,也可以用DB1.x1表示。訪問某個雙字,用DB1.DBDx表示。以上“x”表示
16、數(shù)據(jù)塊中的字節(jié)單元地址。22 2022/7/216.1.3西門子S7-300/400的PLC的程序結(jié)構(gòu)(續(xù)) 創(chuàng)建數(shù)據(jù)塊時,可以創(chuàng)建一些位、字節(jié)和字等,而使用時可以把數(shù)據(jù)塊看成一定字節(jié)長度的空間,用任意格式訪問數(shù)據(jù)塊,不受定義的限制。圖6-12中,程序段3的后半段,DBW0表示DB1的前兩個字節(jié)。因此,有時直接定義成“ARRAY0.9 BYTE”,表示10個字節(jié)的數(shù)組。23 2022/7/216.1.3西門子S7-300/400的PLC的程序結(jié)構(gòu)(續(xù)) 圖6-12 數(shù)據(jù)塊的訪問24 2022/7/216.1.3西門子S7-300/400的PLC的程序結(jié)構(gòu)(續(xù)) 4. 變量表與符號表 在如圖6-
17、7所示的界面中,可以插入變量表,用于在線監(jiān)控。變量表把需要監(jiān)控的變量以各種格式集中在一起,方便變量的監(jiān)控和程序的調(diào)試,如圖6-13所示。變量表既不創(chuàng)建新的變量,也不必下載到PLC中。 S7-300 PLC中,可以對所有變量的名稱和程序塊的名稱定義符號名稱,在符號表中完成。符號表是為了方便程序的閱讀和理解,主要是注釋的功能,不下載到PLC中。25 2022/7/216.1.3西門子S7-300/400的PLC的程序結(jié)構(gòu)(續(xù)) 圖6-13 S7-300/400 PLC的變量表26 2022/7/216.1 西門子PLC的程序結(jié)構(gòu)6.2 程序控制指令與結(jié)構(gòu)化編程6.3 S7-200的中斷系統(tǒng)6.4
18、S7-300/400的中斷與組織塊6.5 S7-300/400的系統(tǒng)功能與系統(tǒng)功能塊本章的主要內(nèi)容 27 2022/7/216.2.1 程序控制概述 在具體的程序塊內(nèi),編寫PLC控制程序也要對程序的流程進行控制。用計算機編程的觀點看待PLC程序的編寫,PLC的程序?qū)儆诮Y(jié)構(gòu)化編程的模型。PLC的程序控制是通過程序控制指令完成的。 PLC最基本的結(jié)構(gòu)是順序結(jié)構(gòu),即執(zhí)行完上一行程序再執(zhí)行下一行。除此之外,分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和子程序結(jié)構(gòu)也是常見的程序結(jié)構(gòu)。需要注意的是,這里所講的結(jié)構(gòu)是相對于一個PLC掃描周期而言的。28 2022/7/216.2.2程序控制指令 29 2022/7/216.2.2程序
19、控制指令(續(xù)) 跳轉(zhuǎn)指令是程序控制常用指令。當邏輯條件滿足時,使用該指令可以有選擇地執(zhí)行程序中的某些部分,完成某些特定的功能,這樣可以使程序結(jié)構(gòu)更加靈活,減少掃描時間,加快系統(tǒng)的響應(yīng)速度。 跳轉(zhuǎn)指令由兩條指令組成:JMP和LBL,這兩條指令必須配合使用,且必須使用在同一個程序塊中,例如可以在主程序中使用,也可以在子程序中使用,或者在中斷程序中使用,但不允許從主程序跳轉(zhuǎn)到子程序或中斷程序中,當然也不允許從一個子程序跳到另一個子程序中或者中斷程序、主程序里。 程序控制指令如表6-1所示。 30 2022/7/216.2.3 分支結(jié)構(gòu) 分支結(jié)構(gòu)又稱為選擇分支結(jié)構(gòu)。如果在不同條件下,需要執(zhí)行不同的程序
20、段時,就需要用分支結(jié)構(gòu)。例如,機電設(shè)備控制中,經(jīng)常存在手動和自動兩種模式,在兩種模式下的控制程序是不同的,這時就可以用分支結(jié)構(gòu)實現(xiàn)有選擇的控制。 分支結(jié)構(gòu)中是由判定條件來控制程序運行方向的,如圖6-14所示。當條件成立時,執(zhí)行程序段2;當條件不成立時,執(zhí)行程序段1。分支結(jié)構(gòu)一般通過跳轉(zhuǎn)指令實現(xiàn),在圖6-15中,根據(jù)I0.0的狀態(tài)決定執(zhí)行程序段1還是程序段2。當I0.0有輸入,則執(zhí)行程序段2,否則執(zhí)行程序段1。 31 2022/7/216.2.3 分支結(jié)構(gòu) (續(xù)) 圖6-14 分支結(jié)構(gòu) 圖6-15用JMP指令實現(xiàn)分支結(jié)構(gòu) 32 2022/7/216.2.4 循環(huán)結(jié)構(gòu) 循環(huán)是計算機程序的基本結(jié)構(gòu)。
21、但在PLC中,需要注意PLC程序本身也是循環(huán)的。所謂循環(huán)結(jié)構(gòu)是指PLC大循環(huán)中間的一段循環(huán)程序,在應(yīng)用時特別需要注意。 循環(huán)結(jié)構(gòu)如圖6-16所示,循環(huán)變量是循環(huán)的控制變量,每次循環(huán)中循環(huán)變量的值都會改變。循環(huán)結(jié)構(gòu)中有一個分支結(jié)構(gòu),用于判斷是否結(jié)束循環(huán)。圖6-17是用FOR指令實現(xiàn)循環(huán)結(jié)構(gòu)的例子,當I2.0=1時,外循環(huán)執(zhí)行100次;當I2.1=1時,外循環(huán)每執(zhí)行1次,內(nèi)循環(huán)執(zhí)行2次。 西門子S7-300/400的基本指令中沒有FOR指令,這時也可以用JMP等指令實現(xiàn)循環(huán)結(jié)構(gòu)。在實際應(yīng)用中,循環(huán)結(jié)構(gòu)的應(yīng)用是比較少的。 33 2022/7/216.2.4 循環(huán)結(jié)構(gòu) (續(xù)) 圖6-16循環(huán)結(jié)構(gòu) 圖6
22、-17 用FOR指令實現(xiàn)循環(huán)結(jié)構(gòu) 34 2022/7/216.2.5 子程序結(jié)構(gòu) 子程序的使用有兩種情況。一是程序比較長,為了使其結(jié)構(gòu)清楚,將其分成若干段,每一段寫出一個子程序;第二種情況是某些程序段需要反復(fù)執(zhí)行,這時將其寫成子程序形式,可以減少代碼長度,降低系統(tǒng)內(nèi)存資源的占用,提高程序的效率和結(jié)構(gòu)化程度。 子程序結(jié)構(gòu)如圖6-18所示。子程序分為一般子程序和中斷子程序,兩者從程序的角度看是一致的,只是調(diào)用的方法不同。一般子程序用程序調(diào)用,而中斷子程序是由中斷調(diào)用的,所以又稱為中斷服務(wù)子程序。 35 2022/7/215.2.5 子程序結(jié)構(gòu)(續(xù)) 圖6-18 子程序結(jié)構(gòu) 36 2022/7/21
23、6.1 西門子PLC的程序結(jié)構(gòu)6.2 程序控制指令與結(jié)構(gòu)化編程6.3 S7-200的中斷系統(tǒng)6.4 S7-300/400的中斷與組織塊6.5 S7-300/400的系統(tǒng)功能與系統(tǒng)功能塊本章的主要內(nèi)容 37 2022/7/216.3.1中斷程序類型與優(yōu)先級S7-200支持以下中斷程序類型:(1)通信端口中斷:S7-200生成允許程序控制通信端口的事件。(2)I/O中斷:S7-200生成用于各種I/O狀態(tài)不同變化的事件。這些事件允許程序?qū)Ω咚儆嫈?shù)器、脈沖輸出或輸入的升高或降低狀態(tài)作出應(yīng)答。(3)時基中斷:S7-200生成允許程序按照具體間隔作出應(yīng)答的事件。38 2022/7/216.3.1西門子S
24、7-200的中斷 (續(xù)) 39 2022/7/215.3.1西門子S7-200的中斷 (續(xù)) 40 2022/7/216.3.1西門子S7-200的中斷 (續(xù)) 41 2022/7/216.3.2 中斷指令與中斷設(shè)置 中斷指令如表6-3所示。要使用中斷,首先必須啟動中斷,并且將中斷事件和中斷服務(wù)子程序相關(guān)聯(lián)??梢詫⒍鄠€中斷和一個中斷服務(wù)子程序相關(guān)聯(lián)。 42 2022/7/216.3.2西門子S7-200的中斷 (續(xù)) 中斷的應(yīng)用是很方便的。如圖5-19所示,在完成啟動中斷(ENI指令)后,將中斷事件(0號中斷,I0.0上升沿)和中斷響應(yīng)子程序建立關(guān)聯(lián)。當I0.0有上升沿,0號中斷事件出現(xiàn),系統(tǒng)
25、會自動調(diào)用中斷子程序INT_0。中斷子程序在中斷啟動的條件下,在中斷事件發(fā)生時被調(diào)用。注意,用戶不能在程序中通過子程序調(diào)用指令調(diào)用中斷子程序。 圖6-19 啟動中斷和附加中斷程序 43 2022/7/216.3.2西門子S7-200的中斷 (續(xù)) 中斷的應(yīng)用很多。例如,我們經(jīng)常通過定時中斷來讀取模擬轉(zhuǎn)換的數(shù)值,程序如圖6-20所示。 圖6-20 通過定時中斷讀取模擬轉(zhuǎn)換的數(shù)值 44 2022/7/216.3.3 共享數(shù)據(jù) 用戶可以在主程序和一個或多個中斷程序之間共享數(shù)據(jù)。因為無法預(yù)測S7-200何時可能生成中斷,最好限制中斷程序和程序中其他位置使用的變量數(shù)目。由于主程序中指令執(zhí)行被中斷事件中斷
26、時中斷程序采取的措施,會導(dǎo)致共享數(shù)據(jù)一致性故障。使用中斷例行程序局部變量表,以確保中斷例行程序僅使用臨時內(nèi)存,并且不改寫程序其他位置使用的數(shù)據(jù)。 45 2022/7/216.1 西門子PLC的程序結(jié)構(gòu)6.2 程序控制指令與結(jié)構(gòu)化編程6.3 S7-200的中斷系統(tǒng)6.4 S7-300/400的中斷與組織塊6.5 S7-300/400的系統(tǒng)功能與系統(tǒng)功能塊本章的主要內(nèi)容 46 2022/7/216.4.1 S7-300/400的中斷與組織塊概述 在S7-300/400中,將所有的中斷服務(wù)子程序稱為組織塊,用OB表示。組織塊是系統(tǒng)程序和用戶程序之間的接口。 組織塊是系統(tǒng)調(diào)用程序塊,在系統(tǒng)事件或中斷事
27、件發(fā)生后由系統(tǒng)程序調(diào)用,從而得以執(zhí)行。常見的事件或時刻有:在CPU啟動時、在一個循環(huán)或時鐘執(zhí)行時、當發(fā)生故障時以及當發(fā)生硬件中斷時。 不同組織塊具有不同的優(yōu)先級,組織塊根據(jù)其優(yōu)先級執(zhí)行。 47 2022/7/216.4.2西門子S7-300/400的組織塊 S7-300/400中的組織塊全部都是中斷服務(wù)子程序,如表6-4所示。OB1是主程序循環(huán)中斷、OB100(OB101、OB102)是啟動中斷,也是啟動中斷服務(wù)程序。除此之外,還有時間中斷、延時中斷、定時中斷、硬件中斷和錯誤中斷等。 48 2022/7/216.4.2西門子S7-300/400的組織塊49 2022/7/216.4.2西門子S
28、7-300/400的組織塊 1. 主程序循環(huán)組織塊(OB1) PLC的系統(tǒng)程序周期性地執(zhí)行組織塊OB1程序。CPU啟動后,OB1循環(huán)執(zhí)行,每個掃描周期執(zhí)行一次。用戶可以在OB1中調(diào)用其他功能塊(FB,SFB)或功能(FC,SFC)。 OB1執(zhí)行完后,系統(tǒng)程序發(fā)送全局數(shù)據(jù)。再次啟動OB1之前,系統(tǒng)程序會將輸出映像區(qū)數(shù)據(jù)寫入輸出接口,然后進行輸入采樣,刷新輸入映像區(qū)并接收全局數(shù)據(jù)。PLC的系統(tǒng)程序會監(jiān)視最長的循環(huán)周期時間,保證最長的響應(yīng)時間。最長循環(huán)時間默認設(shè)置為150ms。 除OB90以外,OB1的優(yōu)先級最低,其他所有OB均可中斷OB1的執(zhí)行。 由于OB1在每個掃描周期中均會被執(zhí)行一次,因此稱為
29、主程序。 50 2022/7/216.4.2西門子S7-300/400的中斷 (續(xù)) 2. 日期時間中斷組織塊(OB10OB17) 在硬件組態(tài)CPU屬性設(shè)置中,可以在 Time of Day Interrupts卡片中設(shè)置日期時間中斷。當設(shè)置了OB10后,OB10必須在PLC中存在,否則CPU調(diào)用不到OB10將轉(zhuǎn)為STOP狀態(tài)。OB10到OB17都是日期時間中斷,S7-300只支持OB10,S7-400支持的日期時間中斷會多一些。3. 延時中斷組織塊(OB20OB23) 通過調(diào)用SFC32,可以使CPU在某外部條件發(fā)生后,延時指定的時間后,調(diào)用延時中斷OB20。其中的外部條件調(diào)用SFC32,而
30、延時時間是在調(diào)用的SFC32中定義的。S7-300只支持OB20,S7-400支持OB20OB23共4個。51 2022/7/216.4.2西門子S7-300/400的中斷 (續(xù)) 4. 循環(huán)中斷組織塊(OB30OB38) 在硬件組態(tài)CPU屬性設(shè)置中,可以在Cyclic Interrupt卡片中設(shè)置定時中斷。缺省的OB35調(diào)用時間間隔為100ms,用戶可以設(shè)置的范圍為160000ms。需要注意的是OB35的執(zhí)行時間必須小于設(shè)置的時間間隔,否則會激發(fā)OB80(定時中斷錯誤)。 5. 硬件中斷組織塊(OB40OB47) 通過組態(tài),可以使CPU響應(yīng)外部模塊的硬件中斷請求,調(diào)用硬件中斷OB40。S7-
31、300只支持OB40,S7-400支持OB40OB47共8個。 52 2022/7/216.4.2西門子S7-300/400的中斷 (續(xù)) 6. 狀態(tài)中斷組織塊(OB55) 一個狀態(tài)中斷組織塊OB(OB55)只在有DPV1能力的CPU中存在。如果狀態(tài)中斷通過DPV1從站槽觸發(fā),CPU系統(tǒng)程序調(diào)用OB55。這可能是一個DPV1從站組件更改其操作模式的情況。例如從運行到停止。事件觸發(fā)一個狀態(tài)中斷的詳細信息,參見DPV1從站手冊。 7. 刷新中斷組織塊(OB56) 一個刷新中斷組織塊OB(OB56)只在有DPV1能力的CPU中存在。如果刷新中斷通過DPV1從站槽觸發(fā),CPU運行系統(tǒng)調(diào)用OB56。這可
32、能是如果用戶變換了DPV1從站槽的參數(shù)(通過本地或遠程訪問)。詳細的刷新中斷觸發(fā)事件信息,參見DPV1從站手冊。 8. 制造商用中斷組織塊(OB57) 制造商指定的中斷組織塊OB(OB57)只在有DPV1能力的CPU中存在。如果制造商用中斷通過DPV1從站槽觸發(fā),CPU運行系統(tǒng)調(diào)用OB57。 53 2022/7/216.4.2西門子S7-300/400的中斷 (續(xù)) 9. 多處理器中斷組織塊(OB60) 使用多處理器中斷,可以確定在多處理器運行期間CPU的反應(yīng)是否與一個事件同步。同硬件中斷由信號模板觸發(fā)相反,多處理器中斷僅由CPU輸出。10. 同步循環(huán)中斷OB(OB61OB64) 同步循環(huán)中斷
33、給用戶提供與DP周期同步啟動程序的選擇。OB61作為接口OB提供周期同步中斷TSAL1??梢栽?(不選擇OB)和226之間為OB61設(shè)定優(yōu)先級。11. 冗余故障OB(OB70、OB72和OB73) 當PROFIBUS-DP上的冗余丟失(例如,主動的DP主站總線故障或DP從站的接口模板出現(xiàn)故障時)或當主動的DP主站的DP從站連接的I/O改變時,H CPU的系統(tǒng)程序調(diào)用OB70。I/O冗余故障OB(OB70)僅可用在H CPU。如果啟動事件出現(xiàn)且OB70未編程,則CPU不變?yōu)镾TOP方式。如果OB70已下裝且如果該H系統(tǒng)處于冗余方式,則兩個CPU都執(zhí)行OB70。54 2022/7/216.4.2西
34、門子S7-300/400的中斷 (續(xù)) 12. 異步故障中斷(OB80OB88)所謂異步錯誤是指一些與PLC硬件或者系統(tǒng)程序有關(guān)系的錯誤,這種錯誤與程序執(zhí)行無關(guān),不能跟蹤到程序中的某個具體位置。在發(fā)生異步錯誤時,調(diào)用相應(yīng)的中斷組織塊。異步錯誤中斷組織塊如表6-5所示。55 2022/7/216.4.2西門子S7-300/400的中斷 (續(xù)) 13. 背景組織塊(OB90)STEP7可以監(jiān)視最大掃描周期時間,并可以保證最小掃描周期時間。如果OB1包括所有的嵌套中斷和系統(tǒng)功能的執(zhí)行時間小于指定的最小掃描周期時間,則系統(tǒng)程序反應(yīng)如下:它調(diào)用背景OB(如果CPU中OB90已存在);它延時下一次OB1啟
35、動(如果在CPU中OB90不存在)。OB90在所有OB中優(yōu)先級最低。它可以被任何系統(tǒng)功能和任務(wù)所中斷(OB1在小周期時間超出時)并僅在所選的最小掃描周期時間還沒有達到時執(zhí)行。一個例外是在OB90中調(diào)用SFC和SFB,它們用OB1優(yōu)先級的執(zhí)行并且不會被OB1中斷,沒有OB90的時間監(jiān)視。當組態(tài)中最小掃描周期時間和周期監(jiān)視時間之間差距不大時,在背景OB中的SFC和SFB調(diào)用可能會導(dǎo)致循環(huán)時間超出。56 2022/7/216.4.2西門子S7-300/400的中斷 (續(xù)) 14. 啟動中斷(OB100OB102)啟動中斷包括熱啟動中斷OB101、暖啟動中斷OB100和冷啟動中斷OB102。根據(jù)啟動事
36、件,特定的CPU和它的參數(shù),啟動相應(yīng)的OB(OB100、OB101或OB102)。15. 同步錯誤響應(yīng)中斷(OB121和OB122)所謂同步錯誤是指在程序的執(zhí)行過程中,在程序的某個特定位置上發(fā)生的錯誤。同步錯誤響應(yīng)中斷與當前OB具有相同的優(yōu)先級。同步錯誤響應(yīng)中斷包括編程錯誤OB121和訪問錯誤OB122。當程序中發(fā)生如BCD轉(zhuǎn)換錯誤、調(diào)用一個不存在的塊、訪問數(shù)據(jù)塊中沒有經(jīng)過編輯的地址等錯誤時,系統(tǒng)調(diào)用OB121;當程序中發(fā)生如訪問一個不存在的外設(shè)地址、訪問的模塊有故障等錯誤時,系統(tǒng)調(diào)用OB122。發(fā)生同步/異步錯誤時,系統(tǒng)會調(diào)用相應(yīng)的錯誤響應(yīng)中斷組織塊。若其存在(即便是空的),則PLC的狀態(tài)為
37、RUN,SF亮;若調(diào)用不到,則轉(zhuǎn)為STOP,并將診斷信息記錄在診斷緩存區(qū)。 57 2022/7/216.1 西門子PLC的程序結(jié)構(gòu)6.2 程序控制指令與結(jié)構(gòu)化編程6.3 S7-200的中斷系統(tǒng)6.4 S7-300/400的中斷與組織塊6.5 S7-300/400的系統(tǒng)功能與系統(tǒng)功能塊本章的主要內(nèi)容 58 2022/7/216.5.1 S7-300/400的系統(tǒng)功能與系統(tǒng)功能塊概述 用戶為了實現(xiàn)特定的控制與運算功能,經(jīng)常需要編寫一些子程序,在S7-300/400 PLC中稱為功能(FC)與功能塊(FB),它們的區(qū)別在于FB有自己專用的背景數(shù)據(jù)塊。然而西門子作為其自動化系統(tǒng)的研制開發(fā)者和設(shè)備供應(yīng)商
38、,了解用戶的這種需求,除了提供了基本的編程指令之外,還提供了實現(xiàn)一些常見功能的程序塊,稱為庫,如圖6-21所示。SFB和SFC就是標準庫中的系統(tǒng)功能塊。59 2022/7/216.5.1 S7-300/400的系統(tǒng)功能與系統(tǒng)功能塊概述 圖6-21 S7-300/400 PLC的庫60 2022/7/216.5.1 S7-300/400的系統(tǒng)功能與系統(tǒng)功能塊概述 SFB和SFC是由西門子公司開發(fā)人員開發(fā)的,用戶并不能對程序塊進行讀取和編輯,用戶可以調(diào)用不同功能的SFC和SFB。根據(jù)西門子公司的相關(guān)手冊或STEP7中的幫助文件,用戶可以知道系統(tǒng)提供的SFC和SFB的功能和相關(guān)的參數(shù)。 用戶在使用中可以把某一個SFC和SFB看成一個模塊或一個
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)絡(luò)客服工作總結(jié)及時解答解決用戶問題
- 食品行業(yè)食品安全培訓總結(jié)
- AIDS抗病毒治療課件
- 2025年全球及中國血流動力學監(jiān)測解決方案行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球新能源交流繼電器行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球剛性墻庇護所行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國游戲視頻背景音樂行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球滑移轉(zhuǎn)向巖石拾取器行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球甲氧氯普胺片行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國工業(yè)級硅酸鉀行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 充電樁知識培訓課件
- 2025年七年級下冊道德與法治主要知識點
- 2025年交通運輸部長江口航道管理局招聘4人歷年高頻重點提升(共500題)附帶答案詳解
- 老年髖部骨折患者圍術(shù)期下肢深靜脈血栓基礎(chǔ)預(yù)防專家共識(2024版)解讀
- 偏癱足內(nèi)翻的治療
- 藥企質(zhì)量主管競聘
- 信息對抗與認知戰(zhàn)研究-洞察分析
- 心腦血管疾病預(yù)防課件
- 手術(shù)室??谱o士工作總結(jié)匯報
- 2025屆高三聽力技巧指導(dǎo)-預(yù)讀、預(yù)測
- 蘇州市2025屆高三期初陽光調(diào)研(零模)政治試卷(含答案)
評論
0/150
提交評論