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