PLC结构化文本(ST)——FB系统内置方法(Init、exit、reinit)
1.PLC结构化文本(ST)——类(Class)2.PLC结构化文本(ST)——方法(Method)3.PLC结构化文本(ST)——接口(Interface)4.PLC结构化文本(ST)——特殊指针(This&Super)5.PLC结构化文本(ST)——继承(inheritance)6.PLC结构化文本(ST)——属性(Property)7.PLC结构化文本(ST)——指针和引用(Pointer&Reference)8.PLC结构化文本(ST)——访问修饰符9.PLC结构化文本(ST)——构造函数(FB_init)10.PLC结构化文本(ST)——变量类型和变量属性11.PLC结构化文本(ST)——临时&静态&实例-变量(TEMP&STAT&INST)12.PLC结构化文本(ST)——数组越界与PLC异常(CheckBounds)13.PLC结构化文本(ST)——异常捕获(__TRY__CATCH)14.PLC结构化文本(ST)——接口指针转换(__QUERYPOINTER)15.PLC结构化文本(ST)——接口引用转换(__QUERYINTERFACE)16.PLC结构化文本(ST)——区域代码折叠(Region)17.PLC结构化文本(ST)——枚举_to_string(to_string)
18.PLC结构化文本(ST)——FB系统内置方法(Init、exit、reinit)
19.PLC结构化文本(ST)——结构体属性外部调用(Issue)20.PLC结构化文本(ST)——AND_THEN & OR_ELSE21.PLC结构化文本(ST)——实例路径属性(attribute 'instance-path')22.PLC结构化文本(ST)——隐式枚举(implicit enum)23.PLC结构化文本(ST)——泛型常量(Generic Constatnt)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
方法添加系统默认以外的参数。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验