数组编程举例
[Post=30]一个数组应该被典型地用于描述同一主题的数据。让我们想象一个每隔3秒钟就改变一个输入值的过程。有必要保存这些输入值中的每一个,以便将其与所设定点相比较。所有的输入值都具有相同的数据类型。这种情况下,声明一个数组很有用,因为在代码本体声明中,可以用一个循环语句(如FOR循环),容易地比较这两个值。数组的单个组分可以用数组下标来访问。
类型声明:
TYPE
graph :ARRAY[1..23] OF INT;
set_point :ARRAY[1..23] OF INT;
END_TYPE
变量声明:
VAR
input :graph; (* 机器的输入值 *)
values :set_point; (* 相比较的值 *)
i :INT :=1; (* 用于数组下标的变量 *)
run :BOOL :=TRUE;
ERROR :BOOL;
timer :FB_TIMER; (* 声明FB实例 *)
END_VAR
使用ST语言的代码本体声明:
timer (pt:=t#3s;in:=run);
IF timer.Q THEN (* 向数组''graph''提供输入值 *)
input[i] := %IW0; (* 给数组赋输入值 *)
run := 0; (* 边沿检测,以便再次启动定时器 *)
i := i+1; (* 更高的数组下标 *)
ELSE
run :=1; (* 递增记数 *)
END_IF;
IF i = 23
FOR i:=1 TO 23 BY 1 DO
IF input[i] <> values[i] THEN (* 比较数组
''graph''和''set point'' *)
ERROR := TRUE;
END_IF;
END_FOR;
i := 1;
END_IF;
[/Post]
[此贴子已经被作者于2005-11-8 22:30:21编辑过]
.