天天看點

西門子TIA博途中OB、DB、FC、FB介紹及應用

作者:一個發芽的洋芋

一、OB(Organization block) 組織塊

西門子TIA博途中OB、DB、FC、FB介紹及應用

OB(Organization block)英文翻譯即組織塊,它是作業系統和使用者程式之間的接口,用于執行具體的程式。

  • 在 CPU 啟動時
  • 循環程式處理
  • 在循環或延時時間到達時
  • 當發生外部條件觸發時
  • 當發生故障、錯誤時

在TIA Portal中我們最常用的OB塊即Main函數(OB1) ,通過Main函數調用 FB、FC,并且這些 FB、FC 還可以繼續向下嵌套調用 FB、FC。除主程式和啟動 OB 以外,其他 OB 的執行是根據各種中斷條件(錯誤、時間、硬體等)來觸發的,OB 無法被 FB、FC 調用。

嵌套深度:是指可從 OB 調用功能 (FC) 或功能塊 (FB) 等程式代碼塊的深度。

1、從程式循環 OB 或啟動 OB 開始調用 FC 和 FB 等程式代碼塊,嵌套深度為 16 層;

2、從其他中斷 OB 開始調用 FC 和 FB 等程式代碼塊,嵌套深度為 6 層;

OB 事件

每個組織塊都有各自的優先級,在低優先級 OB 運作過程中,高優先級 OB 到來會打斷低優先級執行。

西門子TIA博途中OB、DB、FC、FB介紹及應用

注:V4.0 版本 CPU 以前,延時中斷 OB + 循環中斷 OB 數量 <=4

V4.0 版本 CPU 開始支援

V4.1 版本 CPU 開始支援

V4.2 版本 CPU 開始支援

關于各OB的使用說明,可檢視TIA Portal中幫助檔案;

二、DB(Data block) 資料塊

西門子TIA博途中OB、DB、FC、FB介紹及應用

定義

DB(Data Block)資料塊可以分為:全局資料塊和背景資料塊。資料塊用于存儲使用者資料及程式中間變量,其中背景資料塊由背景功能塊FB生成,内部資料結構由FB的接口定義區決定;

尋址方式

在TIA Portal中可通過絕對位址尋址或通過符号尋址;使用絕對位址尋址,需要将優化塊通路選擇取消(預設使用優化塊通路)。

西門子TIA博途中OB、DB、FC、FB介紹及應用

符号位址尋址

西門子TIA博途中OB、DB、FC、FB介紹及應用

絕對位址:尋址即通過位址DB編号+位址偏移量組成,例如:DB100.dbx0.0

西門子TIA博途中OB、DB、FC、FB介紹及應用

三、FC(Function) 和 FB(Function Block)

定義

FC(Function)功能:是不含存儲區的代碼塊,常用于對一組輸入值執行特定運算,例如:可使用 FC 執行标準運算和可重複使用的運算(例如數學計算)或者執行工藝功能(如使用位邏輯運算執行獨立的控制)。

FB(Function Block)功能塊:帶背景資料塊的FC--功能。

塊接口

FB 、FC塊都有一個塊接口區,可以用來定義塊接口。在塊接口區域中可以定義的接口類型:Input(輸入)、Output(輸出)、InOut(輸入輸出)、Static(靜态變量,FC無)、Temp(臨時變量)以及 Constant (常量)注:FC 或 FB可帶參數或者不帶參數

西門子TIA博途中OB、DB、FC、FB介紹及應用
西門子TIA博途中OB、DB、FC、FB介紹及應用

對于帶參數的 FB 或FC 塊,有形參和實參 2 個概念,如下圖所示。

西門子TIA博途中OB、DB、FC、FB介紹及應用
  • 形參:塊接口區域定義的 Input,Output,InOut 參數;在調用塊時,會以引腳方式出現在塊上。Input 和 InOut 類型的變量出現在塊的左側;Output 類型的變量出現在塊的右側。
  • 實參:在調用帶參數的塊時,為形參填寫的實際變量。

四、FC塊和FB塊 差別和應用

FB和FC有什麼差別, 在什麼場景下應用FC,什麼場景下應用FB?

首先,從字面意思來看FC(Function)-功能, FB(Function Block)-功能塊;這兩個之間差了一個"塊",這個塊就是我們常說的背景資料塊(Background DB),FB使用背景資料塊作為存儲區,FC沒有獨立的存儲區,使用全局DB或M區;這是FB與FC的最主要差別;

其次, FB局部變量有STAT和TEMP,FC由于沒有自己的存儲區是以不具有STAT,且TEMP本身出不能設定初始值。

FB塊優點:

1、易于移植性,對于相同控制邏輯不同參數的被控對象,隻要使用不同的背景DB,同一個FB塊就可以友善

2、多重背景,減少重複工作,提高效率

3、多次調用時,參數修改友善

4、有獨立的存儲區

FC塊優點:

1、小巧靈活,對于非多次調用的程式更易了解

2、不占用額外的存儲資源

FC應用範圍:

1、由于FC不具備背景存儲區,是以FC常用來做為子程式入口使用,保持程式簡介易懂, 易複制;例如:工藝段1程式全部放在FC1裡面,再由FC1調用相應程式;工藝段1程式全部放在FC2裡面,再由FC2調用相應程式;

2、用于執行不含邏輯運算或公共部分程式的功能,例如:處理IO映射、報警程式處理

3、由輸入“直接”到輸出的邏輯功能塊,直接即中間不需要使用臨時變量,隻在輸入和輸出之間傳遞參數的功能;例如:将1個16位word轉化為16個Bit輸出功能,或将輸入資料做等比例輸入等功能;

FB應用範圍:

FB應用範圍較廣,可完成所有FC實作的功能,但一般情況FB常用來作為某一類相同對象的控制功能塊,然後在FC中調用FB;例如:可将FB應用于電機控制塊,在FB中實作電機的啟動,停止,報警,計時等功能,每個不同的背景DB即可看做一個對象;可大提高程式的設計效率;

常見問題:

  • 為何定義的FB,FC塊,多次調用後程式混亂?

對于,多次調用的程式塊,FB塊建議更換調用不同的背景DB;FC則需要確定使用的存儲位址不重複,即每次調用,塊中調用的位址不重複。

  • 為何含有定時器或計數器的FB或FC單次調用ok,多次調用時定時器或計數器混亂?

對于多次調用的FB,FC,如為S7定時器,計數器,則需要在IN接口中定義TIMER或Counter,每調用一次FB或FC,均賦不同的定時器或計數器号。如為IEC定時器,計數器,則需要在IN接口定義Block_DB,每調用一次FB或FC,均賦不同的DB塊給其中的IEC定時器或計數器。