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控制器进行初始化
应用层复位:应用程序复位,如开关量模拟量输出的复位
通讯复位:节点的CANopen通讯复位,复位后可以进行CANopen通讯
预操作状态:操作就绪,此时不能进行PDO通信,可以进行SDO参数配置,主站可以进行网络管理
操作状态:CANopen激活,PDO按照对象字典的设置进行传输,SDO也可以传输数据和修改参数
停止状态:主站发送停止状态,PDO通信停止
主站可以通过发送命令让网络中任意一个从站节点进行状态切换。
作者:幻想东方梦
https://www.bilibili.com/read/cv8397860/
出处: bilibili