落地 12.2 二十个用例目录:toml + .st + 期望表。

- tests/cases/ 01~20:13 正例 / 6 负例 / 1 运行时故障
- 负例冻结报错类别:非 GVL 写全局、同名全局、io.var 未声明、FUNCTION 写全局、未声明实例、循环调用
- tests/README 补充用例清单与点亮节奏
This commit is contained in:
2026-08-19 14:43:47 +08:00
parent dd7f7bcba7
commit ef94ab1987
70 changed files with 513 additions and 0 deletions
+11
View File
@@ -0,0 +1,11 @@
# 期望:编译通过;I 组合 → `Q0_0` 与急停语义一致
| I0_0 | I0_1 | EmergencyStop | Q0_0 |
|---|---|---|---|
| TRUE | FALSE | FALSE | TRUE |
| TRUE | TRUE | FALSE | FALSE |
| FALSE | FALSE | FALSE | FALSE |
| TRUE | FALSE | TRUE | FALSE |
- `Q0_0 = I0_0 AND NOT I0_1 AND NOT EmergencyStop`
- 固定 I 序列跑两遍,槽位与工程哈希一致(回放确定性)
+7
View File
@@ -0,0 +1,7 @@
(* globals.st *)
VAR_GLOBAL
EmergencyStop : BOOL := FALSE;
I0_0 : BOOL;
I0_1 : BOOL;
Q0_0 : BOOL;
END_VAR
+8
View File
@@ -0,0 +1,8 @@
(* main.st *)
PROGRAM MAIN
VAR
starter : MotorStarter;
END_VAR
starter(start := I0_0, stop := I0_1);
Q0_0 := starter.Q;
END_PROGRAM
+13
View File
@@ -0,0 +1,13 @@
(* motor.st *)
FUNCTION_BLOCK MotorStarter
VAR_EXTERNAL
EmergencyStop : BOOL;
END_VAR
VAR_INPUT
start, stop : BOOL;
END_VAR
VAR_OUTPUT
Q : BOOL;
END_VAR
Q := start AND NOT stop AND NOT EmergencyStop;
END_FUNCTION_BLOCK
+28
View File
@@ -0,0 +1,28 @@
[project]
name = "line1"
entry = "program MAIN"
cycle_limit = 100000
dt_ms = 10
[files]
st = ["globals.st", "motor.st", "main.st"]
# 全工程只允许这一处出现 VAR_GLOBAL(第一版:单个文件)
[gvl]
file = "globals.st"
# 可选:I/O 绑定。不创造变量,var 必须已在 GVL 里声明
[[io.input]]
var = "EmergencyStop"
channel = 0
bit = 2
[[io.input]]
var = "I0_0"
channel = 0
bit = 0
[[io.output]]
var = "Q0_0"
channel = 0
bit = 0