04_服务数据对象(SDO)

主站设备通过SDO可以读取对象字典中的对象内容,或者在允许的情况下修改对象数据。

SDO传输框架

SDO的传输方式遵循C/S,即客户端服务器模式,一问一答的形式。

CAN总线网络中的SDO客户端发起,SDO的服务端做出应答。

SDO之间的数据交换至少需要2个CAN报文才能实现,且2个CAN报文的标识符不一样。

SDO的传输模型如下图所示:

04_服务数据对象(SDO)_第1张图片

SDO传输报文 

SDO的传输分为不高于4个字节和高于4个字节的对象数据传输。

小于等于4个字节的采用加速SDO传输方式。

大于4个字节采用分段传输或块传输方式。

数据段采用小端模式,低位在前,高位在后。

所有的SDO报文数据段都必须是8个字节,多余的补零。

SDO传输报文格式如下图所示:

04_服务数据对象(SDO)_第2张图片

 命令代码,说明了SDO的传输类型和传输数据的长度。

SDO加速写传输报文

04_服务数据对象(SDO)_第3张图片

“-”表示有数据但不予考虑,写数据时建议写0即可。

SDO加速读传输报文 

SDO读操作不高于4个字节的对象报文时,采用加速方式。加速SDO读报文如下表:

04_服务数据对象(SDO)_第4张图片

 下面使用SDO来控制伺服电机的运动的实列来说明SDO的使用方法;

该伺服驱动器的单位:10000 脉冲数等于编码器1圈

位置单位:脉冲数

速度单位:脉冲数/秒

加速度单位:脉冲数/秒平方

速度值 0x60FF == 0XC350  == 300 r/m

假设伺服驱动器的设备节点为0x03;

  1. 先复位节点:    0x0000 81 00 00 00 00 00 00 00
  2. 远程启动节点:0x0000  01 00 00 00 00 00 00 00
  3. 0x603 2F 60 60 00 03 00 00 00       // 设置为协议速度控制模式
  4. 0x603 23 FF 60 00 50 C3 00 00      //  设置目标速度 300 转/分
  5. 0x603 23 83 60 00 50 C3 00 00      //  设置预置加速度 300 转/分 / 秒
  6. 0x603 2b 40 60 00 06 00 00 00       // 写控制字为:0x06
  7. 0x603 2b 40 60 00 07 00 00 00       // 写控制字为:0x07
  8. 0x603 2b 40 60 00 0F 00 00 00       // 写控制字为:0x0F
  9. 0x603 2b 40 60 00 07 00 00 00       // 写控制字为:0x07

控制命令发送完后,通过SDO也可以获得设备的常见的状态,如下所示:

  1. 0x603 40 41 60 00 00 00 00 00     // SDO_读取_状态字反馈
  2. 0x603 40 6C 60 00 00 00 00 00    // SDO_读取_速度反馈
  3. 0x603 40 64 60 00 00 00 00 00    // SDO_读取_位置反馈

你可能感兴趣的:(canopen,stm32,单片机)