FB_init是一种特殊的路径 ⇘ “方法”,它代替了CoDeSys V2.3中的INI算子,用于功能块或结构的重新初始化。它可以明确地为功能块被声明,但是在任何情况下它都是隐含可用的。
FB_init路径包括功能块或结构的初始代码,如果init路径被明确的声明,隐式初始化代码会被插入到这个路径。程序员可以添加更多的初始代码。
![]() |
提示! 当执行到用户定义的初始化代码,功能块RESP.结构已经完全通过隐式初始化代码初始化。 |
在为每个声明的功能块实例和每个结构类型变量下载后,init路径会被调用。注意:如果在线更改的情况下,以前的值将覆盖初始值!
获取继承状态下的调用序列信息请参阅 ⇘ 。
自动通过FB_init初始化定义功能块实例方法的可能性: ⇘ “初始化后调用属性”
Init路径的界面
METHOD fb_init : BOOL VAR_INPUT bInitRetains : BOOL; // if TRUE, the retain variables are initialized (warm start / cold start) bInCopyCode : BOOL; // if TRUE, the instance afterwards gets moved into the copy code (online change) END_VAR
返回值没有解释说明。
![]() |
还要注意可能使用“退出”方法和结果的执行顺序:见 ⇘ “FB_exit 路径”。 |
用户自定义输入:
附加的功能块输入也可以在init路径中声明。它们必须被分配在一个功能块实例声明中。
功能块‘连载设备’初始化方法例子:
METHOD PUBLIC FB_init : bool VAR_INPUT bInitRetains : BOOL; // Initialization of the retain variables bInCopyCode : BOOL; // Instance moved into copy code nCOMnum : INT; // Input: number of the COM interface to listen at END_VAR
功能块‘连载设备’声明:
com1: serialdevice(nCOMnum:=1); com0: serialdevice(nCOMnum:=0);
在结构'DUTxy' 中使用FB_init例子
结构 DUTxy
TYPE DUTxy : STRUCT a: INT := 10; b: INT := 11; c: INT := 12; END_STRUCT END_TYPE
调用fb_init 重新初始化
PROGRAM PLC_PRG VAR dutTest: DUTxy; xInit: BOOL:=FALSE; END_VAR IF xinit THEN // if xinit is set TRUE, then the reinitialization via fb_init to the values as defined in DUTxy will be done dutTest.FB_Init(TRUE,TRUE); ELSE dutTest.a := 1; dutTest.b := 2; dutTest.c := 3; END_IF
如果功能块实例声明为“FB_reinit”,这种路径将在实例被复制时被调用(其中一个例子是在功能块声明修改后的在线更改)。方法将导致通过复制代码建立的新的实例模块的重新初始化。可能希望重新初始化,因为原始实例的数据将被复制后将被写入到新的实例,就需要得到原来的初始化值。FB_reinit路径没有输入。关于与FB_init路径的对比 必须明确声明。如果需要实现重新初始化所需的基本功能块,FB_reinit必须显式地调用该POU。
FB_reinit路径没有输入。
在继承状态下的调用序列请参阅: ⇘ 。