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

待续...
相关文章:
通信协议之多摩川编码器协议
前言 学习永无止境!本篇是通信协议之多摩川编码器协议,主要介绍RS485硬件层以及软件层帧格式。 注:本文章为学习笔记,部分图片与文字来源于网络/应用手册,如侵权请联系!谢谢! 一、多摩川协议概述…...
新星杯-ESP32智能硬件开发--ESP32的I/O组成-系统中断矩阵
本博文内容导读📕🎉🔥 ESP32开发板的中断矩阵、功能描述与实现、相关API和示例程序进行介绍 ESP32中断矩阵将任一外部中断源单独分配到每个CPU的任一外部中断上,提供了强大的灵活性,能适应不同的应用需求。 ESP32中断主…...
4329 树的连边II
通过链式前向星来求树的直径 主要包括:链式前向星的初始化,遍历,使用 #include<bits/stdc.h> using namespace std; using lllong long; const int N1e59; int n,head[N],to[N<<1],nx[N<<1],cnt0; int ans0; int dp[N][2…...
Spring的Bean详解=Bean别名+作用范围+使用场景
目录 Bean的别名:id和name的地位等同 Bean的作用范围:scope单例与非单例 Bean的使用场景:什么时候交给容器?什么时候不交? Bean的别名实践(含代码) 如果看不懂下面的,例如不知道i…...
聊一聊如何适应AI时代
我的工作行业就不提了,处于AI的前沿阵地之一,AI的进步非常惊艳,虽然我对AI持有开放态度,但也恐惧,因为我的进步跟不上它迭代的速度。 AI能涉及的行业:辅助驾驶、医疗诊断、数据分析、文稿生成、工业控制...…...
dl学习笔记:(4)简单神经网络
(1)单层正向回归网络 bx1x2z100-0.2110-0.05101-0.051110.1 接下来我们用代码实现这组线性回归数据 import torch x torch.tensor([[1,0,0],[1,1,0],[1,0,1],[1,1,1]], dtype torch.float32) z torch.tensor([-0.2, -0.05, -0.05, 0.1]) w torch.…...
电商项目高级篇08-springCache
电商项目高级篇08-springCache 1、整合springCache2、Cacheable细节设置 1、整合springCache 1、引入依赖 <!--引入springCache--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifa…...
4.1 AI 大模型应用最佳实践:如何提升 GPT 模型使用效率与质量
AI 大模型应用最佳实践:如何提升 GPT 模型使用效率与质量 随着人工智能技术的不断进步,GPT系列大模型已经成为了自然语言处理领域的核心工具。无论是在文本生成、对话系统,还是内容创作等领域,GPT模型都展现出了强大的能力。然而,要高效、精确地使用这些模型,仍然需要一…...
Linux top命令cpu使用率计算底层原理
在Linux中,top命令通过读取内核提供的统计数据来计算CPU使用率。其底层原理可以概括为以下几步: 1. 读取 /proc/stat top命令主要从/proc/stat文件中获取CPU的统计信息。这个文件包含了每个CPU核心(或所有核心合计)的各种状态下的…...
vue知识点总结
vue2知识点总结 watch: watch 是 Vue 提供的一个选项,它允许你观察 Vue 实例上的数据变化。当观察的数据发生变化时,会执行相应的回调函数,这样你就可以对数据的变化做出响应,执行一些特定的操作。 export default {data() {re…...
[实现Rpc] 环境搭建 | JsonCpp | Mudou库 | callBack()
目录 1. 项目介绍 2. 技术选型 3. 开发环境和环境搭建 Ubuntu-22.04环境搭建 1. 安装 wget(一般情况下默认会自带) 2. 更换国内软件源 ① 备份原始 /etc/apt/sources.list 文件 ② 编辑软件源文件 ③ 更新软件包列表 3. 安装常用工具 3.1 安装…...
llamafactory使用8张昇腾910b算力卡lora微调训练qwen2-72b大模型
说明 我需要在昇腾服务器上对Qwen2-72B大模型进行lora微调,改变其自我认知。 我的环境下是8张910B1卡。显存约512GB。 准备:安装llamafactory 请参考官方方法安装llamafactory:https://github.com/hiyouga/LLaMA-Factory 特别强调下&…...
C++,设计模式,【目录篇】
文章目录 1. 简介2. 设计模式的分类2.1 创建型模式(Creational Patterns):2.2 结构型模式(Structural Patterns):2.3 行为型模式(Behavioral Patterns): 3. 使用设计模式…...
《目标检测数据集下载地址》
一、引言 在计算机视觉的广袤领域中,目标检测宛如一颗璀璨的明星,占据着举足轻重的地位。它宛如赋予计算机一双锐利的 “眼睛”,使其能够精准识别图像或视频中的各类目标,并确定其位置,以边界框的形式清晰呈现。这项技…...
C 语言的void*到底是什么?
一、void* 的类型任意性 void* 是一种通用指针类型。它可以指向任意类型的数据。例如,它可以指向一个整数(int)、一个浮点数(float)、一个字符(char)或者一个结构体等。在C语言中,当…...
Linux中的文件上传和下载
Linux中的文件上传和下载 一、连接 SFTP 在 SecureCRT 中,将鼠标移动到连接窗口的标题上,按鼠标右键,选择“连接 SFTP”标签,即可进入 SFTP 模式。 二、基本指令及用途 1. 显示当前目录 显示本地当前目录:lpwd 示例…...
DDD - 微服务落地的技术实践
文章目录 Pre概述如何发挥微服务的优势怎样提供微服务接口原则微服务的拆分与防腐层的设计 去中心化的数据管理数据关联查询的难题Case 1Case 2Case 3 总结 Pre DDD - 软件退化原因及案例分析 DDD - 如何运用 DDD 进行软件设计 DDD - 如何运用 DDD 进行数据库设计 DDD - 服…...
fgets、scanf存字符串应用
题目1 夺旗(英语:Capture the flag,简称 CTF)在计算机安全中是一种活动,当中会将“旗子”秘密地埋藏于有目的的易受攻击的程序或网站。参赛者从其他参赛者或主办方偷去旗子。 非常崇拜探姬的小学妹最近迷上了 CTF&am…...
鸿蒙动态路由实现方案
背景 随着CSDN 鸿蒙APP 业务功能的增加,以及为了与iOS、Android 端统一页面跳转路由,以及动态下发路由链接,路由重定向等功能。鸿蒙动态路由方案的实现迫在眉睫。 实现方案 鸿蒙版本动态路由的实现原理,类似于 iOS与Android的实…...
Spring-boot3.4最新版整合swagger和Mybatis-plus
好家伙,今天终于开始用spring-boot3开始写项目了,以后要彻底告别1.x和2.x了,同样的jdk也来到了最低17的要求了,废话不多说直接开始 这是官方文档的要求jdk最低是17 maven最低是3.6 一. 构建工程,这一步就不需要给大家解释了吧 二. 整合Knife4j 1.大于…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...
结构化文件管理实战:实现目录自动创建与归类
手动操作容易因疲劳或疏忽导致命名错误、路径混乱等问题,进而引发后续程序异常。使用工具进行标准化操作,能有效降低出错概率。 需要快速整理大量文件的技术用户而言,这款工具提供了一种轻便高效的解决方案。程序体积仅有 156KB,…...
如何把工业通信协议转换成http websocket
1.现状 工业通信协议多数工作在边缘设备上,比如:PLC、IOT盒子等。上层业务系统需要根据不同的工业协议做对应开发,当设备上用的是modbus从站时,采集设备数据需要开发modbus主站;当设备上用的是西门子PN协议时…...
未授权访问事件频发,我们应当如何应对?
在当下,数据已成为企业和组织的核心资产,是推动业务发展、决策制定以及创新的关键驱动力。然而,未授权访问这一隐匿的安全威胁,正如同高悬的达摩克利斯之剑,时刻威胁着数据的安全,一旦触发,便可…...
