CANopen作为一种非常实用的通信协议在工控领域非常实用,相对于RS485的MODBUS协议,该协议有速度快,稳定性好的优点。
1, CAN发送数据时,每次是发一个包,每个包还带一个ID,这点和RS485有差别。
2, CANopen是软件协议,是搭建在CAN硬件之上的协议。
3, CANopen和485的modbus类似,都是是一个主站多个从站的形式。主站一般由PLC或者连接CAN模块的PC实现,从站只要有CAN收发器芯片就可以了。
4, CANopen实现最主要的功能有三个,心跳,SDO和PDO。
1) 心跳:所有的从站都会按一定的节奏发送一个固定格式的心跳包给主站,主站可以设置一个定时检测,如果一定时间内没有接收到心跳就会判断该从站掉线。
2) SDO:类似MODBUS中的10命令,发送固定格式的CAN数据包,该数据包可以修改其他从站的对象字典(配置参数),从站设备接收到该命令后会有结果返回;
3) PDO:类似主动上传模式,设置完成后,会按照一定延时自动发送,保证传输成功,该功能属于单向传输。
5, 一些名词的解释
1) 对象字典:其实就是一个配置列表,每个从站和每个主站都有一个对象字典,对象字典里可以配置该设备如何进行心跳、PDO、SDO等操作。也可以实现自定义参数,比如对象字典某个地址存放小数点的点位,主站通过SDO修改这个地址来修改小数点位。
2) 每个从站节点有以下状态:
初始化:上电后对CAN控制器进行初始化