PLC結構化文字(ST)——FB系統內建方法(Init、exit、reinit)

J_Sheng發表於2024-09-10

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_initFB_exitFB_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_exitFB_ReInit方法新增系統預設以外的引數。

相關文章