不知道这个问题现在解决没,按照我的理解,首先看CAN总线技术,CAN总线的物理层和数据链路层已经规定了很多,把数据帧的格式规定好了,物理信号转逻辑信号、仲裁校验等操作有相应的驱动器和控制器完成,已经能够使用了。CANopen也是在CAN2.0基础上,将11位的标识符重新定义了一下,然后定义了几个通信对象(PDO,SDO,NMT),然后还有对象字典可以存储设备的很多信息,主站可以读写设备的一些信息。如果有好多设备,分布式系统,对实时性要求不是很高,可以采用CANopen。RM的话,其实没有那么多设备,也不需要对象字典来存储那么多信息,另外生产CANopen的厂家都必须向CiA协会申请唯一的厂商代码,其他应该也要服从协会的一些规定,对于自己开发的话可能用不太到。其实自己开发的话,完全可以在CAN的11位标识符很和8字节的数据上做文章,设计自己的应用层协议。 |