PLC Structured Text Object Oriented Programming
PLC結構化文字(ST)——FB系統內建方法(Init、exit、reinit)
IEC61131-3 FB系統內建方法
FB_init
隱式或顯式初始化功能塊,第一次下載執行程式時初始化時自動呼叫。該方法類似於C#
類的建構函式,用於初始化類。FB_exit
在功能塊被銷燬時自動由系統隱式呼叫,例如:在執行模式切換到配置模式時或PLC程式停止時被系統自動呼叫。類似於C#
的解構函式的概念。FB_reinit
通常用於重新初始化功能塊,相當於線上修改(Online change)。
只要不是顯式呼叫(隱式自動呼叫),以上方法在對應觸發條件下只執行一次,該機制類似於
C#
的事件(event),不參與掃描週期迴圈呼叫。如果是顯式呼叫,那具體就看程式怎麼寫了。
新增系統內建方法
- 建立一個功能塊;
- 新增方法;
- 在名稱處選擇
FB_init
或FB_exit
或FB_reinit
; - 點選
Open
。
操作案例對應的方法
首次下載 | 新下載 | 線上更改 |
---|---|---|
1.FB_init(隱式或顯示初始化程式碼) 2.透過功能塊例項宣告進行顯示外部變數初始化 3.使用屬性"call_after_init"宣告的方法 |
1.FB_exit 2.FB_init(隱式或顯式初始化程式碼) 3.透過功能塊的例項宣告進行顯式外部變數初始化 4.使用屬性"call_after_init"宣告的方法 |
1.FB_exit 2.FB_init(隱式或顯式初始化程式碼) 3.透過功能塊的例項宣告進行顯式外部變數初始化 4.使用屬性"call_after_init"宣告的方法 5.影印程式 6.FB_reinit |
方法引數: FB_init(bInitRetains := TRUE,bInCopyCode := FALSE); |
方法引數: FB_exit(bInCopyCode := FALSE); FB_init(bInitRetains := TRUE,bInCopyCode := FALSE); |
方法引數: FB_exit(bInCopyCode := TRUE); FB_init(bInitRetains := FALSE,bInCopyCode := TRUE); |
總結
- 如果自定義
FB_init
方法,新增輸入引數時需要在功能塊例項化的地方給出輸入引數。使用方法可參考部落格-PLC結構化文字(ST)——建構函式(FB_init)。 - 如果自定義
FB_Reinit
方法,並且給方法新增額外的輸入引數,此時FB
不會再自動隱式呼叫。
警告
C0524
:函式塊或結構的FB_ReInit
方法必須沒有輸入,並且返回BOOL
型別的值。FB_ReInit
不會自動呼叫!
- 如果自定義
FB_exit
方法,並且給方法新增額外的輸入引數,此時編譯程式會報錯。
錯誤
C0120
:函式塊或結構的FB_Exit方法必須有一個BOOL
型別的輸入'bInCopyCode'和一個BOOL
型別的返回值。(這裡我給FB_exit
方法新增了一個BOOL
型別的輸入引數,編譯報錯。)
所以正常情況下,一般不給FB_exit
和FB_ReInit
方法新增系統預設以外的引數。