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

通信协议之多摩川编码器协议

前言


学习永无止境!本篇是通信协议之多摩川编码器协议,主要介绍RS485硬件层以及软件层帧格式。
注:本文章为学习笔记,部分图片与文字来源于网络/应用手册,如侵权请联系!谢谢!


一、多摩川协议概述


1.1 多摩川协议简介

        多摩川协议是基于485硬件接口的标准NRZ协议,通讯波特率为固定的2.5MHz,所以其硬件接口也就只有数据线(data wire)和电源线(supply wire),不需要时钟线(clk wire)。

内容规格
传送方式半双工串行通信
同步方式起止同步(1bit起始、8bit数据、1bit停止)
通信波特率2.5Mbps
传送顺序LSB在前
传送代码NRZ
传送错误校验方式CRC-8(X^8 + 1)

1.2 RS485简介

  • 简介:RS485是半双工异步串行通信,其使用差分信号,逻辑1(压差在 +2V~+6V ),逻辑0(压差在 -2V~-6V );
  • 发送与接收:使用 485 收发器来转换 TTL 电平和 RS485 电平,发送数据时,串口控制器的 TX 信号经过收发器转换成差分信号传输到总线上,接收数据时,收发器把总线上的差分信号转化成 TTL 信号通过 RX 引脚传输到串口控制器中。
  • 硬件原理图
引脚名称功能
RO接RX,输出引脚
RE接收使能(低电平有效)
DE发送使能(高电平有效)
DI接TX,输入引脚
A同向输入/输出
B反向输入/输出
VCC+3.3V
GNDGND


二、多摩川协议帧详解


2.1 数据帧构成

  • 命令字(Command)格式:1bit起始、3bit固定、4bit数据ID、1bit校验、1bit停止;

数据位校验位ID命令字作用
CC0CC1CC2CC3CC4
0000000x02获取一圈数据
1000110x8A获取多圈数据
0100120x92获取编码器编号
1100030x1A获取全部数据
0110060x32写EEPROM
10111D0xEA读EEPROM
1110170xBA重置ERROR
0001180xC2重置圈数
00110C0x62重置圈数+EEPROM
  • 数据字(Data)格式:1bit起始、8bit数据、1bit停止、低位先行;

  • 状态字(State)格式:1bit起始、4bit信息(默认0)、2bitERROR、2bitALARM、1bit停止;

数据位bit内容
ea01计数错误
ea11具体有过热、多圈、电池灯报警
ca01请求帧偶校验错误
ca11请求帧分隔符错误
  • 警报字(ALMC)格式:1bit起始、8bit报警、1bit停止;

数据位bit内容
dn01速度异常
dn11超速
dn21计数错误
dn31多圈计数器溢出
dn41过热
dn51多圈错误
dn61电池错误
dn71电池警报
  • EEPROM地址格式:ADDX:0x00~0x1E,BUSY:读写状态;

  • 校验(CRC)格式:G(x) = X^8 + 1 (X = rc0 ~ rc7);

 2.2 数据帧格式

2.2.1 获取编码器数据

  • 发送数据:CMD;
  • 接收数据:CMD+STS+(D0~D7)+CRC;
  • CMD与(D0~D7)的关系如下:ABS0~ABS2(单圈),ABM0~ABM2(多圈);

CMDD0D1D2D3D4D5D6D7
0x02ABS0ABS1ABS2
0x8AABM0ABM1ABM2
0x92ENID
0x1AABS0ABS1ABS2ENIDABM0ABM1ABM2ALMC
0xBAABS0ABS1ABS2
0xC2ABS0ABS1ABS2
0x62ABS0ABS1ABS2

2.2.2 写入EEPROM

  • 发送:CMD+A0+D0+CRC;
  • 接收:CMD+A0+D0+CRC;

2.2.3 读取EEPROM

  • 发送:CMD+A0+CRC;
  • 接收:CMD+A0+D0+CRC;

待续...

http://www.lryc.cn/news/523398.html

相关文章:

  • 新星杯-ESP32智能硬件开发--ESP32的I/O组成-系统中断矩阵
  • 4329 树的连边II
  • Spring的Bean详解=Bean别名+作用范围+使用场景
  • 聊一聊如何适应AI时代
  • dl学习笔记:(4)简单神经网络
  • 电商项目高级篇08-springCache
  • 4.1 AI 大模型应用最佳实践:如何提升 GPT 模型使用效率与质量
  • Linux top命令cpu使用率计算底层原理
  • vue知识点总结
  • [实现Rpc] 环境搭建 | JsonCpp | Mudou库 | callBack()
  • llamafactory使用8张昇腾910b算力卡lora微调训练qwen2-72b大模型
  • C++,设计模式,【目录篇】
  • 《目标检测数据集下载地址》
  • C 语言的void*到底是什么?
  • Linux中的文件上传和下载
  • DDD - 微服务落地的技术实践
  • fgets、scanf存字符串应用
  • 鸿蒙动态路由实现方案
  • Spring-boot3.4最新版整合swagger和Mybatis-plus
  • 基于Java的高校实习管理平台
  • 全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之一维数组(应用技巧)
  • 【2024年华为OD机试】 (B卷,100分)- 路灯照明问题(Java JS PythonC/C++)
  • SVGAPlayer error 处理
  • 2024年12月电子学会青少年机器人技术等级考试(二级)实际操作试卷
  • Swift 专题二 语法速查
  • Api网关Zuul
  • 01设计模式(D3_设计模式类型 - D3_行为型模式)
  • python编程-OpenCV(图像读写-图像处理-图像滤波-角点检测-边缘检测)角点检测
  • 费解的开关
  • 【机器学习】机器学习引领数学难题攻克:迈向未知数学领域的新突破