Main Content

估计控制增益和使用工具函数

对作为磁场定向控制 (FOC) 算法一部分的转速和转矩控制环执行控制参数调节。Motor Control Blockset™ 为您提供了多种方法来计算电机、逆变器和控制器可用的系统或模块传递函数的控制环增益:

  • 使用 Field Oriented Control Autotuner 模块。

  • 使用 Simulink® Control Design™

  • 使用模型初始化脚本。

磁场定向控制自动调节器

Motor Control Blockset 的 Field-Oriented Control Autotuner 模块使您能够实时自动调节磁场定向控制 (FOC) 应用中的 PID 控制环。您可以自动调节与以下环路相关联的 PID 控制器(有关更多详细信息,请参阅How to Use Field Oriented Control Autotuner Block):

  • 直轴(d 轴)电流环

  • 交轴(q 轴)电流环

  • 转速环

对于该模块调节的每个环路,Field-Oriented Control Autotuner 模块以闭环方式执行自动调节试验,而不使用与该环路相关联的参数化模型。该模块使您能够指定模块调节控制环的顺序。当针对一个环路运行调节试验时,该模块对其他环路不起作用。有关 FOC 自动调节器的更多详细信息,请参阅Field Oriented Control Autotuner使用 Field Oriented Control Autotuner 调节 PI 控制器

Simulink Control Design

Simulink Control Design 可用于设计和分析在 Simulink 中建模的控制系统。您可以自动调节任意 SISO 和 MIMO 控制架构,包括 PID 控制器。您可以将 PID 自动调节部署到嵌入式软件以实时自动计算 PID 增益。

您可以找到工作点并计算不同工况下 Simulink 模型的精确线性化。Simulink Control Design 提供的工具可用于计算基于仿真的频率响应,而无需修改您的模型。有关详细信息,请参阅https://www.mathworks.com/help/slcontrol/index.html

模型初始化脚本

本节介绍 Motor Control Blockset 示例如何估计实现磁场定向控制所需的控制增益。例如,对于连接到正交编码器的 PMSM,下列步骤描述使用初始化脚本根据系统详细信息计算控制环增益值的过程:

  1. 在 MATLAB® 中打开示例的初始化脚本 (.m) 文件。要查找关联的脚本文件名,请执行以下操作:

    1. 选择建模 > 模型设置 > 模型属性以打开模型属性对话框。

    2. 在“模型属性”对话框中,导航到回调选项卡 > InitFcn 以查找 Simulink 在运行该示例之前打开的脚本文件的名称。

  2. 下图显示初始化脚本 (.m) 文件的示例。

  3. 使用工作区编辑控制项变量值。例如,要更新定子电阻 (Rs),请使用变量 pmsm 将参数值添加到 Rs 字段。

  4. 与目标模型相关联的模型初始化脚本会调用以下函数,并用必要的变量设置工作区。

    模型初始化脚本模型初始化脚本调用的函数描述
    与目标模型相关联的脚本

    mcb_SetPMSMMotorParameters

    该函数的输入是 PMSM 的类型(例如 BLY171D)。

    该函数在 MATLAB 工作区中填充名为 pmsm 的结构体,该结构体由模型使用。

    它还计算所选电机的永磁磁通和额定转矩。

    您可以通过为新电机添加额外的 switch-case 来扩展该函数。

    此函数还将通过运行参数估计获得的结构体 motorParam 加载到结构体 pmsm。如果结构体 motorParam 在 MATLAB 工作区中不可用,该函数将加载默认参数。

    mcb_SetACIMMotorParameters

    该函数的输入是交流感应电机的类型(例如 EM_Synergy)。

    该函数在 MATLAB 工作区中填充名为 acim 的结构体,该结构体由模型使用。

    您可以通过为新电机添加额外的 switch-case 来扩展该函数。

    此函数还将通过运行参数估计获得的结构体 motorParam 加载到结构体 acim。如果结构体 motorParam 在 MATLAB 工作区中不可用,该函数将加载默认参数。

    mcb_SetInverterParameters

    该函数的输入为逆变器类型(例如 BoostXL-DRV8305)。

    该函数在 MATLAB 工作区中填充名为 inverter 的结构体,该结构体由模型使用。

    该函数还计算所选逆变器的逆变器电阻。

    您可以通过为新逆变器添加额外的 switch-case 来扩展该函数。

    mcb_SetProcessorDetails

    该函数的输入是处理器类型(例如 F28379D)和脉冲宽度调制 (PWM) 开关频率。

    该函数在 MATLAB 工作区中填充名为 target 的结构体,该结构体由模型使用。

    该函数还计算 PWM 计数器周期,该周期是目标模型中 ePWM 模块的参数。

    您可以通过为新处理器添加额外的 switch-case 来扩展该函数。

    mcb_getBaseSpeed

    该函数的输入是电机和逆变器参数。

    该函数计算 PMSM 的基转速。

    在 MATLAB 命令行窗口中键入 help mcb_getBaseSpeed 或参阅获得基转速一节来了解更多详细信息。

    mcb_SetPUSystem

    该函数的输入是电机和逆变器参数。

    该函数设置电压、电流、转速、转矩和功率的标幺制基值。

    该函数在 MATLAB 工作区中填充名为 PU_System 的结构体,该结构体由模型使用。

    mcb_SetControllerParameters

    该函数的输入是电机和逆变器参数、标幺制基值、PWM 开关时间周期、控制系统的采样时间和转速控制器的采样时间。

    该函数计算比例积分 (PI) 参数(Kp、Ki)以实现磁场定向控制。

    该函数在 MATLAB 工作区中填充名为 PI_params 的结构体,该结构体由模型使用。

    有关更多详细信息,请参阅获得控制器增益一节。

    mcb_updateInverterParameters

    该函数的输入是电机和逆变器参数。

    该函数根据所选硬件和电机更新逆变器参数。

