




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
機械動力部第5章S7300編程語言學(xué)習(xí)第5章S7程序結(jié)構(gòu)與程序設(shè)計§5.1S7CPU中的程序§5.2
數(shù)據(jù)塊中的數(shù)據(jù)存儲§5.3
邏輯塊(FC和FB)的結(jié)構(gòu)及編程§5.4
編輯并調(diào)用無參功能(FC)——分部程序設(shè)計§5.1S7CPU中的程序§5.1.1用戶程序中的塊結(jié)構(gòu)§5.1.2用戶程序結(jié)構(gòu)§5.1.3I/O過程映像§5.1.4程序循環(huán)執(zhí)行§5.1.1用戶程序中的塊結(jié)構(gòu)§5.1.2用戶程序結(jié)構(gòu)線性程序(線性編程)分部式程序(分部編程、分塊編程)結(jié)構(gòu)化程序(結(jié)構(gòu)化編程或模塊化編程)1.線性程序(線性編程)
所謂線性程序結(jié)構(gòu),就是將整個用戶程序連續(xù)放置在一個循環(huán)程序塊(OB1)中,塊中的程序按順序執(zhí)行,CPU通過反復(fù)執(zhí)行OB1來實現(xiàn)自動化控制任務(wù)。這種結(jié)構(gòu)和PLC所代替的硬接線繼電器控制類似,CPU逐條地處理指令。事實上所有的程序都可以用線性結(jié)構(gòu)實現(xiàn),不過,線性結(jié)構(gòu)一般適用于相對簡單的程序編寫。2.分部式程序(分部編程、分塊編程)
所謂分部程序,就是將整個程序按任務(wù)分成若干個部分,并分別放置在不同的功能(FC)、功能塊(FB)及組織塊中,在一個塊中可以進一步分解成段。在組織塊OB1中包含按順序調(diào)用其他塊的指令,并控制程序執(zhí)行。在分部程序中,既無數(shù)據(jù)交換,也不存在重復(fù)利用的程序代碼。功能(FC)和功能塊(FB)不傳遞也不接收參數(shù),分部程序結(jié)構(gòu)的編程效率比線性程序有所提高,程序測試也較方便,對程序員的要求也不太高。對不太復(fù)雜的控制程序可考慮采用這種程序結(jié)構(gòu)。3.結(jié)構(gòu)化程序(結(jié)構(gòu)化編程或模塊化編程)
所謂結(jié)構(gòu)化程序,就是處理復(fù)雜自動化控制任務(wù)的過程中,為了使任務(wù)更易于控制,常把過程要求類似或相關(guān)的功能進行分類,分割為可用于幾個任務(wù)的通用解決方案的小任務(wù),這些小任務(wù)以相應(yīng)的程序段表示,稱為塊(FC或FB)。OB1通過調(diào)用這些程序塊來完成整個自動化控制任務(wù)。結(jié)構(gòu)化程序的特點是每個塊(FC或FB)在OB1中可能會被多次調(diào)用,以完成具有相同過程工藝要求的不同控制對象。這種結(jié)構(gòu)可簡化程序設(shè)計過程、減小代碼長度、提高編程效率,比較適合于較復(fù)雜自動化控制任務(wù)的設(shè)計。§5.1.3I/O過程映像§5.1.4程序循環(huán)執(zhí)行§5.2數(shù)據(jù)塊中的數(shù)據(jù)存儲§5.2.1數(shù)據(jù)存儲區(qū)§5.2.2數(shù)據(jù)塊§5.2.3數(shù)據(jù)塊的數(shù)據(jù)結(jié)構(gòu)§5.2.4建立數(shù)據(jù)塊§5.2.5訪問數(shù)據(jù)塊§5.2.1數(shù)據(jù)存儲區(qū)
數(shù)據(jù)以用戶程序變量的形式存儲,且具有唯一性。數(shù)據(jù)可以存儲在輸入過程映像存儲器(PII)、輸出過程映像存儲器(PIQ)、位存儲器(M)、局部數(shù)據(jù)堆棧(L堆棧)及數(shù)據(jù)塊(DB)中??梢圆捎没緮?shù)據(jù)類型、復(fù)雜數(shù)據(jù)類型或參數(shù)類型。根據(jù)訪問方式的不同,這些數(shù)據(jù)可以在全局符號表或共享數(shù)據(jù)塊中聲明,稱為全局變量;也可以在OB、FC和FB的變量聲明表中聲明,稱為局部變量。當(dāng)塊被執(zhí)行時,變量將固定地存儲在過程映像區(qū)(PII或PIQ)、位存儲器區(qū)(M)、數(shù)據(jù)塊(DB)或局部堆棧(L)中。§5.2.2數(shù)據(jù)塊
數(shù)據(jù)塊定義在S7CPU的存儲器中,用戶可在存儲器中建立一個或多個數(shù)據(jù)塊。每個數(shù)據(jù)塊可大可小,但CPU對數(shù)據(jù)塊數(shù)量及數(shù)據(jù)總量有限制。數(shù)據(jù)塊(DB)可用來存儲用戶程序中邏輯塊的變量數(shù)據(jù)(如:數(shù)值)。與臨時數(shù)據(jù)不同,當(dāng)邏輯塊執(zhí)行結(jié)束或數(shù)據(jù)塊關(guān)閉時,數(shù)據(jù)塊中的數(shù)據(jù)保持不變。用戶程序可以位、字節(jié)、字或雙字操作訪問數(shù)據(jù)塊中的數(shù)據(jù),可以使用符號或絕對地址。1.數(shù)據(jù)塊的分類
共享數(shù)據(jù)塊又稱全局數(shù)據(jù)塊。用于存儲全局數(shù)據(jù),所有邏輯塊(OB、FC、FB)都可以訪問共享數(shù)據(jù)塊存儲的信。
背景數(shù)據(jù)塊用作“私有存儲器區(qū)”,即用作功能塊(FB)的“存儲器”。FB的參數(shù)和靜態(tài)變量安排在它的背景數(shù)據(jù)塊中。背景數(shù)據(jù)塊不是由用戶編輯的,而是由編輯器生成的。
用戶定義數(shù)據(jù)塊(DBofType)是以UDT為模板所生成的數(shù)據(jù)塊。創(chuàng)建用戶定義數(shù)據(jù)塊(DBofType)之前,必須先創(chuàng)建一個用戶定義數(shù)據(jù)類型,如UDT1,并在LAD/STL/FBDS7程序編輯器內(nèi)定義。2.數(shù)據(jù)塊寄存器CPU有兩個數(shù)據(jù)塊寄存器:DB和DI寄存器。這樣,可以同時打開兩個數(shù)據(jù)塊。
§5.2.3數(shù)據(jù)塊的數(shù)據(jù)結(jié)構(gòu)
在STEP7中數(shù)據(jù)塊的數(shù)據(jù)類型可以采用基本數(shù)據(jù)類型、復(fù)雜數(shù)據(jù)類型或用戶定義數(shù)據(jù)類型(UDT)。基本數(shù)據(jù)類型復(fù)雜數(shù)據(jù)類型用戶定義數(shù)據(jù)類型基本數(shù)據(jù)類型根據(jù)IEC1131-3定義,長度不超過32位,可利用STEP7基本指令處理,能完全裝入S7處理器的累加器中?;緮?shù)據(jù)類型包括:位數(shù)據(jù)類型:BOOL、BYTE、WORD、DWORD、CHAR數(shù)字數(shù)據(jù)類型:INT、DINT、REAL定時器類型:S5TIME、TIME、DATE、TIME_OF_DAY復(fù)雜數(shù)據(jù)類型復(fù)雜數(shù)據(jù)類型只能結(jié)合共享數(shù)據(jù)塊的變量聲明使用。復(fù)雜數(shù)據(jù)類型可大于32位,用裝入指令不能把復(fù)雜數(shù)據(jù)類型完全裝入累加器,一般利用庫中的標準塊(“IEC”S7程序)處理復(fù)雜數(shù)據(jù)類型。復(fù)雜數(shù)據(jù)類型包括:時間(DATE_AND_TIME)類型矩陣(ARRAY)類型結(jié)構(gòu)(STRUCT)類型字符串(STRING)類型用戶定義數(shù)據(jù)類型(UDT)
STEP7允許利用數(shù)據(jù)塊編輯器,將基本數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型組合成長度大于32位用戶定義數(shù)據(jù)類型(UDT:User-DefineddataType)。用戶定義數(shù)據(jù)類型不能存儲在PLC中,只能存放在硬盤上的UDT塊中。可以用用戶定義數(shù)據(jù)類型作“模板”建立數(shù)據(jù)塊,以節(jié)省錄入時間??捎糜诮⒔Y(jié)構(gòu)化數(shù)據(jù)塊、建立包含幾個相同單元的矩陣、在帶有給定結(jié)構(gòu)的FC和FB中建立局部變量。【5-2-1】
創(chuàng)建用戶定義數(shù)據(jù)類型:UDT1。
創(chuàng)建一個名稱為UDT1的用戶定義數(shù)據(jù)類型,數(shù)據(jù)結(jié)構(gòu)如下,則可按以下幾個步驟完成?!?-2-1】創(chuàng)建用戶定義數(shù)據(jù)類型【5-2-1】編輯UDT1§5.2.4建立數(shù)據(jù)塊
在STEP7中,為了避免出現(xiàn)系統(tǒng)錯誤,在使用數(shù)據(jù)塊之前,必須先建立數(shù)據(jù)塊,并在塊中定義變量(包括變量符號名、數(shù)據(jù)類型以及初始值等)。數(shù)據(jù)塊中變量的順序及類型決定了數(shù)據(jù)塊的數(shù)據(jù)結(jié)構(gòu),變量的數(shù)量決定了數(shù)據(jù)塊的大小。數(shù)據(jù)塊建立后,還必須同程序塊一起下載到CPU中,才能被程序塊訪問。建立數(shù)據(jù)塊定義變量并下載數(shù)據(jù)塊方法1:用SIMATICManager創(chuàng)建數(shù)據(jù)塊。
方法2:用LAD/STL/FBDS7程序編輯器創(chuàng)建數(shù)據(jù)塊。
新DB類型選擇窗口編輯數(shù)據(jù)塊(變量定義)
變量定義完成后,應(yīng)單擊保存按鈕保存并編譯(測試)。如果沒有錯誤則需要單擊下載按鈕,像邏輯塊一樣,將數(shù)據(jù)塊下載到CPU?!?.2.5訪問數(shù)據(jù)塊
在用戶程序中可能存在多個數(shù)據(jù)塊,而每個數(shù)據(jù)塊的數(shù)據(jù)結(jié)構(gòu)并不完全相同,因此在訪問數(shù)據(jù)塊時,必須指明數(shù)據(jù)塊的編號、數(shù)據(jù)類型與位置。如果訪問不存在的數(shù)據(jù)單元或數(shù)據(jù)塊,而且沒有編寫錯誤處理OB塊,CPU將進入STOP模式。尋址數(shù)據(jù)塊訪問數(shù)據(jù)塊直接訪問數(shù)據(jù)塊尋址數(shù)據(jù)塊訪問數(shù)據(jù)塊
在STEP7中可以采用傳統(tǒng)訪問方式,即先打開后訪問;也可以采用完全表示的直接訪問方式?!纠?-2-2】
打開并訪問共享數(shù)據(jù)塊。訪問數(shù)據(jù)塊
用指令“OPNDB...”打開共享數(shù)據(jù)塊(自動關(guān)閉之前打開的共享數(shù)據(jù)塊),如果DB已經(jīng)打開,則可用裝入(L)或傳送(T)指令訪問數(shù)據(jù)塊?!纠?-2-3】
打開并訪問背景數(shù)據(jù)塊。直接訪問數(shù)據(jù)塊所謂直接訪問數(shù)據(jù)塊,就是在指令中同時給出數(shù)據(jù)塊的編號和數(shù)據(jù)在數(shù)據(jù)塊中的地址。可以用絕對地址,也可以用符號地址直接訪問數(shù)據(jù)塊。用絕對地址直接訪問數(shù)據(jù)塊,如:
用符號地址直接訪問數(shù)據(jù)塊,如:
功能(FC)、功能塊(FB)和組織塊(OB)統(tǒng)稱為邏輯塊(或程序塊)。功能塊(FB)有一個數(shù)據(jù)結(jié)構(gòu)與該功能塊的參數(shù)完全相同的數(shù)據(jù)塊,稱為背景數(shù)據(jù)塊,背景數(shù)據(jù)塊依附于功能塊,它隨著功能塊的調(diào)用而打開,隨著功能塊的結(jié)束而關(guān)閉。存放在背景數(shù)據(jù)塊中的數(shù)據(jù)在功能塊結(jié)束時繼續(xù)保持。而功能(FC)則不需要背景數(shù)據(jù)塊,功能調(diào)用結(jié)束后數(shù)據(jù)不能保持。組織塊(OB)是由操作系統(tǒng)直接調(diào)用的邏輯塊。§5.3.1邏輯塊(FC和FB)的結(jié)構(gòu)§5.3.1邏輯塊(FC和FB)的編程§5.3邏輯塊(FC和FB)的結(jié)構(gòu)及編程
邏輯塊(OB、FB、FC)由變量聲明表、代碼段及其屬性等幾部分組成。局部變量聲明表(局部數(shù)據(jù))邏輯塊局部變量的數(shù)據(jù)類型邏輯塊的調(diào)用過程及內(nèi)存分配§5.3.1邏輯塊(FC和FB)的結(jié)構(gòu)
每個邏輯塊前部都有一個變量聲明表,稱為局部變量聲明表。1.局部變量聲明表
局部數(shù)據(jù)分為參數(shù)和局部變量兩大類,局部變量又包括靜態(tài)變量和臨時變量(暫態(tài)變量)兩種。
對于功能塊(FB),操作系統(tǒng)為參數(shù)及靜態(tài)變量分配的存儲空間是背景數(shù)據(jù)塊。這樣參數(shù)變量在背景數(shù)據(jù)塊中留有運行結(jié)果備份。在調(diào)用FB時,若沒有提供實參,則功能塊使用背景數(shù)據(jù)塊中的數(shù)值。操作系統(tǒng)在L堆棧中給FB的臨時變量分配存儲空間。對于功能(FC),操作系統(tǒng)在L堆棧中給FC的臨時變量分配存儲空間。由于沒有背景數(shù)據(jù)塊,因而FC不能使用靜態(tài)變量。輸入、輸出、I/O參數(shù)以指向?qū)崊⒌闹羔樞问酱鎯υ诓僮飨到y(tǒng)為參數(shù)傳遞而保留的額外空間中。對于組織塊(OB)來說,其調(diào)用是由操作系統(tǒng)管理的,用戶不能參與。因此,OB只有定義在L堆棧中的臨時變量。
局部變量可以是基本數(shù)據(jù)類型或復(fù)式數(shù)據(jù)類型,也可以是專門用于參數(shù)傳遞的所謂的“參數(shù)類型”。參數(shù)類型包括定時器、計數(shù)器、塊的地址或指針等。2.邏輯塊局部變量的數(shù)據(jù)類型CPU提供塊堆棧(B堆棧)來存儲與處理被中斷塊的有關(guān)信息。3.邏輯塊的調(diào)用過程及內(nèi)存分配
局部數(shù)據(jù)堆棧簡稱L堆棧,是CPU中單獨的存儲器區(qū),可用來存儲邏輯塊的局部變量(包括OB的起始信息)、調(diào)用功能(FC)時要傳遞的實際參數(shù)、梯形圖程序中的中間邏輯結(jié)果等??梢园次?、字節(jié)、字和雙字來存取。
塊堆棧簡稱B堆棧,是CPU系統(tǒng)內(nèi)存中的一部分,用來存儲被中斷的塊的類型、編號、優(yōu)先級和返回地址;中斷時打開的共享數(shù)據(jù)塊和背景數(shù)據(jù)塊的編號;臨時變量的指針(被中斷塊的L堆棧地址)。
中斷堆棧簡稱I堆棧,用來存儲當(dāng)前累加器和地址寄存器的內(nèi)容、數(shù)據(jù)塊寄存器DB和DI的內(nèi)容、局域數(shù)據(jù)的指針、狀態(tài)字、MCR(主控繼電器)寄存器和B堆棧的指針。用戶程序使用的堆棧
當(dāng)調(diào)用功能塊(FB)時,會有以下事件發(fā)生:①調(diào)用塊的地址和返回位置存儲在塊堆棧中,調(diào)用塊的臨時變量壓入L堆棧;②數(shù)據(jù)塊DB寄存器內(nèi)容與DI寄存器內(nèi)容交換;③新的數(shù)據(jù)塊地址裝入DI寄存器;④被調(diào)用塊的實參裝入DB和L堆棧上部;⑤當(dāng)功能塊FB結(jié)束時,先前塊的現(xiàn)場信息從塊堆棧中彈出,臨時變量彈出L堆棧;⑥D(zhuǎn)B和DI寄存器內(nèi)容交換。當(dāng)調(diào)用功能塊(FB)時,STEP7并不一定要求給FB形參賦予實參,除非參數(shù)是復(fù)式數(shù)據(jù)類型的I/O形參或參數(shù)類型形參。如果沒有給FB的形參賦予實參,則功能塊(FB)就調(diào)用背景數(shù)據(jù)塊內(nèi)的數(shù)值,該數(shù)值是在功能塊(FB)的變量聲明表或背景數(shù)據(jù)塊內(nèi)為形參所設(shè)置初始數(shù)值。調(diào)用功能塊(FB)時的堆棧操作
當(dāng)調(diào)用功能(FC)時會有以下事件發(fā)生:功能(FC)實參的指針存到調(diào)用塊的L堆棧;調(diào)用塊的地址和返回位置存儲在塊堆棧,調(diào)用塊的局部數(shù)據(jù)壓入L堆棧;功能(FC)存儲臨時變量的L堆棧區(qū)被推入L堆棧上部;當(dāng)被調(diào)用功能(FC)結(jié)束時,先前塊的信息存儲在塊堆棧中,臨時變量彈出L堆棧。因為功能(FC)不用背景數(shù)據(jù)塊,不能分配初始數(shù)值給功能(FC)的局部數(shù)據(jù),所以必須給功能(FC)提供實參。調(diào)用功能(FC)時的堆棧操作
以功能(FC)調(diào)用為例,L堆棧操作示意如圖所示。調(diào)用功能(FC)時的堆棧操作
對邏輯塊編程時必須編輯下列三個部分:
變量聲明:分別定義形參、靜態(tài)變量和臨時變量(FC塊中不包括靜態(tài)變量);確定各變量的聲明類型(Decl.)、變量名(Name)和數(shù)據(jù)類型(DataType),還要為變量設(shè)置初始值(InitialValue)。如果需要還可為變量注釋(Comment)。在增量編程模式下,STEP7將自動產(chǎn)生局部變量地址(Address)。代碼段:對將要由PLC進行處理的塊代碼進行編程。
塊屬性:塊屬性包含了其它附加的信息,例如由系統(tǒng)輸入的時間標志或路徑。此外,也可輸入相關(guān)詳細資料?!?.3.2邏輯塊(FC和FB)的編程1.臨時變量的定義和使用2.查看局部數(shù)據(jù)堆棧的占用3.查看塊所需字節(jié)數(shù)4.定義形式參數(shù)
編寫邏輯塊(FC和FB)程序時,可以用以下兩種方式使用局部變量:①使用變量名,此時變量名前加前綴“#”,以區(qū)別于在符號表中定義的符號地址。增量方式下,前綴會自動產(chǎn)生。②直接使用局部變量的地址,這種方式只對背景數(shù)據(jù)塊和L堆棧有效。在調(diào)用FB塊時,要說明其背景數(shù)據(jù)塊。背景數(shù)據(jù)塊應(yīng)在調(diào)用前生成,其順序格式與變量聲明表必須保持一致。5.編寫控制程序
所謂無參功能(FC),是指在編輯功能(FC)時,在局部變量聲明表不進行形式參數(shù)的定義,在功能(FC)中直接使用絕對地址完成控制程序的編程。這種方式一般應(yīng)用于分部式結(jié)構(gòu)的程序編寫,每個功能(FC)實現(xiàn)整個控制任務(wù)的一部分,不重復(fù)調(diào)用?!?.4.1編輯無參功能(FC)§5.4.2在OB1中調(diào)用無參功能(FC)§5.4編輯并調(diào)用無參功能(FC)——分部程序設(shè)計【例5-4-1】
攪拌控制系統(tǒng)程序設(shè)計——使用開關(guān)量??刂普f明如圖所示為一攪拌控制系統(tǒng),由3個開關(guān)量液位傳感器,分別檢測液位的高、中和低?,F(xiàn)要求對A、B兩種液體原料按等比例混合,
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司煤調(diào)濕工技術(shù)考核試卷及答案
- 公司手工等離子切割工效率提升考核試卷及答案
- 2025年上海市閔行區(qū)莘莊實驗小學(xué)代課教師招聘考前自測高頻考點模擬試題附答案詳解(黃金題型)
- 公司羽絨羽毛充填處理工專業(yè)知識考核試卷及答案
- 公司拜耳法溶出工崗位操作規(guī)程考核試卷及答案
- 2025年河北承德圍場滿族蒙古族自治縣公開招聘社區(qū)工作者19名考前自測高頻考點模擬試題及一套完整答案詳解
- 公司糕點裝飾師安全生產(chǎn)月專項考核試卷及答案
- 公司燈具打樣工轉(zhuǎn)正考核試卷及答案
- 2025湖南岳陽市湘一南湖學(xué)校招聘技術(shù)教師模擬試卷及答案詳解(全優(yōu))
- 線束自動化設(shè)備選型與配置方案
- 中醫(yī)對高脂血癥認識與防治課件
- 2025-2030中國脫硝催化劑行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 水手船員考試題及答案
- GB/T 45356-2025無壓埋地排污、排水用聚丙烯(PP)管道系統(tǒng)
- 2025年共青團入團考試測試題庫及答案
- 眼內(nèi)炎的預(yù)防控制措施
- 2025年度化肥生產(chǎn)設(shè)備租賃與維護合同書
- 廣東學(xué)校安全條例課件
- 風(fēng)物志模板范文
- 廣西壯族自治區(qū)貴港市平南縣2024-2025學(xué)年九年級上學(xué)期11月期中化學(xué)試題
- 遼寧省名校聯(lián)盟2024-2025學(xué)年高三上學(xué)期10月聯(lián)考數(shù)學(xué)試卷
評論
0/150
提交評論