变量初始化
所有声明的标准初始化值为 0
。在声明部分,您还可以为每个变量和每种数据类型指定用户定义的初始化值。
用户定义的初始化从赋值运算符开始 :=
并由编程语言 ST(结构化文本)的任何有效表达式组成。因此,您可以借助常量、其他变量或函数来定义初始化值。如果使用变量,则还必须对其进行初始化。
表 5. 默认初始化值
数据类型 | 初始化 |
---|---|
任何数字数据类型 |
|
每一个指针 |
|
|
|
| 每个元素的默认初始化值 |
结构 | 如果尚未为声明中的各个元素定义显式值,则该数据类型的默认值是初始化值。 |
例 13. 例子
VAR var1:INT := 12; //initialization value 12 x : INT := 13 + 8; //initalization value defined by an expression of constants y : INT := x + fun(4); //initialization value defined by an expression, //that contains a function call; notice the order! z : POINTER TO INT := ADR(y); //not described in the standard IEC61131-3: // initialization value defined by an adress function; // Notice: In this case the pointer will not be initialized // during an Online Change *) END_VAR
关于初始化顺序的注意事项
首先是常量
从编译器版本 3.5.3.40 开始,函数块中的变量按以下顺序初始化:首先,所有常量按照其声明顺序进行初始化,然后所有其他变量按照其声明顺序进行初始化。
局部变量之前的全局变量
在编译器版本 3.3.2.0 及更高版本中,全局变量列表中的变量始终在 POU 的局部变量之前初始化。
有关更多信息,请参阅: 结构变量的声明和初始化 和 pragma global_init_slot。