PLC结构化文本(ST)——FB系统内置方法(Init、exit、reinit)

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方法添加系统默认以外的参数。

posted @   J_Sheng  阅读(281)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验
点击右上角即可分享
微信分享提示