Resistor model including tolerance, operational limits, fault behavior, and noise
Simscape / Electronics / Passive Devices
The Resistor block represents a linear resistor, while letting you model the following effects:
You can turn these modeling options on and off independently of each other. When all the additional options are turned off, the component behavior is identical to the Simscape™ Foundation library Resistor block.
In its simplest form, the Resistor block models a linear resistor, described with the following equation:
$$i=v/R$$
where:
i is current.
v is voltage.
R is resistance.
If you set the Noise mode parameter to Enabled
,
then the defining equations are augmented by a discrete variable i_{N} to
represent thermal noise, as described in Thermal Noise.
You can apply tolerances to the nominal value you provide for the Resistance parameter. Datasheets typically provide a tolerance percentage for a given resistor type. The table shows how the block applies tolerances and calculates resistance based on the selected Tolerance application option.
Option | Resistance Value |
---|---|
| R |
| Uniform distribution: R · (1
– tol + 2· tol· Gaussian
distribution: R · (1 + tol · |
| R · (1 + tol ) |
| R · (1 – tol ) |
In the table,
R is the Resistance parameter value, nominal resistance.
tol is fractional tolerance, Tolerance (%) /100.
nSigma is the value you provide for the Number of standard deviations for quoted tolerance parameter.
rand
and randn
are standard MATLAB^{®} functions
for generating uniform and normal distribution random numbers.
You can specify operating limits in terms of power and maximum working voltage. For the thermal variant of the block (see Thermal Port), you can also specify operating limits in terms of temperature.
When an operating limit is exceeded, the block can either generate a warning or stop the simulation with an error. For more information, see the Operating Limits parameters section.
The Resistor block allows you to model an electrical fault as an instantaneous change in resistance. The block can trigger fault events:
At a specific time
When a current limit is exceeded for longer than a specific time interval
You can enable or disable these trigger mechanisms separately, or use them together if more than one trigger mechanism is required in a simulation. When more than one mechanism is enabled, the first mechanism to trigger the fault takes precedence. In other words, component fails no more than once per simulation.
When the resistor fails, its resistance is changed to the value you specify for the Faulted zero-voltage resistance parameter. You can also choose whether to issue an assertion when a fault occurs, by using the Reporting when a fault occurs parameter. The assertion can take the form of a warning or an error. By default, the block does not issue an assertion.
The Resistor block can generate thermal noise current. If you
set the Noise mode parameter to Enabled
,
then the defining equations are augmented by a discrete variable i_{N} to
represent thermal noise:
$$i=v/R+{i}_{N}$$
If the sampling time is h, then the thermal noise is given by:
$${i}_{N}=\sqrt{2kT/R}\frac{N\left(0,1\right)}{\sqrt{h}}$$
where:
k is the Boltzmann constant, 1.3806504e-23 J/K.
T is the temperature.
R is the resistance.
N is a Gaussian random number with zero mean and standard deviation of one.
2kT/R is the double-sided thermal noise power distribution (the single-sided equivalent is 4kT/R).
The block generates Gaussian noise by using the Random Number source in the Simscape Foundation library. You can control the random number seed by setting the Repeatability parameter:
Not repeatable
—
Every time you simulate your model, the block resets the random seed
using the MATLAB random number generator:
seed = randi(2^32-1);
Repeatable
— The
block automatically generates a seed value and stores it inside the
block, to always start the simulation with the same random number.
This auto-generated seed value is set when you add a Resistor block
from the block library to the model. When you make a new copy of the
Resistor block from an existing one in a model, a new seed value is
generated. The block sets the value using the MATLAB random number
generator command shown above.
Specify seed
— If
you select this option, the additional Seed parameter
lets you directly specify the random number seed value.
The block has an optional thermal port, hidden by default. To expose the thermal port, right-click the block in your model, and then from the context menu select Simscape > Block choices > Show thermal port. This action displays the thermal port H on the block icon, and adds the Thermal tab and the Variables tab to the block dialog box.
Use the Thermal tab to specify how the resistance value changes with temperature and to set the thermal mass. Use the Variables tab to set the initial temperature target.
With the thermal port exposed, the generated noise uses the temperature at the thermal port when determining the instantaneous noise value. Exposing the thermal port also extends the options on the Operating Limits tab as follows:
The Power rating parameter becomes temperature dependent. You define a temperature up to which the full power rating is available, plus a higher temperature for which the power rating is reduced to zero. It is assumed that the power rating decreases linearly with temperature between these two values.
An additional parameter, Operating temperature range, [Tmin Tmax], lets you define the valid temperature range for block operation.
Use the Variables section of the block interface to set the priority and initial target values for the block variables prior to simulation. For more information, see Set Priority and Initial Target for Block Variables (Simscape).
This section appears only for the blocks with exposed thermal port. The Temperature variable lets you specify a high-priority target for the temperature at the start of simulation.
Simulating with noise enabled slows down simulation. Choose the sample time (h) so that noise is generated only at frequencies of interest, and not higher.