当前位置: 首页 > news >正文

伺服控制入门 第二章——伺服控制的通信协议基础(二)

参考教程:https://www.bilibili.com/video/BV14q4y147PU?spm_id_from=333.788.videopod.episodes&vd_source=8f8a7bd7765d52551c498d7eaed8acd5

二、CANopen基础(下)

1、CANopen紧急报文

(1)紧急报文是事件触发型报文,仅当设备内部出现的致命错误时触发,以最高优先级发送到其它设备,适用于中断类型的错误报警信号。

(2)一个紧急报文的数据段包含8个字节,报文格式如下:

(3)16进制的应急错误代码如下表所示,应急错误代码中“xx”部分由相应的设备子协议定义。

(4)错误寄存器(Error Register)在设备的对象字典(索引0x1001)中有定义。下表说明了错误寄存器的位定义,设备可以将内部错误映射到这个状态字节中,快速查看当前错误。

2、SDO通讯

(1)SDO(Service Data Object,服务数据对象)概述:

①SDO主要用来在设备之间传输低优先级的对象,典型是用来对从设备进行配置、管理,比如修改速度环、位置环的PID参数,以及修改PDO配置参数等。

②通过使用索引和子索引,SDO使客户机能够访问(读或写)设备对象字典中的对象。

③通常情况下,传输的数据长度不超过4个字节,当数据长度超过4个字节时,需要分拆成几个报文。

④SDO协议是确认服务类型,每个请求消息都需要生成一个应答。SDO请求和应答报文总是包含8个字节。

(2)SDO的通讯对象标识符,使用中具体定义规则如下:

对象

COB_ID

COB_ID范围

通讯对象

Tx-SDO(请求报文)

0x600+节点地址

0x601-0x67F

/

Rx-SDO(应答报文)

0x580+节点地址

0x581-0x5FF

/

(3)SDO读报文格式:

①SDO读报文的请求报文格式如下,其中命令字为0x40,Byte4-7为缺省内容,可填充0。

②SDO读报文的应答报文格式如下,Byte4-7为根据索引寻到的数据(最大4字节),根据数据的大小,命令字的选取如下:

如果数据为1字节,则命令字为0x4F

如果数据为2字节,则命令字为0x4B

如果数据为3字节,则命令字为0x47

如果数据为4字节,则命令字为0x43

如果失败,则命令字为0x80

(4)SDO读报文示例:

读取设备站号为0x01的伺服实际位置(Index为6063,Sub_Index为00,数据宽度为20bits),读到的数据是4个字节,CANopen数据低字节在前、高字节在后(小端模式),所以数据为FFFFFD113H(补码形式),转换成10进制即为-12013

请求(发送)报文的命令字为0x40,Bit4-Bit7缺省,以“0”填充;回应的数据长度为4个字节,所以应答(回应)报文的命令字为0x43

(5)SDO写报文格式:

①SDO写报文的请求报文格式如下,Byte4-7为请求写入对象索引指向对象的数据(最大4字节),根据数据的大小,命令字的选取如下:

如果数据为1字节,则命令字为0x2F

如果数据为2字节,则命令字为0x2B

如果数据为3字节,则命令字为0x27

如果数据为4字节,则命令字为0x23

②SDO写报文的请求报文格式如下,Byte4-7为缺省内容,可填充0或者主站请求写入的数据,如果写入成功,命令字为0x60,否则命令字为0x80。

(6)SDO写报文示例:

写设备站号为0x01的伺服目标位置(Index为607A,Sub_Index为00,数据宽度为20bits),请求写入的数据是4个字节,CANopen数据低字节在前、高字节在后(小端模式),所以数据为100000,转换成16进制即为000186A0H(补码形式)

请求的数据长度为4个字节,所以请求(发送)报文的命令字为0x23;应答(回应)报文的命令字为0x60,Bit4-Bit7缺省,以主站请求写入的数据填充

(7)如果SDO通讯失败,从站回复的报文格式如下,命令字为0x80,Bit4-Bit7为4字节的错误代码。

http://www.jsqmd.com/news/914508/

相关文章:

  • UE4材质Usage详解:为什么你的Skeletal Mesh打包后‘丢了衣服’?
  • 上位机知识篇---SDK
  • 数据伦理师:技术狂奔时代的算法公平与隐私守护者
  • 焦作市黄金回收白银回收门店推荐 2026年最新黄金回收门店口碑排行榜+联系方式 - 盛世金银回收
  • 2026年莱阳市最新黄金回收靠谱门店口碑榜 黄金+K金+白银+铂金回收门店TOP5排行榜+联系方式 - 大熊猫898989
  • Angry IP Scanner终极指南:3分钟快速掌握网络设备扫描
  • 避坑指南:蓝桥杯嵌入式PWM编程,为什么你的电机控制不精准?从定时器原理到动态调频调占空比
  • Tauri踩坑日记:我的自定义标题栏为什么拖不动?深入排查data-tauri-drag-region失效问题
  • 微信视频号直播数据抓取实战:3步构建专业级监控系统
  • AutoGPT:从指令执行到目标驱动的AI智能体革命
  • 虚假信息全链条解析:从AI生成到区块链溯源的对抗策略
  • 2026年精选AI论文网站指南(实测甄选版)
  • 2026年莱州市最新黄金回收靠谱门店口碑榜 黄金+K金+白银+铂金回收门店TOP5排行榜+联系方式 - 大熊猫898989
  • 揭阳市黄金回收白银回收门店推荐 2026年最新黄金回收门店口碑排行榜+联系方式 - 盛世金银回收
  • 告别编译噩梦:用CP2K Toolchain脚本在Ubuntu上一键搞定GCC、GFortran和MKL依赖
  • ENVI直方图匹配实战:搞定多期遥感影像的‘色差’拼接,让NDVI结果更靠谱
  • 大语言模型代码切换推理行为:分类、评估与优化实践
  • 171、运动控制中的标定:摩擦力与死区补偿标定
  • Windows Server 2008 R2上MySQL 8.0保姆级安装教程(含VCRUNTIME140.dll报错解决方案)
  • AI Agent:macOS Sequoia 部署 OpenClaw 完整教程
  • 从‘炼丹’到‘调参’:拆解IA-YOLO论文里那个神奇的CNN-PP,如何用16.5万参数学会给图像‘美颜’
  • 界首市黄金回收白银回收门店推荐 2026年最新黄金回收门店口碑排行榜+联系方式 - 盛世金银回收
  • 别再Switch硬凑了!手把手教你用Simulink三维查表搞定动态Z轴数据(附完整模型)
  • 奇型高斯正规基乘法器的矩阵分解优化方法
  • 科技巨头降本增效实战:云成本优化与新兴技术战略解析
  • 低成本微调专属大模型:基于DolphinScheduler与LoRA的实战指南
  • Mask2Former的‘注意力’玄机:拆解Mask Attention模块如何让分割更准
  • 别再只用欧氏距离了!用Python实战切比雪夫距离,搞定棋盘游戏AI与异常检测
  • 接口设计说明
  • AI与人类智能的本质差异及协同共生框架解析