Main Content

This example shows how to measure the input admittance of a boost converter modeled in Simulink® using Simscape™ Electrical™ components. This example addresses the frequency response estimation process to measure the input admittance of an existing power electronics circuit model.

Typically, measuring input admittance of power electronics systems requires extensive modifications to these models. However, Simulink Control Design™ software provides tools to conduct frequency response estimation to measure this important property of a power electronics circuit. In this example, you also compare the estimated frequency response result to the analytical transfer function model constructed using component parameters.

This example uses a boost converter model based on `scdboostconverter`

. The model is modified with a Probe block and linear analysis points to measure the input current.

Open the model.

```
mdl = 'scdboostconverterMeasureAdmittance';
open_system(mdl)
```

To use the Boost Converter block version of the subsystem, in the model, click **Boost Converter Block** or use the following command.

set_param([bdroot '/Simscape Power Systems Boost Converter'],... 'OverrideUsingVariant','block_boost_converter');

To estimate the frequency response for the boost converter, you must first determine the steady-state operating point at which you want the converter to operate. For more information on finding operating points, see Find Steady-State Operating Points for Simscape Models. For this example, use an operating point estimated from a simulation snapshot at 0.045 seconds.

opini = findop(mdl,0.045);

Initialize the model with the computed operating point.

set_param(mdl,'LoadInitialState','on','InitialState','getstatestruct(opini)');

A pseudorandom binary signal (PRBS) is a periodic, deterministic signal with white-noise-like properties that shifts between two values. A PRBS is an inherently periodic signal with a maximum period length of , where is the PRBS order. For more information, see PRBS Input Signals.

Create a PRBS with the following configuration:

To use a nonperiodic PRBS, set the number of periods to 1.

Use a PRBS order of 14, producing a signal of length 16383. To obtain an accurate frequency response estimation, the length of the PRBS must be sufficiently large.

Set the injection frequency of the PRBS to 200 kHz to match the sample time in the model. That is, specify a sample time of

`5e-6`

seconds.To ensure that the system is properly excited, set the perturbation amplitude to 0.5.

in_PRBS = frest.PRBS('Order',14,'NumPeriods',1,'Amplitude',0.5,'Ts',5e-6);

Create a sinestream input signal with 30 frequencies between 200 rad/s and 600000 rad/s. Set the amplitude of the input signal to 0.25 to make it consistent with the PRBS input signal.

in_Sinestream = frest.createFixedTsSinestream(5e-06,{200,6e5}); in_Sinestream.Amplitude = 0.25;

Using different input signals leads to a different simulation time for the frequency response estimation process. To achieve similar results, the PRBS input signal typically takes a much shorter simulation time than the sinestream input signal. Here, `in_PRBS`

takes about 15% of the simulation time as `in_Sinestream`

.

Following is the simulation time for frequency response estimation by `in_PRBS`

.

in_PRBS.getSimulationTime

ans = 0.0819

Following is the simulation time for frequency response estimation by `in_Sinestream`

.

in_Sinestream.getSimulationTime

ans = 0.5207

To collect frequency response data, you can estimate the plant frequency response at the command line. To do so, first get the input and output linear analysis points from the model.

io = getlinio(mdl);

Specify the operating point using the model initial conditions.

op = operpoint(mdl);

Find all source blocks in the signal paths of the linearization outputs that generate time-varying signals. Such time-varying signals can interfere with the signal at the linearization output points and produce inaccurate estimation results.

srcblks = frest.findSources(mdl,io);

To disable the time-varying source blocks, create an `frestimateOptions`

option set and specify the `BlocksToHoldConstant`

option.

opts = frestimateOptions; opts.BlocksToHoldConstant = srcblks;

Estimate the frequency response using the PRBS input signal.

sysest_prbs = frestimate(mdl,io,op,in_PRBS,opts);

Frequency response estimation with a PRBS input signal produces results with a large number of frequency points. Simulink Control Design software lets you estimate plant frequency response using the **Model Linearizer** app. You can also use **Model Linearizer** to further improve a frequency response estimated at the command line.

You can use **Result Thinning** in **Model Linearizer** to extract an interpolated result from an estimated frequency response model across a specified frequency range and number of frequency points. For more information, see Result Thinning.

Apply thinning to `sysest_prbs`

over frequencies between 200 rad/s and 600,000 rad/s with 50 logarithmically spaced frequency points.

Click **OK**. The thinned model, `sysest_prbs_thinned`

, appears in the MATLAB® Workspace.

For comparison purposes, estimate the frequency response using the defined sinestream input signal.

sysest_sine = frestimate(mdl,io,op,in_Sinestream,opts);

Compare the estimation results to the analytical transfer function based on component parameters. Use the following parameters from the model.

L = 20e-6; C = 1480e-6; R = 6; rC=8e-3; rL=1.8e-3;

To compute the analytical transfer function, you require the actual duty cycle value. For this boost converter, use the logged duty cycle at the operating point.

D = 0.734785; d = 1-0.734785;

Define the analytical transfer function, which is based on [1], using the component parameters in the boost converter model.

Yin = tf([C*(R+rC) 1], [L*C*(R+rC) L+C*rL*(R+rC)+C*R*rC-R*D*C*rC R+rL-R*D-R^2*D*d/(R+rC)]);

For a more accurate description, account for the delay due to PWM signal in the tranfer function `Yin`

.

```
N = 0.5;
Ts = 5e-6;
iodelay = N*Ts; % 0.5 PWM
Yin.IODelay = iodelay;
```

Compare FRE results using PRBS and sinestream input signals to the analytical transfer function over the frequency range of interest.

Load the thinned PRBS result from a previously saved session and plot the results.

load sysest_prbs_thinned_result figure; bode(sysest_prbs_thinned,'b-'); hold on bode(sysest_sine,'k*-'); bode(Yin,'r--',{10,1e6}); legend('FRE Result Using PRBS','FRE Result Using Sinestream','Analytical Result',... 'Location','northeast') grid on

Examine the Bode plot. The FRE result obtained using PRBS input signal captures interesting frequency-domain properties. For example, the frequency response estimation result with PRBS input signal, around the magnitude peak, matches the analytical transfer function much better than the frequency response estimation result with sinestream input signal.

Close the model.

close_system(mdl,0)

[1] Ahmadi, Reza, and Mehdi Ferdowsi. "Modeling Closed-Loop Input and Output Impedances of DC-DC Power Converters Operating inside Dc Distribution Systems." *2014 IEEE Applied Power Electronics Conference and Exposition - APEC 2014*, 2014 1131-38. https://doi.org/10.1109/APEC.2014.6803449.

`frest.createFixedTsSinestream`

| `frest.PRBS`

| `frestimate`

| `frestimateOptions`