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