最近公司要开发一个新项目,用到CAN总线,想过用之前自己搞过的协议,感觉不太稳定,上网搜了下,貌似CANOPEN是比较好的协议栈,就想拿来用,研究了些天,懂一了些东西,还有很多东西不是太懂,想请教一下坛子里搞过这一块儿的兄弟们。我现在用的是canfestival。
1.关于CAN-ID的理解
看资料中CAN-ID的范围高4位就是用来表示通信对象类型的,低7位是节点ID,TPDO1、RPDO1这些每个PDO都要占用一个通信对象,如此看来,4个位,最多也就有16个通信对象,而“CANopen预定义主/从连接集”中已经定义了4对PDO(4个TPDO和4个RPDO),再除去SDO、网络管理、同步报文这些,已经差不多占满16个通信对象了,如果我想扩展更多的PDO,还怎样扩展呢?
2.这个协议栈是否适用于多节点的系统?
因为项目中的设备数量可能会多达一百多台,每台设备需要实时上传的数据如果按PDO的的最长长度8字节来算,可能需要5个PDO,而设备的TPDO都要在主机中有RPDO与之相对应,如果我100台设备,每台设备5个TPDO,那主机的对象字典中岂不是要有500个RPDO与之对应?而对象字典中每个PDO又要有参数、有映射,每个PDO的参数都需要72个字节空间,这个空间占用在stm32上有点太大了。所以就想问一下,是我的理解有误,还是的确不适用于这种系统? |