主要内容

mcb.getMotorBaseSpeed

Compute base speed for PMSM at rated voltage and rated load

    Description

    base_speed = mcb.getMotorBaseSpeed(pmsm,inverter) returns the base speed of a permanent magnet synchronous motor (PMSM) with parameters pmsm and inverter with parameters inverter by using approximate voltage equations.

    base_speed = mcb.getMotorBaseSpeed(pmsm,inverter,voltEqn) returns the PMSM base speed by using the specified voltage equations (approximate or actual).

    These equations describe the computations that the function performs:

    The inverter voltage constraint is defined by computing the d-axis and q-axis voltages using approximate equations:

    vdo= ωeLqiq

    vqo=ωe(Ldid+ λpm)

    vmax= vdc 3 Rsimax  vdo2+ vqo2

    or actual equations:

    vdo=Rsid ωeLqiq

    vqo=Rsiqωe(Ldid+ λpm)

    vmax= vdc 3  vdo2+ vqo2

    The current limit circle defines the current constraint which can be considered as:

    imax2= id 2+ iq2

    In the preceding equation, id is zero for surface PMSMs. For interior PMSMs, values of id and iq corresponding to MTPA are considered.

    Using the preceding relationships, we can compute the base speed as:

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

    where:

    • ωe is the electrical speed corresponding to frequency of stator voltages (rad/sec).

    • ωbase is the mechanical base speed of the motor (rad/sec).

    • id is the d-axis current (amperes).

    • iq is the q-axis current (amperes).

    • vdo is the d-axis voltage when id is zero (volts).

    • vqo is the q-axis voltage when iq is zero (volts).

    • Ld is the d-axis winding inductance (henries).

    • Lq is the q-axis winding inductance (henries).

    • Rs is the stator phase winding resistance (ohms).

    • λpm is the permanent magnet flux linkage (webers).

    • vd is the d-axis voltage (volts).

    • vq is the q-axis voltage (volts).

    • vmax is the maximum fundamental line to neutral voltage (peak) supplied to the motor (volts).

    • vdc is the dc voltage supplied to the inverter (volts).

    • imax is the maximum phase current (peak) of the motor (amperes).

    • p is the number of motor pole pairs.

    example

    Examples

    collapse all

    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 base speed using approximate voltage equations.

    mcb.getMotorBaseSpeed(pmsm,inverter)
    ans =
    
            5298

    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 base speed using actual voltage equations.

    mcb.getMotorBaseSpeed(pmsm,inverter,"actual")
    ans =
    
            5393

    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

    Voltage equations for calculating base speed, specified as a character vector or string. Specify one of the following:

    • "approximate" — Use approximate voltage equations.

    • "actual" — Use actual voltage equations.

    Output Arguments

    collapse all

    Motor base speed (in rpm), returned as a scalar.

    Version History

    Introduced in R2020a

    expand all