建立四模块 CMake 骨架与 line1 样例。

- compiler / vm 空静态库,host 可执行打印版本
- 顶层解开 add_subdirectory,tests 接入 CTest(host_version 通过)
- examples/line1 落地 project.toml 与三个 .st
- Types.h 注释补饱和规则,与 Doc/isa 一致
- .gitignore 忽略 Doc/会话记录.md
This commit is contained in:
2026-08-19 10:09:27 +08:00
parent ff244888c3
commit 9a35a881d1
14 changed files with 135 additions and 4 deletions
+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