基于LSS的CANopen自动寻址系统架构设计相关问题咨询
问题1 无效节点ID静默状态合规性说明
- 这种设计完全符合CiA 305规范要求。CiA 305明确规定支持从站上电后处于未配置节点ID状态:该状态下从站的节点ID为无效值(规范约定有效节点ID范围为1~127,可将默认值设为255标识无效),仅响应固定COB-ID的LSS服务报文(主站发LSS用
0x7E4,从站应答LSS用0x7E5,报文不依赖节点ID生成),不主动发送任何其他CAN报文(包括boot-up报文),不会占用总线带宽,也完全不会出现ID冲突问题。 - 你不需要设置默认有效节点ID,按当前方案实现即可:从站获得主站分配的有效节点ID后,再发送boot-up报文进入正常工作状态,完美适配多设备同时上电的场景。
问题2 节点扫描实现方案说明
- 无法通过广播SDO的方式查询所有节点。SDO是CANopen定义的点对点服务,规范明确禁止从站响应ID为0的广播SDO请求,即便有从站私自实现该逻辑,多个从站同时应答也会直接导致总线数据冲突,完全不可用。
- 必须采用遍历1~127所有有效节点ID的方式扫网:逐个向对应ID发送SDO上传请求(推荐读取对象字典
0x1018的身份信息,可直接匹配设备序列号),有正常响应的即为已接入的有效节点。127个节点的遍历耗时极低,单条SDO超时设为10ms的话全量扫描也仅需1秒左右,完全满足主站重启后的网络重映射需求。
内容的提问来源于stack exchange,提问作者Gustavo Laureano
相关产品推荐
相关产品推荐

