版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Date:5/9/2020Page:
1Date:5/9/2020第5章
S7程序結(jié)構(gòu)與程序設(shè)計§5.1§5.2§5.3§5.4§5.5§5.6§5.7§5.8§5.9S7
CPU中的程序數(shù)據(jù)塊中的數(shù)據(jù)存儲邏輯塊(FC和FB)的結(jié)構(gòu)及編程編輯并調(diào)用無參功能(FC)——分部程序設(shè)計編
輯并調(diào)用有參功能(FC)——結(jié)構(gòu)化程序設(shè)計編輯并調(diào)用無靜態(tài)參數(shù)的功能塊(FB)編輯并調(diào)用有靜態(tài)參數(shù)的功能塊(FB)
使用多重背景——結(jié)構(gòu)化程序設(shè)計思考與練習(xí)Page:
1返回首頁Date:5/9/2020§5.1
S7
CPU中的程序§5.1.1
用戶程序中的塊結(jié)構(gòu)§5.1.2
用戶程序結(jié)構(gòu)§5.1.3
I/O過程映像§5.1.4
程序循環(huán)執(zhí)行Page:
1返回本章Date:5/9/2020Page:
1§5.1.1用戶程序中的塊結(jié)構(gòu)返回本節(jié)Date:5/9/2020§5.1.2
用戶程序結(jié)構(gòu)√線性程序(線性編程)√分部式程序(分部編程、分塊編程)√結(jié)構(gòu)化程序(結(jié)構(gòu)化編程或模塊化編程)Page:
1返回本節(jié)1.線性程序(線性編程)Date:5/9/2020Page:
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.分部式程序(分部編程、分塊編程)Date:5/9/2020Page:
1返回上級所謂分部程序,就是將整個程序按任務(wù)分成若干個部分,并分別放置在不同的功能(FC)、功能塊(FB)及組織塊中,在一個塊中可以進(jìn)一步分解成段。在組織塊OB1中包含按順序調(diào)用其他塊的指令,并控制程序執(zhí)行。在分部程序中,既無數(shù)據(jù)交換,也不存在重復(fù)利用的程序代碼。功能(FC)和功能塊(FB)不傳遞也不接收參數(shù),分部程序結(jié)構(gòu)的編程效率比線性程序有所提高,程序測試也較方便,對程序員的要求也不太高。對不太復(fù)雜的控制程序可考慮采用這種程序結(jié)構(gòu)。3.
結(jié)構(gòu)化程序(結(jié)構(gòu)化編程或模塊化編程)Date:5/9/2020Page:
1返回上級所謂結(jié)構(gòu)化程序,就是處理復(fù)雜自動化控制任務(wù)的過程中,為了使任務(wù)更易于控制,常把過程要求類似或相關(guān)的功能進(jì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è)計。Date:5/9/2020Page:
1§5.1.3I/O過程映像返回本節(jié)Date:5/9/2020§5.1.4程序循環(huán)執(zhí)行Page:
1返回本節(jié)Date:5/9/2020§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ù)塊Page:
1返回本章§5.2.1
數(shù)據(jù)存儲區(qū)Date:5/9/2020Page:
1返回本節(jié)數(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)中?!?.2.2
數(shù)據(jù)塊Date:5/9/2020Page:
1返回本節(jié)數(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ù)塊又稱全局?jǐn)?shù)據(jù)塊。用于存儲全局?jǐn)?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/FBD
S7程序編輯器內(nèi)定義。Date:5/9/2020Page:
1返回上級2.數(shù)據(jù)塊寄存器Date:5/9/2020Page:
1返回上級CPU有兩個數(shù)據(jù)塊寄存器:DB和DI寄存器。這樣,可以同時打開兩個數(shù)據(jù)塊。§5.2.3
數(shù)據(jù)塊的數(shù)據(jù)結(jié)構(gòu)Date:5/9/2020Page:
1返回本節(jié)在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ù)字?jǐn)?shù)據(jù)類型:INT、DINT、REAL√定時器類型:S5TIME、TIME、DATE、TIME_OF_DAYDate:5/9/2020Page:
1返回上級復(fù)雜數(shù)據(jù)類型復(fù)雜數(shù)據(jù)類型只能結(jié)合共享數(shù)據(jù)塊的變量聲明使用。復(fù)雜數(shù)據(jù)類型可大于32位,用裝入指令不能把復(fù)雜數(shù)據(jù)類型完全裝入累加器,一般利用庫中的標(biāo)準(zhǔn)塊(“IEC”S7程序)處理復(fù)雜數(shù)據(jù)類型。復(fù)雜數(shù)據(jù)類型包括:√時間(DATE_AND_TIME)類型√矩陣(ARRAY)類型√結(jié)構(gòu)(STRUCT)類型√字符串(STRING)類型Date:5/9/2020Page:
1返回上級用戶定義數(shù)據(jù)類型(UDT)STEP
7允許利用數(shù)據(jù)塊編輯器,將基本數(shù)據(jù)類型和復(fù)雜數(shù)據(jù)類型組合成長度大于32位用戶定義數(shù)據(jù)類型(UDT:User-Defined
dataType)。用戶定義數(shù)據(jù)類型不能存儲在PLC中,只能存放在硬盤上的UDT塊中??梢杂糜脩舳x數(shù)據(jù)類型作“模板”建立數(shù)據(jù)塊,以節(jié)省錄入時間??捎糜诮⒔Y(jié)構(gòu)化數(shù)據(jù)塊、建立包含幾個相同單元的矩陣、在帶有給定結(jié)構(gòu)的FC和FB中建立局部變量。Date:5/9/2020Page:
1返回上級【5-2-1】創(chuàng)建用戶定義數(shù)據(jù)類型:UDT1。創(chuàng)建一個名稱為UDT1的用戶定義數(shù)據(jù)類型,數(shù)據(jù)結(jié)構(gòu)如下,則可按以下幾個步驟完成。Date:5/9/2020Page:
1返回上級【5-2-1】創(chuàng)建用戶定義數(shù)據(jù)類型Date:5/9/2020Page:
1返回上級【5-2-1】編輯UDT1Date:5/9/2020Page:
1返回上級§5.2.4
建立數(shù)據(jù)塊Date:5/9/2020Page:
1返回本節(jié)在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ù)塊。Date:5/9/2020Page:
1返回上級方法2:用LAD/STL/FBDS7程序編輯器創(chuàng)建數(shù)據(jù)塊。Date:5/9/2020Page:
1返回上級新DB類型選擇窗口Date:5/9/2020Page:
1返回上級編輯數(shù)據(jù)塊(變量定義)變量定義完成后,應(yīng)單擊保存按鈕保存并編譯(測試)。如果沒有錯誤則需要單擊下載按鈕,像邏輯塊一樣,將數(shù)據(jù)塊下載到CPU。Date:5/9/2020Page:
1返回上級Date:5/9/2020§5.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將進(jìn)入STOP模式?!虒ぶ窋?shù)據(jù)塊√訪問數(shù)據(jù)塊√直接訪問數(shù)據(jù)塊Page:
1返回本節(jié)尋址數(shù)據(jù)塊Date:5/9/2020Page:
1返回上級訪問數(shù)據(jù)塊在STEP7中可以采用傳統(tǒng)訪問方式,即先打開后訪問;也可以采用完全表示的直接訪問方式?!纠?-2-2】
打開并訪問共享數(shù)據(jù)塊。Date:5/9/2020Page:
1返回上級訪問數(shù)據(jù)塊用指令“OPN
DB...”打開共享數(shù)據(jù)塊(自動關(guān)閉之前打開的共享數(shù)據(jù)塊),如果DB已經(jīng)打開,則可用裝入(L)或傳送(T)指令訪問數(shù)據(jù)塊?!纠?-2-3】
打開并訪問背景數(shù)據(jù)塊。Date:5/9/2020Page:
1返回上級直接訪問數(shù)據(jù)塊所謂直接訪問數(shù)據(jù)塊,就是在指令中同時給出數(shù)據(jù)塊的編號和數(shù)據(jù)在數(shù)據(jù)塊中的地址??梢杂媒^對地址,也可以用符號地址直接訪問數(shù)據(jù)塊。用絕對地址直接訪問數(shù)據(jù)塊,如:用符號地址直接訪問數(shù)據(jù)塊,如:Date:5/9/2020Page:
1返回上級Date:
5/9/2020功能(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)用的邏輯塊?!獭?.3.1
邏輯塊(FC和FB)的結(jié)構(gòu)√§5.3.1
邏輯塊(FC和FB)的編程§5.3
邏輯塊(FC和FB)的結(jié)構(gòu)及編程Page:
1返回本章Date:5/9/2020邏輯塊(OB、FB、FC)由變量聲明表、代碼段及其屬性等幾部分組成?!叹植孔兞柯暶鞅恚ň植繑?shù)據(jù))√邏輯塊局部變量的數(shù)據(jù)類型√邏輯塊的調(diào)用過程及內(nèi)存分配§5.3.1
邏輯塊(FC和FB)的結(jié)構(gòu)Page:
1返回本節(jié)1.局部變量聲明表每個邏輯塊前部都有一個變量聲明表,稱為局部變量聲明表。局部數(shù)據(jù)分為參數(shù)和局部變量兩大類,局部變量又包括靜態(tài)變量和臨時變量(暫態(tài)變量)兩種。Date:5/9/2020Page:
1返回上級對于功能塊(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堆棧中的臨時變量。Date:5/9/2020Page:
1返回上級2.邏輯塊局部變量的數(shù)據(jù)類型局部變量可以是基本數(shù)據(jù)類型或復(fù)式數(shù)據(jù)類型,也可以是專門用于參數(shù)傳遞的所謂的“參數(shù)類型”。參數(shù)類型包括定時器、計數(shù)器、塊的地址或指針等。Date:5/9/2020Page:
1返回上級CPU提供塊堆棧(B堆棧)來存儲與處理被中斷塊的有關(guān)信息。3.邏輯塊的調(diào)用過程及內(nèi)存分配Date:5/9/2020Page:
1返回上級用戶程序使用的堆棧局部數(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堆棧的指針。Date:5/9/2020Page:
1返回上級調(diào)用功能塊(FB)時的堆棧操作當(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ù)值。Date:5/9/2020Page:
1返回上級調(diào)用功能(FC)時的堆棧操作當(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)提供實參。Date:5/9/2020Page:
1返回上級以功能(FC)調(diào)用為例,L堆棧操作示意如圖所示。調(diào)用功能(FC)時的堆棧操作Date:5/9/2020Page:
1返回上級§5.3.2
邏輯塊(FC和FB)的編程對邏輯塊編程時必須編輯下列三個部分:變量聲明:分別定義形參、靜態(tài)變量和臨時變量(FC塊中不包括靜態(tài)變量);確定各變量的聲明類型(Decl.)、變量名(Name)和數(shù)據(jù)類型(DataType),還要為變量設(shè)置初始值(Initial
Value)。如果需要還可為變量注釋(Comment)。在增量編程模式下,STEP7將自動產(chǎn)生局部變量地址(Address)。代碼段:對將要由PLC進(jìn)行處理的塊代碼進(jìn)行編程。
塊屬性:塊屬性包含了其它附加的信息,例如由系統(tǒng)輸入的時間標(biāo)志或路徑。此外,也可輸入相關(guān)詳細(xì)資料。Date:5/9/2020Page:
1返回本節(jié)1.臨時變量的定義和使用Date:5/9/2020Page:
1返回上級2.查看局部數(shù)據(jù)堆棧的占用Date:5/9/2020Page:
1返回上級3.查看塊所需字節(jié)數(shù)Date:5/9/2020Page:
1返回上級4.定義形式參數(shù)Date:5/9/2020Page:
1返回上級5.編寫控制程序編寫邏輯塊(FC和FB)程序時,可以用以下兩種方式使用局部變量:①使用變量名,此時變量名前加前綴“#”,以區(qū)別于在符號表中定義的符號地址。增量方式下,前綴會自動產(chǎn)生。②直接使用局部變量的地址,這種方式只對背景數(shù)據(jù)塊和L堆棧有效。在調(diào)用FB塊時,要說明其背景數(shù)據(jù)塊。背景數(shù)據(jù)塊應(yīng)在調(diào)用前生成,其順序格式與變量聲明表必須保持一致。Date:5/9/2020Page:
1返回上級所謂無參功能(FC),是指在編輯功能(FC)時,在局部變量聲明表不進(jìn)行形式參數(shù)的定義,在功能(FC)中直接使用絕對地址完成控制程序的編程。這種方式一般應(yīng)用于分部式結(jié)構(gòu)的程序編寫,每個功能(FC)實現(xiàn)整個控制任務(wù)的一部分,不重復(fù)調(diào)用。§5.4.1
編輯無參功能(FC)§5.4.2
在OB1中調(diào)用無參功能(FC)Date:5/9/2020Page:
1返回本章§5.4編輯并調(diào)用無參功能(FC)——分部程序設(shè)計【例5-4-1】攪拌控制系統(tǒng)程序設(shè)計——使用開關(guān)量。Date:5/9/2020Page:
1返回本節(jié)控制說明如圖所示為一攪拌控制系統(tǒng),由3個開關(guān)量液位傳感器,分別檢測液位的高、中和低。現(xiàn)要求對A、B兩種液體原料按等比例混合,請編寫控制程序。要求:按起動按鈕后系統(tǒng)自動運行,首先打開進(jìn)料泵1,開始加入液料A→中液位傳感器動作后,則關(guān)閉進(jìn)料泵1,打開進(jìn)料泵2,開始加入液料B→高液位傳感器動作后,關(guān)閉進(jìn)料泵2,起動攪拌器→攪拌10s后,關(guān)閉攪拌器,開啟放料泵→當(dāng)?shù)鸵何粋鞲衅鲃幼骱?,延時5s后關(guān)閉放料泵。按停止按鈕,系統(tǒng)應(yīng)立即停止運行。Date:5/9/2020Page:
1返回上級創(chuàng)建S7項目按照第3章所介紹的方法,創(chuàng)建S7項目,并命名為“無參FC”,項目包含組織塊OB1和OB100。硬件配置在“無參FC”項目內(nèi)打開“SIMATIC300Station”文件夾,打開硬件配置窗口,并完成硬件配置?!?.4.1
編輯無參功能(FC)Date:5/9/2020Page:
1返回本節(jié)3.編輯符號表Date:5/9/2020Page:
1返回上級4.規(guī)劃程序結(jié)構(gòu)Date:5/9/2020Page:
1返回上級5.編輯功能(FC
)在“無參FC”項目內(nèi)選擇“Blocks”文件夾,然后反復(fù)執(zhí)行菜單命令【Insert】→【S7Block】→【Function】,分別創(chuàng)建4個功能(FC):FC1、FC2、FC3和FC4。由于在符號表內(nèi)已經(jīng)為FC1~FC4定義了符號名,因此在創(chuàng)建FC的屬性對話框內(nèi)系統(tǒng)會自動添加符號名。√FC1控制程序√FC2控制程序√FC3控制程序√FC4控制程序√OB100控制程序Date:5/9/2020Page:
1返回上級FC1的控制程序FC2的控制程序Date:5/9/2020Page:
1返回上級FC3的控制程序Date:5/9/2020Page:
1返回上級FC4的控制程序Date:5/9/2020Page:
1返回上級OB100的控制程 序Date:5/9/2020Page:
1返回上級§5.4.2Date:5/9/2020Page:
1返回本節(jié)在OB1中調(diào)用無參功能(FC)OB1的控制程序Date:5/9/2020Page:
1返回上級所謂有參功能(FC),是指編輯功能(FC)時,在局部變量聲明表內(nèi)定義了形式參數(shù),在功能(FC)中使用了虛擬的符號地址完成控制程序的編程,以便在其他塊中能重復(fù)調(diào)用有參功能(FC)。這種方式一般應(yīng)用于結(jié)構(gòu)化程序編寫?!?.5.1
編輯有參功能(FC)§5.5.2
在OB1中調(diào)用有參功能(FC)Date:5/9/2020Page:
1返回本章§5.5編輯并調(diào)用有參功能(FC)——結(jié)構(gòu)化程序設(shè)計【例5-5-1】
多級分頻器控制程序設(shè)計。本例擬在功能FC1中編寫二分頻器控制程序,然后在OB1中通過調(diào)用FC1實現(xiàn)多級分頻器的功能。多級分頻器的時序關(guān)系如圖所示。其中I0.0為多級分頻器的脈沖輸入端;Q4.0~Q4.3分別為2、4、8、16分頻的脈沖輸出端;Q4.4~Q4.7分別為2、4、8、16分頻指示燈驅(qū)動輸出端。Date:5/9/2020Page:
1返回本節(jié)§5.5.1
編輯有參功能(FC)Date:5/9/2020Page:
1返回本節(jié)創(chuàng)建多級分頻器的S7項目硬件配置編寫符號表規(guī)劃程序結(jié)構(gòu)創(chuàng)建有參功能FC1創(chuàng)建多級分頻器的S7項目使用菜單【File】→【“New
Project”Wizard】創(chuàng)建多級分頻器的S7項目,并命名為“有參FC”。硬件配置打開“SIMATIC
300
Station”文件夾,雙擊硬件配置圖標(biāo)標(biāo)打打開開硬硬件件配配置置窗窗口口,,并并按按圖圖所所示示完完成成硬硬件件配配置置。。Date:5/9/2020Page:
1返回上級3.編寫符號表Date:5/9/2020Page:
1返回上級4.規(guī)劃程序結(jié)構(gòu)Date:5/9/2020Page:
1返回上級5.創(chuàng)建有參FC1選擇“有參FC”項目的“Blocks”文件夾,然后執(zhí)行菜單命令【Insert】→【S7Block】→【Function】,在塊文件夾內(nèi)創(chuàng)建一個功能,并命名為“FC1”。編輯FC1的變量聲明表在在FFCC11的的變變量量聲聲明明表表內(nèi)內(nèi),,聲聲明明44個個參參數(shù)數(shù),,見見下下表表。。Date:5/9/2020Page:
1返回上級編輯FC1的控制程序二分頻器的時序如圖所示。分析二分頻器的時序圖可以看到,輸入信號每出現(xiàn)一個上升沿,輸出便改變一次狀態(tài),據(jù)此可采用上跳沿檢測指令實現(xiàn)。如果輸入信號S_IN出現(xiàn)上升沿,則對S_OUT取反,然后將S_OUT的信號狀態(tài)送LED顯示;否則,程序直接跳轉(zhuǎn)到LP1,將S_OUT的信號狀態(tài)送LED顯示。Date:5/9/2020Page:
1返回上級FC1的控制程序Date:5/9/2020Page:
1返回上級Date:5/9/2020§5.5.2在OB1中調(diào)用有參功能(FC)使用絕對地址使用符號地址Page:
1返回本節(jié)Date:5/9/2020功能塊(FB)在程序的體系結(jié)構(gòu)中位于組織塊之下。它包含程序的一部分,這部分程序在OB1中可以多次調(diào)用。功能塊的所有形參和靜態(tài)數(shù)據(jù)都存儲在一個單獨的、被指定給該功能塊的數(shù)據(jù)塊(DB)中,該數(shù)據(jù)塊被稱為背景數(shù)據(jù)塊。當(dāng)調(diào)用FB時,該背景數(shù)據(jù)塊會自動打開,實際參數(shù)的值被存儲在背景數(shù)據(jù)塊中;當(dāng)塊退出時,背景數(shù)據(jù)塊中的數(shù)據(jù)仍然保持?!?.6.1
編輯無靜態(tài)參數(shù)的功能塊(FB)§5.6.2
在OB1中調(diào)用無靜態(tài)參數(shù)的功能塊(FB)§5.6
編輯無靜參的功能塊(FB
)Page:
1返回本章Date:5/9/2020【例5-6-1】水箱水位控制系統(tǒng)程序設(shè)計。Page:
1返回本節(jié)Date:
5/9/2020【例5-6-1】系統(tǒng)有3個貯水箱,每個水箱有2個液位傳感器,UH1,UH2,UH3為高液位傳感器,“1”有效;UL1,UL2,UL3為低液位傳感器,“0”有效。Y1、Y3、Y5分別為3個貯水水箱進(jìn)水電磁閥;Y2、Y4、Y6分別為3個貯水水箱放水電磁閥。SB1、SB3、SB5分別為3個貯水水箱放水電磁閥手動開啟按鈕;SB2、SB4、SB6分別為3個貯水箱放水電磁閥手動關(guān)閉按鈕。控制要求:SB1、SB3、SB5在PLC外部操作設(shè)定,通過人為的方式,按隨機的順序?qū)⑺浞趴?。只要檢測到水箱“空”的信號,系統(tǒng)就自動地向水箱注水,直到檢測到水箱“滿”信號為止。水箱注水的順序要與水箱放空的順序相同,每次只能對一個水箱進(jìn)行注水操作。Page:
1返回上級Date:5/9/2020§5.6.1
編輯無靜態(tài)參數(shù)的功能塊(FB)創(chuàng)建S7項目硬件配置編寫符號表規(guī)劃程序結(jié)構(gòu)編輯功能塊(FB)建立背景數(shù)據(jù)塊(DI)編輯啟動組織塊OB100Page:
1返回本節(jié)創(chuàng)建S7項目使用菜單【File】→【“NewProject”Wizard】創(chuàng)建水箱水位控制系統(tǒng)的S7項目,并命名為“無靜參FB”。項目包含組織塊OB1和OB100。硬件配置在“無靜參FB”項目內(nèi)打開“SIMATIC300Station”文件夾,打開硬件配置窗口,并按圖所示完成硬件配置。Date:5/9/2020Page:
1返回上級3.編寫符號表Date:5/9/2020Page:
1返回上級4.規(guī)劃程序結(jié)構(gòu)Date:5/9/2020Page:
1返回上級5.編輯功能(FB1)Date:5/9/2020Page:
1返回上級在“無靜參FB”項目內(nèi)選擇“Blocks”文件夾,執(zhí)行菜單命令【Insert】→【S7Block】→【FunctionBlock】,創(chuàng)建功能塊FB1。由于在符號表內(nèi)已經(jīng)為FB1定義了符號名,因此在FB1的屬性對話框內(nèi)系統(tǒng)會自動添加符號名“水箱控制”?!潭x局部變量聲明表√編寫程序代碼定義局部變量聲明表與功能(FC)不同,在功能塊(FB)參數(shù)表內(nèi)還有擴展地址(Exclusion
address)和結(jié)束地址(Terminationaddress)選項。Date:5/9/2020Page:
1返回上級編寫程序代碼Date:5/9/2020Page:
1返回上級6.建立背景數(shù)據(jù)塊DB1、DB2、DB3Date:5/9/2020Page:
1返回上級7.編輯啟動組織塊OB100Date:5/9/2020Page:
1返回上級§5.6.2
在OB1中調(diào)用無靜態(tài)參數(shù)的功能塊(FB)Date:5/9/2020Page:
1返回本節(jié)OB1控制程 序Date:5/9/2020Page:
1返回上級【例5-6-2】Date:5/9/2020Page:
1返回上級攪拌控制系統(tǒng)程序設(shè)計——使用模擬量。上圖所示為一攪拌控制系統(tǒng),由一個模擬量液位傳感
器-變送器來檢測液位的高低,并進(jìn)行液位顯示?,F(xiàn)要求對A、B兩種液體原料按等比例混合,請編寫控制程序,控制要求如下:按起動按鈕后系統(tǒng)自動運行,首先打開進(jìn)料泵1,開始加入液料A→當(dāng)液位達(dá)到50%后,則關(guān)閉進(jìn)料泵1,打開進(jìn)料
泵2,開始加入液料B→當(dāng)液位達(dá)到100%后,則關(guān)閉進(jìn)料泵2,起動攪拌器→攪拌10s后,關(guān)閉攪拌器,開啟放料泵→當(dāng)液
料放空后,延時5s后關(guān)閉放料泵。按停止按鈕,系統(tǒng)應(yīng)立即停止運行。Date:5/9/2020Page:
1返回上級創(chuàng)建S7項目使用菜單【File】→【“New
Project”Wizard】創(chuàng)建攪拌控制系統(tǒng)的S7項目,并命名為“FC與FB”。硬件配置在“FC與FB”項目內(nèi)打開“SIMATIC
300
Station”文件夾,,打打開開硬硬件件配配置置窗窗口口,,并并按按圖圖下下完完成成硬硬件件配配置置。。Date:5/9/2020Page:
1返回上級修改模塊的模擬量輸入通道和輸出通道的起始地址均為256。Date:5/9/2020Page:
1返回上級3.編輯符號表Date:5/9/2020Page:
1返回上級4.規(guī)劃程序結(jié)構(gòu)OB1為主循環(huán)組織塊;OB100為啟動組織塊;FC1實現(xiàn)攪拌控制;FC2實現(xiàn)放料控制;FB1通過調(diào)用DB1和DB2實現(xiàn)液料A和液料B的進(jìn)料控制;DB1和DB2為液料A和液料B進(jìn)料控制的背景數(shù)據(jù)塊,在調(diào)用FB1時為FB1提供實際參數(shù),并保存過程結(jié)果。Date:5/9/2020Page:
1返回上級5.創(chuàng)建無參功能(FC1、FC2)(1/2)FC1控制程序Date:5/9/2020Page:
1返回上級5.創(chuàng)建無參功能(FC1、FC2)(2/2)Date:5/9/2020Page:
1返回上級FC2控制程序6.創(chuàng)建無靜態(tài)參數(shù)的功能塊(FB1
)定義FB1的局部變量聲明表編寫FB1控制程序Date:5/9/2020Page:
1返回上級7.建立背景數(shù)據(jù)塊(DB1、DB2)在“FC與FB”項目內(nèi)選擇“Blocks”文件夾,執(zhí)行菜單命令【Insert】→【S7Block】→【DataBlock】,創(chuàng)建與FB1相關(guān)聯(lián)的背景數(shù)據(jù)塊DB1和DB2。STEP7自動為DB1和DB2構(gòu)建?了了與與FFBB11完完全全相相同同的的數(shù)數(shù)據(jù)據(jù)結(jié)結(jié)構(gòu)構(gòu),,如如下下圖圖所所示示。。Date:5/9/2020Page:
1返回上級8.在OB1中調(diào)用FC1、FC2和FB1Date:5/9/2020Page:
1返回上級OB1的控制程序OB1的控制程序Date:5/9/2020Page:
1返回上級OB1的控制程序Date:5/9/2020Page:
1返回上級9.編寫啟動組織塊OB100的控制程序Date:5/9/2020Page:
1返回上級§5.7
編輯并調(diào)用有靜態(tài)參數(shù)的功能塊在編輯功能塊(FB)時,如果程序中需要特定數(shù)據(jù)的參數(shù),可以考慮將該特定數(shù)據(jù)定義為靜態(tài)參數(shù),并在FB的聲明表內(nèi)STAT處聲明。下面以交通信號燈控制系統(tǒng)的設(shè)計為例,介紹如何編輯和調(diào)用有靜態(tài)參數(shù)的功能塊?!?.7.1
編輯有靜態(tài)參數(shù)的功能塊(FB)§5.7.2
在OB1中調(diào)用有靜態(tài)參數(shù)的功能塊(FB)Date:5/9/2020Page:
1返回本章【例5-7-1】交通信號燈控制系統(tǒng)程序設(shè)計。Date:5/9/2020Page:
1返回本節(jié)上圖所示為雙干道交通信號燈設(shè)置示意圖。信號燈的動作受開關(guān)總體控制,按一下起動按鈕,信號燈系統(tǒng)開始工作,并周而復(fù)始地循環(huán)動作;按一下停止按鈕,所有信號燈都熄滅。信號燈控制的具體要求見下表,試編寫信號燈控制程序。Date:5/9/2020Page:
1返回上級根據(jù)十字路口交通信號燈的控制要求,可畫出信號燈的控制時序圖。Date:5/9/2020Page:
1返回上級§5.7.1
編輯有靜態(tài)參數(shù)的功能塊(FB)Date:5/9/2020Page:
1返回本節(jié)創(chuàng)建S7項目硬件配置編寫符號表規(guī)劃程序結(jié)構(gòu)編輯功能塊(FB)建立背景數(shù)據(jù)塊(DI)編輯啟動組織塊OB100創(chuàng)建S7項目使用菜單【File】→【“NewProject”Wizard】創(chuàng)建交通信號燈控制系統(tǒng)的S7項目,并命名為“有靜參FB”項目包含組織塊OB1和OB100。硬件配置在“有靜參FB”項目內(nèi)打開“SIMATIC
300
Station文文件件夾夾,,打打開開硬硬件件配配置置窗窗口口,,并并按按下下圖圖所所示示完完成成硬硬件件配配置置。。Date:5/9/2020Page:
1返回上級3.編寫符號表Date:5/9/2020Page:
1返回上級4.規(guī)劃程序結(jié)構(gòu)Date:5/9/2020Page:
1返回上級OB1為主循環(huán)組織塊、OB100初始化程序、FB1為單向紅綠燈
控制程序、DB1為東西數(shù)據(jù)塊、
DB2為南北數(shù)據(jù)塊。5.編輯功能塊(FB)Date:5/9/2020Page:
1返回上級定義局部變量聲明表編寫程序代碼Date:5/9/2020Page:
1返回上級6.建立背景數(shù)據(jù)塊(DI)由于在創(chuàng)建DB1和DB2之前,已經(jīng)完成了FB1的變量聲明,建立了相應(yīng)的數(shù)據(jù)結(jié)構(gòu),所以在創(chuàng)建與FB1相關(guān)聯(lián)的
DB1和DB2時,STEP
7自動完成了數(shù)據(jù)塊的數(shù)據(jù)結(jié)構(gòu)。Date:5/9/2020Page:
1返回上級7.編輯啟動組織塊OB100Date:5/9/2020Page:
1返回上級§5.7.2Date:5/9/2020Page:
1返回本節(jié)在OB1中調(diào)用有靜態(tài)參數(shù)的功能塊(FB)Date:§5.8
使用多重背景——結(jié)構(gòu)化程序設(shè)計使用多重背景可以有效地減少數(shù)據(jù)塊的數(shù)量,其編程思想是創(chuàng)建一個比FB1級別更高的功能塊,如FB10,將未作任何修改的FB1作為一個“局部背景”,在FB10中調(diào)用。對于FB1的每一個調(diào)用,都將數(shù)據(jù)存儲在FB10的背景數(shù)據(jù)塊DB10中?!?.8.1§5.8.2§5.8.3§5.8.4§5.8.5§5.8.65/9/2020創(chuàng)建多重背景的S7項目
編輯功能(FC)編輯共享數(shù)據(jù)塊
編輯功能塊(FB)生成多重背景數(shù)據(jù)塊DB10在OB1中調(diào)用功能(FC)及上層功能塊(FB)Page:
1返回本章Date:5/9/2020§5.8.1
創(chuàng)建多重背景的S7項目【例5-8-1】
發(fā)動機組控制系統(tǒng)設(shè)計——使用多重背景。設(shè)某發(fā)動機組由1臺汽油發(fā)動機和1臺柴油發(fā)動機組成,現(xiàn)要求用PLC控制發(fā)動機組,使各臺發(fā)動機的轉(zhuǎn)速穩(wěn)定在設(shè)定的速度上,并控制散熱風(fēng)扇的起動和延時關(guān)閉。每臺發(fā)動機均設(shè)置一個起動按鈕和一個停止按鈕。創(chuàng)建S7項目硬件配置編寫符號表規(guī)劃程序結(jié)構(gòu)Page:
1返回本節(jié)創(chuàng)建S7項目使用菜單【File】→【“NewProject”Wizard】創(chuàng)建發(fā)動機組控制系統(tǒng)的S7項目,并命名為“多重背景”。CPU選擇CPU
315-2DP,項目包含組織塊OB1。硬件配置在“多重背景”項目內(nèi)打開“SIMATIC300Station”文件夾,打開硬件配置窗口,并按下圖所示完成硬件配置。Date:5/9/2020Page:
1返回上級3.編輯符號表Date:5/9/2020Page:
1返回上級4.規(guī)劃程序結(jié)構(gòu)FB10為上層功能塊,它把FB1作為其“局部實例”,通過二次調(diào)用本地實例,分別實現(xiàn)對汽油機和柴油機的控制。這種調(diào)用不占用數(shù)據(jù)塊DB1和DB2,它將每次調(diào)用(對于每個調(diào)用實例)的數(shù)據(jù)存儲到體系的上層功能塊
FB10的背景數(shù)據(jù)塊DB10中。Date:5/9/2020Page:
1返回上級§5.8.2
編輯功能(FC)1.定義局部變量聲明表FC1用來實現(xiàn)發(fā)動機(汽油機或柴油機)的風(fēng)扇控制,按照控制要求,當(dāng)發(fā)動機起動時,風(fēng)扇應(yīng)立即起動;當(dāng)發(fā)動機停機后,風(fēng)扇應(yīng)延時關(guān)閉。因此FC1需要一個發(fā)動機起動信號、一個風(fēng)扇控制信號和一個延時定時器。Date:5/9/2020Page:
1返回本節(jié)2.編輯FC1的控制程序FC1所實現(xiàn)的控制要求:發(fā)動機起動時風(fēng)扇起動,當(dāng)發(fā)動機再次關(guān)閉后,風(fēng)扇繼續(xù)運行4s,然后停止。定時器采用斷電延時定時器,控制程序如下圖所示。Date:5/9/2020Page:
1返回上級§5.8.3
編輯共享數(shù)據(jù)塊共享數(shù)據(jù)塊DB3可為FB10保存發(fā)動機(汽油機和柴油機)的實際轉(zhuǎn)速,當(dāng)發(fā)動機轉(zhuǎn)速都達(dá)到預(yù)設(shè)速度時,還可以保存該狀態(tài)的標(biāo)志數(shù)據(jù)。Date:5/9/2020Page:
1返回本節(jié)§5.8.4
編輯功能塊(FB)Date:5/9/2020Page:
1返回本節(jié)在該系統(tǒng)的程序結(jié)構(gòu)內(nèi),有2個功能塊:FB1和FB10。FB1為底層功能塊,所以應(yīng)首先創(chuàng)建并編輯;FB10為上層功能塊,可以調(diào)用FB1。編輯底層功能塊FB1編輯上層功能塊FB101.編輯底層功能塊FB1在“多重背景”項目內(nèi)創(chuàng)建FB1,符號名“Engine”。定義功能塊FB1的變量聲明表Date:5/9/2020Page:
1返回上級編寫功能塊FB1的控制程序FB1主要實現(xiàn)發(fā)動機的起??刂萍八俣缺O(jiān)視功能,其控制程序如下圖所示。Date:5/9/2020Page:
1返回上級2.編輯上層功能塊FB10在“多重背景”項目內(nèi)創(chuàng)建FB10,符號名“Engines”。在FB10的屬性對話框內(nèi)激活“Multi-instance
capable”選項。Date:5/9/2020Page:
1返回上級定義功能塊FB10的變量聲明表要將FB1作為FB10的一個“局部背景”調(diào)用,需要在FB10的變量聲明表中為FB1的調(diào)用聲明不同名稱的靜態(tài)變量,數(shù)據(jù)類型為FB1(或使用符號名“Engine”)。Date:5/9/2020Page:
1返回上級編寫功能塊FB10的控制程序在變量聲明表內(nèi)完成FB1類型的局部實例:
“Petrol_Engine”和
“Diesel_Engine”的聲明以后,在程序元素目錄的“MultipleInstances”目錄中就會出現(xiàn)所聲明的多重實例,如圖所示。接下來可在FB10的代碼區(qū),調(diào)用FB1的“局部實例”。Date:5/9/2020Page:
1返回上級編寫功能塊FB10的控制程序調(diào)用FB1局部實例時,不再使用獨立的背景數(shù)據(jù)塊,F(xiàn)B1的實例數(shù)據(jù)位于FB10的實例數(shù)據(jù)塊DB10中。發(fā)動機的實際轉(zhuǎn)速可直接從共享數(shù)據(jù)塊中得到,如DB3.DBW2
(符號地址為,
S_Data".PE_Actual_Speed)。Date:5/9/2020Page:
1返回上級§5.8.5
生成多重背景數(shù)據(jù)塊DB10在“多重背景”項目內(nèi)創(chuàng)建一個與FB10相關(guān)聯(lián)的多重背景景數(shù)數(shù)據(jù)據(jù)塊塊DDBB1100,,符符號號名名““EEnnggiinnee__DDaattaa””。。Date:5/9/2020Page:
1返回本節(jié)§5.8.6在OB1中調(diào)用功能(FC)及上層
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《導(dǎo)醫(yī)工作流程》課件
- 單位管理制度集合大全【人員管理篇】
- 單位管理制度集粹選集【人事管理篇】
- 單位管理制度匯編大全【員工管理】
- 單位管理制度分享合集【職工管理】十篇
- 單位管理制度呈現(xiàn)大全【員工管理篇】十篇
- 《員工的激勵與考核》課件
- 《語文大自然的語言》課件
- 八年級下冊期末考試專項訓(xùn)練03 論述題30(答案及解析)
- 《標(biāo)準(zhǔn)的理解要點》課件
- ICD-10疾病編碼完整版
- 高頻焊接操作技術(shù)規(guī)范
- 環(huán)氧樹脂固化
- GB_T4897-2015刨花板(高清版)
- 公路工程竣工驗收辦法
- 畢業(yè)設(shè)計(論文)安徽汽車產(chǎn)業(yè)的現(xiàn)狀分析及發(fā)展戰(zhàn)略研究
- 帆軟BIFineBI技術(shù)白皮書
- 絞車斜巷提升能力計算及絞車選型核算方法
- 6_背景調(diào)查表
- 畢業(yè)設(shè)計(論文)礦泉水瓶吹塑模設(shè)計
- 在離退休老干部迎新春座談會上的講話(通用)
評論
0/150
提交評論