Browse Source

添加电磁铁自动关闭逻辑

master
zhaohe 2 years ago
parent
commit
cb1d1d79a0
  1. 2
      Intelligent_winding_robot_main_board_dap.launch
  2. 2
      sdk
  3. 7
      usrc/cmdline_support.cpp
  4. 39
      usrc/device.cpp
  5. 4
      usrc/device.hpp
  6. 2
      usrc/project_configs.h

2
Intelligent_winding_robot_main_board_dap.launch

@ -6,7 +6,7 @@
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth_check_enable" value="false"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth_key_path" value=""/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.debug_auth_permission" value="debug_non_secure_L3"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.enable_live_expr" value="true"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.enable_live_expr" value="false"/>
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.enable_swv" value="false"/>
<intAttribute key="com.st.stm32cube.ide.mcu.debug.launch.formatVersion" value="2"/>
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.ip_address_local" value="localhost"/>

2
sdk

@ -1 +1 @@
Subproject commit abfd99957b7572b1ca8df0d60ad015ac4fabac1d
Subproject commit 0d5a3a53c8d3b3d22f5c3963dc94abadab11da7e

7
usrc/cmdline_support.cpp

@ -15,6 +15,13 @@ void CmdlineSupport::init(Device* device) {
m_device->line_locking_solenoid_valve(val);
return 0;
});
cmdlineparser->registerCmd("line_locking_solenoid_valve_set_auto_close_delay_s", "(delays)", 1, //
[this](int32_t paramN, const char** paraV, ICmdParserACK* ack) {
int val = atoi(paraV[0]);
m_device->line_locking_solenoid_valve_set_auto_close_delay_s(val);
return 0;
});
cmdlineparser->registerCmd("blower_set_val", "(bool on)", 1, //
[this](int32_t paramN, const char** paraV, ICmdParserACK* ack) {
int val = atoi(paraV[0]);

39
usrc/device.cpp

@ -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;

4
usrc/device.hpp

@ -77,6 +77,8 @@ class Device {
/*******************************************************************************
* SUB CAN MODULE *
*******************************************************************************/
public:
void init();
@ -85,6 +87,8 @@ class Device {
*/
void line_locking_solenoid_valve_init();
void line_locking_solenoid_valve(bool on);
void line_locking_solenoid_valve_set_auto_close_delay_s(int32_t delays);
void blower_init();
void blower_set_val(bool on);

2
usrc/project_configs.h

@ -7,7 +7,7 @@
#define PC_DEBUG_UART huart1
#define PC_DEBUG_UART_DMA_HANDLER hdma_usart1_rx
#define PC_DEBUG_UART_RX_BUF_SIZE 1024
#define PC_DEBUG_UART_RX_BUF_SIZE (1024*4)
#define PC_DEBUG_LIGHT_GPIO PG0
#define PC_SYS_DELAY_US_TIMER htim6 // US延时定时器

Loading…
Cancel
Save