|
|
@ -120,7 +120,7 @@ void Device::sub_module_init() { |
|
|
|
* @brief 初始化主轴电机 |
|
|
|
*/ |
|
|
|
static Eq20ServoMotor::servo_config_t default_servo_cfg = //
|
|
|
|
{.default_acc_time_ms = 1000, .default_velocity = 800, .find_zero_velocity = 100}; |
|
|
|
{.default_acc_time_ms = 1000, .default_velocity = 500, .find_zero_velocity = 100}; |
|
|
|
static Eq20ServoMotor eq20_motor; |
|
|
|
eq20_motor.init(1, &m_modbus, 1, default_servo_cfg); |
|
|
|
m_device_manager.registerModule(&eq20_motor); |
|
|
@ -167,26 +167,53 @@ void Device::sub_module_init() { |
|
|
|
m_device_manager.module_active_cfg(42); |
|
|
|
} |
|
|
|
|
|
|
|
static ZGPIO line_locking_solenoid_valve_gpio; |
|
|
|
void Device::line_locking_solenoid_valve_init() { //
|
|
|
|
line_locking_solenoid_valve_gpio.initAsOutput(PC3, ZGPIO::kMode_nopull, false, false); |
|
|
|
/*******************************************************************************
|
|
|
|
* line_locking_solenoid_valve * |
|
|
|
*******************************************************************************/ |
|
|
|
ZGPIO m_line_locking_solenoid_valve_gpio; |
|
|
|
int32_t m_line_locking_solenoid_valve_auto_close_delayms = 5000; |
|
|
|
uint32_t m_line_locking_solenoid_valve_open_ticket = 0; |
|
|
|
|
|
|
|
void Device::line_locking_solenoid_valve_init() { //
|
|
|
|
m_line_locking_solenoid_valve_gpio.initAsOutput(PC1, ZGPIO::kMode_nopull, true, false); |
|
|
|
// 自动关闭
|
|
|
|
OSDefaultSchduler::getInstance()->regPeriodJob( |
|
|
|
[this](OSDefaultSchduler::Context& cx) { |
|
|
|
if (m_line_locking_solenoid_valve_gpio.getState()) { |
|
|
|
if (zos_haspassedms(m_line_locking_solenoid_valve_open_ticket) > m_line_locking_solenoid_valve_auto_close_delayms) { |
|
|
|
line_locking_solenoid_valve(false); |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
100); |
|
|
|
} |
|
|
|
void Device::line_locking_solenoid_valve(bool on) { line_locking_solenoid_valve_gpio.setState(on); } |
|
|
|
|
|
|
|
void Device::line_locking_solenoid_valve(bool on) { |
|
|
|
m_line_locking_solenoid_valve_open_ticket = HAL_GetTick(); |
|
|
|
m_line_locking_solenoid_valve_gpio.setState(on); |
|
|
|
} |
|
|
|
void Device::line_locking_solenoid_valve_set_auto_close_delay_s(int32_t delays) { m_line_locking_solenoid_valve_auto_close_delayms = delays * 1000; } |
|
|
|
|
|
|
|
/*******************************************************************************
|
|
|
|
* blower * |
|
|
|
*******************************************************************************/ |
|
|
|
static ZGPIO blower_gpio; |
|
|
|
void Device::blower_init() { blower_gpio.initAsOutput(PC2, ZGPIO::kMode_nopull, true, false); } |
|
|
|
void Device::blower_set_val(bool on) { blower_gpio.setState(on); } |
|
|
|
|
|
|
|
int32_t Device::app_motor_move_from_a_to_b_block(int motor_id, int32_t a, int32_t b, int32_t times) { |
|
|
|
int32_t ret = 0; |
|
|
|
int32_t ret = 0; |
|
|
|
ThisThread thisThread; |
|
|
|
for (size_t i = 0; i < times; i++) { |
|
|
|
ZLOGI(TAG, "move motor %d to %d", a); |
|
|
|
ret = m_device_manager.motor_easy_move_to(motor_id, a); |
|
|
|
thisThread.sleep(10); |
|
|
|
if (ret != 0) break; |
|
|
|
ret = wait_for_module(motor_id); |
|
|
|
if (ret != 0) break; |
|
|
|
ZLOGI(TAG, "move motor %d to %d", b); |
|
|
|
ret = m_device_manager.motor_easy_move_to(motor_id, b); |
|
|
|
thisThread.sleep(10); |
|
|
|
if (ret != 0) break; |
|
|
|
ret = wait_for_module(motor_id); |
|
|
|
if (ret != 0) break; |
|
|
|