Browse Source

update protocol

master
zhaohe 2 years ago
parent
commit
183dd634ee
  1. 37
      api/i_step_motor_ctrl_module.hpp
  2. 2
      api/i_xyrobot_ctrl_module.hpp
  3. 19
      zcancmder_protocol.hpp

37
api/i_step_motor_ctrl_module.hpp

@ -34,6 +34,7 @@ class I_StepMotorCtrlModule {
uint8_t status; uint8_t status;
uint8_t io_state; // x_zero_io x_end_io uint8_t io_state; // x_zero_io x_end_io
int32_t x; int32_t x;
int32_t last_exec_status;
} detailed_status_t; } detailed_status_t;
/******************************************************************************* /*******************************************************************************
@ -60,6 +61,19 @@ class I_StepMotorCtrlModule {
s32 run_to_zero_dec; s32 run_to_zero_dec;
} base_param_t; } base_param_t;
typedef struct {
u8 index;
s32 acc;
s32 dec;
s32 velocity;
s32 x;
} logic_point_t;
typedef struct {
base_param_t base_param;
logic_point_t logic_point[5];
} flash_config_t;
#pragma pack() #pragma pack()
public: public:
@ -68,8 +82,8 @@ class I_StepMotorCtrlModule {
virtual int32_t move_to(int32_t x, action_cb_status_t status_cb) = 0; virtual int32_t move_to(int32_t x, action_cb_status_t status_cb) = 0;
virtual int32_t move_by(int32_t dx, action_cb_status_t status_cb) = 0; virtual int32_t move_by(int32_t dx, action_cb_status_t status_cb) = 0;
virtual int32_t move_to(int32_t velocity, int32_t x, action_cb_status_t status_cb) = 0;
virtual int32_t move_by(int32_t velocity, int32_t dx, action_cb_status_t status_cb) = 0;
virtual int32_t move_to(int32_t x, int32_t velocity, action_cb_status_t status_cb) = 0;
virtual int32_t move_by(int32_t dx, int32_t velocity, action_cb_status_t status_cb) = 0;
virtual int32_t move_to_zero(action_cb_status_t status_cb) = 0; virtual int32_t move_to_zero(action_cb_status_t status_cb) = 0;
virtual int32_t move_to_zero_with_calibrate(int32_t x, action_cb_status_t status_cb) = 0; virtual int32_t move_to_zero_with_calibrate(int32_t x, action_cb_status_t status_cb) = 0;
@ -78,12 +92,19 @@ class I_StepMotorCtrlModule {
virtual int32_t stop(uint8_t stopType) = 0; virtual int32_t stop(uint8_t stopType) = 0;
virtual int32_t force_change_current_pos(int32_t x) = 0; virtual int32_t force_change_current_pos(int32_t x) = 0;
virtual int32_t move_to_block(int32_t tox) = 0;
virtual int32_t move_by_block(int32_t dx) = 0;
virtual int32_t move_to_block(int32_t velocity, int32_t tox) = 0;
virtual int32_t move_by_block(int32_t velocity, int32_t dx) = 0;
virtual int32_t move_to_zero_block() = 0;
virtual int32_t move_to_zero_with_calibrate_block(int32_t x) = 0;
virtual int32_t move_to_logic_point(int32_t logic_point_num, action_cb_status_t status_cb) = 0;
virtual int32_t set_logic_point(int logic_point_num, int32_t x, int32_t vel, s32 acc, s32 dec) = 0;
virtual int32_t get_logic_point(int logic_point_num, logic_point_t& logic_point) = 0;
virtual int32_t flush() = 0;
virtual int32_t factory_reset() = 0;
virtual int32_t move_to_block(int32_t tox, int overtime = 0) = 0;
virtual int32_t move_by_block(int32_t dx, int overtime = 0) = 0;
virtual int32_t move_to_block(int32_t tox, int32_t velocity, int overtime = 0) = 0;
virtual int32_t move_by_block(int32_t dx, int32_t velocity, int overtime = 0) = 0;
virtual int32_t move_to_zero_block(int overtime = 0) = 0;
virtual int32_t move_to_zero_with_calibrate_block(int32_t x, int overtime = 0) = 0;
virtual int32_t read_version(version_t& version) = 0; virtual int32_t read_version(version_t& version) = 0;
virtual int32_t read_status(status_t& status) = 0; virtual int32_t read_status(status_t& status) = 0;

2
api/i_xyrobot_ctrl_module.hpp

@ -26,9 +26,9 @@ class I_XYRobotCtrlModule {
typedef struct { typedef struct {
uint8_t status; uint8_t status;
u8 iostate; // x_zero_io y_zero_io
int32_t x; int32_t x;
int32_t y; int32_t y;
u8 iostate; // x_zero_io y_zero_io
} status_t; } status_t;
typedef struct { typedef struct {

19
zcancmder_protocol.hpp

@ -60,13 +60,18 @@ typedef enum {
kcmd_step_motor_ctrl_move_by = CMDID(1007, 5), // 相对移动 kcmd_step_motor_ctrl_move_by = CMDID(1007, 5), // 相对移动
kcmd_step_motor_ctrl_force_change_current_pos = CMDID(1007, 6), // 相对移动 kcmd_step_motor_ctrl_force_change_current_pos = CMDID(1007, 6), // 相对移动
kcmd_step_motor_ctrl_rotate = CMDID(1007, 7), // 相对移动 kcmd_step_motor_ctrl_rotate = CMDID(1007, 7), // 相对移动
kcmd_step_motor_ctrl_move_to_logic_point = CMDID(1007, 8), // 移动到逻辑点
kcmd_step_motor_ctrl_read_version = CMDID(1007, 50), // 读取模块型号版本信息 kcmd_step_motor_ctrl_read_version = CMDID(1007, 50), // 读取模块型号版本信息
kcmd_step_motor_ctrl_read_status = CMDID(1007, 51), // 读取模块精简状态信息 kcmd_step_motor_ctrl_read_status = CMDID(1007, 51), // 读取模块精简状态信息
kcmd_step_motor_ctrl_read_detailed_status = CMDID(1007, 52), // 读取模块详细状态信息 kcmd_step_motor_ctrl_read_detailed_status = CMDID(1007, 52), // 读取模块详细状态信息
kcmd_step_motor_ctrl_set_base_param = CMDID(1007, 100), // 设置运行参数
kcmd_step_motor_ctrl_get_base_param = CMDID(1007, 101), // 设置运行参数
kcmd_step_motor_ctrl_set_base_param = CMDID(1007, 100), // 设置运行参数
kcmd_step_motor_ctrl_get_base_param = CMDID(1007, 101), // 设置运行参数
kcmd_step_motor_ctrl_set_logic_point = CMDID(1007, 102), // 设置逻辑点
kcmd_step_motor_ctrl_get_logic_point = CMDID(1007, 103), // 读取逻辑点
kcmd_step_motor_ctrl_flush = CMDID(1007, 110), // 存储参数到flash中
kcmd_step_motor_ctrl_factory_reset = CMDID(1007, 111), // 恢复出厂设置
/******************************************************************************* /*******************************************************************************
* |Module_1008: * * |Module_1008: *
@ -228,18 +233,24 @@ ZPACKET_CMD_ACK(kcmd_xy_robot_ctrl_factory_reset, CMD(u16 id;), ACK(u8 pad;));
ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_enable, CMD(u16 id; u8 enable;), ACK(u8 pad;)); ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_enable, CMD(u16 id; u8 enable;), ACK(u8 pad;));
ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_stop, CMD(u16 id; u8 stop_type;), ACK(u8 pad;)); ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_stop, CMD(u16 id; u8 stop_type;), ACK(u8 pad;));
ZPACKET_CMD_ACK_AND_REPORT(kcmd_step_motor_ctrl_move_to_zero, CMD(u16 id;), ACK(u8 pad;), REPORT(int32_t exec_status;)); ZPACKET_CMD_ACK_AND_REPORT(kcmd_step_motor_ctrl_move_to_zero, CMD(u16 id;), ACK(u8 pad;), REPORT(int32_t exec_status;));
ZPACKET_CMD_ACK_AND_REPORT(kcmd_step_motor_ctrl_move_to_zero_with_calibrate, CMD(u16 id; s32 nowx; s32 nowy;), ACK(u8 pad;), REPORT(int32_t exec_status;));
ZPACKET_CMD_ACK_AND_REPORT(kcmd_step_motor_ctrl_move_to_zero_with_calibrate, CMD(u16 id; s32 x;), ACK(u8 pad;), REPORT(int32_t exec_status;));
ZPACKET_CMD_ACK_AND_REPORT(kcmd_step_motor_ctrl_move_to, CMD(u16 id; s32 x; s32 speed;), ACK(u8 pad;), REPORT(int32_t exec_status;)); ZPACKET_CMD_ACK_AND_REPORT(kcmd_step_motor_ctrl_move_to, CMD(u16 id; s32 x; s32 speed;), ACK(u8 pad;), REPORT(int32_t exec_status;));
ZPACKET_CMD_ACK_AND_REPORT(kcmd_step_motor_ctrl_move_by, CMD(u16 id; s32 dx; s32 speed;), ACK(u8 pad;), REPORT(int32_t exec_status;)); ZPACKET_CMD_ACK_AND_REPORT(kcmd_step_motor_ctrl_move_by, CMD(u16 id; s32 dx; s32 speed;), ACK(u8 pad;), REPORT(int32_t exec_status;));
ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_force_change_current_pos, CMD(u16 id; s32 x;), ACK(u8 pad;)); ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_force_change_current_pos, CMD(u16 id; s32 x;), ACK(u8 pad;));
ZPACKET_CMD_ACK_AND_REPORT(kcmd_step_motor_ctrl_rotate, CMD(u16 id; s32 speed; s32 run_time;), ACK(u8 pad;), REPORT(int32_t exec_status;)); ZPACKET_CMD_ACK_AND_REPORT(kcmd_step_motor_ctrl_rotate, CMD(u16 id; s32 speed; s32 run_time;), ACK(u8 pad;), REPORT(int32_t exec_status;));
ZPACKET_CMD_ACK_AND_REPORT(kcmd_step_motor_ctrl_move_to_logic_point, CMD(u16 id; u8 logic_point_num;), ACK(u8 pad;), REPORT(int32_t exec_status;));
// READ // READ
ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_read_version, CMD(u16 id;), ACK(I_StepMotorCtrlModule::version_t ack;)); ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_read_version, CMD(u16 id;), ACK(I_StepMotorCtrlModule::version_t ack;));
ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_read_status, CMD(u16 id;), ACK(I_StepMotorCtrlModule::status_t ack;)); ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_read_status, CMD(u16 id;), ACK(I_StepMotorCtrlModule::status_t ack;));
ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_read_detailed_status, CMD(u16 id;), ACK(I_StepMotorCtrlModule::detailed_status_t ack;)); ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_read_detailed_status, CMD(u16 id;), ACK(I_StepMotorCtrlModule::detailed_status_t ack;));
// SET // SET
ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_set_base_param, CMD(u16 id; u8 opt_type; I_StepMotorCtrlModule::base_param_t param;), ACK(u8 pad;));
ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_set_base_param, CMD(u16 id; I_StepMotorCtrlModule::base_param_t param;), ACK(u8 pad;));
ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_get_base_param, CMD(u16 id;), ACK(I_StepMotorCtrlModule::base_param_t ack;)); ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_get_base_param, CMD(u16 id;), ACK(I_StepMotorCtrlModule::base_param_t ack;));
ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_set_logic_point, CMD(u16 id; u8 index; s32 acc; s32 dec; s32 velocity; s32 x;), ACK(u8 pad;));
ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_get_logic_point, CMD(u16 id; u8 logic_point_num;), ACK(I_StepMotorCtrlModule::logic_point_t ack;));
ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_flush, CMD(u16 id;), ACK(u8 pad;));
ZPACKET_CMD_ACK(kcmd_step_motor_ctrl_factory_reset, CMD(u16 id;), ACK(u8 pad;));
/******************************************************************************* /*******************************************************************************
* |Module_1008: * * |Module_1008: *

Loading…
Cancel
Save