官术网_书友最值得收藏!

2.2.2 用戶程序結(jié)構(gòu)簡介

S7-1200與S7-300/400的用戶程序結(jié)構(gòu)基本上相同。

1.模塊化編程

模塊化編程將復(fù)雜的自動化任務(wù)劃分為對應(yīng)于生產(chǎn)過程的技術(shù)功能的較小的子任務(wù),每個子任務(wù)對應(yīng)于一個稱為“塊”的子程序,可以通過塊與塊之間的相互調(diào)用來組織程序。這樣的程序易于修改、查錯和調(diào)試。塊結(jié)構(gòu)顯著地增加了PLC程序的組織透明性、可理解性和易維護性。各種塊的簡要說明見表2-2,其中的OB、FB、FC都包含程序,統(tǒng)稱為代碼(Code)塊。所有的代碼塊和數(shù)據(jù)塊的總數(shù)最多為1024個。

表2-2 用戶程序中的塊

被調(diào)用的代碼塊又可以調(diào)用別的代碼塊,這種調(diào)用稱為嵌套調(diào)用。從程序循環(huán)OB或啟動OB開始,嵌套深度為16;從中斷OB開始,嵌套深度為6。

在塊調(diào)用中,調(diào)用者可以是各種代碼塊,被調(diào)用的塊是OB之外的代碼塊。調(diào)用函數(shù)塊時需要為它指定一個背景數(shù)據(jù)塊。

2.組織塊

組織塊(Organization Block,OB)是操作系統(tǒng)與用戶程序的接口,由操作系統(tǒng)調(diào)用,用于控制掃描循環(huán)和中斷程序的執(zhí)行、PLC的啟動和錯誤處理等。組織塊的程序是用戶編寫的。

每個組織塊必須有一個唯一的OB編號,123之前的某些編號是保留的,其他OB的編號應(yīng)大于等于123。CPU中特定的事件觸發(fā)組織塊的執(zhí)行,OB不能相互調(diào)用,也不能被FC和FB調(diào)用。只有啟動事件(例如診斷中斷事件或周期性中斷事件)可以啟動OB的執(zhí)行。

(1)程序循環(huán)組織塊

OB1是用戶程序中的主程序,CPU循環(huán)執(zhí)行操作系統(tǒng)程序,在每一次循環(huán)中,操作系統(tǒng)程序調(diào)用一次OB1。因此OB1中的程序也是循環(huán)執(zhí)行的。允許有多個程序循環(huán)OB,默認的是OB1,其他程序循環(huán)OB的編號應(yīng)大于等于123。

(2)啟動組織塊

當CPU的工作模式從STOP切換到RUN時,執(zhí)行一次啟動(STARTUP)組織塊,來初始化程序循環(huán)OB中的某些變量。執(zhí)行完啟動OB后,開始執(zhí)行程序循環(huán)OB。可以有多個啟動OB,默認的為OB100,其他啟動OB的編號應(yīng)大于等于123。

(3)中斷組織塊

中斷處理用來實現(xiàn)對特殊內(nèi)部事件或外部事件的快速響應(yīng)。如果沒有中斷事件出現(xiàn),CPU循環(huán)執(zhí)行組織塊OB1和它調(diào)用的塊。如果出現(xiàn)中斷事件,例如診斷中斷和時間延遲中斷等,因為OB1的中斷優(yōu)先級最低,操作系統(tǒng)在執(zhí)行完當前程序的當前指令(即斷點處)后,立即響應(yīng)中斷。CPU暫停正在執(zhí)行的程序塊,自動調(diào)用一個分配給該事件的組織塊(即中斷程序)來處理中斷事件。執(zhí)行完中斷組織塊后,返回被中斷的程序的斷點處繼續(xù)執(zhí)行原來的程序。

這意味著部分用戶程序不必在每次循環(huán)中處理,而是在需要時才被及時地處理。處理中斷事件的程序放在該事件驅(qū)動的OB中。

4.3節(jié)詳細介紹了各種中斷組織塊和中斷事件的處理方法。

3.函數(shù)

函數(shù)(Function,F(xiàn)C)是用戶編寫的子程序,STEP 7 V5.5x稱為功能。它包含完成特定任務(wù)的代碼和參數(shù)。FC和FB(函數(shù)塊)有與調(diào)用它的塊共享的輸入?yún)?shù)和輸出參數(shù)。執(zhí)行完FC和FB后,返回調(diào)用它的代碼塊。

函數(shù)是快速執(zhí)行的代碼塊,可用于完成標準的和可重復(fù)使用的操作,例如算術(shù)運算。或完成技術(shù)功能,例如使用位邏輯運算的控制。

可以在程序的不同位置多次調(diào)用同一個FC或FB,這樣可以簡化重復(fù)執(zhí)行的任務(wù)的編程。函數(shù)沒有固定的存儲區(qū),函數(shù)執(zhí)行結(jié)束后,其臨時變量中的數(shù)據(jù)可能被別的塊的變量覆蓋。

4.函數(shù)塊

函數(shù)塊(Function Block,簡稱為FB)是用戶編寫的子程序,STEP 7 V5.x稱為功能塊。調(diào)用函數(shù)塊時,需要指定背景數(shù)據(jù)塊,后者是函數(shù)塊專用的存儲區(qū)。CPU執(zhí)行FB中的程序代碼,將塊的輸入、輸出參數(shù)和局部靜態(tài)變量保存在背景數(shù)據(jù)塊中,以便在后面的掃描周期訪問它們。FB的典型應(yīng)用是執(zhí)行不能在一個掃描周期完成的操作。在調(diào)用FB時,自動打開對應(yīng)的背景數(shù)據(jù)塊,后者的變量可以被其他代碼塊訪問。

調(diào)用同一個函數(shù)塊時使用不同的背景數(shù)據(jù)塊,可以控制不同的對象。

5.數(shù)據(jù)塊

數(shù)據(jù)塊(Data Block,DB)是用于存放執(zhí)行代碼塊時所需的數(shù)據(jù)的數(shù)據(jù)區(qū),與代碼塊不同,數(shù)據(jù)塊沒有指令,STEP 7按變量生成的順序自動地為數(shù)據(jù)塊中的變量分配地址。

有兩種類型的數(shù)據(jù)塊:

1)全局數(shù)據(jù)塊存儲供所有的代碼塊使用的數(shù)據(jù),所有的OB、FB和FC都可以訪問它們。

2)背景數(shù)據(jù)塊存儲的數(shù)據(jù)供特定的FB使用。背景數(shù)據(jù)塊中保存的是對應(yīng)的FB的輸入、輸出參數(shù)和局部靜態(tài)變量。FB的臨時數(shù)據(jù)(Temp)不是用背景數(shù)據(jù)塊保存的。

主站蜘蛛池模板: 宜昌市| 长治县| 大宁县| 象山县| 崇左市| 屯门区| 漠河县| 大足县| 黔南| 武乡县| 阿拉善右旗| 双江| 祁东县| 甘洛县| 尼玛县| 东乌| 苗栗县| 宝鸡市| 丹东市| 正定县| 镇原县| 元阳县| 益阳市| 湖北省| 封开县| 溆浦县| 克山县| 天峻县| 武冈市| 岚皋县| 宝丰县| 报价| 百色市| 桓仁| 光泽县| 高碑店市| 荔波县| 明光市| 天峨县| 邛崃市| 太白县|