|
|
西門子300模塊6ES7332-5HB01-0AB0
西門子300模塊6ES7332-5HB01-0AB0
模塊化程序設計的邏輯清晰、組織結構透明,增加了程序的可理解性和可維護性,易于修改、調試和檢查錯誤。創建好的“塊”可以一勞永逸的重復使用,減少了編程的工作量,提高了工作效率。
在上一篇文章《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)”訪問。
在西門子S7-300/400系列PLC中,程序的運行起始于組織塊OB1。OB1就相當于C語言的Main函數;在S7-200 smart中,更是直接把OB1稱為Main塊。
如果程序比較復雜,還可以把一些常用的功能設計成模塊,以便重復利用。這些小的模塊稱為子程序。
子程序存在于主程序中,操作系統通過調用主程序,就能讓子程序也得到運行。在S7-300/400中,子程序包括FB和FC。
除了主程序接口,PLC還提供中斷程序的接口。比如S7-300/400系列PLC的組織塊OB35(循環中斷)、OB40(硬件中斷)、OB82(診斷中斷)、OB122(IO訪問故障中斷)等等。中斷程序接口中的程序,稱為“中斷處理程序”,中斷處理程序由用戶自己編寫。