关节驱动器 CANFD 通信协议

news2025/1/18 21:09:53

前言

       睿尔曼关节采用了问答方式进行通信,控制器发出指令包,模块返回应答包。一个CAN 总线网络中允许有多个模块,所以每个模块都分配有一个 ID 号。控制器发出的控制指令中包含 ID 信息,只有匹配上 ID 号的模块才能完整接收这条指令,并返回应答信息。所有的查询、控制和参数修改指令均通过对一个储存于模块主控芯片内部的内存控制表的读写操作完成。内存控制表的每一个地址存储两个字节,数据存储和传输均使用小端模式

一、关节协议

1.指令类型

可用指令类型如下:

2.FADCAN 总线协议

使用CANFD 的标准帧格式,只使用数据帧,远程帧无应答。CANFD 协议的数据帧最长 64 个字节,通讯速率可达 5M,CANFD 协议的数据长度码如下所示。

3.常用指令包

指令包格式如下:

仲裁域:只有目标ID段需要仲裁,仲裁域ID即为模块ID,模块ID为0x00~0x1E(0~30), 广播ID为0x00(0)。ID0固定为接口板使用。

控制域:DLC长度,即数据域字节长度,最大位64个字节,数据长度表如上所示;BRS表示速率可变,可变为1,不可变为0;ESI,暂定为0,总线不主动报错。

数据域:数据域第一个字节为指令类型,第二个字节为控制表索引, 第三到第四个字节为随指令发送的数据。读指令有一个字节数据,表示所要读取的内存表寄存器的数量;写指令数据段有两个字节数据,为要写入内存表的内容,低位在前。

4.常用应答包

应答包格式如下:

应答包的格式与指令包基本一致,其区别在于:

若模块收到的是读指令,则返回的数据段为指定长度的数据。

若模块收到的是写指令,则返回的数据段为操作是否成功,0x01-成功,0x00-失败。应答包的ID为指令包ID+0x100.

备注:当下发的CANFD控制帧不符合协议要求时,驱动器返回CMD_ERR应答包,应答包格式如下所示。

ERR代表错误类型,错误代码如下所示:

                  

5.位置伺服指令包

当关节处于位置伺服模式下,关节进入周期性位置伺服控制阶段,控制器向各个关节模块发送位置指令帧,各个关节模块在收到指令帧之后进行相应的位置伺服控制,并将当前的位置信息、电流信息、速度信息、使能状态和错误代码通过一帧反馈帧发送给控制器。如果一个总线上有7个模块参与周期性伺服控制,那么一个控制周期之内,总线上将会产生14帧的通讯,以此降低总线负载。

位置伺服指令帧: 

伺服反馈帧:

6.速度伺服指令包

当关节处于速度伺服模式下,关节进入周期性速度伺服控制阶段,控制器向各个关节模块发送速度指令帧,各个关节模块在收到指令帧之后进行相应的速度伺服控制,并将当前的位置信息、电流信息、速度信息、使能状态和错误代码通过一帧反馈帧发送给控制器。

速度伺服指令帧:

伺服反馈帧:

7.电流伺服指令包

当机械臂拖动示教模式下,通过控制机械臂关节的电流,配合外部力矩完成拖动示教, 每下发一帧电流伺服指令帧,返回一帧伺服反馈帧,上传机械臂动力学关键数据。

电流伺服指令帧:

伺服反馈帧:

8. 关节状态查询指令包

当机械臂在运行过程中,需要周期性的查询关节的状态,为了提高总线利用率,将常用
的关节数据通过一帧指令进行查询,关节收到该指令帧后,将错误代码、系统电压、系统温
度、使能状态和当前位置放到一帧关节状态反馈帧内进行反馈。
关节状态查询指令帧

关节状态反馈帧:

二、关节协议示例

1.环境配置

仲裁域波特率:1Mbps 80%
数据与波特率:5Mbps 75%

2.IAP 在线更新标志位(必要操作)

3.获取当前关节状态

4.位置模式控制

(1)设置工作模式为位置模式

(2)关节通过位置伺服指令运动

通过关节状态查询指令查询到当前角度后,发送位置伺服指令,使关节运动±10°以内。例
如当前角度为20°,关节运动到30°

再次获取关节状态,当前关节角度相交于开始前的位置±10°

5.电流模式控制

(1)设置工作模式为电流模式

指令包:

应答包:

(2)关节通过电流伺服指令运动

发送电流伺服指令,关节根据电流值,正向或反向运动(数据为负值时关节反向运动,
数据为正值时,关节正向运动),例如电流为500MA
指令包:

应答包:

6.速度模式控制

(1)设置工作模式为速度模式

(2)关节通过速度伺服指令运动

发送速度伺服指令,关节根据速度值,正向或反向运动(数据为负值时关节反向运动,
数据为正值时,关节正向运动),例如速度为:5RPM
指令包:

应答包:

7.清除关节错误

备注:
清除关节错误后,将工作模式切换到位置伺服模式,发送使能指令,关节使能成功

8.设置关节零位

9.设置使能状态

上使能:
禁使能:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1568969.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数学知识--(质数,约数)

本文用于个人算法竞赛学习,仅供参考 目录 一.质数的判定 二.分解质因数 三.质数筛 1.朴素筛法 2.埃氏筛法 3.线性筛法 四.约数 1.求一个数的所有约数 2.约数个数和约数之和 3.欧几里得算法(辗转相除法)-- 求最大公约数 一.质数的判定 …

MVCC详细总结

简介 MVCC(Multi-Version Concurrency Control)是一种多版本并发控制机制,主要用于数据库管理系统中,实现对数据库的并发访问。在编程语言中,MVCC可以实现事务内存。 MVCC的特点是读不加锁,读写不冲突。MVC…

Python 一步一步教你用pyglet制作“彩色方块连连看”游戏(续)

“彩色方块连连看”游戏(续) 上期讲到相同的色块连接,链接见: Python 一步一步教你用pyglet制作“彩色方块连连看”游戏-CSDN博客 第八步 续上期,接下来要实现相邻方块的连线: 首先来进一步扩展 行列的类: class R…

STM32 can通信部分函数注释

-----CAN1_Mode_Init CAN模式初始化函数:u8 CAN1_Mode_Init(u8 tsjw,u8 tbs2,u8 tbs1,u16 brp,u8 mode) //CAN初始化 //tsjw:重新同步跳跃时间单元.范围:CAN_SJW_1tq~ CAN_SJW_4tq //tbs2:时间段2的时间单元. 范围:CAN_BS2_1tq~CAN_BS2_8tq; //tbs1:时间段1的时间单元. 范…

day63 单调栈part02

503. 下一个更大元素 II 中等 给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一个更大的元素 是按数组遍历顺序,这个数字之后的第一个比它更…

vue快速入门(六)v-else和v-else-if

注释很详细&#xff0c;直接上代码 上一篇 新增内容 v-else-if用法v-else用法 源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-s…

docker部署nacos,单例模式(standalone),使用内置的derby数据库,简易安装

文章目录 前言安装创建文件夹docker指令安装docker指令安装-瘦身版 制作docker-compose.yaml文件查看页面 前言 nacos作为主流的服务发现中心和配置中心&#xff0c;广泛应用于springcloud框架中&#xff0c;现在就让我们一起简易的部署一个单例模式的nacos&#xff0c;版本可…

算法学习系列(四十六):迭代加深、双向DFS

目录 引言概念一、加成序列二、送礼物 引言 本文主要讲了&#xff0c; D F S DFS DFS 的另外两种优化&#xff0c;分别是迭代加深和双向 D F S DFS DFS &#xff0c;思路还是非常清晰明了的&#xff0c;只要会写 D F S DFS DFS 那么这些剪枝和优化其实还是非常的容易的&…

Vue监听器watch的基本用法

文章目录 1. 作用2. 格式3. 示例3.1 value 值为字符串3.2 value 值为函数3.3 value 值为对象 4. 与计算属性对比 1. 作用 监视数据变化&#xff0c;执行一些业务逻辑或异步操作。 2. 格式 监听器 watch 内部以 key &#xff1a;value 的形式定义&#xff0c;key 是 data 中的…

用html写一个爱心

