【发布时间】:2021-08-20 19:29:37
【问题描述】:
因为 SDO 通信用于点对点通信。 CANOpen 服务器是否可以同时与两个不同的客户端针对同一个对象进行通信?
例如: 节点 1(服务器):ID-5,OD:6023h,长度:100 字节 节点 2(客户端):ID-10 节点 3(客户端):ID-11
Node-2 和 Node-3 可以同时从 Node-1 上传 6023h 吗?
如果不是,这是对 CANOpen 协议的限制吗?
【问题讨论】:
因为 SDO 通信用于点对点通信。 CANOpen 服务器是否可以同时与两个不同的客户端针对同一个对象进行通信?
例如: 节点 1(服务器):ID-5,OD:6023h,长度:100 字节 节点 2(客户端):ID-10 节点 3(客户端):ID-11
Node-2 和 Node-3 可以同时从 Node-1 上传 6023h 吗?
如果不是,这是对 CANOpen 协议的限制吗?
【问题讨论】:
对于给定的 CAN 标识符,只能有一个发送器,否则将无法解决总线冲突。因此,单个 SDO 服务器不可能存在多个 SDO 客户端。
但是,一个 CANopen 设备可以包含/托管多个逻辑 SDO 服务器,这可能允许它们为多个 SDO 客户端提供服务。
当进行相应的编程和配置时,CANopen 节点也可以充当网关,接受来自多个 SDO 客户端的连接并将它们路由到另一个 SDO 服务器。但是不知道有没有这个的标准协议。
同样,主要规则是给定 CAN 标识符只有一个发射器。
【讨论】:
不,这是不可能的。 SDO 是一种请求-响应协议,本质上是一对一的。如果您想同时与多个客户端通信,请使用 PDO,它基本上是一种发布-订阅协议。
【讨论】: