Clark 变换与反 Clark 变换

张开发
2026/4/20 14:20:23 15 分钟阅读

分享文章

Clark 变换与反 Clark 变换
Clark 变换又称为3/2 变换是电机控制尤其是 FOC 磁场定向控制中的基础数学工具用于将三相静止坐标系A-B-C中的变量变换到两相静止坐标系α-β中。一、Clark 变换3相 → 2相1. 变换目的将三相电流/电压(i_a, i_b, i_c)分解为两个垂直分量i_α与 A 轴对齐i_β超前 i_α 90°2. 变换公式前提条件三相平衡系统满足i_a i_b i_c 0标准形式i_α i_a i_β (i_a 2i_b) / √3或写成矩阵形式[ i_α ] [ 1 -1/2 -1/2 ] [ i_a ] [ i_β ] [ 0 √3/2 -√3/2 ] [ i_b ] [ i_0 ] [ 1/2 1/2 1/2 ] [ i_c ]功率不变形式常用i_α (2/3) * (i_a - 0.5*i_b - 0.5*i_c) i_β (2/3) * ( (√3/2)*i_b - (√3/2)*i_c )3. 代码实现浮点void clark_transform(float i_a, float i_b, float i_c, float *i_alpha, float *i_beta) { // 功率不变形式 *i_alpha (2.0f/3.0f) * (i_a - 0.5f*i_b - 0.5f*i_c); *i_beta (2.0f/3.0f) * ((SQRT3_2)*i_b - (SQRT3_2)*i_c); // 或简化形式需要 i_a i_b i_c 0 // *i_alpha i_a; // *i_beta (i_a 2.0f*i_b) / SQRT3; }二、反 Clark 变换2相 → 3相1. 变换目的将两相静止坐标系α-β中的变量还原为三相变量。2. 变换公式i_a i_α i_b -0.5 * i_α (√3/2) * i_β i_c -0.5 * i_α - (√3/2) * i_β3. 代码实现void inverse_clark_transform(float i_alpha, float i_beta, float *i_a, float *i_b, float *i_c) { *i_a i_alpha; *i_b -0.5f * i_alpha SQRT3_2 * i_beta; *i_c -0.5f * i_alpha - SQRT3_2 * i_beta; }三、Clark 与 Park 的关系在 FOC 控制中Clark 和 Park 变换通常串联使用三相电流 (A,B,C) ↓ Clark 变换 两相静止 (α, β) ↓ Park 变换 (需要转子角度 θ) 两相旋转 (d, q) ← 用于 PI 控制Clark消除三相的冗余减少一维Park将交流量变为直流量便于控制四、常规定义常量#define SQRT3 1.73205080757f // √3 #define SQRT3_2 0.86602540378f // √3/2 #define INV_SQRT3 0.57735026919f // 1/√3 #define TWO_THIRD 0.66666666667f // 2/3五、完整示例FOC 电流采样处理// ADC 采样得到的三相电流 float ia read_current_A(); float ib read_current_B(); float ic read_current_C(); // Step 1: Clark 变换 → αβ 坐标系 float i_alpha, i_beta; clark_transform(ia, ib, ic, i_alpha, i_beta); // Step 2: Park 变换 → dq 坐标系需要角度 theta float id, iq; park_transform(i_alpha, i_beta, theta, id, iq); // Step 3: PI 控制 vd pi_id_control(id_ref, id); vq pi_iq_control(iq_ref, iq); // Step 4: 反 Park 变换 float v_alpha, v_beta; inverse_park_transform(vd, vq, theta, v_alpha, v_beta); // Step 5: 反 Clark 变换 → 三相电压 float va, vb, vc; inverse_clark_transform(v_alpha, v_beta, va, vb, vc); // Step 6: 输出到 PWM 模块 set_pwm_duty(va, vb, vc);六、注意事项要点说明三相平衡假设Clark 变换要求i_a i_b i_c 0否则需要计算零序分量 i_0功率不变 vs 幅值不变注意区分两种变换系数2/3 还是 1与 Park 变换保持一致浮点精度电机控制建议使用floatdouble可能过慢快速实现可查表或使用定点数优化SQRT3_2乘法

更多文章