<!DOCTYPE html> <html lang"zh-CN"><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8" /><title>爱您</title><style>* {padding: 0;margin: 0;}body {background-color: pin…

C语言笔试题之求解X的平方根

求解X的平方根 一、实例要求 1、给定一个非负整数 x &#xff0c;计算并返回 x 的算术平方根 &#xff1b;2、由于返回类型是整数&#xff0c;结果只保留整数部分 &#xff0c;小数部分将被舍去&#xff1b;3、不允许使用任何内置指数函数、运算符&#xff1b; 二、实例分析…

图DP

目录 有向无环图DP 力扣 329. 矩阵中的最长递增路径 力扣 2192. 有向无环图中一个节点的所有祖先 有向有环图DP 力扣 1306. 跳跃游戏 III 有向无环图DP 力扣 329. 矩阵中的最长递增路径 给定一个 m x n 整数矩阵 matrix &#xff0c;找出其中 最长递增路径 的长度。 对…

C语言:文件操作(二)

目录 前言 4、文件的顺序读写 4.1fputc 4.2 fgetc 4.3 fputs 4.4 fgets 4.5 fprintf 4.6 fscanf 4.7 fread和fwrite 结&#xff08;二&#xff09; 前言 接者“C语言&#xff1a;文件操作&#xff08;一&#xff09;”往下讲。 本篇文章将介绍C语言的文件操作&#xf…

【数字图像处理matlab系列】空间域处理之亮度变换(imadjust函数使用)

【数字图像处理matlab系列】空间域处理之亮度变换(imadjust函数使用) 在空间域中&#xff0c;图像处理就是直接对图像的像素进行操作 imadjust 是 MATLAB 中用于调整图像强度值或颜色图的函数。它可以改变图像的对比度&#xff0c;使得图像更清晰或更易于分析。以下是 imadju…

【MATLAB源码-第178期】基于matlab的8PSK调制解调系统频偏估计及补偿算法仿真,对比补偿前后的星座图误码率。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 在通信系统中&#xff0c;频率偏移是一种常见的问题&#xff0c;它会导致接收到的信号频率与发送信号的频率不完全匹配&#xff0c;进而影响通信质量。在调制技术中&#xff0c;QPSK&#xff08;Quadrature Phase Shift Keyi…

4.2总结

了解了部分Api的使用并学习了接口的API API API包含了较多种类&#xff08;System,Runtime等&#xff09; System其实就是一个工具类&#xff0c;提供了一些与系统相关的方法 下面有一些常间的System方法 方法名说明public static void exit (int status)终止当前运行的ja…

Android JNI 调用第三方SO

最近一个项目使用了Go 编译了一个so库&#xff0c;但是这个so里面还需要使用第三方so库pdfium, 首先在Android工程把2个so库都放好 在jni中只能使用dlopen方式&#xff0c;其他的使用函数指针的方式来调用&#xff0c;和windows dll类似&#xff0c;不然虽然编译过了但是会崩溃…

picGo图床搭建gitee和smms(建议使用)

picGoGitee 这个需要下载gitee插件, 因为官方频繁的检索文件类型, 有时候也会失效 如果没有特殊要求平时存个学习的要看图中文字的重要的图片建议就是smms, 免费也够用! 图片存本地不方便, 各种APP中来回传还会失帧损失画质, 所以你值得往下看 picGosmms 建议使用这个, sm…

为移动云数据实现基于可撤销属性组的加密:多代理辅助方法

参考文献为2023年发表的Achieving Revocable Attribute Group-Based Encryption for Mobile Cloud Data: A Multi-Proxy Assisted Approach 动机 对于目前的代理辅助的可撤销基于属性加密来说&#xff0c;外包解密存一些缺点。当多个具有相同属性的用户请求外包转换时&#x…

非写代码无以致远

标题党一下&#xff0c;本篇文章主要汇总了一些代码题&#xff0c;让大家写一些代码练习一下吧&#xff01; 变种水仙花_牛客题霸_牛客网 (nowcoder.com) #include<stdio.h> int main() {for (int i 10000; i < 99999; i) {int sum 0;for (int j 10; j < 1000…