feat(comm): 1.6.21 段2改电机整轮密排, 删段4历史覆盖窗

- 段2(32..543): count=实际电机数(0..9), 空节点不占位, 槽序按 node_id 升序
- 同号多通道取 seq 最新; magic@35=0xA5 区分密排与旧滑窗
- 差分填充: 节点集合+seq/online 未变时整段复用影子
- 删段4 fillRxWindow; 非STATUS仍走段1/3最近一帧
- 输入PDO总长仍600B, SII无需重刷; 主站需按count密排解码
- 动机: 接3电机却看到5状态帧(空槽占位); win_base滑窗对已识别电机无意义
This commit is contained in:
cbb
2026-09-11 01:08:37 +08:00
parent 959e2aef6e
commit 1742d9a759
8 changed files with 254 additions and 483 deletions
+3 -2
View File
@@ -52,8 +52,9 @@ public:
* @brief 输出探针(1.6.0 输出按需全量读,配合 SSC PDO_OutputMapping)。
* @param[in] head 输出 PDO 头 12B(覆盖 SEQ@0 / WIN@8 / FLAGS@3)。
* @return true=需要全量读(seq 沿或清统计请求);false=本周期跳过全量读。
* @note 每周期由 PDI_Isr 在读 ESC 前调用:内部刷新桥的 s_winBase 并做 seq
* 基准 priming;s_lastSeq 的推进仍留在全量路径(processOutput)。
* @note 每周期由 PDI_Isr 在读 ESC 前调用:做 seq 基准 priming 与沿判定;
* s_lastSeq 的推进仍留在全量路径(processOutput)。1.6.21 起不再
* 维护 win_base(段 2 电机整轮密排,无滑窗)。
*/
static bool outputProbe(const uint8_t *head);