1、cpu中的程序
s7-300/400系列cpu 原則上運行兩個不同的程序:操作系統(tǒng)和用戶程序。
每個cpu都帶有集成的操作系統(tǒng),組織與特定控制任務(wù)無關(guān)的所有cpu功能和順序。操作系統(tǒng)任務(wù)包括下列各項:處理重啟(熱啟動)和熱重啟;更新輸入的過程映像表,并輸出輸出過程映像表;調(diào)用用戶程序;采集中斷信息,調(diào)用中斷ob;識別錯誤并進行錯誤處理;管理內(nèi)存區(qū)域;與編程設(shè)備和其它通訊伙伴進行通訊;通過修改操作系統(tǒng)參數(shù)(操作系統(tǒng)默認設(shè)置),可以在某些區(qū)域影響cpu響應(yīng)。
用戶程序則是由用戶進行創(chuàng)建,在step 7中進行編程后并將其下載到cpu中。它包含處理特定自動化任務(wù)所要求的所有功能,其任務(wù)包括:確定cpu的重啟(熱啟動)和熱重啟條件,如用特定值初始化信號;處理過程數(shù)據(jù),如產(chǎn)生二進制信號的邏輯鏈接,獲取并評估模擬量信號,指定用于輸出的二進制信號,輸出模擬值;響應(yīng)中斷;處理正常程序周期中的干擾。
2、用戶程序中的塊
在step 7編程軟件中進行構(gòu)建的用戶程序,可以將程序分成單個或獨立的程序段,稱為“塊”。,這對于一個大的工業(yè)自動化過程來說具有非常大的優(yōu)點,比如易于理解、可以標準化、方便修改程序、簡化測試等。表3-2所示為在s7用戶程序內(nèi)可使用多種塊的類型。
ob、fb、sfb、fc和sfc包含程序段,因此也稱為邏輯塊。每種塊類型許可的塊數(shù)目和塊長度由cpu決定。
3、組織塊
組織塊(ob)表示操作系統(tǒng)和用戶程序之間的接口,它由操作系統(tǒng)調(diào)用,控制循環(huán)中斷驅(qū)動的程序執(zhí)行、plc啟動特性和錯誤處理。用戶可以在step 7中對組織塊進行編程來確定cpu特性。
常見的組織塊主要包括以下部分(如圖1所示):
圖1常見的組織塊
組織塊確定單個程序段執(zhí)行的順序,即啟動事件。啟動事件觸發(fā)ob調(diào)用稱為中斷,一個ob調(diào)用可以中斷另一個ob的執(zhí)行,哪個ob允許中斷另一個ob取決于其優(yōu)先級,高優(yōu)先級的ob可以中斷低優(yōu)先級的ob,背景ob的優(yōu)先級最低。
可以通過step 7給中斷分配參數(shù),如通過參數(shù)分配,可以取消選定參數(shù)塊中的中斷ob或優(yōu)先級:日歷中斷、延時中斷、循環(huán)中斷和硬件中斷(如圖2所示)。
圖2組織塊優(yōu)先級
必須說明的是:s7-300 cpu上的組織塊優(yōu)先級固定,但是對于s7-400 cpu(和cpu 318),可以通過step 7 修改ob10 - ob47組織塊的優(yōu)先級或者可以將相同優(yōu)先級分配給多個ob。具有相同優(yōu)先級的ob按照其啟動事件發(fā)生的先后次序進行處理。
4、功能塊、功能和數(shù)據(jù)塊
功能塊(fb)是屬于用戶自己編程的塊,需要分配數(shù)據(jù)塊(db)作為其內(nèi)存(實例數(shù)據(jù)塊),因此傳送到fb的參數(shù)和靜態(tài)變量保存在實例db中,而臨時變量則保存在本地數(shù)據(jù)堆棧中。執(zhí)行完fb時,不會丟失實例db中保存的數(shù)據(jù)。但執(zhí)行完fb時,會丟失保存在本地數(shù)據(jù)堆棧中的數(shù)據(jù)。
系統(tǒng)功能塊(sfb)是集成在s7 cpu中的功能塊,sfb是操作系統(tǒng)的一部分,不作為程序的一部分而被加載。同fb一樣,必須給sfb創(chuàng)建實例數(shù)據(jù)塊,然后將它們作為程序的一部分下載到cpu中。
功能(fc)也是屬于用戶自己編程的塊,是一種不帶內(nèi)存的邏輯塊。屬于fc的臨時變量保存在本地數(shù)據(jù)堆棧中,執(zhí)行fc時,該數(shù)據(jù)將丟失,為永久保存該數(shù)據(jù),功能也可使用共享數(shù)據(jù)塊。由于fc本身沒有內(nèi)存,因此,必須始終給它指定實際參數(shù)。不能給fc的本地數(shù)據(jù)分配初始值。
fc和fb輸出參數(shù)之間的重要區(qū)別在于后者使用實例db。在功能塊(fb)中,訪問參數(shù)時,使用實例db中的實際參數(shù)副本。如果調(diào)用fb時,沒有傳送輸入?yún)?shù)或沒有寫訪問輸出參數(shù),那么將使用原先保存在實例db(實例db = fb內(nèi)存)中的值。但功能(fc)沒有內(nèi)存。因此,與fb相反,將形式參數(shù)分配給這些fc不是可選,而是必須的。通過地址(指針跨過區(qū)域邊界指向目標)訪問fc參數(shù)。當數(shù)據(jù)區(qū)(數(shù)據(jù)塊)地址或調(diào)用塊的局部變量用作實際參數(shù)時,實際參數(shù)的副本將臨時保存到用于傳送參數(shù)的調(diào)用塊的本地數(shù)據(jù)區(qū)中。
系統(tǒng)功能(sfc)是集成在s7 cpu中的預編程功能,可以在程序中調(diào)用sfc。sfc屬于操作系統(tǒng),不能作為程序的一部分而被加載。同fc一樣,sfc也是不具內(nèi)存的塊。
與邏輯塊(如fb、ob等)相反,數(shù)據(jù)塊不包含step 7指令,它們用來存儲用戶數(shù)據(jù),即數(shù)據(jù)塊包含用戶程序使用的變量數(shù)據(jù)。共享數(shù)據(jù)塊則用來存儲可由所有其它塊訪問的用戶數(shù)據(jù),其大小各不相同。用戶也可以任何方式構(gòu)造共享數(shù)據(jù)塊,滿足特定要求。