13 changed files with 225 additions and 99 deletions
-
14api/api.hpp
-
68api/config_index.hpp
-
174api/reg_index.hpp
-
39api/state_index.hpp
-
3api/zi_module.hpp
-
2api/zi_motor.hpp
-
4cmdid.hpp
-
3protocol_parser.cpp
-
2protocol_proxy.cpp
-
5protocol_proxy.hpp
-
2zmodule_device_manager.cpp
-
4zmodule_device_manager.hpp
-
4zmodule_device_script_cmder_paser.cpp
@ -1,12 +1,24 @@ |
|||
#pragma once
|
|||
#include "config_index.hpp"
|
|||
//
|
|||
#include "errorcode.hpp"
|
|||
//
|
|||
#include "zi_module.hpp"
|
|||
//
|
|||
#include "zi_motor.hpp"
|
|||
//
|
|||
#include "zi_xymotor.hpp"
|
|||
//
|
|||
#include "packet_interface.hpp"
|
|||
//
|
|||
#include "i_zcan_cmder.hpp"
|
|||
//
|
|||
#include "i_zcan_cmder_master.hpp"
|
|||
//
|
|||
#include "i_cmdparser.hpp"
|
|||
//
|
|||
#include "state_index.hpp"
|
|||
#include "protocol_constant.hpp"
|
|||
//
|
|||
#include "protocol_constant.hpp"
|
|||
//
|
|||
#include "reg_index.hpp"
|
@ -0,0 +1,174 @@ |
|||
#pragma once
|
|||
#include <stdint.h>
|
|||
|
|||
namespace iflytop { |
|||
using namespace std; |
|||
|
|||
#define REG_INDEX(type, subconfigindex) (type + subconfigindex)
|
|||
typedef enum { |
|||
/*******************************************************************************
|
|||
* 模块通用配置和状态(0->1000) * |
|||
*******************************************************************************/ |
|||
kreg_module_version = REG_INDEX(0, 0), // 模块版本
|
|||
kreg_module_type = REG_INDEX(0, 1), // 模块类型
|
|||
kreg_module_status = REG_INDEX(0, 2), // 0idle,1busy,2error
|
|||
kreg_module_errorcode = REG_INDEX(0, 3), // inited_flag
|
|||
kreg_module_initflag = REG_INDEX(0, 4), // inited_flag
|
|||
kreg_module_enableflag = REG_INDEX(0, 5), // 0idle,1busy,2error
|
|||
kreg_module_last_cmd_exec_status = REG_INDEX(20, 0), // 上一条指令执行的状态
|
|||
kreg_module_last_cmd_exec_val0 = REG_INDEX(20, 1), // 上一条指令执行的结果0
|
|||
kreg_module_last_cmd_exec_val1 = REG_INDEX(20, 2), // 上一条指令执行的结果1
|
|||
kreg_module_last_cmd_exec_val2 = REG_INDEX(20, 3), // 上一条指令执行的结果2
|
|||
kreg_module_last_cmd_exec_val3 = REG_INDEX(20, 4), // 上一条指令执行的结果3
|
|||
kreg_module_last_cmd_exec_val4 = REG_INDEX(20, 5), // 上一条指令执行的结果4
|
|||
kreg_module_last_cmd_exec_val5 = REG_INDEX(20, 6), // 上一条指令执行的结果5
|
|||
kreg_module_private0 = REG_INDEX(200, 0), // 模块私有状态0
|
|||
kreg_module_private1 = REG_INDEX(200, 1), // 模块私有状态1
|
|||
kreg_module_private2 = REG_INDEX(200, 2), // 模块私有状态2
|
|||
kreg_module_private3 = REG_INDEX(200, 3), // 模块私有状态3
|
|||
kreg_module_private4 = REG_INDEX(200, 4), // 模块私有状态4
|
|||
kreg_module_private5 = REG_INDEX(200, 5), // 模块私有状态5
|
|||
kreg_module_private6 = REG_INDEX(200, 6), // 模块私有状态6
|
|||
kreg_module_private7 = REG_INDEX(200, 7), // 模块私有状态7
|
|||
kreg_module_private8 = REG_INDEX(200, 8), // 模块私有状态8
|
|||
kreg_module_private9 = REG_INDEX(200, 9), // 模块私有状态9
|
|||
|
|||
/*******************************************************************************
|
|||
* 电机相关配置和状态(1000->1999 * |
|||
*******************************************************************************/ |
|||
kreg_motor_x_shift = REG_INDEX(1000, 0), // x偏移
|
|||
kreg_motor_y_shift = REG_INDEX(1000, 1), // y偏移
|
|||
kreg_motor_z_shift = REG_INDEX(1000, 2), // z偏移
|
|||
kreg_motor_x_shaft = REG_INDEX(1000, 3), // x轴是否反转
|
|||
kreg_motor_y_shaft = REG_INDEX(1000, 4), // y轴是否反转
|
|||
kreg_motor_z_shaft = REG_INDEX(1000, 5), // z轴是否反转
|
|||
kreg_motor_x_one_circle_pulse = REG_INDEX(1000, 6), // x轴一圈脉冲数
|
|||
kreg_motor_y_one_circle_pulse = REG_INDEX(1000, 7), // y轴一圈脉冲数
|
|||
kreg_motor_z_one_circle_pulse = REG_INDEX(1000, 8), // z轴一圈脉冲数
|
|||
kreg_motor_default_velocity = REG_INDEX(1000, 9), // 默认速度
|
|||
kreg_motor_default_acc = REG_INDEX(1000, 10), // 默认加速度
|
|||
kreg_motor_default_dec = REG_INDEX(1000, 11), // 默认减速度
|
|||
kreg_motor_default_break_dec = REG_INDEX(1000, 12), // 默认减速度
|
|||
kreg_stepmotor_ihold = REG_INDEX(1000, 13), // 步进电机电流配置
|
|||
kreg_stepmotor_irun = REG_INDEX(1000, 14), // 步进电机电流配置
|
|||
kreg_stepmotor_iholddelay = REG_INDEX(1000, 15), // 步进电机电流配置
|
|||
|
|||
kreg_motor_run_to_zero_max_x_d = REG_INDEX(1050, 0), // x轴回零最大距离
|
|||
kreg_motor_run_to_zero_max_y_d = REG_INDEX(1050, 1), // y轴回零最大距离
|
|||
kreg_motor_run_to_zero_max_z_d = REG_INDEX(1050, 2), // z轴回零最大距离
|
|||
kreg_motor_look_zero_edge_max_x_d = REG_INDEX(1050, 3), // x轴找零边缘最大距离
|
|||
kreg_motor_look_zero_edge_max_y_d = REG_INDEX(1050, 4), // y轴找零边缘最大距离
|
|||
kreg_motor_look_zero_edge_max_z_d = REG_INDEX(1050, 5), // z轴找零边缘最大距离
|
|||
kreg_motor_run_to_zero_speed = REG_INDEX(1050, 6), // 回零速度
|
|||
kreg_motor_run_to_zero_dec = REG_INDEX(1050, 7), // 回零减速度
|
|||
kreg_motor_look_zero_edge_speed = REG_INDEX(1050, 8), // 找零边缘速度
|
|||
kreg_motor_look_zero_edge_dec = REG_INDEX(1050, 9), // 找零边缘减速度
|
|||
|
|||
kreg_xyrobot_robot_type = REG_INDEX(1100, 0), // 机器人类型 0:hbot 1:corexy
|
|||
|
|||
kreg_robot_move = REG_INDEX(1500, 0), // 机器人是否在移动
|
|||
kreg_robot_x_pos = REG_INDEX(1500, 1), // 机器人x坐标
|
|||
kreg_robot_y_pos = REG_INDEX(1500, 2), // 机器人y坐标
|
|||
kreg_robot_z_pos = REG_INDEX(1500, 3), // 机器人z坐标
|
|||
kreg_robot_x_velocity = REG_INDEX(1500, 4), // 机器人x速度
|
|||
kreg_robot_y_velocity = REG_INDEX(1500, 5), // 机器人y速度
|
|||
kreg_robot_z_velocity = REG_INDEX(1500, 6), // 机器人z速度
|
|||
kreg_robot_x_torque = REG_INDEX(1500, 7), // 机器人x电流
|
|||
kreg_robot_y_torque = REG_INDEX(1500, 8), // 机器人y电流
|
|||
kreg_robot_z_torque = REG_INDEX(1500, 9), // 机器人z电流
|
|||
|
|||
/*******************************************************************************
|
|||
* 传感器状态(2000->2999) * |
|||
*******************************************************************************/ |
|||
kreg_sensor_current = REG_INDEX(2000, 0), // 电流
|
|||
kreg_sensor_voltage = REG_INDEX(2000, 1), // 电压
|
|||
kreg_sensor_temperature = REG_INDEX(2000, 2), // 温度
|
|||
kreg_sensor_humidity = REG_INDEX(2000, 3), // 湿度
|
|||
kreg_sensor_wind_speed = REG_INDEX(2000, 4), // 风速
|
|||
kreg_sensor_wind_dir = REG_INDEX(2000, 5), // 风向
|
|||
kreg_sensor_air_press = REG_INDEX(2000, 6), // 气压
|
|||
kreg_sensor_pm25 = REG_INDEX(2000, 7), // PM2.5
|
|||
kreg_sensor_pm10 = REG_INDEX(2000, 8), // PM10
|
|||
kreg_sensor_co = REG_INDEX(2000, 9), // CO
|
|||
kreg_sensor_co2 = REG_INDEX(2000, 10), // CO
|
|||
kreg_sensor_no2 = REG_INDEX(2000, 11), // NO2
|
|||
kreg_sensor_so2 = REG_INDEX(2000, 12), // SO2
|
|||
kreg_sensor_o3 = REG_INDEX(2000, 13), // O3
|
|||
kreg_sensor_light_intensity = REG_INDEX(2000, 14), // 光照强度
|
|||
kreg_sensor_radiation = REG_INDEX(2000, 15), // 总辐射量
|
|||
kreg_sensor_hydrogen_peroxide_volume = REG_INDEX(2000, 16), // ppm 0x0100
|
|||
kreg_sensor_h2o_h2o2_rs = REG_INDEX(2000, 17), // %RS * 100
|
|||
kreg_sensor_relative_humidity = REG_INDEX(2000, 18), // %RH * 100
|
|||
kreg_sensor_absolute_hydrogen_peroxide = REG_INDEX(2000, 19), // mg/m3
|
|||
kreg_sensor_h2o_h2o2dew_point_temperature = REG_INDEX(2000, 20), // °C * 100
|
|||
kreg_sensor_water_volume = REG_INDEX(2000, 21), // ppm
|
|||
kreg_sensor_water_vapor_pressure = REG_INDEX(2000, 22), // hpa
|
|||
kreg_sensor_absolute_humidity = REG_INDEX(2000, 23), // g/m3
|
|||
kreg_sensor_water_vapor_saturation_pressure_h2o = REG_INDEX(2000, 24), // hpa
|
|||
kreg_sensor_h2o2_vapor_pressure = REG_INDEX(2000, 25), // hpa
|
|||
kreg_sensor_water_vapor_saturation_pressure_h2o_h2o2 = REG_INDEX(2000, 26), // hpa
|
|||
kreg_sensor_temperature0 = REG_INDEX(2100, 0), // 温度1
|
|||
kreg_sensor_temperature1 = REG_INDEX(2100, 1), // 温度2
|
|||
kreg_sensor_temperature2 = REG_INDEX(2100, 2), // 温度3
|
|||
kreg_sensor_temperature3 = REG_INDEX(2100, 3), // 温度4
|
|||
kreg_sensor_temperature4 = REG_INDEX(2100, 4), // 温度5
|
|||
kreg_sensor_temperature5 = REG_INDEX(2100, 5), // 温度6
|
|||
kreg_sensor_temperature6 = REG_INDEX(2100, 6), // 温度7
|
|||
kreg_sensor_temperature7 = REG_INDEX(2100, 7), // 温度8
|
|||
kreg_sensor_temperature8 = REG_INDEX(2100, 8), // 温度9
|
|||
kreg_sensor_temperature9 = REG_INDEX(2100, 9), // 温度10
|
|||
kreg_sensor_pressure0 = REG_INDEX(2120, 0), // 压力0
|
|||
kreg_sensor_pressure1 = REG_INDEX(2120, 1), // 压力1
|
|||
kreg_sensor_pressure2 = REG_INDEX(2120, 2), // 压力2
|
|||
kreg_sensor_pressure3 = REG_INDEX(2120, 3), // 压力3
|
|||
kreg_sensor_pressure4 = REG_INDEX(2120, 4), // 压力4
|
|||
kreg_sensor_pressure5 = REG_INDEX(2120, 5), // 压力5
|
|||
kreg_sensor_pressure6 = REG_INDEX(2120, 6), // 压力6
|
|||
kreg_sensor_pressure7 = REG_INDEX(2120, 7), // 压力7
|
|||
kreg_sensor_pressure8 = REG_INDEX(2120, 8), // 压力8
|
|||
kreg_sensor_pressure9 = REG_INDEX(2120, 9), // 压力9
|
|||
kreg_sensor_humidity0 = REG_INDEX(2130, 0), // 湿度0
|
|||
kreg_sensor_humidity1 = REG_INDEX(2130, 1), // 湿度1
|
|||
kreg_sensor_humidity2 = REG_INDEX(2130, 2), // 湿度2
|
|||
kreg_sensor_humidity3 = REG_INDEX(2130, 3), // 湿度3
|
|||
kreg_sensor_humidity4 = REG_INDEX(2130, 4), // 湿度4
|
|||
kreg_sensor_humidity5 = REG_INDEX(2130, 5), // 湿度5
|
|||
kreg_sensor_humidity6 = REG_INDEX(2130, 6), // 湿度6
|
|||
kreg_sensor_humidity7 = REG_INDEX(2130, 7), // 湿度7
|
|||
kreg_sensor_humidity8 = REG_INDEX(2130, 8), // 湿度8
|
|||
kreg_sensor_humidity9 = REG_INDEX(2130, 9), // 湿度9
|
|||
|
|||
/*******************************************************************************
|
|||
* PID控制器(3000->4000) * |
|||
*******************************************************************************/ |
|||
kreg_pid_kp = REG_INDEX(3000, 0), // kp
|
|||
kreg_pid_ki = REG_INDEX(3000, 1), // ki
|
|||
kreg_pid_kd = REG_INDEX(3000, 2), // kd
|
|||
kreg_pid_max_max_output = REG_INDEX(3000, 3), // 最大输出
|
|||
kreg_pid_max_min_output = REG_INDEX(3000, 4), // 最小输出
|
|||
kreg_pid_max_max_integral = REG_INDEX(3000, 5), // 最大积分
|
|||
kreg_pid_max_min_integral = REG_INDEX(3000, 6), // 最小积分
|
|||
kreg_error_limit = REG_INDEX(3000, 7), // 误差限制
|
|||
kreg_compute_interval = REG_INDEX(3000, 8), // 计算间隔
|
|||
|
|||
kreg_pid_target = REG_INDEX(3050, 0), // 目标数值
|
|||
kreg_pid_nowoutput = REG_INDEX(3050, 1), // 当前输出
|
|||
kreg_pid_feedbackval = REG_INDEX(3050, 2), // 当前输出
|
|||
|
|||
/*******************************************************************************
|
|||
* 非标状态 * |
|||
*******************************************************************************/ |
|||
kreg_fan_cfg_speed_level = REG_INDEX(4000, 0), // 风扇转速
|
|||
|
|||
} reg_index_t; |
|||
|
|||
} // namespace iflytop
|
|||
|
|||
/**
|
|||
* @brief |
|||
* |
|||
* 模块通用配置和状态 0->1000 |
|||
* Robot/Motor通用配置和状态 1000->2000 |
|||
* Sensor通用配置和状态 2000->3000 |
|||
* PID通用配置和状态 4000->4100 |
|||
*/ |
Write
Preview
Loading…
Cancel
Save
Reference in new issue