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

CanOpen--SDO 数据帧分析

CanOpen--SDO 数据帧分析

  • 1 介绍
    • 1.1 概述
    • 1.2 主站与从站
  • 2 数据帧详细分析
    • 2.1 主站发送的请求帧 (Client → Server)
    • 2.2 从站响应的确认帧 (Server → Client)
      • 成功数据帧内容
      • 示例错误帧
    • 2.3 命令字
    • 2.4 小端格式:低字节在前
  • 3 其他示例
    • 60FF index 发送 数值 1000 数据帧分析
      • 数据帧结构
      • 完整报文
  • 参考

1 介绍

1.1 概述

在 CANopen 中,SDO (Service Data Object) 用于主站与从站之间的参数配置和数据传输。当需要向对象字典索引 0x6083 写入值 100 时,需要使用 SDO 写操作。

1.2 主站与从站

在上位机与伺服电机的通信系统中,上位机通常是主站(Master),而伺服电机作为执行机构,通常作为从站(Slave)运行。
主站(Master):发起通信请求、发送控制指令、协调数据交换的设备。
从站(Slave):响应主站请求、执行指令、反馈状态信息的设备。

2 数据帧详细分析

假设条件:
从站节点ID:1
对象字典索引:0x6083
子索引:0x00 (通常默认)
写入值:100 (0x64)

2.1 主站发送的请求帧 (Client → Server)

COB-ID:0x600 + NodeID = 0x601
数据帧内容:

Byte说明
00x23写入4字节数据的命令字
1-20x83 0x60索引 0x6083 (小端格式)
30x00子索引 0x00
4-70x64 0x00 0x00 0x00值 100 (小端格式,4字节)

完整数据帧

601 23 83 60 00 64 00 00 00

2.2 从站响应的确认帧 (Server → Client)

COB-ID:0x580 + NodeID = 0x581

成功数据帧内容

Byte说明
00x60写操作成功的响应
1-20x83 0x60索引 0x6083 (小端格式)
30x00子索引 0x00
4-70x64 0x00 0x00 0x00值 100 (小端格式,4字节)

完整数据帧

581 23 83 60 00 64 00 00 00

示例错误帧

完整数据帧

581 80 83 60 00 06 00 00 05 

0x80:表示错误响应

2.3 命令字

  • 请求帧命令字 0x23:
    0x2:表示写请求
    0x3:表示数据大小指定为4字节

  • 响应帧命令字 0x60:
    表示写操作成功完成

2.4 小端格式:低字节在前

索引 0x6083 → 传输为 0x83 0x60
值 100 (0x00000064) → 传输为 0x64 0x00 0x00 0x00

3 其他示例

60FF index 发送 数值 1000 数据帧分析

从站节点ID: 1 (示例)
COB-ID: 0x600 + NodeID = 0x601
对象字典索引: 0x60FF
子索引: 0x00 (默认)
写入值: 1000 (0x000003E8)

数据帧结构

Byte说明
00x23写入4字节数据的命令字
10xFF索引低字节 (0xFF)
20x60索引高字节 (0x60)
30x00子索引
40xE8数据字节0 (1000的低字节)
50x03数据字节1
60x00数据字节2
70x00数据字节3

完整报文

ID: 0x601
Data: 23 FF 60 00 E8 03 00 00

参考

1、机器人开发–CanOpen

http://www.dtcms.com/a/292875.html

相关文章:

  • vscode不识别vsix结尾的插件怎么解决?
  • sysbench对linux服务器上mysql8.0版本性能压测
  • Thinkphp8使用Jwt生成与验证Token
  • 问题记录:地图数据状态没有实时更新问题
  • 前端--bom、JQuery
  • 滴滴0722 总结与优化方向
  • Spring Boot+Redis Zset:三步构建高可靠延迟队列系统
  • 博物馆智慧导览系统AR交互与自动感应技术:从虚实融合到智能讲解的技术实践
  • Kubernetes调度器
  • 数据结构 堆(2)---堆的实现
  • 第三章 Freertos物联网实战esp8266模块
  • MySQL 学习一 存储结构和log
  • JDBC编程
  • 刀客doc:Netflix与YouTube开始在广告战场正面交锋
  • 数组——初识数据结构
  • 算法第26天|贪心算法:用最少数量的箭引爆气球、无重叠区间、划分字母区间
  • 35.安卓逆向2-frida hook技术-过root检测
  • 元宇宙游戏与VR的关联性及发展分析(截至2025年7月)
  • 【Spring拦截器实战】路径拦截与访问控制系统设计
  • MybatisPlus入门指南
  • SonarQube 代码分析工具
  • docker 中安装 ONLYOFFICE 服务
  • C++基础学习——文件操作详解
  • netframe4.5 的mvc 框架 layui 组件的引用
  • 模运算常见定律
  • .net 警告【代码 CS1998】此异步方法缺少 “await“ 运算符,将以同步方式运行。
  • Linux命令集锦-个人整理(偏向进程和端口的查询)
  • CS231n-2017 Lecture5卷积神经网络笔记
  • 如何把jar包打成docker镜像(SpringBoot项目打包成Docker )部署到Linux
  • CMOS知识点 离子注入工艺