参考教程https://www.bilibili.com/video/BV14q4y147PU?spm_id_from333.788.videopod.episodesvd_source8f8a7bd7765d52551c498d7eaed8acd5二、CANopen基础下1、CANopen紧急报文1紧急报文是事件触发型报文仅当设备内部出现的致命错误时触发以最高优先级发送到其它设备适用于中断类型的错误报警信号。2一个紧急报文的数据段包含8个字节报文格式如下316进制的应急错误代码如下表所示应急错误代码中“xx”部分由相应的设备子协议定义。4错误寄存器Error Register在设备的对象字典索引0x1001中有定义。下表说明了错误寄存器的位定义设备可以将内部错误映射到这个状态字节中快速查看当前错误。2、SDO通讯1SDOService Data Object服务数据对象概述①SDO主要用来在设备之间传输低优先级的对象典型是用来对从设备进行配置、管理比如修改速度环、位置环的PID参数以及修改PDO配置参数等。②通过使用索引和子索引SDO使客户机能够访问读或写设备对象字典中的对象。③通常情况下传输的数据长度不超过4个字节当数据长度超过4个字节时需要分拆成几个报文。④SDO协议是确认服务类型每个请求消息都需要生成一个应答。SDO请求和应答报文总是包含8个字节。2SDO的通讯对象标识符使用中具体定义规则如下对象COB_IDCOB_ID范围通讯对象Tx-SDO请求报文0x600节点地址0x601-0x67F/Rx-SDO应答报文0x580节点地址0x581-0x5FF/3SDO读报文格式①SDO读报文的请求报文格式如下其中命令字为0x40Byte4-7为缺省内容可填充0。②SDO读报文的应答报文格式如下Byte4-7为根据索引寻到的数据最大4字节根据数据的大小命令字的选取如下如果数据为1字节则命令字为0x4F如果数据为2字节则命令字为0x4B如果数据为3字节则命令字为0x47如果数据为4字节则命令字为0x43如果失败则命令字为0x804SDO读报文示例读取设备站号为0x01的伺服实际位置Index为6063Sub_Index为00数据宽度为20bits读到的数据是4个字节CANopen数据低字节在前、高字节在后小端模式所以数据为FFFFFD113H补码形式转换成10进制即为-12013请求发送报文的命令字为0x40Bit4-Bit7缺省以“0”填充回应的数据长度为4个字节所以应答回应报文的命令字为0x435SDO写报文格式①SDO写报文的请求报文格式如下Byte4-7为请求写入对象索引指向对象的数据最大4字节根据数据的大小命令字的选取如下如果数据为1字节则命令字为0x2F如果数据为2字节则命令字为0x2B如果数据为3字节则命令字为0x27如果数据为4字节则命令字为0x23②SDO写报文的请求报文格式如下Byte4-7为缺省内容可填充0或者主站请求写入的数据如果写入成功命令字为0x60否则命令字为0x80。6SDO写报文示例写设备站号为0x01的伺服目标位置Index为607ASub_Index为00数据宽度为20bits请求写入的数据是4个字节CANopen数据低字节在前、高字节在后小端模式所以数据为100000转换成16进制即为000186A0H补码形式请求的数据长度为4个字节所以请求发送报文的命令字为0x23应答回应报文的命令字为0x60Bit4-Bit7缺省以主站请求写入的数据填充7如果SDO通讯失败从站回复的报文格式如下命令字为0x80Bit4-Bit7为4字节的错误代码。
伺服控制入门 第二章——伺服控制的通信协议基础(二)
发布时间:2026/5/30 6:08:40
参考教程https://www.bilibili.com/video/BV14q4y147PU?spm_id_from333.788.videopod.episodesvd_source8f8a7bd7765d52551c498d7eaed8acd5二、CANopen基础下1、CANopen紧急报文1紧急报文是事件触发型报文仅当设备内部出现的致命错误时触发以最高优先级发送到其它设备适用于中断类型的错误报警信号。2一个紧急报文的数据段包含8个字节报文格式如下316进制的应急错误代码如下表所示应急错误代码中“xx”部分由相应的设备子协议定义。4错误寄存器Error Register在设备的对象字典索引0x1001中有定义。下表说明了错误寄存器的位定义设备可以将内部错误映射到这个状态字节中快速查看当前错误。2、SDO通讯1SDOService Data Object服务数据对象概述①SDO主要用来在设备之间传输低优先级的对象典型是用来对从设备进行配置、管理比如修改速度环、位置环的PID参数以及修改PDO配置参数等。②通过使用索引和子索引SDO使客户机能够访问读或写设备对象字典中的对象。③通常情况下传输的数据长度不超过4个字节当数据长度超过4个字节时需要分拆成几个报文。④SDO协议是确认服务类型每个请求消息都需要生成一个应答。SDO请求和应答报文总是包含8个字节。2SDO的通讯对象标识符使用中具体定义规则如下对象COB_IDCOB_ID范围通讯对象Tx-SDO请求报文0x600节点地址0x601-0x67F/Rx-SDO应答报文0x580节点地址0x581-0x5FF/3SDO读报文格式①SDO读报文的请求报文格式如下其中命令字为0x40Byte4-7为缺省内容可填充0。②SDO读报文的应答报文格式如下Byte4-7为根据索引寻到的数据最大4字节根据数据的大小命令字的选取如下如果数据为1字节则命令字为0x4F如果数据为2字节则命令字为0x4B如果数据为3字节则命令字为0x47如果数据为4字节则命令字为0x43如果失败则命令字为0x804SDO读报文示例读取设备站号为0x01的伺服实际位置Index为6063Sub_Index为00数据宽度为20bits读到的数据是4个字节CANopen数据低字节在前、高字节在后小端模式所以数据为FFFFFD113H补码形式转换成10进制即为-12013请求发送报文的命令字为0x40Bit4-Bit7缺省以“0”填充回应的数据长度为4个字节所以应答回应报文的命令字为0x435SDO写报文格式①SDO写报文的请求报文格式如下Byte4-7为请求写入对象索引指向对象的数据最大4字节根据数据的大小命令字的选取如下如果数据为1字节则命令字为0x2F如果数据为2字节则命令字为0x2B如果数据为3字节则命令字为0x27如果数据为4字节则命令字为0x23②SDO写报文的请求报文格式如下Byte4-7为缺省内容可填充0或者主站请求写入的数据如果写入成功命令字为0x60否则命令字为0x80。6SDO写报文示例写设备站号为0x01的伺服目标位置Index为607ASub_Index为00数据宽度为20bits请求写入的数据是4个字节CANopen数据低字节在前、高字节在后小端模式所以数据为100000转换成16进制即为000186A0H补码形式请求的数据长度为4个字节所以请求发送报文的命令字为0x23应答回应报文的命令字为0x60Bit4-Bit7缺省以主站请求写入的数据填充7如果SDO通讯失败从站回复的报文格式如下命令字为0x80Bit4-Bit7为4字节的错误代码。