Documentation |
On this page… |
---|
Stateflow^{®} software includes example models with applications of fixed-point data. For this example, load the model by typing sf_boilersf_boiler at the MATLAB^{®} command prompt.
When you simulate the model, you get these results:
To explore the model, follow these steps:
Double-click the Boiler Plant model subsystem block.
The subsystem appears.
The Boiler Plant model subsystem simulates the temperature reaction of the boiler to periods of heating or cooling dictated by the Stateflow block. Depending on the Boolean value coming from the Controller, a temperature increment (+1 for heating, –0.1 for cooling) is added to the previous boiler temperature. The resulting boiler temperature is sent to the digital thermometer subsystem block.
In the Boiler Plant model subsystem, double-click the digital thermometer subsystem block.
The subsystem appears.
The digital thermometer subsystem produces an 8-bit fixed-point representation of the input temperature with the blocks described in the sections that follow.
The sensor block converts input boiler temperature (T) to an intermediate analog voltage output V with a first-order polynomial that gives this output:
V = 0.05 × T + 0.75
Double-click the ADC block to reveal these contents:
The ADC subsystem digitizes the analog voltage from the sensor block by multiplying the analog voltage by 256/5, rounding it to its integer floor, and limiting it to a maximum of 255 (the largest unsigned 8-bit integer value). Using the value for the output V from the sensor block, the new digital coded temperature output by the ADC block, T_{digital}, is given by this equation:
T_{digital} = (256/5) × V = (256 × 0.05/5) × T + (256/5) × 0.75
The Linear fixed point conversion block informs the rest of the model that T_{digital} is a fixed-point number with a slope value of 5/256/0.05 and an intercept value of –0.75/0.05. The Stateflow block Bang-Bang Controller receives this output and interprets it as a fixed-point number through the Stateflow data temp, which is scoped as Input from Simulink and set as an unsigned 8-bit fixed-point data with the same values for S and B set in the Linear fixed point conversion block.
The values for S and B are determined from the general expression for a fixed-point number:
V = SQ + B
Therefore,
Q = (V – B)/S = (1/S) × V + (–1/S) × B
Since T_{digital} is now a fixed-point number, it is now the quantized integer Q of a fixed-point type. This means that T_{digital} = Q of its fixed-point type, which gives this relation:
(1/S) × V + (–1/S) × B = (256 × 0.05/5) × T + (256/5) × 0.75
Since T is the real-world value for the environment temperature, the above equation implies these relations:
V = T
and
1/S = (256 × 0.05)/5
S = 5/(256 × 0.05) = 0.390625
and
(–1/S) × B = (256/5) × 0.75
B = –(256/5) × 0.75 × 5/(256 × 0.05) = –0.75/0.05 = 15
By setting T_{digital} to be a fixed-point data as the output of the Linear fixed point conversion block and the input of the Stateflow block Bang-Bang Controller, the Stateflow chart interprets and processes this data automatically in an 8-bit environment with no need for any explicit conversions.