4.3 KiB
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=production与DATABASE_URL;迁移可通过npm run migrate重复执行。 - 设置高熵
B_ADMIN_TOKEN、LICENSE_PUBLIC_KEY_PATH、PUBLIC_BASE_URL、HOST、PORT和可选的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。