Main Content

Estimate Hammerstein-Wiener Models Initialized Using Linear OE Models

This example shows how to estimate Hammerstein-Wiener models using linear OE models.

Load the estimation data.

loadthrottledata.mat

This command loads the data objectThrottleData进入工作区。The object contains input and output samples collected from an engine throttle system, sampled at a rate of 100Hz.

A DC motor controls the opening angle of the butterfly valve in the throttle system. A step signal (in volts) drives the DC motor. The output is the angular position (in degrees) of the valve.

Plot the data to view and analyze the data characteristics.

plot(ThrottleData)

Figure contains 2 axes objects. Axes object 1 with title Throttle Valve Position contains an object of type line. This object represents ThrottleData. Axes object 2 with title Step Command contains an object of type line. This object represents ThrottleData.

In the normal operating range of 15-90 degrees, the input and output variables have a linear relationship. You use a linear model of low order to model this relationship.

In the throttle system, a hard stop limits the valve position to90degrees, and a spring brings the valve to15degrees when the DC motor is turned off. These physical components introduce nonlinearities that a linear model cannot capture.

Estimate a Hammerstein-Wiener model to model the linear behavior of this single-input single-output system in the normal operating range.

% Detrend the data because linear models cannot capture offsets.Tr = getTrend(ThrottleData); Tr.OutputOffset = 15; DetrendedData = detrend(ThrottleData,Tr);%估计线性OE模型与na = 2, nb = 1, nk = 1.opt = oeOptions('Focus','simulation'); LinearModel = oe(DetrendedData,[2 1 1],opt);

Compare the simulated model response with estimation data.

compare(DetrendedData, LinearModel)

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent DetrendedData (Throttle Valve Position), LinearModel: 87.48%.

The linear model captures the rising and settling behavior in the linear operating range but does not account for output saturation at 90 degrees.

Estimate a Hammerstein-Wiener model to model the output saturation.

NonlinearModel = nlhw(ThrottleData, LinearModel, [], idSaturation);

The software uses the orders and delay of the linear model for the orders of the nonlinear model. In addition, the software uses theBandFpolynomials of the linear transfer function.

Compare the nonlinear model with data.

compare(ThrottleData, NonlinearModel)

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent ThrottleData (Throttle Valve Position), NonlinearModel: 95.7%.

Related Topics