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

前言


学习永无止境!本篇是通信协议之多摩川编码器协议,主要介绍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
GND GND

二、多摩川协议帧详解


2.1 数据帧构成

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

| 数据位 |||| 校验位 | ID | 命令字 | 作用 |

CC0 CC1 CC2 CC3 CC4
0 0 0 0 0 0 0x02 获取一圈数据
1 0 0 0 1 1 0x8A 获取多圈数据
0 1 0 0 1 2 0x92 获取编码器编号
1 1 0 0 0 3 0x1A 获取全部数据
0 1 1 0 0 6 0x32 写EEPROM
1 0 1 1 1 D 0xEA 读EEPROM
1 1 1 0 1 7 0xBA 重置ERROR
0 0 0 1 1 8 0xC2 重置圈数
0 0 1 1 0 C 0x62 重置圈数+EEPROM
  • **数据字(Data)格式:**1bit起始、8bit数据、1bit停止、低位先行;
  • **状态字(State)格式:**1bit起始、4bit信息(默认0)、2bitERROR、2bitALARM、1bit停止;
数据位 bit 内容
ea0 1 计数错误
ea1 1 具体有过热、多圈、电池灯报警
ca0 1 请求帧偶校验错误
ca1 1 请求帧分隔符错误
  • **警报字(ALMC)格式:**1bit起始、8bit报警、1bit停止;
数据位 bit 内容
dn0 1 速度异常
dn1 1 超速
dn2 1 计数错误
dn3 1 多圈计数器溢出
dn4 1 过热
dn5 1 多圈错误
dn6 1 电池错误
dn7 1 电池警报
  • **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(多圈);
CMD D0 D1 D2 D3 D4 D5 D6 D7
0x02 ABS0 ABS1 ABS2
0x8A ABM0 ABM1 ABM2
0x92 ENID
0x1A ABS0 ABS1 ABS2 ENID ABM0 ABM1 ABM2 ALMC
0xBA ABS0 ABS1 ABS2
0xC2 ABS0 ABS1 ABS2
0x62 ABS0 ABS1 ABS2

2.2.2 写入EEPROM

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

2.2.3 读取EEPROM

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

待续...

相关推荐
byte轻骑兵3 天前
【0x003A】HCI_Write_Current_IAC_LAP命令详解
c语言·蓝牙·通信协议·hci
国产化创客7 天前
国产OS移植工业物联网OPC-UA协议
物联网·嵌入式·通信协议
byte轻骑兵15 天前
【0x0014】HCI_Read_Local_Name命令详解
c语言·蓝牙·通信协议·hci
byte轻骑兵19 天前
【0x001A】HCI_Remote_Name_Request_Cancel命令详解
c语言·网络·蓝牙·通信协议·hci
W Y1 个月前
【数字孪生软件和第三方系统连接过程】
数字孪生·通信协议
byte轻骑兵2 个月前
【0x0019】HCI_Remote_Name_Request详解
蓝牙·通信协议·hci
byte轻骑兵2 个月前
【0x0001】HCI_Set_Event_Mask详解
蓝牙·通信协议·hci
每天的积累3 个月前
RS232和RS485
嵌入式硬件·通信协议
沃和莱特3 个月前
EMQX服务器的搭建,实现本地机和虚拟机之间的MQTT通信(详细教程)
运维·mqtt·ubuntu·运维开发·emqx·通信协议