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

2.2.2 用戶程序結構簡介

S7-1200與S7-300/400的用戶程序結構基本上相同。

1.模塊化編程

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

表2-2 用戶程序中的塊

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

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

2.組織塊

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

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

(1)程序循環組織塊

OB1是用戶程序中的主程序,CPU循環執行操作系統程序,在每一次循環中,操作系統程序調用一次OB1。因此OB1中的程序也是循環執行的。允許有多個程序循環OB,默認的是OB1,其他程序循環OB的編號應大于等于123。

(2)啟動組織塊

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

(3)中斷組織塊

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

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

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

3.函數

函數(Function,FC)是用戶編寫的子程序,STEP 7 V5.5x稱為功能。它包含完成特定任務的代碼和參數。FC和FB(函數塊)有與調用它的塊共享的輸入參數和輸出參數。執行完FC和FB后,返回調用它的代碼塊。

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

可以在程序的不同位置多次調用同一個FC或FB,這樣可以簡化重復執行的任務的編程。函數沒有固定的存儲區,函數執行結束后,其臨時變量中的數據可能被別的塊的變量覆蓋。

4.函數塊

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

調用同一個函數塊時使用不同的背景數據塊,可以控制不同的對象。

5.數據塊

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

有兩種類型的數據塊:

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

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

主站蜘蛛池模板: 台山市| 安龙县| 温宿县| 乌海市| 汾阳市| 平凉市| 新泰市| 铁岭市| 西盟| 青岛市| 道真| 获嘉县| 河东区| 上高县| 江华| 广昌县| 阳春市| 和顺县| 沁水县| 栖霞市| 武定县| 长子县| 南城县| 芜湖县| 泽州县| 蓝田县| 郴州市| 丹江口市| 福鼎市| 长乐市| 洛阳市| 定南县| 兴安盟| 灌南县| 正镶白旗| 志丹县| 四会市| 桐梓县| 永新县| 若尔盖县| 隆安县|