docs: 新增 .qoder Repowiki 知识库文档
This commit is contained in:
+27
@@ -0,0 +1,27 @@
|
||||
schema_version: 1
|
||||
module_path: js_frontend/motor
|
||||
title: 电机控制台多传输模块
|
||||
scope:
|
||||
- js/motor/
|
||||
source_files: []
|
||||
depends_on: []
|
||||
related_to:
|
||||
- path: js_frontend/can
|
||||
reason: CAN 控制台与电机控制台均通过 POST /can/send_batch 发送帧到 ESP32 设备,但 CAN 用于通用报文编辑而电机用于特定 CMD/CONFIG 控制流程。
|
||||
- path: python_server
|
||||
reason: 电机控制台通过 /ecat/api/* 反向代理访问本地 ecat_native.exe 的 /api/motor/*(transport-ecat.js 中拼接路径发送)。
|
||||
kk_module_id: 71087b31-4c6d-4a07-8d58-1f3e348444bf
|
||||
kk_ordinal: 3
|
||||
kk_cards:
|
||||
architecture_design:
|
||||
id: 00c57461-8294-47bf-88b9-8c362ac14bfc
|
||||
title: 电机控制台多传输模块
|
||||
coding_conventions:
|
||||
id: 13ef69f8-0bc9-4b61-bd64-c0fa7a39ef2c
|
||||
title: 电机控制台多传输模块
|
||||
overview:
|
||||
id: df61a7ec-5adc-4d4f-b0e9-a2867d026ab5
|
||||
title: 电机控制台多传输模块
|
||||
tech_stack:
|
||||
id: 1dea780b-05c9-4fe6-ad60-ffef2d6854ec
|
||||
title: 电机控制台多传输模块
|
||||
+1
@@ -0,0 +1 @@
|
||||
原生 JavaScript ES Module,使用 Web Worker 作为定时节拍源;WiFi 链路通过 Fetch + AbortSignal.timeout 访问设备 HTTP 端点;EtherCAT 链路经本地页面服务器的同域反向代理(绑定 127.0.0.1,无 CORS)访问后端 `ecat_native.exe` 守护进程;二进制状态协议用 DataView 解析(魔数 0x4D53,v0.70/v0.74 双版本兼容)。
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
模块以 `main.js` 为 ES Module 入口(由 motor.html 外提),集中维护全局 `state`(连接态、刷新间隔、解码缓存、命令序列、版本缓存等)并通过工具栏在 `wifi` / `ecat` 两条链路之间切换。
|
||||
|
||||
内部按职责分层:
|
||||
- 传输选择层 `transport.js` 导出 `createTransport(id, ctx)` 工厂,根据 id 创建具体实现,并以 `ctx` 注入 `getBaseUrl`、`recordSlow`、`isTransient` 避免循环依赖。
|
||||
- 两路传输独立实现同一契约(见 `transport-ecat.js` 头注释列出的接口表):`transport-wifi.js` 调用 ESP32 的 HTTP API(`/system/status`、`/motor/state?bin=1`、`/can/send_batch` 等);`transport-ecat.js` 经本地页面服务器 `/ecat/api/*` 反向代理到 `tools/ecat` 的 C 守护进程,完成全自动接入(自动拉起服务、打开网卡、进入 OP、起 PDO 循环)并将 EtherCAT 过程数据形状补齐为 WiFi 契约(config_data、version seq、nodeIdReport)。
|
||||
- `refresh-rate.js` 抽离为纯函数库,按链路各自管理默认值/最小值/钳制/旧键迁移,使刷新策略可脱离 DOM 自测。
|
||||
- `tick.worker.js` 是一个 Dedicated Worker,仅负责按指定 interval 持续投递 `tick` 消息,规避浏览器后台标签页对 setTimeout/setInterval ≥1s 节流。
|
||||
|
||||
依赖方向单向收敛于 `main.js` → `transport.*`;上层解码器、节点列表、STATUS 面板、波形、命令序列和全部流控策略(互斥/退避/冷却/latest-wins)完全不感知底层链路差异。
|
||||
+1
@@ -0,0 +1 @@
|
||||
提供电机控制台的业务逻辑入口,通过可插拔的 WiFi/HTTP 与 EtherCAT 传输层抽象,驱动状态轮询、帧发送、命令序列与波形等共享逻辑。
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
- 两种传输实现统一通过工厂 `createTransport` 产出,并按相同方法签名(probe/fetchStatus/fetchMotorState/sendFrames/fetchVersionNode 等)对外暴露,主流程只调用抽象接口。
|
||||
- 传输层错误对象统一附加 `.transient` 标记与可选 `.status`,由 main.js 的失败计数与断线逻辑识别,区分瞬时错误与硬失败。
|
||||
- 慢请求通过注入的 `recordSlow(url, ms, errMsg?)` 回调上报,所有 fetch/POST 路径都包裹计时与记录。
|
||||
- 用户偏好状态写入 localStorage 时采用「按链路分组」的 Map 结构(如 `refreshByTp`、历史 `dcu_motor_transport`),新链路扩展只需改默认表而无需改动持久化格式。
|
||||
- Worker 通信仅使用 `{type, ...}` 消息体(start/update/stop 对应 tick 启停),不传递复杂对象,保持轻量心跳协议。
|
||||
Reference in New Issue
Block a user