|
|
西門子300模塊6ES7331-7NF10-0AB0
西門子300模塊6ES7331-7NF10-0AB0
SM323模塊有 16 位類型(6ES7 323-1BL00-0AA0)和 8 位類型(6ES7 323-1BH00-0AA0)兩種。對于 16 位類型的模塊,輸入和輸出占用“X”和“X+1” 兩個地址。如果 SM323 的基地址為 4 (即 X=4; 插槽為 5),那么輸入就被賦址在地址 4 和 5 下面, 輸出的地址同樣也被賦址在地址 4 和 5 下面。在模塊的接線視圖中,輸入字節“X”位于左邊的頂部,輸出字節“X”在右邊的頂部。
西門子 STEP7 & 博途(TIA Portal)系列編程軟件功能強大,其模塊化編程的思想能夠使系統邏輯清晰、易于維護和修改,這對大型復雜項目的設計至關重要。今天這篇文章,我們就和大家談談STEP7 & 博途(TIA Portal)是如何實現模塊化程序設計的。
對于一個復雜的自動化控制任務,我們往往會根據其內部的邏輯關系,將其劃分成一些子任務(子任務還可以根據需要繼續分成更小的子任務)。這樣就能把復雜的項目變得相對簡單,從而比較容易實現。
打個比方:我們要去歐洲旅游,要考慮怎么去?(交通)、去了住哪?(住宿)、去做什么?(購物,游玩)等。這樣,“去歐洲旅游”的任務就被分成了“交通”、“住宿”、“購物”、“游玩”四個子任務,然后分別完成每一個子任務(訂完機票就完成了“交通”任務、訂完酒店就完成了“住宿”任務,等等)。當所有的子任務都完成后,整個任務也就完成了。
西門子STEP7 & 博途(TIA Portal)在程序設計中引入了這種把復雜任務簡單化的思想,可以把整個項目程序,劃分成小的子程序,分別對子程序進行編程。這些劃分的子程序,被稱為“塊”,“塊”之間通過邏輯關系調用或者被調用。這種把復雜程序劃分成小的“塊”的編程方法,稱為“模塊化程序設計”。
模塊化程序設計的邏輯清晰、組織結構透明,增加了程序的可理解性和可維護性,易于修改、調試和檢查錯誤。創建好的“塊”可以一勞永逸的重復使用,減少了編程的工作量,提高了工作效率。
在上一篇文章《PLC基礎篇之PLC的誕生及工作原理》中我們講過,PLC內部的程序包括操作系統程序和用戶程序兩種。操作系統本身的程序設計不在今天的討論范圍之內,這里我們主要討論的是操作系統與用戶程序的接口及用戶程序本身的模塊化設計。
組織塊(Organization Block,OB)是操作系統和用戶程序的接口,操作系統通過調用特定的組織塊,來完成特定的功能。用戶的程序要寫到組織塊中才能被調用。
組織塊(OB)可以分為啟動組織塊,循環調用組織塊和中斷組織塊。
啟動組織塊:CPU從停止模式切換到啟動模式時,操作系統會調用一次啟動組織塊(注意:僅調用一次)。啟動組織塊的主要作用是用來初始化一些變量。
循環調用組織塊:也稱為主程序塊,一般是OB1。循環調用組織塊是用戶程序的入口,相當于C語言中的“Main函數”。
中斷組織塊:是當中斷出現時,操作系統調用的組織塊。STEP7對中斷組織塊的編號有規定,當某種中斷出現時,調用某個中斷組織塊。中斷組織塊內部是用戶寫的中斷處理程序(參考《中斷機制是怎樣讓PLC高效運行的?》)。
上面說的都是操作系統和用戶程序接口的組織架構,下面談談用戶程序的模塊化設計;
在用戶程序中,我們可以把完成某個功能的代碼,保存成一個“塊”,稱為“功能塊(Function Block,FB)”或“功能(Function,FC)”。“功能塊(FB)”和“功能(FC)”都是能完成某種特定功能的代碼的集合,是一個子程序。它們的不同之處在于:“功能塊(FB)”需要有特定的數據塊(Data Block,DB)來保存靜態變量;而“功能(FC)”沒有靜態變量,因此不需要特定的數據塊。