一、菊花链拓扑基础

1.1 什么是菊花链拓扑

菊花链(Daisy Chain)是一种串行连接的通信拓扑结构,设备像链条一样依次首尾相连。每个节点不仅作为终端设备,还充当中继器,将数据帧逐级转发至下一节点。这种结构常见于RS485/RS422、CAN总线、SPI以及工业以太网(如EtherCAT)等场景。

节点1 节点2 节点3 节点4 数据流向 转发 转发 转发

▲ 菊花链拓扑:设备依次串联,数据逐级转发

1.2 菊花链与星型/总线型拓扑的区别

对比维度 菊花链 星型 总线型
连接方式 设备串行级联 所有设备连接至中心节点 所有设备共享同一总线
布线复杂度 低(线缆少) 高(中心辐射) 低(主干线)
故障影响 单点故障导致后续节点断连 中心节点故障全网瘫痪 终端故障影响较小
扩展性 容易扩展,但延迟累积 受限于中心端口数 受限于总线负载
典型应用 EtherCAT, RS485, SPI 以太网交换机 CAN, Modbus RTU
中心 节点A 节点B 节点C

⭐ 星型拓扑

节点1 节点2 节点3

📡 总线型拓扑

节点1 节点2 节点3 → 转发 → 转发

🔗 菊花链拓扑

1.3 菊花链的优缺点

✅ 优点

  • 布线简洁:线缆用量少,适合长距离或空间受限场景。
  • 扩展方便:新增节点只需串入链路末端,无需改动主干。
  • 成本较低:无需中心交换机或集线器,减少硬件投入。
  • 天然顺序性:适合流水线、传感器阵列等需要确定顺序的应用。

⚠️ 缺点

  • 单点故障风险:中间节点失效会导致后续节点全部离线。
  • 延迟累积:每级转发增加处理时延,节点过多时实时性下降。
  • 调试困难:故障定位需逐级排查,维护复杂度高。
  • 带宽瓶颈:所有节点共享链路带宽,末端节点可能饥饿。
节点1 节点2 ❌ 故障 节点3 节点4 节点5 ⛔ 链路中断 节点2故障 → 节点3/4/5全部失联

🔴 菊花链典型故障:中间节点损坏导致后续节点全部离线

📄 菊花链配置示例(RS485 半双工)

// 菊花链节点配置(基于Modbus RTU)
// 每个节点需设置唯一地址,并使能中继转发

#define NODE_ADDR  0x02

void setup() {
  Serial.begin(115200);
  pinMode(RE_DE, OUTPUT);  // RS485 收发控制
  digitalWrite(RE_DE, LOW); // 默认接收
}

void loop() {
  if (Serial.available()) {
    uint8_t byte = Serial.read();
    // 判断是否为本节点数据帧
    if (isMyAddress(byte)) {
      processRequest();
    } else {
      // 转发至下一节点(菊花链关键)
      digitalWrite(RE_DE, HIGH); // 切换发送
      Serial.write(byte);
      Serial.flush();
      digitalWrite(RE_DE, LOW);  // 恢复接收
    }
  }
}
💡 故障排查提示:菊花链中若某节点无响应,先检查该节点供电及物理连接,然后使用逐级环回测试定位断点。建议在链路首尾加装终端电阻(120Ω for RS485)。

专注课程资料整理