步骤4:用例 21_var_temp(VAR_TEMP 每周期重置语义)+ 文档更新 + 修复 store_target STORE 缺 func 隐藏 bug
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
# 期望:编译通过;VAR_TEMP 每周期重置,VAR 跨周期持久
|
||||
|
||||
- FB Foo:`tmp`(VAR_TEMP 初值 100)每周期重置 → `tmp := tmp + 1` 恒为 101;
|
||||
`persist`(VAR)跨周期累积 1、2、3…
|
||||
`out = tmp * 100 + persist` = 10101、10102、10103…
|
||||
- MAIN:`t`(VAR_TEMP 初值 5)每周期重置 → `t := t + 1` 恒为 6
|
||||
- 全局 `a = f.out + t`:周期 1/2/3 = 10107 / 10108 / 10109(差 1 仅来自 persist,
|
||||
tmp 与 t 若不重置则偏差 100 / 1)
|
||||
@@ -0,0 +1,4 @@
|
||||
(* globals.st *)
|
||||
VAR_GLOBAL
|
||||
a : INT;
|
||||
END_VAR
|
||||
@@ -0,0 +1,12 @@
|
||||
(* main.st *)
|
||||
PROGRAM MAIN
|
||||
VAR
|
||||
f : Foo;
|
||||
END_VAR
|
||||
VAR_TEMP
|
||||
t : INT := 5;
|
||||
END_VAR
|
||||
t := t + 1;
|
||||
f(in := TRUE);
|
||||
a := f.out + t;
|
||||
END_PROGRAM
|
||||
@@ -0,0 +1,18 @@
|
||||
(* motor.st *)
|
||||
FUNCTION_BLOCK Foo
|
||||
VAR_INPUT
|
||||
in : BOOL;
|
||||
END_VAR
|
||||
VAR_OUTPUT
|
||||
out : INT;
|
||||
END_VAR
|
||||
VAR
|
||||
persist : INT;
|
||||
END_VAR
|
||||
VAR_TEMP
|
||||
tmp : INT := 100;
|
||||
END_VAR
|
||||
tmp := tmp + 1;
|
||||
persist := persist + 1;
|
||||
out := tmp * 100 + persist;
|
||||
END_FUNCTION_BLOCK
|
||||
@@ -0,0 +1,11 @@
|
||||
[project]
|
||||
name = "case21"
|
||||
entry = "program MAIN"
|
||||
cycle_limit = 1000
|
||||
dt_ms = 10
|
||||
|
||||
[files]
|
||||
st = ["globals.st", "motor.st", "main.st"]
|
||||
|
||||
[gvl]
|
||||
file = "globals.st"
|
||||
Reference in New Issue
Block a user