下表说明您可以更新的每个控制参数的有用变量。

注意

如果您无法更新与示例模型相关联的模型初始化脚本,可以尝试在 Windows® 系统上以管理员模式启动 MATLAB。

控制参数类别控制参数名称MATLAB 工作区变量
电机参数制造商型号pmsm.model
制造商序列号pmsm.sn
极对pmsm.p
定子电阻(欧姆)pmsm.Rs
d 轴定子绕组电感(亨)pmsm.Ld
q 轴定子绕组电感(亨)pmsm.Lq
反电动势常量 (V_line(peak)/krpm)pmsm.Ke
电机惯量 (kg.m2)pmsm.J
摩擦常量 (N.m.s)pmsm.F
永磁磁通 (WB)pmsm.FluxPM
额定转矩pmsm.T_rated
基转速pmsm.N_base

mcb_getCharacteristics(pmsm,inverter) 函数中使用的最大电机转速

pmsm.N_max = 2 ✖ pmsm.N_base

pmsm.N_max
额定电流pmsm.I_rated
位置解码器QEP 索引和霍尔位置偏移量校正pmsm.PositionOffset
每转的正交编码器刻线数pmsm.QEPSlits
逆变器参数制造商型号inverter.model
制造商序列号inverter.sn
逆变器的直流链路电压 (V)inverter.V_dc
逆变器允许的最大电流 (A)inverter.I_trip
MOSFET 的导通电阻(欧姆)inverter.Rds_on
电流感测的分流电阻(欧姆)inverter.Rshunt
电机遇到的每相板电阻(欧姆)inverter.R_board
电流传感器的 ADC 偏移量(Ia 和 Ib

inverter.CtSensAOffset

inverter.CtSensBOffset

电流传感器自动校准 ADC 偏移量的最大限值(Ia 和 Ibinverter.CtSensOffsetMax
电流传感器自动校准 ADC 偏移量的最小限值(Ia 和 Ibinverter.CtSensOffsetMin
启用电流感测 ADC 的自动校准inverter.ADCOffsetCalibEnable
由 SPI 配置的 ADC 增益因子inverter.ADCGain

逆变器类型:

1 - 高电平有效使能逆变器

0 - 低电平有效使能逆变器

inverter.EnableLogic

电流进入电机的约定:

1 - 电流感测放大器将进入电机的电流感测为正

–1 - 电流感测放大器将进入电机的电流感测为负

inverter.invertingAmp
逆变器电流感测电路的参考电压 (V)inverter.ISenseVref

对应于 1 安培电流的逆变器电流感测电路的输出电压 (V/A)

可以使用数据表中的电流分流电阻值 (inverter.Rshunt) 和逆变器的电流感测放大器增益来计算此参数。

inverter.ISenseVoltPerAmp = inverter.Rshunt ✖ 电流感测放大器增益

inverter.ISenseVoltPerAmp
由逆变器电流感测电路测得的最大可测量峰值-中性点电流 (A)inverter.ISenseMax
处理器制造商型号target.model
制造商序列号target.sn
CPU 频率target.CPU_frequency
PWM 频率target.PWM_frequency
PWM 计数器周期target.PWM_Counter_Period
ADC 的参考电压 (V)Target.ADC_Vref
12 位 ADC 的最大计数输出Target.ADC_MaxCount
串行通信的波特率Target.SCI_baud_rate
标幺制基电压 (V)PU_System.V_base
基电流 (A)PU_System.I_base
基转速 (rpm)PU_System.N_base
基转矩 (Nm)PU_System.T_base
基功率(瓦特)PU_System.P_base
目标设备的数据类型数据类型(定点或浮点)选择dataType
采样时间值转换器的开关频率PWM_frequency
PWM 开关时间周期T_pwm
电流控制器的采样时间Ts
转速控制器的采样时间Ts_speed
仿真采样时间Ts_simulink
电机的仿真采样时间Ts_motor
逆变器的仿真采样时间Ts_inverter
控制器参数Iq 控制器的比例增益PI_params.Kp_i
Iq 控制器的积分增益PI_params.Ki_i
Id 控制器的比例增益PI_params.Kp_id
Id 控制器的积分增益PI_params.Ki_id
转速控制器的比例增益PI_params.Kp_speed
转速控制器的积分增益PI_params.Ki_speed
弱磁控制器的比例增益PI_params.Kp_fwc
弱磁控制器的积分增益PI_params.Ki_fwc
传感器延迟参数电流传感器延迟Delays.Current_Sensor
转速传感器延迟Delays.Speed_Sensor
低通转速滤波器的延迟Delays.Speed_Filter
控制器延迟参数电流控制环的阻尼因子 (ζ)Delays.OM_damping_factor
转速控制环的对称最佳因子Delays.SO_factor_speed

注意

对于预定义的处理器和驱动程序,模型初始化脚本使用默认值。

模型初始化脚本使用以下函数来执行计算:

控制参数类别函数功能
电机的基转速mcb_getBaseSpeed

计算额定电压和额定负载下 PMSM 的基转速。

有关详细信息,请在 MATLAB 命令提示符下键入 help mcb_getBaseSpeed,或参阅获得基转速一节。

给定电机和逆变器的电机特性mcb_getCharacteristics

获得 PMSM 电机的以下驱动特性。

  • 转矩对转速的特性

  • 功率对转速的特性

  • Idq 对转速的特性

  • 电机的最大相电流 (Ipeak=Id2+Iq2) 对转速的特性

有关详细信息,请在 MATLAB 命令提示符下键入 help mcb_getCharacteristics

有关详细信息,请参阅获取电机特性一节。

mcb_getCharacteristicsAcim

获得感应电机的以下电机特性。

  • 转矩对转速的特性

  • 功率对转速的特性

获得感应电机的以下驱动特性。

  • 转矩对转速的特性

  • 功率对转速的特性

  • Idq 对转速的特性

  • 电机的最大相电流 (Ipeak=Id2+Iq2) 对转速的特性

有关详细信息,请在 MATLAB 命令提示符下键入 help mcb_getCharacteristicsAcim

有关详细信息,请参阅获取电机特性一节。

控制算法参数mcb_SetControllerParameters

计算以下 PI 控制器的增益:

  • 电流 Id 和 Iq 的电流(转矩)控制环增益(Kp、Ki

  • 转速控制环增益(Kp、Ki

  • 弱磁控制增益(Kp、Ki

有关详细信息,请参阅获得控制器增益一节。

您所使用的电机和逆变器的控制分析mcb_getControlAnalysis

对磁场定向电机控制系统中使用的 PI 控制器的计算增益执行频域分析。

注意

此功能需要 Control System Toolbox™。

有关详细信息,请在 MATLAB 命令提示符下键入 help mcb_getControlAnalysis

获得基转速

函数 mcb_getBaseSpeed 计算给定电源电压下 PMSM 的基转速。基转速是在额定电压和额定负载下,弱磁区域之外的最大电机转速。

当您调用此函数(例如 base_speed = mcb_getBaseSpeed(pmsm,inverter))时,它会返回给定 PMSM 和逆变器组合的基转速(以 rpm 为单位)。该函数接受以下输入:

  • PMSM 参数结构体。

  • 逆变器参数结构体。

以下方程描述函数执行的计算:

逆变器电压约束通过计算 d 轴和 q 轴电压来定义:

vdo= ωeLqiq

vqo=ωe(Ldid+ λpm)

vmax= vdc 3 Rsimax  vdo2+ vqo2

电流极限圆定义电流约束,可以被视为:

imax2= id 2+ iq2

在以上方程中,对于表贴式 PMSM,id 为零。对于内置式 PMSM,考虑与 MTPA 对应的值 idiq

使用上述关系,我们可以按如下所示计算基转速:

ωbase= 1p vmax(Lqiq)2+(Ldid+ λpm)2

其中:

  • ωe 是对应于定子电压频率的电角速度(弧度/秒)。

  • ωbase 是电机的机械基转速(弧度/秒)。

  • id 是 d 轴电流(安培)。

  • iq 是 q 轴电流(安培)。

  • vdo 是当 id 为零时的 d 轴电压(伏特)。

  • vqo 是当 iq 为零时的 q 轴电压(伏特)。

  • Ld 是 d 轴绕组电感(亨)。

  • Lq 是 q 轴绕组电感(亨)。

  • Rs 是定子相绕组电阻(欧姆)。

  • λpm 是永磁磁链(韦伯)。

  • vd 是 d 轴电压(伏特)。

  • vq 是 q 轴电压(伏特)。

  • vmax 是供给电机的相对于中性点电压的基波最大值(伏特)。

  • vdc 是供给逆变器的直流电压(伏特)。

  • imax 是电机的最大相电流(峰值)(安培)。

  • p 是电机极对数。

获取电机特性

函数 mcb_getCharacteristics 计算 PMSM 的转矩、功率和电流特性,这有助于您开发电机的控制算法。

该函数返回给定 PMSM 的以下特性:

  • 转矩对转速

  • 功率对转速

  • Idq 对转速

  • Ipeak 对转速

函数 mcb_getCharacteristicsAcim 计算感应电机的电机特性和驱动特性,这有助于您开发电机的控制算法。

该函数返回给定感应电机的以下电机特性:

  • 转矩对转速

  • 功率对转速

该函数返回给定感应电机的以下驱动特性:

  • 转矩对转速

  • 功率对转速

  • Idq 对转速

  • Ipeak 对转速

获得控制器增益

函数 mcb_SetControllerParameters 计算磁场定向电机控制系统中使用的 PI 控制器的增益。

您可以使用以下命令调用函数 mcb_SetControllerParameters

PI_params = mcb_SetControllerParameters(pmsm,inverter,PU_System,T_pwm,Ts,Ts_speed);

该函数返回 FOC 算法中使用的 PI 控制器的增益:

  • 直轴(d 轴)电流环

  • 交轴(q 轴)电流环

  • 转速环

  • 弱磁控制环

该函数接受以下输入:

  • pmsm object

  • inverter object

  • PU system params

  • T_pwm

  • Ts_control

  • Ts_speed

该函数不对任何特性绘图。

补偿器的设计取决于应用于电机控制系统的经典频率响应分析。我们对电流控制器使用基于模数最优值 (MO) 的设计,对转速控制器使用基于对称最优值 (SO) 的设计。

该函数根据输入参量自动计算其他所需参数(例如,延迟、阻尼因子)。

您可以通过为指定系统延迟、阻尼因子和对称最优值因子的函数提供可选输入来修改默认系统响应:

PI_params = mcb_SetControllerParameters(pmsm,inverter,PU_System,T_pwm,Ts,Ts_speed,Delays);

阻尼因子 (ζ) 定义一个二阶系统标准型的动态行为,其中 0 < ζ < 1 [1]。欠阻尼系统比临界阻尼或过阻尼系统能更快地接近最终值。在无振荡响应系统中,临界阻尼系统的响应最快。过阻尼系统对任何输入的响应都始终很慢。此参数的默认值为 12

对称最优因子 (a) 定义将穿越频率置于两个转角频率的几何均值处,以获得最大相位裕度,从而实现转速环的最优阻尼,其中 a > 1 [2]。此参数的默认值为 1.2

此示例说明如何自定义参数:

% Sensor Delays
Delays.Current_Sensor = 2*Ts;           %Current Sensor Delay
Delays.Speed_Sensor = Ts;               %Speed Sensor Delay
Delays.Speed_Filter = 20e-3;            %Delay for Speed filter (LPF)

% Controller Delays
Delays.OM_damping_factor = 1/sqrt(2);   %Damping factor for current control loop
Delays.SO_factor_speed = 1.5;           %Symmetrical optimum factor 1 < x < 20

% Controller design
PI_params = mcb_SetControllerParameters(pmsm,inverter,PU_System,T_pwm,Ts,Ts_speed,Delays);

执行控制分析

函数 mcb_getControlAnalysis 执行 PMSM FOC 电流控制系统的基本控制分析。该函数对磁场定向电机控制系统中使用的计算所得的 PI 控制器增益执行频域分析。

注意

此函数需要 Control System Toolbox。

当您调用此函数(例如 mcb_getControlAnalysis(pmsm,inverter,PU_System,PI_params,Ts,Ts_speed))时,它将针对电流控制环或子系统执行以下函数:

  • 闭环电流控制系统的传递函数

  • 根轨迹

  • 波特图

  • 稳定裕度(PM 和 GM)

  • 阶跃响应

  • 极零点图

该函数会绘制对应的图:

参考

[1] Ogata, K. (2010). Modern control engineering. Prentice hall.

[2] Leonhard, W. (2001). Control of electrical drives. Springer Science & Business Media. pp. 86.