使用 LSS 的 Canopen 自动寻址,如何构建系统
Canopen auto addressing with LSS, how to architect the system
我是 Canopen 的新手,需要构建具有以下特征的系统:
- 1 canopen Master(也是网关)
- 多个canopen从节点,由同一设备的多个实例组成(具有唯一的SN,根据LSS的要求)
我想将此设备设计为在将其连接到总线之前不需要任何预配置,并且还允许以前连接到另一个 canopen 总线(因此具有以前的节点 ID)的设备无缝连接连接到新总线(因此它们的节点 ID 不应在重启后保留)。
在了解了 Canopen 和 LSS 服务后,我认为一个好的解决方案是:
- 设备没有持久节点ID,每次开机都需要master通过LSS寻址
- master会通过LSS服务定期扫描寻址新节点(允许设备热插拔)
- 如果主站由于任何原因重启,它可以通过简单的节点扫描(所有地址的 SDO 信息上传)重新检测所有已经寻址的节点
现在我的问题:
- 我不清楚当它们启动时如何有一个“无效的 canopen 节点 ID”(在此处引用:https://www.can-cia.org/can-knowledge/canopen/cia305/),如果它没有初始节点 ID(因此只回复LSS 寻址服务)它应该在总线上完全保持沉默,甚至在通电时(不符合 canopen 标准)不发送启动消息,直到它被 LSS 服务寻址,但是如果我给它任何默认的初始节点 ID当多个节点同时上电时会导致冲突(这将是每次系统启动时的正常行为,包括主设备在内的所有设备将同时上电),拥有一个canopen设备是否有效“未解决”并且像这样保持沉默,并且仍然符合 canopen 标准?如何处理这种情况?
- 我读到节点 ID 0 意味着广播,所以这意味着我的主人可以通过一个命令(节点 ID 0 上的 SDO 上传信息)请求所有(寻址的)节点信息(通过 SDO 上传)?还是不允许,我应该查询总线上所有127个地址重新映射网络?
谢谢
我希望能得到你的问题,因为它们有点长:
问题 1
是的,如果您有一个没有节点 ID 的节点,它是符合 CANopen 标准的。这就是 LS-Service 的用途。只要 LSS 主站没有为从站分配节点 ID,您就无法通过 SDO 请求与从站对话。此外,在未配置状态下无法进行 PDO 通信。
问题 2
ID 0 广播仅适用于 Master NMT 命令。这意味着 CANopen 主站可以同时设置系统的所有 NMT 状态。 SDO通信只能在Master和一个Slave之间进行,所以你必须单独询问每个节点。
我是 Canopen 的新手,需要构建具有以下特征的系统:
- 1 canopen Master(也是网关)
- 多个canopen从节点,由同一设备的多个实例组成(具有唯一的SN,根据LSS的要求)
我想将此设备设计为在将其连接到总线之前不需要任何预配置,并且还允许以前连接到另一个 canopen 总线(因此具有以前的节点 ID)的设备无缝连接连接到新总线(因此它们的节点 ID 不应在重启后保留)。 在了解了 Canopen 和 LSS 服务后,我认为一个好的解决方案是:
- 设备没有持久节点ID,每次开机都需要master通过LSS寻址
- master会通过LSS服务定期扫描寻址新节点(允许设备热插拔)
- 如果主站由于任何原因重启,它可以通过简单的节点扫描(所有地址的 SDO 信息上传)重新检测所有已经寻址的节点
现在我的问题:
- 我不清楚当它们启动时如何有一个“无效的 canopen 节点 ID”(在此处引用:https://www.can-cia.org/can-knowledge/canopen/cia305/),如果它没有初始节点 ID(因此只回复LSS 寻址服务)它应该在总线上完全保持沉默,甚至在通电时(不符合 canopen 标准)不发送启动消息,直到它被 LSS 服务寻址,但是如果我给它任何默认的初始节点 ID当多个节点同时上电时会导致冲突(这将是每次系统启动时的正常行为,包括主设备在内的所有设备将同时上电),拥有一个canopen设备是否有效“未解决”并且像这样保持沉默,并且仍然符合 canopen 标准?如何处理这种情况?
- 我读到节点 ID 0 意味着广播,所以这意味着我的主人可以通过一个命令(节点 ID 0 上的 SDO 上传信息)请求所有(寻址的)节点信息(通过 SDO 上传)?还是不允许,我应该查询总线上所有127个地址重新映射网络?
谢谢
我希望能得到你的问题,因为它们有点长:
问题 1
是的,如果您有一个没有节点 ID 的节点,它是符合 CANopen 标准的。这就是 LS-Service 的用途。只要 LSS 主站没有为从站分配节点 ID,您就无法通过 SDO 请求与从站对话。此外,在未配置状态下无法进行 PDO 通信。
问题 2
ID 0 广播仅适用于 Master NMT 命令。这意味着 CANopen 主站可以同时设置系统的所有 NMT 状态。 SDO通信只能在Master和一个Slave之间进行,所以你必须单独询问每个节点。