修复: 放置段XY运动后延迟旋转以防止碰撞
This commit is contained in:
1 parent
c296caa328
commit
e2da4ec4ab
3 files changed
+19
-4
No files matched your search
@@ -578,7 +578,9 @@ static void _actuator_move_fragment(const edc_fragment_t *frag)
|
||||
|
||||
/* ---- 2. 运动到 source 位置 ---- */
|
||||
Emm_V5_Arrival_Reset(); /* 清掉上一段迟到/多余的到位帧, 防污染本段等待 */
|
||||
/* source Z 用相对运动转到目标朝向 (0° 基准位; 到位用 CPOS 轮询确认) */
|
||||
/* source Z 用相对运动转到目标朝向 (0° 基准位; 到位用 CPOS 轮询确认)。
|
||||
⚠️ 保持"先旋转后 XY"(与 target 段相反): 本段尚未抓取碎片, 先旋转的
|
||||
摆动发生在途中、到点前已转完, 边缘抓取时更安全 */
|
||||
_actuator_move_angle_rel(src_z_tgt - s_cur_angle_deg, vel_angle, acc_angle);
|
||||
_frame_gap();
|
||||
_actuator_move_abs(ACTUATOR_ADDR_X, ACTUATOR_DIR_X,
|
||||
@@ -635,12 +637,18 @@ static void _actuator_move_fragment(const edc_fragment_t *frag)
|
||||
(unsigned long)dst_dz, (unsigned long)dst_dx, (unsigned long)dst_dy,
|
||||
dst_mask, dst_wait_ms + ACTUATOR_SETTLE_MARGIN_MS);
|
||||
|
||||
_actuator_move_angle_rel(dst_z_tgt - s_cur_angle_deg, vel_angle, acc_angle);
|
||||
_frame_gap();
|
||||
/* ⚠️ 时序 (2026-08-04): 放置段先发 XY、后发旋转 —— 抓取的碎片若在区域
|
||||
边缘, 先旋转会把它甩向机械边缘碰撞; 先启动 XY, 延迟
|
||||
ACTUATOR_ROTATE_DELAY_MS (500ms) 再旋转, 让工具先把碎片带离边缘。
|
||||
source 段保持先旋转: 该段尚未抓取碎片, 先旋转的摆动发生在途中、
|
||||
到点前已转完, 更安全。 */
|
||||
_actuator_move_abs(ACTUATOR_ADDR_X, ACTUATOR_DIR_X,
|
||||
dst_pulses_x, vel_xy, acc_xy, false);
|
||||
_frame_gap();
|
||||
_actuator_move_y_sync(dst_pulses_y, vel_xy, acc_xy);
|
||||
/* XY 已启动并把碎片带离边缘后再旋转 */
|
||||
vTaskDelay(pdMS_TO_TICKS(ACTUATOR_ROTATE_DELAY_MS));
|
||||
_actuator_move_angle_rel(dst_z_tgt - s_cur_angle_deg, vel_angle, acc_angle);
|
||||
|
||||
/* ---- 8. 等待运动到位 (轮询闭环到位标志, 红灯快闪) ---- */
|
||||
actuator_wait_arrival(dst_wait_ms, dst_mask);
|
||||
|
||||
@@ -174,6 +174,13 @@ extern "C" {
|
||||
#define ACTUATOR_FRAME_GAP_MS 10
|
||||
#endif
|
||||
|
||||
/** 放置段: XY 运动启动后, 到 Z 旋转启动的额外延迟 (ms)
|
||||
2026-08-04: 碎片在区域边缘时, 先旋转会把碎片甩向机械边缘碰撞;
|
||||
延迟让 XY 先把碎片带离边缘再旋转, 防碰撞 */
|
||||
#ifndef ACTUATOR_ROTATE_DELAY_MS
|
||||
#define ACTUATOR_ROTATE_DELAY_MS 350
|
||||
#endif
|
||||
|
||||
/** 控制模式: 2 = 闭环位置模式 */
|
||||
#define ACTUATOR_CTRL_MODE 2
|
||||
|
||||
|
||||
Reference in new issue
Block a user