CANFD:
内存控制表 1. 控制表详细说明
模块本身的信息和控制参数形成了一张一维控制表,在控制芯片的RAM和Flash中各保存一份。
在系统上电时,控制芯片从Flash读取控制表到RAM中,在模块运行过程中用户对RAM中的控制表进行读写操作,获取模块状态或对模块进行控制。
若用户对表中的“保存数据到Flash标志”写1,则控制芯片将当前RAM表的内容复制到Flash中,实现断电保存。 控制表内容如下:
地址 | 名称 | 命令项 | 权限 | 初始值 |
---|---|---|---|---|
0x00 | 保留 | 保留 | -- | 0x1314 |
0x01 | SYS_ID | 驱动器ID | -- | 1 |
0x02 | SYS_MODEL_TYPE | 驱动器型号:2:J14,3:J17,4:J20,5:J25,6:手爪 | R | 与程序编译一致 |
0x03 | SYS_FW_VERSION | 固件版本,如0x0102表示版本号1.2 | R | -- |
0x04 | SYS_ERROR | 错误代码 | R | -- |
0x05 | SYS_VOLTAGE | 系统电压(0.01V) | R | -- |
0x06 | SYS_TEMP | 系统温度(0.1℃) | R | -- |
0x07 | SYS_REDU_RATIO | 模块减速比 | R | 与程序编译一致80/100 |
0x08 | SYS_BPS_CANFD_BRT | CANFD仲裁域波特率: 0-250k,1-500k,1-2M | R/W | 0 |
0x09 | SYS_BPS_CANFD_DATA | CANFD数据域特率: 0-250k,1-500k,1-2M,2-3M,4M,5M | R/W | 2 |
0x0a | SYS_ENABLE_DRIVER | 驱动器使能标志,1:使能,0:未使能。(禁使能后需要等待5ms再下发指令) | R/W | 0 |
0x0b | SYS_ENABLE_ON_POWER | 上电使能驱动器标志,1:使能,0:不使能。 | R/W | 1 |
0x0c | SYS_SAVE_TO_FLASH | 保存数据到Flash标志,1:保存,0:不保存。在掉使能的状态下保存。(发送保存Flash后需要等待50ms再下发指令) | R/W | 0 |
0x0d | SYS_DEMA_ABSPOS | 自动标定绝对位置标志,1:标定,0:不标定。 | R/W | 0 |
0x0e | SYS_SET_ZERO_POS | 将当前位置设置为零点标志,1:设置,0:不设置。 | R/W | 0 |
0x0f | SYS_CLEAR_ERROR | 清除错误标志,1:清除,0:不清除。 | R/W | 0 |
0x10 | CUR_CURRENT_L | 当前电流低16位(mA) | R | 0 |
0x11 | CUR_CURRENT_H | 当前电流高16位(mA) | R | -- |
0x12 | CUR_SPEED_L | 关节当前速度低16位 (RPM,分辨率0.02RPM) | R | -- |
0x13 | CUR_SPEED_H | 关节当前速度高16位 (RPM,分辨率0.02RPM) | R | -- |
0x14 | CUR_POSITION_L | 当前位置低16位(units),精度0.0001° | R | -- |
0x15 | CUR_POSITION_H | 当前位置高16位(units),精度0.0001° | R | -- |
0x16 | 保留 | -- | -- | -- |
0x17 | 保留 | |||
0x18 | 机械臂标定完成标志 | 0未标定,1标定中,2标定完成 | 0 | |
0x19 | 保留 | 保留 | -- | -- |
0x1A | 保留 | 保留 | -- | -- |
0x1B | 保留 | 保留 | -- | -- |
0x1C | 保留 | 保留 | -- | -- |
0x1D~ 0x1f | 保留 | 保留 | -- | -- |
0x20 | 保留 | 保留 | -- | -- |
0x21 | 保留 | 保留 | -- | -- |
0x22 | 保留 | 保留 | -- | -- |
0x23 | 保留 | 保留 | -- | -- |
0x24 | 保留 | 保留 | -- | -- |
0x25 | 保留 | 保留 | -- | -- |
0X26~0X29 | 保留 | 保留 | -- | -- |
0X2A | MOT_MODEL_ID0 | 模块全球唯一ID:15:0 | R | |
0X2B | MOT_MODEL_ID1 | 模块全球唯一ID:31:16 | R | |
0X2C | MOT_MODEL_ID2 | 模块全球唯一ID:47:32 | R | |
0X2D | MOT_MODEL_ID3 | 模块全球唯一ID:63:48 | R | |
0X2E | MOT_MODEL_ID4 | 模块全球唯一ID:79:64 | R | |
0X2F | MOT_MODEL_ID5 | 模块全球唯一ID:95:80 | R | |
0x30 | TAG_WORK_MODE | 工作模式:0-开环,1-电流模式,2-速度模式,3-位置模式 | R/W | 3 |
0x31 | TAG_OPEN_PWM | 开环模式下占空比(0~100) | R/W | 0 |
0x32 | TAG_CURRENT_L | 目标电流低16位(mA) | R/W | 0 |
0x33 | TAG_CURRENT_H | 目标电流高16位(mA) | R/W | 0 |
0x34 | TAG_SPEED_L | 关节目标速度低16位 (RPM,分辨率0.002RPM) | R/W | 0 |
0x35 | TAG_SPEED_H | 关节目标速度高16位 (RPM,分辨率0.002RPM) | R/W | 0 |
0x36 | TAG_POSITION_L | 目标位置低16位(units),精度0.0001° | R/W | 0 |
0x37 | TAG_POSITION_H | 目标位置高16位(units),精度0.0001° | R/W | 0 |
0X38 | TAG_SERVO_FLAG | 目标状态伺服 1. 伺服控制指令按默认反馈 2. 伺服控置指令后面加目标电流、速度和位置,上电后程序强制改写该寄存器为0 | R/W | 0 |
0X39 | Speed feed forward switch | 存储的数值是位置环跟随系数,有效值0到100,默认值0 | R/W | 0 |
0x3A~ 0x3f | 保留 | 保留 | -- | -- |
0x40 | LIT_MAX_CURRENT | 最大电流(mA) | R/W | -- |
0x41 | LIT_MAX_SPEED | 关节最大速度(RPM,分辨率0.01RPM) | R/W | 3000 |
0x42 | LIT_MAX_ACC | 关节最大加速度(0.1rpm/s) | R/W | 5000 |
0x43 | LIT_MAX_DEC | 关节最大减速度(0.1rpm/s) | ||
0x44 | LIT_MIN_POSITION_L | 最小位置低16位(units),精度0.0001° | R/W | -- |
0x45 | LIT_MIN_POSITION_H | 最小位置高16位(units),精度0.0001° | R/W | -- |
0x46 | LIT_MAX_POSITION_L | 最大位置低16位(units),精度0.0001° | R/W | -- |
0x47 | LIT_MAX_POSITION_H | 最大位置高16位(units),精度0.0001° | R/W | -- |
0X48 | 保留 | 保留 | -- | -- |
0X49 | IAP_FLAG | IAP在线更新标志位 0-不更新 | R/W | |
0x4a | 保留 | 保留 | -- | -- |
0x4B | LIT_MAX_POS_DIFF_L | 允许的最大跟随误差低16位 ,精度0.0001° | R/W | -- |
0x4C | LIT_MAX_POS_DIFF_H | 允许的最大跟随误差高16位 ,精度0.0001° | R/W | -- |
0x4D~0x4E | 保留 | 保留 | -- | -- |
0X4F | 保留 | 保留 | -- | -- |
0x50 | SEV_PARAME_UPDATE | 1:更新到伺服程序。0:不更新 | R/W | 0 |
0x51 | SEV_CURRENT_P | 电流环P参数 | R/W | -- |
0x52 | SEV_CURRENT_I | 电流环I参数 | R/W | -- |
0x53 | SEV_CURRENT_D | 电流环D参数 | R/W | -- |
0x54 | SEV_SPEED_P | 速度环P参数 | R/W | -- |
0x55 | SEV_SPEED_I | 速度环I参数 | R/W | -- |
0x56 | SEV_SPEED_D | 速度环D参数 | R/W | -- |
0x57 | SEV_SPEED_DS | 速度P死区 | R/W | -- |
0x58 | SEV_POSITION_P | 位置环P参数 | R/W | -- |
0x59 | SEV_POSITION_I | 位置环I参数 | R/W | -- |
0x5a | SEV_POSITION_D | 位置环D参数 | R/W | -- |
0x5b | SEV_POSITION_DS | 位置P死区 | R/W | -- |
0x5c | 保留 | 保留 | -- | -- |
0x5D | 保留 | 保留 | -- | -- |
0x5E | 保留 | 保留 | -- | -- |
0x5F | 保留 | 保留 | -- | -- |
0X60 | 保留 | 保留 | -- | -- |
0X61 | 保留 | 保留 | -- | -- |
0X62 | 保留 | 保留 | -- | -- |
0X63~0X6F | 保留 | 保留 | -- | -- |
0X70 | 保留 | 保留 | -- | -- |
0x71 | 保留 | 保留 | -- | -- |
0x72 | 保留 | 保留 | -- | -- |
0x73 | 保留 | 保留 | -- | -- |
0x74 | 保留 | 保留 | -- | -- |
0x75 | 保留 | 保留 | -- | -- |
0x76 | 保留 | 保留 | -- | -- |
0x77 | 保留 | 保留 | -- | -- |
0x78 | ERROR | 错误代码 | R | 0 |
0x79~0x7f | 保留 | 保留 | -- | -- |
0x80 | 保留 | 保留 | -- | -- |
0x81 | 保留 | 保留 | -- | -- |
0x82 | 保留 | 保留 | -- | -- |
0x83 | 保留 | 保留 | -- | -- |
0x84 | 保留 | 保留 | -- | -- |
0x85 | 保留 | 保留 | -- | -- |
0x86 | 保留 | 保留 | -- | -- |
0x87 | 保留 | 保留 | -- | -- |
0x88 | 保留 | 保留 | -- | -- |
0x89 | 保留 | 保留 | -- | -- |
0x8A | 保留 | 保留 | -- | -- |
0x8B | 保留 | 保留 | -- | -- |
0x8C | 保留 | 保留 | -- | -- |
0x8D | 保留 | 保留 | -- | -- |
0x8E | 保留 | 保留 | -- | -- |
0X8F | 保留 | 保留 | -- | -- |
0X90 | 保留 | 保留 | -- | -- |
0x91 | 保留 | 保留 | -- | -- |
注意:
- ID设置成功后需要给关节断电重启,模块将以新ID进行通讯。
- 三闭环参数出厂时已经按照最优状态调整好,如非必要无需再调整。
2. 控制表补充说明
2.1 标志说明
共有6个标志类变量,其值只能为1或者0,其他值无效。
具体说明如下表:
地址 | 定义 | 说明 |
---|---|---|
0x0a | 驱动器使能标志 | 写1使能驱动器,写0禁能驱动器并打开锁相继电器。 |
0x0b | 上电使能驱动器标志 | 1代表上电即使能驱动器并工作在指定模式,0代表上电不使能。 |
0x0c | 保存数据到Flash标志 | 写入1后芯片将当前RAM中的控制表写入Flash中,系统自动清零。 |
0x0d | 自动标定绝对位置标志 | 写入1后驱动器将根据编码器的值标定绝对位置传感器(数字电位器),并将标定后的数据保存到Flash中,必须确保模块当前不带任何负载,并且能够稳定工作在位置伺服模式并且出于使能状态,否则将带来不可预测的后果。系统自动清零。 |
0x0e | 将当前位置设置为零点标志 | 写1后将当前的位置保存为零点位置,并立即起作用,数据保存到Flash中后下次上电后将使用保存的位置作为零点位置。系统自动清零。 |
0x0f | 清除错误标志 | 写1尝试清除当前错误。自动清零。 |
2.2 相关单位说明
10关节与30关节,目标电流和反馈的实际电流,单位为1mA;
60关节,目标电流和反馈的实际电流,单位为2mA;
所有关节的电流前馈,单位为2mA;
目标速度,对象是关节输出端,单位为0.002RPM;
实际速度,对象是关节输出端,单位为0.02RPM;
前馈速度,对象是关节输出端,单位为0.002RPM;
目标位置和反馈的实际位置,对象是关节输出端,单位为0.0001度;
电压单位0.01V;
系统温度单位0.1℃。
2.3 工作模式说明
模块共有四种工作模式:开环模式、电流模式、速度模式和位置模式。 四种模式的切换通过改变控制表中的TAG_WORK_MODE字段(0x30)实现切换。
- 开环模式直接控制驱动器输出到电机的占空比,容易发生危险,不建议使用。
- 电流模式控制电机输出的目标电流(力矩)。
- 速度模式控制电机输出转速,除非模块能够实现整周转动,否则不建议使用。
- 位置模块控制电机伺服位置。
0x3*字段中的目标占空比、电流、速度和位置只有在模块处于相应工作模式下才起作用。 0x40~0x46字段中的最大电流、最大速度和最大加/减速度对电流、速度和位置模式均有效,最小和最大位置只有工作在位置伺服模式有效,其指定了位置伺服的目标值不能够设定在该范围以外。
若设定的目标位置小于最小值或大于最大值,则模块将只运动到最小值或最大值处。若驱动器使能时模块已经处于范围之外,则将自动运动到最小/最大值处。
3. 错误代码
错误代码16位数据每一位代表一种错误,当相应错误产生时,相应位将置1,出现不可恢复的错误后,模块将自动进入驱动禁能状态,用户需要往“清除错误标志”字段(0x0f)写1来清除错误。
错误位代表的含义如下:
错误位 | 定义 | 说明 |
---|---|---|
0x0001 | FOC频率过高 | FOC rate too high |
0x0002 | 过压 | Over voltage |
0x0004 | 欠压 | Under voltage |
0x0008 | 过温 | Over temperature |
0x0010 | 启动过程失败 | Startup failed |
0x0020 | 编码器错误 | 丢零位 |
0x0040 | 过流 | Over current |
0x0080 | 软件错误 | Software Error |
0x0100 | 温度传感器出错 | 温度传感器出错标志 |
0x0200 | 位置超限错误 | 当前/目标位置超过限位 |
0x0400 | 关节ID非法 | 关节ID非法 |
0x0800 | 位置跟踪误差超限 | 目标位置与当前位置差值超过阈值 |
0x1000 | 电流检测错误 | 上电时电流传感器检测错误 |
0x2000 | 抱闸失败 | 打开抱闸失败 |
0x4000 | 位置指令阶跃 | 位置指令阶跃警告 |
0x8000 | 多圈丢数 | 多圈丢数 |