Verify Model Using Simulink Control Design and Simulink Verification Blocks

This example shows how to use a combination of Simulink® Control Design™ and Simulink verification blocks, to assert that the linear system characteristics satisfy one of the following bounds:

  • Phase margin greater than 60 degrees

  • Phase margin less than 60 degrees and the velocity less than or equal to 90% of the cruise velocity.

  1. Open the Simulink model of an aircraft.

    scdmultiplechecks

    The aircraft model is based on a long-haul passenger aircraft flying at cruising altitude and speed. The aircraft starts with a full fuel load and follows a pre-specified 8-hour velocity profile. The model is a simplified version of a velocity control loop, which adjusts the fuel flow rate to control the aircraft velocity.

    The model includes blocks to model:

    • Fuel consumption and resulting changes in aircraft mass

    • Nonlinear draft effects limiting aircraft velocity

    Constants used in the model, such as the drag coefficient, are defined in the model workspace and initialized from a script.

    The v <= 0.9*vCruise and Assert that: PM >= 60 or if PM < 60 then v <= 0.9*vCruise blocks are Check Static Upper Bound and Assertion blocks, respectively, from the Simulink Model Verification library. In this example, you use these blocks with the Check Gain and Phase Margins block to design a complex logic for assertion.

  2. View the linearization input, output and settings in the Linearizations tab of the Check Gain and Phase Margins block parameters dialog box.

    The model has already been configured with:

    • Linearization input and output for computing gain and phase margins

    • Settings to compute the linear system

    The software linearizes the loop seen by the Velocity Controller block every 30 minutes of simulated time and computes the gain and phase margins.

  3. Specify phase margin bounds in the Bounds tab of the Check Gain and Phase Margins block.

    In this example, the linearization input and output include the summation block with negative feedback. Change the Feedback sign, used to compute the margin, to positive feedback.

    To view the phase margins to be computed later during simulation, specify Tabular in Plot type, and click Show Plot.

  4. Design assertion logic that causes the verification blocks to assert when the phase margin is greater than 60 degrees or if the phase margin is less than 60 degrees, the velocity is less than or equal to 90% the cruise velocity.

    1. In the Check Gain and Phase Margins Block Parameters dialog box, in the Assertion tab, select Output assertion signal, and click Apply.

      This action adds an output port z-1 to the block.

    2. Double-click the v <= 0.9*vCruise block, and specify the block parameters, as shown in the following figure. After setting the parameters, click Apply.

      These parameters configure the block to:

      • Check if the aircraft velocity exceeds the cruise velocity by 0.9 times

      • Add an output port to the block

    3. Connect the Check Gain and Phase Margins, v <= 0.9*vCruise and Assert that: PM >= 60 or if PM < 60 then v <= 0.9*vCruise blocks, as shown in the following figure.

      This connection causes the Assert that: PM >= 60 or if PM < 60 then v <= 0.9*vCruise block to assert and stop the simulation if the phase margin is less than 60 degrees and the velocity is greater than 90% of the cruise velocity.

    Alternatively, you can type scdmultiplechecks_final at the MATLAB® prompt to open a Simulink model already configured with these settings.

  5. Simulate the model.

    During simulation:

    • The v <= 0.9*vCruise block asserts multiple times.

    • The Check Gain and Phase Margins block asserts two times. You can view the phase margins that violate the bound in the plot window.

    • The Assert that: PM >= 60 or if PM < 60 then v <= 0.9*vCruise does not encounter the assertion condition. Therefore, the simulation does not stop.

  6. Click the link at the bottom of the Simulink model to open the Diagnostic Viewer window.

    When a block asserts, warnings appear in this window. You can view the details of the assertions by clicking the link in this window.