多摩川编码器协议

server/2024/12/25 22:40:04/

多摩川编码器是一种常用的绝对值编码器,其协议基于485硬件接口的标准NRZ协议,通讯波特率为固定的2.5Mbps。以下是多摩川编码器协议的详细说明:
在这里插入图片描述

硬件接口

多摩川编码器使用RS485接口进行通信,接口定义如下:

  • 5V供电:电源线
  • GND:地线
  • 485 A:数据线A
  • 485 B:数据线B
  • PE:保护地线(可选)
  • 电池正极:多圈编码器特有的电池正极(单圈编码器没有此引脚)
  • 电池负极:多圈编码器特有的电池负极(单圈编码器没有此引脚)

通讯参数

  • 波特率:2.5Mbps
  • 数据格式:1起始位,8数据位,1停止位
  • 校验方式:无校验
  • 通讯方式:半双工

协议结构

多摩川编码器的通讯协议包括以下几个主要部分:

  • CF(Control Field):控制字段,表示命令类型。
  • SF(Status Field):状态字段,表示编码器的状态。
  • DF(Data Field):数据字段,表示具体的数据。
  • CRC:循环冗余校验,用于数据校验。

命令类型

多摩川编码器支持多种命令类型,主要包括读取编码器信息状态和读写EEPROM的指令。

1. 读取编码器信息状态
  • 读取单圈信息

    • 命令ID0 (0x02)
    • 响应CF + SF + ABS0 + ABS1 + ABS2 + CRC
    • 数据
      • ABS0:单圈位置低位
      • ABS1:单圈位置中位
      • ABS2:单圈位置高位(高7位为0,低17位为单圈位置信息)
  • 读取多圈信息

    • 命令ID1 (0x8A)
    • 响应CF + SF + ABM0 + ABM1 + ABM2 + CRC
    • 数据
      • ABM0:多圈位置低位
      • ABM1:多圈位置中位
      • ABM2:多圈位置高位(高8位为0,低16位为多圈位置信息)
  • 读取ID信息

    • 命令ID2 (0x92)
    • 响应CF + SF + ENID + CRC
    • 数据
      • ENID:编码器ID信息,默认为0x11(表示17位)
  • 读取全部信息

    • 命令ID3 (0x1A)
    • 响应CF + SF + ABS0 + ABS1 + ABS2 + ENID + ABM0 + ABM1 + ABM2 + ALMC + CRC
    • 数据
      • ABS0:单圈位置低位
      • ABS1:单圈位置中位
      • ABS2:单圈位置高位
      • ENID:编码器ID信息
      • ABM0:多圈位置低位
      • ABM1:多圈位置中位
      • ABM2:多圈位置高位
      • ALMC:报警状态
2. 清除和改变编码器状态
  • 清除所有故障位

    • 命令ID7 (0xBA)
    • 响应:无响应
    • 操作:间隔62.5µs以上,连续发送10次
  • 将当前位置设置为编码器零点

    • 命令ID8 (0xC2)
    • 响应:无响应
    • 操作:间隔62.5µs以上,连续发送10次
  • 将多圈数据清零

    • 命令IDC (0x62)
    • 响应:无响应
    • 操作:间隔62.5µs以上,连续发送10次
3. 读写EEPROM
  • 读取EEPROM

    • 命令ADF + EDF + CRC
    • 响应CF + SF + EDF + CRC
    • 数据
      • ADF:EEPROM地址
      • EDF:EEPROM地址的内容
  • 写入EEPROM

    • 命令ADF + EDF + CRC
    • 响应CF + SF + CRC
    • 数据
      • ADF:EEPROM地址
      • EDF:要写入的数据

CRC校验

  • 校验算法:CRC-8,多项式为x^8 + x^2 + x + 1(即0x07
  • 校验范围:从CF到DF的所有字节

示例

假设你要读取多摩川编码器的单圈位置信息,可以按照以下步骤进行:

  1. 发送命令

    0x02
    
  2. 接收响应

    0x02 0x00 0x12 0x34 0x56 0xAB
    
    • 0x02:CF(命令类型)
    • 0x00:SF(状态字段)
    • 0x12:ABS0(单圈位置低位)
    • 0x34:ABS1(单圈位置中位)
    • 0x56:ABS2(单圈位置高位)
    • 0xAB:CRC(校验值)

总结

多摩川编码器协议基于RS422接口,支持多种命令类型,包括读取编码器信息状态、清除和改变编码器状态以及读写EEPROM。协议中使用CRC-8校验确保数据传输的可靠性。


http://www.ppmy.cn/server/153158.html

相关文章

Escalate_Linux靶机

Escalate_Linux靶机 前言:集合了多种liunx提权方法的靶场,通过该靶场可以简单的了解liunx提权方法 1,扫描一下端口 80/tcp open http 111/tcp open rpc 2049/udp nfs要知道对方的共享才能挂载 139/445 Samba SMB是一个协议名&#xff0c…

java Redis 操作工具类封装(备忘)

在 Java 中,封装 Redis 的常见操作是提升开发效率和代码可维护性的好方法。使用 Redis 可以帮助你的应用在缓存、消息队列、会话存储等方面显著提高性能。以下是一个基于 Jedis 客户端的 Redis 操作工具类封装示例。 1. 添加 Redis 依赖 首先,确保在 M…

thinkphp6使用MongoDB多个数据,聚合查询的坑

我使用的是thinkphp6,mongodb4.0实际业务查询 $list Db::connect(tstd_mongo)->table("$table_time.Item")->where($where)->order("Cause","asc")->field(_id,DBID,Data,GSID,MainKind,ManID,DISTINCT(Serial) Serial,SubKind,Tim…

115.【C语言】数据结构之排序(希尔排序)

目录 1.希尔排序(又称缩小增量排序)(插入排序的优化版本) 过程1:预排序 过程2:插入排序 2.代码 预排序代码 1.一次排一组(时间复杂度比第二种写法高) 运行结果 其他写法 2.一次排多组(多组并排) 运行结果 希尔排序代码 1.当预排序一次排一组时 运行结果 2.当预排…

mysql 获取某个表大小

有一个业务逻辑是判断日志表大小,如果达到1g,则需要报警提示 SELECT table_name as tableName, data_length AS size FROM information_schema.TABLES WHERE table_schema test AND table_name s_log; 其中test是库名,s_log是要查询的表名 经过测试…

用二进制方式向文件读写一组数据

【例10.4】从键盘输入10个学生的有关数据&#xff0c;然后把它们转存到磁盘文件上去。 #include<stdio.h> struct Student{char name[20];int number;int age; }; int main(){int i;struct Student stu;FILE *fp;fp fopen("1.txt","wb");if(fp N…

Flutter组件————FloatingActionButton

FloatingActionButton 是Flutter中的一个组件&#xff0c;通常用于显示一个圆形的按钮&#xff0c;它悬浮在内容之上&#xff0c;旨在吸引用户的注意力&#xff0c;并代表屏幕上的主要动作。这种按钮是Material Design的一部分&#xff0c;通常放置在页面的右下角&#xff0c;但…

JavaScript查缺补漏

文章目录 一、JavaScript是什么&#xff1f;1. JavaScript2.数组的使用3.函数默认参数4.对象中查找属性的另外写法 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、JavaScript是什么&#xff1f; 1. JavaScript 是一种运行在客户端&#xff08;浏…