这是 Windows 11 上的三进程自动化生产线仿真项目。目标应用为:
plc_app:有限 ST/SCL、梯形图与 PLC 状态机;robot_app:通用六轴机器人运动学、轨迹和执行状态机;visual_app:输送线、箱体、传感器、机器人和基础物理的 3D 可视化。
三个应用通过 ZeroMQ 和统一 JSON 协议通信,可运行在同一台电脑或同一局域网的不同电脑。
阶段6“Windows打包、部署与A0验收”已完成本机可执行部分。现在可以从离线发布ZIP安装并启动三个独立窗口,运行有限PLC逻辑、六轴机器人轨迹和3D场景完整闭环:
- PLC窗口提供ST编辑、行列错误定位、运行/暂停/单步/复位、ST/有限梯形图双向转换、三类变量监视和扫描日志;
- 3D程序使用 pyglet/OpenGL 显示输送线、左右目标区、传感器、参数化六轴机器人、夹爪和箱体;
- PLC执行统一IR,高箱输出程序号1/right,低箱输出程序号2/left,并通过REQ/REP启动机器人;
- 机器人窗口使用项目自有参数化六轴模型,执行FK/多初值IK、Ruckig轨迹、关节限制和基础碰撞验证;
- 程序号1执行右侧抓放,程序号2执行左侧抓放,动作顺序为Home、接近、抓取、抬升、搬运、放置、退离、Home;
- 机器人窗口显示六轴状态表、TCP、夹爪、状态机、活动步骤和关节轨迹曲线,并支持暂停、继续、停止、急停和复位;
- 机器人连续发布真实计算的关节、TCP、夹爪和Ready/Busy/Done/Fault状态;3D程序据此更新连杆、建立/解除箱体附着并以空间传感器产生目标到位;
- PLC只有在同一trace、同一箱体、方向匹配且
robot_done与target_reached同时成立时才发布一次周期完成; - 任一程序关闭后,其余窗口约2秒显示超时;重新启动后自动恢复在线。
3D场景采用固定步长半隐式积分、AABB平台接触和安全刚性附着,统一使用米、千克、秒;这是一套针对A0验收场景的基础物理,不宣称具备Bullet或工业数字孪生精度。最终发布候选包已使用三个真实进程通过10项正常/故障场景和20轮连续运行验证。严格A0结论仍为“未完全通过”,唯一未执行项是在另一套独立干净Windows 11系统或虚拟机中复测;当前只完成了项目外新目录、全新虚拟环境、离线安装和无IDE运行。
- Windows 11 x64;
- CPython 3.13.14;
- PowerShell 7/Windows PowerShell;
- 依赖轮子固定为
requirements.lock中的版本和 SHA-256。
发布包要求 CPython 3.13.14 x64。Python 本身采用 PSF License,而需求许可证白名单未明确列出PSF,因此交付ZIP不再分发Python运行时;部署电脑先独立安装该版本,再由离线安装脚本创建项目私有 .runtime。
cd D:\develop\Codex\CodexEKS\height-sort-sim
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install --require-hashes -r requirements.lock
.\scripts\run_phase4_checks.ps1一键打开三个窗口:
.\scripts\start_all.ps1也可以任意顺序分别启动:
.\.venv\Scripts\python.exe -m plc_app
.\.venv\Scripts\python.exe -m robot_app
.\.venv\Scripts\python.exe -m visual_app无窗口健康检查:
.\.venv\Scripts\python.exe -m plc_app --check
.\.venv\Scripts\python.exe -m robot_app --check
.\.venv\Scripts\python.exe -m visual_app --check无界面运行可用 --headless,--duration 10 表示10秒后退出。
- 任意顺序打开三个窗口,等待所有对端显示“在线”;
- PLC窗口默认已装载
plc_app/examples/height_sort.st并处于运行状态; - 在3D程序通信窗口点击“发送模拟高箱”,观察PLC变量
program_no=1、sort_right=True和机器人收到程序号1; - 机器人通过ACK后执行右侧抓放轨迹,观察六轴曲线、TCP、夹爪和步骤变化;3D通信窗口发送模拟右目标到位,机器人Done后PLC完成;
- 在PLC和机器人窗口分别点击“复位”,再发送模拟低箱,观察程序2左侧抓放和PLC完成;
- 在PLC窗口修改ST后点击“编译并装载”;错误程序会高亮对应行,成功后可暂停、单步、运行;
- 点击“ST → 梯形图”查看版本化JSON模型,或修改有限模型后点击“梯形图 → ST”;
- 关闭任一窗口,观察其余窗口显示“超时”,再重启并观察自动恢复。
PLC每次扫描记录在 logs/plc_scans/*.jsonl。完成一个周期后必须点击“复位”才能接受下一个箱体,这是阶段2的人工安全复位边界。
机器人独立演示可直接点击“程序1:向右”或“程序2:向左”。无界面20周期验收:
.\.venv\Scripts\python.exe -m robot_app --auto-test --cycles 20单独启动3D程序:
.\scripts\start_visual.ps1窗口操作:H生成高箱,L生成低箱,空格暂停/继续,R复位,C在机器人连杆处注入碰撞障碍,F恢复默认相机;按住鼠标左键拖动可环绕观察,滚轮缩放。HUD持续显示连接状态、trace_id、箱体位置、四个传感器、机器人/夹爪状态和故障。
无窗口20轮交替箱体验收:
.\.venv\Scripts\python.exe -m visual_app --auto-test --cycles 20一键启动三个窗口:
.\scripts\start_stage5_demo.ps1等待三个程序显示对端“在线”,在3D窗口按 H 生成高箱或按 L 生成低箱。PLC将自动决策并启动机器人;机器人抓放、目标传感器触发并回Home后,PLC验证 robot_done 与 target_reached,发布完成并自动复位下一轮。
运行10项真实三进程自动验收:
.\scripts\run_stage5_acceptance.ps1完整操作、故障演示和视频录制方法见 A0演示操作手册。
开发目录生成发布包:
.\scripts\build_release.ps1将 dist\height-sort-sim-0.6.0-a0-win11-x64.zip 解压后,在发布目录运行:
.\scripts\Install.ps1 -PythonExe C:\Path\To\Python313\python.exe
.\scripts\Start-All.ps1
# 停止由Start-All启动的三个程序
.\scripts\Stop-All.ps1也可运行 Start-PLC.ps1、Start-Robot.ps1 和 Start-Visual.ps1 独立启动。安装、配置、演示和排错分别见 Windows安装说明、A0演示操作手册 和 故障排查;实际验收结果见 阶段6验收报告。
每个进程的所有有效收发消息和被拒绝原始帧记录到 logs/messages/*.jsonl。
# 检查日志和Schema
.\.venv\Scripts\python.exe -m tools.message_replay inspect logs\messages\<文件名>.jsonl
# 把日志中的REQ命令重新发送到当前配置端点;新ID可避免被去重
.\.venv\Scripts\python.exe -m tools.message_replay replay logs\messages\<文件名>.jsonl --renew-ids| 范围 | 选择 | 固定版本 | 原因 |
|---|---|---|---|
| 语言 | CPython | 3.13.x | 本机已验证,候选二进制均有 Windows x64 wheel |
| 通信 | pyzmq / libzmq | 27.1.0 | REQ/REP、PUB/SUB、Poller;Windows wheel 可用 |
| ST 解析 | Lark | 1.3.1 | MIT、纯 Python、无必需依赖,适合受限语法 |
| JSON Schema | fastjsonschema | 2.21.2 | BSD、无必需依赖,可预编译校验器 |
| 轨迹 | Ruckig | 0.19.4 | MIT、Windows wheel、本地点到点 jerk 限制轨迹 |
| 3D 窗口/渲染 | pyglet | 2.1.15 | BSD、纯 Python、无必需依赖,不捆绑来源不明 DLL |
| PLC/机器人基础 UI | Python 标准库 | Tk状态工作台 | 首版减少依赖;打包前审计 Python/Tcl/Tk 运行时 |
| 运动学/碰撞/基础物理 | 项目自有实现 | — | 控制 A0 语义和许可证,保持确定性和可测试性 |
Panda3D、Bullet/PyBullet、Pinocchio 等评估结论见 许可证审计。
- 架构与 A0 拆解
- 通信协议
- 坐标系
- 有限 ST/SCL
- 梯形图与 PLC IR
- 六轴机器人模型与算法
- 许可证审计
- 测试策略
- 阶段1完成报告
- 阶段2完成报告
- 阶段3完成报告
- 阶段4完成报告
- 阶段5端到端测试报告
- A0演示操作手册
- Windows安装说明
- 故障排查
- 阶段6验收报告
height-sort-sim/
AGENTS.md
README.md
LICENSE
pyproject.toml
requirements.lock
config/
docs/
shared/
protocol/
communication/
config/
logging/
ui/
plc_app/
robot_app/
visual_app/
tools/
scripts/
tests/
unit/
integration/
end_to_end/
third_party/