|
|
@ -631,91 +631,45 @@ int32_t XYRobotCtrlModule::module_get_error(int32_t* iserror) { |
|
|
|
} |
|
|
|
int32_t XYRobotCtrlModule::module_clear_error() { return 0; } |
|
|
|
|
|
|
|
#define SET_REG(param_id, modulereg) \
|
|
|
|
case param_id: \ |
|
|
|
modulereg = val; \ |
|
|
|
break; |
|
|
|
|
|
|
|
#define GET_REG(param_id, modulereg) \
|
|
|
|
case param_id: \ |
|
|
|
*val = modulereg; \ |
|
|
|
break; |
|
|
|
|
|
|
|
int32_t XYRobotCtrlModule::module_set_reg(int32_t param_id, int32_t val) { |
|
|
|
switch (param_id) { |
|
|
|
SET_REG(kreg_motor_x_shift, m_basecfg.shift_x); |
|
|
|
SET_REG(kreg_motor_y_shift, m_basecfg.shift_y); |
|
|
|
SET_REG(kreg_motor_x_shaft, m_basecfg.x_shaft); |
|
|
|
SET_REG(kreg_motor_y_shaft, m_basecfg.y_shaft); |
|
|
|
SET_REG(kreg_motor_x_one_circle_pulse, m_basecfg.distance_scale); |
|
|
|
SET_REG(kreg_motor_y_one_circle_pulse, m_basecfg.distance_scale); |
|
|
|
SET_REG(kreg_motor_default_velocity, m_basecfg.maxspeed); |
|
|
|
SET_REG(kreg_motor_default_acc, m_basecfg.acc); |
|
|
|
SET_REG(kreg_motor_default_dec, m_basecfg.dec); |
|
|
|
SET_REG(kreg_motor_default_break_dec, m_basecfg.breakdec); |
|
|
|
SET_REG(kreg_motor_run_to_zero_max_x_d, m_basecfg.run_to_zero_max_d); |
|
|
|
SET_REG(kreg_motor_run_to_zero_max_y_d, m_basecfg.run_to_zero_max_d); |
|
|
|
SET_REG(kreg_motor_look_zero_edge_max_x_d, m_basecfg.look_zero_edge_max_d); |
|
|
|
SET_REG(kreg_motor_look_zero_edge_max_y_d, m_basecfg.look_zero_edge_max_d); |
|
|
|
SET_REG(kreg_motor_run_to_zero_speed, m_basecfg.run_to_zero_speed); |
|
|
|
SET_REG(kreg_motor_run_to_zero_dec, m_basecfg.run_to_zero_dec); |
|
|
|
SET_REG(kreg_motor_look_zero_edge_speed, m_basecfg.look_zero_edge_speed); |
|
|
|
SET_REG(kreg_motor_look_zero_edge_dec, m_basecfg.look_zero_edge_dec); |
|
|
|
SET_REG(kreg_stepmotor_ihold, m_basecfg.ihold); |
|
|
|
SET_REG(kreg_stepmotor_irun, m_basecfg.irun); |
|
|
|
SET_REG(kreg_stepmotor_iholddelay, m_basecfg.iholddelay); |
|
|
|
SET_REG(kreg_xyrobot_robot_type, m_basecfg.robot_type); |
|
|
|
default: |
|
|
|
return err::kmodule_not_find_config_index; |
|
|
|
} |
|
|
|
return 0; |
|
|
|
} |
|
|
|
int32_t XYRobotCtrlModule::module_get_reg(int32_t param_id, int32_t* val) { |
|
|
|
int32_t XYRobotCtrlModule::module_set_reg(int32_t param_id, int32_t param_value) { return module_xxx_reg(param_id, false, param_value); } |
|
|
|
int32_t XYRobotCtrlModule::module_get_reg(int32_t param_id, int32_t* param_value) { return module_xxx_reg(param_id, true, *param_value); } |
|
|
|
int32_t XYRobotCtrlModule::module_xxx_reg(int32_t param_id, bool read, int32_t& val) { |
|
|
|
switch (param_id) { |
|
|
|
GET_REG(kreg_motor_x_shift, m_basecfg.shift_x); |
|
|
|
GET_REG(kreg_motor_y_shift, m_basecfg.shift_y); |
|
|
|
GET_REG(kreg_motor_x_shaft, m_basecfg.x_shaft); |
|
|
|
GET_REG(kreg_motor_y_shaft, m_basecfg.y_shaft); |
|
|
|
GET_REG(kreg_motor_x_one_circle_pulse, m_basecfg.distance_scale); |
|
|
|
GET_REG(kreg_motor_y_one_circle_pulse, m_basecfg.distance_scale); |
|
|
|
GET_REG(kreg_motor_default_velocity, m_basecfg.maxspeed); |
|
|
|
GET_REG(kreg_motor_default_acc, m_basecfg.acc); |
|
|
|
GET_REG(kreg_motor_default_dec, m_basecfg.dec); |
|
|
|
GET_REG(kreg_motor_default_break_dec, m_basecfg.breakdec); |
|
|
|
GET_REG(kreg_motor_run_to_zero_max_x_d, m_basecfg.run_to_zero_max_d); |
|
|
|
GET_REG(kreg_motor_run_to_zero_max_y_d, m_basecfg.run_to_zero_max_d); |
|
|
|
GET_REG(kreg_motor_look_zero_edge_max_x_d, m_basecfg.look_zero_edge_max_d); |
|
|
|
GET_REG(kreg_motor_look_zero_edge_max_y_d, m_basecfg.look_zero_edge_max_d); |
|
|
|
GET_REG(kreg_motor_run_to_zero_speed, m_basecfg.run_to_zero_speed); |
|
|
|
GET_REG(kreg_motor_run_to_zero_dec, m_basecfg.run_to_zero_dec); |
|
|
|
GET_REG(kreg_motor_look_zero_edge_speed, m_basecfg.look_zero_edge_speed); |
|
|
|
GET_REG(kreg_motor_look_zero_edge_dec, m_basecfg.look_zero_edge_dec); |
|
|
|
GET_REG(kreg_stepmotor_ihold, m_basecfg.ihold); |
|
|
|
GET_REG(kreg_stepmotor_irun, m_basecfg.irun); |
|
|
|
GET_REG(kreg_stepmotor_iholddelay, m_basecfg.iholddelay); |
|
|
|
GET_REG(kreg_xyrobot_robot_type, m_basecfg.robot_type); |
|
|
|
|
|
|
|
GET_REG(kreg_module_status, m_thread.isworking() ? 0x01 : 0x00); |
|
|
|
GET_REG(kreg_module_errorcode, 0); |
|
|
|
GET_REG(kreg_module_enableflag, m_enable); |
|
|
|
GET_REG(kreg_robot_x_pos, m_x); |
|
|
|
GET_REG(kreg_robot_y_pos, m_y); |
|
|
|
|
|
|
|
GET_REG(kreg_module_last_cmd_exec_status, m_module_last_cmd_exec_status); |
|
|
|
GET_REG(kreg_module_last_cmd_exec_val0, m_module_last_cmd_exec_val0); |
|
|
|
GET_REG(kreg_module_last_cmd_exec_val1, m_module_last_cmd_exec_val1); |
|
|
|
GET_REG(kreg_module_last_cmd_exec_val2, m_module_last_cmd_exec_val2); |
|
|
|
GET_REG(kreg_module_last_cmd_exec_val3, m_module_last_cmd_exec_val3); |
|
|
|
GET_REG(kreg_module_last_cmd_exec_val4, m_module_last_cmd_exec_val4); |
|
|
|
GET_REG(kreg_module_last_cmd_exec_val5, m_module_last_cmd_exec_val5); |
|
|
|
|
|
|
|
// GET_REG(kreg_xyrobot_x_dpos, m_dx);
|
|
|
|
// GET_REG(kreg_xyrobot_y_dpos, m_dy);
|
|
|
|
MODULE_COMMON_PROCESS_REG_CB(); |
|
|
|
|
|
|
|
PROCESS_REG(kreg_motor_x_shift, REG_GET(m_basecfg.shift_x), REG_SET(m_basecfg.shift_x)); |
|
|
|
PROCESS_REG(kreg_motor_y_shift, REG_GET(m_basecfg.shift_y), REG_SET(m_basecfg.shift_y)); |
|
|
|
PROCESS_REG(kreg_motor_x_shaft, REG_GET(m_basecfg.x_shaft), REG_SET(m_basecfg.x_shaft)); |
|
|
|
PROCESS_REG(kreg_motor_y_shaft, REG_GET(m_basecfg.y_shaft), REG_SET(m_basecfg.y_shaft)); |
|
|
|
PROCESS_REG(kreg_motor_x_one_circle_pulse, REG_GET(m_basecfg.distance_scale), REG_SET(m_basecfg.distance_scale)); |
|
|
|
PROCESS_REG(kreg_motor_y_one_circle_pulse, REG_GET(m_basecfg.distance_scale), REG_SET(m_basecfg.distance_scale)); |
|
|
|
PROCESS_REG(kreg_motor_default_velocity, REG_GET(m_basecfg.maxspeed), REG_SET(m_basecfg.maxspeed)); |
|
|
|
PROCESS_REG(kreg_motor_default_acc, REG_GET(m_basecfg.acc), REG_SET(m_basecfg.acc)); |
|
|
|
PROCESS_REG(kreg_motor_default_dec, REG_GET(m_basecfg.dec), REG_SET(m_basecfg.dec)); |
|
|
|
PROCESS_REG(kreg_motor_default_break_dec, REG_GET(m_basecfg.breakdec), REG_SET(m_basecfg.breakdec)); |
|
|
|
PROCESS_REG(kreg_motor_run_to_zero_max_x_d, REG_GET(m_basecfg.run_to_zero_max_d), REG_SET(m_basecfg.run_to_zero_max_d)); |
|
|
|
PROCESS_REG(kreg_motor_run_to_zero_max_y_d, REG_GET(m_basecfg.run_to_zero_max_d), REG_SET(m_basecfg.run_to_zero_max_d)); |
|
|
|
PROCESS_REG(kreg_motor_look_zero_edge_max_x_d, REG_GET(m_basecfg.look_zero_edge_max_d), REG_SET(m_basecfg.look_zero_edge_max_d)); |
|
|
|
PROCESS_REG(kreg_motor_look_zero_edge_max_y_d, REG_GET(m_basecfg.look_zero_edge_max_d), REG_SET(m_basecfg.look_zero_edge_max_d)); |
|
|
|
PROCESS_REG(kreg_motor_run_to_zero_speed, REG_GET(m_basecfg.run_to_zero_speed), REG_SET(m_basecfg.run_to_zero_speed)); |
|
|
|
PROCESS_REG(kreg_motor_run_to_zero_dec, REG_GET(m_basecfg.run_to_zero_dec), REG_SET(m_basecfg.run_to_zero_dec)); |
|
|
|
PROCESS_REG(kreg_motor_look_zero_edge_speed, REG_GET(m_basecfg.look_zero_edge_speed), REG_SET(m_basecfg.look_zero_edge_speed)); |
|
|
|
PROCESS_REG(kreg_motor_look_zero_edge_dec, REG_GET(m_basecfg.look_zero_edge_dec), REG_SET(m_basecfg.look_zero_edge_dec)); |
|
|
|
PROCESS_REG(kreg_stepmotor_ihold, REG_GET(m_basecfg.ihold), REG_SET(m_basecfg.ihold)); |
|
|
|
PROCESS_REG(kreg_stepmotor_irun, REG_GET(m_basecfg.irun), REG_SET(m_basecfg.irun)); |
|
|
|
PROCESS_REG(kreg_stepmotor_iholddelay, REG_GET(m_basecfg.iholddelay), REG_SET(m_basecfg.iholddelay)); |
|
|
|
PROCESS_REG(kreg_xyrobot_robot_type, REG_GET(m_basecfg.robot_type), REG_SET(m_basecfg.robot_type)); |
|
|
|
PROCESS_REG(kreg_robot_x_pos, REG_GET(m_x), ACTION_NONE); |
|
|
|
PROCESS_REG(kreg_robot_y_pos, REG_GET(m_y), ACTION_NONE); |
|
|
|
|
|
|
|
default: |
|
|
|
return err::kmodule_not_find_config_index; |
|
|
|
break; |
|
|
|
} |
|
|
|
return 0; |
|
|
|
} |
|
|
|
int32_t XYRobotCtrlModule::do_action(int32_t actioncode) { return err::kmodule_not_support_action; } |
|
|
|
|
|
|
|
#if 0
|
|
|
|
int32_t XYRobotCtrlModule::module_set_state(int32_t state_id, int32_t state_value) { return err::kmodule_not_find_state_index; } |
|
|
|
int32_t XYRobotCtrlModule::module_get_state(int32_t state_id, int32_t* state_value) { |
|
|
@ -799,17 +753,17 @@ int32_t XYRobotCtrlModule::xymotor_calculated_pos_by_move_to_zero() { |
|
|
|
m_dx = 0; |
|
|
|
m_dy = 0; |
|
|
|
|
|
|
|
m_module_last_cmd_exec_status = err::kmodule_opeation_break_by_user; |
|
|
|
m_module_last_cmd_exec_val0 = 0; |
|
|
|
m_module_last_cmd_exec_val1 = 0; |
|
|
|
m_com_reg.module_last_cmd_exec_status = err::kmodule_opeation_break_by_user; |
|
|
|
m_com_reg.module_last_cmd_exec_val0 = 0; |
|
|
|
m_com_reg.module_last_cmd_exec_val1 = 0; |
|
|
|
_motor_stop(); |
|
|
|
return; |
|
|
|
} |
|
|
|
m_dx = dx; |
|
|
|
m_dy = dy; |
|
|
|
m_module_last_cmd_exec_status = 0; |
|
|
|
m_module_last_cmd_exec_val0 = m_dx; |
|
|
|
m_module_last_cmd_exec_val1 = m_dy; |
|
|
|
m_dx = dx; |
|
|
|
m_dy = dy; |
|
|
|
m_com_reg.module_last_cmd_exec_status = 0; |
|
|
|
m_com_reg.module_last_cmd_exec_val0 = m_dx; |
|
|
|
m_com_reg.module_last_cmd_exec_val1 = m_dy; |
|
|
|
m_stepM1->setXACTUAL(0); |
|
|
|
m_stepM2->setXACTUAL(0); |
|
|
|
return; |
|
|
|