From c46f5444a26a3bd5ccaedf9ea71f8cbd1f2170a9 Mon Sep 17 00:00:00 2001 From: zwsd Date: Fri, 22 Jul 2022 16:15:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=91=BD=E4=BB=A4=E6=9E=9A?= =?UTF-8?q?=E4=B8=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main/motor_drive.c | 18 +++++++++++++++++- main/motor_drive.h | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/main/motor_drive.c b/main/motor_drive.c index d9e6ad3..cc8b2a2 100644 --- a/main/motor_drive.c +++ b/main/motor_drive.c @@ -1,7 +1,23 @@ #include "motor_drive.h" +#include "esp_log.h" + +#define MOTOR_DRIVE "MOTOR_DRIVE" + void motor_drive_uart_init() {} -void motor_drive_turn(int direction, int speed_level, double position) {} +void motor_drive_turn(int direction, int speed_level, double position) { + if ((direction > 2) || (direction < 0)) { + ESP_LOGW(MOTOR_DRIVE, "Direction out of range"); + } + if ((speed_level > 9) || (speed_level < 0)) { + ESP_LOGW(MOTOR_DRIVE, "Speed level out of range"); + } + if ((position > 360) || (position <= 0)) { + ESP_LOGW(MOTOR_DRIVE, "Position out of range"); + } + + +} double motor_drive_read_encoder() { return 0.0; } diff --git a/main/motor_drive.h b/main/motor_drive.h index 16eb122..f0f06c0 100644 --- a/main/motor_drive.h +++ b/main/motor_drive.h @@ -4,6 +4,38 @@ #include #include +typedef enum { + RMDRs485CMDOrder30 = 0x30, //读取PID参数命令 + RMDRs485CMDOrder31 = 0x31, //写入PID参数到RAM命令 + RMDRs485CMDOrder32 = 0x32, //写入PID参数到ROM命令 + RMDRs485CMDOrder33 = 0x33, //读取加速度命令 + RMDRs485CMDOrder34 = 0x34, //写入加速度到RAM命令 + RMDRs485CMDOrder90 = 0x90, //读取编码器命令 + RMDRs485CMDOrder91 = 0x91, //写入编码器值到ROM作为电机零点命令 + RMDRs485CMDOrder19 = 0x19, //写入当前位置到ROM作为电机零点命令 + RMDRs485CMDOrder92 = 0x92, //读取多圈角度命令 + RMDRs485CMDOrder94 = 0x94, //读取单圈角度命令 + RMDRs485CMDOrder95 = 0x95, //清除电机角度命令(设置电机初始位置) + RMDRs485CMDOrder9A = 0x9A, //读取电机状态1和错误标志命令 + RMDRs485CMDOrder9B = 0x9B, //清除电机错误标志命令 + RMDRs485CMDOrder9C = 0x9C, //读取电机状态2命令 + RMDRs485CMDOrder9D = 0x9D, //读取电机状态3命令 + RMDRs485CMDOrder80 = 0x80, //电机关闭命令 + RMDRs485CMDOrder81 = 0x81, //电机停止命令 + RMDRs485CMDOrder88 = 0x88, //电机运行命令 + RMDRs485CMDOrderA1 = 0xA1, //转矩闭环控制命令 + RMDRs485CMDOrderA2 = 0xA2, //速度闭环控制命令 + RMDRs485CMDOrderA3 = 0xA3, //多圈位置闭环控制命令1 + RMDRs485CMDOrderA4 = 0xA4, //多圈位置闭环控制命令2 + RMDRs485CMDOrderA5 = 0xA5, //单圈位置闭环控制命令1 + RMDRs485CMDOrderA6 = 0xA6, //单圈位置闭环控制命令2 + RMDRs485CMDOrderA7 = 0xA7, //增量位置闭环控制命令1 + RMDRs485CMDOrderA8 = 0xA8, //增量位置闭环控制命令2 + RMDRs485CMDOrder12 = 0x12, //读取驱动和电机型号命令 + RMDRs485CMDOrderC2 = 0xC2, //读取多圈角度命令2 + RMDRs485CMDOrderD8 = 0xD8, //增量位置闭环控制命令2 +} RMDMotorDriverRs485CMD; + void motor_drive_uart_init(); void motor_drive_turn(int direction, int speed_level, double position); double motor_drive_read_encoder(); \ No newline at end of file