S7-300程序結(jié)構(gòu)與程序設(shè)計.ppt
第5章S7-300程序結(jié)構(gòu)與程序設(shè)計,電氣控制技術(shù)與PLC應(yīng)用,2,5.1S7-300CPU中的程序S7-300CPU程序分操作系統(tǒng)和用戶程序:操作系統(tǒng):由PLC的生產(chǎn)廠家提供,完成PLC起動、刷新、調(diào)用用戶程序、中斷/診斷/通信處理等任務(wù)。用戶程序:用戶為完成特定的任務(wù)而編寫的應(yīng)用程序,由STEP7編寫,編譯后下載到PLC的CPU中。,第5章S7-300程序結(jié)構(gòu)與程序設(shè)計,3,5.1.1用戶程序中的塊STEP7用文件塊的形式管理用戶編寫的程序及程序運(yùn)行所需的數(shù)據(jù),組成結(jié)構(gòu)化的用戶程序。結(jié)構(gòu)化編程可使程序組織明確、結(jié)構(gòu)清晰、易于閱讀和修改。STEP7用戶程序塊:組織塊(OB)功能塊(FB)功能(FC)數(shù)據(jù)塊(DB),4,1.組織塊OBOB1是主程序循環(huán)塊,在任何情況下都必須存在。OB100OB102用于系統(tǒng)初始化只上電執(zhí)行一次。OB10OB17用于日期時間中斷CPU屬性設(shè)置。OB30OB38用于循環(huán)中斷CPU屬性設(shè)置。,OB10.17日期時間中斷,OB80.87異步錯誤,OB20.23延時中斷,定期的程序執(zhí)行,OB30.38循環(huán)中斷,事件驅(qū)動的程序執(zhí)行,OB40.47硬件中斷,OB121,122同步錯誤,5,2.功能塊FB和功能FCFB、FC是用戶“子程序”;FB帶“記憶”功能,數(shù)據(jù)記憶在FB帶有的背景數(shù)據(jù)塊DB(InstanceDataBlock)中;在FB塊結(jié)束時數(shù)據(jù)繼續(xù)保持,即被“記憶”。功能FC不帶“記憶”,沒有背景數(shù)據(jù)塊。3.系統(tǒng)功能塊SFB和系統(tǒng)功能SFCSFB和SFC集成在S7功能程序庫中;用戶可以直接調(diào)用,但不能修改。,6,4.數(shù)據(jù)塊DBDB是用戶定義的用于存取數(shù)據(jù)的存儲區(qū),可以被打開或關(guān)閉。DB可以是某個FB的背景數(shù)據(jù)塊;也可以是通用的全局?jǐn)?shù)據(jù)塊,用于FB或FC的數(shù)據(jù)存儲。數(shù)據(jù)塊分類:全局(共享)數(shù)據(jù)塊背景數(shù)據(jù)塊用戶定義數(shù)據(jù)塊。,7,8,5.FC和FB的區(qū)別FB帶自己的存儲區(qū)(背景數(shù)據(jù)塊);FC不帶存儲區(qū);調(diào)用FB可以通過背景數(shù)據(jù)塊傳遞參數(shù),因此必須指定一背景數(shù)據(jù)塊;調(diào)用FC必須通過實參和形參互傳參數(shù)。,9,塊調(diào)用的分層結(jié)構(gòu),STEP7的塊,11,5.1.2用戶程序設(shè)計方法:1.線性化編程把用戶程序全部放置在一個循環(huán)程序塊(OB1)中,塊中的程序按順序逐條執(zhí)行;CPU通過反復(fù)執(zhí)行OB1來實現(xiàn)自動化控制任務(wù)。這種結(jié)構(gòu)和PLC所代替的硬接線繼電器控制類似。2.模塊化編程(分部式)把整個程序按任務(wù)分成若干個部分,并分別放置在不同的功能(FC)、功能塊(FB)及組織塊中;在一個塊中可以進(jìn)一步分解成段。在組織塊OB1中包含按順序調(diào)用這些塊的指令,并控制程序執(zhí)行。,12,3.結(jié)構(gòu)化編程根據(jù)控制任務(wù),把過程要求類似或相關(guān)的功能進(jìn)行分類,分割為幾個通用的小任務(wù),這些小任務(wù)用相應(yīng)的程序段表示,稱為塊(FC或FB)。OB1通過調(diào)用這些程序塊來完成自動化控制任務(wù)。特點:每個塊(FC或FB)在OB1中可能會被多次調(diào)用,以完成相同工藝要求但不同參數(shù)的控制對象。簡化程序設(shè)計過程、減小代碼長度、提高編程效率。適合較復(fù)雜的自動化控制任務(wù)的設(shè)計。,13,5.2數(shù)據(jù)塊中的數(shù)據(jù)存儲5.2.1數(shù)據(jù)存儲區(qū)數(shù)據(jù)以變量形式存儲,且具唯一。數(shù)據(jù)可以存儲在PII、PIQ、M、L堆棧和DB中。數(shù)據(jù)可以基本數(shù)據(jù)類型、復(fù)雜數(shù)據(jù)類型或參數(shù)類型。全局變量符號表或共享數(shù)據(jù)塊中聲明的變量。局部變量OB、FC和FB的變量聲明表中的變量。,14,5.2.2數(shù)據(jù)塊1.數(shù)據(jù)塊的分類符號表:只為方便程序閱讀,用于給變量設(shè)定名稱;符號表中變量為全局變量,可在程序所有地方使用。全局(共享)數(shù)據(jù)塊:存儲全局?jǐn)?shù)據(jù),所有邏輯塊(OB、FC、FB)都可以訪問共享數(shù)據(jù)塊的數(shù)據(jù)。背景數(shù)據(jù)塊:私有存儲器區(qū),只用作FB的存儲器。背景數(shù)據(jù)塊中包含了FB的參數(shù)和靜態(tài)變量。背景數(shù)據(jù)塊由編輯器生成,不能由用戶編輯。用戶定義數(shù)據(jù)塊:以UDT為模板所生成的數(shù)據(jù)塊。,15,2.數(shù)據(jù)塊寄存器CPU有兩個數(shù)據(jù)塊寄存器:DB(共享數(shù)據(jù)塊):DBX、DBB、DBW、DBDDI(背景數(shù)據(jù)塊):DIX、DIB、DIW、DID可以同時被打開。,16,5.2.3數(shù)據(jù)塊的數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)塊中含有不同數(shù)據(jù)類型的數(shù)據(jù);在STEP7數(shù)據(jù)塊中的數(shù)據(jù)包括:基本數(shù)據(jù)類型復(fù)雜數(shù)據(jù)類型用戶定義數(shù)據(jù)類型(UDT),17,5.2.4建立數(shù)據(jù)塊STEP7中,只要使用數(shù)據(jù)塊就必須先建立數(shù)據(jù)塊,并在塊中定義變量。數(shù)據(jù)塊定義:變量名、數(shù)據(jù)類型以及初始值等。數(shù)據(jù)塊中變量的順序及類型決定了數(shù)據(jù)塊的數(shù)據(jù)結(jié)構(gòu),變量的數(shù)量決定了數(shù)據(jù)塊的大小。說明:數(shù)據(jù)塊建好后,必須同程序塊一起下載到CPU中才能被程序訪問,否則CPU進(jìn)入STOP狀態(tài)。,18,方法1:用SIMATICManager創(chuàng)建數(shù)據(jù)塊。,19,方法2:用S7程序編輯器創(chuàng)建數(shù)據(jù)塊。,20,新建DB類型選擇窗口,21,編輯共享數(shù)據(jù)塊(變量定義),22,5.2.5訪問數(shù)據(jù)塊用戶程序有多個數(shù)據(jù)塊,在訪問數(shù)據(jù)塊時,必須指明數(shù)據(jù)塊的編號、數(shù)據(jù)類型與位置。如果訪問不存在的數(shù)據(jù)單元或數(shù)據(jù)塊,又沒有編寫錯誤處理OB塊,CPU將進(jìn)入STOP模式。,23,數(shù)據(jù)塊的尋址,24,1.打開數(shù)據(jù)塊然后訪問數(shù)據(jù)可用裝入L或傳送T指令訪問已經(jīng)打開的DB塊?!纠?-2-2】打開并訪問共享數(shù)據(jù)塊。,25,【例5-2-3】打開并訪問背景數(shù)據(jù)塊。,26,2.直接訪問數(shù)據(jù)塊指令中直接給出數(shù)據(jù)塊的編號和數(shù)據(jù)在數(shù)據(jù)塊中的地址。可以用絕對地址,也可用符號地址直接訪問數(shù)據(jù)塊。用絕對地址直接訪問數(shù)據(jù)塊:,用符號地址直接訪問數(shù)據(jù)塊:,27,5.3邏輯塊(FC和FB)的結(jié)構(gòu)及編程邏輯塊FC、FB和OB。FB:帶有背景數(shù)據(jù)塊,其數(shù)據(jù)結(jié)構(gòu)與該FB參數(shù)相同。FB調(diào)用結(jié)束后數(shù)據(jù)保存在背景數(shù)據(jù)塊中。FC:不帶背景數(shù)據(jù)塊,F(xiàn)C調(diào)用結(jié)束后數(shù)據(jù)不保存。OB:由操作系統(tǒng)直接調(diào)用。,28,5.3.1邏輯塊(FC和FB)的結(jié)構(gòu)邏輯塊由變量聲明表、代碼段及其屬性等部分組成。,29,FB的變量聲明表,FC的變量聲明表,30,1.局部變量聲明表邏輯塊上部都有變量聲明表局部變量聲明表。,局部數(shù)據(jù)分為參數(shù)和局部變量。局部變量包括靜態(tài)變量和臨時變量。,31,數(shù)據(jù)塊數(shù)據(jù)的存儲:FB:帶有背景數(shù)據(jù)塊,內(nèi)部包含參數(shù)變量,F(xiàn)B的運(yùn)行結(jié)果保存在背景數(shù)據(jù)塊中。在調(diào)用FB時,若沒有提供實參,則功能塊使用背景數(shù)據(jù)塊中的數(shù)值。FC:不帶背景數(shù)據(jù)塊,不能使用靜態(tài)變量。在調(diào)用FC時,必須使用實參。OB:調(diào)用OB由操作系統(tǒng)管理的,用戶不能參與。,32,2.邏輯塊局部變量的數(shù)據(jù)類型基本數(shù)據(jù)類型、復(fù)式數(shù)據(jù)類型、參數(shù)類型。參數(shù)類型包括定時器、計數(shù)器、塊的地址或指針等。,33,局部變量的設(shè)置如下:,34,5.3.2邏輯塊(FC和FB)的編程對邏輯塊編程時必須編輯下列三個部分:變量聲明:定義形參、靜態(tài)變量(FC沒有)和臨時變量;選擇變量名(Name)、數(shù)據(jù)類型(DataType);如果需要,設(shè)置變量初始值(InitialValue)、加注釋(Comment)。局部變量的地址(Address)由STEP7自動產(chǎn)生。代碼段:用不同編程語言對PLC進(jìn)行編程。塊屬性:塊屬性包含一些附加信息。,35,1.臨時變量的定義和使用,36,2.形式參數(shù)的定義形式參數(shù)有3種:IN:只讀,輸入OUT:只寫,輸出IN_OUT:讀/寫,輸入/輸出,37,38,3.編寫控制程序編寫邏輯塊(FC和FB)程序時,可以用以下兩種方式使用局部變量:使用變量名:變量名前加前綴“#”。使用局部變量的地址,只適用于背景數(shù)據(jù)塊。在調(diào)用FB塊時,要指定背景數(shù)據(jù)塊。,39,梯形圖編程的基本規(guī)則觸點只能與左母線相連,不能與右母線相連;線圈只能與右母線相連,不能直接與左母線相連,右母線可以省略;線圈可以并聯(lián),不能串聯(lián)連接;指令執(zhí)行順序:從左到右,從上到下。,