主要内容

mcb.getMotorControlAnalysis

Frequency-domain analysis plots for PI controller of field-oriented control

    Description

    mcb.getMotorControlAnalysis(pmsm,inverter,PU_System,PI_params,Ts,Ts_speed) generates frequency-domain analysis plots for PI controllers used in field-oriented control of a permanent magnet synchronous motor (PMSM).

    The function plots the root locus curves, Bode diagram, current loop unit-step response, and pole-zero map for the system with the provided PI gains.

    This function requires Control System Toolbox™.

    example

    Examples

    collapse all

    Set the pulse-width modulation (PWM) switching frequency and sample times for your motor control system.

    PWM_frequency = 20e3;
    T_pwm         = 1/PWM_frequency;
    Ts            = T_pwm;
    Ts_speed      = 10*Ts;

    Get parameters for your motor and inverter. This example uses a BLY171D PMSM and DRV8312-C2-KIT inverter.

    pmsm = mcb.getPMSMParameters("BLY171D");
    inverter = mcb.getInverterParameters("DRV8312-C2-KIT");

    Get the per-unit base values for the PMSM and inverter.

    PU_System = mcb.getPUSystemParameters(pmsm,inverter);

    Get the PI controller gains for the PMSM in per-unit system.

    PI_params = mcb.calcFOCGains(pmsm,Ts,Ts_speed,Base=PU_System);

    Plot results of frequency domain analysis for the PMSM.

    mcb.getMotorControlAnalysis(pmsm,inverter,PU_System,PI_params,Ts,Ts_speed)

    Root locus curves, Bode diagram, current loop unit-step response, and pole-zero map for the computed PI controller gains

    Input Arguments

    collapse all

    PMSM parameters, specified as a struct.

    Specify lumped linear parameters with the following required fields:

    • Ldd-axis stator winding inductance (in henries), specified as a scalar

    • Lqq-axis stator winding inductance (in henries), specified as a scalar

    • FluxPM — Permanent magnet flux linkage (in webers), specified as a scalar

    • p — Number of pole pairs, specified as a scalar

    • Rs — Stator resistance (in ohms), specified as a scalar

    • B — Viscous damping coefficient (in kg-m2/ sec), specified as a scalar

    • I_rated — Rated current (in amperes), specified as a scalar

    You can create a structure with lumped linear parameters using mcb.getPMSMParameters.

    Alternatively, specify nonlinear lookup table data with the following required fields:

    • PMSMLUT.idvecd-axis current breakpoints (in amperes) of lookup tables, specified as a vector

    • PMSMLUT.iqvecq-axis current breakpoints (in amperes) of lookup tables, specified as a vector

    • PMSMLUT.LdTabled-axis inductance (in henries) lookup table, specified as matrix

    • PMSMLUT.LqTableq-axis inductance (in henries) lookup table, specified as a matrix

    • PMSMLUT.FluxPMTable — Permanent magnet flux linkage (in weber) lookup table, specified as a matrix

    or the following required fields:

    • PMSMLUT.idvecd-axis current breakpoints (in amperes) of lookup tables, specified as a vector

    • PMSMLUT.iqvecq-axis current breakpoints (in amperes) of lookup tables, specified as a vector

    • PMSMLUT.FluxDTabled-axis flux linkage lookup table, specified as a matrix

    • PMSMLUT.FluxQTableq-axis flux linkage lookup table, specified as a matrix

    Whether you specify lumped parameters or lookup tables, the structure can also contain the following optional fields:

    • model — Manufacturer's model number, specified as a character vector

    • sn — Manufacturer's serial number, specified as a character vector

    • J — Motor inertia coefficient (in kg-m2), specified as a scalar

    • Ke — Back EMF constant (in volts/krpm), specified as a scalar

    • Kt — Torque constant (in Nm/amperes), specified as a scalar

    • N_max — Maximum rotor speed (in rpm), specified as a scalar

    • PositionOffset — Rotor position offset (in PU), specified as a scalar

    • QEPSlits — Number of quadrature encoder pulse (QEP) slits, specified as a scalar

    • T_rated — Rated torque (in Nm), specified as a scalar

    Data Types: struct

    Inverter parameters, specified as a struct. You can create this structure using mcb.getInverterParameters. Specify the structure with the following required field:

    • V_dc — DC voltage

    The structure can also contain the following optional fields:

    • model — Manufacturer's model number, specified as a character vector

    • sn — Manufacturer's serial number, specified as a character vector

    • I_trip — Maximum permissible inverter current (in amperes), specified as a scalar

    • Rds_on — On-state resistance of MOSFETs (in ohms), specified as a scalar

    • Rshunt — Shunt resistance for current sensing (in ohms), specified as a scalar

    • R_board — Per-phase board resistance seen by motor (in ohms), specified as a scalar

    • CtSensAOffset — ADC offset for phase A, specified as a scalar

    • CtSensBOffset — ADC offset for phase B, specified as a scalar

    • CtSensCOffset — ADC offset for phase C, specified as a scalar

    • CtSensOffsetMax — Maximum limit of automatically calibrated ADC offsets for current sensor, specified as a scalar

    • CtSensOffsetMin — Minimum limit of automatically calibrated ADC offsets for current sensor, specified as a scalar

    • ADCGain — ADC gain factor scaled by SPI, specified as a scalar

    • EnableLogic — Type of inverter, specified as one of the following:

      • 1 — Active-high enabled inverter

      • 0 — Active-low enabled inverter

    • invertingAmp — Convention for current entering motor, specified as one of the following:

      • 1 — Current entering motor sensed as positive by current sense amplifier

      • –1 — Current entering motor sensed as negative by current sense amplifier

    • ISenseVref — Reference voltage of current sensor circuit (in volts), specified as a scalar

    • ISenseVoltPerAmp — Current sensor voltage output per ampere of current (in V/A), specified as a scalar

    • ISenseMax — Maximum peak-neutral current that can be measured by current sensor (in amperes), specified as a scalar

    The following optional fields are not in the structure you create with mcb.getInverterParameters:

    • ADCOffsetCalibEnable — Auto-calibration setting for current sense ADCs, specified as one of the following:

      • 1 — Enable auto-calibration

      • 0 — Disable auto-calibration

    • SPI_Gain_Setting — SPI hex value encoding op-amp gain, specified as a scalar

    Data Types: struct

    Base values for per-unit system, specified as a struct. You can create this structure using the mcb.getPUSystemParameters function. Specify the structure with the following required fields:

    • V_base — Base voltage (in volts), specified as a scalar

    • I_base — Base current (in amperes), specified as a scalar

    • N_base — Base speed (in rpm), specified as a scalar

    • P_base — Base power (in watts), specified as a scalar

    • T_base — Base torque (in newton-meters), specified as a scalar

    Data Types: struct

    PI controller gains, specified as a struct. You can create this struct using mcb.calcFOCGains. Specify the structure with the following fields:

    • Ti_iq-axis current controller integral time constant, specified as a double

    • Kp_iq-axis current controller proportional gain, specified as a double

    • Ki_iq-axis current controller integral gain, specified as a double

    • Ti_idd-axis current controller integral time constant, specified as a double

    • Kp_idd-axis current controller proportional gain, specified as a double

    • Ki_idd-axis current controller integral gain, specified as a double

    • Ti_speed — Speed controller integral time constant, specified as a double

    • Kp_speed — Speed controller proportional gain, specified as a double

    • Ki_speed — Speed controller integral gain, specified as a double

    Data Types: struct

    Control system sample time (in seconds), specified as a scalar.

    Data Types: double

    Speed controller sample time (in seconds), specified as a scalar.

    Data Types: double

    Version History

    Introduced in R2020a

    expand all