0

我是 Canopen 的新手,需要构建一个具有以下特征的系统:

  • 1个canopen Master(也是网关)
  • 多个canopen从节点,由同一设备的多个实例组成(具有唯一的SN,根据LSS的要求)

我想将此设备设计为在将其连接到总线之前不需要任何预配置,并且还允许以前连接到另一个 canopen 总线(因此具有以前的节点 ID)的设备无缝连接到新总线(因此它们的节点 ID 在重新启动后不应保留)。在了解了 Canopen 和 LSS 服务后,我认为一个好的解决方案是:

  • 该设备没有持久的节点 ID,并且在每次启动时需要由主设备通过 LSS 对其进行寻址
  • master 将通过 LSS 服务定期扫描和寻址新节点(允许设备热插拔)
  • 如果由于任何原因主节点重新启动,它可以通过简单的节点扫描重新检测所有已寻址的节点(所有地址的 SDO 信息上传)

现在我的问题:

  1. 我不清楚启动时如何拥有“无效的 canopen 节点 ID”(在此处引用:https ://www.can-cia.org/can-knowledge/canopen/cia305/ ),如果它没有初始节点 ID(因此只回复 LSS 寻址服务)它应该在总线上完全静默,甚至在通电时不发送启动消息(不兼容 canopen),直到它被 LSS 服务寻址,但如果我给它任何默认的初始节点 ID,当多个节点同时通电时会导致冲突(这将是每次系统启动时的正常行为,包括主设备在内的所有设备都将同时通电) ,像这样“未寻址”和无声的canopen设备是否有效,并且仍然符合canopen标准?如何处理这种情况?
  2. 我读到节点 ID 0 表示广播,所以这意味着我的主人只需一个命令(节点 ID 0 上的 SDO 上传信息)就可以要求所有(寻址的)节点信息(通过 SDO 上传)?还是不允许,我应该查询总线上的所有127个地址来重新映射网络?

谢谢

4

1 回答 1

1

我希望我能得到你的问题,因为它们有点长:

问题 1

是的,如果您的节点没有节点 ID,则它符合 CANopen。这就是 LS-Service 的用途。只要 LSS 主站没有为从站分配节点 ID,您就无法通过 SDO 请求与从站通信。在未配置状态下也无法进行 PDO 通信。

问题2

ID 0 广播仅适用于主 NMT 命令。这意味着 CANopen 主站可以同时设置系统的所有 NMT 状态。SDO 通信仅在 Master 和一个 Slave 之间可用,因此您必须单独询问每个节点。

于 2021-10-15T08:40:44.500 回答