初始化结构化文本语法中的自定义类型数组

迈克尔·莱文

在我的项目中,我有一个类型:

TYPE myDataStruct :
STRUCT
    A : UINT;
    B : WORD;
    C : REAL;
    D : Custom_Obj;
END_STRUCT
END_TYPE

我需要为持久内存保留一个这种类型的数组。我不能只是使用,VAR RETAIN因为这块特定的内存需要通过下载保持不变。我正在使用的控制器有一种方法可以做到这一点,但为了使其工作,我需要能够将数组设置为等于初始值。所以如果我已经声明

myarray := ARRAY[0..20] OF myDataStruct;

然后如何将此数组初始化为空白数组?new在其他语言中的等价物是什么

我猜到了

myarray := [21(A := 0,
               B := '',
               C := 0.0,
               D := ??? )];

但这似乎不对。如果自定义结构只有一层深度,那么它可以被简化,对于这个应用程序,我可以做到这一点。但是,我仍然认为我的语法不正确。

谢尔盖·罗曼诺夫

new在其他语言中的等价物是什么

这个的模拟是

VAR
    EmptyArray  : ARRAY[0..20] OF myDataStruct;
END_VAR

如果你想用默认值预先填充它

VAR
    EmptyArray  : ARRAY[0..20] OF myDataStruct := [
        (A := 100, B := 200, С := 0.0, D := ???),
        (A := 34, B := 45, С := 0.1, D := ???),
        ..... etc
    ];
END_VAR

对于 CoDeSys 2.3 删除[].

您必须了解EmptyArray的不是您需要的数据原型,而是已经初始化的变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章