simpleFOC移植
稚晖君讲解

1、用的是compare和five那个

2、FOC(field-oriented control)为磁场定向控制,又称为矢量控制(vectorcontrol),是目前无刷直流电机(BLDC)和永磁同步电机(PMSM permanent-magnet synchronous motor)高效控制的最佳选择。FOC 可以精确地控制磁场大小与方向,使得电机转矩平稳、噪声小、效率高,并且具有高速的动态响应。目前已在很多应用上逐步替代传统的控制方式,在运动控制行业中备受瞩目。

3、FOC的优势

  • 低转速下控制
    由于控制原理的区别,无刷电调只能控制电机工作在高转速下,低速下很难控制;而FOC控制器则完全没有这个限制,不论在什么转速下都可以实现精确控制。
  • 电机换向
    同上面的理由,由于无感电调无法反馈转子位置,因此很难实现电机正反转的换向;而FOC驱动器的换向性能极其优秀,最高转速下正反转切换可以非常顺畅;此外FOC还可以以能量回收的形式进行刹车控制。
  • 力矩控制(力矩和电流成正比)
    普通电调都只能控制电机转速,而FOC可以进行电流(力矩)、速度、位置三个闭环控制。
  • 噪音
    FOC驱动器的噪音会比电调小很多,原因是普通电调采用方波驱动,而FOC是正弦波。

4、电调的优势:

  • 兼容性
    电调驱动不同的BLDC不需要进行参数整定,而FOC需要。
  • 算法复杂度
    电调的算法实现更简单,运算量少,很适合需要提高带宽的超高转速电机。
  • 成本
    电调的成本比FOC低很多。

5、控制过程

  • 对电机三相电流进行采样得到:ia、ib、ic;
  • 将 ia、ib、ic 经过 clarke 变换得到 iα、iβ;
  • 将 iα、iβ 经过 park 变换得到 iq、id;
  • 计算 iq、id 和其设定值 iq_Ref、id_Ref 的误差;
  • 将上述误差输入到两个 PID(只用到 PI)控制器,得到输出的控制电压 Vq、Vd;
  • 将 Vq、Vd 进行反 park 变换得到 Vα、Vβ;
  • 将 Vα、Vβ 输入 SVPWM 模块进行调制,合成电压空间矢量,输出该时刻三个半桥的开关状态进而控制电机旋转;
  • 循环上述步骤。

坐标变换

视频讲解
由于直接检测到的三相电流正弦的,因此控制极为不变,因此需要将其变换为一个常数,这样控制就方便了。首先将三相电流经过Clarke变换,变换到静止坐标系α、β上,这个就从三相变为了两相正弦了;再经过Park变换,这里要用到转动的角度,将静止坐标系变换到同步旋转坐标系了(同步旋转坐标系,就是建立在旋转体上的),此时起到驱动作用的只有q,如果我们想要保持驱动力恒定,那么仅需通过PID 控制q轴大小恒定,而d轴对驱动不起作用,只会起到发热作用,因此我们将d轴的大小控制为 0;这里我们再将所控制的值转换为静止坐标系的值,也就是反Park变换,因为SVPWM控制就需要用到反Park的值,也就是静止坐标系的值。

Clark变换

  • 如果要平稳地驱动三相电机转动,我们就需要生成三个相位相差 120 度的正弦波,三相正弦波会合成一个矢量,这个矢量就会不停的旋转。我们要变换的就是这个矢量。
  • 首先将这个矢量变换到α和β轴上,也就是Clark变换
  • 因为abc与α、β轴(静止坐标系)的夹角是固定的,因此变换矩阵都是常数。
  • 合成到α、β轴上后有什么作用呢:
    1)SVPWM中用来判断现在这个矢量在哪个扇区。
    2)在SVPWM中用来计算V1/V2(也就是相邻的两个基矢量,基矢量就是110这种,也就是6个mos管哪个导通这种)导通的时间。因为就是通过导通时间来代表基矢量的长度,用来合成这个矢量。

Park变换

  • 将静止坐标系(α、β),转换到旋转坐标系,即将 Clarke 变换后的 α—β 坐标系旋转θ度,其中θ为转子旋转的角度,旋转角度θ需通过编码器/霍尔传感器读取
  • 我们直接控制的就是Id,Iq。其中,**Id(励磁电流分量)**设置为0,Iq设置为我们想要的,如果恒推力的话,q就是一直不变的。我们直接给定一个iq,然后与反馈回来的iq作差,传递给pid模块,然后给出输出,再反Park变换转换为αβ(这里需要角度值,因为iq就是一个大小,需要给定他的位置)给SVPWM,通过SVPWM控制mos管实现控制。
  • 所以此时wt(也就是角度)的大小就非常重要了。也就是αβ值是一直在变的,但是为什么dq值是恒定的呢,也可以看做是因为乘以了角度的关系。可以看上面的park变换公式
  • 至此坐标变换就都完成了,接下来就将变换好的dq轴进行PID控制后的值,进行反Park变换(因为SVPWM 算法的实现需要用到静止的 α—β 坐标系,所以当我们完成了控制信号的 PID 运算后,还需进行反 Park 变换。),输入到SVPWM



直线电机这个是我自己做的,PMLSM接口方面有点问题,问题是不知道怎么Simscape(物理系统)块和simulink(数字/数学)块不能直接兼容。

注意事项

如果我们使用上面坐标系自己搭建,那么永磁同步电机需要选择

而如果使用那么就是用的matlab自带的变换矩阵

SVPWM解析

参考1
正点视频解析
SVPWM算法的本质实际就是,就算三相逆变器的六个开关何时导通,何时切断。

原理

1、如果要平稳地驱动三相电机转动,我们就需要生成三个相位相差 120 度的正弦波,因此就诞生了SPWM,他是直接构造出旋转所需的正弦电压,但这种情况是没有反馈的,所产生的电流并不一定是我们所要的,不能准确的控制定子电流。

2、SVPWM依靠的是MOS管的开关顺序和开关时间以此来模拟出正弦电流。而SPWM不依赖开关顺序,三相独立调制。

3、矢量的合成: