首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Codesys中定义数组

在Codesys中定义数组
EN

Stack Overflow用户
提问于 2016-01-06 21:40:59
回答 2查看 20.2K关注 0票数 3

我正在使用Codesys创建一个数组。

下面的示例是我用来创建包含5个值的数组的示例

代码语言:javascript
复制
ARRAY [1..5] OF INT := [1,2,3,4,5];

这对于一个包含5个值的数组来说是很好的,但是如果我需要一个包含100个值的数组呢?

有没有一种更快的方法来处理100个值的数组,而不是像下面的例子中那样分别键入每个值。

代码语言:javascript
复制
ARRAY [1..100] OF INT :=[1,2,3,4,5,6,7 to 100]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-06 22:42:06

好吧,如果你只想做100个元素,并且你想让数组的元素按顺序继续,你可以使用这个代码在第一次plc扫描时初始化你的数组,而不是在数组声明中初始化。

代码语言:javascript
复制
VAR
   SomeArray: ARRAY[1..100] OF INT;
   i:INT:=0;
   isInitialized:BOOL:=false;
END_VAR

IF NOT isInitialized THEN
    FOR i:=1 TO 100 BY 1 DO
         SomeArray[i]:=i;
    END_FOR;
    isInitialized:=TRUE;
END_IF;
票数 4
EN

Stack Overflow用户

发布于 2016-01-08 00:11:55

如果要使用相同的值初始化数组或数组的一部分,则可以使用()-shorthand

代码语言:javascript
复制
ARRAY [1..100] OF INT :=[4(1),3(2),2(3),4]; //Equivalent [1,1,1,1,2,2,2,3,3,4]

在Codesys V3或TwinCat 3中,您可以使用FB_init方法来编写初始化代码。所有声明的FB实例的FB_init方法将在正常循环任务开始执行之前在启动时被调用。

你可以这样使用它:

代码语言:javascript
复制
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
VAR
  unCount : UINT;
END_VAR

代码语言:javascript
复制
FOR unCount := 1 TO 100 DO
   arrnInitExample[unCount]:= unCount;
END_FOR

注意: FB_init方法的前两个布尔值输入必须始终相同。但您也可以在之后添加额外的输入变量。然后,您可以在声明FB实例时将自定义参数传递给该方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34634574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档