2026-08-03 17:54:36 +08:00
2026-08-03 17:54:36 +08:00
2026-08-03 15:18:28 +08:00
2026-08-03 17:54:36 +08:00
2026-07-31 10:20:33 +08:00
2026-07-30 13:55:54 +08:00
2026-08-03 16:35:23 +08:00
2026-07-31 14:19:48 +08:00

ReinLoop

ReinLoop 是一套面向压力控制、容积测量和系统辨识的完整系统,由以下三个部分组成:

  • ReinLoop 客户端:基于 Modbus 的 Python GUI,提供 PID、强化学习和手动控制,并执行容积测量与系统辨识。
  • ControlPanel:Electron B 端工作台,用于组织、许可证、模型、配置、辨识数据和控制数据管理。
  • Server:Node.js 服务,负责文件中转、配置发布、辨识反馈、许可证与元数据持久化。

接口、权限边界、请求字段和响应格式统一维护在 server/features.md

仓库结构

ReinLoop/
├── ReinLoop/       # Python 控制客户端与 GUI
├── ControlPanel/   # Electron B 端工作台
├── server/         # Node.js / Express 服务
├── changelog.md    # 变更记录
└── toserver.md     # 服务端待办与协议说明

核心流程

压力控制、容积测量与辨识

ReinLoop 客户端通过 Modbus TCP 连接 MT2-AM8 模块,支持 PID、强化学习和手动控制。容积测量采用一次性配置请求:A 端发起请求,B 端提交经校验的配置后,A 端读取并执行测量。

系统辨识由 B 端发布参数,A 端上传稳定压力 JSON 与辨识 CSV。ControlPanel 下载并绘图后由操作者评审:结果为 1 时结束本轮辨识;结果为 0 时必须先发布一套新参数,A 端读取后重新辨识。

组织、许可证与模型

设备 ID 固定为 <company-code>/<line-code>,公司、产线、模型目录、配置发布、绘图收件箱和辨识反馈均使用该 ID。ControlPanel 支持:

  • 新增公司与产线,并显示基于服务端心跳的在线状态;
  • 签发、登记、查看、下载和撤销 RSA-PSS 许可证;私钥只在操作者本地使用;
  • 按产线上传、下载、删除模型及管理控制数据;
  • 发布容积测量和系统辨识配置,处理辨识数据与人工反馈。

快速开始

Server

要求 Node.js 20 或更高版本。

cd server
npm install
$env:B_ADMIN_TOKEN="your-admin-token"
npm start

默认服务地址为 http://127.0.0.1:3000,健康检查为 http://127.0.0.1:3000/health。业务请求统一使用根路径。跨设备部署时,应使用服务器局域网 IP 或 HTTPS 域名,而不是 127.0.0.1

ControlPanel

cd ControlPanel
npm install
$env:REINLOOP_API_URL="http://server-address:3000"
$env:B_ADMIN_TOKEN="your-admin-token"
npm run gui

也可在界面顶部输入 Server URL 和管理令牌;令牌只由 Electron 主进程使用,不会保存到浏览器存储或配置文件。Windows 打包使用 npm run pack:win,产物位于仓库根目录的 Build 文件夹。

ReinLoop 客户端

安装 Python 依赖后,在 ReinLoop 目录运行:

python main.py

客户端服务地址和设备目录由 api.py 配置。控制数据、辨识数据和容积测量结果经 Server 上传;许可证、模型、公司和产线操作由 ControlPanel 完成。

部署与数据

  • 新生产环境使用 PostgreSQL:设置 NODE_ENV=productionDATABASE_URL;迁移可通过 npm run migrate 重复执行。
  • 设置高熵 B_ADMIN_TOKENLICENSE_PUBLIC_KEY_PATHPUBLIC_BASE_URLHOSTPORT 和可选的 DATA_DIR
  • 生产环境应使用 HTTPS,并定期备份 PostgreSQL 与完整 DATA_DIR;不得提交、上传或保存 RSA 私钥。
  • 模型存于 data/models/<company-code>/<line-code>/;其他文件由 DATA_DIR 管理。已处理辨识文件默认保留 30 天后清理。
  • 非模型文件下载需要服务端签发的短期凭证;直接拼接文件地址会被拒绝。

外部访问出现 502 Bad Gateway 时,先检查 http://127.0.0.1:3000/health,再检查反向代理上游地址、端口和服务日志。

验证

cd server
npm run check
npm test

已知事项

  • 稳定压力数组 JSON 的最终结构、两套参数的正式默认值、单位与范围仍需产品或算法确认。
  • 图像是否通过目前由人工判断,尚未提供自动判定阈值或算法。
  • Electron 的第三方构建依赖存在已知安全告警;未执行可能造成破坏性升级的 npm audit fix --force
S
Description
No description provided
Readme
523 KiB
Languages
Python 60.2%
JavaScript 35.7%
CSS 2.1%
HTML 2%