|
|
西門子300模塊6ES7331-7PF11-0AB0
西門子300模塊6ES7331-7PF11-0AB0
西門子STEP7 & 博途(TIA Portal)在程序設計中引入了這種把復雜任務簡單化的思想,可以把整個項目程序,劃分成小的子程序,分別對子程序進行編程。這些劃分的子程序,被稱為“塊”,“塊”之間通過邏輯關系調用或者被調用。這種把復雜程序劃分成小的“塊”的編程方法,稱為“模塊化程序設計”。
模塊化程序設計的邏輯清晰、組織結構透明,增加了程序的可理解性和可維護性,易于修改、調試和檢查錯誤。創建好的“塊”可以一勞永逸的重復使用,減少了編程的工作量,提高了工作效率。
在上一篇文章《PLC基礎篇之PLC的誕生及工作原理》中我們講過,PLC內部的程序包括操作系統程序和用戶程序兩種。操作系統本身的程序設計不在今天的討論范圍之內,這里我們主要討論的是操作系統與用戶程序的接口及用戶程序本身的模塊化設計。
組織塊(Organization Block,OB)是操作系統和用戶程序的接口,操作系統通過調用特定的組織塊,來完成特定的功能。用戶的程序要寫到組織塊中才能被調用。
組織塊(OB)可以分為啟動組織塊,循環調用組織塊和中斷組織塊。
啟動組織塊:CPU從停止模式切換到啟動模式時,操作系統會調用一次啟動組織塊(注意:僅調用一次)。啟動組織塊的主要作用是用來初始化一些變量。
上面說的都是操作系統和用戶程序接口的組織架構,下面談談用戶程序的模塊化設計;
在用戶程序中,我們可以把完成某個功能的代碼,保存成一個“塊”,稱為“功能塊(Function Block,FB)”或“功能(Function,FC)”。“功能塊(FB)”和“功能(FC)”都是能完成某種特定功能的代碼的集合,是一個子程序。它們的不同之處在于:“功能塊(FB)”需要有特定的數據塊(Data Block,DB)來保存靜態變量;而“功能(FC)”沒有靜態變量,因此不需要特定的數據塊。
“功能塊(FB)”所需要的特定的數據塊(DB),被稱為背景數據塊(Instance Data Block)。背景數據塊的屬性是私有的,它只能被它所屬的功能塊(FB)訪問。
與背景數據塊相對應的另一種數據塊,是全局數據塊(Global Data Block)。全局數據塊是公有的,可以被所有的“功能塊(FB)”或者“功能(FC)”訪問。
在設計復雜項目的時候,可以把項目分成的子任務設計成功能塊(FB)或功能(FC)。功能塊(FB)或功能(FC)之間可以相互調用,當被調用的功能塊內部又調用另一個功能塊時,這種調用稱為“嵌套調用”,調用的層數稱為“嵌套深度”。不同的CPU支持的嵌套深度不同,使用時需要查看下手冊;比如:CPU 1215C的嵌套深度
PLC的CPU中有兩類程序:一類是操作系統,它由PLC的廠家設計并在出廠前固化到CPU中;另一類是用戶程序,它是由編程人員根據實際需要設計的、完成特定功能的程序;
操作系統預留一些接口(Interface)給用戶程序。通過這些接口,操作系統可以控制用戶程序的執行。一般有兩種接口:主程序接口和中斷程序接口。
主程序接口是正常情況下用戶程序運行的起點。PLC的這種設計思想與計算機編程是一樣的。我們知道,在C語言的編程中,程序的運行起始于Main函數。在Main函數中,按照從上到下的順序依次執行代碼。Main函數是操作系統執行用戶程序的接口。