落地 12.2 二十个用例目录:toml + .st + 期望表。
- tests/cases/ 01~20:13 正例 / 6 负例 / 1 运行时故障 - 负例冻结报错类别:非 GVL 写全局、同名全局、io.var 未声明、FUNCTION 写全局、未声明实例、循环调用 - tests/README 补充用例清单与点亮节奏
This commit is contained in:
@@ -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 序列跑两遍,槽位与工程哈希一致(回放确定性)
|
||||
@@ -0,0 +1,7 @@
|
||||
(* globals.st *)
|
||||
VAR_GLOBAL
|
||||
EmergencyStop : BOOL := FALSE;
|
||||
I0_0 : BOOL;
|
||||
I0_1 : BOOL;
|
||||
Q0_0 : BOOL;
|
||||
END_VAR
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user