syntax = "proto3"; import "cmvr/msgs/canopen.proto"; package cmvr.msgs; /* -------------------------------------------------------- * CAN OPEN 定义 * --------------------------------------------------------*/ // 电机控制模式(Operation Mode) enum RunMode { // 未指定 RUN_MODE_UNSPECIFIED = 0; // Profile Position Mode - 位置模式 RUN_MODE_PROFILE_POSITION = 1; // Velocity Mode - 简单速度模式 RUN_MODE_VELOCITY = 2; // Profile Velocity Mode - 速度模式(带轮廓) RUN_MODE_PROFILE_VELOCITY = 3; // Torque Mode - 转矩模式 RUN_MODE_TORQUE = 4; // Homing Mode - 回零模式 RUN_MODE_HOMING = 5; // Interpolation Mode - 位置插补模式 RUN_MODE_INTERPOLATED_POSITION = 7; // Cyclic Synchronous Position Mode - 周期位置模式 RUN_MODE_CYCLIC_SYNC_POSITION = 8; // Cyclic Synchronous Velocity Mode - 周期速度模式 RUN_MODE_CYCLIC_SYNC_VELOCITY = 9; // Cyclic Synchronous Current Mode - 周期转矩模式 RUN_MODE_CYCLIC_SYNC_CURRENT = 10; } // 电机状态数据 message MotorStatus { RunMode run_mode = 1; // 当前运行模式 int32 current = 2; // 当前电流(单位:mA) int32 target_current = 3; // 目标电流(单位:mA) int32 speed = 4; // 当前速度,转换为度每秒:(speed / 100 / 减速比) * 360 int32 target_speed = 5; // 目标速度,单位同上 int32 position = 6; // 当前电机位置(位置转角度:(position / 65536 / 减速比) * 360) int32 target_position = 7; // 目标位置(非位置模式无效) uint32 error_state = 8; // 错误状态位(见位说明) int32 speed_kp = 9; // 速度环Kp,含模式和速度信息(bit复用) int32 speed_ki = 10; // 速度环Ki,含模式和速度信息(bit复用) int32 speed_kd = 11; // 速度环Kd int32 position_kp = 12; // 位置环Kp int32 position_ki = 13; // 位置环Ki int32 position_kd = 14; // 位置环Kd int32 bus_voltage = 15; // 母线电压 int32 max_abs_current = 16; // 最大电流绝对值(单位:mA) int32 max_pos_current = 17; // 最大正电流(单位:mA) int32 min_neg_current = 18; // 最小负电流(单位:mA) int32 max_pos_accel = 19; // 最大正向加速度 int32 min_neg_accel = 20; // 最小负向加速度 int32 max_pos_velocity = 21; // 最大正向速度(转化为度/秒) int32 min_neg_velocity = 22; // 最小负向速度(转化为度/秒) int32 max_pos_position = 23; // 最大正向位置(角度) int32 min_neg_position = 24; // 最小负向位置(角度) int32 motor_temp = 25; // 电机温度(单位:摄氏度) int32 board_temp = 26; // 电路板温度(单位:摄氏度) int32 current_kp = 27; // 电流P int32 current_ki = 28; // 电流I int32 current_kd = 29; // 电流D int32 motor_type = 30; // 电机型号(复合字段,包含刹车、ACTUATOR_TYPE等) int32 motor_version = 31; // 电机版本号(软件+硬件,16进制格式) int32 software_version = 32;// 软件版本号(16进制格式) int32 position_offset = 33; // 当前位置偏移(编码器位置 - 偏移值) bytes csp_data = 34; // 获取CSP,8字节数据 int32 encoder_voltage = 35; // 编码器电池电压(新版硬件支持) int32 encoder_state = 36; // 编码器状态(双编码器=外圈位置,单编码器=状态) int32 overvoltage_limit = 37; // 过压阈值(单位:V) int32 undervoltage_limit = 38; // 欠压阈值(单位:V) int32 coil_over_temp = 39; // 电机线圈过温阈值(单位:℃) int32 driver_over_temp = 40; // 驱动板过温阈值(单位:℃) /* --------------------- * CANOPEN 特有的参数 * --------------------*/ SdoFrame sdo_response = 41; NmtState nmt_state = 42; // 只保留值,具体值在使用的时候使用联合体去解析 uint32 ctrl_word = 43; uint32 status_word = 44; }