Print Preview C:\TEMP\Apdf_2541_3068\home\AppData\Local\PTC\Arbortext\Editor\.aptcache\ae2yk5ik/tf2yk5pe Simulink Control Design User's Guide
User Manual:
Open the PDF directly: View PDF .
Page Count: 1017
Download | |
Open PDF In Browser | View PDF |
Simulink® Control Design™ User’s Guide R2012b How to Contact MathWorks Web Newsgroup www.mathworks.com/contact_TS.html Technical Support www.mathworks.com comp.soft-sys.matlab suggest@mathworks.com bugs@mathworks.com doc@mathworks.com service@mathworks.com info@mathworks.com Product enhancement suggestions Bug reports Documentation error reports Order status, license renewals, passcodes Sales, pricing, and general information 508-647-7000 (Phone) 508-647-7001 (Fax) The MathWorks, Inc. 3 Apple Hill Drive Natick, MA 01760-2098 For contact information about worldwide offices, see the MathWorks Web site. Simulink® Control Design™ User’s Guide © COPYRIGHT 2004–2012 by The MathWorks, Inc. The software described in this document is furnished under a license agreement. The software may be used or copied only under the terms of the license agreement. No part of this manual may be photocopied or reproduced in any form without prior written consent from The MathWorks, Inc. FEDERAL ACQUISITION: This provision applies to all acquisitions of the Program and Documentation by, for, or through the federal government of the United States. By accepting delivery of the Program or Documentation, the government hereby agrees that this software or documentation qualifies as commercial computer software or commercial computer software documentation as such terms are used or defined in FAR 12.212, DFARS Part 227.72, and DFARS 252.227-7014. Accordingly, the terms and conditions of this Agreement and only those rights specified in this Agreement, shall pertain to and govern the use, modification, reproduction, release, performance, display, and disclosure of the Program and Documentation by the federal government (or other entity acquiring for or through the federal government) and shall supersede any conflicting contractual terms or conditions. If this License fails to meet the government’s needs or is inconsistent in any respect with federal procurement law, the government agrees to return the Program and Documentation, unused, to The MathWorks, Inc. Trademarks MATLAB and Simulink are registered trademarks of The MathWorks, Inc. See www.mathworks.com/trademarks for a list of additional trademarks. Other product or brand names may be trademarks or registered trademarks of their respective holders. Patents MathWorks products are protected by one or more U.S. patents. Please see www.mathworks.com/patents for more information. Revision History June 2004 October 2004 March 2005 September 2005 March 2006 September 2006 March 2007 September 2007 March 2008 October 2008 March 2009 September 2009 March 2010 September 2010 April 2011 September 2011 March 2012 September 2012 Online Online Online Online Online Online Online Online Online Online Online Online Online Online Online Online Online Online only only only only only only only only only only only only only only only only only only New for Version 1.0 (Release 14) Revised for Version 1.1 (Release 14SP1) Revised for Version 1.2 (Release 14SP2) Revised for Version 1.3 (Release 14SP3) Revised for Version 2.0 (Release 2006a) Revised for Version 2.0.1 (Release 2006b) Revised for Version 2.1 (Release 2007a) Revised for Version 2.2 (Release 2007b) Revised for Version 2.3 (Release 2008a) Revised for Version 2.4 (Release 2008b) Revised for Version 2.5 (Release 2009a) Revised for Version 3.0 (Release 2009b) Revised for Version 3.1 (Release 2010a) Revised for Version 3.2 (Release 2010b) Revised for Version 3.3 (Release 2011a) Revised for Version 3.4 (Release 2011b) Revised for Version 3.5 (Release 2012a) Revised for Version 3.6 (Release 2012b) Contents Steady-State Operating Points 1 Steady-State Operating Point (Trimming) . . . . . . . . . . . What Is a Steady-State Operating Point? . . . . . . . . . . . . . . What Is an Operating Point in Simulink Control Design? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Simulink Model States Included in Operating Point Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Advantages of Using Simulink Control Design vs. Simulink Operating Point Search . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2 1-2 View and Modify Operating Points . . . . . . . . . . . . . . . . . . View Model Initial Condition in Linear Analysis Tool . . . . Modify Operating Point in Linear Analysis Tool . . . . . . . . View and Modify Operating Point Object (MATLAB Code) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-7 1-7 1-8 1-10 Choosing Between Simulation Snapshot and Operating Point from Specifications . . . . . . . . . . . . . . . . . . . . . . . . 1-12 Steady-State Operating Points (Trimming) from Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Steady-State Operating Point Search (Trimming) . . . . . . . Which States in the Model Must Be at Steady State? . . . . Steady-State Operating Points from State Specifications . . Steady-State Operating Point to Meet Output Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Initialize Steady-State Operating Point Search Using Simulation Snapshot . . . . . . . . . . . . . . . . . . . . . . . . . . . . Compute Steady-State Operating Points for SimMechanics Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Batch Compute Steady-State Operating Points . . . . . . . . . Change Operating Point Search Optimization Settings . . . Import and Export Specifications For Operating Point Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-3 1-4 1-5 1-14 1-14 1-15 1-16 1-21 1-24 1-29 1-32 1-35 1-37 v Batch Compute Operating Points with Single Model Compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-39 Steady-State Operating Points from Simulation . . . . . . Simulation Snapshot Operating Points . . . . . . . . . . . . . . . . Compute Operating Points at Simulation Snapshots . . . . . 1-41 1-41 1-41 Simulate Simulink Model at Specific Operating Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-44 Handling Blocks with Internal State Representation . . Operating Point Object Excludes Blocks with Internal States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Identifying Blocks with Internal States in Your Model . . . Configuring Blocks with Internal States for Steady-State Operating Point Search . . . . . . . . . . . . . . . . . . . . . . . . . . 1-46 1-46 1-47 1-47 Synchronize Simulink Model Changes with Operating Point Specifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-49 Synchronize Simulink Model Changes with Linear Analysis Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-49 Synchronize Simulink Model Changes with Existing Operating Point Specification Object . . . . . . . . . . . . . . . . 1-52 Linearization 2 vi Contents Linearizing Nonlinear Models . . . . . . . . . . . . . . . . . . . . . . What Is Linearization? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Applications of Linearization . . . . . . . . . . . . . . . . . . . . . . . . Linearization in Simulink Control Design . . . . . . . . . . . . . Choosing Linearization Tools . . . . . . . . . . . . . . . . . . . . . . . . Model Requirements for Exact Linearization . . . . . . . . . . . Operating Point Impact on Linearization . . . . . . . . . . . . . . 2-2 2-2 2-4 2-5 2-6 2-9 2-10 Specify Model Portion to Linearize . . . . . . . . . . . . . . . . . . Specifying Subsystem, Loop, or Block to Linearize . . . . . . . Opening Feedback Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-11 2-11 2-12 Ways to Specify Portion of Model to Linearize . . . . . . . . . . Specify Portion of Model to Linearize in Simulink Model . . Specify Portion of Model to Linearize in Linear Analysis Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Edit Portion of Model to Linearize in Linear Analysis Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Select Bus Elements as Linear Analysis Points . . . . . . . . . 2-14 2-14 Plant Linearization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-28 Open-Loop Response of Control System for Stability Margin Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . What Is Open-Loop Response? . . . . . . . . . . . . . . . . . . . . . . . Compute Open-Loop Response . . . . . . . . . . . . . . . . . . . . . . . 2-32 2-32 2-33 2-16 2-21 2-23 Linearize at Model Operating Point . . . . . . . . . . . . . . . . . Linearize Simulink Model . . . . . . . . . . . . . . . . . . . . . . . . . . Visualize Bode Response of Simulink Model During Simulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-38 2-38 Linearize at Trimmed Operating Point . . . . . . . . . . . . . . 2-52 Linearize at Simulation Snapshots and Triggered Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Linearize at Simulation Snapshot . . . . . . . . . . . . . . . . . . . . Linearize at Triggered Simulation Events . . . . . . . . . . . . . Visualize Linear System at Multiple Simulation Snapshots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Visualize Linear System of a Continuous-Time Model Discretized During Simulation . . . . . . . . . . . . . . . . . . . . Visualize Linear System at Trigger-Based Simulation Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-42 2-57 2-57 2-60 2-64 2-70 2-75 Ordering States in Linearized Model . . . . . . . . . . . . . . . . Control State Order of Linearized Model using Linear Analysis Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Control State Order of Linearized Model using MATLAB Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-76 Time-Domain Validation of Linearization . . . . . . . . . . . . Validate Linearization in Time Domain . . . . . . . . . . . . . . . 2-81 2-81 2-76 2-79 vii Choosing Time-Domain Validation Input Signal . . . . . . . . 2-83 Frequency-Domain Validation of Linearization . . . . . . Validate Linearization in Frequency Domain using Linear Analysis Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Choosing Frequency-Domain Validation Input Signal . . . . 2-85 Visualize Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Customize Characteristics of Plot in Linear Analysis Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Print Plot to MATLAB Figure in Linear Analysis Tool . . . Generate Additional Response Plots of Linearized System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Add Linear System to Existing Response Plot . . . . . . . . . . 2-91 Generate MATLAB Code for Repeated or Batch Linearization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii Contents 2-85 2-89 2-91 2-91 2-92 2-93 2-94 Troubleshooting Linearization . . . . . . . . . . . . . . . . . . . . . . Linearization Troubleshooting Overview . . . . . . . . . . . . . . Check Operating Point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Check Linearization I/O Points Placement . . . . . . . . . . . . . Check Loop Opening Placement . . . . . . . . . . . . . . . . . . . . . . Check Phase of Frequency Response for Models with Time Delays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Check Individual Block Linearization Values . . . . . . . . . . . Check Large Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Check Multirate Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-96 2-96 2-104 2-104 2-105 Controlling Block Linearization . . . . . . . . . . . . . . . . . . . . When You Need to Specify Linearization for Individual Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specify Linear System for Block Linearization Using MATLAB Expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . Specify D-Matrix System for Block Linearization Using Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Augment the Linearization of a Block . . . . . . . . . . . . . . . . . Models with Time Delays . . . . . . . . . . . . . . . . . . . . . . . . . . . Perturbation Level of Blocks Perturbed During Linearization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Linearizing Blocks with Nondouble Precision Data Type Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-112 2-105 2-105 2-108 2-109 2-112 2-113 2-114 2-117 2-122 2-124 2-125 Event-Based Subsystems (Externally Scheduled Subsystems) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-127 Models with Pulse Width Modulation (PWM) Signals . . 2-135 Specifying Linearization for Model Components Using System Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-137 Speeding Up Linearization of Complex Models . . . . . . . Factors That Impact Linearization Performance . . . . . . . . Blocks with Complex Initialization Functions . . . . . . . . . . Disabling the Linearization Inspector in the Linear Analysis Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Batch Linearization of Large Simulink Models . . . . . . . . . 2-144 2-144 2-144 Exact Linearization Algorithm . . . . . . . . . . . . . . . . . . . . . . Continuous-Time Models . . . . . . . . . . . . . . . . . . . . . . . . . . . Multirate Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Perturbation of Individual Blocks . . . . . . . . . . . . . . . . . . . . User-Defined Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Look Up Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-146 2-146 2-147 2-148 2-150 2-151 2-144 2-145 Frequency Response Estimation 3 Frequency Response Model Applications . . . . . . . . . . . . 3-3 What Is a Frequency Response Model? . . . . . . . . . . . . . . . 3-4 Model Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-6 Estimation Requires Input and Output Signals . . . . . . . 3-7 Creating Input Signals for Estimation . . . . . . . . . . . . . . . Supported Input Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . Creating Sinestream Input Signals . . . . . . . . . . . . . . . . . . . Creating Chirp Input Signals . . . . . . . . . . . . . . . . . . . . . . . . 3-9 3-9 3-9 3-19 ix Modifying Input Signals for Estimation . . . . . . . . . . . . . . Modifying Sinestream Input Signal Using Linear Analysis Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modifying Sinestream Input Signal (MATLAB Code) . . . . 3-28 Estimate Frequency Response with Linearization-Based Input Using Linear Analysis Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-32 ...... 3-37 Analyzing Estimated Frequency Response . . . . . . . . . . . View Simulation Results . . . . . . . . . . . . . . . . . . . . . . . . . . . Interpret Frequency Response Estimation Results . . . . . . Analyze Simulated Output and FFT at Specific Frequencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Annotate Frequency Response Estimation Plots . . . . . . . . Displaying Estimation Results for Multiple-Input Multiple-Output (MIMO) Systems . . . . . . . . . . . . . . . . . . 3-40 3-40 3-43 Troubleshooting Frequency Response Estimation . . . . When to Troubleshoot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Time Response Not at Steady State . . . . . . . . . . . . . . . . . . . FFT Contains Large Harmonics at Frequencies Other than the Input Signal Frequency . . . . . . . . . . . . . . . . . . . . . . . Time Response Grows Without Bound . . . . . . . . . . . . . . . . Time Response Is Discontinuous or Zero . . . . . . . . . . . . . . . Time Response Is Noisy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-49 3-49 3-49 Effects of Time-Varying Source Blocks on Frequency Response Estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting Time-Varying Sources to Constant for Estimation Using Linear Analysis Tool . . . . . . . . . . . . . . . . . . . . . . . Setting Time-Varying Sources to Constant for Estimation (MATLAB Code) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Effects of Noise on Frequency Response Estimation . . Contents 3-24 3-26 Estimate Frequency Response Using Linear Analysis Tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Estimate Frequency Response (MATLAB Code) x 3-24 3-45 3-47 3-48 3-53 3-55 3-57 3-59 3-62 3-62 3-69 3-72 Estimating Frequency Response Models with Noise Using Signal Processing Toolbox . . . . . . . . . . . . . . . . . . 3-74 Estimating Frequency Response Models with Noise Using System Identification Toolbox . . . . . . . . . . . . . . 3-76 Generate MATLAB Code for Repeated or Batch Frequency Response Estimation . . . . . . . . . . . . . . . . . . 3-78 Managing Estimation Speed and Memory . . . . . . . . . . . . Ways to Speed up Frequency Response Estimation . . . . . . Speeding Up Estimation Using Parallel Computing . . . . . Managing Memory During Frequency Response Estimation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-80 3-80 3-82 3-86 Designing Compensators 4 Choosing a Compensator Design Approach . . . . . . . . . . 4-2 Introduction to Automatic PID Tuning . . . . . . . . . . . . . . 4-3 What Plant Does the PID Tuner See? . . . . . . . . . . . . . . . . 4-4 PID Tuning Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-5 Designing Controllers with the PID Tuner . . . . . . . . . . . Prerequisites for PID Tuning . . . . . . . . . . . . . . . . . . . . . . . . Opening the Tuner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Analyzing the Design in the PID Tuner . . . . . . . . . . . . . . . Refining the Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Verifying the PID Design in Your Simulink Model . . . . . . . Tuning at a Different Operating Point . . . . . . . . . . . . . . . . 4-6 4-6 4-6 4-8 4-11 4-14 4-15 Designing Two-Degree-of-Freedom PID Controllers . . About Two-Degree-of-Freedom PID Controllers . . . . . . . . . Tuning Two-Degree-of-Freedom PID Controllers . . . . . . . . 4-18 4-18 4-18 xi Tuning a PID Controller Within a Model Reference . . . 4-20 Troubleshooting Automatic PID Tuning . . . . . . . . . . . . . Cannot Find a Good Design in the PID Tuner . . . . . . . . . . Simulated Response Does Not Match the PID Tuner Response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cannot Find an Acceptable PID Design in the Simulated Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Controller Performance Deteriorates When Switching Time Domains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . When Tuning the PID Controller, the D Gain Has a Different Sign from the I Gain . . . . . . . . . . . . . . . . . . . . . 4-23 4-23 4-24 4-25 4-26 4-27 Designing a Simulink PID Controller (2DOF) Block for a Reactor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-29 Designing PID Controller in Simulink with Estimated Frequency Response . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-43 Designing a Family of PID Controllers for Multiple Operating Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-50 Design and Analysis of Control Systems . . . . . . . . . . . . . Compensator Design Process Overview . . . . . . . . . . . . . . . . Beginning a Compensator Design Task . . . . . . . . . . . . . . . . Selecting Blocks to Tune . . . . . . . . . . . . . . . . . . . . . . . . . . . . Selecting Closed-Loop Responses to Design . . . . . . . . . . . . Selecting an Operating Point . . . . . . . . . . . . . . . . . . . . . . . . Creating a SISO Design Task . . . . . . . . . . . . . . . . . . . . . . . . Completing the Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-57 4-57 4-57 4-59 4-62 4-64 4-67 4-78 Model Verification 5 Monitoring Linear System Characteristics in Simulink Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xii Contents 5-2 Defining a Linear System for Model Verification Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-4 Verifiable Linear System Characteristics . . . . . . . . . . . . 5-5 Model Verification at Default Simulation Snapshot Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-6 Model Verification at Multiple Simulation Snapshots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-15 Model Verification Using Simulink Control Design and Simulink Verification Blocks . . . . . . . . . . . . . . . . . . . . . 5-25 Function Reference 6 Linearization Analysis I/Os . . . . . . . . . . . . . . . . . . . . . . . . . 6-2 Steady-State Operating Points . . . . . . . . . . . . . . . . . . . . . . 6-3 Linearization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-4 Frequency Response Estimation . . . . . . . . . . . . . . . . . . . . 6-5 Interface for Compensator Tuning . . . . . . . . . . . . . . . . . . 6-6 xiii Class Reference 7 Alphabetical List 8 Block Reference 9 Operating Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-2 Linear Analysis Plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-3 Model Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-4 Blocks — Alphabetical List 10 Model Advisor Checks 11 Simulink Control Design Checks . . . . . . . . . . . . . . . . . . . . Identify time-varying source blocks interfering with frequency response estimation . . . . . . . . . . . . . . . . . . . . . xiv Contents 11-2 11-3 Examples A Frequency Response Estimation . . . . . . . . . . . . . . . . . . . . A-2 Index xv xvi Contents 1 Steady-State Operating Points • “Steady-State Operating Point (Trimming)” on page 1-2 • “View and Modify Operating Points” on page 1-7 • “Choosing Between Simulation Snapshot and Operating Point from Specifications” on page 1-12 • “Steady-State Operating Points (Trimming) from Specifications” on page 1-14 • “Import and Export Specifications For Operating Point Search” on page 1-37 • “Batch Compute Operating Points with Single Model Compilation” on page 1-39 • “Steady-State Operating Points from Simulation” on page 1-41 • “Simulate Simulink Model at Specific Operating Point” on page 1-44 • “Handling Blocks with Internal State Representation” on page 1-46 • “Synchronize Simulink Model Changes with Operating Point Specifications” on page 1-49 1 Steady-State Operating Points Steady-State Operating Point (Trimming) In this section... “What Is a Steady-State Operating Point?” on page 1-2 “What Is an Operating Point in Simulink® Control Design™?” on page 1-3 “Simulink Model States Included in Operating Point Object” on page 1-4 “Advantages of Using Simulink® Control Design™ vs. Simulink Operating Point Search” on page 1-5 What Is a Steady-State Operating Point? An operating point of a dynamic system defines the overall state of this system at a specific time. For example, in a car engine model, variables such as engine speed, throttle angle, engine temperature, and surrounding atmospheric conditions typically describe the operating point. A steady-state operating point of the model, also called equilibrium or trim condition, includes state variables that do not change with time. A model might have several steady-state operating points. For example, a hanging pendulum has two steady-state operating points. A stable steady-state operating point occurs when a pendulum hangs straight down. That is, the pendulum position does not change with time. When the pendulum position deviates slightly, the pendulum always returns to equilibrium; small changes in the operating point do not cause the system to leave the region of good approximation around the equilibrium value. An unstable steady-state operating point occurs when a pendulum points upward. As long as the pendulum points exactly upward, it remains in equilibrium. However, when the pendulum deviates slightly from this position, it swings downward and the operating point leaves the region around the equilibrium value. When using optimization search to compute operating points for a nonlinear system, your initial guesses for the states and input levels must be in the neighborhood of the desired operating point to ensure convergence. 1-2 Steady-State Operating Point (Trimming) When linearizing a model with multiple steady-state operating points, it is important to have the right operating point. For example, linearizing a pendulum model around the stable steady-state operating point produces a stable linear model, whereas linearizing around the unstable steady-state operating point produces an unstable linear model. What Is an Operating Point in Simulink Control Design? The operating point of a model consists of the model initial states and root-level input signals. For example, this Simulink® model has an operating point that consists of two variables: • Root input level set to 1 • Integrator block state set to 5 The next table summarizes the operating point values of this Simulink model. Block Block Input Block Operation 1 Integrator Square Block Output 5, set by the initial conditionx0 = 5 of the Integrator block squares 25 1-3 1 Steady-State Operating Points Block Block Input Block Operation Block Output Sum 25 from Square block, 1 from Constant block sums 26 Gain 26 multiplies by 3 78 The next block diagram shows how the model input and the initial state of the Integrator block propagate through the model during simulation. If your model initial states and inputs already represent the desired steady-state operating conditions, you can use this operating point for linearization or control design. Examples and How To • “Steady-State Operating Points from State Specifications” on page 1-16 • “Steady-State Operating Point to Meet Output Specification” on page 1-21 More About “Simulink Model States Included in Operating Point Object” on page 1-4 Simulink Model States Included in Operating Point Object The operating point object in Simulink Control Design™ includes the tunable states in your Simulink model. 1-4 Steady-State Operating Point (Trimming) The operating point object excludes states of blocks that have internal representation, such as Backlash, Memory, and Stateflow blocks. Block Type Block Example Included in Operating Point? Blocks with double-precision real-valued states Integrator, State Space, Transfer Function Yes Root-level inport blocks with double-precision real-valued inputs Inport Yes Blocks with internal state representation that impact block output Backlash, Memory, Stateflow No More About • “Handling Blocks with Internal State Representation” on page 1-46 • “Steady-State Operating Point (Trimming)” on page 1-2 Advantages of Using Simulink Control Design vs. Simulink Operating Point Search Simulink provides trim for steady-state operating point search. How is trim different from findop in Simulink Control Design for performing an optimization-based operating point search? Simulink Control Design operating point search provides these advantages to using trim: 1-5 1 1-6 Steady-State Operating Points Simulink Control Design Operating Point Search Simulink Operating Point Search Graphical-user interface Yes No Only trim is available. Multiple optimization methods Yes No Only one optimization method Constrain state, input, and output variables using upper and lower bounds Yes No Specify the output value of blocks that are not connected to root model outports Yes No Steady-operating points for models with discrete states Yes No Model reference support Yes No SimMechanics™ integration Yes No View and Modify Operating Points View and Modify Operating Points In this section... “View Model Initial Condition in Linear Analysis Tool” on page 1-7 “Modify Operating Point in Linear Analysis Tool” on page 1-8 “View and Modify Operating Point Object (MATLAB Code)” on page 1-10 View Model Initial Condition in Linear Analysis Tool This example shows how to view the model initial condition in the Linear Analysis Tool. 1 Open the Simulink model. sys = 'magball'; open_system(sys) 2 In the Simulink Editor, select Analysis > Control Design > Linear Analysis. The Linear Analysis Tool for the model opens. 3 Click in the Exact Linearization tab. This action opens the Model Initial Condition Viewer, which shows the model initial condition (default operating point). 1-7 1 Steady-State Operating Points You cannot edit the Model Initial Condition operating point using the Linear Analysis Tool. To edit the initial conditions of the model, change the appropriate parameter of the relevant block in your Simulink model. For example, double-click the magball/Magnetic Ball Plant/Current block to open the Block Parameters dialog box and edit the value in the Initial condition box. Click OK. Modify Operating Point in Linear Analysis Tool This example shows how to modify an existing operating point in the Linear Analysis Tool. 1 Open Simulink model. sys = 'magball'; open_system(sys) Opening magball loads the operating points magball_op1 and magball_op2 into the MATLAB® Workspace. 2 In the Simulink Editor, select Analysis > Control Design > Linear Analysis. The Linear Analysis Tool for the model opens. 3 Choose magball_op1 from the Operating Point list. 1-8 View and Modify Operating Points 4 Click adjacent to the Operating Point list. The magball_op1 editor opens. Use this dialog box to view and edit this operating point. 1-9 1 Steady-State Operating Points Select the state or input Value to edit its value. You cannot edit an operating point that you created by trimming a model in the Linear Analysis Tool. View and Modify Operating Point Object (MATLAB Code) This example shows how to view and modify the states in the Simulink model using an operating point object. 1 Create operating point object from Simulink model. sys = 'watertank'; load_system(sys) op = operpoint(sys) The operating point op contains the states and input levels of the Simulink model. 2 Set the value of the first state. op.States(1).x = 1.26; 3 View the operating point object state values. op.States 1-10 View and Modify Operating Points (1.) watertank/PID Controller/Integrator x: 1.26 (2.) watertank/Water-Tank System/H x: 1 Note When you modify your Simulink model after creating an operating point object, use update to update your operating point object. 1-11 1 Steady-State Operating Points Choosing Between Simulation Snapshot and Operating Point from Specifications You can find steady-state operating points (or trim conditions) from specifications or at specific simulation times (or simulation snapshots). Choosing which approach to use for computing your operating point depends on what you know about the operating point. Use optimization-based steady-state operating point search when you know some of the operating point states and model input or output signal levels. Successful operating point search finds an operating point very close to a true steady-state solution. Optimization-based search produces poor results when you specify: • Initial guesses for steady-state operating point values that are far away from the desired steady-state operating point. • Incompatible input, output, or state constraints at equilibrium. This is equivalent to overconstraining the optimization search. Use the simulation-based approach when the simulation time is sufficiently short for the model to reach steady state. The algorithms extracts operating point values when the simulation reaches steady state. You must also specify the initial conditions that drive the model to steady state. Simulation-based computations produce poor operating point results when you specify: • Simulation time that is insufficiently long to drive the model to steady state. • Initial conditions do not cause the model to reach true equilibrium. Note If your Simulink model has internal states, do not linearize this model at the operating point you compute from a simulation snapshot. Instead, try linearizing the model using a simulation snapshot or at an operating point from optimization-based search. 1-12 Choosing Between Simulation Snapshot and Operating Point from Specifications Examples and How To • “Steady-State Operating Point to Meet Output Specification” on page 1-21 • “Compute Operating Points at Simulation Snapshots” on page 1-41 More About “Steady-State Operating Point (Trimming)” on page 1-2 1-13 1 Steady-State Operating Points Steady-State Operating Points (Trimming) from Specifications In this section... “Steady-State Operating Point Search (Trimming)” on page 1-14 “Which States in the Model Must Be at Steady State?” on page 1-15 “Steady-State Operating Points from State Specifications” on page 1-16 “Steady-State Operating Point to Meet Output Specification” on page 1-21 “Initialize Steady-State Operating Point Search Using Simulation Snapshot” on page 1-24 “Compute Steady-State Operating Points for SimMechanics Models” on page 1-29 “Batch Compute Steady-State Operating Points” on page 1-32 “Change Operating Point Search Optimization Settings” on page 1-35 Steady-State Operating Point Search (Trimming) You can compute a steady-state operating point (or equilibrium operating point) using numerical optimization methods to meet your specifications. The resulting operating point consists of the equilibrium state values and model input levels. Optimization-based operating point computation requires you to specify initial guesses and constraints on the key operating point states, input levels, and model output signals. You can usually improve your optimization results using simulation to initialize the optimization. For example, you can extract the initial values of the operating point at a simulation time when the model reaches the neighborhood of steady state. Optimization-based operating point search lets you specify and constrain the following variables at equilibrium: • Initial state values 1-14 Steady-State Operating Points (Trimming) from Specifications • States at equilibrium • Maximum or minimum bounds on state values, input levels, and output levels • Known (fixed) state values, input levels, or output levels Your operating point search might not converge to a steady-state operating point when you overconstrain the optimization. You can overconstrain the optimization by specifying incompatible constraints or initial guesses that are far away from the desired solution. You can also control the accuracy of your operating point search by configuring the optimization algorithm settings. Examples and How To “Change Operating Point Search Optimization Settings” on page 1-35 More About “Which States in the Model Must Be at Steady State?” on page 1-15 Which States in the Model Must Be at Steady State? When configuring a steady-state operating point search, you do not always need to specify all states to be at equilibrium. A pendulum is an example of a system where it is possible to find an operating point with all states at steady state. However, for other types of systems, there may not be an operating point where all states are at equilibrium, and the application does not require that all operating point states be at equilibrium. For example, suppose you build an automobile model for a cruise control application with these states: • Vehicle position and velocity • Fuel and air flow rates into the engine If your goal is to study the automobile behavior at constant cruising velocity, you need an operating point with the velocity, air flow rate, and fuel flow rate 1-15 1 Steady-State Operating Points at steady state. However, the position of the vehicle is not at steady state because the vehicle is moving at constant velocity. The lack of steady state of the position variable is fine for the cruise control application because the position does not have significant impact on the cruise control behavior. In this case, you do not need to overconstrain the optimization search for an operating point by require that all states should be at equilibrium. Similar situations also appear in aerospace systems when analyzing the dynamics of an aircraft under different maneuvers. Steady-State Operating Points from State Specifications This example shows how to compute a steady-state operating point, or equilibrium operating point, by specifying known (fixed) equilibrium states and minimum state values. Code Alternative Use findop to find operating point from specifications. For examples and additional information, see the findop reference page. 1 Open Simulink model. sys = 'magball'; open_system(sys) 2 In the Simulink Editor, select Analysis > Control Design > Linear Analysis. The Linear Analysis Tool for the model opens. 1-16 Steady-State Operating Points (Trimming) from Specifications 3 In the Linear Analysis tab, click Trim Model. Then click Specifications. The Specifications for trim dialog box opens. By default, the software specifies all model states to be at equilibrium (as shown by the check marks in the Steady State column). The Inputs and Outputs tabs are empty because this model does not have root-level input and output ports. 4 In the States tab, select Known for the height state. The height of the ball matches the reference signal height (specified in the Desired Height block as 0.05). This height value should remain fixed during the optimization. 1-17 1 Steady-State Operating Points 5 Enter 0 for the minimum bound of the Current state. 6 Click 1-18 to compute the operating point. Steady-State Operating Points (Trimming) from Specifications This action uses numerical optimization to find the operating point that meets your specifications. The Trim progress viewer shows that the optimization algorithm terminated successfully. The (Maximum Error) Block area shows the progress of reducing the error of a specific state or output during the optimization. A new variable, op_trim1, appears in the Linear Analysis Workspace. 7 Double-click op_trim1 in Linear Analysis Workspace to evaluate whether the resulting operating point values meet the specifications. 1-19 1 Steady-State Operating Points The Actual dx values are about 0, which indicates that the operating point meets the steady state specification. The Actual Value of the states falls within the Desired Value bounds. 8 (Optional) To automatically generate a MATLAB script, click Trim and select Generate MATLAB Script. The generated script contains commands for computing the operating point for this example. Related Examples • “Steady-State Operating Point to Meet Output Specification” on page 1-21 • “Change Operating Point Search Optimization Settings” on page 1-35 • “Initialize Steady-State Operating Point Search Using Simulation Snapshot” on page 1-24 1-20 Steady-State Operating Points (Trimming) from Specifications • “Compute Steady-State Operating Points for SimMechanics Models” on page 1-29 • “Simulate Simulink Model at Specific Operating Point” on page 1-44 • “Batch Compute Steady-State Operating Points” on page 1-32 More About • “Steady-State Operating Point (Trimming)” on page 1-2 • “Choosing Between Simulation Snapshot and Operating Point from Specifications” on page 1-12 Steady-State Operating Point to Meet Output Specification This example shows how to specify an output constraint of an engine speed for computing the engine steady-state operating point. 1 Open Simulink model. sys = 'scdspeed'; open_system(sys); 2 In the Simulink Editor, select Analysis > Control Design > Linear Analysis. The Linear Analysis Tool for the model opens. 3 In the Linear Analysis tab, click Trim Model. Then click Specifications. 1-21 1 Steady-State Operating Points The Specifications for trim dialog box appears. 4 Examine the linearization outputs for scdspeed in the Outputs tab. Currently there are no outputs specified for scdspeed. 5 In the Simulink Editor, right-click the output signal from the rad/s to rpm block. Select Linear Analysis Points > Output Constraint. This action adds the output signal constraint marker to the model. The output signal from the rad/s to rpm block now appears under the Outputs tab. 6 Select Known and enter 2000 RPM for the engine speed as the output signal value. Press Enter. 1-22 Steady-State Operating Points (Trimming) from Specifications 7 Click to find a new steady-state operating point that meets the specified output signal constraint. 8 Double-click op_trim1 in Linear Analysis Workspace to evaluate whether the resulting operating point values meet the specifications. In the States tab, the Actual dx values are either zero or about zero. This result indicates that the operating point meets the steady state specification. In the Outputs tab, the Actual Value and the Desired Value are both 2000. 1-23 1 Steady-State Operating Points Related Examples • “Steady-State Operating Points from State Specifications” on page 1-16 • “Change Operating Point Search Optimization Settings” on page 1-35 • “Initialize Steady-State Operating Point Search Using Simulation Snapshot” on page 1-24 • “Compute Steady-State Operating Points for SimMechanics Models” on page 1-29 • “Simulate Simulink Model at Specific Operating Point” on page 1-44 • “Batch Compute Steady-State Operating Points” on page 1-32 More About • “Steady-State Operating Point (Trimming)” on page 1-2 • “Choosing Between Simulation Snapshot and Operating Point from Specifications” on page 1-12 Initialize Steady-State Operating Point Search Using Simulation Snapshot • “Initialize Operating Point Search Using Linear Analysis Tool” on page 1-24 • “Initialize Operating Point Search (MATLAB Code)” on page 1-27 Initialize Operating Point Search Using Linear Analysis Tool This example shows how to use the Linear Analysis Tool to initialize the values of an operating point search using a simulation snapshot. 1-24 Steady-State Operating Points (Trimming) from Specifications If you know the approximate time when the model reaches the neighborhood of a steady-state operating point, you can use simulation to get the state values to be used as the initial condition for numerical optimization. 1 Open Simulink model. sys = ('watertank'); open_system(sys) 2 In the Simulink Editor, select Analysis > Control Design > Linear Analysis. The Linear Analysis Tool for the model opens. 3 In the Linear Analysis tab, click Operating Point Snapshot The Operating Point Snapshots tab opens. 4 Enter 10 in the Simulation Snapshot Times field to extract the operating point at this simulation time. Press Enter. 1-25 1 Steady-State Operating Points Click to take a snapshot of the system at the specified time. op_snapshot1 appears in the Linear Analysis Workspace. The snapshot, op_snapshot1, contains all state values of the system at the specified time. 5 In the Linear Analysis tab, click Trim Model. Then click Specifications. The Specifications for trim dialog box appears. 6 Click Import. The Import initial values and specifications dialog opens. 7 Select op_snapshot1 and click Import to initialize the operating point states with the values you obtained from the simulation snapshot. The state values displayed in the Specifications for trim dialog box update to reflect the new values. 1-26 Steady-State Operating Points (Trimming) from Specifications 8 Click to find the optimized operating point using the states at t = 10 as the initial values. 9 Double-click op_trim1 in Linear Analysis Workspace to evaluate whether the resulting operating point values meet the specifications. The Actual dx values are near zero. This result indicates that the operating point meets the steady state specifications. Initialize Operating Point Search (MATLAB Code) This example show how to use initopspec to initialize operating point object values for optimization-based operating point search. 1 Open Simulink model. sys = 'watertank'; load_system(sys); 1-27 1 Steady-State Operating Points 2 Extract an operating point from simulation after 10 time units. opsim = findop(sys,10); 3 Create operating point specification object. By default, all model states are specified to be at steady state. opspec = operspec(sys); 4 Configure initial values for operating point search. opspec = initopspec(opspec,opsim); 5 Find the steady state operating point that meets these specifications. [op,opreport] = findop(sys,opspec) bdclose(sys); opreport describes the optimization algorithm status at the end of the operating point search. Operating Report for the Model watertank. (Time-Varying Components Evaluated at time t=0) Operating point specifications were successfully met. States: ---------(1.) watertank/PID Controller/Integrator x: 1.26 dx: 0 (0) (2.) watertank/Water-Tank System/H x: 10 dx: -1.1e-014 (0) Inputs: None ---------Outputs: None ---------dx, which is the time derivative of each state, is effectively zero. This value of the state derivative indicates that the operating point is at steady state. 1-28 Steady-State Operating Points (Trimming) from Specifications Related Examples • “Steady-State Operating Points from State Specifications” on page 1-16 More About • “Change Operating Point Search Optimization Settings” on page 1-35 • “Steady-State Operating Point (Trimming)” on page 1-2 Compute Steady-State Operating Points for SimMechanics Models This example shows how to compute the steady-state operating point of a SimMechanics model from specifications. Note You must have installed SimMechanics software to execute this example on your computer. 1 Open the SimMechanics model. sys = 'scdmechconveyor'; open_system(sys); 1-29 1 Steady-State Operating Points 2 Double-click the Env block to open the Block Parameters dialog box. 3 In the Parameters tab, select Trimming as the Analysis mode. Click OK. 1-30 Steady-State Operating Points (Trimming) from Specifications This action adds an output port to the model with constraints that must be satisfied to a ensure a consistent SimMechanics machine. 4 In the Simulink Editor, select Analysis > Control Design > Linear Analysis. The Linear Analysis Tool for the model opens. 5 In the Linear Analysis tab, click Trim Model. Then click Specifications. The Specifications for trim dialog box appears. By default, the software specifies all model states to be at equilibrium (as shown in the Steady State column). The Outputs tab shows the 1-31 1 Steady-State Operating Points error constraints in the system that must be set to zero for steady-state operating point search. 6 Select Known in the Outputs tab to set all constraints to 0. You can now specify additional constraints on the operating point states and input levels, and find the steady-state operating point for this model. After you finish steady-state operating point search for the SimMechanics model, reset the Analysis mode to Forward dynamics in the Env block parameters dialog box. More About • “Change Operating Point Search Optimization Settings” on page 1-35 Batch Compute Steady-State Operating Points This example shows how to batch compute steady-state operating points for a model using generated MATLAB code. If you are new to writing scripts, use the Linear Analysis Tool to interactively configure your operating points search. You can use Simulink Control Design to automatically generate a script based on your Linear Analysis Tool settings. 1 Open the Simulink model. sys = 'magball'; 1-32 Steady-State Operating Points (Trimming) from Specifications open_system(sys); 2 Open the Linear Analysis Tool for the model. In the Simulink Editor, select Analysis > Control Design > Linear Analysis. 3 Open the Specifications for trim dialog box. In the Linear Analysis tab, click Trim Model. The Trim Model tab should open. Click Specifications. By default, the software specifies all model states to be at equilibrium (as shown in the Steady State column). 4 In the States tab, select the Known check box for the magball/Magnetic Ball Plant/height state. 5 Click to compute the operating point using numerical optimization. The Trim progress viewer shows that the optimization algorithm terminated successfully. The (Maximum Error) Block area shows the progress of reducing the error of a specific state or output during the optimization. 6 Click Generate MATLAB Code in the Trim list to automatically generate a MATLAB script. 1-33 1 Steady-State Operating Points The MATLAB Editor window opens with the generated script. 7 Edit the script: a Remove unneeded comments from the generated script. b Define initial height variable height with values at which to compute operating points. c Add a for loop around the operating point search code to compute a steady-state operating point for each height value. Your script should now look similar to this (excluding most comments): function [op,opreport] = myoperatingpointsearch %% Specify the model name sys = 'magball'; load_system(sys) %% Create operating point specification object opspec = operspec(sys) % State (5) - magball/Magnetic Ball Plant/height % - Default model initial conditions are used to initialize optimization. opspec.States(5).Known = true; %% Create the options opt = linoptions('DisplayReport','iter'); %% Specify the initial heights at which to compute operating points height = [0.05;0.1;0.15]; %% Loop over height values to find the corresponding steady state %% operating points for ct = 1:numel(height) % Set the initial height in the specification opspec.States(5).x = height(ct); % Trim the model [op(ct),oprep(ct)] = findop(sys,opspec,opt); end 1-34 Steady-State Operating Points (Trimming) from Specifications See Also findop Change Operating Point Search Optimization Settings This example shows how to control the accuracy of your operating point search by configuring the optimization algorithm. Typically, you adjust the optimization settings based on the operating point search report, which is automatically created after each search. Code Alternative Use linoptions to configure optimization algorithm settings for findop. 1 In the Linear Analysis Tool, open the Linear Analysis tab. Click Trim Model and click Optimization Options. This action opens the Options for trim dialog box. 2 Change the appropriate optimization settings. This table lists the most common optimization settings. Optimization Status Option to Change Comment Optimization ends before completing (too few iterations) Maximum iterations Increase the number of iterations State derivative or error in output constraint is too large Function tolerance or Constraint tolerance (depending on selected algorithm) Decrease the tolerance value 1-35 1 Steady-State Operating Points Note You can get help on each option by right-clicking the option label and selecting What’s This?. Related Examples • “Steady-State Operating Points from State Specifications” on page 1-16 • “Steady-State Operating Point to Meet Output Specification” on page 1-21 • “Batch Compute Steady-State Operating Points” on page 1-32 More About • “Steady-State Operating Point (Trimming)” on page 1-2 1-36 Import and Export Specifications For Operating Point Search Import and Export Specifications For Operating Point Search When you modify an operating point specification in the Linear Analysis Tool, you can export the specification to the MATLAB workspace or the Linear Analysis Tool workspace. Exported specifications are saved as operating point specifications objects (see operspec). Exporting specifications can be useful when you expect to perform multiple trimming operations using the same or a very similar set of specifications. Additionally, you can export interactively-edited operating point specifications when you want to use the findop command to perform multiple trimming operations with a single compilation of the model. (See “Batch Compute Operating Points with Single Model Compilation” on page 1-39.) You can also import saved operating point specifications to the Linear Analysis Tool and use them to interactively compute trimmed operating points. Importing a specification can be useful when you want to trim a model to a specification that is similar to one you previously saved. In that case, you can import the specification to the Linear Analysis Tool and interactively change it. You can then export the modified specification, or compute a trimmed operating from it. To import or save an operating point specification: 1 In the Linear Analysis Tool, on the Linear Analysis Tab, click Trim Model to open the Trim Model Tab. 2 Click Specifications to open the Specifications for trim dialog box. 3 Click Import to import a saved operating point specification from the Linear Analysis Workspace or the MATLAB Workspace. Click Export to save an operating point specification to the Linear Analysis Workspace or the MATLAB Workspace. 1-37 1 Steady-State Operating Points For more information about operating point specifications, see the operspec and findop reference pages. 1-38 Batch Compute Operating Points with Single Model Compilation Batch Compute Operating Points with Single Model Compilation This example shows how to find operating points for multiple operating point specifications with a single model compilation using the findop command. Each time you call findop, the software compiles the Simulink model. To find operating points for multiple specifications, you can give findop a vector of operating point specifications. Then findop only compiles the model once. 1 Open Simulink model. sys = 'scdspeed'; open_system(sys); 2 Create operating point specification object. opspec1 = operspec(sys); By default, all model states are specified to be at steady state. 3 Configure the output specification. blk = [sys '/rad//s to rpm']; opspec1 = addoutputspec(opspec1,blk,1); opspec1.Outputs(1).Known = true; opspec1.Outputs(1).y = 1500; opspec1 specifies a stead-state operating point in which the output of the block rad/s to rpm is fixed at 500. Note Alternatively, you can configure an operating point specification using the Linear Analysis Tool and export the specification to the MATLAB workspace. See “Import and Export Specifications For Operating Point Search” on page 1-37 for more information. 4 Create and configure additional operating point specifications. opspec2 = copy(opspec1); 1-39 1 Steady-State Operating Points opspec2.Outputs(1).y = 2000; opspec3 = copy(opspec1); opspec3.Outputs(1).y = 2500; Using the copy command creates an independent operating point specification that you can edit without changing opspec1. Here, the specifications opspec2 and opspec3 are identical to opspec1, except for the target output level. 5 Find the operating points that meet each of the three output specifications. opspecs = [opspec1,opspec2,opspec3]; ops = findop(sys,opspecs); bdclose(sys); Pass the three operating point specifications to findop in the vector opspecs. When you give findop a vector of operating point specifications, it finds all the operating points with only one model compilation. ops is a vector of operating point objects for the model scdspeed that correspond to the three specifications in the vector. 1-40 Steady-State Operating Points from Simulation Steady-State Operating Points from Simulation In this section... “Simulation Snapshot Operating Points” on page 1-41 “Compute Operating Points at Simulation Snapshots” on page 1-41 Simulation Snapshot Operating Points You can compute a steady-state operating point (or equilibrium operating point) from model simulation. The resulting operating point consists of the state values and model input levels at the specified simulation time. Simulation-based operating point computation requires that you configure your model by specifying: • Initial conditions that cause your model to converge to equilibrium • Simulation time at which the model reaches equilibrium You can use the simulation snapshot operating point to initialize the trim point search. Note If your Simulink model has internal states, do not linearize this model at the operating point you compute from a simulation snapshot. Instead, try linearizing the model using a simulation snapshot or at an operating point from optimization-based search. Compute Operating Points at Simulation Snapshots This example shows how to use the Linear Analysis Tool to compute an operating point at specified simulation times (or simulation snapshots). Code Alternative Use findop to compute operating point at simulation snapshot. For examples and additional information, see the findop reference page. 1-41 1 Steady-State Operating Points 1 Open Simulink model. sys = 'magball'; open_system(sys); 2 In the Simulink Editor, select Analysis > Control Design > Linear Analysis. The Linear Analysis Tool for the model opens, with the default operating point being set to the model initial condition. 3 In the Linear Analysis tool, click the Operating Point Snapshots tab. 4 Specify [1,10] in the Simulation Snapshot Times field. Press Enter. This vector specifies operating points at t = 1 and t = 10. 5 Click to take a snapshot of the system at the specified times. A new variable, op_snapshot1, appears in the Linear Analysis Workspace. op_snapshot1 contains the two operating points. 6 Double-click op_snapshot1 to see the resulting operating points. Select an operating point of interest from the Select Operating Point list to see it. 1-42 Steady-State Operating Points from Simulation For example, to evaluate your operating point from a simulation snapshot: 1 Initialize the model at the operating point (see “Simulate Simulink Model at Specific Operating Point” on page 1-44) 2 Add Scope blocks to show the output signals that should reach steady state during the simulation. 3 Run the simulation to check whether these key signals are at steady state. More About • “Choosing Between Simulation Snapshot and Operating Point from Specifications” on page 1-12 1-43 1 Steady-State Operating Points Simulate Simulink Model at Specific Operating Point This example shows how to initialize a model at a specific operating point for simulation. 1 Compute a steady-state operating point, as described in “Compute Operating Points at Simulation Snapshots” on page 1-41. 2 In the Linear Analysis Tool, double-click the operating point variable in the Linear Analysis Workspace. The Edit dialog box opens. 3 Click Initialize model. The Initialize Model dialog box opens. 1-44 Simulate Simulink® Model at Specific Operating Point 4 Use the default Variable Name for the operating point object. Alternatively, you can edit this variable name. Click OK to export the operating point to the MATLAB Workspace. This action also sets the operating point values in the Data Import/Export pane of the Configuration Parameters dialog box. Simulink uses this operating point as initial conditions when simulating the model. Tip If you want to store this operating point with the model, export the operating point to the Model Workspace instead. In the Simulink Editor, select Simulation > Run to simulate the model starting at the specified operating point. Related Examples • “Steady-State Operating Points from State Specifications” on page 1-16 • “Compute Operating Points at Simulation Snapshots” on page 1-41 1-45 1 Steady-State Operating Points Handling Blocks with Internal State Representation In this section... “Operating Point Object Excludes Blocks with Internal States” on page 1-46 “Identifying Blocks with Internal States in Your Model” on page 1-47 “Configuring Blocks with Internal States for Steady-State Operating Point Search” on page 1-47 Operating Point Object Excludes Blocks with Internal States The operating point object used for linearization and control design does not include these Simulink blocks with internal state representation: • Memory blocks • Transport Delay and Variable Transport Delay blocks • Disabled Action Subsystem blocks • Backlash blocks • MATLAB Function blocks with persistent data • Rate Transition blocks • Stateflow® blocks • S-Function blocks with states not registered as Continuous or Double Value Discrete For example, if you compute a steady-state operating point for this Simulink model, the resulting operating point object does not include the Backlash block states because these states have an internal representation. If you use this operating point object to initialize a Simulink model, the initial conditions of the Backlash blocks might be incompatible with the operating point. 1-46 Handling Blocks with Internal State Representation Identifying Blocks with Internal States in Your Model Generate a list of blocks that have internal state representations. sldiagnostics(sys,'CountBlocks') where sys is your model, specified as a string. This command also returns the number of occurrences of each block. Configuring Blocks with Internal States for Steady-State Operating Point Search Blocks with internal states can cause problems for steady-state operating point search (trimming). Where there is no direct feedthrough, the input to the block at the current time does not determine the output of the block at the current time. To fix this issues for Memory blocks, Transport Delay, or Variable Transport Delay blocks, select the Direct feedthrough of input during linearization option in the Block Parameters dialog box before searching for an operating point or linearizing a model at a steady state. This setting makes such blocks behave as if they have a gain of 1 during operating point search. For example, the next model includes a Transport Delay block. In this case, you cannot find a steady state operating point using optimization because the output of the Transport Delay is always zero. Because the reference signal is 1, the input to the Plant block must be nonzero to get the plant block to have an output of 1 and be at steady state. 1-47 1 Steady-State Operating Points To fix this issue, select the Direct feedthrough of input during linearization option in the Block Parameters dialog box before searching for an operating point. This setting lets the PID Controller block push a nonzero value to the Plant block. For other blocks with internal states, determine whether the output of the block impacts the state derivatives or desired output levels before computing operating points. If the block impacts these derivatives or output levels, consider replacing it using a configurable subsystem. You can also set direct feedthrough options at the command-line instead of using the block parameter dialog box. Block Command to specify direct feedthrough Memory set_param(blockname,'LinearizeMemory','on') Transport Delay or Variable Transport Delay 1-48 set_param(blockname,'TransDelayFeedthrough','on') Synchronize Simulink® Model Changes with Operating Point Specifications Synchronize Simulink Model Changes with Operating Point Specifications In this section... “Synchronize Simulink Model Changes with Linear Analysis Tool” on page 1-49 “Synchronize Simulink Model Changes with Existing Operating Point Specification Object” on page 1-52 Synchronize Simulink Model Changes with Linear Analysis Tool This example shows how to update the operating point specifications in the Linear Analysis Tool to reflect changes to the Simulink model. Modifying your Simulink model can change, add, or remove states, inputs, or outputs, which changes the operating point. If you change your model while the Linear Analysis Tool is open, you must sync the operating point specifications in the Linear Analysis Tool to reflect the changes in the model. 1 Open Simulink model. sys = ('scdspeedctrl'); open_system(sys) 2 In the Simulink Editor, select Analysis > Control Design > Linear Analysis. The Linear Analysis Tool for the model opens, with the default operating point being set to the model initial condition. 3 In the Linear Analysis tab, click Trim Model. Then click Specifications. The Specifications for trim dialog box appears. 1-49 1 Steady-State Operating Points The Reference Filter block contains just one state. 4 In the Simulink Editor, double-click the Reference Filter block. Change the Numerator of the transfer function to 100, and change the Denominator to [1 20 100]. Click OK. 1-50 Synchronize Simulink® Model Changes with Operating Point Specifications This change adds a state to the Simulink model. 5 In the Specifications for trim dialog, click Sync with Model to synchronize the operating point specifications in the Linear Analysis Tool with the model. 1-51 1 Steady-State Operating Points The dialog now shows two states for the Reference Filter block. 6 Click to compute the operating point. Synchronize Simulink Model Changes with Existing Operating Point Specification Object This example shows how to use update to update the operating point specification object after you update the Simulink model. 1 Open Simulink model. sys = 'scdspeedctrl'; open_system(sys); 2 Create operating point specification object. By default, all model states are specified to be at steady state. opspec = operspec(sys); 3 In the Simulink Editor, double-click the Reference Filter block. Change the Numerator of the transfer function to [100] and the Denominator to [1 20 100]. Click OK. 1-52 Synchronize Simulink® Model Changes with Operating Point Specifications 4 Find the steady state operating point that meets these specifications. op = findop(sys,opspec) This command results in an error because the changes to your model are not reflected in your operating point specification object: ??? The model scdspeedctrl has been modified and the operating point object is out of date. Update the object by calling the function update on your operating point object. 5 Update the operating point specification object with changes to the model. Repeat the operating point search. opspec = update(opspec); op = findop(sys,opspec) bdclose(sys); 1-53 1 Steady-State Operating Points After updating the operating point specifications object, the optimization algorithm successfully finds the operating point. 1-54 2 Linearization • “Linearizing Nonlinear Models” on page 2-2 • “Specify Model Portion to Linearize” on page 2-11 • “Plant Linearization” on page 2-28 • “Open-Loop Response of Control System for Stability Margin Analysis” on page 2-32 • “Linearize at Model Operating Point” on page 2-38 • “Linearize at Trimmed Operating Point” on page 2-52 • “Linearize at Simulation Snapshots and Triggered Events” on page 2-57 • “Ordering States in Linearized Model” on page 2-76 • “Time-Domain Validation of Linearization” on page 2-81 • “Frequency-Domain Validation of Linearization” on page 2-85 • “Visualize Models” on page 2-91 • “Generate MATLAB Code for Repeated or Batch Linearization” on page 2-94 • “Troubleshooting Linearization” on page 2-96 • “Controlling Block Linearization” on page 2-112 • “Models with Pulse Width Modulation (PWM) Signals” on page 2-135 • “Specifying Linearization for Model Components Using System Identification” on page 2-137 • “Speeding Up Linearization of Complex Models” on page 2-144 • “Exact Linearization Algorithm” on page 2-146 2 Linearization Linearizing Nonlinear Models In this section... “What Is Linearization?” on page 2-2 “Applications of Linearization” on page 2-4 “Linearization in Simulink® Control Design™” on page 2-5 “Choosing Linearization Tools” on page 2-6 “Model Requirements for Exact Linearization” on page 2-9 “Operating Point Impact on Linearization” on page 2-10 What Is Linearization? Linearization is a linear approximation of a nonlinear system that is valid in a small region around the operating point. For example, suppose that the nonlinear function is y = x2 . Linearizing this nonlinear function about the operating point x=1, y=1 results in a linear function y = 2 x − 1 . Near the operating point, y = 2 x − 1 is a good approximation to y = x2 . Away from the operating point, the approximation is poor. The next figure shows a possible region of good approximation for the linearization of y = x2 . The actual region of validity depends on the nonlinear model. 2-2 Linearizing Nonlinear Models Extending the concept of linearization to dynamic systems, you can write continuous-time nonlinear differential equations in this form: x (t) f x(t), u(t), t y(t) g x(t), u(t), t . In these equations, x(t) represents the system states, u(t) represents the inputs to the system, and y(t) represents the outputs of the system. A linearized model of this system is valid in a small region around the operating point t=t0, x(t0)=x0, u(t0)=u0, and y(t0)=g(x0,u0,t0)=y0. To represent the linearized model, define new variables centered about the operating point: 2-3 2 Linearization δx(t) = x(t) − x0 δu(t) = u(t) − u0 δy(t) = y(t) − y0 The linearized model in terms of δx, δu, and δy is valid when the values of these variables are small: δx (t) = Aδx(t) + Bδu(t) δy(t) = Cδx(t) + Dδu(t) Examples and How To • “Linearize Simulink Model” on page 2-38 • “Plant Linearization” on page 2-28 • “Open-Loop Response of Control System for Stability Margin Analysis” on page 2-32 • “Visualize Bode Response of Simulink Model During Simulation” on page 2-42 More About • “Applications of Linearization” on page 2-4 • “Choosing Linearization Tools” on page 2-6 Applications of Linearization Linearization is useful in model analysis and control design applications. Exact linearization of the specified nonlinear Simulink model produces linear state-space, transfer-function, or zero-pole-gain equations that you can use to: • Plot the Bode response of the Simulink model. • Evaluate loop stability margins by computing open-loop response. • Analyze and compare plant response near different operating points. • Design linear controller 2-4 Linearizing Nonlinear Models Classical control system analysis and design methodologies require linear, time-invariant models. Simulink Control Design automatically linearizes the plant when you tune your compensator. See “Choosing a Compensator Design Approach” on page 4-2. • Analyze closed-loop stability. • Measure the size of resonances in frequency response by computing closed-loop linear model for control system. • Generate controllers with reduced sensitivity to parameter variations and modeling errors (requires Robust Control Toolbox™). Linearization in Simulink Control Design You can use Simulink Control Design to linearize continuous-time, discrete-time, or multirate Simulink models. The resulting linear time-invariant model is in state-space form. Simulink Control Design uses a block-by-block approach to linearize models, instead of using full-model perturbation. This block-by-block approach individually linearizes each block in your Simulink model and combines the results to produce the linearization of the specified system. The block-by-block linearization approach has several advantages to full-model numerical perturbation: • Most Simulink blocks have preprogrammed linearization that provides Simulink Control Design an exact linearization of each block at the operating point. • You can configure blocks to use custom linearizations without affecting your model simulation. See “Controlling Block Linearization” on page 2-112. • Simulink Control Design automatically removes nonminimal states. • Ability to specify linearization to be uncertain (requires Robust Control Toolbox) More About “Exact Linearization Algorithm” on page 2-146 2-5 2 Linearization Choosing Linearization Tools • “Choosing Simulink® Control Design™ Linearization Tools” on page 2-6 • “Choosing Exact Linearization Versus Frequency Response Estimation” on page 2-7 • “Linearization Using Simulink® Control Design™ Versus Simulink” on page 2-7 Choosing Simulink Control Design Linearization Tools Simulink Control Design lets you perform linear analysis of nonlinear models using a graphical user interface, functions, or blocks. Linearization Tool When to Use Linear Analysis Tool • Interactively explore Simulink model linearization under different operating conditions. • Diagnose linearization issues. • Automatically generate MATLAB code for batch linearization. MATLAB command-line interface • Batch linearize over multiple model configurations or operating points. • Linearize a Simulink model for command-line analysis of poles and zeros, plot responses, and control design. Linear Analysis Plots blocks • Visualize linear characteristics of your Simulink model during simulation. • View bounds on linear characteristics of your Simulink model on plots. • Optionally, check that the linear characteristics of your Simulink model satisfy specified bounds. 2-6 Linearizing Nonlinear Models Linearization Tool When to Use Note Linear Analysis Plots blocks do not support code generation. You can only use these blocks in Normal simulation mode. Choosing Exact Linearization Versus Frequency Response Estimation In most cases, you should use exact linearization instead of frequency response estimation to obtaining a linear approximation of a Simulink model. Exact linearization: • Is faster because it does not require simulation of the Simulink model. • Returns a parametric (state-space). Frequency response estimation returns frequency response data. To create a transfer function or a state-space model from the resulting frequency response data requires an extra step using System Identification Toolbox™ to fit a model. Use frequency response estimation: • To validate exact linearization accuracy. • When you Simulink model contains discontinuities or non-periodic event-based dynamics. • To study the impact of amplitude size on frequency response. See Describing Function Analysis of Nonlinear Simulink Models. Linearization Using Simulink Control Design Versus Simulink How is Simulink linmod different from Simulink Control Design functionality for linearizing nonlinear models? 2-7 2 Linearization Although both Simulink Control Design and Simulinklinmod perform block-by-block linearization, Simulink Control Design functionality is enhanced by a more flexible user interface and Control System Toolbox™ numerical algorithms. 2-8 Simulink Control Design Linearization Simulink Linearization Graphical-user interface Yes See “Linearize Simulink Model” on page 2-38. No Flexibility in defining which portion of the model to linearize Yes. Lets you specify linearization I/O points at any level of a Simulink model, either graphically or programmatically without having to modify your model. See “Linearize at Trimmed Operating Point” on page 2-52. No. Only root-level linearization I/O points, which is equivalent to linearizing the entire model. Requires that you add and configure additional Linearization Point blocks. Open-loop analysis Yes. Lets you open feedback loops without deleting feedback signals in the model. See “Open-Loop Response of Control System for Stability Margin Analysis” on page 2-32. Yes, but requires that you delete feedback signals in your model to open the loop Control linear model state ordering Yes See “Ordering States in Linearized Model” on page 2-76. No Control linearization of individual blocks Yes. Lets you specify custom linearization behavior for both blocks and subsystems. See “Controlling Block Linearization” on page 2-112. No Linearizing Nonlinear Models Simulink Control Design Linearization Simulink Linearization Linearization diagnostics Yes. Identifies problematic blocks and lets you examine the linearization value of each block. See “Linearization Troubleshooting Overview” on page 2-96. No Block detection and reduction Yes. Block reduction detects blocks that do not contribute to the overall linearization yielding a minimal realization. No Control of rate conversion algorithm for multirate models Yes No Model Requirements for Exact Linearization Exact linearization supports most Simulink blocks. However, Simulink blocks with strong discontinuities or event-based dynamics linearize (correctly) to zero or large (infinite) gain. Sources of event-based or discontinuous behavior exist in models that have Simulink Control Design requires special handling of models that include: • Blocks from Discontinuities library • Stateflow charts • Triggered subsystems • Pulse width modulation (PWM) signals For most applications, the states in your Simulink model should be at steady state. Otherwise, your linear model is only valid over a small time interval. More About “Exact Linearization Algorithm” on page 2-146 2-9 2 Linearization Operating Point Impact on Linearization Choosing the right operating point for linearization is critical for obtaining an accurate linear model. The linear model is an approximation of the nonlinear model that is valid only near the operating point at which you linearize the model. Although you specify which Simulink blocks to linearize, all blocks in the model affect the operating point. A nonlinear model can have two very different linear approximations when you linearize about different operating points. The linearization result for this model is shown next, with the initial condition for the integration x0 = 0. This table summarizes the different linearization results for two different operating points. 2-10 Operating Point Linearization Result Initial Condition = 5, State x1 = 5 30/s Initial Condition = 0, State x1 = 0 0 Specify Model Portion to Linearize Specify Model Portion to Linearize In this section... “Specifying Subsystem, Loop, or Block to Linearize” on page 2-11 “Opening Feedback Loops” on page 2-12 “Ways to Specify Portion of Model to Linearize” on page 2-14 “Specify Portion of Model to Linearize in Simulink Model” on page 2-14 “Specify Portion of Model to Linearize in Linear Analysis Tool” on page 2-16 “Edit Portion of Model to Linearize in Linear Analysis Tool” on page 2-21 “Select Bus Elements as Linear Analysis Points” on page 2-23 Specifying Subsystem, Loop, or Block to Linearize Simulink Control Design lets you specify the subsystem, loop, or block to linearize using linearization input and output points (linearization I/O points). A linearization input point defines the input signal to the linear model. A linearization output point defines the output signal of the linear model. You can linearize: • Closed or open loop responses using a linearization input point on the input signal to the portion of the model you want to linearize, and a linearization output point at the output signal of that portion of the model. • Specific subsystem or block. In this case, linearization I/O points are the input and output signals corresponding to the subsystem or block. You can define other linear models using additional types of linear analysis points: • Input-Output Point — Linearization output point immediately follows a linearization input point. This type of linearization I/O point is useful for measuring sensitivity to output disturbances. 2-11 2 Linearization • Output-Input Point — Linearization input point immediately follows a linearization output point. This type of linearization I/O point is useful for robust control. You can use the resulting transfer function in the mu analysis of your system. Linearization I/O points are pure annotations and do not impact model simulation. More About “Ways to Specify Portion of Model to Linearize” on page 2-14 Opening Feedback Loops If your model contains one or more feedback loops, you can choose to linearize an open-loop or a closed-loop system. Simulink Control Design lets you remove the effects of the feedback loop by inserting an open loop point without having to manually break signal lines. In fact, for nonlinear models, do not open the loop by manually removing the feedback signal from the model; this action changes the model operating point and produces a different linear model. Note If a model is already linear, it has the same form regardless of the operating point. Correct placement of the loop opening is critical to obtaining the right linear model. For example, you might want to linearize only the plant model in a feedback control loop. To understand the difference between open-loop and closed-loop analysis, consider this single-loop control system. 2-12 Specify Model Portion to Linearize Suppose you want to linearize the plant, P, about an equilibrium operating point of the model. To linearize only the plant P, you must open the loop at the output of the P block. If you do not open the loop, and if C and P are linear, the linearized P ( s) model between U and Y is 1+C( s) P ( s) . The loop opening does not need to be in the same location as the linearization input or output point. For example, the next figure shows a loop opening after the gain on the outer feedback loop, which removes the effect of this loop from the linearization. To check whether you correctly excluded the feedback signal, linearize the model and highlight the blocks included in the linearization. 2-13 2 Linearization In this example, placing a loop opening at the same location as the linearization output point also removes the effect of the inner loop from the linearization. More About • “Ways to Specify Portion of Model to Linearize” on page 2-14 • “Highlighting Linearized Blocks” on page 2-103 Ways to Specify Portion of Model to Linearize There are several ways to specify linearization inputs, outputs, and loop-opening locations (linear analysis points or linearization I/O sets) that define the portion of the model you want to linearize. Each method has its own advantages. You can: • Specify linearization I/O points and loop openings directly in the model. An advantage of this method is that the locations of linearization I/O points and loop openings are shown graphically in the model. However, specifying linearization I/O sets this way changes the model. • Interactively define linearization I/O sets using the Linear Analysis Tool. The Create linearization I/O set dialog box in the Linear Analysis Tool allows you to define one or more I/O sets for your model interactively. This approach does not make changes to the model. • Define linearization I/O sets at the command line using linio. This method also allows you to define one or more I/O sets without changing the model. Specify Portion of Model to Linearize in Simulink Model To specify linearization I/O points and loop openings directly in your Simulink model: 1 Right-click on the signal you want to define as a linearization input point or output point. This action opens a context menu on the signal. 2 Hover the cursor over Linear Analysis Points in the context menu. 2-14 Specify Model Portion to Linearize A submenu appears listing types of linear analysis points. 3 Select the type of linear analysis point you want to define at the signal. For example, to specify that the signal is a linearization input point, select Input Point. 4 To insert an open loop point at the signal, select Linear Analysis Points > Open Loop from the context menu. 2-15 2 Linearization When you specify linearization inputs and outputs or loop openings, markers appear in your model indicating the linear analysis point type. 5 Repeat steps 2–4 for all signals you want to define as linearization I/O points or open loop points. Specifying linear analysis points using the context menu changes the model (makes the model “dirty”). More About • “Specifying Subsystem, Loop, or Block to Linearize” on page 2-11 • “Opening Feedback Loops” on page 2-12 • “Ways to Specify Portion of Model to Linearize” on page 2-14 Specify Portion of Model to Linearize in Linear Analysis Tool You use linearization inputs, outputs, and loop-opening locations (linearization I/O sets) to specify which portion of the model to linearize. You can specify one or more linearization I/O sets interactively in the Linear Analysis Tool, without introducing changes to the model. To access the Create linearization I/O set dialog box: 1 Click the Exact Linearization or Frequency Response Estimation tab. 2-16 Specify Model Portion to Linearize 2 From the Analysis I/Os drop-down list, select Create new linearization I/Os. The Create linearization I/O set dialog box opens. Create Linearization I/O Set To create a new linearization I/O set: 1 In your Simulink model, select a signal that you want to define as a linearization input or output point. The selected signal appears in the Create linearization I/O set dialog box under Currently selected signals. 2-17 2 Linearization 2 In the Create linearization I/O set dialog box, click the signal name under Currently selected signals. 3 Click Add. The signal appears in the list of Analysis I/Os. 4 Select the linearization point type from the Configuration drop-down list. For example, if you want the selected signal to be a linearization output point, select Output. 5 If you want the signal to be a loop opening point, click the Open Loop check box. 2-18 Specify Model Portion to Linearize 6 Repeat steps 1–5 for any other signals you want to define as linearization I/O points. Tip To highlight in the Simulink model the blocks that are included in the linearization specified by the current list of Analysis I/Os, click Highlight. 7 After you define all the signals for the I/O set, enter a name for the I/O set in the Variable name box. 8 Click OK. The Create linearization I/O set dialog box closes. A new linearization I/O set appears in the Linear Analysis Workspace of the Linear Analysis Tool. The new linearization I/O set displays the name you specified. 2-19 2 Linearization The newly created linearization I/O set is automatically selected in the Analysis I/Os menu for either the Exact Linearization or Frequency Response Estimation tab, depending on which you selected originally. 2-20 Specify Model Portion to Linearize Creating linearization I/O sets in the Linear Analysis Tool does not change the Simulink model. You can create multiple I/O sets for a single model. More About • “Specifying Subsystem, Loop, or Block to Linearize” on page 2-11 • “Opening Feedback Loops” on page 2-12 • “Ways to Specify Portion of Model to Linearize” on page 2-14 Edit Portion of Model to Linearize in Linear Analysis Tool You can interactively edit a linearization I/O set stored in the Linear Analysis Workspace using the Linear Analysis Tool Edit dialog box. Open Edit Dialog Box To open the Edit dialog box for editing a linearization set, either: • In the Linear Analysis Workspace, double-click the I/O set. • Click either the Exact Linearization or Frequency Response Estimation tab. If the I/O set is selected in the Analysis I/Os menu, click the edit icon next to the Analysis I/Os menu. Either of these actions opens the I/O set edit dialog box for the linearization I/O set. You can now edit the I/O set as needed. When you have finished editing, click to close the dialog box and save your changes. Tip To highlight in the Simulink model the blocks that are included in the linearization specified by the current list of Analysis I/Os, click Highlight. Add Signal to I/O Set To add a linearization input point, output point, or loop opening to the linearization I/O set: 2-21 2 Linearization 1 In your Simulink model, select a signal that you want to add to the linearization I/O set. The selected signal appears in the Create linearization I/O set dialog box under Currently selected signals. 2 In the Create linearization I/O set dialog box, click the signal name under Currently selected signals. 3 Click Add. The signal appears in the list of Analysis I/Os. 4 Select the linear analysis point type from the Configuration drop-down list. For example, if you want the selected signal to be a linearization output point, select Output. 5 If you want the signal to be a loop opening point, click the Open Loop check box. Remove Signal from I/O Set To remove a linearization input point, output point, or loop opening from the linearization I/O set: 1 Select the signal in the list of Analysis I/Os. 2 Click Delete to remove the signal from the linearization I/O set. 2-22 Specify Model Portion to Linearize Change Linear Analysis Point Type To change the type of linear analysis point type for a signal, locate the signal in the list of Analysis I/Os. Then, use the Configuration drop-down list and the Open Loop check box for the signal to define the type of linear analysis point. For example, if you want the signal to be a linearization output point, select Output from the Configuration drop-down list. If you want the signal not to be an open loop point, verify that the Open Loop check box is cleared. Select Bus Elements as Linear Analysis Points This example shows how to select individual elements in a bus signal as linearization input/output (I/O) points. Linearization I/O points define the portion of the model to linearize. Code Alternative Use linio to specify model signals as linearization I/O points and loop openings. For examples and additional information, see the linio reference page. 1 Open Simulink model. sys = 'sldemo_mdlref_bus'; open_system(sys) 2 In the Simulink Editor, define portion of the model to linearize: a Right-click the COUNTERBUS signal, and select Linear Analysis Points > Select Bus Element. This option appears only if Mux blocks used to create bus signals in the Configuration Parameters > Diagnostics > Connectivity pane is error. Otherwise, right-clicking the bus signal lets you specify all elements in the bus as linearization input or output points. The Select Linearization Points in the Bus dialog box opens, which shows signals contained in the COUNTERBUS bus signal. 2-23 2 Linearization b In the Bus Hierarchy area, expand the bus named limits. Then, select upper_saturation_limit. 2-24 Specify Model Portion to Linearize Tip For large buses, you can enter search text for filtering element names in the Filter by name edit box. The name match is case-sensitive. Additionally, you can enter a MATLAB regular expression. To modify the filtering options, click edit box. adjacent to the Filter by name Filtering Options • Enable regular expression MATLAB regular expression for filtering signal names. For example, entering t$ displays all signals whose names end with a lowercase t (and their immediate parents). • Show filtered results as a flat list Flat list format to display the list of filtered signals. By default, filtered signals are displayed using a tree format. The flat list format uses dot notation to reflect the hierarchy of bus signals. a Click Add. The selected signal now appears in the Linearization Inputs/Outputs area, and is configured as a linearization input point. 2-25 2 Linearization Click OK. b Right-click the OUTPUTBUS signal, and select Linear Analysis Points > Select Bus Element. c In the Bus Hierarchy area, expand the bus named limits, and select upper_saturation_limit. d Click Add to add the selected signal to the Linearization Inputs/Outputs area. e Select Output in the Configuration column. Click OK. Tip In the Simulink Editor, select Display > Signals & Ports > Linearization Indicators to view the linearization I/O markers. 2-26 Specify Model Portion to Linearize You can select multiple elements in the same bus with different I/O types. The marker appears on the bus signal to indicate multiple bus element selections with different I/O types. 3 In the Simulink Editor, select Analysis > Control Design > Linear Analysis. The Linear Analysis Tool for the model opens. Click the Exact Linearization tab. Click adjacent to the Analysis I/Os list to see the bus elements selected as linearization I/O points. 4 In the Exact Linearization tab, click to linearize the model using the model initial condition as the operating point. Related Examples • “Linearize Simulink Model” on page 2-38 • “Plant Linearization” on page 2-28 • “Open-Loop Response of Control System for Stability Margin Analysis” on page 2-32 2-27 2 Linearization Plant Linearization This example shows how to use the Linear Analysis Tool to linearize a plant subsystem at the model operating point. The model operating point consists of the model initial state values and input signals. Use this simpler approach instead of defining linearization I/O points when the plant is a subsystem or a block. Code Alternative Use linearize. For examples and additional information, see the linearize reference page. 1 Open a Simulink model. sys = 'watertank'; open_system(sys) 2 Open the Linear Analysis Tool. In the Simulink model window, right-click the Water-Tank System block and select Linear Analysis > Linearize Block. 3 View the block selected for linearization. Click adjacent to the Analysis I/Os drop-down menu. The Water Tank System block is highlighted. 4 In the Plot Result drop-down menu, select New Bode. 2-28 Plant Linearization 5 Linearize the plant. Click . The Bode plot of the linearized plant appears. 2-29 2 Linearization The linearization result, linsys1, appears in the Linear Analysis Workspace. 6 View the resulting linear plant model. In the Linear Analysis tab, choose linsys1 from the Select Result list. In the Select Report list, choose Show result details. The Linearization results dialog box for linsys1 opens. Tip Drag and drop linsys1 from the Linear Analysis Workspace to the MATLAB Workspace to export it to the base workspace for further analysis. 2-30 Plant Linearization 7 Close the Simulink model. bdclose(sys); Related Examples • “Linearize Simulink Model” on page 2-38 • “Open-Loop Response of Control System for Stability Margin Analysis” on page 2-32 • “Visualize Bode Response of Simulink Model During Simulation” on page 2-42 2-31 2 Linearization Open-Loop Response of Control System for Stability Margin Analysis In this section... “What Is Open-Loop Response?” on page 2-32 “Compute Open-Loop Response” on page 2-33 What Is Open-Loop Response? Open-loop response is the combined response of the plant and the controller, excluding the effect of the feedback loop. For example, the next block diagram shows a single-loop control system. +- C(s) P(s) Open-loop response corresponds to the linear response of the plant and the controller. If C(s) and P(s) are linear, the corresponding linear systems is C(s)P(s). C(s)P(s) In Simulink Control Design, the linearization I/O points and the loop opening that correspond to open-loop response look something like this: 2-32 Open-Loop Response of Control System for Stability Margin Analysis However, if there is no loop opening at the output of Water-Tank System block, the resulting linear model is different: P(s) 1 + C(s)P(s) Compute Open-Loop Response This example shows how to use the Linear Analysis Tool to analyze the open-loop response of a control system. Compute a linear model of the combined controller-plant system without the effects of the feedback signal. Use a Bode plot of the resulting linear model to see the open-loop response. 1 Open Simulink model. sys = 'watertank'; open_system(sys) The Water-Tank System block represents the plant in this control system and contains all of the system nonlinearities. 2-33 2 Linearization 2 Open the Linear Analysis Tool for the model. In the Simulink Editor, select Analysis > Control Design > Linear Analysis. 3 In the Simulink Editor, define the portion of the model to linearize: a Right-click the PID Controller block input signal (the output of the Sum block). Select Linear Analysis Points > Input Point. b Right-click the Water-Tank System output signal, and select Linear Analysis Points > Output Point. c Right-click the Water-Tank System output signal and select Linear Analysis Points > Open Loop. Annotations appear in the model indicating which signals are designated as linearization I/O points. Tip Alternatively, if you do not want to introduce changes to the Simulink model, you can specify the linearization I/O points in the Linear Analysis Tool. See “Specify Portion of Model to Linearize in Linear Analysis Tool” on page 2-16. 2-34 Open-Loop Response of Control System for Stability Margin Analysis 4 In the Plot Result list of the Linear Analysis Tool, select New Bode. 5 Linearize the model. Click . The Bode plot of the open-loop response appears. 6 View the minimum stability margins for the model. Right-click the plot and select Characteristics > Minimum Stability Margins. 2-35 2 Linearization The Bode plot displays the phase margin marker. Click the marker to show a data tip that contains the phase margin value. 2-36 Open-Loop Response of Control System for Stability Margin Analysis 7 Close Simulink model. bdclose(sys); Related Examples • “Linearize Simulink Model” on page 2-38 • “Plant Linearization” on page 2-28 • “Visualize Bode Response of Simulink Model During Simulation” on page 2-42 2-37 2 Linearization Linearize at Model Operating Point In this section... “Linearize Simulink Model” on page 2-38 “Visualize Bode Response of Simulink Model During Simulation” on page 2-42 Linearize Simulink Model This example shows how to use the Linear Analysis Tool to linearize a model at the operating point specified in the model. The model operating point consists of the model initial state values and input signals. Code Alternative Use linearize. For examples and additional information, see the linearize reference page. 1 Open Simulink model. sys = 'watertank'; open_system(sys) The Water-Tank System block represents the plant in this control system and includes all of the system nonlinearities. 2 Open the Linear Analysis Tool for the model. In the Simulink Editor, select Analysis > Control Design > Linear Analysis. 2-38 Linearize at Model Operating Point 3 In the Simulink Editor, define the portion of the model to linearize: a Right-click the PID Controller block output signal, which is the input to the plant. Select Linear Analysis Points > Input Point. b Right-click the Water-Tank System output signal, and select Linear Analysis Points > Output Point. 4 Right-click the Water-Tank System output signal and select Linear Analysis Points > Open Loop. Inserting this open loop point removes the effects of the feedback signal on the linearization without changing the model operating point. When you add linear analysis points, marker appear at their locations in the model. Tip Alternatively, if you do not want to introduce changes to the Simulink model, you can specify the linearization I/O points in the Linear Analysis Tool. See “Specify Portion of Model to Linearize in Linear Analysis Tool” on page 2-16. 5 In the Plot Result list, select a visualization. For example, select New Bode. 2-39 2 Linearization 6 Linearize the model. Click . The Bode plot of the linearized system appears. 2-40 Linearize at Model Operating Point The linearized system, linsys1 appears in the Linear Analysis Workspace. 7 Close Simulink model. bdclose(sys); Related Examples • “Plant Linearization” on page 2-28 2-41 2 Linearization • “Open-Loop Response of Control System for Stability Margin Analysis” on page 2-32 • “Visualize Bode Response of Simulink Model During Simulation” on page 2-42 Visualize Bode Response of Simulink Model During Simulation This example shows how to visualize linear system characteristics of a nonlinear Simulink model during simulation, computed at the model operating point (simulation snapshot time of 0). 1 Open Simulink model. For example: watertank 2 Open the Simulink Library Browser by selecting View > Library Browser in the model window. 3 Add a plot block to the Simulink model. a In the Simulink Control Design library, select Linear Analysis Plots. b Drag and drop a block, such as the Bode Plot block, into the model window. The model now resembles the following figure. 2-42 Linearize at Model Operating Point 4 Double-click the block to open the Block Parameters dialog box. 2-43 2 Linearization To learn more about the block parameters, see the block reference pages. 5 Specify the linearization I/O points. 2-44 Linearize at Model Operating Point Tip If your model already contains I/O points, the block automatically detects these points and displays them. a To specify an input: i Click adjacent to the Linearization inputs/outputs table. The Block Parameters dialog expands to display a Click a signal in the model to select it area. ii In the Simulink model, click the output signal of the PID Controller block to select it. The Click a signal in the model to select it area updates to display the selected signal. 2-45 2 Linearization iii Click table. to add the signal to the Linearization inputs/outputs b To specify an output: iv In the Simulink model, click the output signal of the Water-Tank System block to select it. The Click a signal in the model to select it area updates to display the selected signal. v Click table. 2-46 to add the signal to the Linearization inputs/outputs Linearize at Model Operating Point vi In the Configuration drop-down list of the Linearization inputs/outputs table, select Output for watertank/Water-Tank System : 1. vii Select the Open Loop option for watertank/Water-Tank System : 1. The Linearization inputs/outputs table now resembles the following figure. c Click to collapse the Click a signal in the model to select it area. Tip Alternatively, before you add the Linear Analysis Plots block, right-click the signals in the Simulink model and select Linear Analysis Points > Input Points and Linear Analysis Points > Output Points. Linearization I/O annotations appear in the model and the selected signals appear in the Linearization inputs/outputs table. 6 Save the linear system. 2-47 2 Linearization a Select the Logging tab. b Select the Save data to workspace option, and specify a variable name in the Variable name field. The Logging tab now resembles the following figure. 7 Click Show Plot to open an empty plot. 2-48 Linearize at Model Operating Point 8 Plot the linear system characteristics by clicking in the plot window. Alternatively, you can simulate the model from the model window. The software linearizes the portion of the model between the linearization input and output at the default simulation time of 0, specified in Snapshot times parameter in the Block Parameters dialog box, and plots the Bode magnitude and phase. After the simulation completes, the plot window resembles the following figure. 2-49 2 Linearization The computed linear system is saved as sys in the MATLAB workspace. sys is a structure with time and values fields. To view the structure, type: sys This command returns the following results: sys = time: 0 values: [1x1 ss] blockName: 'watertank/Bode Plot' • The time field contains the default simulation time at which the linear system is computed. • The values field is a state-space object which stores the linear system computed at simulation time of 0. To learn more about the properties of state-space objects, see ss in the Control System Toolbox documentation. 2-50 Linearize at Model Operating Point Examples and How To • “Visualize Linear System at Multiple Simulation Snapshots” on page 2-64 • “Visualize Linear System at Trigger-Based Simulation Events” on page 2-75 • “Visualize Linear System of a Continuous-Time Model Discretized During Simulation” on page 2-70 2-51 2 Linearization Linearize at Trimmed Operating Point This example shows how to use the Linear Analysis Tool to linearize a model at a trimmed steady-state operating point (equilibrium operating point). The operating point is trimmed by specifying constraints on the operating point values, and performing an optimization search that meets these state and input value specifications. Code Alternative Use linearize. For examples and additional information, see the linearize reference page. 1 Open the Simulink model. sys = 'magball'; open_system(sys) 2 Open the Linear Analysis Tool for the model. In the Simulink model window, select Analysis > Control Design > Linear Analysis. 3 In the Simulink model window, define the portion of the model to linearize for this linearization task: a Right-click the Controller block output signal (input signal to the plant). Select Linear Analysis Points > Input Point. b Right-click the Magnetic Ball Plant output signal, and select Linear Analysis Points > Output Point. 2-52 Linearize at Trimmed Operating Point c Right-click the Magnetic Ball Plant output signal again, and select Linear Analysis Points > Open Loop. Annotations appear in the model indicating which signals are designated as linearization I/O points. Tip Alternatively, if you do not want to introduce changes to the Simulink model, you can specify the linearization I/O points in the Linear Analysis Tool. See “Specify Portion of Model to Linearize in Linear Analysis Tool” on page 2-16. 4 In the Linear Analysis Tool, select Trim model, in the Operating Point list. Click Specifications. By default, all model states are specified to be at equilibrium (as shown in the Steady State column). 2-53 2 Linearization 5 In the States tab, select Known for the height state. The height of the ball should match the reference signal height. This height value should remain fixed during the optimization. 6 Enter 0 for the minimum bound of the Current block state. 2-54 Linearize at Trimmed Operating Point 7 Compute the operating point. Click . A new variable, op_trim1, appears in the Linear Analysis Workspace. 8 Select the operating point to be used for linearization. In the Exact Linearization tab, select op_trim1 from the Operating Point list. 2-55 2 Linearization 9 Linearize the model at the specified operating point. Click . Related Examples “Steady-State Operating Points (Trimming) from Specifications” on page 1-14 2-56 Linearize at Simulation Snapshots and Triggered Events Linearize at Simulation Snapshots and Triggered Events In this section... “Linearize at Simulation Snapshot” on page 2-57 “Linearize at Triggered Simulation Events” on page 2-60 “Visualize Linear System at Multiple Simulation Snapshots” on page 2-64 “Visualize Linear System of a Continuous-Time Model Discretized During Simulation” on page 2-70 “Visualize Linear System at Trigger-Based Simulation Events” on page 2-75 Linearize at Simulation Snapshot This example shows how to use the Linear Analysis Tool to linearize a model by simulating the model and extracting the state and input levels of the system at specified simulation times. Code Alternative Use linearize. For examples and additional information, see the linearize reference page. 1 Open the Simulink model. sys = 'watertank'; open_system(sys) 2 Open the Linear Analysis Tool for the model. 2-57 2 Linearization In the Simulink model window, select Analysis > Control Design > Linear Analysis. 3 In the Simulink model window, define the portion of the model to linearize: • Right-click the PID Controller block output signal (input signal to the plant model). Select Linear Analysis Points > Input Point. • Right-click the Water-Tank System output signal, and select Linear Analysis Points > Output Point. • Right-click the Water-Tank System output signal, and select Linear Analysis Points > Open Loop. 4 In the Linear Analysis Tool, select Take simulation snapshot in the Operating Point list. 5 In the Simulation Snapshot Times field, enter 10 to extract the operating point at this simulation time. 6 Take a snapshot of the system at the specified time. Click . The operating point op_snapshot1 appears in the Linear Analysis Workspace. 2-58 Linearize at Simulation Snapshots and Triggered Events Tip To linearize the model at several operating points, specify a vector of simulation times in the Simulation Snapshot Times field. For example, entering [1 10] results in two linear models, one linearized at t = 1 and the other at t = 10. 7 In the Exact Linearization tab, select op_snapshot1 in the Operating Point list. 8 In the Plot Result list, select a visualization. Select New Bode. 9 Linearize the model. Click . The Bode plot of the linearized system appears. This Bode plot looks like a stable first-order response, as expected. 2-59 2 Linearization 10 Double click linsys1 in the Linear Analysis Workspace to see the state space representation of the linear model. 11 Close Simulink model. bdclose(sys); Related Examples • “Linearize at Triggered Simulation Events” on page 2-60 • “Visualize Linear System at Multiple Simulation Snapshots” on page 2-64 • “Visualize Linear System of a Continuous-Time Model Discretized During Simulation” on page 2-70 • “Visualize Linear System at Trigger-Based Simulation Events” on page 2-75 Linearize at Triggered Simulation Events This example shows how to use the Linear Analysis Tool to linearize a model at specific events in time. Linearization events can be trigger-based events 2-60 Linearize at Simulation Snapshots and Triggered Events or function-call events. Specifically, the model will be linearized at the steady-state operating points 2500, 3000, and 3500 rpm. 1 Open Simulink model. sys = 'scdspeedtrigger'; open_system(sys) To help identify when the system is at steady state, the Generate settling time events block generates settling events. This block sends rising edge trigger signals to the Operating Point Snapshot block when the engine speed settles near 2500, 3000, and 3500 rpm for a minimum of 5 seconds. 2-61 2 Linearization The model already includes the Trigger-Based Operating Point Snapshot block from the Simulink Control Design library. This block linearizes the model when it receives rising edge trigger signals from the Generate settling time events block. 2 Compute the steady-state operating point at 60 time units. op = findop(sys,60); This command simulates the model for 60 time units, and extracts the operating points at each simulation event that occurs during this time interval. 3 Define the portion of the model to linearize. io(1) = linio('scdspeedtrigger/Reference Steps',1,'in'); io(2) = linio('scdspeedtrigger/rad//s to rpm',1,'out'); 2-62 Linearize at Simulation Snapshots and Triggered Events 4 Linearize the model. linsys = linearize(sys,op(1:3),io); 5 Compare linearized models at 500, 3000, and 3500 rpm using Bode plots of the closed-loop transfer functions. bode(linsys); Related Examples • “Linearize at Simulation Snapshot” on page 2-57 • “Visualize Linear System at Multiple Simulation Snapshots” on page 2-64 • “Visualize Linear System of a Continuous-Time Model Discretized During Simulation” on page 2-70 • “Visualize Linear System at Trigger-Based Simulation Events” on page 2-75 2-63 2 Linearization Visualize Linear System at Multiple Simulation Snapshots This example shows how to visualize linear system characteristics of a nonlinear Simulink model at multiple simulation snapshots. 1 Open Simulink model. For example: watertank 2 Open the Simulink Library Browser by selecting View > Library Browser in the model window. 3 Add a plot block to the Simulink model. a In the Simulink Control Design library, select Linear Analysis Plots. b Drag and drop a block, such as the Gain and Phase Margin Plot block, into the Simulink model window. The model now resembles the following figure. 4 Double-click the block to open the Block Parameters dialog box. To learn more about the block parameters, see the block reference pages. 2-64 Linearize at Simulation Snapshots and Triggered Events 5 Specify the linearization I/O points. Tip If your model already contains I/O points, the block automatically detects these points and displays them. a To specify an input: i Click adjacent to the Linearization inputs/outputs table. The Block Parameters dialog expands to display a Click a signal in the model to select it area. ii In the Simulink model, click the output signal of the PID Controller block to select it. The Click a signal in the model to select it area updates to display the selected signal. 2-65 2 Linearization iii Click table. to add the signal to the Linearization inputs/outputs b To specify an output: iv In the Simulink model, click the output signal of the Water-Tank System block to select it. The Click a signal in the model to select it area updates to display the selected signal. v Click table. 2-66 to add the signal to the Linearization inputs/outputs Linearize at Simulation Snapshots and Triggered Events vi In the Configuration drop-down list of the Linearization inputs/outputs table, select Output for watertank/Water-Tank System : 1. vii Select the Open Loop option for watertank/Water-Tank System : 1. The Linearization inputs/outputs table now resembles the following figure. c Click to collapse the Click a signal in the model to select it area. Tip Alternatively, before you add the Linear Analysis Plots block, right-click the signals in the Simulink model and select Linear Analysis Points > Input Points and Linear Analysis Points > Output Points. Linearization I/O annotations appear in the model and the selected signals appear in the Linearization inputs/outputs table. 6 Specify simulation snapshot times. 2-67 2 Linearization a In the Linearizations tab, verify that Simulation snapshots is selected in Linearize on. b In the Snapshot times field, type [0 1 5]. 7 Specify a plot type to plot the gain and phase margins. The plot type is Bode by default. a Select Nichols in Plot type b Click Show Plot to open an empty Nichols plot. 8 Save the linear system. a Select the Logging tab. b Select the Save data to workspace option and specify a variable name in the Variable name field. The Logging tab now resembles the following figure. 9 Plot the gain and phase margins by clicking 2-68 in the plot window. Linearize at Simulation Snapshots and Triggered Events The software linearizes the portion of the model between the linearization input and output at the simulation times of 0, 1 and 5 and plots gain and phase margins. After the simulation completes, the plot window resembles the following figure. Tip Click to view the legend. The computed linear system is saved as sys in the MATLAB workspace. sys is a structure with time and values fields. To view the structure, type: sys This command returns the following results: 2-69 2 Linearization sys = time: [3x1 double] values: [4-D ss] blockName: 'watertank/Gain and Phase Margin Plot' • The time field contains the simulation times at which the model is linearized. • The values field is an array of state-space objects which store the linear systems computed at the specified simulation times. Examples and How To • “Visualize Bode Response of Simulink Model During Simulation” on page 2-42 • “Visualize Linear System at Trigger-Based Simulation Events” on page 2-75 • “Visualize Linear System of a Continuous-Time Model Discretized During Simulation” on page 2-70 • “Linearize at Simulation Snapshot” on page 2-57 • “Linearize at Triggered Simulation Events” on page 2-60 Visualize Linear System of a Continuous-Time Model Discretized During Simulation This example shows how to discretize a continuous-time model during simulation and plot the model’s discretized linear behavior. 1 Open the Simulink model: scdcstr 2-70 Linearize at Simulation Snapshots and Triggered Events In this model, the Bode Plot block has already been configured with: • Input point at the coolant temperature input Coolant Temp • Output point at the residual concentration output CA • Settings to linearize the model on a rising edge of an external trigger. The trigger signal is modeled in the Linearization trigger signal block in the model. • Saving the computed linear system in the MATLAB workspace as LinearReactor. To view these configurations, double-click the block. 2-71 2 Linearization To learn more about the block parameters, see the block reference pages. 2 Specify the sample time to compute the discrete-time linear system. a Click adjacent to Algorithm Options. The option expands to display the linearization algorithm options. 2-72 Linearize at Simulation Snapshots and Triggered Events b Specify a sample time of 2 in the Linear system sample time field. To learn more about this option, see the block reference page. 3 Click Show Plot to open an empty Bode plot window. 4 Plot the Bode magnitude and phase by clicking in the plot window. During simulation, the software: • Linearizes the model on encountering a rising edge. • Converts the continuous-time model into a discrete-time linear model with a sample time of 2. This conversion uses the default Zero-Order Hold method to perform the sample time conversion. The software plots the discrete-time linear behavior in the Bode plot window. After the simulation completes, the plot window resembles the following figure. 2-73 2 Linearization The plot shows the Bode magnitude and phase up to the Nyquist frequency, which is computed using the specified sample time. The vertical line on the plot represents the Nyquist frequency. Examples and How To • “Visualize Bode Response of Simulink Model During Simulation” on page 2-42 • “Visualize Linear System at Multiple Simulation Snapshots” on page 2-64 • “Visualize Linear System at Trigger-Based Simulation Events” on page 2-75 • “Linearize at Simulation Snapshot” on page 2-57 • “Linearize at Triggered Simulation Events” on page 2-60 2-74 Linearize at Simulation Snapshots and Triggered Events Visualize Linear System at Trigger-Based Simulation Events Plotting Linear System Characteristics of a Chemical Reactor shows how to plot the Bode magnitude and phase of a reactor. The reactor transitions through different operating points corresponding to trigger-based simulation events. Examples and How To • “Visualize Bode Response of Simulink Model During Simulation” on page 2-42 • “Visualize Linear System at Multiple Simulation Snapshots” on page 2-64 • “Visualize Linear System of a Continuous-Time Model Discretized During Simulation” on page 2-70 • “Linearize at Simulation Snapshot” on page 2-57 • “Linearize at Triggered Simulation Events” on page 2-60 2-75 2 Linearization Ordering States in Linearized Model In this section... “Control State Order of Linearized Model using Linear Analysis Tool” on page 2-76 “Control State Order of Linearized Model using MATLAB Code” on page 2-79 Control State Order of Linearized Model using Linear Analysis Tool This example shows how to control the order of the states in your linearized model. This state order appears in linearization results. 1 Open and configure the model for linearization. sys = 'magball'; open_system(sys) sys_io(1)=linio('magball/Controller',1,'in'); sys_io(2)=linio('magball/Magnetic Ball Plant',1,'out','on'); setlinio(sys,sys_io); opspec = operspec(sys); op = findop(sys,opspec); These commands specify the plant linearization and compute the steady-state operating point. 2 Open the Linear Analysis Tool for the model. In the Simulink model window, select Analysis > Control Design > Linear Analysis. 3 Open the Options for exact linearization dialog box. In the Exact Linearization tab, click Options. 2-76 Ordering States in Linearized Model 4 In the State Ordering tab, select the Enable state ordering check box. 5 Specify the desired state order using the Move Up and Move Down buttons. Tip If you change the model while its Linear Analysis Tool is open, click Sync with Model to update the list of states. 2-77 2 Linearization 6 Linearize the model. In the Linear Analysis Tool, click . A new linearized model, linsys1, appears in the Linear Analysis Workspace. 7 View the order of the model states for the linearized model by opening the Linearization result dialog box. Click the Linear Analysis tab. Choose Show result details in the Select Report list. 2-78 Ordering States in Linearized Model The linear model states appear in the specified order. Control State Order of Linearized Model using MATLAB Code This example shows how to control the order of the states in your linearized model. This state order appears in linearization results. 1 Load and configure the model for linearization. sys = 'magball'; load_system(sys); sys_io(1)=linio('magball/Controller',1,'in'); sys_io(2)=linio('magball/Magnetic Ball Plant',1,'out','on'); opspec = operspec(sys); op = findop(sys,opspec); These commands specify the plant linearization and compute the steady-state operating point. 2-79 2 Linearization 2 Linearize the model, and show the linear model states. linsys = linearize(sys,sys_io); linsys.StateName The linear model states are in default order. The linear model includes only the states in the linearized blocks, and not the states of the full model. ans = 'height' 'Current' 'dhdt' 3 Define a different state order. stateorder = {'magball/Magnetic Ball Plant/height';... 'magball/Magnetic Ball Plant/dhdt';... 'magball/Magnetic Ball Plant/Current'}; 4 Linearize the model again and show the linear model states. linsys = linearize(sys,sys_io,'StateOrder',stateorder); linsys.StateName The linear model states are now in the specified order. ans = 'height' 'dhdt' 'Current' 2-80 Time-Domain Validation of Linearization Time-Domain Validation of Linearization In this section... “Validate Linearization in Time Domain” on page 2-81 “Choosing Time-Domain Validation Input Signal” on page 2-83 Validate Linearization in Time Domain This example shows how to validate linearization results by comparing the simulated output of the nonlinear model and the linearized model. 1 Linearize Simulink model. For example: sys = 'watertank'; load_system(sys); sys_io(1)=linio('watertank/PID Controller',1,'in'); sys_io(2)=linio('watertank/Water-Tank System',1,'out','on'); opspec = operspec(sys); op = findop(sys,opspec); linsys = linearize(sys,op,sys_io); If you linearized your model in the Linear Analysis Tool, you must export the linear model to the MATLAB workspace. 2 Create input signal for validation. For example, a step input signal: input = frest.createStep('Ts',0.1,... 'StepTime',1,... 'StepSize',1e-5,... 'FinalTime',500); 3 Simulate the Simulink model using the input signal. [~,simout] = frestimate(sys,op,sys_io,input); simout is the simulated output of the nonlinear model. 2-81 2 Linearization 4 Simulate the linear model sys, and compare the time-domain responses of the linear and nonlinear Simulink model. frest.simCompare(simout,linsys,input) The step response of the nonlinear model and linearized model are close, which validates that the linearization is accurate. 5 Increase the amplitude of the step signal from 1.0e-005 to 1. input = frest.createStep('Ts',0.1,... 'StepTime',1,... 'StepSize',1,... 'FinalTime',500); 6 Repeat the frequency response estimation with the increased amplitude of the input signal, and compare this time response plot to the exact linearization results. [~,simout2] = frestimate(sys,op,sys_io,input); 2-82 Time-Domain Validation of Linearization frest.simCompare(simout2,linsys,input) legend('FRESTIMATE results with Custom input',... 'Linear simulation of linsys with Custom input',... 'Location','SouthEast') The step response of linear system you obtained using exact linearization does not match the step response of the estimated frequency response with large input signal amplitude. This result indicates that linear model obtained using exact linearization does not behave linearly you begin to deviate from the specified operating point. Choosing Time-Domain Validation Input Signal For time-domain validation of linearization, use frest.createStep to create a step signal. Use the step signal as an input to frest.simCompare, which compares the simulated output of the nonlinear model and the linearized model. 2-83 2 Linearization The step input helps you assess whether the linear model accurately captures the dominant time constants as it goes through the step transients. The step input also shows whether you correctly captured the DC gain of the Simulink model by comparing the final value of the exact linearization simulation with the frequency response estimation. 2-84 Frequency-Domain Validation of Linearization Frequency-Domain Validation of Linearization In this section... “Validate Linearization in Frequency Domain using Linear Analysis Tool” on page 2-85 “Choosing Frequency-Domain Validation Input Signal” on page 2-89 Validate Linearization in Frequency Domain using Linear Analysis Tool This example shows how to validate linearization results using an estimated linear model. In this example, you linearize a Simulink model using the model initial conditions. You then estimate the frequency response of the model using the same operating point (model initial condition). Finally, you compare the estimated response to the exact linearization result. Step 1. Linearize Simulink model. • Open a Simulink model. sys = 'scdDCMotor'; open_system(sys); • Open the Linear Analysis Tool for the model. In the Simulink model window, select Analysis > Control Design > Linear Analysis. • Select a visualization for the linearized model. In the Plot Result list, choose New Bode. • Linearize the model. Click . A new linearized model, linsys1, appears in the Linear Analysis Workspace. 2-85 2 Linearization The software used the model initial conditions as the operating point to generate linsys1. Step 2. Create sinestream input signal. • Click the Frequency Response Estimation tab. In this tab, you estimate the frequency response of the model. • Open the Create sinestream input dialog box. Select Sinestream from the Input Signal list. • Initialize the input signal frequencies and parameters based on the linearized model. Click Initialize frequencies and parameters. 2-86 Frequency-Domain Validation of Linearization The Frequency content viewer is populated with frequency points. The software chooses the frequencies and input signal parameters automatically based on the dynamics of linsys1. • In the Frequency content viewer of the Create sinestream input dialog box, select all the frequency points. • Modify the amplitude of the input signal. Enter 1 in the Amplitude box. • Click OK. The input signal in_sine1 appears in the Linear Analysis Workspace. Step 3. Select the plot to display the estimation result. 2-87 2 Linearization In the Plot Result list, choose Bode Plot 1 to add the next computed linear system to Bode Plot 1. Step 4. Estimate frequency response. Click . The estimated system, estsys1, appears in the Linear Analysis Workspace. Step 5. Examine estimation results. Bode Plot 1 now shows the Bode responses for the estimated model and the linearized model. 2-88 Frequency-Domain Validation of Linearization The frequency response for the estimated model matches that of the linearized model. Choosing Frequency-Domain Validation Input Signal For frequency-domain validation of linearization, create a sinestream signal. By analyzing one sinusoidal frequency at a time, the software can ignore some of the impact of nonlinear effects. 2-89 2 Linearization Input Signal Use When See Also Sinestream All linearization inputs and outputs are on continuous signals. frest.Sinestream Sinestream with fixed sample time One or more of the linearization inputs and outputs is on a discrete signal frest.createFixedTsSinestream You can easily create a sinestream signal based on your linearized model. The software uses the linearized model characteristics to accurately predict the number of sinusoid cycles at each frequency to reach steady state. When diagnosing the frequency response estimation, you can use the sinestream signal to determine whether the time series at each frequency reaches steady state. Concepts 2-90 • “Creating Input Signals for Estimation” on page 3-9 Visualize Models Visualize Models In this section... “Customize Characteristics of Plot in Linear Analysis Tool” on page 2-91 “Print Plot to MATLAB Figure in Linear Analysis Tool” on page 2-91 “Generate Additional Response Plots of Linearized System” on page 2-92 “Add Linear System to Existing Response Plot” on page 2-93 Customize Characteristics of Plot in Linear Analysis Tool To change the characteristics of an existing plot, such as the title, axis labels, or text styles: 1 In the Linear Analysis Tool, in the Figures tab, in the select the plot you want to customize. 2 In the Properties section, click Current plot properties to open the Property Editor. 3 Edit plot properties as desired. Plots are updated as you make changes. Click Close when you are finished. Print Plot to MATLAB Figure in Linear Analysis Tool You can export a plot from the Linear Analysis Tool to a MATLAB figure window. To do so: 1 After creating a plot, in the Figures tab, select the plot you want to export. 2 In the Print section, print click Print to Figure. 2-91 2 Linearization A MATLAB figure window opens containing the plot. Generate Additional Response Plots of Linearized System This example shows how to generate additional response plots of a linearized system in the Linear Analysis Tool. 1 Linearize a model and create a plot of the response, such as shown in “Linearize at Model Operating Point” on page 2-38. 2 In the Linear Analysis Tool, click the Linear Analysis tab. 3 In the Select System list, select the system for which you want to create a new plot. For example, select linsys1. 4 In the Select Plot list, select a plot to add. For example, select New Step. This action generates Step Plot 1, which shows the step response for linsys1. 2-92 Visualize Models Tip To view both plots at the same time, select a layout on the View tab, Tiles section. Add Linear System to Existing Response Plot There are two ways to add a linear system from the MATLAB Workspace or the Linear Analysis Workspace to an existing plot in the Linear Analysis Tool. • Drag the linear system onto the plot from the MATLAB Workspace or the Linear Analysis Workspace. • On the Linear Analysis tab, in the Plots section, select the linear system from the Select System menu. Then select the exiting plot from the Select Plot menu. 2-93 2 Linearization Generate MATLAB Code for Repeated or Batch Linearization This topic shows how to generate MATLAB code for linearization from the Linear Analysis Tool. You can generate either a MATLAB script or a MATLAB function. Generated MATLAB scripts are useful when you want to programmatically reproduce a result you obtained interactively. A generated MATLAB function allows you to perform multiple linearizations with systematic variations in linearization parameters such as operating point (batch linearization). To generate MATLAB code for linearization: 1 In the Linear Analysis Tool, on the Exact Linearization tab, interactively configure the analysis I/Os, operating point, and other parameters for linearization. 2 Click Linearize to open the Generate Matlab Code menu. 3 Select the type of code you want to generate: • Script with current values — Generate a MATLAB script that uses your configured parameter values. Select this option when you want to repeat the same linearization at the MATLAB command line. • Function with input arguments — Generate a MATLAB function that takes analysis I/Os and operating points as input arguments. Select 2-94 Generate MATLAB® Code for Repeated or Batch Linearization this option when you want to perform multiple linearizations using different parameter values (batch linearization). To use a generated MATLAB function for batch linearization, you can create a MATLAB script with a for loop that cycles through values of the parameter you want to vary. Call the generated MATLAB function in each iteration of the loop. 2-95 2 Linearization Troubleshooting Linearization In this section... “Linearization Troubleshooting Overview” on page 2-96 “Check Operating Point” on page 2-104 “Check Linearization I/O Points Placement” on page 2-104 “Check Loop Opening Placement” on page 2-105 “Check Phase of Frequency Response for Models with Time Delays” on page 2-105 “Check Individual Block Linearization Values” on page 2-105 “Check Large Models” on page 2-108 “Check Multirate Models” on page 2-109 Linearization Troubleshooting Overview • “Troubleshooting Checklist” on page 2-96 • “State-Space, Transfer Function, and Zero-Pole-Gain Equations of Linear Model” on page 2-100 • “Linearization Diagnostics” on page 2-101 • “Highlighting Linearized Blocks” on page 2-103 Troubleshooting Checklist If you do not get good linearization results, use the Linear Analysis Tool’s troubleshooting tools. For example, use the Diagnostic Messages tab and the Linearization Inspector tab that are available in the Diagnostic viewer. To open the Diagnostic viewer, see “Linearization Diagnostics” on page 2-101. 2-96 Troubleshooting Linearization You can also use Linearization result dialog box for troubleshooting. To open the Linearization result dialog box: 1 After linearizing the model, in the Linear Analysis tab of the Linear Analysis Tool, select the model of interest in the Select Result list. 2 In the Select Report list, select Show result details to open the Linearization result dialog box for the selected model. 2-97 2 Linearization Where to Look Learn More Signs of Successful Linearization Signs of Unsuccessful Linearization Linear analysis plot, generated after linearization. Create plots, as described in “Visualize Models” on page 2-91. Time- or frequency-domain plot characteristics (e.g., rise time, bandwidth) capture system dynamics. Response plot characteristics do not capture the dynamics of your system. Linear model equations in the Linearization result details dialog box. View other linear model representations, as described in “State-Space, Transfer Function, and Zero-Pole-Gain Equations of Linear Model” on page 2-100. State-space matrices show expected number of states. You might see fewer states in the linear model than in your Simulink model because, in many cases, the path between linearization input and output points do not reach all the model states. Poles and zeros are in correct location. 2-98 For example, Bode plot gain is too large or too small, or pole-zero plot contains unexpected poles or zeros. Results show only D = 0 or D = Inf. Troubleshooting Linearization Where to Look Click in the Exact Linearization tab. Learn More Signs of Successful Linearization Signs of Unsuccessful Linearization “Highlighting Linearized Blocks” on page 2-103 Highlighted blocks in the Simulink model that represent the portion of the model you wanted to linearize. Missing blocks in the linearization path might indicate incorrect linearization input or output point placement, or that a critical block unexpectedly linearizes to zero, or that critical blocks are connected in a path to a block that linearizes to zero. See “Check Linearization I/O Points Placement” on page 2-104. Extra blocks in the linearization path might indicate incorrect loop opening placement. See “Check Loop Opening Placement” on page 2-105. Linearization diagnostics in the Diagnostic Messages tab of the Diagnostic viewer. “Linearization Diagnostics” on page 2-101 Message indicates that there are no problematic blocks in the linearization. One or more warnings about specific problematic blocks. See “Check Individual Block Linearization Values” on page 2-105. 2-99 2 Linearization State-Space, Transfer Function, and Zero-Pole-Gain Equations of Linear Model You can view the linear model equations in the Linearization result dialog box of the Linear Analysis Tool. To open the Linearization result details dialog box: 1 After linearizing the model, in the Linear Analysis tab, select the desired linear model from the Select Result list. 2 Select Show result details from the Select Report list. The Linearization result dialog box opens. Linear model equations display in state-space form, by default. Alternatively, you can view the Zero Pole Gain or Transfer Function representation in the Display linearization result as list. 2-100 Troubleshooting Linearization Linearization Diagnostics You can view diagnostic information about the linearization of specific blocks in the Diagnostic Messages tab of the Diagnostic viewer of the Linear Analysis Tool. The Diagnostic Messages tab also suggests corrective actions. 2-101 2 Linearization Specifically, the Diagnostic Messages tab flags blocks with configuration warnings, unsupported blocks, and blocks that automatically linearize using numerical perturbation. 1 In the Linear Analysis Tool, before linearizing the model, select the Launch Diagnostic Viewer check box in the Exact Linearization tab. This action ensures that the software logs the diagnostics for the linearized model. The Diagnostic Messages dialog for the model will open after you linearize the model. Tip You can also open the Diagnostic viewer for a model by choosing the model in the Select Result list in the Linear Analysis tab of the Linear Analysis Tool. Then choose Show diagnostic viewer in the Select Report list. 2 In the Diagnostic Messages dialog box, the Show diagnostics for list provides the following options: • all blocks in the Simulink model — Use when you suspect that certain blocks are inappropriately excluded from linearization. For example, blocks that linearize to zero (and shouldn’t) are excluded from the linearization path. • blocks in the linearization path — Use when you are sure that all of the blocks that should be included in the linearization are included. That 2-102 Troubleshooting Linearization is, your linearization I/O points and any loop openings are set correctly, and blocks do not inappropriately linearize to zero. In this example, the model contains one block that is linearized using numerical perturbation. 3 To investigate the flagged block, click the block link to highlight the corresponding block in the model. If the linearization results are poor, you can use the Linearization Inspector to explore linearization values of individual blocks. Highlighting Linearized Blocks You can highlight blocks in your model to help you diagnose linearization issues. To highlight all of the blocks included in the linearization: • In the Linear Analysis Tool, click in the Exact Linearization tab. Blocks that linearize to zero do not appear highlighted in the model. Use the Simulink Control Design Diagnostic Messages tab to identify the blocks that cause the linearization of certain blocks to be zero. To remove highlighting in the model: • In the Simulink model, select View> Remove Highlighting. 2-103 2 Linearization More About • “Check Linearization I/O Points Placement” on page 2-104. • “Check Loop Opening Placement” on page 2-105. Check Operating Point To diagnose whether you used the correct operating point for linearization, simulate the model at the operating point you used for linearization. The linearization operating point is incorrect when the critical signals in the model: • Have unexpected values. • Are not at steady state. To fix problem, compute a steady-state operating point and repeat the linearization at this operating point. Related Examples • “Simulate Simulink Model at Specific Operating Point” on page 1-44 • “Steady-State Operating Points (Trimming) from Specifications” on page 1-14 Check Linearization I/O Points Placement After linearizing the model, highlight which block are included in the linearization. Blocks might be missing from the linearization path for different reasons. Incorrect placement linearization I/O points can result in inappropriately excluded blocks from linearization. To fix the problem, specify correct linearization I/O points and repeat the linearization. Blocks that linearize to zero (and other blocks on the same path) are excluded from linearization. To fix this problem, troubleshoot linearization 2-104 Troubleshooting Linearization of individual blocks, as described in “Check Individual Block Linearization Values” on page 2-105. More About • “Highlighting Linearized Blocks” on page 2-103 • “Specifying Subsystem, Loop, or Block to Linearize” on page 2-11 Check Loop Opening Placement Incorrect loop opening placement causes unwanted feedback signals in the linearized model. To fix the problem, use block highlighting to identify which blocks are included in the linearization. If undesired blocks are included, place the loop opening on a different signal and repeat the linearization. More About • “Highlighting Linearized Blocks” on page 2-103 • “Opening Feedback Loops” on page 2-12 Check Phase of Frequency Response for Models with Time Delays When the Bode plot shows insufficient lag in phase for a model containing time delays, the cause might be Padé approximation of time delays in your Simulink model. See “Models with Time Delays” on page 2-122. Check Individual Block Linearization Values In the Linear Analysis Tool, check the Diagnostic Messages tab of the Diagnostic viewer for blocks with configuration warnings, unsupported blocks, and blocks that automatically linearize using numerical perturbation. Click the block link to view the highlighted block in the model. 2-105 2 Linearization After identifying the blocks flagged in the Diagnostic Messages tab, view the linearization values of these blocks in the Linearization Inspector tab of the Diagnostic viewer. 1 In the Linear Analysis Tool, select the linear model for which to display linearization results. a In the Linear Analysis tab, use the Select Result list to select the model. b In the Select Report list, select Show diagnostic viewer to open the Diagnostic viewer dialog box. c In the Diagnostic viewer dialog box, click the Linearization Inspector tab. 2 Select the specific subsystem or block. For example, in the watertank model, select the Water-Tank System subsystem. Then, in Subsystem Blocks, select the Square Root block. Tip Right-click anywhere in the Subsystem Blocks list, and select Show only blocks in linearization path. This action filters the list to include only the linearized blocks. 2-106 Troubleshooting Linearization 3 Plot the response of the linearized block. For example, right-click the Square Root block under Subsystem Blocks, and select PlotBlock > Step Plot. The step response of the block is displayed. 4 Troubleshoot individual blocks. Block or Subsystem Type Comment Possible Fix Incompatible with linearization Some blocks are implemented without analytic Jacobians and do not support numerical perturbation. Define custom linearization for affected block as an expression or function. See “Controlling Block Linearization” on page 2-112 Event-based subsystem Linearization of event-based subsystems is zero because such subsystems do not trigger during linearization. When possible, specify a custom event-based subsystem linearization as a lumped average model or periodic function call subsystem. See “Event-Based Subsystems (Externally Scheduled Subsystems)” on page 2-127. 2-107 2 Linearization Block or Subsystem Type Comment Possible Fix Simulink blocks in Discontinuities library, such as Deadzone, Saturation, and Quantizer blocks The Discontinuities library blocks typically have poor linearization results when the operating point that is close to the discontinuity. If you want the linearization to be a gain of 1, select Treat as gain when linearizing in the block parameters dialog box. Model reference block Linearization is not fully compatible with model reference blocks with Accelerator simulation mode. Always set each Model (model reference) block to use Normal simulation mode, instead of Accelerator mode. Blocks that linearize using numerical perturbation, instead of using preprogrammed analytic Jacobians Blocks that are located near discontinuous regions, such as S-Functions, MATLAB function blocks, or lookup tables, are sensitive to numerical perturbation levels. If the perturbation level is too small, the block linearizes to zero. Change the numerical perturbation level of the block. See “Perturbation Level of Blocks Perturbed During Linearization” on page 2-124. Blocks that have nondouble precision inputs signals and states linearize to zero. Convert nondouble-precision data types to double precision. See “Linearizing Blocks with Nondouble Precision Data Type Signals” on page 2-125 Use the Linearization Inspector tab to view the block linearization. Define custom linearization for affected block as an expression or function. See “Controlling Block Linearization” on page 2-112. Check Large Models Troubleshooting the linearization of large models is easier using a divide-and-conquer strategy. Systematically linearize specific model components independently and check whether that component has the expected linearization. 2-108 Troubleshooting Linearization Related Examples “Plant Linearization” on page 2-28 Check Multirate Models Incorrect sampling time and rate conversion method can cause poor linearization results in multirate models. • “Change Sampling Time of Linear Model” on page 2-109 • “Change Linearization Rate Conversion Method” on page 2-110 Change Sampling Time of Linear Model The sampling time of the linear model displays in the Linearization results dialog box, below the linear equations. By default, the software chooses the slowest sample time of the multirate model. If the default sampling time is not appropriate, specify a different linearization sample time and repeat. In Linear Analysis Tool: 1 In the Exact Linearization tab, click Options. The Options for exact linearization dialog box opens. 2 In the Linearization tab, enter the desired sample time in the Enter sample time (sec) box. Press Enter. -1 specifies that the software linearizes at the slowest sample rate in the model. 0 specifies a continuous-time linear model. At the command line, specify the SampleTime linearization option. For example: opt = linoptions; opt.SampleTime = 0.01; 2-109 2 Linearization Change Linearization Rate Conversion Method When you linearize models with multiple sample times, such as a discrete controller with a continuous plant, a rate conversion algorithm generates a single-rate linear model. The rate conversion algorithm affects linearization results. In the Linear Analysis Tool: 1 Select Options in the Exact Linearization tab. 2 Click the Linearization tab to select the appropriate rate conversion method from the Choose rate conversion method list. 2-110 Rate Conversion Method When to Use Zero-Order Hold Use when you need exact discretization of continuous dynamics in the time-domain for staircase inputs. Tustin Use when you need good frequency-domain matching between a continuous-time system and the corresponding discretized system, or between an original system and the resampled system. Tustin with Prewarping Use when you need good frequency domain matching at a particular frequency between the continuous-time system and the corresponding discretized system, or between an original system and the resampled system. Upsampling when possible (Zero-Order Hold, Tustin, and Tustin with Prewarping) Upsample discrete states when possible to ensure gain and phase matching of upsampled dynamics. You can only upsample when the new sample time is an integer multiple of the sampling time of the original system. Otherwise, Troubleshooting Linearization Rate Conversion Method When to Use the software uses an alternate rate conversion method. At the command line, specify the RateConversionMethod linearization option. For example: opt = linoptions; opt.RateConversionMethod = 'tustin'; See Also linoptions Related Examples Linearization of Multirate Models Linearization Using Different Rate Conversion Methods 2-111 2 Linearization Controlling Block Linearization In this section... “When You Need to Specify Linearization for Individual Blocks” on page 2-112 “Specify Linear System for Block Linearization Using MATLAB Expression” on page 2-113 “Specify D-Matrix System for Block Linearization Using Function” on page 2-114 “Augment the Linearization of a Block” on page 2-117 “Models with Time Delays” on page 2-122 “Perturbation Level of Blocks Perturbed During Linearization” on page 2-124 “Linearizing Blocks with Nondouble Precision Data Type Signals” on page 2-125 “Event-Based Subsystems (Externally Scheduled Subsystems)” on page 2-127 When You Need to Specify Linearization for Individual Blocks Simulink blocks with sharp discontinuities produce poor linearization results. Typically, you must specify a custom linearization for such blocks. When your model operates in a region away from the point of discontinuity, the linearization is zero. A block with discontinuity linearizing to zero can cause the linearization of the system to be zero when this block multiplies other blocks. For other types of blocks, you can specify the block linearization as a: • Linear model in the form of a D-matrix • Control System Toolbox model object 2-112 Controlling Block Linearization • Robust Control Toolbox uncertain state space or uncertain real object (requires Robust Control Toolbox software) Specify Linear System for Block Linearization Using MATLAB Expression This example shows how to specify the linearization of any block, subsystem, or model reference without having to replace this block in your Simulink model. 1 Right-click the block in the model, and select Linear Analysis > Specify Linearization. The Block Linearization Specification dialog box opens. 2 In the Specify block linearization using a list, select MATLAB Expression. 3 In the text field, enter an expression that specifies the linearization. For example, specify the linearization as an integrator with a gain of k, G(s) = k/s. In state-space form, this transfer function corresponds to ss(0,1,k,0). Click OK. 4 Linearize the model. 2-113 2 Linearization Specify D-Matrix System for Block Linearization Using Function This example shows how to specify custom linearization for a saturation block using a function. 1 Open Simulink model. sys = 'scdConfigBlockFcn'; open_system(sys) 2 Linearize the model at the model operating point. io = getlinio(sys); linsys = linearize(sys,io) The presence of the saturation blocks causes the model to linearize to zero. d = Desired Water-Tank S Wat 0 Static gain. 3 Write a function that defines the saturation block linearization. For example, the next configuration function defines the saturation block linearization based on the level of the block input signal. Your configuration function must be on the MATLAB path during linearization. Linearization Configuration Function The input to the function, BlockData, is a structure that the software creates automatically when you configure the linearization of the Saturation block to use the function. function blocklin = mySaturationLinearizationFcn(BlockData) 2-114 Controlling Block Linearization % % % % % This function customizes the linearization of a saturation block based on the block input signal level, U: BLOCKLIN = 0 when |U| > saturation limit BLOCKLIN = 1 when |U| < saturation limit BLOCKLIN = 1/2 when U = saturation limit % Get saturation limit. satlimit = BlockData.Parameters.Value; % Compute linearization based on the input signal % level to the block. if abs(BlockData.Inputs) > satlimit blocklin = 0; elseif abs(BlockData.Inputs) < satlimit blocklin = 1; else blocklin = 1/2; end 4 In the Simulink model, right-click the Saturation block, and select Linear Analysis > Specify Linearization. The Block Linearization Specification dialog box opens. 5 Select the Specify block linearization using one of the following check box, and choose Configuration Function from the list. Configure the linearization function: • Enter the function name. In this example, the function name is mySaturationLinearizationFcn. • Specify the function parameters. mySaturationLinearizationFcn requires the saturation limit value, which the user must specify before linearization. Enter the variable name satlimit in Parameter Value. Enter the corresponding descriptive name in the Parameter Name column, SaturationLimit. • Click OK. 2-115 2 Linearization Configuring the Block Linearization Specification dialog box updates the model to use the specified linearization function for linearizing the Saturation Block. Specifically, this configuration automatically populates the Parameters field of the BlockData structure, which is the input argument to the configuration function. Note You can add function parameters by clicking selected parameters. . Use to delete Code Alternative This code is equivalent to configuring the Block Linearization Specification dialog box: satblk = 'scdConfigBlockFcn/Saturation'; set_param(satblk,'SCDEnableBlockLinearizationSpecification','on'); rep = struct('Specification','mySaturationLinearizationFcn',... 'Type','Function',... 'ParameterNames','SaturationLimit',... 2-116 Controlling Block Linearization 'ParameterValues','satlimit'); set_param(satblk,'SCDBlockLinearizationSpecification',rep); 6 Define the saturation limit, which is a parameter required by the linearization function of the Saturation block. satlimit = 10; 7 Linearize the model using the custom linearization of the Saturation block. linsys_cust = linearize(sys,io) The system linearized to: d = Desired Water-Tank S Wat 0.5 Static gain. Augment the Linearization of a Block This example shows how to augment the linearization of a block with additional time delay dynamics, using a block linearization specification function. 1 Open Simulink model. mdl = 'scdFcnCall'; open_system(mdl) 2-117 2 Linearization This model includes a continuous time plant, Plant, and a discrete-time controller, Controller. The D/A block discretizes the plant output with a sampling time of 0.1 s. The External Scheduler block triggers the controller to execute with the same period, 0.1 s. However, the trigger has an offset of 0.05 s relative to the discretized plant output. For that reason, the controller does not process a change in the reference signal until 0.05 s after the change occurs. This offset introduces a time delay of 0.05 s into the model. 2 (Optional) Linearize the closed-loop model at the model operating point without specifying a linearization for the Controller block. io = getlinio(mdl); sys_nd = linearize(mdl,io); The getlinio function returns the linearization input and output points that are already defined in the model. 3 (Optional) Check the linearization result by frequency response estimation. input = frest.Sinestream(sys_nd); sysest = frestimate(mdl,io,input); bode(sys_nd,'g',sysest,'r*',{input.Frequency(1),input.Frequency(end)}) legend('Linearization without delay',... 'Frequency Response Estimation','Location','SouthWest') 2-118 Controlling Block Linearization The exact linearization does not account for the time delay introduced by the controller execution offset. A discrepancy results between the linearized model and the estimated model, especially at higher frequencies. 4 Write a function to specify the linearization of the Controller block that includes the time delay. The following configuration function defines a linear system that equals the default block linearization multiplied by a time delay. Save this configuration function to a location on your MATLAB path. (For this example, the function is already saved as scdAddDelayFcn.m.) function sys = scdAddDelayFcn(BlockData) sys = BlockData.BlockLinearization*thiran(0.05,0.1); 2-119 2 Linearization The input to the function, BlockData, is a structure that the software creates automatically each time it linearizes the block. When you specify a block linearization configuration function, the software automatically passes BlockData to the function. The field BlockData.BlockLinearization contains the current linearization of the block. This configuration function approximates the time delay as a thiran filter. The filter indicates a discrete-time approximation of the fractional time delay of 0.5 sampling periods. (The 0.05 s delay has a sampling time of 0.1 s). 5 Specify the configuration function scdAddDelayFcn as the linearization for the Controller block. a Right-click the Controller block, and select Linear Analysis > Specify Linearization. b Select the Specify block linearization using one of the following check box. Then, select Configuration Function from the drop-down list. c Enter the function name scdAddDelayFcn in the text box. scdAddDelayFcn has no parameters, so leave the parameter table blank. d Click OK. 2-120 Controlling Block Linearization 6 Linearize the model using the specified block linearization. sys_d = linearize(mdl,io); The linear model sys_d is a linearization of the closed-loop model that accounts for the time delay. 7 (Optional) Compare the linearization that includes the delay with the estimated frequency response. bode(sys_d,'b',sys_nd,'g',sysest,'r*',... {input.Frequency(1),input.Frequency(end)}) legend('Linearization with delay','Linearization without delay',... 'Frequency Response Estimation','Location','SouthWest') 2-121 2 Linearization The linear model obtained with the specified block linearization now accounts for the time delay. This linear model is therefore a much better match to the real frequency response of the Simulink model. Models with Time Delays • “Choosing Approximate Versus Exact Time Delays” on page 2-122 • “Specifying Exact Representation of Time Delays” on page 2-123 Choosing Approximate Versus Exact Time Delays Simulink Control Design lets you choose whether to linearize models using exact representation or Pade approximation of continuous time delays. How you treat time delays during linearization depends on your nonlinear model. 2-122 Controlling Block Linearization Simulink blocks that model time delays are: • Transport Delay block • Variable Time Delay block • Variable Transport Delay block • Delay block • Unit Delay block By default, linearization uses Pade approximation for representing time delays in your linear model. Use Pade approximation to represent time delays when: • Applying more advanced control design techniques to your linear plant, such as LQR or H-infinity control design. • Minimizing the time to compute a linear model. Specify to linearize with exact time delays for: • Minimizing errors that result from approximating time delays • PID tuning or loop-shaping control design methods in Simulink Control Design • Discrete-time models (to avoid introducing additional states to the model) The software treats discrete-time delays as internal delays in the linearized model. Such delays do not appear as additional states in the linearized model. Specifying Exact Representation of Time Delays Before linearizing your model: • In the Linear Analysis Tool: 1 In the Exact Linearization tab, click Options . This action opens the Options for exact linearization dialog box. 2-123 2 Linearization 2 In the Linearization tab, select the Return linear model with exact delay(s) check box. • At the command line: Use linoptions to specify the UseExactDelayModel option. Related Examples Linearizing Models with Delays More About • “Models with Time Delays” in the Control System Toolbox documentation • “Time-Delay Approximation” in the Control System Toolbox documentation Perturbation Level of Blocks Perturbed During Linearization Blocks that do not have preprogrammed analytic Jacobians linearize using numerical perturbation. • “Change Block Perturbation Level” on page 2-124 • “Perturbation Levels of Integer Valued Blocks” on page 2-125 Change Block Perturbation Level This example shows how to change the perturbation level to the Magnetic Ball Plant block in the magball model. Changing the perturbations level changes the linearization results. The default perturbation size is 10-5(1+|x|), where x is the operating point value of the perturbed state or the input. Open the model before changing the perturbation level. To change the perturbation level of the states to 10−7 (1 + x ) , where x is the state value, type: blockname='magball/Magnetic Ball Plant' 2-124 Controlling Block Linearization set_param(blockname,'StatePerturbationForJacobian','1e-7') To change the perturbation level of the input to 10−7 (1 + x ) , where x is the input signal value: 1 Open the system and get the block port handles. sys = 'magball'; open_system(sys); blockname = 'magball/Magnetic Ball Plant'; ph = get_param(blockname,'PortHandles') 2 Get the handle to the inport value. p_in = ph.Inport(1) 3 Set the inport perturbation level. set_param(p_in,'PerturbationForJacobian','1e-7') Perturbation Levels of Integer Valued Blocks A custom block that requires integer input ports for indexing might have linearization issues when this block: • Does not support small perturbations in the input value • Accepts double-precision inputs To fix the problem, try setting the perturbation level of such a block to zero (which sets the block linearization to a gain of 1). Linearizing Blocks with Nondouble Precision Data Type Signals You can linearize blocks that have nondouble precision data type signals as either inputs or outputs, and have no preprogrammed exact linearization. Without additional configuration, such blocks automatically linearize to zero. For example, logical operator blocks have Boolean outputs and linearize to 0. 2-125 2 Linearization Linearizing blocks that have nondouble precision data type signals requires converting all signals to double precision. This approach only works when your model can run correctly in full double precision. When you have only a few blocks impacted by the nondouble precision data types, use a Data Type Conversion block to fix this issue. When you have many nondouble precision signals, you can override all data types with double precision using the Fixed Point Tool. • “Overriding Data Types Using Data Type Conversion Block” on page 2-126 • “Overriding Data Types Using Fixed Point Tool” on page 2-127 Overriding Data Types Using Data Type Conversion Block Convert individual signals to double precision before linearizing the model by inserting a Data Type Conversion block. This approach works well for model that have only a few affected blocks. After linearizing the model, remove the Data Type Conversion block from your model. Note Overriding nondouble data types is not appropriate when the model relies on these data types, such as relying on integer data types to perform truncation from floats. For example, consider the model configured to linearize the Square block at an operating point where the input is 1. The resulting linearized model should be 2, but the input to the Square block is Boolean. This signal of nondouble precision date type results in linearization of zero. In this case, inserting a Data Type Conversion block converts the input signal to the Square block to double precision. 2-126 Controlling Block Linearization Overriding Data Types Using Fixed Point Tool When you linearize a model that contains nondouble data types but still runs correctly in full double precision, you can override all data types with doubles using the Fixed Point Tool. Use this approach when you have many nondouble precision signals. After linearizing the model, restore your original settings. Note Overriding nondouble data types is not appropriate when the model relies on these data types, such as relying on integer data types to perform truncation from floats. 1 In the Simulink model, select Analysis > Fixed Point Tool. The Fixed Point Tool opens. 2 In the Data type override menu, select Double. This setting uses double precision values for all signals during linearization. 3 Restore settings when linearization completes. Event-Based Subsystems (Externally Scheduled Subsystems) • “Linearizing Event-Based Subsystems” on page 2-128 • “Approaches for Linearizing Event-Based Subsystems” on page 2-128 • “Periodic Function Call Subsystems for Modeling Event-Based Subsystems” on page 2-129 • “Approximating Event-Based Subsystems Using Curve Fitting (Lump-Average Model)” on page 2-132 2-127 2 Linearization Linearizing Event-Based Subsystems Event-based subsystems (triggered subsystems) and other event-based models require special handling during linearization. Executing a triggered subsystem depends on previous signal events, such as zero crossings. However, because linearization occurs at a specific moment in time, the trigger event never happens. An example of an event-based subsystem is an internal combustion (IC) engine. When an engine piston approaches the top of a compression stroke, a spark causes combustion. The timing of the spark for combustion is dependent on the speed and the position of the engine crankshaft. In the scdspeed model, triggered subsystems generate events when the pistons reach both the top and bottom of the compression stroke. Linearization in the presence of such triggered subsystems is not meaningful. Approaches for Linearizing Event-Based Subsystems You can obtain a meaningful linearization of triggered subsystems, while still preserving the simulation behavior, by recasting the event-based dynamics as one of the following: • Lumped average model that approximates the event-based behavior over time. • Periodic function call subsystem, with Normal simulation mode. In the case of periodical function call subsystems, the subsystem linearizes to the sampling at which the subsystem is periodically executed. In many control applications, the controller is implemented as a discrete controller, but the execution of the controller is driven by an external scheduler. You can use such linearized plant models when the controller subsystem is marked as a Periodic Function call subsystem. If recasting event-based dynamics does not produce good linearization results, try frequency response estimation. See “Estimate Frequency Response Using Linear Analysis Tool” on page 3-28. 2-128 Controlling Block Linearization Periodic Function Call Subsystems for Modeling Event-Based Subsystems This example shows how to use periodic function call subsystems to approximate event-based dynamics for linearization. 1 Open Simulink model. sys = 'scdPeriodicFcnCall'; open_system(sys) 2 Linearize model at the model operating point. io = getlinio(sys); linsys = linearize(sys,io) The linearization is zero because the subsystem is not a periodic function call. d = Desired Water-Tank S Static gain. Wat 0 Now, specify the Externally Scheduled Controller block as a Periodic Function Call Subsystem. 3 Double-click the Externally Scheduled Controller (Function-Call Subsystem) block. Double-click the function block to open the Block Parameters dialog box. 2-129 2 Linearization 4 Set Sample time type to be periodic. Leave the Sample time value as 0.01, which represents the sample time of the function call. 5 Linearize the model. linsys2 = linearize(sys,io) a = H Integrator 2-130 H 0.9956 -0.0007774 Integrator 0.002499 1 Controlling Block Linearization b = H Integrator Desired Wat 0.003886 0.0007774 c = H 1 Water-Tank S Integrator 0 d = Desired Water-Tank S Wat 0 Sampling time: 0.01 Discrete-time model. 6 Plot step response. step(linsys2) 2-131 2 Linearization 7 Close the model. bdclose(sys); Approximating Event-Based Subsystems Using Curve Fitting (Lump-Average Model) This example shows how to use curve fitting to approximate event-based dynamics of an engine. The scdspeed model linearizes to zero because scdspeed/Throttle & Manifold/Intake Manifold is an event-triggered subsystem. You can approximate the event-based dynamics of the scdspeed/Throttle & Manifold/Intake Manifold subsystem by adding the Convert to mass charge block inside the subsystem. The Convert to mass charge block approximates the relationship between Air Charge, Manifold Pressure, and Engine Speed as a quadratic polynomial. 2-132 Controlling Block Linearization Air Charge = p1 × Engine Speed + p2 × Manifold Pressure + p3 × (M Manifold Pressure)2 + p4 × Manifold Pressure × Engine Speed + p5 If measured data for internal signals is not available, use simulation data from the original model to compute the unknown parameters p1, p2, p3, p4, and p5 using a least squares fitting technique. When you have measured data for internal signals, you can use the Simulink Design Optimization™ software to compute the unknown parameters. See Engine Speed Model Parameter Estimation to learn more about computing model parameters, linearizing this approximated model, and designing a feedback controlled for the linear model. The next figure compares the simulations of the original event-based model and the approximated model. Each of the pulses corresponds to a step change in the engine speed. The size of the step change is between 1500 and 5500. Thus, you can use the approximated model to accurately simulate and linearize the engine between 1500 RPM and 5500 RPM. 2-133 2 Linearization 2-134 Models with Pulse Width Modulation (PWM) Signals Models with Pulse Width Modulation (PWM) Signals This example shows how to configure models that use Pulse Width Modulation (PWM) input signals for linearization. For linearization, specify a custom linearization of the subsystem that takes the DC signal to be a gain of 1. Many industrial applications use Pulse Width Modulation (PWM) signals because such signals are robust in the presence of noise. The next figure shows two PWM signals. In the top plot, a PWM signal with a 20% duty cycle represents a 0.2 V DC signal. A 20% duty cycle corresponding to 1 V signal for 20% of the cycle, followed by a value of 0 V signal for 80% of the cycle. The average signal value is 0.2 V. In the bottom plot, a PWM signal with an 80% duty cycle represent a 0.8 V DC signal. 2-135 2 Linearization For example, in the scdpwm model, a PWM signal is converted to a constant signal. When linearizing a model containing PWM signals there are two effects of linearization you should consider: • The signal level at the operating point is one of the discrete values within the PWM signal, not the DC signal value. For example, in the model above, the signal level is either 0 or 1, not 0.8. This change in operating point affects the linearized model. • The creation of the PWM signal within the subsystem Voltage to PWM, shown in the next figure, uses the Compare to Zero block. Such comparator blocks do not linearize well due to their discontinuities and the nondouble outputs. Related Examples Specifying Custom Linearizations for Simulink Blocks 2-136 Specifying Linearization for Model Components Using System Identification Specifying Linearization for Model Components Using System Identification This example shows how to use System Identification Toolbox to identify a linear system for a model component that does not linearize well and use the identified system to specify its linearization. Note that running this example requires SimPowerSystems in addition to System Identification Toolbox. Linearizing Hard Drive Model Open the simulink model for the hard drive. model = 'scdpwmharddrive'; open_system(model); In this model, the hard drive plant is driven by a current source. The current source is implemented by a circuit that is driven by a Pulse Width Modulation (PWM) signal so that its output can be adjusted by the duty cycle. For details of the hard drive model, see the example "Digital Servo Control of a Hard-Disk Drive" in Control System Toolbox™ examples. PWM-driven circuits usually have high frequency switching components, such as the MOSFET transistor in this model, whose average behavior is not well defined. Thus, exact linearization of this type of circuits is problematic. When you linearize the model from duty cycle input to the position error, the result is zero. io(1) = linio('scdpwmharddrive/Duty cycle',1,'in'); io(2) = linio('scdpwmharddrive/Hard Disk Model',1,'out'); sys = linearize(model,io) 2-137 2 Linearization sys = d = position err Duty cycle 0 Static gain. Finding a Linear Model for PWM Component You can use frequency response estimation to obtain the frequency response of the PWM-driven current source and use the result to identify a linear model for it. The current signal has a discrete sample time of 1e-7. Thus, you need to use a fixed sample time sinestream signal. Create a signal that has frequencies between 2K and 200K rad/s. idinput = frest.createFixedTsSinestream(Ts,{2000,200000}); idinput.Amplitude = 0.1; You can then define the input and output points for PWM-driven circuit and run the frequency response estimation with the sinestream signal. pwm_io(1) = linio('scdpwmharddrive/Duty cycle',1,'in'); pwm_io(2) = linio('scdpwmharddrive/PWM driven converter',1,'out','on'); sysfrd = frestimate(model,pwm_io,idinput); Using the N4SID command from System Identification Toolbox, you can identify a second-order model using the frequency response data. Then, compare the identified model to the original frequency response data. sysid = ss(tfest(idfrd(sysfrd),2)); bode(sysid,sysfrd,'r*'); 2-138 Specifying Linearization for Model Components Using System Identification We used frequency response data with frequencies between 2K and 200K rad/s. The identified model has a flat magnitude response for frequencies smaller than 2K. However, our estimation did not have include for those frequencies. Assume that you would like to make sure the response is flat by checking the frequency response for 20 and 200 rad/s. To do so, create another input signal with those frequencies in it. lowfreq = [20 200]; inputlow = frest.createFixedTsSinestream(Ts,lowfreq) The sinestream input signal: Frequency : Amplitude : SamplesPerPeriod : NumPeriods : RampPeriods : FreqUnits (rad/s,Hz): [20 200] (rad/s) 1e-05 [3141593 314159] 4 0 rad/s 2-139 2 Linearization SettlingPeriods : 1 ApplyFilteringInFRESTIMATE (on/off) : on SimulationOrder (Sequential/OneAtATime): Sequential In the input signal parameters, we can see that having a very fast sample rate of 1e-7 seconds (10 MHz sampling frequency) for the frequencies 20 and 200 rad/s cause high SamplesPerPeriod values of 3141593 and 314159. Considering that each frequency has 4 periods, frequency response estimation would log output data with around 14 millions samples. This would require a lot of memory and it is quite likely that you might run into memory issues running the estimation. Obviously, you do not need such a high sampling rate for analyzing 20 and 200 rad/s frequencies. You can use a smaller sampling rate to avoid memory issues: Tslow = 1e-4; wslow = 2*pi/Tslow; inputlow = frest.createFixedTsSinestream(Tslow,wslow./round(wslow./lowfreq) inputlow.Amplitude = 0.1; To make the model compatible with the smaller sampling rate, resample the output data point using a rate transition block as in the modified model: modellow = 'scdpwmharddrive_lowfreq'; open_system(modellow); 2-140 Specifying Linearization for Model Components Using System Identification You can now run the analysis for the low frequencies and compare it against identification result. load scdpwmharddrive_lowfreqresults.mat % sysfrdlow = frestimate(modellow,getlinio(modellow),inputlow); bode(sysid,sysfrdlow,'r*'); bdclose(modellow); 2-141 2 Linearization Specifying the Linearization for PWM Component As you verified using the frequency response estimation, the low-frequency dynamics of the PWM-driven component are captured well by the identified system. Now you can make linearization use this system as the linearization of the PWM-driven component. To do so, specify block linearization of that subsystem as follows: pwmblock = 'scdpwmharddrive/PWM driven converter'; set_param(pwmblock,'SCDEnableBlockLinearizationSpecification','on'); rep = struct('Specification','sysid',... 'Type','Expression',... 'ParameterNames','',... 'ParameterValues',''); set_param(pwmblock,'SCDBlockLinearizationSpecification',rep); set_param('scdpwmharddrive/Duty cycle','SampleTime','Ts_plant'); Linearizing the model after specifying the linearization of the PWM component gives us a non-zero result: 2-142 Specifying Linearization for Model Components Using System Identification sys = linearize(model,io); You might still like to validate this linearization result using frequency response estimation. Doing this as below verifies that our linearization result is quite accurate and all the resonances exist in the actual dynamics of the model. valinput = frest.Sinestream(sys); valinput = fselect(valinput,3e3,1e5); valinput.Amplitude = 0.1; sysval = frestimate(model,io,valinput); bodemag(sys,sysval,'r*'); Close the model: bdclose('scdpwmharddrive'); 2-143 2 Linearization Speeding Up Linearization of Complex Models In this section... “Factors That Impact Linearization Performance” on page 2-144 “Blocks with Complex Initialization Functions” on page 2-144 “Disabling the Linearization Inspector in the Linear Analysis Tool” on page 2-144 “Batch Linearization of Large Simulink Models” on page 2-145 Factors That Impact Linearization Performance Large Simulink models and blocks with complex initialization functions can slow linearization. In most cases, the time it takes to linearize a model is directly related to the time it takes to update the block diagram. Blocks with Complex Initialization Functions Use the MATLAB Profiler to identify complex bottlenecks in block initialization functions. In the MATLAB Profiler, run the command: set_param(modelname,'SimulationCommand','update') Disabling the Linearization Inspector in the Linear Analysis Tool You can speed up the linearization of large models by disabling the Linearization Diagnostics Viewer in the Linear Analysis Tool. The Linearization Diagnostic Viewer stores and tracks linearization values of individual blocks, which can impact linearization performance. In the Linear Analysis Tool, in the Exact Linearization tab, clear the Launch Diagnostic Viewer check box. 2-144 Speeding Up Linearization of Complex Models Tip Alternatively, you can disable the Linearization Diagnostic Viewer globally in the Simulink Control Design tab of the MATLAB preferences dialog box. Clear the Launch diagnostic viewer for exact linearizations in the linear analysis tool check box. This global preference persists from session to session until you change this preference. Batch Linearization of Large Simulink Models When batch linearizing a large model that contains only a few varying parameters, you can use linlftfold to reduce the computational load. See Computing Multiple Linearizations of Models with Block Variations More Efficiently. 2-145 2 Linearization Exact Linearization Algorithm In this section... “Continuous-Time Models” on page 2-146 “Multirate Models” on page 2-147 “Perturbation of Individual Blocks” on page 2-148 “User-Defined Blocks” on page 2-150 “Look Up Tables” on page 2-151 Continuous-Time Models Simulink Control Design lets you linearize continuous-time nonlinear systems. The resulting linearized model is in state-space form. In continuous time, the state space equations of a nonlinear system are: x (t) = f ( x(t), u(t), t ) y(t) = g ( x(t), u(t), t ) where x(t) are the system states, u(t) are the input signals, and y(t) are the output signals. To describe the linearized model, define a new set of variables of the states, inputs, and outputs centered about the operating point: δx(t) = x(t) − x0 δu(t) = u(t) − u0 δy(t) = y(t) − y0 The output of the system at the operating point is y(t0)=g(x0,u0,t0)=y0. The linearized state-space equations in terms of δx(t), δu(t), and δy(t) are: 2-146 Exact Linearization Algorithm δx (t) = Aδx(t) + Bδu(t) δy(t) = Cδx(t) + Dδu(t) where A, B, C, and D are constant coefficient matrices. These matrices are the Jacobians of the system, evaluated at the operating point: A= ∂f ∂x t0 , x0 ,u0 B= ∂f ∂u t0 , x0 ,u0 C= ∂g ∂x t0 , x0 ,u0 D= ∂g ∂u t0 , x0 ,u0 This linear time-invariant approximation to the nonlinear system is valid in a region around the operating point at t=t0, x(t0)=x0, and u(t0)=u0. In other words, if the values of the system states, x(t), and inputs, u(t), are close enough to the operating point, the system behaves approximately linearly. The transfer function of the linearized model is the ratio of the Laplace transform of δy(t) and the Laplace transform of δu(t): Plin (s) = δY (s) δU (s) Multirate Models Simulink Control Design lets you linearize multirate nonlinear systems. The resulting linearized model is in state-space form. Multirate models include states with different sampling rates. In multirate models, the state variables change values at different times and with different frequencies. Some of the variables might change continuously. The general state-space equations of a nonlinear, multirate system are: 2-147 2 Linearization = x ( t ) x1 (k1 + 1) = xm (km + 1) = y (t) = f ( x ( t ) , x1 ( k1 ) , , xm ( km ) , u ( t ) , t ) f1 ( x ( t ) , x1 ( k1 ) , , xm ( km ) , u ( t ) , t ) fi ( x ( t ) , x1 ( k1 ) , , xm ( km ) , u ( t ) , t ) g ( x ( t ) , x1 ( k1 ) , , xm ( km ) , u ( t ) , t ) where k1,..., km are integer values and tk1 ,..., tkm are discrete times. The linearized equations that approximate this nonlinear system as a single-rate discrete model are: δxk+1 δyk ≈ A δxk + Bδuk ≈ C δxk + Dδuk The rate of the linearized model is typically the least common multiple of the sample times, which is usually the slowest sample time. For more information, see Linearization of Multirate Models . Perturbation of Individual Blocks Simulink Control Design linearizes blocks that do not have preprogrammed linearization using numerical perturbation. The software computes block linearization by numerically perturbing the states and inputs of the block about the operating point of the block. The block perturbation algorithm introduces a small perturbation to the nonlinear block and measures the response to this perturbation. The default difference between the perturbed value and the operating point value is 10−5 (1 + x ) , where x is the operating point value. The software uses this perturbation and the resulting response to compute the linear state-space of this block. In general, a continuous-time nonlinear Simulink block in state-space form is given by: 2-148 Exact Linearization Algorithm x (t) f x(t), u(t), t y(t) g x(t), u(t), t . In these equations, x(t) represents the states of the block, u(t) represents the inputs of the block, and y(t) represents the outputs of the block. A linearized model of this system is valid in a small region around the operating point t=t0, x(t0)=x0, u(t0)=u0, and y(t0)=g(x0,u0,t0)=y0. To describe the linearized block, define a new set of variables of the states, inputs, and outputs centered about the operating point: δx(t) = x(t) − x0 δu(t) = u(t) − u0 δy(t) = y(t) − y0 The linearized state-space equations in terms of these new variables are: δx (t) = Aδx(t) + Bδu(t) δy(t) = Cδx(t) + Dδu(t) A linear time-invariant approximation to the nonlinear system is valid in a region around the operating point. The state-space matrices A, B, C, and D of this linearized model represent the Jacobians of the block. To compute the state-space matrices during linearization, the software performs these operations: 1 Perturbs the states and inputs, one at a time, and measures the response of the system to this perturbation by computing δx and δy. 2 Computes the state-space matrices using the perturbation and the response. 2-149 2 Linearization A(:, i) = C(:, i) = x x p, i − x o x p,i − xo yx p, i − yo x p,i − xo , B(:, i) = , D(:, i) = x u p, i − x o u p,i − uo yu p, i − yo u p,i − uo where • xp,i is the state vector whose ith component is perturbed from the operating point value. • xo is the state vector at the operating point. • up,i is the input vector whose ith component is perturbed from the operating point value. • uo is the input vector at the operating point. • x x is the value of x at xp,i, uo. p, i • x u is the value of x at up,i, xo. p, i • x o is the value of x at the operating point. • y x is the value of y at xp,i, uo. p, i • y u is the value of y at up,i, xo. p, i • yo is the value of y at the operating point. User-Defined Blocks All user defined blocks such as S-Function and MATLAB Function blocks, are compatible with linearization. These blocks are linearized using numerical perturbation. User-defined blocks do not linearize when these blocks use nondouble precision data types. 2-150 Exact Linearization Algorithm See “Linearizing Blocks with Nondouble Precision Data Type Signals” on page 2-125. Look Up Tables Regular look up tables are numerically perturbed. Pre-lookup tables have a preprogrammed (exact) block-by-block linearization. 2-151 2 Linearization 2-152 3 Frequency Response Estimation • “Frequency Response Model Applications” on page 3-3 • “What Is a Frequency Response Model?” on page 3-4 • “Model Requirements” on page 3-6 • “Estimation Requires Input and Output Signals” on page 3-7 • “Creating Input Signals for Estimation” on page 3-9 • “Modifying Input Signals for Estimation” on page 3-24 • “Estimate Frequency Response Using Linear Analysis Tool” on page 3-28 • “Estimate Frequency Response with Linearization-Based Input Using Linear Analysis Tool” on page 3-32 • “Estimate Frequency Response (MATLAB Code)” on page 3-37 • “Analyzing Estimated Frequency Response” on page 3-40 • “Troubleshooting Frequency Response Estimation” on page 3-49 • “Effects of Time-Varying Source Blocks on Frequency Response Estimation” on page 3-62 • “Effects of Noise on Frequency Response Estimation” on page 3-72 • “Estimating Frequency Response Models with Noise Using Signal Processing Toolbox” on page 3-74 • “Estimating Frequency Response Models with Noise Using System Identification Toolbox” on page 3-76 3 Frequency Response Estimation • “Generate MATLAB Code for Repeated or Batch Frequency Response Estimation” on page 3-78 • “Managing Estimation Speed and Memory” on page 3-80 3-2 Frequency Response Model Applications Frequency Response Model Applications You can estimate the frequency response of a Simulink model as a frequency response model (frd object), without modifying your Simulink model. Applications of frequency response models include: • Validating exact linearization results. Frequency response estimation uses a different algorithm to compute a linear model approximation and serves as an independent test of exact linearization. See “Frequency-Domain Validation of Linearization” on page 2-85. • Analyzing linear model dynamics. Designing controller for the plant represented by the estimated frequency response using Control System Toolbox software. • Estimating parametric models. See “Estimating Frequency Response Models with Noise Using System Identification Toolbox” on page 3-76. 3-3 3 Frequency Response Estimation What Is a Frequency Response Model? Frequency response describes the steady-state response of a system to sinusoidal inputs. For a linear system, a sinusoidal input of frequency ω: u(t) = Au sin t results in an output that is also a sinusoid with the same frequency, but with a different amplitude and phase θ: y(t) = A y sin( t + ) u(t) Au Linear System q y(t) 3-4 Ay u(t) G(s) y(t) What Is a Frequency Response Model? Frequency response G(s) for a stable system describes the amplitude change and phase shift as a function of frequency: G(s) = Y (s) U (s) G(s) = G( j ) = =∠ Ay Au ⎛ imaginary pa Y ( j ) art of G( j ) ⎞ = tan −1 ⎜ ⎟ X ( j ) real part of G( j ) ⎝ ⎠ where Y(s) and U(s) are the Laplace transforms of y(t) and u(t), respectively. 3-5 3 Frequency Response Estimation Model Requirements You can estimate the frequency response of one or more blocks in a stable Simulink model at steady state. Your model can contain any Simulink blocks, including blocks with event-based dynamics. Examples of blocks with event-based dynamics include Stateflow charts, triggered subsystems, pulse width modulation (PWM) signals. Estimate frequency response for these blocks y(t) u(t) Frequency response model You should disable the following types of blocks before estimation: • Blocks that simulate random disturbances (noise). For alternatives ways to model systems with noise, see “Estimating Frequency Response Models with Noise Using Signal Processing Toolbox” on page 3-74. • Source blocks that generate time-varying outputs that interfere with the estimation. See “Effects of Time-Varying Source Blocks on Frequency Response Estimation” on page 3-62. 3-6 Estimation Requires Input and Output Signals Estimation Requires Input and Output Signals Frequency response estimation requires an input signal at the linearization input point to excite the model at frequencies of interest, such as a chirp or sinestream signal. A sinestream input signal is a series of sinusoids, where each sine wave excites the system for a period of time. You can inject the input signal anywhere in your model and log the simulated output, without having to modify your model. Frequency response estimation adds the input signal you design to the existing Simulink signals at the linearization input point, and simulates the model to obtain the output at the linearization output point. For more information about supported input signals and their impact on the estimation algorithm, see “Creating Input Signals for Estimation” on page 3-9. Linearization input u(t) Estimate frequency response for these blocks Linearization output y(t) For multiple-input multiple-output (MIMO) systems, frequency response estimation injects the signal at each input channel separately to simulate the corresponding output signals. The estimation algorithm uses the inputs and the simulated outputs to compute the MIMO frequency response. If you want to inject different input signal at the linearization input points of a multiple-input system, treat your system as separate single-input systems. Perform independent frequency response estimations for each linearization input point using frestimate, and concatenate your frequency response results. Frequency response estimation correctly handles open-loop linearization input and output points. For example, if the input linearization point is open, 3-7 3 Frequency Response Estimation the input signal you design adds to the constant operating point value. The operating point is the initial output of the block with a loop opening. The estimated frequency response is related to the input and output signals as: G(s) ≈ fast Fourier transform of yest (t) fast Fourier transforrm uest (t) where uest(t) is the injected input signal and yest(t) is the corresponding simulated output signal. 3-8 Creating Input Signals for Estimation Creating Input Signals for Estimation In this section... “Supported Input Signals” on page 3-9 “Creating Sinestream Input Signals” on page 3-9 “Creating Chirp Input Signals” on page 3-19 Supported Input Signals Frequency response estimation uses sinestream or chirp input signals. Sinusoidal Signal When to Use Sinestream Recommended for most situations. Especially useful when: • Your system contains strong nonlinearities. • You require highly accurate frequency response models. See “Creating Sinestream Input Signals” on page 3-9. Chirp • Your system is nearly linear in the simulation range. • You want to quickly obtain a response for a lot of frequency points. See “Creating Chirp Input Signals” on page 3-19. Creating Sinestream Input Signals • “What Is a Sinestream Signal?” on page 3-10 • “Create Sinestream Signals Using Linear Analysis Tool” on page 3-10 • “Create Sinestream Signals (MATLAB Code)” on page 3-13 3-9 3 Frequency Response Estimation • “How Frequency Response Estimation Treats Sinestream Inputs” on page 3-15 What Is a Sinestream Signal? A sinestream signal consists of several adjacent sine waves of varying frequencies. Each frequency excites the system for a period of time. f2 f3 Amplitude f1 Time Create Sinestream Signals Using Linear Analysis Tool This example shows how to create a sinestream input signal based upon a linearized model using the Linear Analysis Tool. 1 Obtain a linearized model, linsys1. For example, see “Linearize Simulink Model” on page 2-38, which shows how to linearize a model. 2 In the Linear Analysis Tool, click the Frequency Response Estimation tab. In the Input Signal list, select Sinestream. 3-10 Creating Input Signals for Estimation The Create sinestream input dialog box opens. Note Selecting Sinestream creates a continuous-time signal. To generate a discrete-time signal, choose Fixed Sample Time Sinestream from the Input Signal list. 3 In the System list, select linsys1. Click Initialize frequencies and parameters. 3-11 3 Frequency Response Estimation This action adds frequency points to the Frequency content viewer. The software automatically selects frequency points based on the dynamics of linsys1. The software also automatically determines other parameters of the sinestream signal, including: • amplitude • number of periods • settling periods • ramp periods • number of samples at each period 3-12 Creating Input Signals for Estimation SettlingPeriods NumPeriods 4 Click OK to create the sinestream input signal. A new input signal, in_sine1, appears in the Linear Analysis Workspace. Create Sinestream Signals (MATLAB Code) You can create a sinestream signal from both continuous-time and discrete-time signals in Simulink models using the following commands: Signal at Input Linearization Point Command Continuous frest.Sinestream Discrete frest.createFixedTsSinestream 3-13 3 Frequency Response Estimation Create a sinestream signal in the most efficient way using a linear model that accurately represents your system dynamics: input = frest.Sinestream(sys) sys is the linear model you obtained using exact linearization. You can also define a linear system based on your insight about the system using the tf, zpk, and ss commands. For example, create a sinestream signal from a linearized model: magball io(1) = linio('magball/Desired Height',1); io(2) = linio('magball/Magnetic Ball Plant',... 1,'out'); sys = linearize('magball',io); input = frest.Sinestream(sys) The resulting input signal stores the frequency values as Frequency. frest.Sinestream automatically specifies NumPeriods and SettlingPeriods for each frequency: Frequency : [0.05786;0.092031;0.14638 ...] (rad/s) Amplitude : 1e-005 SamplesPerPeriod : 40 NumPeriods : [4;4;4;4 ...] RampPeriods : 0 FreqUnits (rad/s,Hz): rad/s SettlingPeriods : [1;1;1;1 ...] ApplyFilteringInFRESTIMATE (on/off) : on SimulationOrder (Sequential/OneAtATime): Sequential For more information about sinestream options, see the frest.Sinestream reference page. You can plot your input signal using plot(input). The mapping between the parameters of the Create sinestream input dialog box in the Linear Analysis Tool and the options of frest.Sinestream is as follows: 3-14 Creating Input Signals for Estimation Create sinestream input dialog box frest.Sinestream option Amplitude 'Amplitude' Number of periods 'NumPeriods' Settling periods 'SettlingPeriods' Ramp periods 'RampPeriods' Number of samples at each period 'SamplesPerPeriod' How Frequency Response Estimation Treats Sinestream Inputs Frequency response estimation using frestimate performs the following operations on a sinestream input signal: 1 Injects the sinestream input signal you design, uest(t), at the linearization input point. 3-15 3 Frequency Response Estimation 2 Simulates the output at the linearization output point. frestimate adds the signal you design to existing Simulink signals at the linearization input point. u est (t) u(t) y(t) 3-16 Creating Input Signals for Estimation 3 Discards the SettlingPeriods portion of the output (and the corresponding input) at each frequency. The simulated output at each frequency has a transient portion and steady state portion. SettlingPeriods corresponds to the transient components of the output and input signals. The periods following SettlingPeriods are considered to be at steady state. SettlingPeriods Input Output 4 Filters the remaining portion of the output and the corresponding input signals at each input frequency using a bandpass filter. When a model is not at steady state, the response contains low-frequency transient behavior. Filtering typically improves the accuracy of your model by removing the effects of frequencies other than the input frequencies. 3-17 3 Frequency Response Estimation These frequencies are problematic when your sampled data has finite length. These effects are called spectral leakage. frestimate uses a finite impulse response (FIR) filter. The software sets the filter order to match the number of samples in a period such that any transients associated with filtering appear only in the first period of the filtered steady-state output. After filtering, frestimate discards the first period of the input and output signals. SettlingPeriods Filtered portion Input Output Used for estimation You can specify to disable filtering during estimation using the signal ApplyFilteringInFRESTIMATE property. 3-18 Creating Input Signals for Estimation 5 Estimates the frequency response of the processed signal by computing the ratio of the fast Fourier transform of the filtered steady-state portion of the output signal yest(t) and the fast Fourier transform of the filtered input signal uest(t): G(s) ≈ fast Fourier transform of yest (t) fast Fourier transforrm uest (t) To compute the response at each frequency, frestimate uses only the simulation output at that frequency. Creating Chirp Input Signals • “What Is a Chirp Signal?” on page 3-19 • “Create Chirp Signals Using Linear Analysis Tool” on page 3-19 • “Create Chirp Signals (MATLAB Code)” on page 3-22 What Is a Chirp Signal? The swept-frequency cosine (chirp) input signal excites your system at a range of frequencies, such that the input frequency changes instantaneously. Alternatively, you can use the sinestream signal, which excites the system at each frequency for several periods. See “Supported Input Signals” on page 3-9 for more information about choosing your signal. Create Chirp Signals Using Linear Analysis Tool This example shows how to create a chirp input signal based upon a linearized model using the Linear Analysis Tool. 3-19 3 Frequency Response Estimation 1 Obtain a linearized model, linsys1. For example, see “Linearize Simulink Model” on page 2-38, which shows how to linearize a model. 2 In the Linear Analysis Tool, click the Frequency Response Estimation tab. In the Input Signal list, select Chirp. The Create chirp input dialog box opens. 3 In the System list, select linsys1 selected. Click Compute parameters. 3-20 Creating Input Signals for Estimation The software automatically selects frequency points based on the dynamics of linsys1. The software also automatically determines other parameters of the chirp signal, including: • frequency range at which the linear system has interesting dynamics (see the From and To boxes of Frequency Range). • amplitude. • sample time. To avoid aliasing, the Nyquist frequency of the signal is five times the upper end of the frequency range, 2 . 5 * max( FreqRange) • number of samples. • initial phase. • sweep method • sweep shape. 4 Click OK to create the chirp input signal. A new input signal in_chirp1 appears in the Linear Analysis Workspace. 3-21 3 Frequency Response Estimation Create Chirp Signals (MATLAB Code) Create a chirp signal in the most efficient way using a linear model that accurately represents your system dynamics: input = frest.Chirp(sys) sys can be the linear model you obtained using exact linearization techniques. You can also define a linear system based on your insight about the system using the tf, zpk, and ss commands. For example, create a chirp signal from a linearized model: magball io(1) = linio('magball/Desired Height',1); io(2) = linio('magball/Magnetic Ball Plant',... 1,'out'); sys = linearize('magball',io); input = frest.Chirp(sys) 3-22 Creating Input Signals for Estimation The input signal is: FreqRange : [0.0578598408615998 10065.3895573969] (rad/s) Amplitude : 1e-005 Ts : 0.00012484733494616 (sec) NumSamples : 1739616 InitialPhase : 270 (deg) FreqUnits (rad/s or Hz): rad/s SweepMethod(linear/ : linear quadratic/ logarithmic) For more information about chirp signal properties, see the frest.Chirp reference page. You can plot your input signal using plot(input). The mapping between the parameters of the Create chirp input dialog box in the Linear Analysis Tool and the options of frest.Chirp is as follows: Create chirp input dialog box frest.Chirp option Frequency range > From First element associated with the 'FreqRange' option Frequency range > To Second element associated with the 'FreqRange' option Amplitude 'Amplitude' Sample time (sec) 'Ts' Number of samples 'NumSamples' Initial phase (deg) 'InitialPhase' Sweep method 'SweepMethod' Sweep shape 'Shape' 3-23 3 Frequency Response Estimation Modifying Input Signals for Estimation When the frequency response estimation produces unexpected results, you can try modifying the input signal properties in the ways described in “Troubleshooting Frequency Response Estimation” on page 3-49. Modifying Sinestream Input Signal Using Linear Analysis Tool Add Frequency Points to Sinestream Input Signal This example shows how to add frequency points to an existing sinestream input signal using the Linear Analysis Tool. 1 Create a sinestream input signal, in_sine1, as shown in “Create Sinestream Signals Using Linear Analysis Tool” on page 3-10. 2 Double-click in_sine1 in the Linear Analysis Workspace area of the Linear Analysis Tool. The Edit sinestream dialog box opens. 3 In the Frequency content viewer, click in the Frequency content toolbar. The Add frequencies dialog box opens. 4 Enter the frequency range of the points to be added. 5 Click OK to add the specified frequency points to in_sine1. 3-24 Modifying Input Signals for Estimation Delete Frequency Point from Sinestream Input Signal This example shows how to delete frequency points from an existing sinestream input signal using the Linear Analysis Tool. 1 Create a sinestream input signal, in_sine1, as shown in “Create Sinestream Signals Using Linear Analysis Tool” on page 3-10. 2 Double-click in_sine1 in the Linear Analysis Workspace area of the Linear Analysis Tool. The Edit sinestream dialog box opens. 3 In the Frequency content viewer, select the frequency point to delete. The selected point appears blue. Tip To select multiple frequency points, click and drag across the frequency points of interest. 4 Click in the Frequency content toolbar to delete the selected frequency point(s) from the Frequency content viewer. 5 Click OK to save the modified input signal. Modify Parameters for a Frequency Point in Sinestream Input Signal This example shows how to modify signal parameters of an existing sinestream input signal using the Linear Analysis Tool. 3-25 3 Frequency Response Estimation 1 Create a sinestream input signal, in_sine1, as shown in “Create Sinestream Signals Using Linear Analysis Tool” on page 3-10. 2 Double-click in_sine1 in the Linear Analysis Workspace area of the Linear Analysis Tool. The Edit sinestream dialog box opens. 3 In the Frequency content viewer, select the frequency point(s) to delete. The selected point(s) appears blue. 4 Enter the new values for the signal parameters. If the parameter value is, the parameter has different values for some of the frequency points selected. 5 Click OK to save the modified input signal. Modifying Sinestream Input Signal (MATLAB Code) For example, suppose that you used a sinestream input signal, and the output at a specific frequency did not reach steady state. In this case, you can modify the characteristics of the sinestream input at the corresponding frequency. input.NumPeriods(index)=NewNumPeriods; input.SettlingPeriods(index)=NewSettlingPeriods; where index is the frequency value index of the sine wave you want to modify. NewNumPeriods and NewSettlingPeriods are the new values of NumPeriods and SettlingPeriods, respectively. To modify several signal properties at a time, you can use the set command. For example: 3-26 Modifying Input Signals for Estimation input = set(input,'NumPeriods',NewNumPeriods,... 'SettlingPeriods',NewSettlingPeriods) After modifying the input signal, repeat the estimation. 3-27 3 Frequency Response Estimation Estimate Frequency Response Using Linear Analysis Tool This example shows how to perform frequency response estimation for a model using the Linear Analysis Tool. Step 1. Open Simulink model and Linear Analysis Tool. • Open Simulink model. sys = 'scdDCMotor'; open_system(sys); • Open the Linear Analysis Tool for the model. In the Simulink Editor, select Analysis > Control Design > Linear Analysis. Step 2. Create an input signal for estimation. • Click the Frequency Response Estimation tab. • Open the Create sinestream input dialog box. In the Input Signal list, select Sinestream. 3-28 Estimate Frequency Response Using Linear Analysis Tool • Open the Add frequencies dialog box. Click to add frequency points to the input signal. • Specify the frequency range for the input. Enter .1 in the From box and 100 in the To box. Enter 100 in the box for the number of frequency points. Click OK. 3-29 3 Frequency Response Estimation The added points are visible in the Frequency content viewer of the Create sinestream input dialog box. • In the Frequency content viewer of the Create sinestream input dialog box, select all the frequency points. • Specify the amplitude of the input signal. Enter 1 in the Amplitude box. • Create the input sinestream signal. Click OK. The new input signal, in_sine1, appears in the Linear Analysis Workspace. Step 3. Estimate frequency response. Click . The frequency response estimation result, estsys1, appears in the Linear Analysis Workspace. 3-30 Estimate Frequency Response Using Linear Analysis Tool 3-31 3 Frequency Response Estimation Estimate Frequency Response with Linearization-Based Input Using Linear Analysis Tool This example shows how to perform frequency response estimation for a model using the Linear Analysis Tool. The input signal used for estimation is based on the linearization of the model. Step 1. Linearize Simulink model. • Open Simulink model. sys = 'scdDCMotor'; open_system(sys); • Open the Linear Analysis Tool for the model. In the Simulink Editor, select Analysis > Control Design > Linear Analysis. • In the Plot Result list, choose New Bode. • Linearize the model. . A new linearized model, linsys1, appears in the Linear Click Analysis Workspace. The software used the model initial conditions as the operating point to generate linsys1. 3-32 Estimate Frequency Response with Linearization-Based Input Using Linear Analysis Tool Step 2. Create sinestream input signal. • Click the Frequency Response Estimation tab. In this tab, you estimate the frequency response of the model. • Open the Create sinestream input dialog box. Select Sinestream from the Input Signal list to open the Create sinestream input dialog box. 3-33 3 Frequency Response Estimation • Initialize the input signal frequencies and parameters based on linsys1. Click Initialize frequencies and parameters. The Frequency content viewer is populated with frequency points. The software chooses the frequencies and input signal parameters automatically based on the dynamics of linsys1. • In the Frequency content viewer of the Create sinestream input dialog box, select all the frequency points. 3-34 Estimate Frequency Response with Linearization-Based Input Using Linear Analysis Tool • Specify the amplitude of the input signal. Enter 1 in the Amplitude box. • Create the input sinestream signal. Click OK. The input signal in_sine1 appears in the Linear Analysis Workspace. Step 3. Select the plot to display the estimation result. In the Plot Result list, choose Bode Plot 1 to add the next computed linear system to Bode Plot 1. Step 4. Estimate frequency response. . The estimated system, estsys1, appears in the Linear Analysis Click Workspace. 3-35 3 Frequency Response Estimation Step 5. Examine estimation results. Bode Plot 1 now shows the Bode responses for the estimated model and the linearized model. The frequency response for the estimated model matches that of the linearized model. 3-36 Estimate Frequency Response (MATLAB® Code) Estimate Frequency Response (MATLAB Code) Prerequisites • Open Simulink model. Example: mdl = 'f14'; open_system(mdl) To learn more about general model requirements, see “Model Requirements” on page 3-6. • Create an input signal for estimation. Example: io(1) io(2) sys = input = linio('f14/Sum1',1) = linio('f14/Gain5',1,'out') linearize('f14',io); = frest.Sinestream(sys) See “Creating Input Signals for Estimation” on page 3-9. • (Optional) If your model has not reached steady state, initialize the model at a steady state operating point. You can check whether your model is at steady state by simulating the model. See operspec and findop reference pages. 1 Use linearization I/O points to specify input and output points for frequency response estimation. Example: io(1) = linio('f14/Sum1',1) io(2) = linio('f14/Gain5',1,'out') Caution Avoid placing I/O points on bus signals. 3-37 3 Frequency Response Estimation For more information about linearization I/O points, see “Specify Model Portion to Linearize” on page 2-11 and the linio reference page. 2 Identify all source blocks that generate time-varying signals in the signal path of the linearization outputs. Such time-varying signals can interfere with the signal at the linearization output points and produce inaccurate estimation results. a First, use frest.findSources to identify time-varying source blocks that can interfere with estimation. frest.findSources finds all time-varying source blocks in the signal path of the linearization output points. Example: Identify the time-varying source blocks in the f14 model: srcblks = frest.findSources('f14',io); b Next, to disable these blocks during estimation, use frestimateOptions. For example: opts = frestimateOptions; opts.BlocksToHoldConstant = srcblks; For more information, see the frest.findSources and frestimateOptions reference pages. 3 Estimate the frequency response. Example: [sysest,simout] = frestimate('f14',io,input,opts) sysest is the estimated frequency response. simout is the simulated output that is a Simulink.Timeseries object. For more information about syntax and argument descriptions, see the frestimate reference page. 3-38 Estimate Frequency Response (MATLAB® Code) Tip To speed up your estimation or decrease memory requirements, see “Managing Estimation Speed and Memory” on page 3-80. 4 Open the Simulation Results Viewer to analyze the estimated frequency response. For example: frest.simView(simout,input,sysest); You can compare the estimated frequency response (sysest) to a system you linearized using exact linearization (sys): frest.simView(simout,input,sysest,sys); Estimated frequency response Exact linearization results For more information, see “Analyzing Estimated Frequency Response” on page 3-40. 3-39 3 Frequency Response Estimation Analyzing Estimated Frequency Response In this section... “View Simulation Results” on page 3-40 “Interpret Frequency Response Estimation Results” on page 3-43 “Analyze Simulated Output and FFT at Specific Frequencies” on page 3-45 “Annotate Frequency Response Estimation Plots” on page 3-47 “Displaying Estimation Results for Multiple-Input Multiple-Output (MIMO) Systems” on page 3-48 View Simulation Results View Simulation Results Using Linear Analysis Tool Use the Diagnostic Viewer to analyze the results of your frequency response estimation, obtained by performing the steps in “Estimate Frequency Response Using Linear Analysis Tool” on page 3-28. To open the Diagnostic Viewer after performing frequency response estimation in the Linear Analysis Tool: 1 In the Frequency Response Estimation tab, before performing the estimation task, select the Launch Diagnostic Viewer check box. This action sets the Diagnostic Viewer to open when the frequency response estimation is performed. 2 Click 3-40 to estimate the frequency response of the model. Analyzing Estimated Frequency Response The Diagnostic Viewer appears in the plot pane. To open the Diagnostic Viewer to view an estimated model in the Linear Analysis Tool: 1 In the Linear Analysis Tab, select the estimated model using the Select Result list. 2 Select Show diagnostic viewer in the Show Report list. 3-41 3 Frequency Response Estimation View Simulation Results (MATLAB Code) Use the Simulation Results Viewer to analyze the results of your frequency response estimation, obtained by performing the steps in “Estimate Frequency Response (MATLAB Code)” on page 3-37. Open the Simulation Results Viewer using: frest.simView(simout,input,sysest) where simout is the simulated output, input is the input signal you created, and sysest is the estimated frequency response. 3-42 Analyzing Estimated Frequency Response Interpret Frequency Response Estimation Results By default, the Simulation Results Viewer shows these plots: • “Select Plots Displayed in Simulation Results Viewer” on page 3-43 • “Frequency Response” on page 3-43 • “Time Response (Simulated Output)” on page 3-44 • “FFT of Time Response” on page 3-44 Select Plots Displayed in Simulation Results Viewer • To select the plots displayed in the Diagnostic Viewer using the Linear Analysis Tool: 1 In the Figures tab, select the Diagnostic Viewer plot. 2 In the Plot Visibilities section, select the check boxes for the plots that you want to view. To modify plot settings, such as axis frequency units, right-click on a plot, and select the corresponding option. • To select the plots displayed in the Simulation Results Viewer, choose the corresponding plot from the Edit > Plots menu. To modify plot settings, such as axis frequency units, right-click a plot, and select the corresponding option. Frequency Response Use the Bode plot to analyze the frequency response. If the frequency response does not match the dynamics of your system, see “Troubleshooting Frequency 3-43 3 Frequency Response Estimation Response Estimation” on page 3-49 for information about possible causes and solutions. While troubleshooting, you can use the Bode plot controls to view the time response at the problematic frequencies. You can usually improve estimation results by either modifying your input signal or disabling the model blocks that drive your system away from the operating point, and repeating the estimation. Time Response (Simulated Output) Use this plot to check whether the simulated output is at steady state at specific frequencies. If the response has not reached steady state, see “Time Response Not at Steady State” on page 3-49 for possible causes and solutions. If you used the sinestream input for estimation, check both the filtered and the unfiltered time response. You can toggle the display of filtered and unfiltered output by right-clicking the plot and selecting Show filtered steady state output only. If both the filtered and unfiltered response appear at steady state, then your model must be at steady state. You can explore other possible causes in “Troubleshooting Frequency Response Estimation” on page 3-49. Note If you used the sinestream input for estimation, toggling the filtered and unfiltered display only updates the Time Response and FFT plots. This selection does not change estimation results. For more information about filtering during estimation, see “How Frequency Response Estimation Treats Sinestream Inputs” on page 3-15. FFT of Time Response Use this plot to analyze the spectrum of the simulated output. For example, you can use the spectrum to identify strong nonlinearities. When the FFT plot shows large amplitudes at frequencies other than the input signal, your model is operating outside of linear range. If you are interested in analyzing the linear response of your system for small perturbations, explore possible solutions in “FFT Contains Large Harmonics at Frequencies Other than the Input Signal Frequency” on page 3-53. 3-44 Analyzing Estimated Frequency Response Analyze Simulated Output and FFT at Specific Frequencies Using the Diagnostic Viewer in Linear Analysis Tool To analyze the results in the Diagnostic Viewer, use the controls in the Figures tab of the Linear Analysis Tool. 1 In the Figures tab, select the Diagnostic Viewer plot. 2 In the Frequency Selector section, specify the frequency range that you want to inspect. Use the frequency units used in the Bode plot in the Diagnostic Viewer. Using the Simulation Results Viewer In the Simulation Results Viewer, use Bode controls to display the simulated output and its spectrum at specific frequencies. If you used the sinestream input signal in the estimation: • Drag arrows individually to display the time response and FFT at specific frequencies. • Drag the shaded region to shift the time response and FFT to a different frequency range. 3-45 3 Frequency Response Estimation Select one or more specific frequencies. Shift frequency range. If you used the chirp input signal in the estimation, drag the shaded region to increase or decrease the frequency range of the displayed time response and FFT. Increase or decrease selected frequency range. 3-46 Analyzing Estimated Frequency Response Annotate Frequency Response Estimation Plots You can display a data tip on the Time Response, FFT, and Bode plots in the Simulation Results Viewer by clicking the corresponding curve. Dragging the data tip updates the information. Data tips are useful for correcting poor estimation results at a specific sinestream frequency, which requires you to modify the input at a specific frequency. You can use the data tip to identify the frequency index where the response does not match your system. In the previous figure, the Time Response data tip shows that the frequency index is 11. You can use this frequency index to modify the corresponding portion of the input signal. For example, to modify the NumPeriods and SettlingPeriods properties of the sinestream signal, using MATLAB code: input.NumPeriods(11) = 80; 3-47 3 Frequency Response Estimation input.SettlingPeriods(11) = 75; To modify the sinestream in the Linear Analysis Tool, see “Modifying Sinestream Input Signal Using Linear Analysis Tool” on page 3-24 Displaying Estimation Results for Multiple-Input Multiple-Output (MIMO) Systems For MIMO systems, view frequency response information for specific input and output channels: 1 In the Simulation Results Viewer, right-click any plot, and select I/O Selector. 2 Choose the input channel in the From list. Choose the output channel in the To list. 3-48 Troubleshooting Frequency Response Estimation Troubleshooting Frequency Response Estimation In this section... “When to Troubleshoot” on page 3-49 “Time Response Not at Steady State” on page 3-49 “FFT Contains Large Harmonics at Frequencies Other than the Input Signal Frequency” on page 3-53 “Time Response Grows Without Bound” on page 3-55 “Time Response Is Discontinuous or Zero” on page 3-57 “Time Response Is Noisy” on page 3-59 When to Troubleshoot After you estimate the frequency response, you can analyze the results. If the frequency response plot does not match the expected behavior of your system, you can use the time response and FFT plots to help you improve the results. If your estimation is slow or you run out of memory during estimation, see “Managing Estimation Speed and Memory” on page 3-80. Time Response Not at Steady State What Does This Mean? This time response has not reached steady state. 3-49 3 Frequency Response Estimation This plot shows a steady-state time response. 3-50 Troubleshooting Frequency Response Estimation Because frequency response estimation requires steady-state input and output signals, transients produce inaccurate estimation results. For sinestream input signals, transients sometimes interfere with the estimation either directly or indirectly through spectral leakage. For chirp input signals, transients interfere with estimation. 3-51 3 Frequency Response Estimation How Do I Fix It? Possible Cause Action Model cannot initialize to steady state. • Increase the number of periods for frequencies that do not reach steady state by changing the NumPeriods and SettlingPeriods properties. See “Modifying Input Signals for Estimation” on page 3-24. • Disable all time-varying source blocks in your model and repeat the estimation. See “Effects of Time-Varying Source Blocks on Frequency Response Estimation” on page 3-62. (Sinestream input) Not enough periods for the output to reach steady state. • Increase the number of periods for frequencies that do not reach steady state by changing the NumPeriods and SettlingPeriods. See “Modifying Input Signals for Estimation” on page 3-24. • Check that filtering is enabled during estimation. You enable filtering by setting the ApplyFilteringInFRESTIMATE option to on. For information about how estimation uses filtering, see the frestimate reference page. (Chirp input) Signal sweeps through the frequency range too quickly. Increase the simulation time by increasing NumSamples. See “Modifying Input Signals for Estimation” on page 3-24. After you try the suggested actions, recompute the estimation either: • At all frequencies • In a particular frequency range (only for sinestream input signals) To recompute the estimation in a particular frequency range: 3-52 Troubleshooting Frequency Response Estimation 1 Determine the frequencies for which you want to recompute the estimation results. Then, extract a portion of the sinestream input signal at these frequencies using fselect. For example, these commands extract a sinestream input signal between 10 and 20 rad/s from the input signal input: input2 = fselect(input,10,20); 2 Modify the properties of the extracted sinestream input signal input2, as described in “Modifying Input Signals for Estimation” on page 3-24. 3 Estimate the frequency response sysest2 with the modified input signal using frestimate. 4 Merge the original estimated frequency response sysest and the recomputed estimated frequency response sysest2: a Remove data from sysest at the frequencies in sysest2 using fdel. For example: sysest = fdel(sysest,input2.Frequency) b Concatenate the original and recomputed responses using fcat. For example: sys_combined = fcat(sysest2,sysest) You can analyze the recomputed frequency response, as described in “Analyzing Estimated Frequency Response” on page 3-40. For an example of frequency response estimation with time-varying source blocks, see “Effects of Time-Varying Source Blocks on Frequency Response Estimation” on page 3-62 FFT Contains Large Harmonics at Frequencies Other than the Input Signal Frequency What Does This Mean? When the FFT plot shows large amplitudes at frequencies other than the input signal, your model is operating outside the linear range. This condition 3-53 3 Frequency Response Estimation can causes problems when you want to analyze your linear system response to small perturbations. For models operating in the linear range, the input amplitude A1 in y(t) must be larger than the amplitudes of other harmonics, A2 and A3. u(t) model y(t) u(t) = A1 sin(1 + 1 ) y(t) = A1 sin(1 + 1 ) + A2 sin(2 + 2 ) + A3 sin(3 + 3 ) + ... 3-54 Troubleshooting Frequency Response Estimation How Do I Fix It? Adjust the amplitude of your input signal to decrease the impact of other harmonics, and repeat the estimation. Typically, you should decrease the input amplitude level to keep the model operating in the linear range. For more information about modifying signal amplitudes, see one of the following: • frest.Sinestream • frest.Chirp • “Modifying Input Signals for Estimation” on page 3-24 Time Response Grows Without Bound What Does This Mean? When the time response grows without bound, frequency response estimation results are inaccurate. Frequency response estimation is only accurate close to the operating point. 3-55 3 Frequency Response Estimation How Do I Fix It? Try the suggested actions listed the table and repeat the estimation. 3-56 Possible Cause Action Model is unstable. You cannot estimate the frequency response using frestimate. Instead, use exact linearization to get a linear representation of your model. See “Linearize at Model Operating Point” on page 2-38 or the linearize reference page. Stable model is not at steady state. Disable all source blocks in your model, and repeat the estimation using a steady-state operating point. See “Steady-State Operating Troubleshooting Frequency Response Estimation Possible Cause Action Points (Trimming) from Specifications” on page 1-14. Stable model captures a growing transient. If the model captures a growing transient, increase the number of periods in the input signal by changing NumPeriods. Repeat the estimation using a steady-state operating point. Time Response Is Discontinuous or Zero What Does This Mean? Discontinuities or noise in the time response indicate that the amplitude of your input signal is too small to overcome the effects of the discontinuous blocks in your model. Examples of discontinuous blocks include Quantizer, Backlash, and Dead Zones. If you used a sinestream input signal and estimated with filtering, turn filtering off in the Simulation Results Viewer to see the unfiltered time response. The following model with a Quantizer block shows an example of the impact of an input signal that is too small. When you estimate this model, the unfiltered simulation output includes discontinuities. 3-57 3 Frequency Response Estimation How Do I Fix It? Increase the amplitude of your input signal, and repeat the estimation. With a larger amplitude, the unfiltered simulated output of the model with a Quantizer block is smooth. 3-58 Troubleshooting Frequency Response Estimation For more information about modifying signal amplitudes, see one of the following: • frest.Sinestream • frest.Chirp • “Modifying Input Signals for Estimation” on page 3-24 Time Response Is Noisy What Does This Mean? When the time response is noisy, frequency response estimation results may be biased. 3-59 3 Frequency Response Estimation How Do I Fix It? frestimate does not support estimating frequency response estimation of Simulink models with blocks that model noise. Locate such blocks with frest.findSources and disable them using the BlocksToHoldConstant option of frestimate. If you need to estimate a model with noise, use frestimate to simulate an output signal from your Simulink model for estimation—without modifying your model. Then, use the Signal Processing Toolbox™ or System Identification Toolbox software to estimate a model. To simulate the output of your model in response to a specified input signal: 3-60 Troubleshooting Frequency Response Estimation 1 Create a random input signal. For example: in = frest.Random('Ts',0.001,'NumSamples',1e4); You can also specify your own custom signal as a timeseries object. For example: t = 0:0.001:10; y = sin(2*pi*t); in_ts = timeseries(y,t); 2 Simulate the model to obtain the output signal. For example: [sysest,simout] = frestimate(model,op,io,in_ts) The second output argument of frestimate, simout, is a Simulink.Timeseries object that stores the simulated output. in_ts is the corresponding input data. 3 Generate timeseries objects before using with other MathWorks® products: input = generateTimeseries(in_ts); output = simout{1}.Data; You can use data from timeseries objects directly in Signal Processing Toolbox software, or convert these objects to System Identification Toolbox data format. For examples, see “Estimating Frequency Response Models with Noise Using Signal Processing Toolbox” on page 3-74 and “Estimating Frequency Response Models with Noise Using System Identification Toolbox” on page 3-76. For a related example, see “Effects of Noise on Frequency Response Estimation” on page 3-72. 3-61 3 Frequency Response Estimation Effects of Time-Varying Source Blocks on Frequency Response Estimation Setting Time-Varying Sources to Constant for Estimation Using Linear Analysis Tool This example illustrates the effects of time-varying sources on estimation. The example also shows how to set time-varying sources to be constant during estimation to improve estimation results. 1 Open the Simulink model. sys = 'scdspeed_ctrlloop'; open_system(sys); 2 Linearize the model. a Set the Engine Model block to normal mode for accurate linearization. set_param('scdspeed_ctrlloop/Engine Model','SimulationMode','Normal') b Open the Linear Analysis Tool for the model. In the Simulink Editor, select Analysis > Control Design > Linear Analysis. c Select the visualization for the linearized model. In the Plot Result list, select New Bode. d Click . The linearized model, linsys1, appears in the Linear Analysis Workspace. 3 Create an input sinestream signal for the estimation. a Open the Create sinestream input dialog box. In the Frequency Response Estimation tab, select Sinestream in the Input Signal list. b Open the Add frequencies dialog box. 3-62 Effects of Time-Varying Source Blocks on Frequency Response Estimation Click . c Specify the input sinestream frequency range and number of frequency points. Enter 100 in the To box. Enter 10 in the box for the number of frequency points. Click OK. The added points are visible in the Frequency content viewer of the Create sinestream input dialog box. d In the Frequency content viewer of the Create sinestream input dialog box, select all the frequency points. e Specify input sinestream parameters. 3-63 3 Frequency Response Estimation For this example, change the Number of periods and Settling periods to ensure that the model reaches steady-state for each frequency point in the input sinestream. Enter 30 in the Number of periods box. Enter 25 in the Settling periods box. f Create the input sinestream. Click OK. The new input signal, in_sine1, appears in the Linear Analysis Workspace. 4 Select the visualization for the estimated model. In the Plot Result list of the Linear Analysis Tool, select Bode Plot 1. 5 Set the Diagnostic Viewer to open when estimation is performed. Select the Launch Diagnostic Viewer check box. 6 Estimate the frequency response for the model. Click . The frequency response estimation result, estsys1, appears in the Linear Analysis Workspace. 7 Compare the estimated model and the linearized model. a Click the Diagnostic Viewer - estsys1 tab in the plot pane of the Linear Analysis Tool. b Click and drag linsys1 onto the Diagnostic Viewer to add linsys1 to the Diagnostic Viewer plots. c Click the Figures tab of the Linear Analysis Tool. 3-64 Effects of Time-Varying Source Blocks on Frequency Response Estimation d Configure the Diagnostic Viewer to show only the frequency point where the estimation and linearization results do not match. In the Frequency Selector section, enter 9 in the From box and 11 in the To box to set the frequency range that is analyzed in the Diagnostic Viewer. 3-65 3 Frequency Response Estimation The Filtered Steady State Time Response plot depicts a signal that is not sinusoidal. e View the unfiltered time response. Right-click the Filtered Steady State Time Response plot and clear the Show filtered steady state output only option. 3-66 Effects of Time-Varying Source Blocks on Frequency Response Estimation The step input and external disturbances drive the model away from the operating point that the linearized model uses. This prevents the response from reaching steady-state. To correct this problem, find and disable the time-varying source blocks that interfere with the estimation. Then estimate the frequency response of the model again. 8 Find and disable the time-varying sources within the model. a Open the Options for frequency response estimation dialog box. On the Frequency Response Estimation tab, in the Generate Results section, click Options. b In the Time Varying Sources tab, click Find and add time varying source blocks automatically. This action populates the time varying sources list with the block paths of the time varying sources in the model. These sources will be held constant during estimation. 3-67 3 Frequency Response Estimation 9 Estimate the frequency response for the model. Click . The frequency response estimation result for the model, estsys2, appears in the Linear Analysis Workspace. 10 Compare the newly estimated model and the linearized model. Click on the Diagnostic Viewer - estsys2 tab in the plot area of the Linear Analysis Tool. Click and drag linsys1 onto the Diagnostic Viewer to add linsys1 to the Diagnostic Viewer plots. 3-68 Effects of Time-Varying Source Blocks on Frequency Response Estimation The frequency response obtained by holding the time-varying sources constant matches the exact linearization results. Setting Time-Varying Sources to Constant for Estimation (MATLAB Code) Compare the linear model obtained using exact linearization techniques with the estimated frequency response: % Open the model mdl = 'scdspeed_ctrlloop'; open_system(mdl) io = getlinio(mdl); % Set the model reference to normal mode for accurate linearization set_param('scdspeed_ctrlloop/Engine Model','SimulationMode','Normal') % Linearize the model sys = linearize(mdl,io); % Estimate the frequency response between 10 and 100 rad/s in = frest.Sinestream('Frequency',logspace(1,2,10),'NumPeriods',30,'SettlingPeriods',25); [sysest,simout] = frestimate(mdl,io,in); % Compare the results frest.simView(simout,in,sysest,sys) The linearization results do not match the estimated frequency response for the first two frequencies. To view the unfiltered time response, right-click the time response plot, and uncheck Show filtered steady state output only. 3-69 3 Frequency Response Estimation The step input and external disturbances drive the model away from the operating point, preventing the response from reaching steady-state. To correct this problem, find and disable these time-varying source blocks that interfere with the estimation. Identify the time-varying source blocks using frest.findSources: srcblks = frest.findSources(mdl,io); Create a frestimate options set to disable the blocks. opts = frestimateOptions; opts.BlocksToHoldConstant = srcblks; Repeat the frequency response estimation using the optional input argument opts. [sysest2,simout2] = frestimate(mdl,io,in,opts); frest.simView(simout2,in,sysest2,sys); 3-70 Effects of Time-Varying Source Blocks on Frequency Response Estimation Now the resulting frequency response matches the exact linearization results. To view the unfiltered time response, right-click the time response plot, and uncheck Show filtered steady state output only. 3-71 3 Frequency Response Estimation Effects of Noise on Frequency Response Estimation Compare the linear model obtained using exact linearization techniques with the estimated frequency response: mdl = 'f14'; open_system(mdl) io(1) = linio('f14/Sum1',1) io(2) = linio('f14/Gain5',1,'out') sys = linearize(mdl,io); in = frest.Sinestream(sys); [sysest,simout] = frestimate(mdl,io,in); frest.simView(simout,in,sysest,sys) The resulting frequency response does not match the linearization results due to the effects of the Pilot and Wind Gust Disturbance blocks. To view the effects of effects of the noise on the time response of the first frequency, right-click the time response plot and select Show filtered steady state output only. 3-72 Effects of Noise on Frequency Response Estimation Locate the source blocks: srcblks = frest.findSources(mdl,io); Repeat the frequency response estimation with the source blocks disabled: opts = frestimateOptions('BlocksToHoldConstant',srcblks); [sysest,simout] = frestimate(mdl,io,in,opts); frest.simView(simout,in,sysest,sys); The resulting frequency response matches the exact linearization results. 3-73 3 Frequency Response Estimation Estimating Frequency Response Models with Noise Using Signal Processing Toolbox Open the Simulink model, and specify which portion of the model to linearize: load_system('magball'); io(1) = linio('magball/Desired Height',1); io(2) = linio('magball/Magnetic Ball Plant',1,'out'); Create a random input signal for simulation: in = frest.Random('Ts',0.001,'NumSamples',1e4); Linearize the model at a steady-state operating point: op = findop('magball',operspec('magball'),... linoptions('DisplayReport','off')); sys = linearize('magball',io,op); Simulate the model to obtain the output at the linearization output point: [sysest,simout] = frestimate('magball',io,in,op); Estimate a frequency response model using Signal Processing Toolbox software, which includes windowing and averaging: input = generateTimeseries(in); output = detrend(simout{1}.Data,'constant'); [Txy,F] = tfestimate(input.Data(:),... output,hanning(4000),[],4000,1/in.Ts); systfest = frd(Txy,2*pi*F); Compare the results of analytical linearization and tfestimate: ax=axes; h = bodeplot(ax,sys,'b',systfest,'g',systfest.Frequency); setoptions(h,'Xlim',[10,1000],'PhaseVisible','off'); legend(ax,'Linear model using LINEARIZE','Frequency response using Signal Processing Toolbox',... 'Location','SouthWest') 3-74 Estimating Frequency Response Models with Noise Using Signal Processing Toolbox™ In this case, the Signal Processing Toolbox command tfestimate gives a more accurate estimation than frestimate due to windowing and averaging. 3-75 3 Frequency Response Estimation Estimating Frequency Response Models with Noise Using System Identification Toolbox Open the Simulink model, and specify which portion of the model to linearize: load_system('magball'); io(1) = linio('magball/Desired Height',1); io(2) = linio('magball/Magnetic Ball Plant',1,'out'); Compute the steady-state operating point, and linearize the model: op = findop('magball',operspec('magball'),... linoptions('DisplayReport','off')); sys = linearize('magball',io,op); Create a chirp signal, and use it to estimate the frequency response: in = frest.Chirp('FreqRange',[1 1000],... 'Ts',0.001,... 'NumSamples',1e4); [~,simout] = frestimate('magball',io,op,in); Use System Identification Toolbox software to estimate a fifth-order, state-space model. Compare the results of analytical linearization and the state-space model: input = generateTimeseries(in); output = simout{1}.Data; data = iddata(output,input.Data(:),in.Ts); sys_id = n4sid(detrend(data),5,'cov','none'); bodemag(sys,ss(sys_id('measured')),'r') legend('Linear model obtained using LINEARIZE',... 'State-space model using System Identification Toolbox',... 'Location','SouthWest') 3-76 Estimating Frequency Response Models with Noise Using System Identification Toolbox™ 3-77 3 Frequency Response Estimation Generate MATLAB Code for Repeated or Batch Frequency Response Estimation This topic shows how to generate MATLAB code for frequency response estimation from the Linear Analysis Tool. You can generate either a MATLAB script or a MATLAB function. Generated MATLAB scripts are useful when you want to programmatically reproduce a result you obtained interactively. A generated MATLAB function allows you to perform multiple estimations with systematic variations in estimation parameters such as operating point (batch estimation). To generate MATLAB code for estimation: 1 In Linear Analysis Tool, on the Frequency Response Estimation tab, interactively configure the input signal, analysis I/Os, operating point, and other parameters for frequency response estimation. 2 Click Estimate to open the Generate Matlab Code menu. 3 Select the type of code you want to generate: • Script with current values — Generate a MATLAB script that uses your configured parameter values. Select this option when you want to repeat the same frequency response estimation at the MATLAB command line. • Function with input arguments — Generate a MATLAB function that takes analysis I/Os, operating points, and input signals as input 3-78 Generate MATLAB® Code for Repeated or Batch Frequency Response Estimation arguments. Select this option when you want to perform multiple frequency response estimations using different parameter values (batch estimation). To use a generated MATLAB function for batch estimation, you can create a MATLAB script with a for loop that cycles through values of the parameter you want to vary. Call the generated MATLAB function in each iteration of the loop. 3-79 3 Frequency Response Estimation Managing Estimation Speed and Memory In this section... “Ways to Speed up Frequency Response Estimation” on page 3-80 “Speeding Up Estimation Using Parallel Computing” on page 3-82 “Managing Memory During Frequency Response Estimation” on page 3-86 Ways to Speed up Frequency Response Estimation The most time consuming operation during frequency response estimation is the simulation of your Simulink model. You can try to speed up the estimation using any of the following ways: • “Reducing Simulation Stop Time” on page 3-80 • “Specifying Accelerator Mode” on page 3-82 • “Using Parallel Computing” on page 3-82 Reducing Simulation Stop Time The time it takes to perform frequency response estimation depends on the simulation stop time. To obtain the simulation stop time, select the input signal in the Linear Analysis Workspace are of the Linear Analysis Tool. The simulation time will be displayed in the Variable Preview. 3-80 Managing Estimation Speed and Memory To obtain the simulation stop time from the input signal using MATLAB Code: tfinal = getSimulationTime(input) where input is the input signal. The simulation stop time, tfinal, serves as an indicator of the frequency response estimation duration. You can reduce the simulation time by modifying your signal properties. Input Signal Action Caution Sinestream Decrease the number of periods per frequency NumPeriods, especially at lower frequencies. You model must be at steady state to achieve accurate frequency response estimation. Reducing the number of periods might not excite your model long enough to reach steady state. Chirp Decrease the signal sample time Ts or the number of samples NumSamples. The frequency resolution of the estimated response depends on the number of samples NumSamples. Decreasing the number of samples decreases the frequency resolution of the estimated frequency response. 3-81 3 Frequency Response Estimation For information about modifying input signals, see “Modifying Input Signals for Estimation” on page 3-24. Specifying Accelerator Mode You can try to speed up frequency response estimation by specifying the Rapid Accelerator or Accelerator mode in Simulink. For more information, see “What Is Acceleration?” in the Simulink documentation. Using Parallel Computing You can try to speed up frequency response estimation using parallel computing in the following situations: • Your model has multiple inputs. • Your single-input model uses a sinestream input signal, where the sinestream SimulationOrder property has the value 'OneAtATime'. For information on setting this option, see the frest.Sinestream reference page. In these situations, frequency response estimation performs multiple simulations. If you have installed the Parallel Computing Toolbox™ software, you can run these multiple simulations in parallel on multiple MATLAB sessions (pool of MATLAB workers). For more information about using parallel computing, see “Speeding Up Estimation Using Parallel Computing” on page 3-82. Speeding Up Estimation Using Parallel Computing You can use parallel computing to speed up frequency response estimation that performs multiple simulations, as described in “Using Parallel Computing” on page 3-82. Parallel computing for frequency response estimation requires the following operations: 3-82 Managing Estimation Speed and Memory • “Configuring MATLAB for Parallel Computing” on page 3-83 • “Estimating Frequency Response Using Parallel Computing (MATLAB Code)” on page 3-85 Configuring MATLAB for Parallel Computing • “Configuring Parallel Computing on Multicore Processors” on page 3-83 • “Configuring Parallel Computing on Multiprocessor Networks” on page 3-83 After you configure your system for parallel computing, estimate using parallel computing. For further information, see “Estimating Frequency Response Using Parallel Computing (MATLAB Code)” on page 3-85. Configuring Parallel Computing on Multicore Processors. With a Parallel Computing Toolbox license, you can establish a pool of parallel MATLAB sessions in addition to the MATLAB client. To start a pool of MATLAB sessions in local configuration, type the following input at the MATLAB prompt: matlabpool open local To learn more, see the matlabpool reference page in the Parallel Computing Toolbox documentation. Configuring Parallel Computing on Multiprocessor Networks. Using parallel computing on a multiprocessor network requires Parallel Computing Toolbox software and the MATLAB Distributed Computing Server™ software. To learn more, see the Parallel Computing Toolbox and MATLAB Distributed Computing Server documentation. To configure a multiprocessor network for parallel computing: 1 Create a cluster profile to include any model file dependencies. See “Cluster Profiles” in the Parallel Computing Toolbox documentation. 2 Open the pool of MATLAB workers using the profile. See “Cluster Profiles” in the Parallel Computing Toolbox documentation. 3-83 3 Frequency Response Estimation Opening the pool allows the remote workers to access the file dependencies included in the user configuration file. Estimating Frequency Response Using Parallel Computing Using Linear Analysis Tool After you configure your parallel computing settings, as described in “Configuring MATLAB for Parallel Computing” on page 3-83, you can estimate the frequency response of a Simulink model using the Linear Analysis Tool. 1 In the Frequency Response Estimation tab of the Linear Analysis Tool, click Options. This action opens the Options for frequency response estimation dialog box. 2 In the Parallel Options tab, select the Use the matlabpool during estimation check box. This action sets the estimation to use the matlabpool. 3 (Optional) Click Add path dependecy. The Browse For Folder dialog box opens. Navigate and select the directory to add to the model path dependencies. Click OK. 3-84 Managing Estimation Speed and Memory Tip Alternatively, manually specify the paths in the Model path dependencies list. You can specify the paths separated with a new line. 4 (Optional) Click Sync path dependencies from model. This action finds the model path dependencies in your Simulink model and adds them to the Model path dependencies list box. Estimating Frequency Response Using Parallel Computing (MATLAB Code) After you configure your parallel computing settings, as described in “Configuring MATLAB for Parallel Computing” on page 3-83, you can estimate the frequency response of a Simulink model. 1 Find the paths to files that your Simulink model requires to run, called path dependencies. dirs = frest.findDepend(model) dirs is a cell array of strings containing path dependencies, such as referenced models, data files, and S-functions. For more information about this command, see the frest.findDepend reference page. To learn more about model dependencies, see “What Are Model Dependencies?” and “Scope of Dependency Analysis” in the Simulink documentation. 2 (Optional) Check that dirs includes all path dependencies. Append any missing paths to dirs: dirs = vertcat(dirs,'\\hostname\C$\matlab\work') 3 (Optional) Check that all workers have access to the paths in dirs. If any of the paths resides on your local drive, specify that all workers can access your local drive. For example, this command converts all references 3-85 3 Frequency Response Estimation to the C drive to an equivalent network address that is accessible to all workers: dirs = regexprep(dirs,'C:/','\\\\hostname\\C$\\') 4 Enable parallel computing and specify model path dependencies by creating an options object using the frestimateOptions command: options = frestimateOptions('UseParallel','on','ParallelPathDependencies',dirs) Tip To enable parallel computing for all estimations, select the global preference Use the matlabpool in FRESTIMATE command check box in the MATLAB preferences. If your model has path dependencies, you must create your own frequency response options object that specifies the path dependencies before beginning estimation. 5 Estimate the frequency response: [sysest,simout] = frestimate('model',io,input,options) For an example of using parallel computing to speed up estimation, see Speeding Up Frequency Response Estimation Using Parallel Computing. Managing Memory During Frequency Response Estimation Frequency response estimation terminates when the simulation data exceed available memory. Insufficient memory occurs in the following situations: • Your model performs data logging during a long simulation. A sinestream input signal with four periods at a frequency of 1e-3 rad/s runs a Simulink simulation for 25,000 s. If you are logging signals using To Workspace blocks, this length of simulation time might cause memory problems. • A model with an output point discrete sample time of 1e-8 s that simulates 0 .2 at 5-Hz frequency (0.2 s of simulation per period), results in =2 1e − 8requires million samples of data per period. Typically, this amount of data over 300 MB of storage. 3-86 Managing Estimation Speed and Memory To avoid memory issues while estimating frequency response: 1 Disable any signal logging in your Simulink model. To learn how you can identify which model components log signals and disable signal logging, see “Signal Logging”. 2 Try one or more of the actions listed in the following sections: • “Model-Specific Ways to Avoid Memory Issues” on page 3-87 • “Input-Signal-Specific Ways to Avoid Memory Issues” on page 3-88 3 Repeat the estimation. Model-Specific Ways to Avoid Memory Issues To avoid memory issues, try one or more of the actions listed in the following table, as appropriate for your model type. Model Type Action Models with fast discrete sample time specified at output point Insert a Rate Transition block at the output point to lower the sample rate, which decreases the amount of logged data. Move the linearization output point to the output of the Rate Transition block before you estimate. Ensure that the location of the original output point does not have aliasing as a result of rate conversion. 3-87 3 Frequency Response Estimation Model Type Action Original location of output point New location of output point For information on determining sample rate, see “View Sample Time Information”. If your estimation is slow, see “Ways to Speed up Frequency Response Estimation” on page 3-80. Models with multiple input and output points (MIMO models) • Estimate the response for all input/output combinations separately. Then, combine the results into one MIMO model using the data format described in “Frequency-Response Model”. • Use parallel computing to run the independent simulations in parallel on different computers. See “Speeding Up Estimation Using Parallel Computing” on page 3-82. Input-Signal-Specific Ways to Avoid Memory Issues To avoid memory issues, try one or more of the actions listed in the following table, as appropriate for your input signal type. 3-88 Managing Estimation Speed and Memory Input Signal Type Action Sinestream • Remove low frequencies from your input signal for which you do not need the frequency response. • Modify the sinestream signal to estimate each frequency separately by setting the SimulationOrder option to OneAtATime. Then estimate using a frestimate syntax that does not request the simulated time-response output data, for example sysest = frestimate(model,io,input). • Use parallel computing to run independent simulations in parallel on different computers. See “Speeding Up Estimation Using Parallel Computing” on page 3-82. • Divide the input signal into multiple signals using fselect. Estimate the frequency response for each signal separately using frestimate. Then, combine results using fcat. Chirp Create separate input signals that divide up the swept frequency range of the original signal into smaller sections using frest.Chirp. Estimate the frequency response for each signal separately using frestimate. Then, combine results using fcat. Random Decrease the number of samples in the random input signal by changing NumSamples before estimating. See 3-89 3 Frequency Response Estimation Input Signal Type Action “Time Response Is Noisy” on page 3-59. 3-90 4 Designing Compensators • “Choosing a Compensator Design Approach” on page 4-2 • “Introduction to Automatic PID Tuning” on page 4-3 • “What Plant Does the PID Tuner See?” on page 4-4 • “PID Tuning Algorithm” on page 4-5 • “Designing Controllers with the PID Tuner” on page 4-6 • “Designing Two-Degree-of-Freedom PID Controllers” on page 4-18 • “Tuning a PID Controller Within a Model Reference” on page 4-20 • “Troubleshooting Automatic PID Tuning” on page 4-23 • “Designing a Simulink PID Controller (2DOF) Block for a Reactor” on page 4-29 • “Designing PID Controller in Simulink with Estimated Frequency Response” on page 4-43 • “Designing a Family of PID Controllers for Multiple Operating Points” on page 4-50 • “Design and Analysis of Control Systems” on page 4-57 4 Designing Compensators Choosing a Compensator Design Approach Simulink Control Design provides two tools to tune Simulink blocks, such as Transfer function and PID Controller blocks: • PID Tuner • SISO Design Tool Use the following table to determine which tool supports what you want to do. PID Tuner SISO Design Tool Supported Blocks PID Controller PID Controller 2DOF Linear blocks Loop Structure Single-loop control systems Single- or multi-loop control systems Control Design Approach Simple automatic PID gain tuning by specifying system response time and stability margins Graphically tune poles and zeros on design plots, such as Bode, root locus, and Nichols Step response for reference tracking and disturbance rejection Any combination of responses for any input reference or disturbance in your Simulink model using SISO Tool LTIViewer Analysis of Control System Performance Open-loop Bode and Nichols charts Use a PID, LQG, IMC, Robust Control Loop Shaping, and Simulink Design Optimization automated tuning method If you have a nonlinear plant, the software automatically linearizes your model before tuning the controller blocks. 4-2 Introduction to Automatic PID Tuning Introduction to Automatic PID Tuning You can use the Simulink Control Design PID Tuner to tune PID gains automatically in a Simulink model containing a PID Controller or PID Controller (2DOF) block. The PID Tuner allows you to achieve a good balance between performance and robustness for either one- or two-degree-of-freedom PID controllers. The PID Tuner: • Automatically computes a linear model of the plant in your model. The PID Tuner considers the plant to be the combination of all blocks between the PID controller output and input. Thus, the plant includes all blocks in the control loop, other than the controller itself. See “What Plant Does the PID Tuner See?” on page 4-4. • Automatically computes an initial PID design with a good trade-off between performance and robustness. The PID Tuner bases the initial design upon the open-loop frequency response of the linearized plant. See “PID Tuning Algorithm” on page 4-5. • Provides the PID Tuner GUI to help you interactively refine the performance of the PID controller to meet your design requirements. See “Designing Controllers with the PID Tuner” on page 4-6. You can use the PID Tuner to design one- or two-degree-of-freedom PID controllers. You can often achieve both good setpoint tracking and good disturbance rejection using a one-degree-of-freedom PID controller. However, depending upon the dynamics in your model, using a one-degree-of-freedom PID controller can require a trade-off between setpoint tracking and disturbance rejection. In such cases, if you need both good setpoint tracking and good disturbance rejection, use a two-degree-of-freedom PID Controller. For examples of tuning one- and two-degree-of-freedom PID compensators, see: • Automated Tuning of Simulink PID Controller Block • “Designing a Simulink PID Controller (2DOF) Block for a Reactor” on page 4-29 4-3 4 Designing Compensators What Plant Does the PID Tuner See? The PID Tuner considers as the plant all blocks in the loop between the PID Controller block output and input. The blocks in your plant can include nonlinearities. Because automatic tuning requires a linear model, the PID Tuner computes a linearized approximation of the plant in your model. This linearized model is an approximation to a nonlinear system, which is generally valid in a small region around a given operating point of the system. By default, the PID Tuner linearizes your plant using the initial conditions specified in your Simulink model as the operating point. The linearized plant can be of any order and can include any time delays. The PID tuner designs a controller for the linearized plant. In some circumstances, however, you want to design a PID controller for a different operating point from the one defined by the model initial conditions. For example: • The Simulink model has not yet reached steady-state at the operating point specified by the model initial conditions, and you want to design a controller for steady-state operation. • You are designing multiple controllers for a gain-scheduling application and must design each controller for a different operating point. In such cases, change the operating point used by the PID Tuner. See “Opening the Tuner” on page 4-6. For more information about linearization, see “Linearizing Nonlinear Models” on page 2-2. 4-4 PID Tuning Algorithm PID Tuning Algorithm Typical PID tuning objectives include: • Closed-loop stability — The closed-loop system output remains bounded for bounded input. • Adequate performance — The closed-loop system tracks reference changes and suppresses disturbances as rapidly as possible. The larger the loop bandwidth (the frequency of unity open-loop gain), the faster the controller responds to changes in the reference or disturbances in the loop. • Adequate robustness — The loop design has enough gain margin and phase margin to allow for modeling errors or variations in system dynamics. MathWorks algorithm for tuning PID controllers meets these objectives by tuning the PID gains to achieve a good balance between performance and robustness. The algorithm designs an initial controller by choosing a bandwidth to achieve that balance, based upon the open-loop frequency response of your linearized model. When you interactively change the response time, bandwidth, or phase margin using the PID Tuner interface, the algorithm computes new PID gains. (See “Designing Controllers with the PID Tuner” on page 4-6 for information about using the PID Tuner interactively.) 4-5 4 Designing Compensators Designing Controllers with the PID Tuner In this section... “Prerequisites for PID Tuning” on page 4-6 “Opening the Tuner” on page 4-6 “Analyzing the Design in the PID Tuner” on page 4-8 “Refining the Design” on page 4-11 “Verifying the PID Design in Your Simulink Model” on page 4-14 “Tuning at a Different Operating Point” on page 4-15 Prerequisites for PID Tuning Before you can use the PID Tuner, you must: • Create a Simulink model containing a PID Controller or PID Controller (2DOF) block. Your model can have one or more PID blocks, but you can only tune one PID block at a time. - If you are tuning a multi-loop control system with coupling between the loops, consider using other Simulink Control Design tools instead of the PID Tuner. See “Design and Analysis of Control Systems” on page 4-57 and Cascaded Multi-Loop/Multi-Compensator Feedback Design for more information. - The PID Controller blocks support vector signals. However, using the PID Tuner requires scalar signals at the block inputs. Your plant (all blocks in the control loop other than the controller) can be linear or nonlinear. The plant can also be of any order, and have any time delays. • Configure the PID block settings, such as controller type, controller form, time domain, sample time. See the PID Controller or PID Controller (2DOF) block reference pages for more information about configuring these settings. Opening the Tuner To open the PID Tuner and view the initial compensator design: 4-6 Designing Controllers with the PID Tuner 1 Open the Simulink model by typing the model name at the MATLAB command prompt. 2 Double-click the PID Controller block to open the block dialog box. 3 In the block dialog box, click Tune to launch the PID Tuner. When you launch the PID Tuner, the following actions occur: The PID Tuner automatically linearizes the plant at the operating point specified by the model initial conditions, as described in “What Plant Does the PID Tuner See?” on page 4-4. If you want to design a controller for a different operating point, see “Tuning at a Different Operating Point” on page 4-15. Note If the plant model in the PID loop linearizes to zero on launch, the PID Tuner provides the Obtain plant model dialog box. This dialog box allows you to obtain a new plant model by either: • Linearizing at a different operating point (see “Tuning at a Different Operating Point” on page 4-15). • Importing an LTI model object representing the plant. For example, you can import frequency response data (an frd model) obtained by frequency response estimation. For more information, see Designing PID Controller in Simulink with Estimated Frequency Response. • The PID Tuner computes an initial compensator design using the algorithm described in “PID Tuning Algorithm” on page 4-5. • The PID Tuner displays the closed-loop step reference tracking response for the initial compensator design in the PID Tuner dialog box. For comparison, the display also includes the closed-loop response for the gains specified in the PID Controller block, if that closed loop is stable, as shown in the following figure. 4-7 4 Designing Compensators Tip After the tuner launches, you can close the PID Controller block dialog box. Analyzing the Design in the PID Tuner To determine whether the compensator design meets your requirements, you can analyze the system response using the response plots. Select a response plot from the Response drop-down menu. 4-8 Designing Controllers with the PID Tuner The PID Tuner computes the responses based upon the following single-loop control architecture: r + - PID C d1 u + Plant + G d2 + + y The following table summarizes the available responses. Response Plotted System Description CG (from r to y) 1 + CG Shows the closed-loop system response to a change in setpoint. Use when your design specifications include setpoint tracking. Reference tracking Controller effort C (from r to u) 1 + CG Input disturbance Rejection Output disturbance Rejection G (from d1 to y) 1 + CG 1 (from d2 to y) 1 + CG Shows the closed-loop controller output response to a change in setpoint. Use when your design is limited by practical constraints, such as controller saturation. Shows the closed-loop system response to load disturbance (a disturbance at the plant input). Use when your design specifications include input disturbance rejection. Shows the closed-loop system response to measurement noise. 4-9 4 Designing Compensators Response Plotted System Description Open-loop CG Shows response of the open-loop controller-plant system. Use for frequency-domain design. Use when your design specifications include robustness criteria such as open-loop gain margin and phase margin. Plant G Shows the plant response. Use to examine plant dynamics. Use the Plot drop-down menu to choose Step plot (time-domain response) or Bode plot (frequency-domain response). You can view the values for system characteristics, such as peak response and gain margin, either: • Directly on the response plot — Use the right-click menu to add characteristics, which appear as blue markers. Then, left-click the marker to display the corresponding data panel. • In the Performance and robustness table — To display this table, click the Show Parameters arrow . 4-10 Designing Controllers with the PID Tuner Tip To perform further analysis on the plant model, click the Export plant model to workspace button as an LTI object. to export the plant to the MATLAB workspace Refining the Design If the response of the initial controller design does not meet your requirements, you can interactively adjust the design. The PID Tuner gives you two ways to refine the controller design: 4-11 4 Designing Compensators • Adjust response time. Make the closed-loop response of the controlled system faster or slower. • Separately adjust loop bandwidth and phase margin. The larger the loop bandwidth, the faster the controller responds to changes in the reference or disturbances in the loop. The larger the phase margin, the more robust the controller is against modeling errors or variations in plant dynamics. Adjusting Response Time to Tune Parameters To adjust response time to tune the controller response: 1 In the PID Tuner, select Basic (the default option) from the Design mode drop-down menu. 2 Move the Response time slider to find a PID controller that provides a slower or faster response for your system. Decrease response time by 10x (less aggressive) Move slider to adjust response time Increase response time by 10x (more aggressive) Tip To store a design and continue tuning without losing the design, click the camera button . To retrieve this design, click the picture button To revert to the initial controller design, click the revert button . 3 Analyze the compensator design to determine if it meets your design requirements, as described in “Analyzing the Design in the PID Tuner” on page 4-8. • If the design meets your requirements, go to step 4. 4-12 . Designing Controllers with the PID Tuner • If the design does not meet your requirements, try adjusting the bandwidth and phase margin. For instructions, see “Adjusting Bandwidth and Phase Margin to Tune Parameters” on page 4-13. 4 If you find a compensator design that meets your requirements, verify that it behaves in a similar way in the nonlinear Simulink model. For instructions, see “Verifying the PID Design in Your Simulink Model” on page 4-14. Adjusting Bandwidth and Phase Margin to Tune Parameters To adjust bandwidth and phase margin to tune the controller response: 1 In the PID Tuner, select Extended from the Design mode drop-down menu. 2 Adjust the bandwidth and phase margin to find a PID controller with an adequate balance between performance and robustness by: • Moving the slider bar • Entering a value in the text field • Incrementally adjusting the value in the text field using the up and down arrows Decrease slider range by 10x Move sliders to adjust bandwidth and phase margin Increase slider range by 10x Enter known values or adjust using arrows The response time is given by 2/wc, where wc is the bandwidth. Therefore, decreasing the bandwidth makes the controller less aggressive. Increasing the bandwidth makes the controller more aggressive. 4-13 4 Designing Compensators For continuous-time systems, bandwidth is a finite positive real number. For discrete-time systems, bandwidth is a positive real number less than / Ts , where Ts is the PID Controller block sample time. Decreasing the phase margin decreases robustness. Increasing the phase margin increases robustness. Phase margin must be a number in the range 0-90 degrees. Tip To store a design and continue tuning without losing the design, click the camera button . To retrieve this design, click the picture button To revert to the initial controller design, click the revert button . . 3 Analyze the compensator design to determine if it meets your design requirements, as described in “Analyzing the Design in the PID Tuner” on page 4-8. • If the design meets your requirements, go to step 4. • If you cannot find a compensator to meet your requirements by adjusting bandwidth and phase margin, see “Cannot Find a Good Design in the PID Tuner” on page 4-23. 4 If you find a compensator design that meets your requirements, verify that this design behaves in a similar way in the nonlinear Simulink model. For instructions, see “Verifying the PID Design in Your Simulink Model” on page 4-14. Verifying the PID Design in Your Simulink Model In the PID Tuner, you tune the compensator using a linear model of your plant. First, you find a good compensator design in the PID Tuner. Then, verify that the tuned controller meets your design requirements when applied to the nonlinear plant in your Simulink model. To verify the compensator design in the nonlinear Simulink model: 4-14 Designing Controllers with the PID Tuner 1 In the PID Tuner, click Apply to update the Simulink PID Controller block with the tuned PID parameters. Tip To update PID block parameters automatically as you tune the controller in the PID Tuner, select Automatically update block parameters. 2 Simulate the Simulink model, and evaluate whether the simulation output meets your design requirements. Because the PID Tuner works with a linear model of your plant, the simulated response sometimes does not match the response in the PID Tuner. See “Simulated Response Does Not Match the PID Tuner Response” on page 4-24 for more information. If the simulated response does not meet your design requirements, see “Cannot Find an Acceptable PID Design in the Simulated Model” on page 4-25. Tuning at a Different Operating Point By default, the PID Tuner linearizes your plant and designs a controller at the operating point specified by the initial conditions in your Simulink model. In some cases, this operating point can differ from the operating point you want to design a controller for. For example, you want to design a controller for your system at steady-state. However, the Simulink model is not at steady-state at the operating point specified in the model. In this case, change the operating point that the PID Tuner uses for linearizing your plant and designing a controller. To set a new operating point for the PID Tuner, use one of the following methods. The method you choose depends upon the information you have about your desired operating point: Known State Values Yield the Desired Operating Conditions 1 Close the PID Tuner. 4-15 4 Designing Compensators 2 Set the initial conditions of the components of your model to the values that yield the desired operating conditions. 3 Click Tune in the PID Controller dialog box to launch the PID Tuner. The PID Tuner linearizes the plant using the new default operating point and designs a new initial controller for the new linear plant model. After the PID Tuner generates a new initial controller design, continue from “Analyzing the Design in the PID Tuner” on page 4-8. Your Model Has Desired Operating Conditions at a Known Time 1 Click the Design with new plant model button in the PID Tuner to open the Obtain plant model dialog box. 2 Select Linearizing the Simulink model at simulation snapshot time and enter a time value. Enter a time at which you expect the model to have the desired equilibrium operating conditions. 3 Click OK. The PID tuner linearizes the plant using the new operating point and designs a new initial controller for the new linear plant model. After the PID Tuner generates a new initial controller design, continue from “Analyzing the Design in the PID Tuner” on page 4-8. You Computed an Operating Point in the Control and Estimation Tools Manager 1 In the Control and Estimation Tools Manager, right-click on the node corresponding to the saved operating point. Select Export to Workspace to export your operating point to the MATLAB workspace. 2 In the PID Tuner, click the Design with new plant model button to open the Obtain plant model dialog box. 3 Select Importing an LTI system or linearizing at an operating point defined in MATLAB workspace. 4-16 Designing Controllers with the PID Tuner 4 Select your exported operating point in the table. The operating point you select appears highlighted. 5 Click OK. The PID tuner linearizes the plant using the operating point at the snapshot time and designs a new initial controller for the new linear plant model. After the PID Tuner generates a new initial controller design, continue from “Analyzing the Design in the PID Tuner” on page 4-8. 4-17 4 Designing Compensators Designing Two-Degree-of-Freedom PID Controllers Use the PID Tuner to tune two-degree-of-freedom PID Controller (2DOF) blocks to achieve both good setpoint tracking and good disturbance rejection. About Two-Degree-of-Freedom PID Controllers A two-degree-of-freedom PID compensator, commonly known as an ISA-PID compensator, is equivalent to a feedforward compensator and a feedback compensator, as shown in the following figure. Two-degree-of-freedom PID Controller Feedfoward compensator r + - Feedback compensator + Plant y The feedforward compensator is PD and the feedback compensator is PID. In the PID Controller (2DOF) block, the setpoint weights b and c determine the strength of the proportional and derivative action in the feedforward compensator. See the PID Controller (2DOF) block reference page for more information. Tuning Two-Degree-of-Freedom PID Controllers The PID Tuner tunes the PID gains P, I, D, and N. The tuner does not automatically tune the setpoint weights b and c. However, you can use the PID Tuner to tune a two-degree-of-freedom PID controller by the following process: 1 Use the PID Tuner to tune the PID gains P, I, D, and N to meet your disturbance rejection requirement. 4-18 Designing Two-Degree-of-Freedom PID Controllers To tune this portion of the compensator, follow the procedure for tuning a one-degree-of-freedom PID compensator, as described in “Analyzing the Design in the PID Tuner” on page 4-8. and “Refining the Design” on page 4-11. Focus on the disturbance rejection plot to make sure that the tuned controller meets your disturbance rejection requirements. 2 After you have tuned the PID gains P, I, D, and N, update the PID Controller (2DOF) block with the tuned parameters. To update the block, click Apply in the PID Tuner, or select the Automatically update block parameters check box. 3 Adjust the setpoint weights b and c of the feedforward portion of the compensator to meet your setpoint tracking requirements as follows: In the PID Controller (2DOF) block dialog box, enter values for the setpoint weights b and c between 0 and 1. To reduce undesirable controller response to sudden changes in the reference signal (derivative kick), set c to 0. Typically, give b a value in the range 0-1. Smaller b values generally result in slower reference tracking. However, b and c values do not affect loop stability or disturbance rejection. 4 Evaluate whether the compensator design meets your design requirements by viewing a simulation of the Simulink mode as described in “Verifying the PID Design in Your Simulink Model” on page 4-14. 4-19 4 Designing Compensators Tuning a PID Controller Within a Model Reference This example shows how to tune a PID controller block contained in a referenced model. When you launch the PID Tuner from a PID controller block in a model that is referenced in one or more open models, the software prompts you to specify which open model is the top-level model for linearization and tuning. The referenced model must be in normal mode. For more information about model referencing, see “Overview of Model Referencing” in the Simulink documentation. 1 Open the model. open('model_ref_pid'); The block Inner Loop is a referenced model that contains the PID Controller block to tune. 2 Double-click Inner Loop to open the referenced model. The referenced model innerloop contains a PID controller block, PID. 3 Double-click the PID controller block PID to open the block dialog box. 4-20 Tuning a PID Controller Within a Model Reference 4 Click Tune in the block dialog box. The software prompts you to select which open model is the top-level model for linearization and tuning. Note The software only identifies open models containing the model reference. The PID Tuner does not detect models that contain the model reference but are not open. Selecting innerloop causes the PID Tuner to disregard model_ref_pid. Instead, the PID Tuner tunes the PID Controller block for the plant G_Inner alone, as if there were no outer loop. Alternatively, you can select model_ref_pid as the top-level model. When you do so, the PID Tuner considers the dynamics of both the inner and outer loops, and tunes with both loops closed. In this case, PID controller sees the effective plant (1+G_Outer*Gain)*G_Inner. 4-21 4 Designing Compensators 5 Select the desired top-level model, and click OK. The PID Tuner linearizes the selected model and launches. Proceed with analyzing and adjusting the tuned response as described in “Designing Controllers with the PID Tuner” on page 4-6. 4-22 Troubleshooting Automatic PID Tuning Troubleshooting Automatic PID Tuning This section explains some procedures that can help you obtain better results from the PID Tuner if the basic procedures yield unsatisfactory controller performance. In this section... “Cannot Find a Good Design in the PID Tuner” on page 4-23 “Simulated Response Does Not Match the PID Tuner Response” on page 4-24 “Cannot Find an Acceptable PID Design in the Simulated Model” on page 4-25 “Controller Performance Deteriorates When Switching Time Domains” on page 4-26 “When Tuning the PID Controller, the D Gain Has a Different Sign from the I Gain” on page 4-27 Cannot Find a Good Design in the PID Tuner What This means You have adjusted the PID Tuner sliders, but you cannot find a design that meets your design requirements when you analyze the PID Tuner response plots. How to Fix It Try a different PID controller type. It is possible that your controller type is not the best choice for your plant or your requirements. For example, the closed-loop step response of a P- or PD-controlled system can settle on a value that is offset from the setpoint. If you require a zero steady-state offset, adding an integrator (using a PI or PID controller) can give better results. As another example, in some cases a PI controller does not provide adequate phase margin. You can instead try a PID controller to give the tuning 4-23 4 Designing Compensators algorithm extra degrees of freedom to satisfy both speed and robustness requirements simultaneously. To switch controller types, in the PID Controller block dialog box: • Select a different controller type from the Controller drop-down menu. • Click Apply to save the change. • Click Tune to instruct the PID Tuner to tune the parameters for the new controller type. If you cannot find any satisfactory controller with the PID Tuner, PID control possibly is not sufficient for your requirements. You can design more complex controllers using the SISO Design Tool. For more information, see “Design and Analysis of Control Systems” on page 4-57. Simulated Response Does Not Match the PID Tuner Response What This Means When you run your Simulink model using the PID gains computed by the PID Tuner, the simulation output differs from the PID Tuner response plot. There are several reasons why the simulated model can differ from the PID Tuner response plot. If the simulated result meets your design requirements (despite differing from the PID Tuner response), you do not need to refine the design further. If the simulated result does not meet your design requirements, see “Cannot Find an Acceptable PID Design in the Simulated Model” on page 4-25. Some causes for a difference between the simulated and PID Tuner responses include: • The reference signals or disturbance signals in your Simulink model differ from the step signals the PID Tuner uses. If you need step signals to evaluate the performance of the PID controller in your model, change the reference signals in your model to step signals. 4-24 Troubleshooting Automatic PID Tuning • The structure of your model differs from the loop structure that the PID Tuner designs for. The PID Tuner assumes the loop configuration shown in the following figure. r + - PID C d1 u + + Plant G d2 + + y As the figure illustrates, the PID Tuner designs for a PID in the feedforward path of a unity-gain feedback loop. If your Simulink model differs from this structure, or injects a disturbance signal in a different location, your simulated response differs from the PID Tuner response. • You have enabled nonlinear features in the PID Controller block in your model, such as saturation limits or anti-windup circuitry. The PID Tuner ignores nonlinear settings in the PID Controller block, which can cause the PID Tuner to give a different response from the simulation. • Your Simulink model has strong nonlinearities in the plant that make the linearization invalid over the full operating range of the simulation. • You selected an operating point using the PID Tuner that is different from the operating point saved in the model. In this case, the PID Tuner has designed a controller for a different operating point than the operating point that begins the simulation. Simulate your model using the PID Tuner operating point by initializing your Simulink model with this operating point. See “Simulate Simulink Model at Specific Operating Point” on page 1-44. Cannot Find an Acceptable PID Design in the Simulated Model What This Means You tune the PID Controller using the PID Tuner and run your Simulink model with the tuned PID gains. However, the simulated response of your model does not meet your design requirements. 4-25 4 Designing Compensators How to Fix It In some cases, PID control is not adequate to meet the control requirements for your plant. If you cannot find a design that meets your requirements when you simulate your model, consider using a more complex controller. See “Design and Analysis of Control Systems” on page 4-57. If you have enabled saturation limits in the PID Controller block without antiwindup circuitry, enable antiwindup circuitry. You can enable antiwindup circuitry in two ways: • Activate the PID Controller block antiwindup circuitry on the PID Advanced tab of the block dialog box. • Use the PID Controller block tracking mode to implement your own antiwindup circuitry external to the block. Activate the PID Controller block tracking mode on the PID Advanced tab of the block dialog box. To learn more about both ways of implementing antiwindup circuitry, see Anti-Windup Control Using a PID Controller. After enabling antiwindup circuitry, run the simulation again to see whether controller performance is acceptable. If the loop response is still unacceptable, try slowing the response of the PID controller. To do so, reduce the response time or the bandwidth in the PID Tuner. See “Adjusting Response Time to Tune Parameters” on page 4-12 and “Adjusting Bandwidth and Phase Margin to Tune Parameters” on page 4-13. If you still cannot find an acceptable controller with antiwindup circuitry enabled in the PID Controller block, consider using a more complex controller. See “Design and Analysis of Control Systems” on page 4-57. Controller Performance Deteriorates When Switching Time Domains What This Means You obtain a well-tuned continuous-time PID controller. Then, you convert the controller time domain using the Time Domain selector button in the 4-26 Troubleshooting Automatic PID Tuning PID Controller block dialog box. The controller performs poorly or even becomes unstable when you convert the controller to discrete time. How To Fix It In some cases, you can improve performance by adjusting the sample time by trial and error. However, this procedure can yield a poorly tuned controller, especially where your application imposes a limit on the sample time. Instead, if you change time domains and the response deteriorates, click Tunein the PID Controller block dialog to design a new controller. Note If the plant and controller time domains differ, the PID Tuner discretizes the plant (or converts the plant to continuous time) to match the controller time domain. If the plant and controller both use discrete time, but have different sample times, the PID Tuner resamples the plant to match the controller. All conversions use the tustin method (see “Continuous-Discrete Conversion Methods” in the Control System Toolbox User’s Guide). When Tuning the PID Controller, the D Gain Has a Different Sign from the I Gain What This Means When you use the PID Tuner to design a controller, the resulting derivative gain D can have a different sign from the integral gain I. The PID Tuner always returns a stable controller, even if one or more gains are negative. For example, the following expression gives the PID controller transfer function in Ideal form: ⎛ ⎞ ⎜ (1 + DN ) s2 + ( I + N ) s + IN 1 Ds ⎟ c = P ⎜1 + + ⎟=P s s +1⎟ s(s + N ) ⎜⎜ ⎟ N ⎝ ⎠ For a stable controller, all three numerator coefficients require positive values. Because N is positive, IN > 0 requires that I is also positive. 4-27 4 Designing Compensators However, the only restriction on D is (1 + DN) > 0. Therefore, as long as DN > –1, a negative D still yields a stable PID controller. Similar reasoning applies for any controller type and for the Parallel controller form. For more information about controller transfer functions, see the PID Controller block reference page. 4-28 Designing a Simulink PID Controller (2DOF) Block for a Reactor Designing a Simulink PID Controller (2DOF) Block for a Reactor This example shows how to use PID Tuner to tune a Simulink PID Controller (2DOF) block. Introduction of the PID Controller (2DOF) Block With a 2DOF PID controller, also known as ISA-PID controller, you can achieve good performance for both reference tracking and disturbance rejection. It contains a standard PID controller in the feedback loop and adds a pre-filter to the reference signal. The pre-filter helps produce a smoother transient response to set-point changes. In this example, you use a Simulink PID Controller (2DOF) block to control a continuous stirred tank reactor (CSTR) and you design this 2DOF PID controller in the PID Tuner. A typical design workflow with the PID Tuner involves the following tasks: (1) Launch the PID Tuner. When launching, the software automatically computes a linear plant model from the Simulink model and designs an initial controller. (2) Tune the controller in the PID Tuner by manually adjusting design criteria in two design modes. The tuner computes PID parameters that robustly stabilize the system. (3) Export the parameters of the designed controller back to the PID Controller block and verify controller performance in Simulink. Opening the Model Open the CSTR control model and take a few moments to explore it. open_system('scdcstrctrlpidblock'); 4-29 4 Designing Compensators The CSTR plant is initialized at an equilibrium operating point. The nominal value of the residual concentration is 1.96 mol/L, which is the initial condition of the Residual Concentration Reference block and the Integrator1 block in the CSTR subsystem. The initial condition of the integrator I0 in the PID controller block is determined by the equilibrium operating point. In this example, since we have a PI controller in parallel form, I0 = u0 - ((b-1)*y0*P) where u0 is the steady state controller output (300), and y0 is the steady state plant output (1.96). Since b is 1, I0=*u0*=300. For background, see Seborg, D.E. et al., "Process Dynamics and Control", 2nd Ed., 2004, Wiley, pp.34-36. Design Overview In this example, control the residual concentration of the CSTR by manipulating reactor coolant temperature. The overall design requirements are: 4-30 Designing a Simulink PID Controller (2DOF) Block for a Reactor • Track a sudden decrease of 0.5 in the reference signal from a Simulink step block Residual Concentration Reference. The detailed design requirements are: Settling time under 10 seconds Zero steady-state error to the step reference input Overshoot below 0.1 • Reject a 5 degree sudden increase in the feed temperature from a Simulink step block Feed Temperature. The detailed design requirements are: Settling time under 10 seconds Peak deviation from steady state below 0.1 In this example you design a PI controller PID Controller (2DOF) in the PID Tuner to achieve good responses in both reference tracking and disturbance rejection. Opening the PID Tuner To launch the PID Tuner, double-click the PID Controller block to open its block dialog. In the Main tab, click Tune. After you launch the PID Tuner, close the PID block dialog and move the PID Tuner beside the Simulink model. Also, open the residual concentration scope window. 4-31 4 Designing Compensators Initial PID Design When the PID Tuner launches, the software computes a linearized plant model. The software automatically identifies the plant input and output, and uses the current operating point for the linearization. The plant can have any order and can have time delays. The PID Tuner computes an initial PI controller to achieve a reasonable tradeoff between performance and robustness. By default, step reference tracking performance displays in the plot. Click the Show parameters arrow to view controller parameters P, I, b, and a set of performance and robustness measurements. In this example, the initial PI controller design gives a settling time of 4.4 second, which meets the requirement. The following figure shows the PID Tuner dialog with initial design: 4-32 Designing a Simulink PID Controller (2DOF) Block for a Reactor To test the initial design on the nonlinear model, click Apply in the PID Tuner. This writes the parameters back to the PID block in the Simulink model. Run a simulation and view the closed-loop response: 4-33 4 Designing Compensators The transient response of disturbance rejection shows that its peak deviation is about 0.2, which exceeds the design requirement. You need to reduce the peak deviation by at least 50% using the PID Tuner. Design for Disturbance Rejection in the Basic Design Mode The PID Tuner provides step plot for different loop responses such as reference tracking (from r to y) and controller efforts (from r to u), etc. In this example since the disturbance occurs at the reactor feed temperature, the closest plot you can get is the input disturbance rejection plot that assumes a step disturbance occurs at the input of the plant model. The following figure shows the disturbance rejection performance with initial controller: 4-34 Designing a Simulink PID Controller (2DOF) Block for a Reactor You need to reduce the peak deviation from -0.019 to -0.009 (about 50%). First, try to reduce the peak deviation using the Basic design mode, which is the mode selected when the Tuner opens. Move the response time slider to the right to decrease the response time and make controller more aggressive. But you cannot meet the design requirements because reducing the peak 4-35 4 Designing Compensators deviation makes the settling time too long. To return to the initial automated design result, click the reset button in the toolbar that is the last button with green arrow. Design for Disturbance Rejection in the Extended Design Mode In the PID Tuner Extended design mode, you have more flexibility to adjust controller performance. You need some knowledge of frequency domain control design technology to take full advantage of this design mode. To switch to the Extended design mode, select Extended in the Design Mode drop-down menu in the toolbar. The following figure shows the PID Tuner in Extended design mode with the initial design: 4-36 Designing a Simulink PID Controller (2DOF) Block for a Reactor Increasing the bandwidth makes the controller more aggressive and reduces the peak deviation. To maintain the settling time of disturbance rejection below 10 seconds, you also need to reduce the desired phase margin. This is 4-37 4 Designing Compensators a typical tradeoff between performance and robustness in controller design. View the effects of your change in the response plot. You can move both sliders to reduce the peak deviation to 0.007 while maintain the settling time within 10 seconds. One way to achieve this is: • Bandwidth of 4 rad/sec • Phase margin of 25 degree The following figure shows disturbance rejection performance: 4-38 Designing a Simulink PID Controller (2DOF) Block for a Reactor To test the new design on the nonlinear model, click Apply in the PID Tuner. Run a simulation and view the closed-loop response: 4-39 4 Designing Compensators The disturbance rejection performance satisfies the requirements. However, because the controller is very aggressive, the overshoot of reference tracking exceeds the limit. You need to adjust the pre-filter in the 2DOF PID block to improve the reference tracking performance. Completing PID Design with Set-point Weighting The parameter b in an ISA PI or PID controller is the set-point weight on the reference signal feeding into the proportional gain of the controller. It has a range between 0 and 1, and its default value is 1. By reducing its value, the reference tracking performance becomes smoother. In this example, open the PID block dialog and set b to 0. Because b and P are changed, you need to adjust the initial condition of the integrator I0 in the PID controller block to make sure the initial operating point is still at equilibrium. Since the relationship is I0 = u0 - ((b-1)*y0*P) where u0 is 300 and y0 is 1.96. With P from PID Tuner (-153.5) and b from manual adjustment (0), I0 becomes -0.8267. Update the initial condition of the integrator with this value and the simulation will start at the equilibrium operating point. 4-40 Designing a Simulink PID Controller (2DOF) Block for a Reactor The following figure shows that there is no overshoot in reference tracking with the updated design. In summary, to design a 2DOF PID controller with balanced performance in reference tracking and disturbance rejection, use the PID Tuner to achieve good disturbance rejection and then manually adjust set-point weights b and/or c in the block dialog to achieve good reference tracking. Notice that 4-41 4 Designing Compensators changing b and c does not affect closed-loop stability or disturbance rejection performance. bdclose('scdcstrctrlpidblock') 4-42 Designing PID Controller in Simulink with Estimated Frequency Response Designing PID Controller in Simulink with Estimated Frequency Response This example shows how to design a PI controller with frequency response estimated from a plant built in Simulink. This is an alternative PID design workflow when the linearized plant model is invalid for PID design (for example, when the plant model has zero gain). Opening the Model Open the engine control model and take a few moments to explore it. mdl = 'scdenginectrlpidblock'; open_system(mdl) The PID loop includes a PI controller in parallel form that manipulates the throttle angle to control the engine speed. The PI controller has default gains that makes the closed loop system oscillate. We want to design the controller using the PID Tuner that is launched from the PID block dialog. open_system([mdl '/Engine Speed (rpm)']) sim(mdl); 4-43 4 Designing Compensators PID Tuner Obtaining a Plant Model with Zero Gain From Linearization In this example, the plant seen by the PID block is from throttle angle to engine speed. Linearization input and output points are already defined at the PID block output and the engine speed measurement respectively. Linearization at the initial operating point gives a plant model with zero gain. % Hide scope close_system([mdl '/Engine Speed (rpm)']) % Obtain the linearization input and output points io = getlinio(mdl); % Linearize the plant at initial operating point linsys = linearize(mdl,io) linsys = d = EngineSpeed Throttle Ang 0 Static gain. The reason for obtaining zero gain is that there is a triggered subsystem "Compression" in the linearization path and the analytical block-by-block 4-44 Designing PID Controller in Simulink with Estimated Frequency Response linearization does not support events-based subsystems. Since the PID Tuner uses the same approach to obtain a linear plant model, the PID Tuner also obtains a plant model with zero gain and reject it during the launching process. To launch the PID Tuner, open the PID block dialog and click Tune button. An information dialog shows up and indicates that the plant model linearized at initial operating point has zero gain and cannot be used to design a PID controller. The alternative way to obtain a linear plant model is to directly estimate the frequency response data from the Simulink model, create an FRD system in MATLAB Workspace, and import it back to the PID Tuner to continue PID design. Obtaining Estimated Frequency Response Data Using Sinestream Signals Sinestream input signal is the most reliable input signal for estimating an accurate frequency response of a Simulink model using frestimate command. More information on how to use frestimate can be found in the example 4-45 4 Designing Compensators "Frequency Response Estimation Using Simulation-Based Techniques" in Simulink Control Design examples. In this example, we create a sine stream that sweeps frequency from 0.1 to 10 rad/sec. Its amplitude is set to be 1e-3. You can inspect the estimation results using the bode plot. % Construct sine signal in = frest.Sinestream('Frequency',logspace(-1,1,50),'Amplitude',1e-3); % Estimate frequency response sys = frestimate(mdl,io,in); % this command may take a few minutes to finis % Display Bode plot figure; bode(sys); Designing PI with the FRD System in PID Tuner SYS is a FRD system that represents the plant frequency response at the initial operating point. To use it in the PID Tuner, we need to import it after 4-46 Designing PID Controller in Simulink with Estimated Frequency Response the Tuner is launched. Open the PID block dialog and click Tune button again. When the information dialog shows up, click "Continue" to resume the launching process. After the PID Tuner is launched, an "Obtain Plant Model" dialog shows up and asks you to import a new plant model for PID design. Click the radio button in the middle, select "sys" from the list, and click "OK" to import the FRD system into the PID Tuner. The automated design returns a stabilizing controller. Select "Open-loop" as the response in the Bode plot and the plot shows reasonable gain and phase margin. Time domain response plots are not available for FRD plant models. 4-47 4 Designing Compensators Click "OK" button in the PID Tuner. The PID Tuner writes the P and I gains to the PID block and closes. Simulating Closed-Loop Performance in Simulink Model 4-48 Designing PID Controller in Simulink with Estimated Frequency Response Simulation in Simulink shows that the new PI controller provides good performance when controlling the nonlinear model. Close the model. bdclose(mdl); 4-49 4 Designing Compensators Designing a Family of PID Controllers for Multiple Operating Points This example shows how to design an array of PID controllers for a nonlinear plant in Simulink that operates over a wide range of operating points. Opening the Plant Model The plant is a continuous stirred tank reactor (CSTR) that operates over a wide range of operating points. A single PID controller can effectively use the coolant temperature to regulate the output concentration around a small operating range that the PID controller is designed for. But since the plant is a strongly nonlinear system, control performance degrades if operating point changes significantly. The closed-loop system can even become unstable. Open the CSTR plant model. mdl = 'scdcstrctrlplant'; open_system(mdl) 4-50 Designing a Family of PID Controllers for Multiple Operating Points For background, see Seborg, D.E. et al., "Process Dynamics and Control", 2nd Ed., 2004, Wiley, pp.34-36. Introduction to Gain Scheduling A common approach to solve the nonlinear control problem is using gain scheduling with linear controllers. Generally speaking designing a gain scheduling control system takes four steps: (1) Obtain a plant model for each operating region. The usual practice is to linearize the plant at several equilibrium operating points. (2) Design a family of linear controllers such as PID for the plant 4-51 4 Designing Compensators models obtained in the previous step. (3) Implement a scheduling mechanism such that the controller coefficients such as PID gains are changed based on the values of the scheduling variables. Smooth (bumpless) transfer between controllers is required to minimize disturbance to plant operation. (4) Assess control performance with simulation. For more background reading on gain scheduling, see a survey paper from W. J. Rugh and J. S. Shamma: "Research on gain scheduling", Automatica, Issue 36, 2000, pp.1401-1425. In this example, we focus on designing a family of PID controllers for the CSTR plant described in step 1 and 2. Obtaining Linear Plant Models for Multiple Operating Points The output concentration C is used to identify different operating regions. The CSTR plant can operate at any conversion rate between low conversion rate (C=9) and high conversion rate (C=2). In this example, divide the whole operating range into 8 regions represented by C = 2, 3, 4, 5, 6, 7, 8 and 9. In the following loop, first compute equilibrium operating points with the findop command. Then linearize the plant at each operating point with the linearize command. % Obtain default operating point op = operspec(mdl); % Set the value of output concentration C to be known op.Outputs.Known = true; % Specify operating regions C = [2 3 4 5 6 7 8 9]; % Initialize an array of state space systems Plants = rss(1,1,1,8); for ct = 1:length(C) % Compute equilibrium operating point corresponding to the value of C op.Outputs.y = C(ct); opoint = findop(mdl,op,linoptions('DisplayReport','off')); % Linearize plant at this operating point Plants(:,:,ct) = linearize(mdl, opoint); 4-52 Designing a Family of PID Controllers for Multiple Operating Points end Since the CSTR plant is nonlinear, we expect different characteristics among the linear models. For example, plant models with high and low conversion rates are stable, while the others are not. isstable(Plants,'elem')' ans = 1 1 0 0 0 0 1 1 Designing PID Controllers for the Plant Models To design multiple PID controllers in batch, we can use the pidtune command. The following command will generate an array of PID controllers in parallel form. The desired open loop crossover frequency is at 1 rad/sec and the phase margin is the default value of 60 degrees. % Design controllers Controllers = pidtune(Plants,'pidf',pidtuneOptions('Crossover',1)); % Display controller for C=4 Controllers(:,:,4) ans = 1 s Kp + Ki * --- + Kd * -------s Tf*s+1 with Kp = -12.5, Ki = -0.108, Kd = -14.4, Tf = 0.00875 Continuous-time PIDF controller in parallel form. Plot the closed loop responses for step set-point tracking as below: 4-53 4 Designing Compensators % Construct closed-loop systems clsys = feedback(Plants*Controllers,1); % Plot closed-loop responses figure; hold on for ct =1:length(C) % Select a system from the LTI array sys = clsys(:,:,ct); set(sys,'Name',['C=',num2str(C(ct))],'InputName','Reference'); % Plot step response stepplot(sys,20); end legend('show','location','southeast') All the closed loops are stable but the overshoots of the loops with unstable plants (C=4, 5, 6 and 7) are too large. It can be improved by increasing the open loop bandwidth to 10 rad/sec. % Design controllers for unstable plant models 4-54 Designing a Family of PID Controllers for Multiple Operating Points Controllers(:,:,3:6) = pidtune(Plants(:,:,3:6),'pidf',10); % Display controller for C=4 Controllers(:,:,4) ans = 1 s Kp + Ki * --- + Kd * -------s Tf*s+1 with Kp = -163, Ki = -13.2, Kd = -138, Tf = 0.0471 Continuous-time PIDF controller in parallel form. All the closed loop responses are satisfactory now. % Construct closed-loop systems clsys = feedback(Plants*Controllers,1); % Plot closed-loop responses figure; hold on for ct =1:length(C) % Select a system from the LTI array sys = clsys(:,:,ct); set(sys,'Name',['C=',num2str(C(ct))],'InputName','Reference'); % Plot step response stepplot(sys,20); end legend('show','location','southeast') 4-55 4 Designing Compensators We designed an array of PID controllers and each of them should give reasonable performance around the local operating point. The next step is to implement the scheduling mechanism, which is beyond the scope of this example. Close the model. bdclose(mdl); 4-56 Design and Analysis of Control Systems Design and Analysis of Control Systems In this section... “Compensator Design Process Overview” on page 4-57 “Beginning a Compensator Design Task” on page 4-57 “Selecting Blocks to Tune” on page 4-59 “Selecting Closed-Loop Responses to Design” on page 4-62 “Selecting an Operating Point” on page 4-64 “Creating a SISO Design Task” on page 4-67 “Completing the Design” on page 4-78 Compensator Design Process Overview Compensator design in the Control and Estimation Tools Manager involves the following steps: 1 “Selecting Blocks to Tune” on page 4-59 2 “Selecting Closed-Loop Responses to Design” on page 4-62 3 “Selecting an Operating Point” on page 4-64 4 “Creating a SISO Design Task” on page 4-67 5 “Completing the Design” on page 4-78 Beginning a Compensator Design Task Before you begin this compensator design example, close the Control and Estimation Tools Manager. To begin a new compensator design task for the scdmagball_freeform model: 1 Enter scdmagball_freeform at the MATLAB command line to open the scdmagball_freeform model. 4-57 4 Designing Compensators 2 Select Analysis > Control Design > Compensator Design from the scdmagball_freeform window. The Control and Estimation Tools Manager opens and creates a new compensator design task, as shown in the following figure. The project tree in the left pane of the Control and Estimation Tools Manager now shows a Simulink Compensator Design Task node as part of Project - scdmagball_freeform in addition to the Operating Points node. You can select a node within the tree to display its contents in the right pane. • For information on the Tunable Blocks pane within the Simulink Compensator Design Task node, refer to “Selecting Blocks to Tune” on page 4-59. 4-58 Design and Analysis of Control Systems • For information on the Closed-Loop Signals pane within the Simulink Compensator Design Task node, refer to “Selecting Closed-Loop Responses to Design” on page 4-62. • For information on the Operating Points node or the Operating Points pane within the Simulink Compensator Design Task node, refer to “Selecting an Operating Point” on page 4-64. Selecting Blocks to Tune How to Select Blocks to Tune This section continues the scdmagball_freeform example from “Beginning a Compensator Design Task” on page 4-57. At this stage in the example, you have already created a compensator design task. In this step of the compensator design, you select the blocks in your model to tune from a list of tunable blocks in your model. Tunable blocks are blocks that you can tune using the SISO Design Tool to achieve the desired response of your system. Typically, these blocks serve as the compensators in your model. In this example, you tune the compensator block called Controller inside the Controller subsystem of the scdmagball_freeform model. To select this block as the block to tune: 1 Select the Simulink Compensator Design Task node. 2 In the Tunable Blocks pane, click Select Blocks. The Select Blocks to Tune dialog box opens. 3 Select the Controller subsystem in the left pane to display that subsystem’s tunable blocks within the center pane. Within the center pane, select the check box next to the Controller block’s name. 4-59 4 Designing Compensators 4 Click OK to apply your selections and close the dialog box. What Blocks Are Tunable? You can tune parameters in the blocks shown in the following table using Simulink Control Design software. The block input and output signals for tunable blocks must have scalar, double-precision values. Tunable Blocks Simulink Library Gain Math Operations LTI System Control System Toolbox Discrete Filter Discrete PID Controller (one-degree-of-freedom only) • Continuous • Discrete • Simulink Extras Additional Linear 4-60 Design and Analysis of Control Systems Tunable Blocks Simulink Library State-space blocks • Continuous • Discrete • Simulink Extras Additional Linear Zero-pole blocks • Continuous • Discrete • Simulink Extras Additional Linear Transfer function blocks • Continuous • Discrete • Simulink Extras Additional Linear You can also tune the following versions of the blocks listed in the table: • Blocks with custom configuration functions associated with a masked subsystem • Blocks discretized using the Simulink Model Discretizer Note If your model contains Model blocks with normal-mode model references to other models, you can select tunable blocks in the referenced models for compensator design. Creating Custom Configuration Functions When you have masked subsystems that you want to tune in your model, they will not automatically appear in the list of tunable blocks. For them to appear in the list, you need to create a custom configuration function for the masked subsystem. The custom configuration function serves the following functions: • It informs the Simulink Control Design software that you want this block to be available for tuning. 4-61 4 Designing Compensators • It determines how you want the SISO Design Task to treat the block; it describes the relationship between the block mask parameters and the poles and zeros of the transfer function. To learn how to create a custom configuration function, see Tuning Custom Masked Subsystems. Selecting Closed-Loop Responses to Design This section continues the scdmagball_freeform example from “Selecting Blocks to Tune” on page 4-59. At this stage in the example a compensator design task has been created, and tunable blocks have been selected. In this step of the compensator design task, you will select the closed loops whose responses you want to design in your model. A closed-loop system is defined by an input point, such as a reference or disturbance signal, and an output point, such as a measured output or actuator signal. In this example you will design the response of the closed-loop system from the reference signal to the output of the plant model. To set up linear analysis points to define this closed-loop system, perform the following steps: 1 On the scdmagball_freeform model diagram, position the mouse on the Reference signal between the Desired Height block and the Sum block. Right-click and select Linear Analysis Points > Input Point from the menu to add an input point. 2 Position the mouse on the signal line at the output of the Magnetic Ball Plant block. Right-click and select Linear Analysis Points > Output Point from the menu to add an output point. 4-62 Design and Analysis of Control Systems The model should now appear as follows: 4-63 4 Designing Compensators Within the Control and Estimation Tools Manager, click the Closed-Loop Signals tab of the Simulink Compensator Design Task node to view the input and output points in the model. Within this pane you can view the input and output signals in the model and use the Active column to select the ones you want to use to define closed-loop systems for compensator design. Selecting an Operating Point This section continues the scdmagball_freeform example from “Selecting Closed-Loop Responses to Design” on page 4-62. At this stage in the example, a compensator design task has been created, tunable blocks have been selected, and closed-loop signals have been selected. 4-64 Design and Analysis of Control Systems In this step of the compensator design task, you will select the operating point that you want to use in the compensator design. The Simulink Control Design software uses the operating point when it linearizes the model before creating a SISO Design Task. Note A compensator designed for the linearized model is likely to control the behavior of the nonlinear model only in a small region around the operating point that the model was linearized at. Therefore it is important that the linearization of the model is accurate and the selection of the operating point about which the system is linearized is an important step in the compensator design process. To import an operating point for compensator design, perform the following steps: 1 Select the Operating Points node in the Control and Estimation Tools Manager. 2 Click the Import button, in the bottom-right corner of the Control and Estimation Tools Manager. 3 In the Operating Point Import dialog box, select MAT-file as the location to import from. 4 Click Browse and locate the file scdmagball_freeform_operating_point.mat that you previously saved. If you did not previously save an operating point, browse to matlabroot/toolbox/slcontrol/slctrldemos/scdmagball_freeform_operating_po 5 Click Open to return to the Operating Point Import dialog box. The Operating Point Import dialog box now shows all the operating points available within the selected MAT-file. In this case just a single operating point is contained in the MAT-file. 4-65 4 Designing Compensators 6 Select this operating point and click Import to import it into the Control and Estimation Tools Manager. Click the Operating Points tab in the Simulink Compensator Design Task node to select an operating point for the compensator design. For this example, you should use the operating point that you just imported, called Operating_Point. To specify this operating point, first select the Linearize at one of the following operating points option. Then select Operating_Point in the list, as shown in the following figure. 4-66 Design and Analysis of Control Systems Creating a SISO Design Task • “What is a SISO Design Task?” on page 4-67 • “Configuring Design Plots” on page 4-68 • “Configuring Analysis Plots” on page 4-71 • “Control Design Linearization Options” on page 4-76 • “Designing Compensators for Plants with Time Delays” on page 4-77 What is a SISO Design Task? This section continues the scdmagball_freeform example from “Selecting an Operating Point” on page 4-64. At this stage in the example, a compensator 4-67 4 Designing Compensators design task has been created, and tunable blocks, closed-loop signals, and an operating point have been selected. In this step of the compensator design task, you will create and configure a SISO Design Task in the Control and Estimation Tools Manager. The SISO Design Task includes several tools for tuning the response of SISO systems: • A graphical editing environment in the SISO Design Tool window that contains design plots such as root-locus, and Bode diagrams • An LTI Viewer window where you can view time and frequency analysis plots of the system • A compensator editor where you can directly edit the block mask parameters or the poles and zeros of compensators in your system • A tool that automatically generates compensators using PID, internal model control (IMC), or linear-quadratic-Gaussian (LQG) methods (uses the Control System Toolbox software) • Optimization-based tuning methods that automatically tunes the system to satisfy design requirements (available when you have the Simulink Design Optimization product) The Design Configuration Wizard guides you through the selection of the open- and closed-loop systems you want to design and the configuration of the design and analysis plots you want to use in the SISO Design Task. To launch the wizard, click Tune Blocks in the Simulink Compensator Design Task node. The wizard opens in a separate window. The first page of the wizard provides an overview of the design configuration process and lists some issues to consider when selecting design and analysis plots. Click Next to continue to step 1 of the design configuration process on the second page of the wizard. Configuring Design Plots In step 1, select the open- and closed-loop systems that you want to design in your model, and up to six corresponding design plots you want to use. Open-loop design allows you to design the response of a closed feedback loop in your model by artificially opening the loop and designing the response of 4-68 Design and Analysis of Control Systems this open-loop system. The open-loop design plots use rules of linear control theory to determine the dynamics of the closed-loop system from those of the open-loop system. Open-loop design is typically used to tune compensators that lie inside feedback loops. A set of default open-loop systems is created for your model, shown in the lower half of the wizard. To create these open-loop systems, the software artificially opens the feedback loop at the output signal of each tunable block (at the X in the following figure) and unwraps the closed-loop system to create the corresponding open-loop system. loop opening point F C P H The unwrapped open-loop system, which is -CPH, is shown in the following figure. The open-loop design plots show the negative of the unwrapped open-loop, which is CPH. This configuration allows you to design controllers using a negative feedback architecture. P H C Note that elements that are outside the feedback loop, such as the prefilter F, are not seen in the open-loop system. In this example, you will tune the response of Open Loop 1 which is defined by a loop opening at the output of the Controller block. This open-loop system contains the plant model and the controller. To design this system, select Open Loop 1 from the menu next to Plot 1 in the wizard. Next, select a design plot to use for this open-loop system. Design plots are interactive plots within the SISO Design Tool. You can use them to graphically tune parameters and manually move, add, or remove poles and zeros of the tunable blocks to tune and design the dynamics of open- and closed-loop systems in your model. The following table shows the design plots, along with their uses, available in the SISO Design Tool. 4-69 4 Designing Compensators Type of Design Plot Available Plots in the SISO Design Tool Use to tune blocks that act as Open-loop Root Locus, Nichols, Open-loop bode Feedback elements Closed-loop Closed-loop bode Feedforward or prefilter elements You can also use the design plots to specify requirements for stability, performance, or both to use in using optimization-based automated tuning. For this example, select Root Locus from the menu next to Plot 1 to use this plot type as the design plot for Open Loop 1. Step 1 of the wizard should now look similar to the following figure. Click Next to proceed to step 2 of the wizard. 4-70 Design and Analysis of Control Systems Configuring Analysis Plots In this step, select the closed-loop responses that you want to view while designing your model, and the corresponding analysis plots you want to use to view them. Analysis plots are plots that show the responses or dynamics of a closed or open loop systems or tunable blocks in your model. Although you cannot directly edit the analysis plots by graphically moving gains, poles, zeros, etc., changes that you make in the design plots, compensator editor, or automated design tools will affect the responses in the analysis plots. Possible analysis plots include • Step response • Impulse response • Bode and Bode magnitude • Nyquist • Nichols • Pole/Zero You can use analysis plots to • Analyze closed-loop, open-loop, and tuned block responses in your control system. • Define stability and performance requirements for optimization-based automated tuning. For this example, select Step from the menu for Plot 1 to create a step response analysis plot. Next, select the closed-loop system that you want to display in this plot. A closed-loop system is a system that has not had any feedback loops opened for open-loop design. It typically defines the system whose response you want to control and it lies between the input and output signals of interest, for example between a reference signal and the plant output signal. 4-71 4 Designing Compensators Linearization input and output points placed on signal lines in your model define closed-loop systems. The closed-loop system includes all blocks in the path between the input and the output. Input point R Output point FF F C P H Closed-loop control system The software automatically displays a list of up to four closed-loop systems in your model, based on the input and output points on the signal lines. In this example, only one closed-loop system appears in the wizard, the closed-loop from the Desired Height signal to the output of the Magnetic Ball Plant Model, because the system only has one input and one output point. You can add additional closed-loop responses, as well as open-loop and tunable block responses. To add a new response, click the Add Responses button and complete the Select a New Response to Analyze dialog box. To display the current closed-loop system in the step response plot of Plot 1, select the check box under Plot 1 to the left of the closed-loop system. Step 2 of the wizard should now look similar to the following figure. 4-72 Design and Analysis of Control Systems Click Finish to complete the wizard and create the SISO Design Task underneath the Simulink Compensator Design Task node within the Control and Estimation Tools Manager, as shown in the following figure. 4-73 4 Designing Compensators The SISO Design Task also includes the design plots you configured in the Design Configuration Wizard. They appear within the SISO Design Tool window, as shown in the following figure. 4-74 Design and Analysis of Control Systems In addition, the SISO Design Task also includes the analysis plots you configured in the Design Configuration Wizard. They appear within the LTI Viewer window, as shown in the following figure. 4-75 4 Designing Compensators Control Design Linearization Options To modify or adjust the settings used to linearize a model when creating a SISO Design Task, click the Simulink Compensator Design Task node, and then select Tools > Options. The Options dialog box opens. 4-76 Design and Analysis of Control Systems Specify the linearization sample time and rate conversion method. If, for the Rate conversion method parameter, you specify Tustin W/Prewarping, you must also specify a pre-warp frequency. Designing Compensators for Plants with Time Delays You can design compensators for plants with time delays using the tools in the SISO Design Task. These tools automatically create a linear model of your plant. Within this model, you can represent time delays in two ways—using Padé approximation or exact delay. To represent time delays in the linear plant model using... You must... Padé approximation representations Specify the Padé order in the Block Parameters window for each Simulink blocks with delays. Exact delay representations Open the Simulink Compensator Design Task, and select Tools > Options. Then, in the Options dialog box, select Enable design of linearized control systems with exact delay(s). 4-77 4 Designing Compensators Note Some tools do not support exact time delays and automatically compute a Padé approximation for delays. In this case, you receive a notification. The software uses the Padé order specified in SISO Tool Preferences and ignores the Padé order specified in your block. For more information, see “Time Delays Pane”. For more information on the linearizing models with time delays, see “Models with Time Delays” on page 2-122. For more information on the tools available for compensator design, see “Tools for Compensator Design” on page 4-78. Completing the Design • “Tools for Compensator Design” on page 4-78 • “Storing and Retrieving Designs” on page 4-83 • “Writing the Design to the Simulink Model” on page 4-85 • “Compare and Contrast the SISO Design Task and Enhanced SISO Design Task” on page 4-87 • “Design Operating Point Node” on page 4-90 • “SISO Tool Options” on page 4-91 Tools for Compensator Design This section continues the scdmagball_freeform example from “Creating a SISO Design Task” on page 4-67. At this stage in the example, a compensator design task has been created, tunable blocks, closed-loop signals, and an operating point have been selected, design and analysis plots have been created, and a SISO Design Task node has been created in the Control and Estimation Tools Manager. In this step of the compensator design task, you will complete the design of the compensator in the scdmagball_freeform model, using the SISO Design Task node. For a more detailed discussion of the SISO Design Task node, refer to the Control System Toolbox documentation. 4-78 Design and Analysis of Control Systems The SISO Design Task node contains five panes with various tools for designing the compensators in your system. • Architecture: - Configure loops for multi-loop design by opening signals to remove the effects of other feedback loops. - Import compensators into your system. Convert the sample time of the system or switch between different sample times to design different compensators. • Compensator Editor: - Directly edit the poles, zeros, and gains of the compensator. Add or remove poles and zeros to the compensators. • Graphical Tuning: - Configure design plots in the SISO Design Tool. Use design plots to graphically manipulate the response of the system. • Analysis Plots: - Configure analysis plots in the LTI Viewer. Use analysis plots to view the response of open- or closed-loop systems. • Automated Tuning: Design compensators using one of several automated methods. - Automatically generate compensators using PID, internal model control (IMC), or linear-quadratic-Gaussian (LQG) methods (uses Control System Toolbox software). - Use optimization-based methods that automatically tune the system to satisfy design requirements (available when you have the Simulink Design Optimization product). You can use any of these design methods, or a combination of methods, to design the compensators for your system. A suitable final design for the Controller of the scdmagball_freeform model is: • Gain: -16000 4-79 4 Designing Compensators • Integrator at the origin • Complex zeros at -10±10i • Real pole at -1000 You can use the Compensator Editor in the SISO Design Task node to specify these settings. The initial design contains an integrator at the origin. Specify the remaining settings as follows: • Gain — Enter -16000 in the text box to the right of the equal sign in the Compensator area. • Complex zeros — In the Dynamics table, right-click and then select Add Pole/Zero > Complex Zero. Select the new complex zero in the Dynamics table. In the Edit Selected Dynamics table: - Enter -10 in the Real Part field. Enter 10 in the Imaginary Part field. • Real pole — In the Dynamics table, right-click and then select Add Pole/Zero > Real Pole. Select the new real pole in the Dynamics table. In the Edit Selected Dynamics table: - Enter -1000 in the Location field. The Control and Estimation Tools Manager should now appear similar to the following: 4-80 Design and Analysis of Control Systems With these settings, the root-locus diagram and step-response plot should look similar to the following figures. 4-81 4 4-82 Designing Compensators Design and Analysis of Control Systems Storing and Retrieving Designs When you design a compensator within a Simulink Compensator Design Task, you can store the current design. You can retrieve the stored design at any time. This storage and retrieval capability lets you continue designing and still be able to return to a previously saved version of the design. This section continues the example from “Completing the Design” on page 4-78. At this stage in the example, a compensator has been designed to control the system. To store the design within the SISO Design Task node, perform the following steps: 4-83 4 Designing Compensators 1 Select the SISO Design Task node in the Control and Estimation Tools Manager. 2 Underneath the SISO Design Task panes, click the Store Design button. Clicking this button adds the current design to the Design History node as shown in the following figure. The default name for the design is Design. To rename the design to something more descriptive: 1 Right-click the Design node underneath the Design History node. 2 Select Rename from the right-click menu. 3 Enter a name for your design. For this example, call the design scdmagball_freeform Design. The Control and Estimation Tools Manager should now appear as follows: 4-84 Design and Analysis of Control Systems Note After you store a compensator design, you can continue to refine it. If you make undesired changes, you can retrieve the stored design by selecting it in the Design History node and then clicking the Retrieve Design button. Writing the Design to the Simulink Model When designing a compensator within a Simulink Compensator Design Task node, you can write the compensator design to the Simulink model. This is useful when • You want to see how the current design performs in the full nonlinear model. 4-85 4 Designing Compensators • You have completed the design and you want to update the model with the newly designed parameters. When you write the compensator design to your Simulink model: • If the block parameters are numerical, the software writes new numerical values to the tuned block. • If the block parameters are variables in the base workspace or the model workspace (including Simulink.Parameter objects), the software writes the tuned values to those variables. The block parameters remain the workspace variables. There are two ways to write the design to your Simulink model: • Write the tuned parameters to your model when you have finished your design — Click the Design node of the Control and Estimation Tools Manager and click the Update Simulink Block Parameters button. • Automatically update the block parameters as you tune the design — select the Design History node in the Control and Estimation Tools Manager and click the checkbox next to Automatically update block parameters. For example, continue the example from “Storing and Retrieving Designs” on page 4-83. At this stage in the example you have designed a compensator to control the system and stored the design within the SISO Design Task node. To write the stored design to the scdmagball_freeform model, perform the following steps: 1 Select the scdmagball_freeform Design node under the Design History node in the Control and Estimation Tools Manager. 2 Click the Update Simulink Block Parameters button. You can now simulate the scdmagball_freeform model containing the newly designed Controller block. After simulation, the Scope block of the scdmagball_freeform model should look similar to the following figure. 4-86 Design and Analysis of Control Systems The system is now stable and the height of the magnetic ball settles at the desired height of 0.05 m. Compare and Contrast the SISO Design Task and Enhanced SISO Design Task The SISO Design Task is a graphical user interface (GUI) that simplifies the task of designing controllers. This section describes the similarities and differences between the SISO Design Task, which is available in the Control System Toolbox product, and the enhanced SISO Design Task, which is available with the Simulink Control Design product. The following figure shows the SISO Design Task as it appears in the Control and Estimation Tools Manager. 4-87 4 Designing Compensators The following figure shows the enhanced SISO Design Task as it appears under the Simulink Compensator Design Task node in the Control and Estimation Tools Manager. 4-88 Design and Analysis of Control Systems The following table summarizes the similarities and differences between the SISO Design Task and the enhanced SISO Design Task: Similarities Differences • Similar layout • Architecture tab — The SISO Tool lets you change the architecture of your system. In contrast, once you create a SISO Design Task you cannot add or delete blocks from your model. Also, the Architecture tab in the SISO Design Task node summarizes the Simulink Blocks to Tune, Closed Loop Input • Graphical Tuning, Analysis Plots, and Automated Tuning panes have the same functionality. For more information about these tabs, see “Tools for Compensator Design” on page 4-78. 4-89 4 Designing Compensators Similarities Differences Signals, and Closed Loop Output Signals. • Compensator Editor tab — The SISO Design Tool lets you tune the poles and zeros of your system. The enhanced SISO Design Tool lets you tune the poles, zeros, and parameters of your system. For more information, see Tuning Simulink Blocks in the Compensator Editor. • When you are satisfied with your system’s performance, the enhanced SISO Design Tool lets you click Update Simulink Block Parameters to write the parameters back to your Simulink model. For additional information, see: • “Creating a SISO Design Task” on page 4-67 • “SISO Design Tool” in the Control System Toolbox documentation Design Operating Point Node The Design Operating Point node is located inside the Design History node of the Control and Estimation Tools Manager. 4-90 Design and Analysis of Control Systems The States pane describes the operating point the GUI used to linearize the model. When creating the SISO Design Task node, you can use this pane to import a different operating point and to populate the SISO Design Task node with a linear model evaluated at the new operating point. SISO Tool Options To modify the precision of the numbers calculated by SISO Tool, click the SISO Design Task node, and then select Tools > Options. The SISOTool Options dialog box opens. 4-91 4 Designing Compensators If you select the Use full precision check box, the SISO Tool uses the full double-precision data type when writing back to the Simulink block dialog box. If you clear this check box, use Custom: n digits of precision to specify the precision you want. For additional information, see “Creating a SISO Design Task” on page 4-67. 4-92 5 Model Verification • “Monitoring Linear System Characteristics in Simulink Models” on page 5-2 • “Defining a Linear System for Model Verification Blocks” on page 5-4 • “Verifiable Linear System Characteristics” on page 5-5 • “Model Verification at Default Simulation Snapshot Time” on page 5-6 • “Model Verification at Multiple Simulation Snapshots” on page 5-15 • “Model Verification Using Simulink® Control Design™ and Simulink Verification Blocks” on page 5-25 5 Model Verification Monitoring Linear System Characteristics in Simulink Models Simulink Control Design software provides Model Verification blocks to monitor time- and frequency-domain characteristics of a linear system computed from a nonlinear Simulink model during simulation. Use these blocks to: • Verify that the linear system characteristics of any nonlinear Simulink model, including the following, remain within specified bounds during simulation: - Continuous- or discrete-time models - Discretized linear models computed from continuous-time models Multi-rate models Models with time delays, represented using exact delay or Padé approximation Continuous-time models computed from discrete-time models Resampled discrete-time models The linear system can be Single-Input Single-Output (SISO) or Multi-Input Multi-Output (MIMO). • View specified bounds and bound violations on linear analysis plots. Tip These blocks are same as the Linear Analysis Plots blocks except for different default settings of the bound parameters. • Save the computed linear system to the MATLAB workspace. The verification blocks assert when the linear system characteristic does not satisfy a specified bound, i.e., assertion fails. A warning message, reporting the assertion failure, appears at the MATLAB prompt. When assertion fails, you can: 5-2 Monitoring Linear System Characteristics in Simulink® Models • Stop the simulation and bring that block into focus. • Evaluate a MATLAB expression. You can use these blocks with the Simulink Model Verification blocks to design complex logic for assertion. For an example, see “Model Verification Using Simulink® Control Design™ and Simulink Verification Blocks” on page 5-25. If you have Simulink Verification and Validation™ software, you can use the Verification Manager tool in the Signal Builder to construct simulation tests for your model. For an example, see Verifying Frequency-Domain Characteristics of an Aircraft. Note These blocks do not support code generation and can only be used in Normal simulation mode. 5-3 5 Model Verification Defining a Linear System for Model Verification Blocks To assert that the linear system characteristics satisfy specified bounds, the Model Verification blocks compute a linear system from a nonlinear Simulink model. For the software to compute a linear system, you must specify: • Linearization inputs and outputs Linearization inputs and outputs define the portion of the model to linearize. A linearization input defines an input while a linearization output defines an output of the linearized model. To compute a MIMO linear system, specify multiple inputs and outputs. • When to compute the linear system You can compute the linear system and assert bounds at: - Default simulation snapshot time. Typically, simulation snapshots are the times when your model reaches steady state. - Multiple simulation snapshots. Trigger-based simulation events For more information, see the following examples: • “Model Verification at Default Simulation Snapshot Time” on page 5-6 • “Model Verification at Multiple Simulation Snapshots” on page 5-15 5-4 Verifiable Linear System Characteristics Verifiable Linear System Characteristics The following table summarizes the linear system characteristics you can specify bounds on and assert that the bounds are satisfied during simulation. Block Plot Type Bounds on… Check Bode Characteristics Bode Upper and lower Bode magnitude Check Gain and Phase Margins • Bode Gain and phase margins • Nichols • Nyquist • Table Check Nichols Characteristics Nichols • Open-loop gain and phase • Closed-loop peak gain Check Pole-Zero Characteristics Pole-Zero Approximate second-order characteristics, such as settling time, percent overshoot, damping ratio and natural frequency, on the pole locations Check Singular Value Characteristics Singular Value Upper and lower singular values Check Linear Step Response Characteristics Step Response Step response characteristics Specify the bounds in the Bounds tab of the block’s Block Parameters dialog box or programmatically. For more information, see the corresponding block reference pages. 5-5 5 Model Verification Model Verification at Default Simulation Snapshot Time This example shows how to assert that bounds on the linear system characteristics of a nonlinear Simulink model, computed at the default simulation snapshot time of 0, are satisfied during simulation. 1 Open a nonlinear Simulink model. For example: watertank 2 Open the Simulink Library Browser by selecting View > Library Browser in the Simulink Editor. 3 Add a model verification block to the Simulink model. a In the Simulink Control Design library, select Model Verification. b Drag and drop a block, such as the Check Pole-Zero Characetristics block, into the Simulink Editor. The model now resembles the following figure. 4 Double-click the block to open the Block Parameters dialog box. 5-6 Model Verification at Default Simulation Snapshot Time To learn more about the block parameters, see the block reference pages. 5 Specify the linearization input and output to compute the closed-loop poles and zeros. a To specify an input: i Click adjacent to the Linearization inputs/outputs table. 5-7 5 Model Verification The Block Parameters dialog expands to display a Click a signal in the model to select it area. ii In the Simulink model, click the output signal of the PID Controller block to select it. The Click a signal in the model to select it area updates to display the selected signal. iii Click table. 5-8 to add the signal to the Linearization inputs/outputs Model Verification at Default Simulation Snapshot Time b To specify an output: iv In the Simulink model, click the output signal of the Water-Tank System block to select it. The Click a signal in the model to select it area updates to display the selected signal. v Click table. to add the signal to the Linearization inputs/outputs vi In the Configuration drop-down list of the Linearization inputs/outputs table, select Output for watertank/Water-Tank System: 1. 5-9 5 Model Verification Note Because the Open Loop check-box for watertank/Water-Tank System : 1 is clear, the I/Os include the feedback loop in the Simulink model. The software computes the poles and zeros of the closed-loop system. vii Click it area. to collapse the Click a signal in the model to select 6 Specify bounds for assertion. In this example, you use the default approximate second-order bounds, specified in Bounds tab of the Block Parameters dialog box. 5-10 Model Verification at Default Simulation Snapshot Time View the bounds on the pole-zero map by clicking Show Plot to open a plot window. 5-11 5 Model Verification 7 Stop the simulation if assertion fails by selecting Stop simulation when assertion fails in the Assertion tab. 5-12 Model Verification at Default Simulation Snapshot Time 8 Simulate the model by clicking in the plot window. Alternatively, you can simulate the model from the Simulink Editor. The software linearizes the portion of the model between the linearization input and output at the default simulation time of 0, specified in Snapshot times block parameter. When the software detects that a pole violates a specified bound, the simulation stops and the following windows appear: • Simulation Diagnostics window, reporting the block that asserts. • Simulink Editor, highlighting the block that asserts. 5-13 5 Model Verification The closed-loop pole and zero locations of the computed linear system appear as x and o markings in the plot window. You can also view the bound violation in the plot. 5-14 Model Verification at Multiple Simulation Snapshots Model Verification at Multiple Simulation Snapshots This example shows how to: • Add multiple bounds. • Check that the linear system characteristics of a nonlinear Simulink model satisfy the bounds at multiple simulation snapshots • Modify bounds graphically • Disable bounds during simulation 1 Open a nonlinear Simulink model. For example: watertank 2 Open the Simulink Library Browser by selecting View > Library Browser in the Simulink Editor. 3 Add a model verification block to the Simulink model. a In the Simulink Control Design library, select Model Verification. b Drag and drop a block, such as the Check Bode Characteristics block, into the Simulink Editor. The model now resembles the following figure. 5-15 5 Model Verification 4 Double-click the block to open the Block Parameters dialog box. To learn more about the block parameters, see the block reference pages. 5 Specify the linearization I/O points. Tip If your model already contains I/O points, the block automatically detects these points and displays them. a To specify an input: i Click adjacent to the Linearization inputs/outputs table. The Block Parameters dialog expands to display a Click a signal in the model to select it area. 5-16 Model Verification at Multiple Simulation Snapshots ii In the Simulink model, click the output signal of the PID Controller block to select it. The Click a signal in the model to select it area updates to display the selected signal. iii Click table. to add the signal to the Linearization inputs/outputs 5-17 5 Model Verification b To specify an output: iv In the Simulink model, click the output signal of the Water-Tank System block to select it. The Click a signal in the model to select it area updates to display the selected signal. v Click table. to add the signal to the Linearization inputs/outputs vi In the Configuration drop-down list of the Linearization inputs/outputs table, select Output for watertank/Water-Tank System : 1. vii Select the Open Loop option for watertank/Water-Tank System : 1. The Linearization inputs/outputs table now resembles the following figure. 5-18 Model Verification at Multiple Simulation Snapshots c Click to collapse the Click a signal in the model to select it area. Tip Alternatively, before you add the Linear Analysis Plots block, right-click the signals in the Simulink model and select Linear Analysis Points > Input Point and Linear Analysis Points > Output Point. Linearization I/O annotations appear in the model and the selected signals appear in the Linearization inputs/outputs table. 6 Specify simulation snapshot times. a In the Linearizations tab, verify that Simulation snapshots is selected in Linearize on. b In the Snapshot times field, type [0 1 5 10]. 7 Specify multiple bound segments for assertion in the Bounds tab of the Block Parameters dialog box. In this example, enter the following lower magnitude bounds: • Frequencies (rad/s) — {[0.001 0.003],[0.01 0.04]} • Magnitudes (dB) — {[20 20],[15 15]} 5-19 5 Model Verification Click Apply to apply the parameter changes to the block. Click Show Plot to view the bounds on the Bode magnitude plot. 5-20 Model Verification at Multiple Simulation Snapshots 8 Simulate the model by clicking in the plot window. Alternatively, you can simulate the model from the Simulink Editor. The software linearizes the portion of the model between the linearization input and output at the simulation times of 0,1, 5 and 10. When the software detects that the linear system computed at times 0 and 1 violate a specified lower magnitude bound, the following warning messages appear at the MATLAB prompt: Warning: Assertion detected in 'watertank_check_bode/Check Bode Characteristics' at time 0 Warning: Assertion detected in 'watertank_check_bode/Check Bode Characteristics' at time 1 5-21 5 Model Verification You can also view the bound violations in the plot window. 9 Modify a bound graphically. For example, to modify the upper magnitude bound graphically: a In the plot window, click the bound segment to select it and then drag it to the desired location. b Click Update block to update the new values in the Bounds tab of the Block Parameters dialog box. 5-22 Model Verification at Multiple Simulation Snapshots 10 Disable the lower bounds to exclude them from asserting. Clear the Include lower magnitude bounds in assertion option in the Block Parameters dialog box. Then, click Apply. The lower bounds are now grey-out in the plot window, indicating that they are excluded from assertion. 11 Resimulate the model to check if bounds are satisfied. The software satisfies the specified upper magnitude bound, and therefore the software no longer reports an assertion failure. 5-23 5 5-24 Model Verification Model Verification Using Simulink® Control Design™ and Simulink® Verification Blocks Model Verification 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 5-25 5 Model Verification 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. 5-26 Model Verification Using Simulink® Control Design™ and Simulink® Verification Blocks 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. a In the Check Gain and Phase Margins Block Parameters dialog box, select Output assertion signal and click Apply. This action adds an output port z-1 to the block. 5-27 5 Model Verification b 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 c 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. 5-28 Model Verification Using Simulink® Control Design™ and Simulink® Verification Blocks 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 by selecting Simulation > Run in the Simulink Editor. During simulation: • The v <= 0.9*vCruise block asserts multiple times and warnings appear at the MATLAB prompt. • The Check Gain and Phase Margins block asserts two times and warnings appear at the MATLAB prompt. You can also view the phase margins that violate the bound in the plot window. 5-29 5 Model Verification • The Assert that: PM >= 60 or if PM < 60 then v <= 0.9*vCruise does not encounter the assertion condition. Therefore, no warnings appear at the MATLAB prompt for this block and the simulation does not stop. 5-30 6 Function Reference Linearization Analysis I/Os (p. 6-2) Functions for creating and setting linearization analysis I/Os Steady-State Operating Points (p. 6-3) Functions for creating and working with operating points Linearization (p. 6-4) Functions for linearizing Simulink models Frequency Response Estimation (p. 6-5) Functions for estimating frequency response models Interface for Compensator Tuning (p. 6-6) Interface for Control System Design and Analysis in Simulink 6 Function Reference Linearization Analysis I/Os 6-2 get Properties of linearization I/Os and operating points getlinio Linearization input/output (I/O) settings for Simulink model, Linear Analysis Plots or Model Verification block linio Define linearization input/output (I/O) points for Simulink model set Set properties of linearization I/Os and operating points setlinio Specify linearization input/output (I/O) points for Simulink model, Linear Analysis Plots block, or Model Verification block Steady-State Operating Points Steady-State Operating Points addoutputspec Add output specification to operating point specification copy Copy operating point or operating point specification findop Steady-state operating point from specifications (trimming) or simulation get Properties of linearization I/Os and operating points getinputstruct Input structure from operating point getstatestruct State structure from operating point getxu States and inputs from operating points initopspec Initialize operating point specification values operpoint Create operating point for Simulink model operspec Operating point specifications set Set properties of linearization I/Os and operating points setxu Set states and inputs in operating points update Update operating point object with structural changes in model 6-3 6 Function Reference Linearization 6-4 frest.simCompare Plot time-domain simulation of nonlinear and linear models getlinio Linearization input/output (I/O) settings for Simulink model, Linear Analysis Plots or Model Verification block getlinplant Compute open-loop plant model from Simulink diagram linearize Linear approximation of Simulink model or block linio Define linearization input/output (I/O) points for Simulink model linlft Linearize model while removing contribution of specified blocks linlftfold Combine linearization results from specified blocks and model linoptions Set options for linearization and finding operating points operpoint Create operating point for Simulink model Frequency Response Estimation Frequency Response Estimation frest.Chirp Swept-frequency cosine signal frest.createFixedTsSinestream Sinestream input signal with fixed sample time frest.createStep Step input signal frest.findDepend List of model path dependencies frest.findSources Identify time-varying source blocks frest.Random Random input signal for simulation frest.simCompare Plot time-domain simulation of nonlinear and linear models frest.simView Plot frequency response model in time- and frequency-domain frest.Sinestream Signal containing series of sine waves frestimate Frequency response estimation of Simulink models frestimateOptions Options for frequency response estimation fselect Extract sinestream signal at specified frequencies generateTimeseries Generate time-domain data for input signal getSimulationTime Final time of simulation for frequency response estimation 6-5 6 Function Reference Interface for Compensator Tuning 6-6 getIOTransfer (slTunable) Tunable model of closed-loop transfer function between specified inputs and outputs getLoopTransfer (slTunable) Tunable model of open-loop transfer function at specified location looptune (slTunable) Tune MIMO feedback loops in Simulink slTunable Interface for control system tuning of Simulink models 7 Class Reference slTunable Purpose Interface for control system tuning of Simulink models Description slTunable provides an interface between a Simulink model and the tuning commands slTunable.systune and slTunable.looptune. (Using these tuning commands requires Robust Control Toolbox software). slTunable allows you to: • Specify the control architecture. • Extract information about the control system, such as linearized open-loop and closed-loop responses. • Designate and parametrize blocks to be tuned. Because tuning commands such as systune operate on linear models, the slTunable interface automatically computes and stores a linearization of your Simulink model. (For more information about linearization, see linearize). slTunable also parametrizes the tunable portion of your control system. You can use slTunable and its methods for tuning and analyzing the control system. Commands that query the linearization stored in the slTunable interface automatically relinearize the Simulink model if you have changed any properties of the slTunable interface since the last linearization. Such commands include slTunable.systune, slTunable.looptune, slTunable.getIOTransfer, and slTunable.getLoopTransfer. Construction ST = slTunable(mdl,tunedblocks) creates an slTunable interface ST for tuning the blocks tunedblocks of the Simulink model mdl. Creating ST automatically parametrizes the blocks specified by tunedblocks. The interface ST also stores a linearization of mdl, computed at the operating point and linearization I/O points specified in the model. ST = slTunable(mdl,tunedblocks,io) further specifies a vector io of linearization I/O points for analysis and tuning of the control system. 7-2 slTunable ST = slTunable(mdl,tunedblocks,io,op) also specifies an operating point op for linearizing the model. ST = slTunable(...,options) specifies additional options for linearizing mdl. ST = slTunable(...,Name,Value) sets the additional properties of ST specified by one or more Name,Value pair arguments. Name is a property name, and Value is the corresponding value. Name must appear inside single quotes (''). You can specify several name-value pair arguments in any order as Name1,Value1,...,NameN,ValueN. Specifying properties of ST in this way saves repeated linearization by ensuring that the interface is fully configured before linearizing the model. Input Arguments mdl String specifying name of Simulink model. tunedblocks String or cell array of strings specifying the Simulink block or blocks to tune. You can specify an abbreviated block name provided that the string matches the end of the full block path and unambiguously identifies the block to tune. slTunable automatically parametrizes the blocks listed in tunedblocks. To override the default parametrization, use slTunable.setBlockParam. io Vector of I/O points for linearization, tuning, and analysis of the control system. (For more information about I/O points, see linio.) These I/O points specify which signals are model inputs, outputs, and loop opening locations. Only signals specified in io or added with slTunable.addIO are available in the interface ST for tuning and analysis. 7-3 slTunable op Operating point specification for linearizing mdl. For more information about operating point specifications, see operpoint and findop. options Option set specifying additional options for the linearization of mdl. Use linoptions to create options. For information about available options, see the linoptions reference page. Name-Value Pair Arguments Specify optional comma-separated pairs of Name,Value arguments, where Name is the argument name and Value is the corresponding value. Name must appear inside single quotes (' '). You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN. Controls Cell array of strings specifying the controller outputs that drive the actuators in the control system. These strings correspond to signal names in mdl. The Controls and Measurements properties of ST define the boundary between the plant and controller in mdl for tuning with slTunable.looptune. Use slTunable.addControl to specify additional control signals in the Controls property of an existing slTunable interface. Default: 0-by-1 cell array IOs Cell array of strings specifying the input and output signals available for analysis and tuning. Each signal is characterized by: • Full path in the model, either: 7-4 slTunable BlockPath/PortNumber[SignalName] or BlockPath/PortNumber[BusElement1.BusElement2] • Linearization I/O type 'in', 'out', 'inout', or 'outin'. ST.IOs automatically includes all the linearization I/O points specified in the model. To remove a linearization I/O from ST.IOs, delete a row from the cell array. For example, the following command deletes the second I/O from ST.IOs. ST.IOs(2,:) = []; To add a linearization I/O to ST, use slTunable.addIO. For more information about linearization I/O points, see linio. Default: 0-by-2 cell array LinearizeOptions Options set for linearizing mdl. Use linoptions to create the options set. Use slTunable.linearize to relinearize mdl and update the slTunable interface after changing LinearizeOptions. Measurements Cell array of strings specifying the sensor outputs that feed the controller in the control system. These strings correspond to signal names in mdl. The Controls and Measurements properties of ST define the boundary between the plant and controller in mdl for tuning with slTunable.looptune. Use slTunable.addMeasurement to specify additional measurement signals in the Measurement property of an existing slTunable interface. 7-5 slTunable Default: 0-by-1 cell array ModelName String specifying the name of the model being analyzed or tuned. ModelName is set by the input argument mdl. Notes User notes. This property can store any text as a string or cell array of strings. For example: ST.Notes = 'This model was created on Jan. 1st, 2011.'; Default: {} Openings Cell array of strings specifying signal locations in mdl where feedback loops are broken. The loop openings are enforced in all tuning and validation commands such as slTunable.looptune and slTunable.loopview. Loop opening locations are stored in the Openings property as the full path name of the corresponding signal in mdl, either: BlockPath/PortNumber[SignalName] or BlockPath/PortNumber[BusElement1.BusElement2] Use slTunable.addOpening to add additional loop openings to the Opening property of an existing slTunable interface. To remove a loop opening location, delete a row from the cell array. For example, the following command deletes the second I/O from ST.Openings. ST.Openings(2,:) = []; Default: 0-by-1 cell array 7-6 slTunable OperatingPoint Operating point specification for linearizing mdl. Use slTunable.linearize to relinearize mdl and update the slTunable interface after changing OperatingPoint. For more information about operating point specifications, see operpoint and findop. Ts Working sampling time for analysis and tuning. mdl is linearized at this sampling time. Default: 0 Switches Cell array specifying signal locations in mdl where feedback loops may be broken for analysis or tuning purposes. Switches differs from Openings in that the loop openings specified in Openings are always enforced in tuning and analysis. In contrast, locations specified in Switches are closed by default unless you explicitly specify them open. You can specify switch locations as openings in commands such as slTunable.getIOTransfer, slTunable.getLoopTransfer, or TuningGoal.LoopShape. Switch locations are stored in the Switches property as the full path name of the corresponding signal in mdl, either: BlockPath/PortNumber[SignalName] or BlockPath/PortNumber[BusElement1.BusElement2] Use slTunable.addSwitch to add additional loop openings to the Switches property of an existing slTunable interface. To remove a loop opening location, delete a row from the cell array. For example, the following command deletes the second I/O from ST.Switches. 7-7 slTunable ST.Switches(2,:) = []; Default: 0-by-1 cell array TunedBlocks Cell array of strings specifying full paths to the tuned blocks in mdl. When you create an slTunable interface, the TunedBlocks property is automatically populated with the blocks you specify in the tunedblocks input. To specify additional tunable blocks in an existing an existing slTunable interface, use slTunable.addBlock Properties Controls Cell array of strings specifying the controller outputs that drive the actuators in the control system. These strings correspond to signal names in mdl. The Controls and Measurements properties of ST define the boundary between the plant and controller in mdl for tuning with slTunable.looptune. Use slTunable.addControl to specify additional control signals in the Controls property of an existing slTunable interface. Default: 0-by-1 cell array IOs Cell array of strings specifying the input and output signals available for analysis and tuning. Each signal is characterized by: • Full path in the model, either: BlockPath/PortNumber[SignalName] or 7-8 slTunable BlockPath/PortNumber[BusElement1.BusElement2] • Linearization I/O type 'in', 'out', 'inout', or 'outin'. ST.IOs automatically includes all the linearization I/O points specified in the model. To remove a linearization I/O from ST.IOs, delete a row from the cell array. For example, the following command deletes the second I/O from ST.IOs. ST.IOs(2,:) = []; To add a linearization I/O to ST, use slTunable.addIO. For more information about linearization I/O points, see linio. Default: 0-by-2 cell array LinearizeOptions Options set for linearizing mdl. Use linoptions to create the options set. Use slTunable.linearize to relinearize mdl and update the slTunable interface after changing LinearizeOptions. Measurements Cell array of strings specifying the sensor outputs that feed the controller in the control system. These strings correspond to signal names in mdl. The Controls and Measurements properties of ST define the boundary between the plant and controller in mdl for tuning with slTunable.looptune. Use slTunable.addMeasurement to specify additional measurement signals in the Measurement property of an existing slTunable interface. Default: 0-by-1 cell array ModelName 7-9 slTunable String specifying the name of the model being analyzed or tuned. ModelName is set by the input argument mdl. Notes User notes. This property can store any text as a string or cell array of strings. For example: ST.Notes = 'This model was created on Jan. 1st, 2011.'; Default: {} Openings Cell array of strings specifying signal locations in mdl where feedback loops are broken. The loop openings are enforced in all tuning and validation commands such as slTunable.looptune and slTunable.loopview. Loop opening locations are stored in the Openings property as the full path name of the corresponding signal in mdl, either: BlockPath/PortNumber[SignalName] or BlockPath/PortNumber[BusElement1.BusElement2] Use slTunable.addOpening to add additional loop openings to the Opening property of an existing slTunable interface. To remove a loop opening location, delete a row from the cell array. For example, the following command deletes the second I/O from ST.Openings. ST.Openings(2,:) = []; Default: 0-by-1 cell array OperatingPoint 7-10 slTunable Operating point specification for linearizing mdl. Use slTunable.linearize to relinearize mdl and update the slTunable interface after changing OperatingPoint. For more information about operating point specifications, see operpoint and findop. Ts Working sampling time for analysis and tuning. mdl is linearized at this sampling time. Default: 0 Switches Cell array specifying signal locations in mdl where feedback loops may be broken for analysis or tuning purposes. Switches differs from Openings in that the loop openings specified in Openings are always enforced in tuning and analysis. In contrast, locations specified in Switches are closed by default unless you explicitly specify them open. You can specify switch locations as openings in commands such as slTunable.getIOTransfer, slTunable.getLoopTransfer, or TuningGoal.LoopShape. Switch locations are stored in the Switches property as the full path name of the corresponding signal in mdl, either: BlockPath/PortNumber[SignalName] or BlockPath/PortNumber[BusElement1.BusElement2] Use slTunable.addSwitch to add additional loop openings to the Switches property of an existing slTunable interface. To remove a loop opening location, delete a row from the cell array. For example, the following command deletes the second I/O from ST.Switches. 7-11 slTunable ST.Switches(2,:) = []; Default: 0-by-1 cell array TunedBlocks Cell array of strings specifying full paths to the tuned blocks in mdl. When you create an slTunable interface, the TunedBlocks property is automatically populated with the blocks you specify in the tunedblocks input. To specify additional tunable blocks in an existing an existing slTunable interface, use slTunable.addBlock Methods 7-12 addBlock Add block to list of tuned blocks addControl Add control signal to list of control signals in interface addIO Add I/O points list of linearization I/Os in interface addMeasurement Add measurement signal to list of measurement signals in interface addOpening Add new opening location to list of loop openings in interface addSwitch Add switch location to list of loop opening switches in interface getBlockParam Get parametrization of a particular tuned block in slTunable interface getBlockRateConversion Query rate conversion method of tunable block slTunable getBlockValue Current value of a particular tuned block in slTunable interface getIOTransfer Tunable model of closed-loop transfer function between specified inputs and outputs getLoopTransfer Tunable model of open-loop transfer function at specified location linearize Relinearize Simulink model to update slTunable interface looptune Tune MIMO feedback loops in Simulink loopview Graphically analyze results of control system tuning readBlockValue Update tuned block values from Simulink model setBlockParam Specify parametrization for specified tuned block setBlockRateConversion Set rate conversion method of tunable block setBlockValue Set current value of parametrization for specified block showBlockValue Display current value of block parametrizations showTunable Display current value of block parametrizations 7-13 slTunable Copy Semantics systune Tune fixed-structure control system parameters in Simulink writeBlockValue Update block values in Simulink model To make an independently modifiable copy of an slTunable interface, use the copy command. For example: ST = copy(STO) creates an slTunable interface ST that initially contains identical values to ST0 for all properties. You can now modify ST without changing ST0. slTunable is a handle class. To learn more about how handle classes affect copy operations, see Copying Objects in the MATLAB Programming Fundamentals documentation. Examples Create and Configure slTunable Interface Create and configure a slTunable interface for tuning the Simulink model rct_cascade using slTunable.looptune. Open the Simulink model. open_system('rct_cascade') Create the slTunable interface for rct_cascade. 7-14 slTunable tunedblocks = {'C1','C2'}; ST0 = slTunable('rct_cascade',tunedblocks); The tunable blocks of this model are the PID controllers, C1 and C2. This command creates the slTunable interface ST0 with those tunable blocks. Specify the control and measurement signals of the control system. addControl(ST0,'u2'); addMeasurement(ST0,{'y1','y2m'}); The commands slTunable.addControl and slTunable.addMeasurement add the specified signals to the Controls and Measurements properties of ST0. Control and measurement signals define the boundary between plant and controller for tuning with slTunable.looptune. In rct_cascade, the actuator signal is u2, the output of the inner-loop controller. The measurement signals are y1 and y2m, each of which feeds into a portion of the cascaded controller. Specify the signal y1 as a location for an optional loop opening (a switch). addSwitch(ST0,'y1'); When tuning a cascade control system, it can be useful to impose certain requirements on the inner loop that are enforced with the outer loop open. However, such a control system also has overall requirements are enforced with all loops closed. Therefore, add a switch location, instead of a loop opening location. You can now use ST0 to tune the control system with slTunable.looptune. Algorithms slTunable linearizes your Simulink model using the algorithms described in “Exact Linearization Algorithm” on page 2-146. Tutorials • “Tuning Control Systems in Simulink” 7-15 slTunable How To • “Set Up Your Control System for Tuning with systune” • “Specifying Design Requirements for systune” • “Set Up Your Control System for Tuning with looptune” • “Performance and Robustness Specifications for looptune” 7-16 8 Alphabetical List addoutputspec Purpose Add output specification to operating point specification Syntax opnew=addoutputspec(op,'block',portnumber) Alternatives As an alternative to the addoutputspec function, add output specifications with the Simulink Control Design GUI. See “Steady-State Operating Point to Meet Output Specification” on page 1-21. Description opnew=addoutputspec(op,'block',portnumber) adds an output specification for a Simulink model to an existing operating point specification, op, created with operspec. The signal being constrained by the output specification is indicated by the name of the block, 'block', and the port number, portnumber, that it originates from. You can edit the output specification within the new operating point specification object, opnew, to include the actual constraints or specifications for the signal. Use the new operating point specification object with the function findop to find operating points for the model. This function automatically compiles the Simulink model, given in the property Model of op, to find the block’s output portwidth. Examples Create an operating point specification for the model magball. op=operspec('magball') This specification returns the object op. Note that there are no outports in this model and no outputs in the object op. Operating Specification for the Model magball. (Time-Varying Components Evaluated at time t=0) States: ---------(1.) magball/Controller/PID Controller/Filter spec: dx = 0, initial guess: 0 (2.) magball/Controller/PID Controller/Integrator spec: dx = 0, initial guess: 14 8-2 addoutputspec (3.) magball/Magnetic spec: dx = 0, (4.) magball/Magnetic spec: dx = 0, (5.) magball/Magnetic spec: dx = 0, Ball Plant/Current initial guess: Ball Plant/dhdt initial guess: Ball Plant/height initial guess: 7 0 0.05 Inputs: None ---------Outputs: None ---------- To add an output specification to the signal between the Controller block and the Magnetic Ball Plant block, use the function addoutputspec. newop=addoutputspec(op,'magball/Controller',1) This function adds the output specification is added to the operating point specification object. Operating Specification for the Model magball. (Time-Varying Components Evaluated at time t=0) States: ---------(1.) magball/Controller/PID Controller/Filter spec: dx = 0, initial guess: 0 (2.) magball/Controller/PID Controller/Integrator spec: dx = 0, initial guess: 14 (3.) magball/Magnetic Ball Plant/Current spec: dx = 0, initial guess: 7 (4.) magball/Magnetic Ball Plant/dhdt spec: dx = 0, initial guess: 0 (5.) magball/Magnetic Ball Plant/height spec: dx = 0, initial guess: 0.05 8-3 addoutputspec Inputs: None ---------Outputs: ---------(1.) magball/Controller spec: none Edit the output specification to constrain this signal to be 14. newop.Outputs(1).Known=1, newop.Outputs(1).y=14 The final output specification is displayed. Operating Specification for the Model magball. (Time-Varying Components Evaluated at time t=0) States: ---------(1.) magball/Controller/PID Controller/Filter spec: dx = 0, initial guess: 0 (2.) magball/Controller/PID Controller/Integrator spec: dx = 0, initial guess: 14 (3.) magball/Magnetic Ball Plant/Current spec: dx = 0, initial guess: 7 (4.) magball/Magnetic Ball Plant/dhdt spec: dx = 0, initial guess: 0 (5.) magball/Magnetic Ball Plant/height spec: dx = 0, initial guess: 0.05 Inputs: None ---------Outputs: ---------(1.) magball/Controller spec: y = 0 8-4 addoutputspec See Also findop | operspec | operpoint 8-5 copy Purpose Copy operating point or operating point specification Syntax op_point2=copy(op_point1) op_spec2=copy(op_spec1) Description op_point2=copy(op_point1) returns a copy of the operating point object op_point1. You can create op_point1 with the function operpoint. op_spec2=copy(op_spec1) returns a copy of the operating point specification object op_spec1. You can create op_spec1 with the function operspec. Note The command op_point2=op_point1 does not create a copy of op_point1 but instead creates a pointer to op_point1. In this case, any changes made to op_point2 are also made to op_point1. Examples Create an operating point object for the model, magball. opp=operpoint('magball') The operating point is displayed. Operating Point for the Model magball. (Time-Varying Components Evaluated at time t=0) States: ---------(1.) magball/Controller/PID Controller/Filter x: 0 (2.) magball/Controller/PID Controller/Integrator x: 14 (3.) magball/Magnetic Ball Plant/Current x: 7 (4.) magball/Magnetic Ball Plant/dhdt x: 0 8-6 copy (5.) magball/Magnetic Ball Plant/height x: 0.05 Inputs: None ---------- Create a copy of this object, opp. new_opp=copy(opp) An exact copy of the object is displayed. Operating Point for the Model magball. (Time-Varying Components Evaluated at time t=0) States: ---------(1.) magball/Controller/PID Controller/Filter x: 0 (2.) magball/Controller/PID Controller/Integrator x: 14 (3.) magball/Magnetic Ball Plant/Current x: 7 (4.) magball/Magnetic Ball Plant/dhdt x: 0 (5.) magball/Magnetic Ball Plant/height x: 0.05 Inputs: None ---------- See Also operpoint | operspec 8-7 findop Purpose Steady-state operating point from specifications (trimming) or simulation Syntax [op,opreport] = findop(sys,opspec) [op,opreport] = findop(sys,opspec,options) op = findop(sys,tsnapshot) Description [op,opreport] = findop(sys,opspec) returns the steady-state operating point of the model that meets the specifications opspec. The Simulink model must be open. If opspec is a vector of operating points specifications, findop returns a vector of corresponding operating points. [op,opreport] = findop(sys,opspec,options) searches for the operating point of the model using additional optimization algorithm options specified by options. op = findop(sys,tsnapshot) simulates the model and extracts operating points at the simulation snapshot time instants (snapshots) tsnapshot. Tips • Initialize operating point search at a simulation snapshot or a previously computed operating point using initopspec. • Linearize the model at the operating point op using linearize. Input Arguments sys Simulink model name, specified as a string inside single quotes (' '). opspec Operating point specification object for the model sys, specified using operspec. opspec can also be a vector of operating point specification objects. If opspec is a vector of operating points specifications, findop returns a vector of corresponding operating points. In this case, findop needs to compile the model only once. Using a vector of operating points allows 8-8 findop you to find multiple trimmed operating points without the overhead of compiling the model for each trimming computation. options Algorithm options, specified using linoptions. tsnapshot Simulation snapshot time instants when to extract the operating point of the model, specified as a scalar or vector. Output Arguments op Operating point object. After creating the operating point object, you can modify the operating point states and input levels. For example, op.States(1).x stores the state values of the first model state, and op.Inputs(1).u stores the input level of the first inport block. The operating point object has these properties: • Model — Simulink model name. String. • States — State operating points of the Simulink model. Vector of data structures, where each data structure represents the states of one Simulink block. Each States structure has these fields: x Simulink block state values, specified as a vector of states. Ts (Only for discrete-time states) Sample time and offset of each Simulink block state, specified as a vector. Description Block state description, specified as a string. Nx (read only) Number of states in the Simulink block. Block Simulink block name. 8-9 findop SampleType State time rate can have the values: • 'CSTATE' — Continuous-time state - 'DSTATE' — Discrete-time state. inReferencedModel Determine whether the sates is inside a reference model: • 1 — State is inside a reference model. - 0 — State is in the current model file. • Inputs — Input levels at the operating point. Vector of data structures, where each data structure represents the input levels of one root-level inport block in the Simulink block. Each Inputs data structure has these fields: u Inport block input levels at the operating point, specified as a vector of input levels. Description Inport block input description, specified as a string. Block Inport block name. PortWidth Number of inport block signals. • Time — Time instants for evaluating the time-varying functions in the model. If opspec is a vector of operating point specification objects, then op is a vector of corresponding operating points. opreport Optimization results report object. 8-10 findop This report displays automatically even when you suppress the output using a semicolon. You can avoid displaying the report by using linoptions to set the DisplayReport field in options to 'off'. The opreport object has these properties: • Model — Model property value of the op object. • Inputs — Inputs property value of the op object. • Outputs — Outputs property value of the op object with the addition of yspec, which is the desired y value. • States — States property value of the op object with the addition of dx, which are the state derivative values. • Time — Time property value of the op object. • TerminationString — Optimization termination condition, stored as a string. • OptimizationOutput — Optimization algorithm results, returned as a structure with these fields: iterations funcCount lssteplength stepsize algorithm firstorderopt constrviolation message For more information about the optimization algorithm, see the Optimization Toolbox™ documentation. 8-11 findop Definitions Steady-State Operating Point (Trim Condition) A steady-state operating point of the model, also called equilibrium or trim condition, includes state variables that do not change with time. A model might have several steady-state operating points. For example, a hanging pendulum has two steady-state operating points. A stable steady-state operating point occurs when a pendulum hangs straight down. That is, the pendulum position does not change with time. When the pendulum position deviates slightly, the pendulum always returns to equilibrium; small changes in the operating point do not cause the system to leave the region of good approximation around the equilibrium value. An unstable steady-state operating point occurs when a pendulum points upward. As long as the pendulum points exactly upward, it remains in equilibrium. However, when the pendulum deviates slightly from this position, it swings downward and the operating point leaves the region around the equilibrium value. When using optimization search to compute operating points for a nonlinear system, your initial guesses for the states and input levels must be in the neighborhood of the desired operating point to ensure convergence. When linearizing a model with multiple steady-state operating points, it is important to have the right operating point. For example, linearizing a pendulum model around the stable steady-state operating point produces a stable linear model, whereas linearizing around the unstable steady-state operating point produces an unstable linear model. Examples Steady-State Operating Point (Trimming) From Specifications This example shows how to use findop to compute an operating point of a model from specifications. 1 Open Simulink model. sys = 'watertank'; load_system(sys); 8-12 findop 2 Create operating point specification object. opspec = operspec(sys) By default, all model states are specified to be at steady state. Operating Specification for the Model watertank. (Time-Varying Components Evaluated at time t=0) States: ---------(1.) watertank/PID Controller/Integrator spec: dx = 0, initial guess: (2.) watertank/Water-Tank System/H spec: dx = 0, initial guess: 0 1 Inputs: None ---------Outputs: None ---------operspec extracts the default operating point of the Simulink model with two states. The model does not have any root-level inport blocks and no root-level outport blocks or output constraints. 3 Configure specifications for the first model state. opspec.States(1).SteadyState = 1; opspec.States(1).x = 2; opspec.States(1).Min = 0; The first state must be at steady state and have an initial value of 2 with a lower bound of 0. 4 Configure specifications for the second model state. opspec.States(2).Known = 1; opspec.States(2).x = 10; 8-13 findop The second state sets the desired height of the water in the tank at 10. Configuring the height as a known value keeps this value fixed when computing the operating point. 5 Find the operating point that meets these specifications. [op,opreport] = findop(sys,opspec) bdclose(sys); opreport describes how closely the optimization algorithm met the specifications at the end of the operating point search. Operating Report for the Model watertank. (Time-Varying Components Evaluated at time t=0) Operating point specifications were successfully met. States: ---------(1.) watertank/PID Controller/Integrator x: 1.26 dx: 0 (0) (2.) watertank/Water-Tank System/H x: 10 dx: 0 (0) Inputs: None ---------Outputs: None ---------dx indicates the time derivative of each state. The actual dx values of zero indicate that the operating point is at steady state. The desired dx value is in parentheses. Steady-State Operating Point to Meet Output Specification This example shows how to specify an output constraint for computing the steady-state operating point of a model. 8-14 findop 1 Open Simulink model. sys = 'scdspeed'; open_system(sys); 2 Create operating point specification object. opspec = operspec(sys); By default, all model states are specified to be at steady state. 3 Configure the output specification. blk = [sys '/rad//s to rpm']; opspec = addoutputspec(opspec,blk,1); opspec.Outputs(1).Known = true; opspec.Outputs(1).y = 2000; addoutputspec adds to the operating point specification an output specification for the output of the block rad/s to rpm. This output specification, stored in opspec.Outputs(1), allows you to specify a fixed output value for that block as part of the operating point specification. Setting the Known attribute of the output specification to true ensures that the fixed output level is a constraint in the operating point search. 4 Find the operating point that meets the output specification. op = findop(sys,opspec); bdclose(sys); Operating Point Search Report: --------------------------------Operating Report for the Model scdspeed. (Time-Varying Components Evaluated at time t=0) Operating point specifications were successfully met. States: 8-15 findop ---------(1.) scdspeed/Throttle & Manifold/Intake Manifold/p0 = 0.543 bar x: 0.544 dx: 2.66e-13 (0) (2.) scdspeed/Vehicle Dynamics/w = T//J w0 = 209 rad//s x: 209 dx: -8.48e-12 (0) Inputs: ---------(1.) scdspeed/Throttle u: 0.00382 perturbation [-Inf Inf] Outputs: ---------(1.) scdspeed/rad//s to rpm y: 2e+03 (2e+03) The search report shows that the operating point search was successful. op is an operating point object that specifies a steady-state operating point for the model scdspeed, in which the output of the rad/s to rpm block is 2000. Operating Points for Multiple Specification Sets Find operating points for multiple operating point specifications with a single model compilation. Each time you call findop, the software compiles the Simulink model. To find operating points for multiple specifications, you can give findop a vector of operating point specifications. Then findop only compiles the model once. 1 Open Simulink model. sys = 'scdspeed'; open_system(sys); 2 Create operating point specification object. 8-16 findop opspec1 = operspec(sys); By default, all model states are specified to be at steady state. 3 Configure the output specification. blk = [sys '/rad//s to rpm']; opspec1 = addoutputspec(opspec1,blk,1); opspec1.Outputs(1).Known = true; opspec1.Outputs(1).y = 1500; opspec1 specifies a stead-state operating point in which the output of the block rad/s to rpm is fixed at 500. Note Alternatively, you can configure an operating point specification using the Linear Analysis Tool and export the specification to the MATLAB workspace. See “Import and Export Specifications For Operating Point Search” on page 1-37 for more information. 4 Create and configure additional operating point specifications. opspec2 = copy(opspec1); opspec2.Outputs(1).y = 2000; opspec3 = copy(opspec1); opspec3.Outputs(1).y = 2500; Using the copy command creates an independent operating point specification that you can edit without changing opspec1. Here, the specifications opspec2 and opspec3 are identical to opspec1, except for the target output level. 5 Find the operating points that meet each of the three output specifications. 8-17 findop opspecs = [opspec1,opspec2,opspec3]; ops = findop(sys,opspecs); bdclose(sys); Pass the three operating point specifications to findop in the vector opspecs. When you give findop a vector of operating point specifications, it finds all the operating points with only one model compilation. ops is a vector of operating point objects for the model scdspeed that correspond to the three specifications in the vector. Initialize Steady-State Operating Point Search Using Simulation This example shows how to use findop to compute an operating point of a model from specifications, where the initial state values are extracted from a simulation snapshot. 1 Open Simulink model. sys = 'watertank'; load_system(sys); 2 Extract an operating point from simulation after 10 time units. opsim = findop(sys,10); 3 Create operating point specification object. By default, all model states are specified to be at steady state. opspec = operspec(sys); 4 Configure initial values for operating point search. opspec = initopspec(opspec,opsim); 5 Find the steady state operating point that meets these specifications. [op,opreport] = findop(sys,opspec) 8-18 findop bdclose(sys); opreport describes the optimization algorithm status at the end of the operating point search. Operating Report for the Model watertank. (Time-Varying Components Evaluated at time t=0) Operating point specifications were successfully met. States: ---------(1.) watertank/PID Controller/Integrator x: 1.26 dx: 0 (0) (2.) watertank/Water-Tank System/H x: 10 dx: -1.1e-014 (0) Inputs: None ---------Outputs: None ---------dx, which is the time derivative of each state, is effectively zero. This value of the state derivative indicates that the operating point is at steady state. Steady-State Operating Points at Simulation Snapshots This example shows how to use findop to extract operating points of a model from specifications snapshots. 1 Open Simulink model. sys = 'magball'; load_system(sys); 2 Extract an operating point from simulation at 10 and 20 time units. 8-19 findop op = findop(sys,[10,20]); 3 Display the first operating point. op(1) Operating Point for the Model magball. (Time-Varying Components Evaluated at time t=10) States: ---------(1.) magball/Controller/PID Controller/Filter x: 5.47e-007 (2.) magball/Controller/PID Controller/Integrator x: 14 (3.) magball/Magnetic Ball Plant/Current x: 7 (4.) magball/Magnetic Ball Plant/dhdt x: 8.44e-008 (5.) magball/Magnetic Ball Plant/height x: 0.05 Inputs: None ---------4 Display the second operating point. op(2) Operating Point for the Model magball. (Time-Varying Components Evaluated at time t=20) States: ---------(1.) magball/Controller/PID Controller/Filter x: 2.07e-007 (2.) magball/Controller/PID Controller/Integrator x: 14 8-20 findop (3.) magball/Magnetic Ball Plant/Current x: 7 (4.) magball/Magnetic Ball Plant/dhdt x: 3.19e-008 (5.) magball/Magnetic Ball Plant/height x: 0.05 Inputs: None ---------- View Operating Point Object This example shows how to use get to display the operating point states, inputs, and outputs. sys = 'watertank'; load_system(sys); op = operpoint(sys) get(op.States(1)) Synchronize Simulink Model Changes With Operating Point Specification This example shows how to use update to update an existing operating point specification object after you update the Simulink model. 1 Open Simulink model. sys = 'scdspeedctrl'; open_system(sys); 2 Create operating point specification object. By default, all model states are specified to be at steady state. opspec = operspec(sys); 8-21 findop 3 In the Simulink Editor, double-click the Reference Filter block. Change the Numerator of the transfer function to [100] and the Denominator to [1 20 100]. Click OK. 4 Find the steady state operating point that meets these specifications. op = findop(sys,opspec) This command results in an error because the changes to your model are not reflected in your operating point specification object: ??? The model scdspeedctrl has been modified and the operating point object is out of date. Update the object by calling the function update on your operating point object. 8-22 findop 5 Update the operating point specification object with changes to the model. Repeat the operating point search. opspec = update(opspec); op = findop(sys,opspec) bdclose(sys); After updating the operating point specifications object, the optimization algorithm successfully finds the operating point. Algorithms By default, findop uses the optimizer graddescent_elim. To use a different optimizer, change the value of OptimizerType in options using linoptions. findop automatically sets these Simulink model properties for optimization: • BufferReuse = 'off' • RTWInlineParameters = 'on' • BlockReductionOpt = 'off' After the optimization completes, Simulink restores the original model properties. Alternatives As an alternative to the findop command, find operating points using the Linear Analysis Tool. See the following examples: • “Steady-State Operating Points from State Specifications” on page 1-16 • “Steady-State Operating Point to Meet Output Specification” on page 1-21 See Also initopspec | linearize | linoptions | operspec | addoutputspec Tutorials • “Steady-State Operating Point (Trimming)” on page 1-2 • “Choosing Between Simulation Snapshot and Operating Point from Specifications” on page 1-12 8-23 findop • “Simulink Model States Included in Operating Point Object” on page 1-4 How To • “Steady-State Operating Points (Trimming) from Specifications” on page 1-14 • “Steady-State Operating Points from Simulation” on page 1-41 8-24 frest.Chirp Purpose Swept-frequency cosine signal Syntax input = frest.Chirp(sys) input = frest.Chirp('OptionName',OptionValue) Description input = frest.Chirp(sys) creates a swept-frequency cosine input signal based on the dynamics of a linear system sys. input = frest.Chirp('OptionName',OptionValue) creates a swept-frequency cosine input signal using the options specified by comma-separated name/value pairs. To view a plot of your input signal, type plot(input). To obtain a timeseries for your input signal, use the generateTimeseries command. Input Arguments sys Linear system for creating a chirp signal based on the dynamic characteristics of this system. You can specify the linear system based on known dynamics using tf, zpk, or ss. You can also obtain the linear system by linearizing a nonlinear system. The resulting chirp signal automatically sets these options based on the linear system: • 'FreqRange' are the frequencies at which the linear system has interesting dynamics. • 'Ts' is set to avoid aliasing such that the Nyquist frequency of the signal is five times the upper end of the frequency range. • 'NumSamples' is set such that the frequency response estimation includes the lower end of the frequency range. Other chirp options have default values. ’OptionName’,OptionValue Signal characteristics, specified as comma-separated pairs of option name string and the option value. 8-25 frest.Chirp Option Name Option Value 'Amplitude' Signal amplitude. Default: 1e-5 'FreqRange' Signal frequencies, specified as either: • Two-element vector, for example [w1 w2] • Two-element cell array, for example {w1 w2} Default: [1,1000] 'FreqUnits' Frequency units: • 'rad/s'—Radians per second • 'Hz'—Hertz Changing frequency units does not impact frequency response estimation. Default: 'rad/s' 'Ts' Sample time of the chirp signal in seconds. The default setting avoids aliasing. 2 5 * max( FreqRange) Number of samples in the chirp signal. Default setting ensures that the estimation includes the lower end of the frequency range. Default: 'NumSamples' Default: 8-26 4 Ts * min( FreqRange) frest.Chirp Option Name Option Value 'SweepMethod' Method for evolution of instantaneous frequency: • 'linear' (default)—Specifies the instantaneous frequency sweep fi(t): fi (t) = f0 + t where = ( f1 − f0 ) / t f β ensures that the signal maintains the desired frequency breakpoint f1 at final time tf. f1 > f2 f1 < f2 f f t t • 'logarithmic'—Specifies the instantaneous frequency sweep fi(t) given by 1 fi (t) = f0 × t ⎛ f ⎞ tf where = ⎜ 1 ⎟ ⎝ f0 ⎠ f1 > f2 f1 < f2 f f t t • 'quadratic'—Specifies the instantaneous frequency sweep fi(t): 8-27 frest.Chirp Option Name Option Value fi (t) = f0 + t2 where = ( f1 − f0 ) / ti2 Also specify the shape of the quadratic using the 'Shape' option. 'Shape' Use when you set 'SweepMethod' to 'quadratic' to describe the shape of the parabola in the positive frequency axis: • 'concave'—Concave quadratic sweeping shape. f1 > f2 f1 < f2 f f t t • 'convex'—Convex quadratic sweeping shape. f1 > f2 f1 < f2 f f t 'InitialPhase' t Initial phase of the Chirp signal in degrees. Default: 270 Examples Create a chirp input signal: input = frest.Chirp('Amplitude',1e-3,'FreqRange',[10 500],'NumSamples',20000) 8-28 frest.Chirp See Also frest.Sinestream | frest.Random | frestimate | generateTimeseries | getSimulationTime How To • “Creating Input Signals for Estimation” on page 3-9 • “Estimate Frequency Response (MATLAB Code)” on page 3-37 • “Estimate Frequency Response Using Linear Analysis Tool” on page 3-28 8-29 frest.createFixedTsSinestream Purpose Sinestream input signal with fixed sample time Syntax input input input input input input Description input = frest.createFixedTsSinestream(ts) creates sinestream input signal in which each frequency has the same fixed sample time ts in seconds. The signal has 30 frequencies between 1 and ωs, where = = = = = = frest.createFixedTsSinestream(ts) frest.createFixedTsSinestream(ts,{wmin wmax}) frest.createFixedTsSinestream(ts,w) frest.createFixedTsSinestream(ts,sys) frest.createFixedTsSinestream(ts,sys,{wmin wmax}) frest.createFixedTsSinestream(ts,sys,w) 2 s = is the sample rate in radians per second. The software adjusts ts the SamplesPerPeriod option to ensure that each frequency has the same sample time. Use when your Simulink model has linearization input I/Os on signals with discrete sample times. input = frest.createFixedTsSinestream(ts,{wmin wmax}) creates sinestream input signal with up to 30 frequencies logarithmically spaced between wmin and wmax in radians per second. input = frest.createFixedTsSinestream(ts,w) creates sinestream input signal with frequencies w, specified as a vector of frequency values in radians per second. The values of w must satisfy w = 2 for integer Nts 2 N such that the sample rate s = is an integer multiple of each ts element of w. input = frest.createFixedTsSinestream(ts,sys) creates sinestream input signal with a fixed sample time ts. The signal’s frequencies, settling periods, and number of periods automatically set based on the dynamics of a linear system sys. 8-30 frest.createFixedTsSinestream input = frest.createFixedTsSinestream(ts,sys,{wmin wmax}) creates sinestream input signal with up to 30 frequencies logarithmically spaced between wmin and wmax in radians per second. input = frest.createFixedTsSinestream(ts,sys,w) creates sinestream input signal at frequencies w, specified as a vector of frequency values in radians per second. The values of w must satisfy 2 w= for integer N such that the sample rate ts is an integer Nts of each element of w. multiple Examples Create a sinusoidal input signal with the following characteristics: • Sample time of 0.02 sec • Frequencies of the sinusoidal signal are between 1 rad/s and 10 rad/s input = frest.createFixedTsSinestream(0.02,{1, 10}); See Also frest.Sinestream | frestimate How To • “Creating Input Signals for Estimation” on page 3-9 • “Estimate Frequency Response (MATLAB Code)” on page 3-37 • “Estimate Frequency Response Using Linear Analysis Tool” on page 3-28 8-31 frest.createStep Purpose Step input signal Syntax input = frest.createStep('OptionName',OptionValue) Description input = frest.createStep('OptionName',OptionValue) creates a step input signal as a MATLAB timeseries object using the options specified by comma-separated name/value pairs. Plot your input signal using plot(input). Input Arguments ’OptionName’,OptionValue Signal characteristics, specified as comma-separated pairs of option name string and the option value. Option Name Option Value 'Ts' Sample time of the step input in seconds. Default: 1e-3 'StepTime' Time in seconds when the output jumps from 0 to the StepSize parameter. Default: 1 'StepSize' Value of the step signal after time reaches and exceeds the StepTime parameter. Default: 1 'FinalTime Final time of the step input signal in seconds. Default: 10 Examples Create step signal: input = frest.createStep('StepTime',3,'StepSize',2) 8-32 frest.createStep See Also frest.simCompare | frestimate How To • “Creating Input Signals for Estimation” on page 3-9 • “Estimate Frequency Response (MATLAB Code)” on page 3-37 • “Estimate Frequency Response Using Linear Analysis Tool” on page 3-28 8-33 frest.findDepend Purpose List of model path dependencies Syntax dirs = frest.findDepend(model) Description dirs = frest.findDepend(model) returns paths containing Simulink model dependencies required for frequency response estimation using parallel computing. model is the Simulink model to estimate. dirs is a cell array, where each element is a path string. dirs is empty when frest.findDepend does not detect any model dependencies. Append paths to dirs when the list of paths is empty or incomplete. frest.findDepend does not return a complete list of model dependency paths when the dependencies are undetectable. Examples Specify model path dependencies for parallel computing: % Copy referenced model to temporary folder. pathToLib = scdpathdep_setup; % Add folder to search path. addpath(pathToLib); % Open Simulink model. mdl = 'scdpathdep'; open_system(mdl); % Get model dependency paths. dirs = frest.findDepend(mdl) % The resulting path is on a local drive, C:/. % Replace C:/ with valid network path accessible to remote workers. dirs = regexprep(dirs,'C:/','\\\\hostname\\C$\\') % Enable parallel computing and specify the model path dependencies. options = frestimateOptions('UseParallel','on','ParallelPathDependencies',dirs) See Also 8-34 frestimate frest.findDepend How To • “Speeding Up Estimation Using Parallel Computing” on page 3-82 • “Scope of Dependency Analysis” 8-35 frest.findSources Purpose Identify time-varying source blocks Syntax blocks = frest.findSources(model) blocks = frest.findSources(model,io) Description blocks = frest.findSources(model) finds all time-varying source blocks in the signal path of any linearization output point marked in the Simulink model model. blocks = frest.findSources(model,io) finds all time-varying source blocks in the signal path of any linearization output point specified in the array of linear analysis points io. Tips • Use frest.findSources to identify time-varying source blocks that can interfere with frequency response estimation. To disable such blocks to estimate frequency response, set the BlocksToHoldConstant option of frestimateOptions equal to blocks or a subset of blocks. Then, estimate the frequency response using frestimate. • Sometimes, model includes referenced models containing source blocks in the signal path of a linearization output point. In such cases, set the referenced models to normal simulation mode to ensure that frest.findSources locates them. Use the set_param command to set SimulationMode of any referenced models to Normal before running frest.FindSources. Input Arguments model String containing the name, in single quotes, of the Simulink model in which you are identifying time-varying source blocks for frequency response estimation. io Array of linearization I/O points. The elements of io are linearization I/O objects that you create with getlinio or linio. frest.findSources uses only the output 8-36 frest.findSources points to locate time-varying source blocks that can interfere with frequency response estimation. See “Algorithms” on page 8-41 for more information. Output Arguments blocks Array of Simulink.BlockPath objects identifying the block paths of all time-varying source blocks in model that can interfere with frequency response estimation. The blocks argument includes time-varying source blocks inside subsystems and normal-mode referenced models. If you provide io, blocks contains all time-varying source blocks contributing to the signal at the output points in io. If you do not provide io, blocks contains all time-varying source blocks contributing to the signal at the output points marked in model. Examples Estimate the frequency response of a model having time-varying source blocks. This example shows the use of frest.findSources to identify time-varying source blocks that interfere with frequency response estimation. You can also see the use of BlocksToHoldConstant option of frestimateOptions to disable time-varying source blocks in the estimation. Load the model scdspeed_ctrlloop. mdl = 'scdspeed_ctrlloop'; open_system(mdl) % Convert referenced model to normal mode for accuracy set_param('scdspeed_ctrlloop/Engine Model',... 'SimulationMode','Normal'); First, view the effects of time-varying source blocks on frequency response estimation. To do so, perform the estimation without disabling time-varying source blocks. In this example, linearization I/O points are already defined in the model. Use the getlinio command to get the I/O points for frestimate. 8-37 frest.findSources io = getlinio(mdl) Define a sinestream signal and compute the estimated frequency response sysest. in = frest.Sinestream('Frequency',logspace(1,2,10),... 'NumPeriods',30,'SettlingPeriods',25); [sysest,simout] = frestimate(mdl,io,in); Perform exact linearization, and compare to the estimated response. sys = linearize(mdl,io); bodemag(sys,sysest,'r*') 8-38 frest.findSources The estimated frequency response does not match the exact linearization. The mismatch occurs because time-varying source blocks in the model prevent the response from reaching steady state. Find the time-varying blocks using frest.findSources. srcblks = frest.findSources(mdl); srcblks is an array of block paths corresponding to the time-varying source blocks in the model. To examine the result, index into the array. For example, entering 8-39 frest.findSources srcblks(2) returns the result ans = Simulink.BlockPath Package: Simulink Block Path: 'scdspeed_ctrlloop/Engine Model' 'scdspeed_plantref/Drag Torque/Step1' Now you can estimate the frequency response without the contribution of the time-varying source blocks. To do so, set the BlocksToHoldConstant option of frestimateOptions equal to srcblks, and run the estimation. opts = frestimateOptions opts.BlocksToHoldConstant = srcblks % Run frestimate again with blocks disabled [sysest2,simout2] = frestimate(mdl,io,in,opts); The frequency response estimate now provides a good match to the exact linearization result. bodemag(sys,sysest2,'r*') 8-40 frest.findSources Algorithms To locate time-varying source blocks that can interfere with frequency response estimation, frest.findSources begins at each linearization output point in the model. From each output point, the algorithm traces every signal path backward block by block. The algorithm reports any source block (a block with no input port) it discovers, unless that source block is a Constant or Ground block. The frest.findSources algorithm traces every signal path that can affect the signal value at each linearization output point in the model. The paths traced include: • Signal paths inside virtual and nonvirtual subsystems. 8-41 frest.findSources • Signal paths inside normal-mode referenced models. Set all referenced models to normal simulation mode before using frest.findSources to ensure that the algorithm identifies source blocks within the referenced models. • Signals routed through From and Goto blocks, or through Data Store Read and Data Store Write blocks. • Signals routed through switches. The frest.findSources algorithm assumes that any pole of a switch can be active during frequency response estimation. The algorithm therefore follows the signal back through all switch inputs. For example, consider the model scdspeed_ctrlloop. This model has one linearization output point, located at the output of the Sum block labeled Speed Output. (The frest.findSources algorithm ignores linearization input points.) Before running frest.findSources, convert the referenced model to normal simulation mode: set_param('scdspeed_ctrlloop/Engine Model',... 'SimulationMode','Normal'); You can now run frest.findSources to identify the time-varying source blocks using the linearization output point defined in the model. srcblks = frest.findSources('scdspeed_ctrlloop'); The algorithm begins at the output point and traces back through the Sum block Speed Output. One input to Speed Output is the subsystem 8-42 frest.findSources External Disturbance. The algorithm enters the subsystem, finds the source block labeled Step Disturbance, and reports that block. The Sum block Speed Output has another input, which the algorithm traces back into the referenced model Engine Model. Engine Model contains several subsystems, and the algorithm traces the signal through these subsystems to identify any time-varying source blocks present. For example, the Combustion subsystem includes the From block marked delta that routes the signal from the Spark Advance source. Because Spark Advance is a constant source block, however, the algorithm does not report the presence of the block. The algorithm continues the trace until all possible signal paths contributing to the signal at each linearization output point are examined. Alternatives You can use the Simulink Model Advisor to determine whether time-varying source blocks exist in the signal path of output linear analysis points in your model. To do so, use the Model Advisor check 8-43 frest.findSources “Identify time-varying source blocks interfering with frequency response estimation.” For more information about using the Model Advisor, see Consulting the Model Advisor in the Simulink User’s Guide. 8-44 See Also frestimate | frestimateOptions How To • “Effects of Time-Varying Source Blocks on Frequency Response Estimation” on page 3-62 frest.Random Purpose Random input signal for simulation Syntax input = frest.Random('OptionName',OptionValue) input = frest.Random(sys) Description input = frest.Random('OptionName',OptionValue) creates the Random input signal using the options specified by comma-separated name/value pairs. input = frest.Random(sys) creates a Random input signal based on the dynamics of a linear system sys. To view a plot of your input signal, type plot(input). To obtain a timeseries for your input signal, use the generateTimeseries command. Input Arguments sys Linear system for creating a random signal based on the dynamic characteristics of this system. You can specify the linear system based on known dynamics using tf, zpk, or ss. You can also obtain the linear system by linearizing a nonlinear system. The resulting random signal automatically sets these options based on the linear system: • Ts is set such that the Nyquist frequency of the signal is five times the upper end of the frequency range to avoid aliasing issues. • NumSamples is set such that the frequency response estimation includes the lower end of the frequency range. Other random options have default values. ’OptionName’,OptionValue Signal characteristics, specified as comma-separated pairs of option name string and the option value. 8-45 frest.Random Option Name Option Value 'Amplitude' Signal amplitude. Default: 1e-5 'Ts' Sample time of the chirp signal in seconds. Default: 1e-3 'NumSamples' Number of samples in the Random signal. Default: 1e4 'Stream' Random number stream you create using the MATLAB command RandStream. The state of the stream you specify stores with the input signal. This stored state allows the software to return the same result every time you use generateTimeseries and frestimate with the input signal. Default: Default stream of the MATLAB session Examples Create a Random input signal with 1000 samples taken at 100 Hz and amplitude of 0.02: input = frest.Random('Amplitude',0.02,'Ts',1/100,'NumSamples',1000); Create a Random input signal using multiplicative lagged Fibonacci generator random stream: % Specify the random number stream stream = RandStream('mlfg6331_64','Seed',0); % Create the input signal 8-46 frest.Random input = frest.Random('Stream',stream); See Also frest.Sinestream | frest.Random | frestimate | generateTimeseries | getSimulationTime How To • “Creating Input Signals for Estimation” on page 3-9 • “Estimate Frequency Response (MATLAB Code)” on page 3-37 • “Estimate Frequency Response Using Linear Analysis Tool” on page 3-28 8-47 frest.simCompare Purpose Plot time-domain simulation of nonlinear and linear models Syntax frest.simCompare(simout,sys,input) frest.simCompare(simout,sys,input,x0) [y,t] = frest.simCompare(simout,sys,input) [y,t,x] = frest.simCompare(simout,sys,input,x0) Description frest.simCompare(simout,sys,input) plots both • Simulation output, simout, of the nonlinear Simulink model You obtain the output from the frestimate command. • Simulation output of the linear model sys for the input signal input The linear simulation results are offset by the initial output values in the simout data. frest.simCompare(simout,sys,input,x0) plots the frequency response simulation output and the simulation output of the linear model with initial state x0. Because you specify the initial state, the linear simulation result is not offset by the initial output values in the simout data. [y,t] = frest.simCompare(simout,sys,input) returns the linear simulation output response y and the time vector t for the linear model sys with the input signal input. This syntax does not display a plot. The matrix y has as many rows as time samples (length(t)) and as many columns as system outputs. [y,t,x] = frest.simCompare(simout,sys,input,x0) also returns the state trajectory x for the linear state space model sys with initial state x0. Examples Compare a time-domain simulation of the Simulink watertank model and its linear model representation: % Create input signal for simulation input = frest.createStep('FinalTime',100); 8-48 frest.simCompare % Open the Simulink model watertank % Specify the operating point for the estimation watertank_spec = operspec('watertank'); op = findop('watertank',watertank_spec) % Specify portion of model to estimate io(1)=linio('watertank/PID Controller',1,'in'); io(2)=linio('watertank/Water-Tank System',1,'out'); % Estimate the frequency response of the watertank model [sysest,simout] = frestimate('watertank',op,io,input) sys = linearize('watertank',op,io); frest.simCompare(simout,sys,input); The software returns the following plot. 8-49 frest.simCompare See Also 8-50 frestimate | frest.simView frest.simView Purpose Plot frequency response model in time- and frequency-domain Syntax frest.simView(simout,input,sysest) frest.simView(simout,input,sysest,sys) Description frest.simView(simout,input,sysest) plots the following frequency response estimation results: • Time-domain simulation simout of the Simulink model • FFT of time-domain simulation simout • Bode of estimated system sysest This Bode plot is available when you create the input signal using frest.Sinestream or frest.Chirp. In this plot, you can interactively select frequencies or a frequency range for viewing the results in all three plots. You obtain simout and sysest from the frestimate command using the input signal input. frest.simView(simout,input,sysest,sys) includes the linear system sys in the Bode plot when you create the input signal using frest.Sinestream or frest.Chirp. Use this syntax to compare the linear system to the frequency response estimation results. Examples Estimate the closed-loop of the watertank Simulink model and analyze the results: % Open the Simulink model watertank % Specify portion of model to linearize and estimate io(1)=linio('watertank/PID Controller',1,'in'); io(2)=linio('watertank/Water-Tank System',1,'out'); % Specify the operating point for the linearization and estimation watertank_spec = operspec('watertank'); op = findop('watertank',watertank_spec); 8-51 frest.simView % Create input signal for simulation input = frest.Sinestream('Frequency',logspace(-1,2,10)); % Estimate the frequency response of the watertank model [sysest,simout] = frestimate('watertank',op,io,input); % Analyze the estimation results frest.simView(simout,input,sysest) 8-52 See Also frestimate | frest.simCompare How To • “Analyzing Estimated Frequency Response” on page 3-40 frest.simView • “Troubleshooting Frequency Response Estimation” on page 3-49 8-53 frest.Sinestream Purpose Signal containing series of sine waves Syntax input = frest.Sinestream(sys) input = frest.Sinestream('OptionName',OptionValue) Description input = frest.Sinestream(sys) creates a signal with a series of sinusoids based on the dynamics of a linear system sys. input = frest.Sinestream('OptionName',OptionValue) creates a signal with a series of sinusoids, where each sinusoid frequency lasts for a specified number of periods, using the options specified by comma-separated name/value pairs. To view a plot of your input signal, type plot(input). To obtain a timeseries for your input signal, use the generateTimeseries command. Input Arguments sys Linear system for creating a sinestream signal based on the dynamic characteristics of this system. You can specify the linear system based on known dynamics using tf, zpk, or ss. You can also obtain the linear system by linearizing a nonlinear system. The resulting sinestream signal automatically sets these options based on the linear system: • 'Frequency' are the frequencies at which the linear system has interesting dynamics. • 'SettlingPeriods' is the number of periods it takes the system to reach steady state at each frequency in 'Frequency'. • 'NumPeriods' is (3 + SettlingPeriods) to ensure that each frequency excites the system at specified amplitude for at least three periods. • For discrete systems only, 'SamplesPerPeriod' is set such that all frequencies have the same sample time as the linear system. Other sinestream options have default values. 8-54 frest.Sinestream ’OptionName’,OptionValue Signal characteristics, specified as comma-separated pairs of option name string and the option value. Option Name Option Value 'Frequency' Signal frequencies, specified as either a scalar or a vector of frequency values. Default: logspace(1,3,50) 'Amplitude' Signal amplitude at each frequency, specified as either: • Scalar to set all frequencies to same value • Vector to set each frequencies to a different value Default: 1e-5 'SamplesPerPeriod' Number of samples for each period for each signal frequency, specified as either: • Scalar to set all frequencies to same value • Vector to set each frequencies to a different value Default: 40 'FreqUnits' Frequency units: • 'rad/s'—Radians per second • 'Hz'— Hertz Default: 'rad/s' 8-55 frest.Sinestream Option Name Option Value 'RampPeriods' Number of periods for ramping up the amplitude of each sine wave to its maximum value, specified as either: • Scalar to set all frequencies to same value • Vector to set each frequencies to a different value Use this option to ensure a smooth response when your input amplitude changes. Default: 0 RampPeriods 'NumPeriods' Number of periods each sine wave is at maximum amplitude, specified as either: • Scalar to set all frequencies to same value • Vector to set each frequencies to a different value Default: max(3 RampPeriods+SettlingPeriods,, 2) 8-56 frest.Sinestream Option Name Option Value NumPeriods 'SettlingPeriods' Number of periods corresponding to the transient portion of the simulated response at a specific frequency, before the system reaches steady state, specified as either: • Scalar to set all frequencies to same value • Vector to set each frequencies to a different value Before performing the estimation, frestimate discards this number of periods from the output signals. Default: 1 SettlingPeriods Bold periods for estimation 8-57 frest.Sinestream Option Name Option Value 'ApplyFilteringInFRESTIMATE' Frequency-selective FIR filtering of the input signal before estimating the frequency response using frestimate. • 'on' (default) • 'off' For more information, see the frestimate algorithm. 'SimulationOrder' The order in which frestimate injects the individual frequencies of the input signal into your Simulink model during simulation. • 'Sequential' (default) — frestimate injects one frequency after the next into your model in a single Simulink simulation using variable sample time. To use this option, your Simulink model must use a variable-step solver. • 'OneAtATime' — frestimate injects each frequency during a separate Simulink simulation of your model. Before each simulation, frestimate initializes your Simulink model to the operating point specified for estimation. If you have Parallel Computing Toolbox installed, you can run each simulation in parallel to speed up estimation using parallel computing. For more information, see “Speeding Up Estimation Using Parallel Computing” on page 3-82. Examples 8-58 Create a sinestream signal having several different frequencies. For each frequency, specify an amplitude, a number of periods at maximum amplitude, a ramp-up period, and a number of settling periods. frest.Sinestream 1 Create sinestream signal. input = frest.Sinestream('Frequency',[1 2.5 5],... 'Amplitude',[1 2 1.5],... 'NumPeriods',[4 6 12],... 'RampPeriods',[0 2 6],... 'SettlingPeriods',[1 3 7]); 2 (Optional) Plot the sinestream signal. plot(input) Create a sinusoidal input signal with the following characteristics: • 50 frequencies spaced logarithmically between 10 Hz and 1000 Hz • All frequencies have amplitude of 1e-3 • Sampled with a frequency 10 times the frequency of the signal (meaning ten samples per period) 8-59 frest.Sinestream % Create the input signal input = frest.Sinestream('Amplitude',1e-3,'Frequency',logspace(1,3,50),... 'SamplesPerPeriod',10,'FreqUnits','Hz'); See Also frest.Chirp | frest.Random | frestimate | generateTimeseries | frest.createFixedTsSinestream | getSimulationTime How To • “Creating Input Signals for Estimation” on page 3-9 • “Estimate Frequency Response (MATLAB Code)” on page 3-37 • “Estimate Frequency Response Using Linear Analysis Tool” on page 3-28 • “Speeding Up Estimation Using Parallel Computing” on page 3-82 8-60 frestimate Purpose Frequency response estimation of Simulink models Syntax sysest = frestimate(model,io,input) sysest = frestimate(model,op,io,input) [sysest,simout] = frestimate(model,op,io,input) [sysest,simout] = frestimate(model,op,io,input,options) Description sysest = frestimate(model,io,input) estimates frequency response model sysest. model is a string that specifies the name of your Simulink model. input can be a sinestream, chirp, or random signal, or a MATLAB timeseries object. io specifies the linearization I/O object, which you either obtain using getlinio or create using linio. I/O points cannot be on bus signals. The estimation occurs at the operating point specified in the Simulink model. sysest = frestimate(model,op,io,input) initializes the model at the operating point op before estimating the frequency response model. Create op using either operpoint or findop. [sysest,simout] = frestimate(model,op,io,input) estimates frequency response model and returns the simulated output simout. This output is a cell array of Simulink.Timeseries objects with dimensions m-by-n. m is the number of linearization output points, and n is the number of input channels. [sysest,simout] = frestimate(model,op,io,input,options) uses the frequency response options (options) to estimate the frequency response. Specify these options using frestimateOptions. Examples Estimating frequency response for a Simulink model: % Create input signal for simulation: input = frest.Sinestream('Frequency',logspace(-3,2,30)); % Open the Simulink model: watertank % Specify portion of model to estimate: 8-61 frestimate io(1)=linio('watertank/PID Controller',1,'in'); io(2)=linio('watertank/Water-Tank System',1,'out','on'); % Specify the steady state operating point for the estimation. watertank_spec = operspec('watertank'); op = findop('watertank',watertank_spec); % Estimate frequency response of specified blocks: sysest = frestimate('watertank',op,io,input); bode(sysest) Validate exact linearization results using estimated frequency response of a Simulink model: % Open the Simulink model: watertank 8-62 frestimate % Specify portion of model to estimate: io(1)=linio('watertank/PID Controller',1,'in'); io(2)=linio('watertank/Water-Tank System',1,'out'); % Specify operating point for linearization and estimation: watertank_spec = operspec('watertank'); op = findop('watertank',watertank_spec); % Linearize the model: sys = linearize('watertank',op,io); % Estimate the frequency response of the watertank model input = frest.Sinestream('Frequency',logspace(-1,2,10)); [sysest,simout] = frestimate('watertank',op,io,input); % Compare linearization and estimation results in frequency domain: frest.simView(simout,input,sysest,sys) 8-63 frestimate Algorithms frestimate performs the following operations when you use the sinestream signal: 1 Injects the sinestream input signal you design, uest(t), at the linearization input point. 8-64 frestimate 2 Simulates the output at the linearization output point. frestimate adds the signal you design to existing Simulink signals at the linearization input point. u est (t) u(t) y(t) 8-65 frestimate 3 Discards the SettlingPeriods portion of the output (and the corresponding input) at each frequency. The simulated output at each frequency has a transient portion and steady state portion. SettlingPeriods corresponds to the transient components of the output and input signals. The periods following SettlingPeriods are considered to be at steady state. SettlingPeriods Input Output 4 Filters the remaining portion of the output and the corresponding input signals at each input frequency using a bandpass filter. Because most models are not at steady state, the response might 8-66 frestimate contain low-frequency transient behavior. Filtering typically improves the accuracy of your model by removing the effects of frequencies other than the input frequencies, which are problematic when sampling and analyzing data of finite length. These effects are called spectral leakage. 8-67 frestimate Any transients associated with filtering are only in the first period of the filtered steady-state output. After filtering, frestimate discards the first period of the input and output signals. frestimate uses a finite impulse response (FIR) filter, whose order matches the number of samples in a period. SettlingPeriods Filtered portion Input Output Used for estimation 5 Estimates the frequency response of the processed signal by computing the ratio of the fast Fourier transform of the filtered 8-68 frestimate steady-state portion of the output signal yest(t) and the fast Fourier transform of the filtered input signal uest(t): Frequency Re sponse Model = fft of yest (t) fft of uest (t) To compute the response at each frequency, frestimate uses only the simulation output at that frequency. See Also frest.Sinestream | frest.Chirp | frest.Random | frest.simView | frestimateOptions | getSimulationTime How To • “Estimate Frequency Response (MATLAB Code)” on page 3-37 • “Estimate Frequency Response Using Linear Analysis Tool” on page 3-28 • “Speeding Up Estimation Using Parallel Computing” on page 3-82 8-69 frestimateOptions Purpose Options for frequency response estimation Syntax options = frestimateOptions options = frestimateOptions('OptionName',OptionValue) Description options = frestimateOptions creates a frequency response estimation options object options with default settings. Pass this object to the function frestimate to use these options for frequency response estimation. options = frestimateOptions('OptionName',OptionValue) creates a frequency response estimation options object options using the options specified by comma-separated name/value pairs. Input Arguments ’OptionName’,OptionValue Estimation options, specified as comma-separated pairs of option name string and the option value. Option Name Option Value 'BlocksToHoldConstant' An array of Simulink.BlockPath that specifies the paths of time-varying source blocks to hold constant during frequency response estimation. Use frest.findSources to identify time-varying source blocks that can interfere with frequency response estimation. Default: empty 'UseParallel' Set to 'on' to enable parallel computing for estimations with the frestimate command. Default: 'off' 'ParallelPathDependencies' A cell array of strings that specifies the path dependencies required to execute the model to estimate. All the workers in the MATLAB pool must have access to the folders listed in 'ParallelPathDependencies'. Default: empty 8-70 frestimateOptions Examples Identify and disable time-varying source blocks for frequency response estimation. % Open Simulink model. mdl = 'scdspeed_ctrlloop'; open_system(mdl) % Convert referenced subsystem to normal mode. set_param('scdspeed_ctrlloop/Engine Model','SimulationMode','Normal'); % Get I/O points and create sinestream. io = getlinio(mdl) in = frest.Sinestream('Frequency',logspace(1,2,10),'NumPeriods',30,... 'SettlingPeriods',25); % Identify time-varying source blocks. srcblks = frest.findSources(mdl) % Create options set specifying blocks to hold constant opts = frestimateOptions opts.BlocksToHoldConstant = srcblks % Run frestimate [sysest,simout] = frestimate(mdl,io,in,opts) Enable parallel computing and specify the model path dependencies. % Copy referenced model to temporary folder. pathToLib = scdpathdep_setup; % Add folder to search path. addpath(pathToLib); % Open Simulink model. mdl = 'scdpathdep'; open_system(mdl); 8-71 frestimateOptions % Get model dependency paths. dirs = frest.findDepend(mdl) % The resulting path is on a local drive, C:/. % Replace C:/ with valid network path accessible to remote workers. dirs = regexprep(dirs,'C:/','\\\\hostname\\C$\\') % Enable parallel computing and specify the model path dependencies. options = frestimateOptions('UseParallel','on','ParallelPathDependencies',dirs) Alternatives You can enable parallel computing for all models with no path dependencies. To do so, select the Use the matlabpool in FRESTIMATE command check box in the MATLAB preferences. When you select this check box and use the frestimate command, you do not need to provide a frequency response options object. If your model has path dependencies, you must create your own frequency response options object that specifies the path dependencies. Use the ParallelPathDependencies option before beginning the estimation. See Also 8-72 frestimate | frest.findSources fselect Purpose Extract sinestream signal at specified frequencies Syntax input2 = fselect(input,fmin,fmax) input2 = fselect(input,index) Description input2 = fselect(input,fmin,fmax) extracts a portion of the sinestream input signal input in the frequency range between fmin and fmax. Specify fmin and fmax in the same frequency units as the sinestream signal. input2 = fselect(input,index) extracts a sinestream signal at specific frequencies, specified by the vector of indices index. Examples Extract the second frequency in a sinestream signal: % Create the input signal input = frest.Sinestream('Frequency',[1 2.5 5],... 'Amplitude',[1 2 1.5],... 'NumPeriods',[4 6 12],... 'RampPeriods',[0 2 6]); % Extract a sinestream signal for the second frequency input2 = fselect(input,2) % Plot the extracted input signal plot(input2) See Also frestimate | frest.Sinestream | fdel How To • “Time Response Not at Steady State” on page 3-49 8-73 generateTimeseries Purpose Generate time-domain data for input signal Syntax ts = generateTimeseries(input) Description ts = generateTimeseries(input) creates a MATLAB timeseries object ts from the input signal input. input can be a sinestream, chirp, or random signal. For chirp and random signals, that time vector of ts has equally spaced time values, ranging from 0 to Ts(NumSamples-1). Examples Create timeseries object for chirp signal: input = frest.Chirp('Amplitude',1e-3,'FreqRange',... [10 500],'NumSamples',20000); ts = generateTimeseries(input) See Also 8-74 frestimate | frest.Sinestream | frest.Chirp | frest.Random get Purpose Properties of linearization I/Os and operating points Syntax get(ob) get(ob,'PropertyName') ob.PropertyName Description get(ob) displays all properties and corresponding values of the object, ob, which can be a linearization I/O object, an operating point object, or an operating point specification object. Create ob using findop, getlinio, linio, operpoint, or operspec. get(ob,'PropertyName') returns the value of the property, PropertyName, within the object, ob. The object, ob, can be a linearization I/O object, an operating point object, or an operating point specification object. Create ob using findop, getlinio, linio, operpoint, or operspec. ob.PropertyName is an alternative notation for displaying the value of the property, PropertyName, of the object, ob. The object, ob, can be a linearization I/O object, an operating point object, or an operating point specification object. Create ob using findop, getlinio, linio, operpoint, or operspec. Examples Create an operating point object, op, for the Simulink model, magball. op=operpoint('magball'); Get a list of all object properties using the get function with the object name as the only input. get(op) This returns the properties of op and their current values. Model: 'magball' States: [5x1 opcond.StatePoint] Inputs: [0x1 double] Time: 0 8-75 get Version: 2 To view the value of a particular property of op, supply the property name as an argument to get. For example, to view the name of the model associated with the operating point object, type: V=get(op,'Model') which returns V = magball Because op is a structure, you can also view any properties or fields using dot-notation, as in this example. W=op.States This notation returns a vector of objects containing information about the states in the operating point. (1.) magball/Controller/PID Controller/Filter x: 0 (2.) magball/Controller/PID Controller/Integrator x: 14 (3.) magball/Magnetic Ball Plant/Current x: 7 (4.) magball/Magnetic Ball Plant/dhdt x: 0 (5.) magball/Magnetic Ball Plant/height x: 0.05 Use get to view details of W. For example: get(W(2),'x') returns ans = 8-76 get 14.0071 See Also findop | getlinio | linio | operpoint | operspec | set 8-77 getinputstruct Purpose Input structure from operating point Syntax in_struct = getinputstruct(op_point) Description in_struct = getinputstruct(op_point) extracts a structure of input values, in_struct, from the operating point object, op_point. The structure, in_struct, uses the same format as Simulink software which allows you to set initial values for inputs in the model within the Data Import/Export pane of the Configuration Parameters dialog box. Examples Create an operating point object for the f14 model: op_f14=operpoint('f14'); Extract an input structure from the operating point object: inputs_f14=getinputstruct(op_f14) This extraction returns inputs_f14 = time: 0 signals: [1x1 struct] To view the values of the inputs within this structure, use dot-notation to access the values field: inputs_f14.signals.values In this case, the value of the input is 0. See Also 8-78 getstatestruct | getxu | operpoint getlinio Purpose Linearization input/output (I/O) settings for Simulink model, Linear Analysis Plots or Model Verification block Syntax io = getlinio('sys') io = getlinio('blockpath') Alternatives As an alternative to the getlinio function, view linearization I/Os in the: • Analysis I/Os pane of the Linearization Task node in the Control and Estimation Tools Manager GUI for Simulink models. • Linearization inputs/outputs table in the Linearizations tab of the Block Parameters dialog box for Linear Analysis Plots or Model Verification blocks. Description io = getlinio('sys') finds all linearization inputs/outputs (I/Os) in the Simulink model, sys, and returns a vector of objects, io. Each object represents a linearization annotation in the model and is associated with an output port of a Simulink block. Before running getlinio, use the right-click menu to insert the linearization annotations, or I/Os, on the signal lines of the model diagram. io = getlinio('blockpath') finds all I/Os in a Linear Analysis Plots block or a Model Verification block. blockpath is the full path to the block. io is a vector of objects and has an entry for each linearization port used by the block. Each object within the vector, io, has the following properties: Active Set this value to 'on', when the I/O is used for linearization, and 'off' otherwise Block Name of the block with which the I/O is associated OpenLoop Set this value to 'on', when the feedback loop at the I/O is open, and 'off', when it is closed 8-79 getlinio PortNumber Integer referring to the output port with which the I/O is associated Type Choose one of the following linearization I/O types: • 'in': linearization input point • 'out': linearization output point • 'outin': linearization output then input point • 'inout': linearization input then output point BusElement Bus element name with which the I/O is associated. Empty string ('') if the I/O is not a bus element. Description String description of the I/O object You can edit this I/O object to change its properties. Alternatively, you can change the properties of io using the set function. To upload an edited I/O object to the Simulink model diagram, use the setlinio function. Use I/O objects with the function linearize to create linear models. Examples Find linearization inputs/outputs in a Simulink model. Before creating a vector of I/O objects using getlinio, you must add linearization annotations representing the I/Os, such as input points or output points, to a Simulink model. 1 Open a Simulink model. magball 8-80 getlinio 2 Right-click the signal line between the Magnetic Ball Plant and the Controller. Select Linear Analysis Points > Input Point from the menu to place an input point on this signal line. A small arrow pointing toward a small circle just above the signal line represents the input point. 3 Right-click the signal line after the Magnetic Ball Plant. Select Linear Analysis Points > Output Point from the menu to place an output point on this signal line. A small arrow pointing away from a small circle just above the signal line represents the output point. 4 Create a vector of I/O objects for this model. io=getlinio('magball') This syntax returns a formatted display of the linearization I/Os. 2x1 vector of Linearization IOs: -------------------------1. Linearization input located at the following signal: - Block: magball/Controller - Port: 1 2. Linearization output with a loop opening located at the following signal: - Block: magball/Magnetic Ball Plant - Port: 1 io is a vector with two entries representing the two linearization annotations previously set in the model diagram. MATLAB also displays: • The linearization I/O type (input or output) • Whether the IO is a loop opening • Block name associated with the I/O 8-81 getlinio • Port number associated with the I/O By default, the I/Os have no loop openings. Display the properties of each I/O object in more detail using the get function. This example shows how to find linearization inputs/outputs in a Linear Analysis Plots block to update the I/Os. 1 Open the watertank model, and specify input and output (I/O). a Right-click the Desired Water Level output signal, and select Linear Analysis Points > Input Point. b Right-click the Water-Tank System output signal, and select Linear Analysis Points > Output Point. The linearization I/O markers appear in the model, as shown in the next figure. Alternatively, you can use linio. 2 Drag and drop a Bode Plot block from the Simulink Control Design Linear Analysis Plots library into the Simulink Editor. 3 Find all I/Os used by the Bode Plot block. io = getlinio('watertank/Bode Plot') When you drag and drop the block, the block I/Os are set to the model I/Os. The following results appear at the MATLAB prompt: 8-82 getlinio 2x1 vector of Linearization IOs: -------------------------1. Linearization input located at the following signal: - Block: watertank/Desired Water Level - Port: 1 2. Linearization output located at the following signal: - Block: watertank/Water-Tank System - Port: 1 4 Open the loop specified by the block I/Os. io(2).OpenLoop = 'on'; Note The loop opening does not affect the model I/Os. 5 Update the I/O in the Bode Plot block. oldio = setlinio('watertank/Bode Plot',io) See Also get | linearize | linio | set | setlinio 8-83 getlinplant Purpose Compute open-loop plant model from Simulink diagram Syntax [sysp,sysc] = getlinplant(block,op) [sysp,sysc] = getlinplant(block,op,options) Description [sysp,sysc] = getlinplant(block,op) Computes the open-loop plant seen by a Simulink block labeled block (where block specifies the full path to the block). The plant model, sysp, and linearized block, sysc, are linearized at the operating point op. [sysp,sysc] = getlinplant(block,op,options) Computes the open-loop plant seen by a Simulink block labeled block, using the linearization options specified in options. Examples To compute the open-loop model seen by the Controller block in the Simulink model magball, first create an operating point object using the function findop. In this case, you find the operating point from simulation of the model. magball op=findop('magball',20); Next, compute the open-loop model seen by the block magball/Controller, with the getlinplant function. [sysp,sysc]=getlinplant('magball/Controller',op) The output variable sysp gives the open-loop plant model as follows: a = Current dhdt height Current -100 -2.801 0 Current Controller 50 b = 8-84 dhdt 0 0 1 height 0 196.2 0 getlinplant dhdt height 0 0 c = Sum2 Current 0 Sum2 Controller 0 dhdt 0 height -1 d = Continuous-time model. See Also findop | linoptions | operpoint | operspec 8-85 getSimulationTime Purpose Final time of simulation for frequency response estimation Syntax tfinal = getSimulationTime(input) Description tfinal = getSimulationTime(input) returns the final time of the Input Arguments input Simulink simulation performed during frequency response estimation using the input signal input. Altering input to reduce the final simulation time can help reduce the time it takes to perform frequency response estimation. Input signal for frequency response estimation with the frestimate command. The input signal input must be either: • A sinestream input signal, created in the Linear Analysis Tool or created with frest.Sinestream • A chirp input signal, created in the Linear Analysis Tool or created with frest.Chirp • A random input signal, created in the Linear Analysis Tool or created with frest.Random Output Arguments tfinal Final time of simulation performed during frequency response estimation using the input signal input. For example, the command sysest = frestimate(mdl,io,input) performs frequency response estimation on the Simulink model specified by mdl with the linearization I/O set io. The estimation uses the input signal input. The command tfinal = getSimulationTime(input) returns the simulation time at the end of the simulation performed by frestimate. 8-86 getSimulationTime Examples Simulation Time for Frequency Response Estimation Create a sinestream input signal and calculate the final simulation time of an estimation using that signal. input = frest.Sinestream('Amplitude',1e-3,... 'Frequency',logspace(1,3,50),... 'SamplesPerPeriod',40,'FreqUnits','Hz'); tfinal = getSimulationTime(input) tfinal = 4.4186 The sinestream signal input includes 50 frequencies spaced logarithmically between 10 Hz and 1000 Hz. Each frequency is sampled 40 times per period. The resulting tfinal indicates that frequency response estimation of any model with this input signal would simulate the model for 4.4186 s. See Also frestimate | frest.Sinestream | frest.Chirp | frest.Random Related Examples • “Creating Sinestream Input Signals” on page 3-9 • “Creating Chirp Input Signals” on page 3-19 Concepts • “Ways to Speed up Frequency Response Estimation” on page 3-80 8-87 getstatestruct Purpose State structure from operating point Syntax x_struct = getstatestruct(op_point) Description x_struct = getstatestruct(op_point) extracts a structure of state values, x_struct, from the operating point object, op_point. The structure, x_struct, uses the same format as Simulink software which allows you to set initial values for states in the model within the Data Import/Export pane of the Configuration Parameters dialog box. Examples Create an operating point object for the magball model: op_magball=operpoint('magball'); Extract a state structure from the operating point object: states_magball=getstatestruct(op_magball) This extraction returns states_magball = time: 0 signals: [1x5 struct] To view the values of the states within this structure, use dot-notation to access the values field: states_magball.signals.values This dot-notation returns ans = 0 ans = 8-88 getstatestruct 14.0071 ans = 7.0036 ans = 0 ans = 0.0500 See Also getinputstruct | getxu | operpoint 8-89 getxu Purpose States and inputs from operating points Syntax x = getxu(op_point) [x,u] = getxu(op_point) [x,u,xstruct] = getxu(op_point) Description x = getxu(op_point) extracts a vector of state values, x, from the operating point object, op_point. The ordering of states in x is the same as that used by Simulink software. [x,u] = getxu(op_point) extracts a vector of state values, x, and a vector of input values, u, from the operating point object, op_point. States in x and inputs in u are ordered in the same way as for Simulink. [x,u,xstruct] = getxu(op_point) extracts a vector of state values, x, a vector of input values, u, and a structure of state values, xstruct, from the operating point object, op_point. The structure of state values, xstruct, has the same format as that returned from a Simulink simulation. States in x and xstruct and inputs in u are ordered in the same way as for Simulink. Examples Create an operating point object for the magball model by typing: op=operpoint('magball'); To view the states within this operating point, type: op.States which returns (1.) magball/Controller/PID Controller/Filter x: 0 (2.) magball/Controller/PID Controller/Integrator x: 14 (3.) magball/Magnetic Ball Plant/Current x: 7 (4.) magball/Magnetic Ball Plant/dhdt 8-90 getxu x: 0 (5.) magball/Magnetic Ball Plant/height x: 0.05 To extract a vector of state values, with the states in an ordering that is compatible with Simulink, along with inputs and a state structure, type: [x,u,xstruct]=getxu(op) This syntax returns: x = 0.0500 0 14.0071 7.0036 0 u = [] xstruct = time: 0 signals: [1x5 struct] View xstruct in more detail by typing: xstruct.signals This syntax displays: ans = 8-91 getxu 1x5 struct array with fields: values dimensions label blockName stateName inReferencedModel sampleTime View each component of the structure individually. For example: xstruct.signals(1).values ans = 0 or xstruct.signals(2).values ans = 7.0036 You can import these vectors and structures into Simulink as initial conditions or input vectors or use them with setxu, to set state and input values in another operating point. See Also 8-92 operpoint | operspec initopspec Purpose Initialize operating point specification values Syntax opnew=initopspec(opspec,oppoint) opnew=initopspec(opspec,x,u) opnew=initopspec(opspec,xstruct,u) Alternatives As an alternative to the initopspec function, initialize operating point specification values in the Create Operating Points pane in the Operating Points node within the Simulink Control Design GUI. See “Steady-State Operating Points (Trimming) from Specifications” on page 1-14. Description opnew=initopspec(opspec,oppoint) initializes the operating point specification object, opspec, with the values contained in the operating point object, oppoint. The function returns a new operating point specification object, opnew. Create opspec with the function operspec. Create oppoint with the function operpoint or findop. opnew=initopspec(opspec,x,u) initializes the operating point specification object, opspec, with the values contained in the state vector, x, and the input vector, u. The function returns a new operating point specification object, opnew. Create opspec with the function operspec. You can use the function getxu to create x and u with the correct ordering. opnew=initopspec(opspec,xstruct,u) initializes the operating point specification object, opspec, with the values contained in the state structure, xstruct, and the input vector, u. The function returns a new operating point specification object, opnew. Create opspec with the function operspec. You can use the function getstatestruct or getxu to create xstruct and the function getxu to create u with the correct ordering. Alternatively, you can save xstruct to the MATLAB workspace after a simulation of the model. See the Simulink documentation for more information on these structures. Examples Create an operating point using findop by simulating the magball model and extracting the operating point after 20 time units. 8-93 initopspec oppoint=findop('magball',20) This syntax returns the following operating point: Operating Point for the Model magball. (Time-Varying Components Evaluated at time t=20) States: ---------(1.) magball/Controller/PID Controller/Filter x: 2.33e-007 (2.) magball/Controller/PID Controller/Integrator x: 14 (3.) magball/Magnetic Ball Plant/Current x: 7 (4.) magball/Magnetic Ball Plant/dhdt x: 3.6e-008 (5.) magball/Magnetic Ball Plant/height x: 0.05 Inputs: None ---------- Use these operating point values as initial values in an operating point specification object. opspec=operspec('magball'); newopspec=initopspec(opspec,oppoint) The new operating point specification object is displayed. Operating Specification for the Model magball. (Time-Varying Components Evaluated at time t=0) States: ---------(1.) magball/Controller/PID Controller/Filter 8-94 initopspec spec: dx = 0, initial guess: 2.33e-007 (2.) magball/Controller/PID Controller/Integrator spec: dx = 0, initial guess: 14 (3.) magball/Magnetic Ball Plant/Current spec: dx = 0, initial guess: 7 (4.) magball/Magnetic Ball Plant/dhdt spec: dx = 0, initial guess: 3.6e-008 (5.) magball/Magnetic Ball Plant/height spec: dx = 0, initial guess: 0.05 Inputs: None ---------Outputs: None ---------- You can now use this object to find operating points by optimization. See Also findop | getstatestruct | getxu | operpoint | operspec 8-95 linearize Purpose Linear approximation of Simulink model or block Syntax linsys = linearize(sys,io) linsys = linearize(sys,op) linsys = linearize(sys,op,io) linsys = linearize(sys,op,io,options) [linsys,op] = linearize(sys,io,tsnapshot) linsys = linearize(sys,op,io,'StateOrder',stateorder) linblock = linearize(sys,op,blockpath) linsys = linearize(sys,blocksub,op,io) Description linsys = linearize(sys,io) linearizes the nonlinear Simulink model defined by the linearization I/O points io. Linearization uses the operating point that corresponds to the initial states and input levels in the Simulink model. linsys = linearize(sys,op) linearizes the entire Simulink model such that the linearization I/O points are the root-level inport and output blocks in sys. Linearization uses the operating point op. linsys = linearize(sys,op,io) linearizes the model specified by linearization I/O points io. linsys = linearize(sys,op,io,options) uses algorithm options specified in options. [linsys,op] = linearize(sys,io,tsnapshot) linearizes the model at one or more simulation times tsnapshot. Returns the operating point op that corresponds to the simulation snapshot. Omit io when you want to use the root-level inport and output blocks in sys as linearization I/O points. linsys = linearize(sys,op,io,'StateOrder',stateorder) returns a linear model with a specified state order. linblock = linearize(sys,op,blockpath) linearizes the block in the model sys specified by the blockpath. Linearization uses the operating point op. 8-96 linearize linsys = linearize(sys,blocksub,op,io) linearizes the nonlinear Simulink model defined by the linearization I/O points io. blocksub defines the analytic linearization of blocks that do not linearize successfully, such as blocks with discontinuities or triggered subsystems. Omit the operating point op when you want to use the model operating point. Omit io when you want to use the root-level inport and output blocks in sys as linearization I/O points. Input Arguments sys Simulink model name, specified as a string inside single quotes (' '). io Linearization I/O object, specified using linio. If the linearization input and output points are stored in the model workspace, extract these points from the model into io using getlinio. io must correspond to the Simulink model sys. op Operating point object, specified using operpoint or findop. op must correspond to the Simulink model sys. options Algorithm options, specified using linoptions. tsnapshot Simulation snapshot time instants when to linearize the model, specified as a scalar or vector. stateorder State order in linearization results, specified as a cell array of block paths for blocks with states. Each block path is string of the form model/subsystem/block that uniquely identifies a block in the model. 8-97 linearize The order of the block paths in the cell array should match the desired order of the linearized model states. blockpath Block to linearize, specified as a full block path. A block path is string of the form model/subsystem/block that uniquely identifies a block in the model. blocksub Desired block linearization, specified for blocks that do not have analytic linearization. blocksub is an n-by-1 structure, where n is the number of blocks for which you specify the linearization. blocksub has these fields: • Name — Block path corresponding to the block for which you want to specify the linearization. blocksub.Name is a string of the form model/subsystem/block that uniquely identifies a block in the model. • Value — Desired linearization of the block, specified as a structure with these fields: Specification — Block linearization, specified as a string. The string can include a MATLAB expression or function that returns one of the following: - Linear model in the form of a D-matrix Control System Toolbox LTI model object Robust Control Toolbox uncertain state space or uncertain real object (requires Robust Control Toolbox software) If blocksub.Value.Specification is a MATLAB expression, this expression must follow the resolution rules , as described in “Symbol Resolution”. If blocksub.Value.Specification is a function, this function must have one input argument, BlockData, which is a structure that 8-98 linearize the software creates automatically and passes to the specification function. BlockData has the following fields: - BlockName is the name of the Simulink block with the specified linearization. - Parameters is a structure array containing the evaluated values for the block. Each element of the array has the fields 'Name' and 'Value', which contain the name and evaluated value, respectively, for the parameter. - Inputs is an array of input values. ny is the number of output channels of the block linearization. nu is the number of input channels of the block linearization. Type — Specification type, specified as one of these strings: 'Expression' 'Function' - ParameterNames — Linearization function parameter names, specified as a comma-separated list of strings. Specify only when blocksub.Value.Type = 'Function' and your block linearization function requires input parameters. These parameters only impact the linearization of the specified block You must also specify the corresponding blocksub.Value.ParameterValues field. - ParameterValues — Linearization function parameter values that correspond to blocksub.Values.ParameterNames. Specify only when blocksub.Value.Type = 'Function'. blocksub.Value.ParameterValues is a comma separated list of values. The order of parameter values must correspond to the order of parameter names in blocksub.Value.ParameterNames. - BlockLinearization is a state-space (ss) model that is the current default linearization of the block. You can use BlockData.BlockLinearization in the specification function to specify a block linearization that depends on the default 8-99 linearize linearization, such as the default linearization multiplied by a time delay. Output Arguments linsys Linear time-invariant state-space model that approximates the nonlinear model specified by linearization I/O points io. linsys is returned as an ss object. op Operating point corresponding the simulation snapshot of the states and input levels at tsnapshot, returned as an operating point object. This is the same object as returned using operpoint or findop. View op values to determine whether the model was linearized at a reasonable operating point. linblock Linear time-invariant state-space model that approximates the specified nonlinear block, returned as an ss object. Examples Linearization at Model Operating Point This example shows how to use linearize to linearize a model at the operating point specified in the model. The model operating point consists of the model initial state values and input signals. 1 Open Simulink model. sys = 'watertank'; load_system(sys); open_system(sys) The Water-Tank System block represents the plant in this control system and contains all of the system nonlinearities. 8-100 linearize 2 Specify to linearize the Water-Tank System block using linearization I/O points. sys_io(1)=linio('watertank/PID Controller',1,'in'); sys_io(2)=linio('watertank/Water-Tank System',1,'out'); Each linearization I/O point is associated with a block outport. For example, to specify a linearization input point at the Water-Tank System block input, you must associate this input point with the outport of the PID Controller block. sys_io is an object array that includes two linearization I/O objects. The first object, sys_io(1), specifies the linearization input point on the first watertank/PID Controller output signal. The second object, sys_io(2), specifies the linearization output point on the first watertank/Water-Tank System output signal. Note When there are multiple block output signals and you want to specify an output port other than the first output, enter the desired output port number as the second argument of linio. 3 Update the model ports to include the linearization I/O points. setlinio(sys,sys_io) 4 Open the loop. sys_io(2).OpenLoop='on'; This command removes the effects of the feedback signal on the linearization without changing the model operating point. 8-101 linearize Note Do not open the loop by manually removing the feedback signal from the model. Removing the signal manually changes the operating point of the model. 5 Update the model to reflect the modified linearization I/O object. setlinio(sys,sys_io); This command also adds the loop opening marker to the model. When you add input points, output points, or loop openings, linearization I/O markers appear in the model. Use these to visualize your linearization points. 6 Linearize the Water-Tank System block at the model operating point. linsys = linearize(sys,sys_io); bdclose(sys); linsys is a state-space model object. 7 Plot a Bode plot of the linearized model. bode(linsys) 8-102 linearize The resulting Bode plot looks like a stable first-order response, as expected. Linearization at Simulation Snapshot This example shows how to use linearize to linearize a model by simulating the model and extracting the state and input levels of the system at specified simulation times. 1 Open Simulink model. sys = 'watertank'; load_system(sys); The Water-Tank System block represents the plant in this control system and contains all of the system nonlinearities. 8-103 linearize 2 Simulate the model to determine the time when the model reaches steady state. The Scope block shows that the system reaches steady state at approximately 20 time units. 3 Specify to linearize the open-loop Water-Tank System. sys_io(1)=linio('watertank/PID Controller',1,'in'); sys_io(2)=linio('watertank/Water-Tank System',1,'out','on'); The last input argument for computing sys_io(2) opens the feedback loop. Note Do not open the loop by manually removing the feedback signal from the model. Removing the signal manually changes the operating point of the model. 4 Linearize the Water-Tank System block at a simulation time of 20time units. 8-104 linearize tsnapshot = 20; linsys = linearize(sys,sys_io,tsnapshot); bdclose(sys); linsys is a state-space model object. 5 Plot a Bode plot of the linearized model. bode(linsys) The resulting Bode plot looks like a stable first-order response, as expected. Linearization at Trimmed Operating Point 8-105 linearize This example shows how to use linearize to linearize a model using a trimmed operating point. 1 Open Simulink model. sys = 'watertank'; load_system(sys); 2 Create operating point specification object. opspec = operspec(sys); By default, all model states are specified to be at steady state. 3 Find the steady-state operating point using trim analysis. op = findop(sys,opspec); 4 Specify to linearize the open-loop Water-Tank System. sys_io(1)=linio('watertank/PID Controller',1,'in'); sys_io(2)=linio('watertank/Water-Tank System',1,'out','on'); 5 Linearize the Water-Tank System block at the trimmed operating point. linsys = linearize(sys,op,sys_io); bdclose(sys); linsys is a state-space model object. Linearization at Multiple Simulation Snapshots This example shows how to use linearize to linearize a model at multiple simulation snapshots. 1 Open Simulink model. 8-106 linearize sys = 'magball'; load_system(sys); 2 Specify to linearize the open-loop Water-Tank System. sys_io(1)=linio('watertank/PID Controller',1,'in'); sys_io(2)=linio('watertank/Water-Tank System',1,'out','on'); 3 Define the simulation times at which to linearize the model. tsnapshot = [10,20]; linsys = linearize(sys,sys_io,tsnapshot); bdclose(sys); Plant Linearization at Model Operating Point This example shows how to use linearize to linearize a subsystem at the model operating point. Use this approach instead of defining linearization I/O points when the plant is a subsystem or a block. 1 Open Simulink model. sys = 'watertank'; load_system(sys); blockpath = 'watertank/Water-Tank System'; 2 Linearize the Water-Tank System block. linsys = linearize(sys,blockpath); bdclose(sys); Algorithms By default, linearize automatically sets the Simulink model properties: • BufferReuse = 'off' • RTWInlineParameters = 'on' 8-107 linearize • BlockReductionOpt = 'off' After the linearization completes, Simulink restores the original model properties. Alternatives Use the Control and Estimation Tools Manager. For example, see “Linearize at Model Operating Point” on page 2-38. See Also findop | linlftfold How To • “Linearize at Model Operating Point” on page 2-38 • “Linearize at Trimmed Operating Point” on page 2-52 8-108 linio Purpose Define linearization input/output (I/O) points for Simulink model Syntax io io io io Alternatives As an alternative to the linio function, create linearization I/O settings by using the right-click menu on the model diagram. Description io = linio('blockname',portnum) creates a linearization = linio('blockname',portnum) = linio('blockname',portnum,type) = linio('blockname',portnum,type,openloop) = linio('blockname',portnum,type,openloop, 'buselementname') input/output (I/O) object for the signal that originates from the outport with port number portnum of the block blockname in a Simulink model. The default I/O type is 'in', and the default OpenLoop property is 'off'. Use io with linearize to create linearized models. io = linio('blockname',portnum,type) creates a linearization I/O object with specified type of linearization I/O type. Available linearization I/O types are: • 'in', linearization input point • 'out', linearization output point • 'inout', linearization input then output point • 'outin', linearization output then input point • 'none', no linearization input/output point io = linio('blockname',portnum,type,openloop) creates a linearization I/O object with specified loop-opening status openloop. The openloop property is 'off' when the I/O point is not an open-loop point and is set to 'on' when the I/O point is an open-loop point. io = linio('blockname',portnum,type,openloop,'buselementname') creates a linearization I/O object for the element buselementname at the bus signal that originates from the portnum of blockname. 8-109 linio Examples This example shows how to create linearization I/O settings for a Simulink model. 1 Create an I/O setting for the signal originating from the Controller block of the magball model. io(1)=linio('magball/Controller',1) By default, this I/O is an input point. 1x1 vector of Linearization IOs: -------------------------1. Linearization input located at the following signal: - Block: magball/Controller - Port: 1 2 Create a second I/O setting within the object, io. io(2)=linio('magball/Magnetic Ball Plant',1,'out','on') This I/O originates from the Magnetic Ball Plant block, is an output point and is also an open-loop point. 1x2 vector of Linearization IOs: -------------------------1. Linearization input located at the following signal: - Block: magball/Controller - Port: 1 2. Linearization output with a loop opening located at the following signal: - Block: magball/Magnetic Ball Plant - Port: 1 Select Individual Bus Element as Linearization I/O point This example shows how to create a linearization I/O setting for individual bus elements in a bus signal. 8-110 linio 1 Open Simulink model. sys = 'sldemo_mdlref_bus'; open_system(sys); 2 Specify to linearize the CounterA block using linearization I/O points on an individual bus element. io(1) = linio('sldemo_mdlref_bus/COUNTERBUSCreator',1,'in',... 'off','limits.upper_saturation_limit'); io(2) = linio('sldemo_mdlref_bus/CounterA',1,'out','off',... 'limits.upper_saturation_limit'); 3 Update the model to reflect the linearization I/O object. setlinio(sys,io) set_param(sys,'ShowLinearizationAnnotations','on') The linearization I/O markers appear in the model. Use these markers to visualize your linearization points. 4 Linearize the model at the model operating point. 8-111 linio sys = linearize(mdl,io); See Also getlinio | linearize | setlinio Tutorials • “Select Bus Elements as Linear Analysis Points” on page 2-23 8-112 linlft Purpose Linearize model while removing contribution of specified blocks Syntax lin_fixed = linlft(sys,io,blocks) [lin_fixed,lin_blocks] = linlft(sys,io,blocks) Description lin_fixed = linlft(sys,io,blocks) linearizes the Simulink model named sys while removing the contribution of certain blocks. Specify the full block pathnames of the blocks to ignore in the cell array of strings called blocks. The linearization occurs at the operating point specified in the Simulink model, which includes the ignored blocks. You can optionally specify linearization points (linear analysis points) in the I/O object io. The resulting linear model lin_fixed has this form: In Block 1 Out Block 2 Out Block n Out Out sys ... ... Block 1 In Block 2 In Block n In The top channels In and Out correspond to the linearization points you specify in the I/O object io. The remaining channels correspond to the connection to the ignored blocks. When you use linlft and specify the ’block-by-block’ linearization algorithm in linoptions, you can use all the variations of the input arguments for linearize. You can linearize the ignored blocks separately using linearize, and then combine the linearization results using linlftfold. [lin_fixed,lin_blocks] = linlft(sys,io,blocks) returns the linearizations for each of the blocks specified in blocks. If blocks is a string identifying a single block path, lin_blocks is a single state-space (ss) model. If blocks is a cell array identifying multiple blocks, lin_blocks is a cell array of state-space models. The full block path for each block in lin_blocks is stored in the Notes property of the state-space model. 8-113 linlft Examples Linearize the following parts of the scdtopmdl Simulink model separately, and then combine the results: • Fixed portion, which contains everything except the Parameter Varying Controller model reference • Parameter Varying Controller model reference, which references the scdrefmdl model % Open the Simulink model topmdl = 'scdtopmdl'; % Linearize the model without the Parameter Varying Controller io = getlinio(topmdl); blocks = {'scdtopmdl/Parameter Varying Controller'}; sys_fixed = linlft(topmdl,io,blocks); % Linearize the Parameter Varying Controller refmdl = 'scdrefmdl'; sys_pv = linearize(refmdl); % Combine the results BlockSubs(1) = struct('Name',blocks{1},'Value',sys_pv); sys_fold = linlftfold(sys_fixed,BlockSubs); See Also 8-114 linlftfold | linearize | linio | getlinio | operpoint linlftfold Purpose Combine linearization results from specified blocks and model Syntax lin = linlftfold(lin_fixed,blocksubs) Description lin = linlftfold(lin_fixed,blocksubs) combines the following linearization results into one linear model lin: • Linear model lin_fixed, which does not include the contribution of specified blocks in your Simulink model You compute lin_fixed using linlft. • Block linearizations for the blocks excluded from lin_fixed You specify the block linearizations in a structure array blocksubs, which contains two fields: Examples 'Block' is a string specifying the Simulink block to replace. 'Value' is the value of the linearization for each block. Linearize the following parts of the scdtopmdl Simulink model separately and then combine the results: • Fixed portion, which contains everything except the Parameter Varying Controller model reference • Parameter Varying Controller model reference, which references the scdrefmdl model % Open the Simulink model 8-115 linlftfold topmdl = 'scdtopmdl'; % Linearize the model without the Parameter Varying Controller io = getlinio(topmdl); blocks = {'scdtopmdl/Parameter Varying Controller'}; sys_fixed = linlft(topmdl,io,blocks); % Linearize the Parameter Varying Controller refmdl = 'scdrefmdl'; sys_pv = linearize(refmdl); % Combine the results BlockSubs(1) = struct('Name',blocks{1},'Value',sys_pv); sys_fold = linlftfold(sys_fixed,BlockSubs); See Also 8-116 linlft | linearize | linio | getlinio | operpoint linoptions Purpose Set options for linearization and finding operating points Syntax opt=linoptions opt=linoptions('Property1','Value1','Property2','Value2', ...) Alternatives As an alternative to the linoptions function, set options for linearization and finding operating points in the Simulink Control Design GUI. Description opt=linoptions creates a linearization options object with the default settings. The variable, opt, is passed to the functions findop and linearize to specify options for finding operating points and linearization. opt=linoptions('Property1','Value1','Property2','Value2',...) creates a linearization options object, opt, in which the option given by Property1 is set to the value given in Value1, the option given by Property2 is set to the value given in Value2, etc. The variable, opt, is passed to the functions findop and linearize to specify options for finding operating points and linearization. The following options can be set with linoptions: LinearizationAlgorithm Set to 'numericalpert' to enable numerical-perturbation linearization (as in Simulink 3.0 software) where root-level inports and states are numerically perturbed. Linearization annotations are ignored and root-level inports and outports are used instead. Default is 'blockbyblock'. SampleTime The time at which the signal is sampled. Nonzero for discrete systems, 0 for continuous systems, -1 (default) to use the longest sample time that contributes to the linearized model. 8-117 linoptions UseFullBlockNameLabels Set to 'off' (default) to use truncated names for the linearization I/Os and states in the linearized model. Set to 'on' to use the full block path to name the linearization I/Os and states in the linearized models. UseBusSignalLabels Set to 'off' (default) to use bus signal channel number to label I/Os on bus signals in your linearization results. Set to 'on' to use bus signal names to label I/Os on bus signals in your linearization results. Bus signal names appear in the results when the I/O points are located at the output of the following blocks: • Root-level inport block containing a bus object • Bus creator block • Subsystem block whose source traces back to one of the following: - Output of a bus creator block Root-level inport by passing through only virtual or nonvirtual subsystem boundaries Note You cannot use this option when your model has mux/bus mixtures. For information on how to avoid buses used as muxes, see “Avoid Mux/Bus Mixtures” in the Simulink documentation. 8-118 linoptions BlockReduction Set to 'on' (default) to eliminate from the linearized model those blocks that are not in the path of the linearization. Block reduction eliminates the states of blocks in dead linearization paths from your linearization results. Some examples of dead linearization paths are linearization paths that include: • Blocks that linearize to zero • Switch blocks that are not active along the path • Disabled subsystems • Signals marked as open-loop linearization points The linearization result of the model shown in the following figure includes only two states. It does not include states from the two blocks outside the linearization path. These states do not appear because these blocks are on a dead linearization path with a block that linearizes to zero (the zero gain block). Set to 'off' to return a linearized model that includes all of the states of the model. IgnoreDiscreteStates Set to 'on' when performing continuous linearization (SampleTime set to 0) to remove any discrete states from the linearization and accept the D value for all blocks with discrete states. Set to 'off' (default) to include discrete states. 8-119 linoptions RateConversionMethod When you linearize a multirate system, set this option to one of the following rate conversion methods: • 'zoh' (default) to use the zero order rate conversion method • 'tustin' to use the Tustin (bilinear) method • 'prewarp' to use the Tustin approximation with prewarping • 'upsampling_zoh' to upsample discrete states when possible and to use 'zoh' otherwise • 'upsampling_tustin' to upsample discrete states when possible and to use 'tustin' otherwise • 'upsampling_prewarp' to upsample discrete states when possible and to use 'prewarp' otherwise Note When you select 'prewarp' or 'upsampling_prewarp', set the PreWarpFreq option to the desired prewarp frequency. Note You can only upsample when you convert discrete states to a new sample time that is an integer-value-times faster than the sampling time of the original system. For more information, and examples, on methods and algorithms for rate conversions and linearization of multirate models, see: • Linearization of Multirate Models • Linearization Using Different Rate Conversion Methods • “Continuous-Discrete Conversion Methods” in the Control System Toolbox documentation 8-120 linoptions PreWarpFreq The critical frequency Wc (in rad/sec) used by the 'prewarp' option when linearizing a multirate system. UseExactDelayModel Set to 'on' to return a linear model with an exact delay representation. Set to 'off' (default) to return a model with approximate delays. NumericalPertRel Set the perturbation level for obtaining the linear model (default value is 1e-5). The perturbation of the system’s states is specified by: NumericalPertRel + 10−3 × NumericalPertRel × x The perturbation of the system’s inputs is specified by: NumericalPertRel + 10−3 × NumericalPertRel × u NumericalXPert Individually set the perturbation levels for the system’s states using an operating point object. Use the operpoint function to create an operating point object for the model. NumericalUPert Individually set the perturbation levels for the system’s inputs using an operating point object. Use the operpoint function to create an operating point object for the model. OptimizationOptions Set options for use with the optimization algorithms. These options are the same as those set with optimset. For more information on these algorithms, see the Optimization Toolbox documentation. OptimizerType Set optimizer type to be used by trim optimization if the Optimization Toolbox software is installed. The available optimizer types are: 8-121 linoptions • graddescent_elim, the default optimizer, enforces an equality constraint to force the time derivatives of states to be zero (dx/dt=0, x(k+1)=x(k)) and the output signals to be equal to their specified ‘Known’ value. The optimizer fixes the states, x, and inputs, u, that are marked as ‘Known’ in an operating point specification and then optimizes the remaining variables. • graddescent, enforces an equality constraint to force the time derivatives of states to be zero (dx/dt=0, x(k+1)=x(k)) and the output signals to be equal to their specified ‘Known’ value. findop also minimizes the error between the states, x, and inputs, u, that are marked as ‘Known’ in an operating point specification. If there are not any inputs or states marked as ‘Known’, findop attempts to minimize the deviation between the initial guesses for x and u and their trimmed values. • lsqnonlin fixes the states, x, and inputs, u, that are marked as ’Known’ in an operating point specification and optimizes the remaining variables. The algorithm then tries to minimize both the error in the time derivatives of the states (dx/dt=0, x(k+1)=x(k)) and the error between the outputs and their specified ’Known’ value. • simplex uses the same cost function as lsqnonlin with the direct search optimization routine found in fminsearch. See the Optimization Toolbox documentation for more information on these algorithms. If you do not have the Optimization Toolbox software, you can access the documentation at http://www.mathworks.com/support/. DisplayReport 8-122 Set to 'on' to display the operating point summary report when running findop. Set to 'off' to suppress the display of this report. linoptions See Also findop | linearize 8-123 operpoint Purpose Create operating point for Simulink model Syntax op = operpoint('sys') Alternatives As an alternative to the operpoint function, create operating points in the Operating Points node of the Simulink Control Design GUI. See “Steady-State Operating Points (Trimming) from Specifications” on page 1-14. Description op = operpoint('sys') returns an object, op, containing the operating point of a Simulink model, sys. Use the object with the function linearize to create linearized models. The operating point object properties are: • “Model” on page 8-124 • “States” on page 8-124 • “Inputs” on page 8-125 • “Time” on page 8-125 Edit the properties of this object directly or with the set function. Model Model specifies the name of the Simulink model that this operating point object refers to. States States describes the operating points of states in the Simulink model. The States property is a vector of state objects that contains the operating point values of the states. There is one state object per block that has a state in the Simulink model. The States object has the following properties: 8-124 Nx Number of states in the block. This property is read-only. Block Block with which the states are associated. operpoint x Vector containing the values of states in the block. Ts Vector containing the sample time and offset for the state. SampleType Set this value to CSTATE, for a continuous state, or DSTATE for a discrete state. inReferencedModel Set this value to 1, when the state is inside a referenced model, or 0, when it is not. Description Text string describing the block. Inputs Inputs is a vector of input objects that contains the input levels at the operating point. There is one input object per root-level inport block in the Simulink model. The Inputs object has the following properties: Block Inport block with which the input vector is associated PortWidth Width of the corresponding inport u Vector containing the input level at the operating point Description Text string describing the input Time Time specifies the time at which any time-varying functions in the model are evaluated. Examples To create an operating point object for the Simulink model magball, type: op = operpoint('magball') which returns the following: 8-125 operpoint Operating Point for the Model magball. (Time-Varying Components Evaluated at time t=0) States: ---------(1.) magball/Controller/PID Controller/Filter x: 0 (2.) magball/Controller/PID Controller/Integrator x: 14 (3.) magball/Magnetic Ball Plant/Current x: 7 (4.) magball/Magnetic Ball Plant/dhdt x: 0 (5.) magball/Magnetic Ball Plant/height x: 0.05 Inputs: None ---------- MATLAB software displays the name of the model, the time at which any time-varying functions in the model are evaluated, the names of blocks containing states, and the values of the states at the operating point. In this example there are four blocks that contain states in the model and four entries in the States object. The first entry contains two states. MATLAB also displays the Inputs although there are not any in this model. To view the properties of op in more detail, use the get function. See Also 8-126 get | linearize | operspec | set | update operspec Purpose Operating point specifications Syntax opspec = operspec(sys) Description opspec = operspec(sys) returns the operating point specifications object for steady state operating point analysis using findop. The Simulink model must be open. Tips • Use get to display the operating point specification object properties. Input Arguments sys Output Arguments opspec Simulink model name, specified as a string inside single quotes (' '). Operating point specification object. After creating the operating point object, you can modify the operating point states and input levels. For example, opspec.States(1).Known = 1 specifies that the first model state value is known, and the value of the known state opspec.States(1).x = 2. The operating point object has these properties: • Model — Simulink model name. String. • States — State operating point specification. Vector of data structures, where each data structure represents the states of one Simulink block. Each States structure has these fields: 8-127 operspec x Simulink block state values, specified as a vector of states. Also set the Known field of the States property for known state values that remain fixed during operating point search. Known Known state value specification: • 1 — Known value that is fixed during operating point search. - 0 (default) — Unknown value to be found by optimization. Also specify the known operating point values using the x field of the States structure. SteadyState Steady state value specification: • 1 (default) — Equilibrium state. - 8-128 0 — Nonequilibrium state. Min Minimum bounds on the state value, specified as a scalar or vector. Max Maximum bounds on the state value, specified as a scalar or vector. Ts (Only for discrete-time states) Sample time and offset of each Simulink block state, specified as a vector. Description Block state description, specified as a string. Nx(read only) Number of states in the Simulink block. Block Simulink block name. operspec SampleType State time rate can have the values: • 'CSTATE' — Continuous-time state - 'DSTATE' — Discrete—time state. inReferencedModel Determine whether the sates is inside a reference model: • 1 — State is inside a reference model. - 0 — State is in the current model file. • Inputs — Input level specifications at the operating point. Vector of input specification objects, where each object represents the input levels of one root-level inport block in the Simulink block. Each input specification object has these properties: u Inport block input levels at the operating point, specified as a vector of input levels. Also set the Known field of the Inputs property for known input levels that remain fixed during operating point search. Known Known input level specification: • 1 — Known input level that is fixed during operating point search. - 0 (default) — Unknown input level to be found by optimization. Also specify the known operating point input levels using the u property of the input specification object. Min Minimum bounds on the input level, specified as a scalar or vector. 8-129 operspec Max Maximum bounds on the input level, specified as a scalar or vector. Description Inport block input description, specified as a string. Block Inport block name. PortWidth Number of inport block signals. • Outputs — Output level specifications at the operating point. Vector of output specification objects, where each object represents one output specification per root-level output block in the Simulink block. You can constrain additional output levels using addoutputspec to add another output specification. Each output specification object has these properties: y Outport block output levels at the operating point, specified as a vector of output levels. Also set the Known field of the Outputs property for known output levels that remain fixed during operating point search. Known Known output level specification: • 1 — Known output level constraint that must be met during operating point search. - 0 (default) — Unknown input level to be found by optimization. Also specify the known operating point output levels using the y property of the output specification object. 8-130 operspec Min Minimum bounds on the output level, specified as a scalar or vector. Max Maximum bounds on the output level, specified as a scalar or vector. Description Outport block input description, specified as a string. Block Outport block name. PortWidth Number of outport block signals. • Time — Time instants for evaluating the time-varying functions in the model. Examples Steady-State Operating Point (Trimming) From Specifications This example shows how to use findop to compute an operating point of a model from specifications. 1 Open Simulink model. sys = 'watertank'; load_system(sys); 2 Create operating point specification object. opspec = operspec(sys) By default, all model states are specified to be at steady state. Operating Specification for the Model watertank. (Time-Varying Components Evaluated at time t=0) States: ---------(1.) watertank/PID Controller/Integrator 8-131 operspec spec: dx = 0, initial guess: (2.) watertank/Water-Tank System/H spec: dx = 0, initial guess: 0 1 Inputs: None ---------Outputs: None ---------operspec extracts the default operating point of the Simulink model with two states. The model does not have any root-level inport blocks and no root-level outport blocks or output constraints. 3 Configure specifications for the first model state. opspec.States(1).SteadyState = 1; opspec.States(1).x = 2; opspec.States(1).Min = 0; The first state must be at steady state and have an initial value of 2 with a lower bound of 0. 4 Configure specifications for the second model state. opspec.States(2).Known = 1; opspec.States(2).x = 10; The second state sets the desired height of the water in the tank at 10. Configuring the height as a known value keeps this value fixed when computing the operating point. 5 Find the operating point that meets these specifications. [op,opreport] = findop(sys,opspec) bdclose(sys); opreport describes how closely the optimization algorithm met the specifications at the end of the operating point search. 8-132 operspec Operating Report for the Model watertank. (Time-Varying Components Evaluated at time t=0) Operating point specifications were successfully met. States: ---------(1.) watertank/PID Controller/Integrator x: 1.26 dx: 0 (0) (2.) watertank/Water-Tank System/H x: 10 dx: 0 (0) Inputs: None ---------Outputs: None ---------dx indicates the time derivative of each state. The actual dx values of zero indicate that the operating point is at steady state. The desired dx value is in parentheses. Initialize Steady-State Operating Point Search Using Simulation This example shows how to use findop to compute an operating point of a model from specifications, where the initial state values are extracted from a simulation snapshot. 1 Open Simulink model. sys = 'watertank'; load_system(sys); 2 Extract an operating point from simulation after 10 time units. opsim = findop(sys,10); 3 Create operating point specification object. 8-133 operspec By default, all model states are specified to be at steady state. opspec = operspec(sys); 4 Configure initial values for operating point search. opspec = initopspec(opspec,opsim); 5 Find the steady state operating point that meets these specifications. [op,opreport] = findop(sys,opspec) bdclose(sys); opreport describes the optimization algorithm status at the end of the operating point search. Operating Report for the Model watertank. (Time-Varying Components Evaluated at time t=0) Operating point specifications were successfully met. States: ---------(1.) watertank/PID Controller/Integrator x: 1.26 dx: 0 (0) (2.) watertank/Water-Tank System/H x: 10 dx: -1.1e-014 (0) Inputs: None ---------Outputs: None ---------dx, which is the time derivative of each state, is effectively zero. This value of the state derivative indicates that the operating point is at steady state. 8-134 operspec Operating Point (Trim Analysis) With Output Constraint This example shows how to use addoutputspec to specify an output constraint to the operating point specification object for computing the operating point. 1 Open Simulink model. sys = 'scdspeed'; load_system(sys); 2 Create operating point specification object. opspec = operspec(sys) By default, opspec specifies that the operating point is at steady state, or equilibrium. Operating Specification for the Model scdspeed. (Time-Varying Components Evaluated at time t=0) States: ---------(1.) scdspeed/Throttle & Manifold/Intake Manifold/p0 = 0.543 bar spec: dx = 0, initial guess: 0.543 (2.) scdspeed/Vehicle Dynamics/w = T//J w0 = 209 rad//s spec: dx = 0, initial guess: 209 Inputs: ---------(1.) scdspeed/Throttle initial guess: 0 perturbation Outputs: None ---------operspec extracts the default operating point of the Simulink model with two states and one root-level inport block. There are no root-level outport blocks or output constraints. 8-135 operspec 3 Fix the first output port of the Vehicle Dynamics to 2000 RPM. opspec = addoutputspec(op_spec,'scdspeed/rad//s to rpm',1); opspec.Outputs.Known = 1; opspec.Outputs.y = 2000; 4 Find the operating point that meets this specification. op = findop(sys,op_spec) Operating Point Search Report: --------------------------------Operating Report for the Model scdspeed. (Time-Varying Components Evaluated at time t=0) Operating point specifications were successfully met. States: ---------(1.) scdspeed/Throttle & Manifold/Intake Manifold/p0 = 0.543 bar x: 0.544 dx: 2.66e-013 (0) (2.) scdspeed/Vehicle Dynamics/w = T//J w0 = 209 rad//s x: 209 dx: -8.48e-012 (0) Inputs: ---------(1.) scdspeed/Throttle u: 0.00382 perturbation [-Inf Inf] Outputs: ---------(1.) scdspeed/rad//s to rpm y: 2e+003 (2e+003) See Also 8-136 addoutputspec | findop | update set Purpose Set properties of linearization I/Os and operating points Syntax set(ob) set(ob,'PropertyName',val) ob.PropertyName=val Description set(ob) displays all editable properties of the object, ob, which can be a linearization I/O object, an operating point object, or an operating point specification object. Create ob using findop, getlinio, linio, operpoint, or operspec. set(ob,'PropertyName',val) sets the property, PropertyName, of the object, ob, to the value, val. The object, ob, can be a linearization I/O object, an operating point object, or an operating point specification object. Create ob using findop, getlinio, linio, operpoint, or operspec. ob.PropertyName=val is an alternative notation for assigning the value, val, to the property, PropertyName, of the object, ob. The object, ob, can be a linearization I/O object, an operating point object, or an operating point specification object. Create ob using findop, getlinio, linio, operpoint, or operspec. Examples Create an operating point object for the Simulink model, magball: op_cond=operpoint('magball'); Use the set function to get a list of all editable properties of this object: set(op_cond) This function returns the properties of op_cond. ans = Model: States: Inputs: Time: {} {} {} {} 8-137 set To set the value of a particular property of op_cond, provide the property name and the desired value of this property as arguments to set. For example, to change the name of the model associated with the operating point object from 'magball' to 'Magnetic Ball', type: set(op_cond,'Model','Magnetic Ball') To view the property value and verify that the change was made, type: op_cond.Model which returns ans = Magnetic Ball Because op_cond is a structure, you can set any properties or fields using dot-notation. First, produce a list of properties of the second States object within op_cond, as follows: set(op_cond.States(2)) which returns ans = Nx: Block: StateName: x: Ts: SampleType: inReferencedModel: Description: {} {} {} {} {} {} {} {} Now, use dot-notation to set the x property to 8: 8-138 set op_cond.States(2).x=8; To view the property and verify that the change was made, type op_cond.States(2) which displays (1.) magball/Magnetic Ball Plant/Current x: 8 See Also findop | get | linio | operpoint | operspec | setlinio 8-139 setlinio Purpose Specify linearization input/output (I/O) points for Simulink model, Linear Analysis Plots block, or Model Verification block Syntax oldio = setlinio('sys',io) oldio = setlinio('blockpath',io) Alternatives As an alternative to the setlinio function, edit linearization I/Os using the: • Analysis I/Os tab of the Linearization Task node in the Control and Estimation Tools Manager GUI for Simulink models. • Linearization inputs/outputs table and Click a signal in the model to select it in the Linearizations tab of the Block Parameters dialog box for Linear Analysis Plots or Model Verification blocks. Description oldio = setlinio('sys',io) assigns the settings in the vector of linearization input/output (I/O) objects, io, to the Simulink model, sys. These settings appear as annotations on the signal lines. Use the function getlinio or linio to create the linearization I/O objects. You can save I/O objects to disk in a MAT-file and use them later to restore linearization settings in a model. oldio = setlinio('blockpath',io) assigns the settings in io as the linearization I/Os in a Linear Analysis Plots block or a Model Verification block. blockpath is the full path to the block. Examples This example shows how to assign linearization input/output settings to a Simulink model. Before assigning I/O settings to a Simulink model using setlinio, you must create a vector of I/O objects representing linearization annotations, such as input points or output points, on a Simulink model. 1 Open a Simulink model. magball 8-140 setlinio 2 Right-click the signal line between the Magnetic Ball Plant and the Controller. Select Linear Analysis Points > Input Point from the menu to place an output point on this signal line. Notice a small arrow pointing away from a small circle just above the signal line. This arrow represents the output point. 3 Right-click the signal line after the Magnetic Ball Plant. Select Linear Analysis Points > Output Point from the menu to place another output point on this signal line. The model diagram should now look similar to that in the following figure: 4 Create an I/O object with the getlinio function: io=getlinio('magball') 5 Modify io by editing the object or by using the set function. io(1).Type='in'; io(2).OpenLoop='on'; 6 Assign the new settings in io to the model. oldio=setlinio('magball',io) This assignment returns the old I/O settings (that have been replaced by the settings in io). 8-141 setlinio 2x1 vector of Linearization IOs: -------------------------1. Linearization input located at the following signal: - Block: magball/Controller - Port: 1 2. Linearization output located at the following signal: - Block: magball/Magnetic Ball Plant - Port: 1 The model diagram now looks similar to the following figure. Update linearization input/output settings in a Linear Analysis Plots block This example shows how to update linearization input/output settings in a Linear Analysis Plots block. 1 Open the watertank model, and specify input and output (I/O). a Right-click the Desired Water Level output signal, and select Linear Analysis Points > Input Point. b Right-click the Water-Tank System output signal, and select Linear Analysis Points > Output Point. The linearization I/O markers appear in the model, as shown in the next figure. 8-142 setlinio Alternatively, you can use linio. 2 Drag and drop a Bode Plot block from the Simulink Control Design Linear Analysis Plots library into the Simulink Editor. 3 Find all I/Os used by the Bode Plot block. io = getlinio('watertank/Bode Plot') When you drag and drop the block, the block I/Os are set to the model I/Os. The following results appear at the MATLAB prompt: 2x1 vector of Linearization IOs: -------------------------1. Linearization input located at the following signal: - Block: watertank/Desired Water Level - Port: 1 2. Linearization output located at the following signal: - Block: watertank/Water-Tank System - Port: 1 4 Open the loop specified by the block I/Os. io(2).OpenLoop = 'on'; Note The loop opening does not affect the model I/Os. 8-143 setlinio 5 Update the I/O in the Bode Plot block. oldio = setlinio('watertank/Bode Plot',io) See Also 8-144 get | getlinio | linio | set setxu Purpose Set states and inputs in operating points Syntax op_new=setxu(op_point,x,u) Alternatives As an alternative to the setxu function, set states and inputs of operating points with the Simulink Control Design GUI. Description op_new=setxu(op_point,x,u) sets the states and inputs in the operating point, op_point, with the values in x and u. A new operating point containing these values, op_new, is returned. The variable x can be a vector or a structure with the same format as those returned from a Simulink simulation. The variable u can be a vector. Both x and u can be extracted from another operating point object with the getxu function. Examples Open the Simulink model F14 by typing f14 at the command line. Select Simulation > Model Configuration Parameters > Data Import/Export. In the Save to workspace pane, select Final states. In the Save options pane, select Structure from Format. This selection saves the final states of the model to the workspace after a simulation. Start the simulation. After it has run, a new variable, xFinal, should be in the workspace. This variable is a structure with two properties, time and signals. Create an operating point object for F14 by typing: op_point=operpoint('f14') All states are initially set to 0. Set the states in this object to be the values in xFinal. Set the input to be 9. newop=setxu(op_point,xFinal,9) The new operating point is displayed as follows: Operating Point for the Model f14. (Time-Varying Components Evaluated at time t=0) 8-145 setxu States: ---------(1.) f14/Actuator Model x: -0.032 (2.) f14/Aircraft Dynamics Model/Transfer Fcn.1 x: 0.56 (3.) f14/Aircraft Dynamics Model/Transfer Fcn.2 x: 678 (4.) f14/Controller/Alpha-sensor Low-pass Filter x: 0.392 (5.) f14/Controller/Pitch Rate Lead Filter x: 0.133 (6.) f14/Controller/Proportional plus integral compensator x: 0.166 (7.) f14/Controller/Stick Prefilter x: 0.1 (8.) f14/Dryden Wind Gust Models/Q-gust model x: 0.114 (9.) f14/Dryden Wind Gust Models/W-gust model x: 0.46 x: -2.05 Inputs: ----------(1.) f14/u u: 9 See Also 8-146 getxu | initopspec | operpoint | operspec slTunable.addBlock Purpose Add block to list of tuned blocks Syntax addBlock(ST,blockID) Description addBlock(ST,blockID) adds the block referenced by blockID to the TunedBlocks property of the slTunable interface ST. The TunedBlocks property lists the tunable blocks in the control system described by ST. Input Arguments ST slTunable interface describing the control system to be tuned. blockID String or cell array of strings identifying one or more blocks to add to the TunedBlocks property of ST. You can specify blocks with an abbreviated block name provided that the string matches the end of the full block path and unambiguously identifies the block to add. Examples Create an slTunable interface for the Simulink model rct_cascade and add a block to the list of tuned blocks in the interface. open_system('rct_cascade') ST0 = slTunable('rct_cascade','C1'); addBlock(ST0,'C2'); See Also slTunable | slTunable.addMeasurement | slTunable.addIO | slTunable.addControl 8-147 slTunable.addControl Purpose Add control signal to list of control signals in slTunable interface Syntax addControl(ST,signalID) Description addControl(ST,signalID) adds the signals referenced by signalID to the Controls property of the slTunable interface ST. The Controls signals are generated by the controller and drive the actuators in the control system described by ST. The Controls and Measurements signals together define the boundary between the plant and controller subsystems for tuning with slTunable.looptune. You can also use Controls signals as inputs, outputs, or loop-opening locations when specifying TuningGoal requirements for control system tuning. Input Arguments ST slTunable interface describing the control system to be tuned. signalID String or cell array of strings identifying one or more signals to add to the Controls property of ST. Each string can be one of the following: • Signal name, for example 'torque' • Block path for a block with a single output port, for example 'Motor/PID' • Path to block and port originating the signal, for example 'Engine Model/1' or 'Engine Model/torque' Alternatively, you can specify signalID as a linearization I/O object or vector of linearization I/O objects (see linio). Examples Specify Control Signal in Control System to Be Tuned This example shows how to specify control signals in an slTunable interface for tuning the Simulink model rct_cascade: 8-148 slTunable.addControl Create an slTunable interface for the model. open_system('rct_cascade') tunedblocks = {'C1','C2'}; ST0 = slTunable('rct_cascade',tunedblocks); Specify the control signal for the control system. addControl(ST0,'u2'); In rct_cascade, the control signal (the actuator signal) is u2, the output of the inner-loop controller. See Also slTunable | slTunable.addMeasurement | slTunable.addIO | slTunable.addOpening | slTunable.addSwitch 8-149 slTunable.addIO Purpose Add I/O points list of linearization I/Os in slTunable interface Syntax addIO(ST,signalID,type) addIO(ST,iopoint) Description addIO(ST,signalID,type) adds the signal locations referenced by signalID to the IOs property of the slTunable interface ST. The type argument specifies whether each I/O type is input, output, input/output, or output/input. addIO(ST,iopoint) reads the signal path and I/O type from the linearization I/O point object iopoint. Input Arguments ST slTunable interface describing a Simulink model. signalID String or cell array of strings identifying one or more signals to add to the IOs property of ST. Each string can be one of the following: • Signal name, for example 'torque' • Block path for a block with a single output port, for example 'Motor/PID' • Path to block and port originating the signal, for example 'Engine Model/1' or 'Engine Model/torque' type String specifying the I/O type of signalID. The type can be one of the following: • 'in' — Add signalID to the IOs property of ST as an input point • 'out' — Output point 8-150 slTunable.addIO • 'inout' — Input/output point • 'outin' — Output/input point If signalID is an array of signal names, type is an array of the same length. The kth entry in type specifies the type of the kth entry in signalID. For more information about linearization I/O point types, see linio. iopoint Linearization I/O object or vector of linearization I/O objects (see linio). Examples Create a slTunable interface for tuning the Simulink model rct_cascade. Add an input point at the signal u1, and an input/output point at the signal y2m. open_system('rct_cascade') tunedblocks = {'C1','C2'}; ST0 = slTunable('rct_cascade',tunedblocks); addIO(ST0,'u1','in'); addIO(ST0,'y2m','inout'); See Also slTunable | slTunable.addMeasurement | slTunable.addControl | slTunable.addOpening | slTunable.addSwitch | linio How To • “Specifying Subsystem, Loop, or Block to Linearize” on page 2-11 8-151 slTunable.addMeasurement Purpose Add measurement signal to list of measurement signals in slTunable interface Syntax addMeasurement(ST,signalID) Description addMeasurement(ST,signalID) adds the signals referenced by signalID to the Measurements property of the slTunable interface ST. The Measurements signals are generated by the plant and used by the controller in the control system described by ST. The Controls and Measurements signals together define the boundary between the plant and controller subsystems for tuning with slTunable.looptune. You can also use Measurements signals as inputs, outputs, or loop-opening locations when specifying TuningGoal requirements for control system tuning. Input Arguments ST slTunable interface describing the control system to be tuned. signalID String or cell array of strings identifying one or more signals to add to the Measurements property of ST. Each string can be one of the following: • Signal name, for example 'speed' • Block path for a block with a single output port, for example '"Engine/SpeedSensor' • Path to block and port originating the signal, for example 'Engine Model/1' or 'Engine Model/speed' Alternatively, you can specify signalID as a linearization I/O object or vector of linearization I/O objects (see linio). 8-152 slTunable.addMeasurement Examples Specify Measurement Signals in Control System to Be Tuned This example shows how to specify measurement signals in an slTunable interface for tuning the Simulink model rct_cascade: Create an slTunable interface for the model. open_system('rct_cascade') tunedblocks = {'C1','C2'}; ST0 = slTunable('rct_cascade',tunedblocks); Specify the measurement signal for the control system. addMeasurement(ST0,{'y1','y2m'}); In rct_cascade, the measurement signals are y1 and y2m, each of which feeds into a portion of the cascaded controller. See Also slTunable | slTunable.addControl | slTunable.addIO | slTunable.addOpening | slTunable.addSwitch 8-153 slTunable.addOpening Purpose Add new opening location to list of loop openings in slTunable interface Syntax addOpening(ST,signalID) Description addOpening(ST,signalID) adds the signal locations referenced by signalID to the Openings property of the slTunable interface ST. Loop openings are enforced at Openings locations for all tuning and analysis commands involving ST. Tips • To add a location where a loop opening is optionally enforced for a particular analysis or tuning requirement, use slTunable.addSwitch. Input Arguments ST slTunable interface describing a Simulink model. signalID String or cell array of strings identifying one or more signals to add to the Openings property of ST. Each string can be one of the following: • Signal name, for example 'u' • Block path for a block with a single output port, for example 'Motor/PID' • Path to block and port originating the signal, for example 'Controller/1' or 'Controller/u' Examples Create a slTunable interface for tuning the Simulink model rct_cascade. Add a loop opening location at the signal y1. open_system('rct_cascade') tunedblocks = {'C1','C2'}; ST0 = slTunable('rct_cascade',tunedblocks); addOpening(ST0,'y1'); 8-154 slTunable.addOpening The loop opening at y1 is enforced for all tuning and analysis commands involving ST0. See Also slTunable | slTunable.addMeasurement | slTunable.addIO | slTunable.addControl | slTunable.addSwitch 8-155 slTunable.addSwitch Purpose Add switch location to list of loop opening switches in slTunable interface Syntax addSwitch(ST,signalID) Description addSwitch(ST,signalID) adds the locations of the signals referenced by signalID to the Switches property of the slTunable interface ST. Switches are locations where you can optionally open a loop for tuning and analysis commands involving ST. You can also use Switches signals as inputs, outputs, or loop-opening locations when specifying TuningGoal requirements for control system tuning. Tips • To add a location where a loop opening is always enforced for all analysis or tuning requirement, use slTunable.addOpening. Input Arguments ST slTunable interface describing a Simulink model. signalID String or cell array of strings identifying one or more signals to add to the Switches property of ST. Each string can be one of the following: • Signal name, for example 'u' • Block path for a block with a single output port, for example 'Motor/PID' • Path to block and port originating the signal, for example 'Controller/1' or 'Controller/u' Examples Specify Switch Location in Control System to Be Tuned This example shows how to specify a location for an optional loop opening (a switch) in an slTunable interface for tuning the Simulink model rct_cascade: 8-156 slTunable.addSwitch Create an slTunable interface for the model. open_system('rct_cascade') tunedblocks = {'C1','C2'}; ST0 = slTunable('rct_cascade',tunedblocks); Specify the switch location. addSwitch(ST0,'y1'); When tuning a cascade control system, it can be useful to impose certain requirements on the inner loop that are enforced with the outer loop open. However, such a control system also has overall requirements are enforced with all loops closed. Adding a switch instead of a loop opening at y1 allows you to compute some responses with the outer loop open, and other responses with the outer loop closed. See Also slTunable | slTunable.addMeasurement | slTunable.addIO | slTunable.addControl | slTunable.addOpening 8-157 slTunable.getBlockParam Purpose Get parametrization of a particular tuned block in slTunable interface Syntax blockparam = getBlockParam(ST,block) Description blockparam = getBlockParam(ST,block) returns the parametrization Tips The slTunable interface automatically associates a parametric model with each Simulink block listed in the TunedBlocks property of ST. This parametrization expresses each tunable block as a Control Design Block or a tunable genss model. The parametrization specifies which parameters are tuned by commands such as slTunable.systune or slTunable.looptune. Use getBlockParam to access this parametrization. The tunable parameters of ST are the union of the parametrizations of all tunable blocks in ST. Input Arguments ST used to tune the Simulink block, block. slTunable interface describing a Simulink model. block String identifying a single block in the TunedBlocks property of ST. You can specify the block with an abbreviated block name, provided that the string matches the end of the full block path and unambiguously identifies the block. Output Arguments blockparam Parametrization of block. The parametrization is either: • A tunable Control Design Block. • A tunable genss model, if you specified a parametrization for block using slTunable.setBlockParam. • An empty array ([]), if slTunable cannot parametrize block. You can use slTunable.setBlockParam to specify a parametrization for such blocks. 8-158 slTunable.getBlockParam Examples Create an slTunable interface for the Simulink model rct_cascade and examine the block parametrization of one of the tunable blocks. open_system('rct_cascade') tunedblocks = {'C1','C2'}; ST0 = slTunable('rct_cascade',tunedblocks); TC = getBlockParam(ST0,'C1') These commands produce the result: Parametric continuous-time PID controller "rct_cascade_C1" with formula: 1 s Kp + Ki * --- + Kd * -------s Tf*s+1 and tunable parameters: Kp, Ki, Kd, Tf. The block C1 is a PID Controller block. Therefore, its parametrization in ST0 is a ltiblock.pid (a Control Design Block). See Also slTunable | slTunable.getBlockValue | slTunable.setBlockParam | genss | ltiblock.pid How To • “Supported Blocks for Tuning in Simulink” 8-159 slTunable.getBlockRateConversion Purpose Query rate conversion method of tunable block Syntax method = getBlockRateConversion(ST,block) [method,pwfreq] = getBlockRateConversion(ST,block) Description method = getBlockRateConversion(ST,block) returns the rate conversion method currently associated with a tunable block in an slTunable interface. [method,pwfreq] = getBlockRateConversion(ST,block) also returns the prewarp frequency, when method is 'tustin'. Tips • Use getBlockRateConversion to query the rate conversion method that the slTunable interface uses when converting the sampling time of the block parametrization. For example, you might use the slTunable interface to tune a mixed-rate Simulink model having a discrete-time controller and a continuous time plant. Tuning commands such as looptune or systune tune the model in continuous time. When you use writeBlockValue to write tuned parameters back to the Simulink model, writeBlockValue automatically discretizes the tuned parametrization using the block rate conversion method associated with the block. Input Arguments ST slTunable interface describing a Simulink model. block String identifying a single tunable block in the TunedBlocks property of ST. You can specify the block with an abbreviated block name, provided that the string matches the end of the full block path and unambiguously identifies the block. 8-160 slTunable.getBlockRateConversion Output Arguments method Discretization method associated with the tunable block, returned as one of the following: • 'zoh' — Zero-order hold method • 'tustin' — Tustin method pwfreq Prewarp frequency for the Tustin method, returned as a positive scalar. If the discretization method associated with the tunable block is zero-order hold or Tustin without prewarp, then pwfreq is 0. Examples Create an slTunable interface describing the Simulink model rct_dmcNotch. Query and change the rate conversion method associated with a tunable block in the model. Open the Simulink model. open_system('rct_dmcNotch') 8-161 slTunable.getBlockRateConversion Double-click the Tunable Digital Controller subsystem to see the tunable blocks. Create an slTunable interface for the model with the tunable blocks shown in orange. ST = slTunable('rct_dmcNotch',{'Gain','Leadlag','Notch'}); The LeadLag and Notch blocks are discrete-time blocks. You might tune this control system in continuous time (for example, using looptune or 8-162 slTunable.getBlockRateConversion systune), and write the tuned parameters back to the Simulink model. If you do so, slTunable.writeBlockValue automatically discretizes the resulting tuned blocks using the discretization method associated with the Simulink block. Query the discretization method associated with the Notch block. method = getBlockRateConversion(ST,'Notch') method = zoh The result shows that the zero-order-hold (zoh) method is currently associated with the Notch block. This block represents a notch filter. Therefore, you might get better discretization results using the Tustin discretization method with a prewarp at the notch frequency. Assume that the tuned notch frequency is 340 rad/s. wn = 340; setBlockRateConversion(ST,'Notch','tustin',wn) This command sets the rate conversion method of the Notch block to the Tustin method with a prewarp at the notch frequency. slTunable.writeBlockValue now discretizes the tuned block using this method. For a more detailed treatment of this example, see “Tuning of a Digital Motion Control System”. See Also slTunable | slTunable.writeBlockValue | slTunable.setBlockRateConversion Tutorials • “Tuning of a Digital Motion Control System” How To • “Continuous-Discrete Conversion Methods” 8-163 slTunable.getBlockValue Purpose Current value of a particular tuned block in slTunable interface Syntax val = getBlockValue(ST,block) Description val = getBlockValue(ST,block) returns the current value of the Tips • The slTunable interface automatically associates a parametric model with each Simulink block listed in the TunedBlocks property of ST. This parametrization expresses each tunable block as a Control Design Block or a tunable genss model. The parametrization specifies which parameters are tuned by commands such as slTunable.looptune. Use getBlockValue to access the value of this parametrization after tuning. parametrization of the Simulink block block. The string block should designate one of the tuned blocks in the control system described by the slTunable interface ST. • The current value of the block parametrization in the slTunable interface ST can differ from the actual value of the corresponding block in the Simulink model. Use slTunable.readBlockValue or slTunable.writeBlockValue to align the value of the parametrization in ST with the actual block value in the model. Input Arguments ST slTunable interface describing a Simulink model. block String identifying a single block in the TunedBlocks property of ST. You can specify the block with an abbreviated block name, provided that the string matches the end of the full block path and unambiguously identifies the block. Output Arguments 8-164 val Current value of the parametrization of block in ST. The current value is a numeric LTI model such as pid, ss, or tf. slTunable.getBlockValue Examples Create an slTunable interface for the Simulink model rct_cascade and examine the current value of the block parametrization of one of the tunable blocks. open_system('rct_cascade') tunedblocks = {'C1','C2'}; ST0 = slTunable('rct_cascade',tunedblocks); val = getBlockValue(ST0,'C1') These commands produce the result: Continuous-time PI controller in parallel form: 1 Kp + Ki * --s With Kp = 0.1, Ki = 0.1 The block C1 is a PID Controller block. Therefore, the value of its parametrization in ST0 is a pid controller model. Use getBlockValue after tuning an slTunable interface with slTunable.systune or slTunable.looptune. See Also slTunable | slTunable.getBlockParam | slTunable.setBlockParam | slTunable.setBlockValue | slTunable.writeBlockValue 8-165 slTunable.getIOTransfer Purpose Tunable model of closed-loop transfer function between specified inputs and outputs Syntax T = getIOTransfer(ST,input,output) T = getIOTransfer(ST,input,output,openings) T = getIOTransfer(ST) Description T = getIOTransfer(ST,input,output) returns the linearized closed-loop response of the control system described by the slTunable interface ST. The response T is a genss model of the response from input to output. T = getIOTransfer(ST,input,output,openings) computes T with feedback loops opened at the locations specified by openings. T = getIOTransfer(ST) returns the response from all inputs to all outputs. This syntax is equivalent to setting inputs and outputs to the union of the IOs, Controls, and Measurements properties of ST. Input Arguments ST slTunable interface describing a Simulink model. inputs String or cell array of strings specifying the signals that are inputs to the closed-loop response. Each signal in inputs must be present in the IOs, Controls, Measurements, or Switches properties of ST. For signals in ST.IOs, only signals of type in, inout, or outin can be used in inputs. The getIOTransfer command treats a signal in Controls, Measurements, or Switches as a disturbance signal entering at the specified location. You can specify an abbreviated signal path in inputs provided the string matches the end of the full signal path and unambiguously identifies the signal. Default: 0-by-1 cell array 8-166 slTunable.getIOTransfer outputs String or cell array of strings specifying the signals that are outputs of the closed-loop response. Each signal in outputs must be present in the IOs, Controls, or Measurements properties of the slTunable interface ST. For signals in ST.IOs, only signals of type out, inout, or outin can be used in outputs. You can specify an abbreviated signal path in outputs provided the string matches the end of the full signal path and unambiguously identifies the signal. Default: 0-by-1 cell array openings String or cell array of strings specifying the locations at which feedback loops are opened for the computation of T. Specify the locations as the names of signals listed in the Controls, Measurements, or Switches properties of ST. Loop openings listed in the Openings property of ST are always open. You can specify an abbreviated signal path in openings provided the string matches the end of the full signal path and unambiguously identifies the signal. Default: 0-by-1 cell array Output Arguments T Tunable genss model of the response from inputs input to outputs output. If input and output are omitted, T is the response from all inputs to all outputs listed in the IOs, Controls, and Measurements properties of ST. T captures the dependence of the response on the parameters of the tunable blocks in the TunedBlocks property of ST. The current values of the tunable parameters of T are equal to the current parameter values in ST. Therefore, you can use getIOTransfer 8-167 slTunable.getIOTransfer after tuning ST with slTunable.systune or slTunable.looptune to examine closed-loop responses of the tuned control system. See Also slTunable | slTunable.loopview | slTunable.getLoopTransfer | genss Tutorials • “Tuning Control Systems in Simulink” • “Tuning Multi-Loop Control Systems” • “Decoupling Controller for a Distillation Column” • “Tuning of a Digital Motion Control System” • “Fixed-Structure Autopilot for a Passenger Jet” 8-168 slTunable.getLoopTransfer Purpose Tunable model of open-loop transfer function at specified location Syntax L L L L Description L = getLoopTransfer(ST,location) returns the linearized = = = = getLoopTransfer(ST,location) getLoopTransfer(ST,location,sign) getLoopTransfer(ST,location,openings) getLoopTransfer(ST,location,openings,sign) point-to-point open-loop transfer function of the control system described by the slTunable interface ST. The point-to-point open-loop transfer function L is the open-loop response obtained by injecting signals at location and measuring the return signals at the same point. L = getLoopTransfer(ST,location,sign) specifies the feedback sign for computing the open-loop response. By default, L is the positive-feedback open-loop transfer function. Set sign to -1 to compute the negative-feedback open-loop transfer function. L = getLoopTransfer(ST,location,openings) computes L with additional loop openings at the locations specified by openings. L = getLoopTransfer(ST,location,openings,sign) specifies both additional loop openings and the sign. Input Arguments ST slTunable interface describing a Simulink model. location String or cell array of strings specifying signal locations at which to compute a point-to-point open loop transfer function. Each signal in location must be present in the Switches, Controls, or Measurements properties of the slTunable interface ST. Use a cell array to specify multiple locations and compute a MIMO loop transfer. 8-169 slTunable.getLoopTransfer You can specify an abbreviated signal path in location provided the string matches the end of the full signal path and unambiguously identifies the signal. sign Feedback sign. sign takes the following values: • +1 (default) — getLoopTransfer returns the positive-feedback open-loop transfer function, computed by injecting sine waves at the locations specified in location and measuring the return signals at the same point. The closed-loop transfer function is feedback(L,1,+1). • -1 — getLoopTransfer returns the negative-feedback open-loop transfer function. The negative-feedback transfer function is –1 times the positive-feedback transfer function. The closed-loop transfer function is feedback(L,1). Set sign to -1 if you intend to use the open-loop transfer function L in applications that assume the negative-feedback definition of L. Many classical design and analysis techniques use the negative-feedback convention. For example, the Nyquist or root locus design techniques usually assume that L is defined such that the closed-loop transfer function is feedback(L,1). Default: +1 openings String or cell array of strings specifying additional locations at which feedback loops are opened for the computation of L. Specify the locations as the names of signals listed in the Controls, Measurements, or Switches properties of ST. Loop openings listed in the Openings property of ST are always open. You can specify an abbreviated signal path in openings provided the string matches the end of the full signal path and unambiguously identifies the signal. 8-170 slTunable.getLoopTransfer Default: {0x1 cell} Output Arguments L Tunable genss model of the point-to-point response measured at location. If location is a cell array identifying multiple signals, L is a MIMO response. L captures the dependence of the response on the parameters of the tunable blocks in the TunedBlocks property of ST. The current values of the tunable parameters of L are equal to the current parameter values in L. Therefore, you can use getLoopTransfer after tuning ST with slTunable.systune or slTunable.looptune to examine open-loop responses of the tuned control system. See Also slTunable | slTunable.loopview | slTunable.getIOTransfer | genss Tutorials • “Validating Results” • “Tuning of a Digital Motion Control System” 8-171 slTunable.linearize Purpose Relinearize Simulink model to update slTunable interface Syntax linearize(ST0) blockvals = linearize(ST0) Description linearize(ST0) relinearizes the Simulink model described by the slTunable interface ST0. Use linearize to update the stored linear representation of the Simulink model in ST0 after you make changes to the Simulink model. The update to ST0 includes: • Updating the parametrization of the control architecture according to the blocks specified in the TunedBlocks property of ST0. Note To synchronize tuned block current values with the Simulink model, use slTunable.readBlockValue. • Evaluating the fixed (nontunable) portion of the control system. • Computing a new linearization of the Simulink model, using the I/Os specified in the IOs, Openings, and Switches properties of ST0, respectively. The new linearization uses the operating point and linearization options specified in the OperatingPoint and LinearizeOptions properties of ST0, respectively. blockvals = linearize(ST0) returns a cell array containing the current values from the Simulink model of the tunable blocks stored in the TunedBlocks property of STO. Tips 8-172 • You do not need to use slTunable.linearize every time you change properties of the slTunable interface. Commands that query the linearization stored in the slTunable interface automatically relinearize the Simulink model if you have changed any properties of ST0 since the last linearization. These commands include slTunable.systune,slTunable.looptune, slTunable.getIOTransfer, and slTunable.getLoopTransfer. You slTunable.linearize can optionally use slTunable.linearize to force relinearization or control when relinearization occurs. Input Arguments ST0 Output Arguments blockvals Examples Update the linearization in an slTunable interface to use new linearization options. slTunable interface describing the control system to be tuned. Current values of the tunable blocks of ST0. blockvals is a cell array of state-space (ss) models. Each entry in blockvals is the current value of the corresponding entry in the TunedBlocks property of ST0. Create the slTunable interface. open_system('rct_cascade'); tunedblocks = {'C1','C2'}; ST0 = slTunable('rct_cascade',tunedblocks); Create a linearization options set, and update the linearization stored in STO. opts = linoptions('BlockReduction','off'); ST0.LinearizeOptions = opts; linearize(ST0); The linearization uses the options stored in the LinearizeOptions property of ST0. Algorithms slTunable.linearize linearizes your Simulink model using the algorithms described in “Exact Linearization Algorithm” on page 2-146. 8-173 slTunable.linearize See Also 8-174 slTunable | slTunable.systune | slTunable.looptune | slTunable.getLoopTransfer | slTunable.getIOTransfer | slTunable.readBlockValue | linearize slTunable.looptune Purpose Tune MIMO feedback loops in Simulink Syntax [ST,gam,info] = looptune(ST0,wc) [ST,gam,info] = looptune(ST0,wc,Req1,Req2,...) [ST,gam,info] = looptune(...,options) Description [ST,gam,info] = looptune(ST0,wc) tunes the Simulink control system described by the slTunable interface ST0 to meet the following default requirements: • Bandwidth — Gain crossover for each loop falls in the frequency interval wc • Performance — Integral action at frequencies below wc • Robustness — Adequate stability margins and gain roll-off at frequencies above wc [ST,gam,info] = looptune(ST0,wc,Req1,Req2,...) tunes the feedback loop to meet additional design requirements specified in one or more tuning goal objects Req. Omit wc to use the requirements specified in the Req objects instead of an explicit target crossover frequency and the default performance and robustness requirements. [ST,gam,info] = looptune(...,options) specifies further options, including target gain margin, target phase margin, and computational options for the tuning algorithm. Tips • slTunable.looptune allows you to use the Robust Control Toolbox tuning command looptune on a control system described in a Simulink model. Using slTunable provides an interface between the Simulink model and the looptune command, allowing you to identify the tunable components of the system for looptune to tune. Using slTunable.looptune requires Robust Control Toolbox software. 8-175 slTunable.looptune Input Arguments ST0 slTunable interface object representing the Simulink control system to tune. For information on how to create and configure the slTunable interface, see the slTunable reference page. wc Vector specifying the target crossover region [wcmin,wcmax]. The looptune command attempts to tune all loops in the control system so that the open-loop gain crosses 0 dB within the target crossover region. A scalar wc specifies the target crossover region [wc/2,2*wc]. Req One or more TuningGoal objects specifying design requirements. Available requirement types include: • TuningGoal.Tracking — Setpoint tracking requirement • TuningGoal.Gain — Limit on transfer function gain • TuningGoal.LoopShape — Target shape for open-loop response For a complete list of the design requirements you can specify, see “Performance and Robustness Specifications for looptune”. options Set of options for the looptune algorithm, specified using looptuneOptions. See looptuneOptions for information about the available options, including target gain margin and phase margin. Output Arguments ST Tuned version of ST0. Use slTunable.loopview to graphically validate the design. Use slTunable.writeBlockValue to apply the tuned parameter values to the Simulink model. 8-176 slTunable.looptune gam Parameter indicating degree of success at meeting all tuning constraints. A value of gam <= 1 indicates that all requirements are satisfied. A value of gam >> 1 indicates failure to meet at least one requirement. Use slTunable.loopview to visualize the tuned result and identify the unsatisfied requirement. For best results, use the RandomStart option in looptuneOptions to obtain several minimization runs. Setting RandomStart to an integer N > 0 causes looptune to run the optimization N additional times, beginning from parameter values it chooses randomly. You can examine gam for each run to help identify an optimization result that meets your design requirements. info Structure containing the following tuning data: • Optimal I/O scalings Di and Do • Requirement parameters and weighting functions To use the data in info, use the command loopview(ST,info) to visualize tuning constraints and validate the tuned design. See slTunable.loopview for more information. See Also slTunable | TuningGoal.Tracking | TuningGoal.Gain | TuningGoal.LoopShape | slTunable.systune | slTunable.loopview | slTunable.getLoopTransfer | slTunable.getIOTransfer | slTunable.writeBlockValue | looptuneOptions Tutorials • “Tuning Control Systems in Simulink” • “Decoupling Controller for a Distillation Column” • “Tuning of a Digital Motion Control System” • “Tuning of a Two-Loop Autopilot” 8-177 slTunable.looptune How To • “How looptune Sees a Control System” • “Set Up Your Control System for Tuning with looptune” • “Performance and Robustness Specifications for looptune” 8-178 slTunable.loopview Purpose Graphically analyze results of control system tuning Syntax loopview(ST) loopview(ST,info) Description loopview(ST) plots characteristics of the control system described by the slTunable interface ST. Use loopview to analyze the performance of a tuned control system you obtain using slTunable.looptune. loopview plots the singular values of: • Open-loop frequency responses G*C and C*G. The controller C and plant G are the linearized portions of the Simulink model defined by the Controls and Measurements properties of ST. • Sensitivity function S = inv(1+G*C) and complementary sensitivity T = 1-S • Normalized multi-loop disk margins (see loopmargin). loopview plots the: - Maximum stability margin Tuned (optimized) stability margin Actual (achieved) stability margin Use the stability margin plot to verify that the tuned control system has the desired stability margin. The normalized margin value should be less than 1 at all frequencies. For more information about singular values, see sigma. loopview(ST,info) uses the info structure returned by slTunable.looptune. This syntax also plots the target and tuned values of tuning constraints imposed on the system. Additional plots include: 8-179 slTunable.loopview • Maximum allowed singular values for the sensitivity functions S and T. The curve marked S/T Max shows the maximum allowed S on the low-frequency side of the plot, and the maximum allowed T on the high-frequency side. These curves are the constraints that looptune imposes on S and T to enforce the target crossover range wc. • Target and tuned values of constraints imposed by any tuning goal requirements you used with looptune. Use loopview with the info structure to assist in troubleshooting when tuning fails to meet all requirements. Input Arguments ST slTunable interface describing the Simulink model to analyze. info info structure returned by slTunable.looptune during control system tuning. Alternatives For analyzing Control System Toolbox models tuned with looptune, use loopview. See Also looptune | loopview | slTunable.looptune Tutorials • “Decoupling Controller for a Distillation Column” • “Tuning of a Two-Loop Autopilot” 8-180 slTunable.readBlockValue Purpose Update tuned block values from Simulink model Syntax readBlockValue(ST) readBlockValue(ST,block) Description readBlockValue(ST) updates the current value of the block parametrization of the interface ST to match the blocks values in the corresponding Simulink model. This command only updates Simulink blocks parametrized by Control Design Blocks. For information about block parametrization, see slTunable.getBlockParam. readBlockValue(ST,block) updates parameters only for the block or blocks specified by block. Input Arguments ST slTunable interface describing a Simulink model. block String or cell array of strings identifying blocks in the TunedBlocks property of ST to update with values read from the Simulink model. You can specify a block with an abbreviated block name, provided that the string matches the end of the full block path and unambiguously identifies the block. See Also slTunable | slTunable.writeBlockValue | slTunable.getBlockParam | slTunable.getBlockValue | slTunable.setBlockValue | slTunable.showBlockValue 8-181 slTunable.setBlockParam Purpose Specify parametrization for specified tuned block Syntax setBlockParam(ST,block,TC) Description setBlockParam(ST,block,TC) assigns the tunable model TC as the parametrization of the tunable block, block, of the slTunable interface ST. Using setBlockParam overrides the default parametrization for the specified block. Doing so defines how the block should be parametrized and which parameters of the block are tuned by tuning commands involving ST. Tips • The slTunable interface stores a parametrization of each blocks listed in the TunedBlocks property of the interface. This parametrization specifies which parameters are tuned by commands such as slTunable.looptune. Use setBlockParam to override the default block parametrization or specify how to parametrize composite Simulink blocks such as subsystems. • In some cases, slTunable.writeBlockValue cannot write tuned parameter values from a custom parametrization to the Simulink model. slTunable.writeBlockValue can only write tuned parameter values when the value is compatible with the default parametrization. For example, you might override the default parametrization of a static Gain block (ltiblock.gain) with a transfer function, (ltiblock.tf). In that case, slTunable.writeBlockValue errors unless the current value of the custom parametrization transfer function is a static gain. Input Arguments ST slTunable interface describing a Simulink model. block String identifying a single block in the TunedBlocks property of ST. You can specify the block with an abbreviated block name, provided that the string matches the end of the full block path and unambiguously identifies the block. 8-182 slTunable.setBlockParam TC Parametrization to assign to block. Express the parametrization as a tunable Control Design Block or genss model. Examples Create an slTunable interface describing the Simulink model rct_concorde and specify the parametrization of a tunable block. Open the Simulink model. open_system('rct_concorde') Create an slTunable interface for the model with the tunable blocks shown in orange. ST = slTunable('rct_concorde',{'Ki','Kp','Kq','Kf','RollOff'}); Examine the default parametrization of the filter block Rolloff. 8-183 slTunable.setBlockParam getBlockParam(ST,'RollOff') Parametric continuous-time transfer function "rct_concorde_RollOff". This transfer function has 0 zeros, 2 poles, and 3 tunable parameters. Use "tf(M)" to see the current value and "get(M)" to see all properties. The default parametrization is a generic second-order transfer function in which all coefficients are free to vary independently. The desired parametrization is a second-order filter where the coefficients are constrained by the relationship Fro s n2 s2 2 nn s n2 . Create a genss model representing the desired parametrization, and set it as the parametrization of the 'RollOff' block in ST. wn = realp('wn', 3); zeta = realp('zeta',0.8); Fro = tf(wn^2,[1 2*zeta*wn wn^2]); setBlockParam(ST,'RollOff',Fro) Tuning commands such as slTunable.systune now use this constrained parametrization of the RollOff block of ST. This custom parametrization is compatible with the default parametrization of the Simulink block. Therefore, you can use slTunable.writeBlockValue to write the tuned values back to the block. See Also slTunable | slTunable.getBlockValue | slTunable.getBlockParam | slTunable.writeBlockValue | slTunable.systune | genss How To • “Supported Blocks for Tuning in Simulink” 8-184 slTunable.setBlockRateConversion Purpose Set rate conversion method of tunable block Syntax setBlockRateConversion(ST,block,method) setBlockRateConversion(ST,block,method,pwfreq) Description setBlockRateConversion(ST,block,method) sets the rate conversion method currently associated with a tunable block in an slTunable interface. setBlockRateConversion(ST,block,method,pwfreq) also sets the prewarp frequency, when method is 'tustin'. Tips • Use setBlockRateConversion to query the rate conversion method that the slTunable interface uses when converting the sampling time of the block parametrization. For example, you might use the slTunable interface to tune a mixed-rate Simulink model having a discrete-time controller and a continuous time plant. Tuning commands such as looptune or systune tune the model in continuous time. When you use writeBlockValue to write tuned parameters back to the Simulink model, writeBlockValue automatically discretizes the tuned parametrization using the block rate conversion method associated with the block. For information about choosing discretization methods, see “Continuous-Discrete Conversion Methods”. Input Arguments ST slTunable interface describing a Simulink model. block String identifying a single tunable block in the TunedBlocks property of ST. You can specify the block with an abbreviated block name, provided that the string matches the end of the full block path and unambiguously identifies the block. method 8-185 slTunable.setBlockRateConversion Discretization method associated with the tunable block, specified as one of the following: • 'zoh' — Zero-order hold method • 'tustin' — Tustin method pwfreq Prewarp frequency for the Tustin method, specified as a positive scalar. For Tustin without prewarp, use pwfreq = 0. For zero-order hold, pwfreq is ignored. Default: 0 Examples Create an slTunable interface describing the Simulink model rct_dmcNotch. Query and change the rate conversion method associated with a tunable block in the model. Open the Simulink model. open_system('rct_dmcNotch') 8-186 slTunable.setBlockRateConversion Double-click the Tunable Digital Controller subsystem to see the tunable blocks. Create an slTunable interface for the model with the tunable blocks shown in orange. ST = slTunable('rct_dmcNotch',{'Gain','Leadlag','Notch'}); The LeadLag and Notch blocks are discrete-time blocks. You might tune this control system in continuous time (for example, using looptune or 8-187 slTunable.setBlockRateConversion systune), and write the tuned parameters back to the Simulink model. If you do so, slTunable.writeBlockValue automatically discretizes the resulting tuned blocks using the discretization method associated with the Simulink block. Query the discretization method associated with the Notch block. method = getBlockRateConversion(ST,'Notch') method = zoh The result shows that the zero-order-hold (zoh) method is currently associated with the Notch block. This block represents a notch filter. Therefore, you might get better discretization results using the Tustin discretization method with a prewarp at the notch frequency. Assume that the tuned notch frequency is 340 rad/s. wn = 340; setBlockRateConversion(ST,'Notch','tustin',wn) This command sets the rate conversion method of the Notch block to the Tustin method with a prewarp at the notch frequency. slTunable.writeBlockValue now discretizes the tuned block using this method. For a more detailed treatment of this example, see “Tuning of a Digital Motion Control System”. See Also slTunable | slTunable.writeBlockValue | slTunable.getBlockRateConversion Tutorials • “Tuning of a Digital Motion Control System” How To • “Continuous-Discrete Conversion Methods” 8-188 slTunable.setBlockValue Purpose Set current value of parametrization for specified block Syntax setBlockValue(ST,block,val) setBlockValue(ST,M) Description setBlockValue(ST,block,val) sets to val the current value of the parametrization of the Simulink block block in the slTunable interface ST. The parametrization of block must be a tunable Control Design Block. setBlockValue(ST,M) updates the current values of the tunable parameters in ST to match the corresponding values of tunable parameters in the Generalized LTI Model M. Only parameters common to ST and M are updated. Use this syntax to update ST after obtaining M by tuning with commands such as systune, looptune, or hinsfstruct. Tips • The slTunable interface automatically associates a parametric model with each Simulink block listed in the TunedBlocks property of ST. This parametrization expresses each tunable block as a Control Design Block or a tunable genss model. The parametrization specifies which parameters are tuned by commands such as slTunable.looptune. Use slTunable.getBlockValue to access the current value of this parametrization. • You can use setBlockValue to initialize the tunable parameters of blocks parametrized by Control Design Blocks before tuning ST with a tuning command such as slTunable.systune or slTunable.looptune. Input Arguments ST slTunable interface describing a Simulink model. block String identifying a single block in the TunedBlocks property of ST. You can specify the block with an abbreviated block name, provided that the string matches the end of the full block path and unambiguously identifies the block. 8-189 slTunable.setBlockValue val New initial or current value for the block parametrization. The value val can be any value that is compatible with the parametrization of block without changing the size, type, or sampling time the parametrization of block. For example, if the parametrization of block is a ltiblock.pid model, valid types for val include ltiblock.pid, a numeric pid controller model, or a numeric tf model that represents a PID controller. setBlockValue uses the parameter values of val to set the current value of the parametrization of block. setBlockValue changes the current value of the block parametrization but does not change the parametrization itself. To change the parametrization (for example, to change the block parametrization from ltiblock.pid to a three-pole ltiblock.tf), use slTunable.setBlockParam. M Generalized LTI Model that has at least some parameters in common with ST. See Also slTunable | slTunable.getBlockParam | slTunable.setBlockParam | slTunable.getBlockValue | slTunable.writeBlockValue Tutorials • “Fixed-Structure Autopilot for a Passenger Jet” 8-190 slTunable.showBlockValue Purpose Display current value of block parametrizations Syntax showBlockValue(ST) Description showBlockValue(ST) is the same as showTunable(ST) for slTunable See Also slTunable.showTunable interface objects. 8-191 slTunable.showTunable Purpose Display current value of block parametrizations Syntax showTunable(ST) Description showTunable(ST) displays the current values of the parametric models associate with each tunable block in the slTunable interface ST. Tips • The slTunable interface automatically associates a parametric model with each Simulink block listed in the TunedBlocks property of ST. This parametrization expresses each tunable block as a Control Design Block or a tunable genss model. The showBlockValue command displays the current values of these tunable blocks. Input Arguments ST Examples Create an slTunable interface describing the Simulink model rct_concorde and display the values of the parametrizations of the tunable blocks. slTunable interface describing a Simulink model. Open the Simulink model. open_system('rct_concorde') 8-192 slTunable.showTunable Create an slTunable interface for the model with the tunable blocks shown in orange. ST = slTunable('rct_concorde',{'Ki','Kp','Kq','Kf','RollOff'}); Examine the default parametrization values of the blocks. showTunable(ST) Block "rct_concorde/Ki" = d = y1 u1 0 Static gain. ----------------------------------Block "rct_concorde/Kp" = 8-193 slTunable.showTunable d = y1 u1 0 Static gain. ----------------------------------Block "rct_concorde/Kq" = d = y1 u1 0 Static gain. ----------------------------------Block "rct_concorde/Kf" = d = y1 u1 0 Static gain. ----------------------------------Block "rct_concorde/RollOff" = Transfer function: 9 --------------s^2 + 4.8 s + 9 The default parametrization for the four gain blocks is a static gain, with current value 0. The default parametrization for the filter RollOff is a second-order transfer function. 8-194 slTunable.showTunable Use slTunable.setBlockValue to change the current values of the parameters. Use slTunable.setBlockParam to change the parametrization. See Also slTunable | slTunable.writeBlockValue | slTunable.getBlockValue | slTunable.setBlockValue | slTunable.readBlockValue 8-195 slTunable.systune Purpose Tune fixed-structure control system parameters in Simulink Syntax [ST,fSoft] = systune(ST0,SoftReqs) [ST,fSoft,gHard] = systune(ST0,SoftReqs,HardReqs) [ST,fSoft,gHard] = systune(ST0,SoftReqs,HardReqs,options) [ST,fSoft,gHard,info] = systune( ___ ) Description [ST,fSoft] = systune(ST0,SoftReqs) tunes the free parameters of the Simulink control system described by the slTunable interface ST0. The systune command tunes the parameters subject to the soft tuning requirements SoftReqs, and returns the best achieved soft constraint values as fSoft. [ST,fSoft,gHard] = systune(ST0,SoftReqs,HardReqs) tunes the control system to minimize the soft tuning requirements subject to hard tuning requirements (constraints), and returns the best achieved values for the hard constraints. [ST,fSoft,gHard] = systune(ST0,SoftReqs,HardReqs,options) specifies options for the optimization. [ST,fSoft,gHard,info] = systune( ___ ) also returns detailed information about each optimization run. Tips • slTunable.systune allows you to use the Robust Control Toolbox tuning command systune on a control system described in a Simulink model. Using slTunable provides an interface between the Simulink model and the systune command, allowing you to identify the tunable components of the system for systune to tune. Using slTunable.systune requires Robust Control Toolbox software. Input Arguments ST0 slTunable interface object representing the Simulink control system to tune. For information on how to create and configure the slTunable interface, see the slTunable reference page. SoftReqs 8-196 slTunable.systune Soft tuning requirements (objectives) for tuning the control system, specified as a vector of TuningGoal requirement objects such as TuningGoal.Tracking, TuningGoal.Gain, or TuningGoal.Margins. (See “Specifying Design Requirements for systune” for a complete list.) systune tunes the tunable parameters of the control system to minimize the soft tuning requirements, subject to the hard tuning requirements (if any). HardReqs Hard tuning requirements (constraints) for tuning the control system, specified as a vector of TuningGoal requirement objects such as TuningGoal.Tracking, TuningGoal.Gain, or TuningGoal.Margins. (See “Specifying Design Requirements for systune” for a complete list.) systune converts each hard tuning requirement to a normalized scalar value. systune then optimizes the free parameters minimize those normalized values. Default: [] options Options for the tuning algorithm, specified as an options set you create with systuneOptions. Available options include: • Number of additional optimizations to run starting from random initial values of the free parameters • Tolerance for terminating the optimization • Flag for using parallel processing Output Arguments ST Tuned version of ST0. 8-197 slTunable.systune Use viewSpec to graphically validate the design. Use slTunable.writeBlockValue to apply the tuned parameter values to the Simulink model. fSoft Best achieved soft constraint values, returned as a vector. systune converts the soft requirements to a function of the free parameters of the control system. The command then tunes the parameters to minimize that function subject to the hard constraints. (See “Algorithms” on page 8-201.) fSoft contains the best achieved value for each of the soft constraints, in order of the constraints in SoftReqs. fSoft values are only meaningful when the hard constraints are satisfied. gHard Best achieved hard constraint values, returned as a vector. systune converts the hard requirements to a function of the free parameters of the control system. The command then tunes the parameters to drive those values below 1. (See “Algorithms” on page 8-201.) gHard contains the best achieved value for each of the hard constraints, in order of the constraints in HardReqs. If all values are less than 1, then the hard constraints are satisfied. info Detailed information about each optimization run, returned as a data structure. In addition to examining detailed results of the optimization, you can use info as an input to viewSpec when validating a tuned MIMO system. info contains scaling data that viewSpec needs for correct evaluation of MIMO open-loop requirements such as loop shapes and stability margins. The fields of info are: Run Run number, returned as a scalar. If you use the RandomStart option of systuneOptions to perform multiple 8-198 slTunable.systune optimization runs, info is a struct array, and info.Run is the index. Iterations Total number of iterations performed during run, returned as a scalar. fBest Best overall soft constraint value, returned as a scalar. systune converts the soft requirements to a function of the free parameters of the control system. The command then tunes the parameters to minimize that function subject to the hard constraints. (See “Algorithms” on page 8-201.) info.fBest is the maximum soft constraint value at the final iteration. This value is only meaningful when the hard constraints are satisfied. gBest Best overall hard constraint value, returned as a scalar. systune converts the hard requirements to a function of the free parameters of the control system. The command then tunes the parameters to drive those values below 1. (See “Algorithms” on page 8-201.) info.gBest is the maximum hard constraint value at the final iteration. This value must be less than 1 for the hard constraints to be satisfied. fSoft Individual soft constraint values, returned as a vector. systune converts each soft requirement to a normalized value that is a function of the free parameters of the control system. The command then tunes the parameters to minimize that value subject to the hard constraints. (See “Algorithms” on page 8-201.) info.fSoft contains the individual values of the soft constraints at the end of each run. The values are in order of the constraints in SoftReqs. gHard 8-199 slTunable.systune Individual hard constraint values, returned as a vector. systune converts each hard requirement to a normalized value that is a function of the free parameters of the control system. The command then tunes the parameters to minimize those values. A hard requirement is satisfied if its value is less than 1. (See “Algorithms” on page 8-201.) info.gHard contains the individual values of the hard constraints at the end of each run. The values are in order of the constraints in HardReqs. MinDecay Minimum decay rate of closed-loop poles, returned as a vector. By default, closed-loop pole locations of the tuned system are constrained to satisfy Re(p) < –10–7. Use the MinDecay option of systuneOptions to change this constraint. Blocks Tuned values of tunable blocks and parameters in the tuned control system CL, returned as a structure. You can also use getBlockValue or showBlockValue to access the tuned parameter values. LoopScaling Optimal diagonal scaling for evaluating MIMO tuning requirements, returned as a state-space model. When applied to multiloop control systems, TuningGoal.LoopShape and TuningGoal.Margins requirements can be sensitive to the scaling of the individual loop transfer functions to which they apply. systune automatically corrects scaling issues and returns the optimal diagonal scaling matrix d as a state-space model in info.LoopScaling. The loop channels associated with each diagonal entry of D are listed in info.LoopScaling.InputName. The scaled 8-200 slTunable.systune loop transfer is D\L*D, where L is the open-loop transfer measured at the locations info.LoopScaling.InputName. Algorithms Let x be the vector of tunable parameters in the control system to tune. systune converts each soft and hard tuning requirement SoftReqs(i) and HardReqs(j) into normalized values fi(x) and gj(x), respectively. systune then solves the minimization problem: Minimize max fi x subject to max g j x 1 , for xmin x xmax . i j xmin and xmax are the minimum and maximum values of the free parameters. systune returns a control system ST with parameters tuned to the values that best solve the minimization problem. systune also returns the best achieved values of fi(x) and gj(x), as fSoft and gHard respectively. For information about the functions fi(x) and gj(x) for each type of constraint, see the reference pages for each TuningGoal requirement object. For information about the optimization algorithms, see [1]. systune computes the H∞ norm using the algorithm of [2] and structure-preserving eigensolvers from the SLICOT library. For more information about the SLICOT library, see http://slicot.org. Examples Tune Control System to Soft Constraints Tune the following control system to soft requirements for tracking, roll-off, stability margin, and disturbance rejection. 8-201 slTunable.systune Create and configure an slTunable interface to the model. open_system('rct_airframe2') ST0 = slTunable('rct_airframe2','MIMO Controller'); addControl(ST0,'delta fin'); These commands create an slTunable interface to the model and specify the MIMO Controller block as the tunable portion of the control system. The model already has linearization input points on the signals az ref, delta fin, and az. These signals are therefore available for specifying as inputs for tuning requirements. Similarly, you can use the linearization output points e and az is outputs for tuning requirements. The addControl command adds delta fin to the Controls signals of the slTunable interface. Doing so makes delta fin available as both input and output for specifying tuning requirements. Specify tuning requirements for tracking, roll-off, stability margin, and disturbance rejection. Req1 = TuningGoal.Tracking('az ref','az',1); Req2 = TuningGoal.Gain('delta fin','delta fin',tf(25,[1 0])); Req3 = TuningGoal.Margins('delta fin',7,45); 8-202 slTunable.systune MaxGain = frd([2 200 200],[0.02 2 200]); Req4 = TuningGoal.Gain('delta fin','az',MaxGain); Req1 constrains az to track az ref. The requirement Req2 imposes a roll-off requirement by specifying a gain profile for the open-loop point-to-point transfer function measured at delta fin. The requirement Req3 imposes open-loop gain and phase margins on that same point-to-point transfer function. Finally, Req4 rejects disturbances to az injected at delta fin, by specifying a maximum gain profile between those two points. Tune the model using these tuning requirements. Options = systuneOptions('RandomStart',3); [ST1,fSoft,~,Info] = systune(ST0,[Req1,Req2,Req3,Req4],Options); Final: Soft = 1.13, Hard = -Inf, Iterations = 55 Final: Soft = 1.5, Hard = -Inf, Iterations = 75 Final: Soft = 1.13, Hard = -Inf, Iterations = 92 ST1 is a tuned version of the slTunable interface to the control system that contains the tuned values of the tunable parameters of the MIMO controller in the model. The RandomStart option causes systune to perform three independent optimization runs beginning at different random values of the tunable parameters. The displayed value Soft is the largest normalized soft constraint value for each optimization run. Examine the best achieved values of the soft constraints. fSoft = 1.1327 1.1327 0.5140 1.1327 Only Req3, the stability margin requirement, is met for all frequencies. The other values are close to but exceed 1, indicating violations of the requirements for at least some frequencies. Use viewSpec to visualize 8-203 slTunable.systune the tuned control system performance against the requirements, and to determine whether the violations are acceptable. References [1] P. Apkarian and D. Noll, "Nonsmooth H-infinity Synthesis." IEEE Transactions on Automatic Control, Vol. 51, Number 1, 2006, pp. 71–86. [2] Bruisma, N.A. and M. Steinbuch, "A Fast Algorithm to Compute the H∞-Norm of a Transfer Function Matrix," System Control Letters, 14 (1990), pp. 287-293. See Also slTunable | systune | TuningGoal.Tracking | TuningGoal.Gain | TuningGoal.Margins | TuningGoal.WeightedGain | TuningGoal.Variance | TuningGoal.WeightedVariance | TuningGoal.LoopShape | TuningGoal.Poles | TuningGoal.StableController How To • “Specifying Design Requirements for systune” • “Tuning Control Systems in Simulink” • “Control of a Linear Electric Actuator” • “Multi-Loop Controller for the Westland Lynx Helicopter” • “Reliable Control of a Fighter Jet” 8-204 slTunable.writeBlockValue Purpose Update block values in Simulink model Syntax writeBlockValue(ST) writeBlockValue(ST,block) Description writeBlockValue(ST) writes tuned parameter values from the control system description ST to the Simulink model that ST describes. writeBlockValue(ST,block) updates only the block or blocks specified by block. Tips • Use writeBlockValue to apply tuned parameter values to the Simulink model, for example for validating tuned values in the full nonlinear model. • writeBlockValue skips blocks that: - Input Arguments Have no default parametrization Have a parametrization specified with slTunable.setBlockParam that is not compatible with the default parametrization. For example, you might specify the parametrization of a susbsystem or S-Function block in your model. In that case, slTunable.writeBlockValue cannot write the tuned parameter values to the model. ST slTunable interface describing a Simulink model. block String or cell array of strings identifying blocks in the TunedBlocks property of ST to write back to the Simulink model. You can specify a block with an abbreviated block name, provided that the string matches the end of the full block path and unambiguously identifies the block. See Also slTunable | slTunable.readBlockValue | slTunable.getBlockValue | slTunable.setBlockValue | slTunable.showBlockValue 8-205 slTunable.writeBlockValue Tutorials • “Tuning of a Digital Motion Control System” • “Control of a Linear Electric Actuator” How To 8-206 • “Supported Blocks for Tuning in Simulink” update Purpose Update operating point object with structural changes in model Syntax update(op) Alternatives As an alternative to the update function, update operating point objects using the Sync with Model button in the Simulink Control Design GUI. Description update(op) updates an operating point object, op, to reflect any changes in the associated Simulink model, such as states being added or removed. Examples Open the magball model: magball Create an operating point object for the model: op=operpoint('magball') This syntax returns: Operating Point for the Model magball. (Time-Varying Components Evaluated at time t=0) States: ---------(1.) magball/Controller/PID Controller/Filter x: 0 (2.) magball/Controller/PID Controller/Integrator x: 14 (3.) magball/Magnetic Ball Plant/Current x: 7 (4.) magball/Magnetic Ball Plant/dhdt x: 0 (5.) magball/Magnetic Ball Plant/height x: 0.05 8-207 update Inputs: None ---------- Add an Integrator block to the model, as shown in the following figure. Update the operating point to include this new state: update(op) The new operating point appears: Operating Point for the Model magball. (Time-Varying Components Evaluated at time t=0) States: ---------(1.) magball/Controller/PID Controller/Filter x: 0 (2.) magball/Controller/PID Controller/Integrator x: 14 (3.) magball/Magnetic Ball Plant/Current x: 7 (4.) magball/Magnetic Ball Plant/dhdt x: 0 (5.) magball/Magnetic Ball Plant/height 8-208 update x: 0.05 (6.) magball/Integrator x: 0 Inputs: None ---------- See Also operpoint | operspec 8-209 update 8-210 9 Block Reference Operating Points (p. 9-2) Compute operating points Linear Analysis Plots (p. 9-3) Plot linear systems Model Verification (p. 9-4) Perform model verification 9 Block Reference Operating Points Trigger-Based Operating Point Snapshot 9-2 Generate operating points, linearizations, or both at triggered events Linear Analysis Plots Linear Analysis Plots Bode Plot Bode plot of linear system approximated from nonlinear Simulink model Gain and Phase Margin Plot Gain and phase margins of linear system approximated from nonlinear Simulink model Linear Step Response Plot Step response of linear system approximated from nonlinear Simulink model Nichols Plot Nichols plot of linear system approximated from nonlinear Simulink model Pole-Zero Plot Pole-zero plot of linear system approximated from nonlinear Simulink model Singular Value Plot Singular value plot of linear system approximated from nonlinear Simulink model 9-3 9 Block Reference Model Verification 9-4 Check Bode Characteristics Check that Bode magnitude bounds are satisfied during simulation Check Gain and Phase Margins Check that gain and phase margin bounds are satisfied during simulation Check Linear Step Response Characteristics Check that step response bounds on linear system are satisfied during simulation Check Nichols Characteristics Check that gain and phase bounds on Nichols response are satisfied during simulation Check Pole-Zero Characteristics Check that bounds on pole locations are satisfied during simulation Check Singular Value Characteristics Check that singular value bounds are satisfied during simulation 10 Blocks — Alphabetical List Bode Plot Purpose Bode plot of linear system approximated from nonlinear Simulink model Library Simulink Control Design Description This block is same as the Check Bode Characteristics block except for different default parameter settings in the Bounds tab. Compute a linear system from a nonlinear Simulink model and plot the linear system on a Bode plot. During simulation, the software linearizes the portion of the model between specified linearization inputs and outputs, and plots the magnitude and phase of the linear system. The Simulink model can be continuous- or discrete-time or multirate, and can have time delays. The linear system can be Single-Input Single-Output (SISO) or Multi-Input Multi-Output (MIMO). For MIMO systems, the plots for all input/output combinations are displayed. You can specify piecewise-linear frequency-dependent upper and lower magnitude bounds and view them on the Bode plot. You can also check that the bounds are satisfied during simulation: • If all bounds are satisfied, the block does nothing. • If a bound is not satisfied, the block asserts, and a warning message appears at the MATLAB prompt. You can also specify that the block: - Evaluate a MATLAB expression. Stop the simulation and bring that block into focus. During simulation, the block can also output a logical assertion signal: • If all bounds are satisfied, the signal is true (1). • If a bound is not satisfied, the signal is false (0). For MIMO systems, the bounds apply to the Bode responses of linear systems computed for all input/output combinations. 10-2 Bode Plot You can add multiple Bode Plot blocks to compute and plot the magnitude and phase of various portions of the model. You can save the linear system as a variable in the MATLAB workspace. The block does not support code generation and can be used only in Normal simulation mode. Parameters The following table summarizes the Bode Plot block parameters, accessible via the block parameter dialog box. Parameters Task Configure linearization. Specify inputs and outputs (I/Os). In Linearizations tab: • “Linearization inputs/outputs” on page 10-287. • “Click a signal in the model to select it” on page 10-290. Specify settings. In Linearizations tab: • “Linearize on” on page 10-294. • “Snapshot times” on page 10-296. • “Trigger type” on page 10-297. Specify algorithm options. In Algorithm Options of Linearizations tab: • “Enable zero-crossing detection” on page 10-298. • “Use exact delays” on page 10-300. • “Linear system sample time” on page 10-301. 10-3 Bode Plot Parameters Task • “Sample time rate conversion method” on page 10-303. • “Prewarp frequency (rad/s)” on page 10-306. Specify labels for linear system I/Os and state names. In Labels of Linearizations tab: • “Use full block names” on page 10-307. • “Use bus signal names” on page 10-309. Plot the linear system. Show Plot (Optional) Specify bounds on magnitude of the linear system for assertion. In Bounds tab: • “Include upper magnitude bound in assertion” on page 10-30. • “Include lower magnitude bound in assertion” on page 10-36. Specify assertion options (only when you specify bounds on the linear system). In Assertion tab: • “Enable assertion” on page 10-325. • “Simulation callback when assertion fails (optional)” on page 10-327. • “Stop simulation when assertion fails” on page 10-328. • “Output assertion signal” on page 10-329. 10-4 Bode Plot Task Parameters Save linear system to MATLAB workspace. “Save data to workspace” on page 10-323 in Logging tab. Display plot window instead of block parameters dialog box on double-clicking the block. “Show plot on block open” on page 10-331. Linearization inputs/outputs Linearization inputs and outputs that define the portion of a nonlinear Simulink model to linearize. 1 Click . The dialog box expands to display a Click a signal in the model to select it area and a new button. 2 Select a signal in the Simulink Editor. The selected signal appears as a Model signal in the Click a signal in the model to select it area. 3 (Optional) For buses, expand the bus signal to select an individual element. 10-5 Bode Plot Tip For large buses, you can enter search text for filtering element names in the Filter by name edit box. The name match is case-sensitive. Additionally, you can enter MATLAB regular expression. To modify the filtering options, click . Filtering Options • “Enable regular expression” on page 10-291 • “Show filtered results as a flat list” on page 10-292 4 Click to add the signal to the Linearization inputs/outputs table. The table displays the following information about the selected signal: 10-6 Bode Plot Block : Port : Bus Element Name of the block associated with the input/output. The number adjacent to the block name is the port number where the selected bus signal is located. The last entry is the selected bus element name. Configuration Type of linearization point: • Input — An input point. • Output — An output point. • Input-Output — An input point immediately followed by an output point. • Output-Input — An output point immediately followed by an input point. • None — Signal selected but not specified as a linearization input or output. Open Loop If your model contains one or more feedback loops, you can choose to linearize an open- or closed-loop system. For example, you might want to linearize only the plant model within a feedback control loop. When such a feedback loop is present, select this option to insert an open loop point and remove the effect of the loop without manually breaking signal lines. For determining gain and phase margins, in most cases, you open the loop. Note If you simulate the model without specifying an input or output, the software does not compute a linear system. Instead, you see a warning message at the MATLAB prompt. Settings No default 10-7 Bode Plot Command-Line Information Use the getlinio and setlinio commands to specify linearization inputs and outputs. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-8 Bode Plot Click a signal in the model to select it Enables signal selection in the Simulink model. Appears only when you click . When this option appears, you also see the following changes: • A new button. Use to add a selected signal as a linearization input or output in the Linearization inputs/outputs table. For more information, see Linearization inputs/outputs. • changes to . Use to collapse the Click a signal in the model to select it area. Settings No default Command-Line Information Use the getlinio and setlinio commands to select signals as linearization inputs and outputs. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-9 Bode Plot Enable regular expression Enable the use of MATLAB regular expressions for filtering signal names. For example, entering t$ in the Filter by name edit box displays all signals whose names end with a lowercase t (and their immediate parents). For details, see “Regular Expressions”. Settings Default: On On Allow use of MATLAB regular expressions for filtering signal names. Off Disable use of MATLAB regular expressions for filtering signal names. Filtering treats the text you enter in the Filter by name edit box as a literal string. Dependencies Selecting the Options button on the right-hand side of the Filter by name edit box ( 10-10 ) enables this parameter. Bode Plot Show filtered results as a flat list Uses a flat list format to display the list of filtered signals, based on the search text in the Filter by name edit box. The flat list format uses dot notation to reflect the hierarchy of bus signals. The following is an example of a flat list format for a filtered set of nested bus signals. Settings Default: Off On Display the filtered list of signals using a flat list format, indicating bus hierarchies with dot notation instead of using a tree format. Off Display filtered bus hierarchies using a tree format. 10-11 Bode Plot Dependencies Selecting the Options button on the right-hand side of the Filter by name edit box ( 10-12 ) enables this parameter. Bode Plot Linearize on When to compute the linear system during simulation. Settings Default: Simulation snapshots Simulation snapshots Specific simulation time, specified in Snapshot times. Use when you: • Know one or more times when the model is at steady-state operating point • Want to compute the linear systems at specific times External trigger Trigger-based simulation event. Specify the trigger type in Trigger type. Use when a signal generated during simulation indicates steady-state operating point. Selecting this option adds a trigger port to the block. Use this port to connect the block to the trigger signal. For example, for an aircraft model, you might want to compute the linear system whenever the fuel mass is a fraction of the maximum fuel mass. In this case, model this condition as an external trigger. Dependencies • Setting this parameter to Simulation snapshots enables Snapshot times. • Setting this parameter to External trigger enables Trigger type. Command-Line Information Parameter: LinearizeAt 10-13 Bode Plot Type: string Value: 'SnapshotTimes' | 'ExternalTrigger' Default: 'SnapshotTimes' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-14 Bode Plot Snapshot times One or more simulation times. The linear system is computed at these times. Settings Default: 0 • For a different simulation time, enter the time. Use when you: - Want to plot the linear system at a specific time Know the approximate time when the model reaches steady-state operating point • For multiple simulation times, enter a vector. Use when you want to compute and plot linear systems at multiple times. Snapshot times must be less than or equal to the simulation time specified in the Simulink model. Dependencies Selecting Simulation snapshots in Linearize on enables this parameter. Command-Line Information Parameter: SnapshotTimes Type: string Value: 0 | positive real number | vector of positive real numbers Default: 0 See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-15 Bode Plot Trigger type Trigger type of an external trigger for computing linear system. Settings Default: Rising edge Rising edge Rising edge of the external trigger signal. Falling edge Falling edge of the external trigger signal. Dependencies Selecting External trigger in Linearize on enables this parameter. Command-Line Information Parameter: TriggerType Type: string Value: 'rising' | 'falling' Default: 'rising' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-16 Bode Plot Enable zero-crossing detection Enable zero-crossing detection to ensure that the software computes the linear system characteristics at the following simulation times: • The exact snapshot times, specified in Snapshot times. As shown in the following figure, when zero-crossing detection is enabled, the variable-step Simulink solver simulates the model at the snapshot time Tsnap. Tsnap may lie between the simulation time steps Tn-1 and Tn which are automatically chosen by the solver. Computes linear system characteristics at this time point Tn-1 Tsnap Tn Time • The exact times when an external trigger is detected, specified in Trigger type. As shown in the following figure, when zero-crossing detection is enabled, the variable-step Simulink solver simulates the model at the time, Ttrig, when the trigger signal is detected. Ttrig may lie between the simulation time steps Tn-1 and Tn which are automatically chosen by the solver. Trigger signal Amplitude 1 Computes linear system characteristics at this time point 0 Tn-1 Ttrig Tn Time For more information on zero-crossing detection, see “Zero-Crossing Detection” in the Simulink User Guide. 10-17 Bode Plot Settings Default: On On Compute linear system characteristics at the exact snapshot time or exact time when a trigger signal is detected. This setting is ignored if the Simulink solver is fixed step. Off Compute linear system characteristics at the simulation time steps that the variable-step solver chooses. The software may not compute the linear system at the exact snapshot time or exact time when a trigger signal is detected. Command-Line Information Parameter: ZeroCross Type: string Value: 'on' | 'off' Default: 'on' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-18 Bode Plot Use exact delays How to represent time delays in your linear model. Use this option if you have blocks in your model that have time delays. Settings Default: Off On Return a linear model with exact delay representations. Off Return a linear model with Padé approximations of delays, as specified in your Transport Delay and Variable Transport Delay blocks. Command-Line Information Parameter: UseExactDelayModel Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-19 Bode Plot Linear system sample time Sample time of the linear system computed during simulation. Use this parameter to: • Compute a discrete-time system with a specific sample time from a continuous-time system • Resample a discrete-time system with a different sample time • Compute a continuous-time system from a discrete-time system When computing discrete-time systems from continuous-time systems and vice-versa, the software uses the conversion method specified in Sample time rate conversion method. Settings Default: auto auto. Computes the sample time as: • 0, for continuous-time models. • For models that have blocks with different sample times (multi-rate models), least common multiple of the sample times. For example, if you have a mix of continuous-time and discrete-time blocks with sample times of 0, 0.2 and 0.3, the sample time of the linear model is 0.6. Positive finite value. Use to compute: • A discrete-time linear system from a continuous-time system. • A discrete-time linear system from another discrete-time system with a different sample time 0 Use to compute a continuous-time linear system from a discrete-time model. Command-Line Information Parameter: SampleTime 10-20 Bode Plot Type: string Value: auto | Positive finite value | 0 Default: auto See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-21 Bode Plot Sample time rate conversion method Method for converting the sample time of single- or multi-rate models. This parameter is used only when the value of Linear system sample time is not auto. Settings Default: Zero-Order Hold Zero-Order Hold Zero-order hold, where the control inputs are assumed piecewise constant over the sampling time Ts. For more information, see “Zero-Order Hold” in Control System Toolbox User’s Guide. This method usually performs better in time domain. Tustin (bilinear) Bilinear (Tustin) approximation without frequency prewarping. The software rounds off fractional time delays to the nearest multiple of the sampling time. For more information, see “Tustin Approximation” in Control System Toolbox User’s Guide. This method usually perform better in the frequency domain. Tustin with Prewarping Bilinear (Tustin) approximation with frequency prewarping. Also specify the prewarp frequency in Prewarp frequency (rad/s). For more information, see “Tustin Approximation” in Control System Toolbox User’s Guide. This method usually perform better in the frequency domain. Use this method to ensure matching at frequency region of interest. Upsampling when possible, Zero-Order Hold otherwise Upsample a discrete-time system when possible and use Zero-Order Hold otherwise. 10-22 Bode Plot You can upsample only when you convert discrete-time system to a new sample time that is an integer-value-times faster than the sampling time of the original system. Upsampling when possible, Tustin otherwise Upsample a discrete-time system when possible and use Tustin (bilinear) otherwise. You can upsample only when you convert discrete-time system to a new sample time that is an integer-value-times faster than the sampling time of the original system. Upsampling when possible, Tustin with Prewarping otherwise Upsample a discrete-time system when possible and use Tustin with Prewarping otherwise. Also, specify the prewarp frequency in Prewarp frequency (rad/s). You can upsample only when you convert discrete-time system to a new sample time that is an integer-value-times faster than the sampling time of the original system. Dependencies Selecting either: • Tustin with Prewarping • Upsampling when possible, Tustin with Prewarping otherwise enables Prewarp frequency (rad/s). Command-Line Information Parameter: RateConversionMethod Type: string Value: 'zoh' | 'tustin' | 'prewarp'| 'upsampling_zoh'| 'upsampling_tustin'| 'upsampling_prewarp' Default: 'zoh' 10-23 Bode Plot See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-24 Bode Plot Prewarp frequency (rad/s) Prewarp frequency for Tustin method, specified in radians/second. Settings Default: 10 Positive scalar value, smaller than the Nyquist frequency before and after resampling. A value of 0 corresponds to the standard Tustin method without frequency prewarping. Dependencies Selecting either • Tustin with Prewarping • Upsampling when possible, Tustin with Prewarping otherwise in Sample time rate conversion method enables this parameter. Command-Line Information Parameter: PreWarpFreq Type: string Value: 10 | positive scalar value Default: 10 See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-25 Bode Plot Use full block names How the state, input and output names appear in the linear system computed during simulation. The linear system is a state-space object and system states and input/output names appear in following state-space object properties: Input, Output or State Name Appears in Which State-Space Object Property Linearization input name InputName Linearization output name OutputName State names StateName Settings Default: Off On Show state and input/output names with their path through the model hierarchy. For example, in the chemical reactor model, a state in the Integrator1 block of the CSTR subsystem appears with full path as scdcstr/CSTR/Integrator1. Off Show only state and input/output names. Use this option when the signal name is unique and you know where the signal is location in your Simulink model. For example, a state in the Integrator1 block of the CSTR subsystem appears as Integrator1. Command-Line Information Parameter: UseFullBlockNameLabels Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation 10-26 Bode Plot “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-27 Bode Plot Use bus signal names How to label signals associated with linearization inputs and outputs on buses, in the linear system computed during simulation (applies only when you select an entire bus as an I/O point). Selecting an entire bus signal is not recommended. Instead, select individual bus elements. You cannot use this parameter when your model has mux/bus mixtures. Settings Default: Off On Use the signal names of the individual bus elements. Bus signal names appear when the input and output are at the output of the following blocks: • Root-level inport block containing a bus object • Bus creator block • Subsystem block whose source traces back to one of the following blocks: — Output of a bus creator block — Root-level inport block by passing through only virtual or nonvirtual subsystem boundaries Off Use the bus signal channel number. Command-Line Information Parameter: UseBusSignalLabels Type: string Value: 'on' | 'off' Default: 'off' 10-28 Bode Plot See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-29 Bode Plot Include upper magnitude bound in assertion Check that the Bode response satisfies upper magnitude bounds, specified in Frequencies (rad/sec) and Magnitude (dB), during simulation. The software displays a warning if the magnitude violates the upper bounds. This parameter is used for assertion only if Enable assertion in the Assertion tab is selected. You can specify multiple upper magnitude bounds on the linear system. The bounds also appear on the Bode magnitude plot. If you clear Enable assertion, the bounds are not used for assertion but continue to appear on the plot. Settings Default: • Off for Bode Plot block. • On for Check Bode Characteristics block. On Check that the magnitude satisfies the specified upper bounds, during simulation. Off Do not check that the magnitude satisfies the specified upper bounds, during simulation. Tips • Clearing this parameter disables the upper magnitude bounds and the software stops checking that the bounds are satisfied during simulation. The bound segments are also greyed out on the plot. 10-30 Bode Plot • If you specify both upper and lower magnitude bounds but want to include only the lower bounds for assertion, clear this parameter. • To only view the bounds on the plot, clear Enable assertion. Command-Line Information Parameter: EnableUpperBound Type: string Value: 'on' | 'off' Default: 'off' for Bode Plot block, 'on' for Check Bode Characteristics block. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-31 Bode Plot Frequencies (rad/sec) Frequencies for one or more upper magnitude bound segments, specified in radians/sec. Specify the corresponding magnitudes in Magnitude (dB). Settings Default: [] for Bode Plot block [10 100] for Check Bode Characteristics block Must be specified as start and end frequencies: • Positive finite numbers for a single bound with one edge • Matrix of positive finite numbers for a single bound with multiple edges For example, type [0.1 1;1 10] for two edges at frequencies [0.1 1] and [1 10]. • Cell array of matrices with positive finite numbers for multiple bounds Tips • To assert that magnitudes that correspond to the frequencies are satisfied, select both Include upper magnitude bound in assertion and Enable assertion. • You can add or modify frequencies from the plot window: 10-32 - To add new frequencies, right-click the plot, and select Bounds > New Bound. Select Upper gain limit in Design requirement type, and specify the frequencies in the Frequency column. Specify the corresponding magnitudes in the Magnitude column. - To modify the frequencies, drag the bound segment. Alternatively, right-click the segment, and select Bounds > Edit Bound. Specify the new frequencies in the Frequency column. Bode Plot You must click Update Block before simulating the model. Command-Line Information Parameter: UpperBoundFrequencies Type: string Value: [] | [10 100]| positive finite numbers | matrix of positive finite numbers | cell array of matrices with positive finite numbers. Must be specified inside single quotes (''). Default: '[]' for Bode Plot block, '[10 100]' for Check Bode Characteristics block See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-33 Bode Plot Magnitudes (dB) Magnitude values for one or more upper magnitude bound segments, specified in decibels. Specify the corresponding frequencies in Frequencies (rad/sec). Settings Default: [] for Bode Plot block [-20 -20] for Check Bode Characteristics block Must be specified as start and end magnitudes: • Finite numbers for a single bound with one edge • Matrix of finite numbers for a single bound with multiple edges For example, type [–10 –10; –20 –20] for two edges at magnitudes [–10 –10] and [–20 –20]. • Cell array of matrices with finite numbers for multiple bounds Tips • To assert that magnitude bounds are satisfied, select both Include upper magnitude bound in assertion and Enable assertion. • You can add or modify magnitudes from the plot window: - To add a new magnitude, right-click the plot, and select Bounds > New Bound. Select Upper gain limit in Design requirement type, and specify the magnitude in the Magnitude column. Specify the corresponding frequencies in the Frequency column. - To modify the magnitudes, drag the bound segment. Alternatively, right-click the segment, and select Bounds > Edit Bound. Specify the new magnitudes in the Magnitude column. You must click Update Block before simulating the model. 10-34 Bode Plot Command-Line Information Parameter: UpperBoundMagnitudes Type: string Value: [] | [-20 -20] | finite numbers | matrix of finite numbers | cell array of matrices with finite numbers. Must be specified inside single quotes (''). Default: '[]' for Bode Plot block, '[-20 -20]' for Check Bode Characteristics block. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-35 Bode Plot Include lower magnitude bound in assertion Check that the Bode response satisfies lower magnitude bounds, specified in Frequencies (rad/sec) and Magnitude (dB), during simulation. The software displays a warning if the magnitude violates the lower bounds. This parameter is used for assertion only if Enable assertion in the Assertion tab is selected. You can specify multiple lower magnitude bounds on the linear system computed during simulation. The bounds also appear on the Bode magnitude plot. If you clear Enable assertion, the bounds are not used for assertion but continue to appear on the plot. Settings Default: • Off for Bode Plot block. • On for Check Bode Characteristics block On Check that the magnitude satisfies the specified lower bounds during simulation. Off Do not check that the magnitude satisfies the specified upper bounds during simulation. Tips • Clearing this parameter disables the lower magnitude bound and the software stops checking that the bounds are satisfied during simulation. The bound segments are also greyed out on the plot. 10-36 Bode Plot • If you specify both upper and lower magnitude bounds on the Bode magnitude but want to include only the upper bound for assertion, clear this parameter. • To only view the bound on the plot, clear Enable assertion. Command-Line Information Parameter: EnableLowerBound Type: string Value: 'on' | 'off' Default: 'off' for Bode Plot block, 'on' for Check Bode Characteristics block See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-37 Bode Plot Frequencies (rad/sec) Frequencies for one or more lower magnitude bound segments, specified in radians/sec. Specify the corresponding magnitudes in Magnitude (dB). Settings Default: [] for Bode Plot block [0.1 1] for Check Bode Characteristics block Must be specified as start and end frequencies: • Positive finite numbers for a single bound with one edge • Matrix of positive finite numbers for a single bound with multiple edges For example, type [0.1 1;1 10] to specify two edges with frequencies [0.1 1] and [1 10]. • Cell array of matrices with positive finite numbers for multiple bounds Tips • To assert that magnitude bounds that correspond to the frequencies are satisfied, select both Include lower magnitude bound in assertion and Enable assertion. • You can add or modify frequencies from the plot window: 10-38 - To add a new frequencies, right-click the plot, and select Bounds > New Bound. Select Lower gain limit in Design requirement type, and specify the frequencies in the Frequency column. Specify the corresponding magnitudes in the Magnitude column. - To modify the frequencies, drag the bound segment. Alternatively, right-click the segment, and select Bounds > Edit Bound. Specify the new frequencies in the Frequency column. Bode Plot You must click Update Block before simulating the model. Command-Line Information Parameter: LowerBoundFrequencies Type: string Value: [] | [0.1 1] | positive finite numbers | matrix of positive finite numbers | cell array of matrices with positive finite numbers. Must be specified inside single quotes (''). Default: '[]' for Bode Plot block, '[0.1 1]' for Check Bode Characteristics block. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-39 Bode Plot Magnitudes (dB) Magnitude values for one or more lower magnitude bound segments, specified in decibels. Specify the corresponding frequencies in Frequencies (rad/sec). Settings Default: [] for Bode Plot block [20 20] for Check Bode Characteristics block Must be specified as start and end magnitudes: • Finite numbers for a single bound with one edge • Matrix of finite numbers for a single bound with multiple edges For example, type [20 20; 40 40] for two edges with magnitudes [20 20] and [40 40]. • Cell array of matrices with finite numbers for multiple bounds Tips • To assert that magnitude bounds are satisfied, select both Include lower magnitude bound in assertion and Enable assertion. • If Include lower magnitude bound in assertion is not selected, the bound segment is disabled on the plot. • To only view the bound on the plot, clear Enable assertion. • You can add or modify magnitudes from the plot window: - 10-40 To add a new magnitude, right-click the plot, and select Bounds > New Bound. Select Lower gain limit in Design requirement type and specify the magnitude in the Magnitude column. Specify the corresponding frequencies in the Frequency column. Bode Plot - To modify the magnitudes, drag the bound segment. Alternatively, right-click the segment, and select Bounds > Edit Bound. Specify the new magnitude values in the Magnitude column. You must click Update Block before simulating the model. Command-Line Information Parameter: LowerBoundMagnitudes Type: string Value: [] | [20 20] | finite numbers | matrix of finite numbers | cell array of matrices with finite numbers. Must be specified inside single quotes (''). Default: '[]' for Bode Plot block, '[20 20]' for Check Bode Characteristics block. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-41 Bode Plot Save data to workspace Save one or more linear systems as a variable in MATLAB workspace to perform further linear analysis or control design. The workspace variable is a structure with time and values fields: • The time field stores the simulation time at which the linear system is computed. • The values field is a state-space object which stores the linear system. If the linear system is computed at multiple simulation times, values is an array of state-space objects. Settings Default: Off On Save the computed linear system to MATLAB workspace. Off Do not save the computed linear system to MATLAB workspace. Dependencies This parameter enables Variable name. Command-Line Information Parameter: SaveToWorkspace Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-42 Bode Plot Variable name Name of the workspace variable that stores one or more linear systems computed during simulation. The name must be unique among the variable names used in all data logging model blocks, such as Linear Analysis Plot blocks, Model Verification blocks, Scope blocks, To Workspace blocks, and simulation return variables such as time, states, and outputs. Settings Default: sys String. Dependencies Save data to workspace enables this parameter. Command-Line Information Parameter: SaveName Type: string Value: sys | any string. Must be specified inside single quotes (''). Default: 'sys' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-43 Bode Plot Enable assertion Enable the block to check that bounds specified and included for assertion in the Bounds tab are satisfied during simulation. Assertion fails if a bound is not satisfied. A warning, reporting the assertion failure, appears at the MATLAB prompt. If assertion fails, you can optionally specify that the block: • Execute a MATLAB expression, specified in Simulation callback when assertion fails (optional). • Stop the simulation and bring that block into focus, by selecting Stop simulation when assertion fails. For the Linear Analysis Plots blocks, this parameter has no effect because no bounds are included by default. If you want to use the Linear Analysis Plots blocks for assertion, specify and include bounds in the Bounds tab. Clearing this parameter disables assertion, i.e., the block no longer checks that specified bounds are satisfied. The block icon also updates to indicate that assertion is disabled. In the Configuration Parameters dialog box of the Simulink model, the Model Verification block enabling option in the Debugging area of Data Validity node, lets you to enable or disable all model verification blocks in a model, regardless of the setting of this option. Settings Default: On 10-44 Bode Plot On Check that bounds included for assertion in the Bounds tab are satisfied during simulation. A warning, reporting assertion failure, is displayed at the MATLAB prompt if bounds are violated. Off Do not check that bounds included for assertion are satisfied during simulation. Dependencies This parameter enables: • Simulation callback when assertion fails (optional) • Stop simulation when assertion fails Command-Line Information Parameter: enabled Type: string Value: 'on' | 'off' Default: 'on' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-45 Bode Plot Simulation callback when assertion fails (optional) MATLAB expression to execute when assertion fails. Because the expression is evaluated in the MATLAB workspace, define all variables used in the expression in that workspace. Settings No Default A MATLAB expression. Dependencies Enable assertion enables this parameter. Command-Line Information Parameter: callback Type: string Value: '' | MATLAB expression Default: '' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-46 Bode Plot Stop simulation when assertion fails Stop the simulation when a bound specified in the Bounds tab is violated during simulation, i.e., assertion fails. If you run the simulation from the Simulink Editor, the Simulation Diagnostics window opens to display an error message. Also, the block where the bound violation occurs is highlighted in the model. Settings Default: Off On Stop simulation if a bound specified in the Bounds tab is violated. Off Continue simulation if a bound is violated with a warning message at the MATLAB prompt. Tips • Because selecting this option stops the simulation as soon as the assertion fails, assertion failures that might occur later during the simulation are not reported. If you want all assertion failures to be reported, do not select this option. Dependencies Enable assertion enables this parameter. Command-Line Information Parameter: stopWhenAssertionFail Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-47 Bode Plot Output assertion signal Output a Boolean signal that, at each time step, is: • True (1) if assertion succeeds, i.e., all bounds are satisfied • False (1) if assertion fails, i.e., a bound is violated. The output signal data type is Boolean only if the Implement logic signals as Boolean data option in the Optimization pane of the Configuration Parameters dialog box of the Simulink model is selected. Otherwise, the data type of the output signal is double. Selecting this parameter adds an output port to the block that you can connect to any block in the model. Settings Default:Off On Output a Boolean signal to indicate assertion status. Adds a port to the block. Off Do not output a Boolean signal to indicate assertion status. Tips • Use this parameter to design complex assertion logic. For an example, see “Model Verification Using Simulink® Control Design™ and Simulink Verification Blocks” on page 5-25. Command-Line Information Parameter: export Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation 10-48 Bode Plot “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-49 Bode Plot Show plot on block open Open the plot window instead of the Block Parameters dialog box when you double-click the block in the Simulink model. Use this parameter if you prefer to open and perform tasks, such as adding or modifying bounds, in the plot window instead of the Block Parameters dialog box. If you want to access the block parameters from the plot window, select Edit or click . For more information on the plot, see Show Plot. Settings Default: Off On Open the plot window when you double-click the block. Off Open the Block Parameters dialog box when double-clicking the block. Command-Line Information Parameter: LaunchViewOnOpen Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-50 Bode Plot Show Plot Open the plot window. Use the plot to view: • Linear system characteristics computed from the nonlinear Simulink model during simulation You must click this button before you simulate the model to view the linear characteristics. You can display additional characteristics, such as the peak response time and stability margins, of the linear system by right-clicking the plot and selecting Characteristics. • Bounds on the linear system characteristics You can specify bounds in the Bounds tab of the Block Parameters dialog box or right-click the plot and select Bounds > New Bound. For more information on the types of bounds you can specify on each plot, see “Verifiable Linear System Characteristics” on page 5-5 in the User’s Guide. You can modify bounds by dragging the bound segment or by right-clicking the plot and selecting Bounds > Edit Bound. Before you simulate the model, click Update Block to update the bound value in the block parameters. Typical tasks that you perform in the plot window include: • Opening the Block Parameters dialog box by clicking Edit. or selecting • Finding the block that the plot window corresponds to by clicking or selecting View > Highlight Simulink Block. This action makes the Simulink Editor active and highlights the block. • Simulating the model by clicking or selecting Simulation > Run. This action also linearizes the portion of the model between the specified linearization input and output. 10-51 Bode Plot • Adding legend on the linear system characteristic plot by clicking See Also Check Bode Characteristics Tutorials • “Visualize Bode Response of Simulink Model During Simulation” on page 2-42 . • “Visualize Linear System at Multiple Simulation Snapshots” on page 2-64 • “Visualize Linear System of a Continuous-Time Model Discretized During Simulation” on page 2-70 • Plotting Linear System Characteristics of a Chemical Reactor 10-52 Check Bode Characteristics Purpose Check that Bode magnitude bounds are satisfied during simulation Library Simulink Control Design Description This block is same as the Bode Plot block except for different default parameter settings in the Bounds tab. Check that upper and lower magnitude bounds on the Bode response of a linear system, computed from a nonlinear Simulink model, are satisfied during simulation. The Simulink model can be continuous-time, discrete-time or multi-rate and can have time delays. The computed linear system can be Single-Input Single-Output (SISO) or Multi-Input Multi-Output (MIMO). During simulation, the software linearizes the portion of the model between specified linearization inputs and outputs, computes the Bode magnitude and phase, and checks that the magnitude satisfies the specified bounds. • If all bounds are satisfied, the block does nothing. • If a bound is not satisfied, the block asserts, and a warning message appears at the MATLAB prompt. You can also specify that the block: - Evaluate a MATLAB expression. Stop the simulation and bring that block into focus. During simulation, the block can also output a logical assertion signal: • If all bounds are satisfied, the signal is true (1). • If a bound is not satisfied, the signal is false (0). For MIMO systems, the bounds apply to the Bode responses computed for all input/output combinations. 10-53 Check Bode Characteristics You can add multiple Check Bode Characteristics blocks in your model to check upper and lower Bode magnitude bounds on various portions of the model. You can also plot the magnitude and phase on a Bode plot and graphically verify that the magnitude satisfies the bounds. This block and the other Model Verification blocks test that the linearized behavior of a nonlinear Simulink model is within specified bounds during simulation. • When a model does not violate any bound, you can disable the block by clearing the assertion option. If you modify the model, you can re-enable assertion to ensure that your changes do not cause the model to violate a bound. • When a model violates any bound, you can use Simulink Design Optimization software to optimize the linear system to meet the specified requirements in this block. You can save the linear system as a variable in the MATLAB workspace. The block does not support code generation and can be used only in Normal simulation mode. Parameters 10-54 The following table summarizes the Check Bode Characteristics block parameters, accessible via the block parameter dialog box. For more information, see “Parameters” on page 10-3 in the Bode Plot block reference page. Check Bode Characteristics Parameters Task Configure linearization. Specify inputs and outputs (I/Os). In Linearizations tab: Specify settings. In Linearizations tab: • Linearization inputs/outputs • Click a model signal to add it as a linearization I/O • Linearize on • Snapshot times • Trigger type Specify algorithm options. In Linearizations tab: • Enable zero-crossing detection • Use exact delays • Linear system sample time • Sample time rate conversion method • Prewarp frequency (rad/s) Specify labels for linear system I/Os and state names. In Linearizations tab: • Use full block names • Use bus signal names 10-55 Check Bode Characteristics Task Parameters Specify bounds on the linear system for assertion. In Bounds tab: • Include upper magnitude bound in assertion • Include lower magnitude bound in assertion Specify assertion options (only when you specify bounds on the linear system). In Assertion tab: • Enable assertion • Simulation callback when assertion fails (optional) • Stop simulation when assertion fails • Output assertion signal Save linear system to MATLAB workspace. Save data to workspace in Logging tab. View bounds violations graphically in a plot window. Show Plot Display plot window instead of block parameters dialog box on double-clicking the block. Show plot on block open See Also Bode Plot Tutorials • “Model Verification at Default Simulation Snapshot Time” on page 5-6 • “Model Verification at Multiple Simulation Snapshots” on page 5-15 • “Model Verification Using Simulink® Control Design™ and Simulink Verification Blocks” on page 5-25 10-56 Check Bode Characteristics • Verifying Frequency-Domain Characteristics of an Aircraft How To “Monitoring Linear System Characteristics in Simulink Models” on page 5-2 10-57 Check Gain and Phase Margins Purpose Check that gain and phase margin bounds are satisfied during simulation Library Simulink Control Design Description This block is same as the Gain and Phase Margin Plot block except for different default parameter settings in the Bounds tab. Check that bounds on gain and phase margins of a linear system, computed from a nonlinear Simulink model, are satisfied during simulation. The Simulink model can be continuous-time, discrete-time or multirate and can have time delays. Because you can specify only one linearization input/output pair in this block, the linear system is Single-Input Single-Output (SISO). During simulation, the software linearizes the portion of the model between specified linearization inputs and outputs, computes the gain and phase margins, and checks that the gain and phase margins satisfy the specified bounds. • If all bounds are satisfied, the block does nothing. • If a bound is not satisfied, the block asserts, and a warning message appears at the MATLAB prompt. You can also specify that the block: - Evaluate a MATLAB expression. Stop the simulation and bring that block into focus. During simulation, the block can also output a logical assertion signal: • If all bounds are satisfied, the signal is true (1). • If a bound is not satisfied, the signal is false (0). You can add multiple Check Gain and Phase Margins blocks in your model to check gain and phase margin bounds on various portions of the model. 10-58 Check Gain and Phase Margins You can also plot the gain and phase margins on a Bode, Nichols or Nyquist plot or view the margins in a table and verify that the gain and phase margins satisfy the bounds. This block and the other Model Verification blocks test that the linearized behavior of a nonlinear Simulink model is within specified bounds during simulation. • When a model does not violate any bound, you can disable the block by clearing the assertion option. If you modify the model, you can re-enable assertion to ensure that your changes do not cause the model to violate a bound. • When a model violates any bound, you can use Simulink Design Optimization software to optimize the linear system to meet the specified requirements in this block. You can save the linear system as a variable in the MATLAB workspace. The block does not support code generation and can be used only in Normal simulation mode. Parameters The following table summarizes the Gain and Phase Margin Plot block parameters, accessible via the block parameter dialog box. For more information, see “Parameters” on page 10-79 in the Gain and Phase Margin Plot block reference page. Parameters Task Configure linearization. Specify inputs and outputs (I/Os). In Linearizations tab: Specify settings. In Linearizations tab: • Linearization inputs/outputs • Click a model signal to add it as a linearization I/O • Linearize on 10-59 Check Gain and Phase Margins Parameters Task • Snapshot times • Trigger type Specify algorithm options. In Linearizations tab: • Enable zero-crossing detection • Use exact delays • Linear system sample time • Sample time rate conversion method • Prewarp frequency (rad/s) Specify labels for linear system I/Os and state names. In Linearizations tab: • Use full block names • Use bus signal names Specify bounds on gain and phase margins of the linear system for assertion. Include gain and phase margins in assertion in Bounds tab. Specify assertion options (only when you specify bounds on the linear system). In Assertion tab: • Enable assertion • Simulation callback when assertion fails (optional) • Stop simulation when assertion fails • Output assertion signal 10-60 Check Gain and Phase Margins Task Parameters Save linear system to MATLAB workspace. Save data to workspace in Logging tab. View bounds violations graphically in a plot window. Show Plot Display plot window instead of block parameters dialog box on double-clicking the block. Show plot on block open See Also Gain and Phase Margin Plot Tutorials • “Model Verification at Default Simulation Snapshot Time” on page 5-6 • “Model Verification at Multiple Simulation Snapshots” on page 5-15 • “Model Verification Using Simulink® Control Design™ and Simulink Verification Blocks” on page 5-25 • Verifying Frequency-Domain Characteristics of an Aircraft How To “Monitoring Linear System Characteristics in Simulink Models” on page 5-2 10-61 Check Linear Step Response Characteristics Purpose Check that step response bounds on linear system are satisfied during simulation Library Simulink Control Design Description This block is same as the Linear Step Response Plot block except for different default parameter settings in the Bounds tab. Check that bounds on step response characteristics of a linear system, computed from a nonlinear Simulink model, are satisfied during simulation. The Simulink model can be continuous-time, discrete-time or multirate and can have time delays. Because you can specify only one linearization input/output pair in this block, the linear system is Single-Input Single-Output (SISO). During simulation, the software linearizes the portion of the model between specified linearization inputs and outputs, computes the step response and checks that the step response satisfies the specified bounds: • If all bounds are satisfied, the block does nothing. • If a bound is not satisfied, the block asserts, and a warning message appears at the MATLAB prompt. You can also specify that the block: - Evaluate a MATLAB expression. Stop the simulation and bring that block into focus. During simulation, the block can also output a logical assertion signal: • If all bounds are satisfied, the signal is true (1). • If a bound is not satisfied, the signal is false (0). You can add multiple Check Linear Step Response Characteristics blocks in your model to check step response bounds on various portions of the model. 10-62 Check Linear Step Response Characteristics You can also plot the step response and graphically verify that the step response satisfies the bounds. This block and the other Model Verification blocks test that the linearized behavior of a nonlinear Simulink model is within specified bounds during simulation. • When a model does not violate any bound, you can disable the block by clearing the assertion option. If you modify the model, you can re-enable assertion to ensure that your changes do not cause the model to violate a bound. • When a model violates any bound, you can use Simulink Design Optimization software to optimize the linear system to meet the specified requirements in this block. You can save the linear system as a variable in the MATLAB workspace. The block does not support code generation and can be used only in Normal simulation mode. Parameters The following table summarizes the Linear Step Response Plot block parameters, accessible via the block parameter dialog box. For more information, see “Parameters” on page 10-125 in the Linear Step Response Plot block reference page. Parameters Task Configure linearization. Specify inputs and outputs (I/Os). In Linearizations tab: Specify settings. In Linearizations tab: • Linearization inputs/outputs • Click a model signal to add it as a linearization I/O • Linearize on • Snapshot times 10-63 Check Linear Step Response Characteristics Parameters Task • Trigger type Specify algorithm options. In Linearizations tab: • Enable zero-crossing detection • Use exact delays • Linear system sample time • Sample time rate conversion method • Prewarp frequency (rad/s) Specify labels for linear system I/Os and state names. In Linearizations tab: • Use full block names • Use bus signal names Specify bounds on the linear system for assertion. Include step response bounds in assertion in Bounds tab. Specify assertion options (only when you specify bounds on the linear system). In Assertion tab: • Enable assertion • Simulation callback when assertion fails (optional) • Stop simulation when assertion fails • Output assertion signal Save linear system to MATLAB workspace. 10-64 Save data to workspace in Logging tab. Check Linear Step Response Characteristics Task Parameters View bounds violations graphically in a plot window. Show Plot Display plot window instead of block parameters dialog box on double-clicking the block. Show plot on block open See Also Linear Step Response Plot Tutorials • “Model Verification at Default Simulation Snapshot Time” on page 5-6 • “Model Verification at Multiple Simulation Snapshots” on page 5-15 • “Model Verification Using Simulink® Control Design™ and Simulink Verification Blocks” on page 5-25 • Verifying Frequency-Domain Characteristics of an Aircraft How To “Monitoring Linear System Characteristics in Simulink Models” on page 5-2 10-65 Check Nichols Characteristics Purpose Check that gain and phase bounds on Nichols response are satisfied during simulation Library Simulink Control Design Description This block is same as the Nichols Plot block except for different default parameter settings in the Bounds tab. Check that open- and closed-loop gain and phase bounds on Nichols response of a linear system, computed from a nonlinear Simulink model, are satisfied during simulation. The Simulink model can be continuous-time, discrete-time or multirate and can have time delays. Because you can specify only one linearization input/output pair in this block, the linear system is Single-Input Single-Output (SISO). During simulation, the software linearizes the portion of the model between specified linearization inputs and outputs, computes the magnitude and phase, and checks that the gain and phase satisfy the specified bounds: • If all bounds are satisfied, the block does nothing. • If a bound is not satisfied, the block asserts, and a warning message appears at the MATLAB prompt. You can also specify that the block: - Evaluate a MATLAB expression. Stop the simulation and bring that block into focus. During simulation, the block can also output a logical assertion signal: • If all bounds are satisfied, the signal is true (1). • If a bound is not satisfied, the signal is false (0). You can add multiple Check Nichols Characteristics blocks in your model to check gain and phase bounds on various portions of the model. 10-66 Check Nichols Characteristics You can also plot the linear system on a Nichols plot and graphically verify that the Nichols response satisfies the bounds. This block and the other Model Verification blocks test that the linearized behavior of a nonlinear Simulink model is within specified bounds during simulation. • When a model does not violate any bound, you can disable the block by clearing the assertion option. If you modify the model, you can re-enable assertion to ensure that your changes do not cause the model to violate a bound. • When a model violates any bound, you can use Simulink Design Optimization software to optimize the linear system to meet the specified requirements in this block. You can save the linear system as a variable in the MATLAB workspace. The block does not support code generation and can be used only in Normal simulation mode. Parameters The following table summarizes the Nichols Plot block parameters, accessible via the block parameter dialog box. For more information, see “Parameters” on page 10-172 in the Nichols Plot block reference page. Parameters Task Configure linearization. Specify inputs and outputs (I/Os). In Linearizations tab: Specify settings. In Linearizations tab: • Linearization inputs/outputs • Click a model signal to add it as a linearization I/O • Linearize on • Snapshot times 10-67 Check Nichols Characteristics Parameters Task • Trigger type Specify algorithm options. In Linearizations tab: • Enable zero-crossing detection • Use exact delays • Linear system sample time • Sample time rate conversion method • Prewarp frequency (rad/s) Specify labels for linear system I/Os and state names. Specify bounds on gains and phases of the linear system for assertion. In Linearizations tab: • Use full block names • Use bus signal names In Bounds tab: • Include gain and phase margins in assertion • Include closed-loop peak gain in assertion • Include open-loop gain-phase bound in assertion 10-68 Check Nichols Characteristics Task Parameters Specify assertion options (only when you specify bounds on the linear system). In Assertion tab: • Enable assertion • Simulation callback when assertion fails (optional) • Stop simulation when assertion fails • Output assertion signal Save linear system to MATLAB workspace. Save data to workspace in Logging tab. View bounds violations graphically in a plot window. Show Plot Display plot window instead of block parameters dialog box on double-clicking the block. Show plot on block open See Also Nichols Plot Tutorials • “Model Verification at Default Simulation Snapshot Time” on page 5-6 • “Model Verification at Multiple Simulation Snapshots” on page 5-15 • “Model Verification Using Simulink® Control Design™ and Simulink Verification Blocks” on page 5-25 • Verifying Frequency-Domain Characteristics of an Aircraft How To “Monitoring Linear System Characteristics in Simulink Models” on page 5-2 10-69 Check Pole-Zero Characteristics Purpose Check that bounds on pole locations are satisfied during simulation Library Simulink Control Design Description This block is same as the Pole-Zero Plot block except for different default parameter settings in the Bounds tab. Check that approximate second-order bounds on the pole locations of a linear system, computed from a nonlinear Simulink model, are satisfied during simulation. The Simulink model can be continuous-time, discrete-time or multirate and can have time delays. Because you can specify only one linearization input/output pair in this block, the linear system is Single-Input Single-Output (SISO). During simulation, the software linearizes the portion of the model between specified linearization inputs and outputs, computes the poles and zeros, and checks that the poles satisfy the specified bounds: • If all bounds are satisfied, the block does nothing. • If a bound is not satisfied, the block asserts, and a warning message appears at the MATLAB prompt. You can also specify that the block: - Evaluate a MATLAB expression. Stop the simulation and bring that block into focus. During simulation, the block can also output a logical assertion signal: • If all bounds are satisfied, the signal is true (1). • If a bound is not satisfied, the signal is false (0). You can add multiple Check Pole-Zero Characteristics blocks in your model to check approximate second-order bounds on various portions of the model. You can also plot the poles and zeros on a pole-zero map and graphically verify that the poles satisfy the bounds. 10-70 Check Pole-Zero Characteristics This block and the other Model Verification blocks test that the linearized behavior of a nonlinear Simulink model is within specified bounds during simulation. • When a model does not violate any bound, you can disable the block by clearing the assertion option. If you modify the model, you can re-enable assertion to ensure that your changes do not cause the model to violate a bound. • When a model violates any bound, you can use Simulink Design Optimization software to optimize the linear system to meet the specified requirements in this block. You can save the linear system as a variable in the MATLAB workspace. The block does not support code generation and can be used only in Normal simulation mode. Parameters The following table summarizes the Pole-Zero Plot block parameters, accessible via the block parameter dialog box. For more information, see “Parameters” on page 10-230 in the Pole-Zero Plot block reference page. Parameters Task Configure linearization. Specify inputs and outputs (I/Os). In Linearizations tab: Specify settings. In Linearizations tab: • Linearization inputs/outputs • Click a model signal to add it as a linearization I/O • Linearize on • Snapshot times • Trigger type 10-71 Check Pole-Zero Characteristics Parameters Task Specify algorithm options. In Linearizations tab: • Enable zero-crossing detection • Use exact delays • Linear system sample time • Sample time rate conversion method • Prewarp frequency (rad/s) Specify labels for linear system I/Os and state names. Specify bounds on the linear system for assertion. In Linearizations tab: • Use full block names • Use bus signal names In Bounds tab: • Include settling time bound in assertion • Include percent overshoot bound in assertion • Include damping ratio bound in assertion • Include natural frequency bound in assertion 10-72 Check Pole-Zero Characteristics Task Parameters Specify assertion options (only when you specify bounds on the linear system). In Assertion tab: • Enable assertion • Simulation callback when assertion fails (optional) • Stop simulation when assertion fails • Output assertion signal Save linear system to MATLAB workspace. Save data to workspace in Logging tab. View bounds violations graphically in a plot window. Show Plot Display plot window instead of block parameters dialog box on double-clicking the block. Show plot on block open See Also Pole-Zero Plot Tutorials • “Model Verification at Default Simulation Snapshot Time” on page 5-6 • “Model Verification at Multiple Simulation Snapshots” on page 5-15 • “Model Verification Using Simulink® Control Design™ and Simulink Verification Blocks” on page 5-25 • Verifying Frequency-Domain Characteristics of an Aircraft How To “Monitoring Linear System Characteristics in Simulink Models” on page 5-2 10-73 Check Singular Value Characteristics Purpose Check that singular value bounds are satisfied during simulation Library Simulink Control Design Description This block is same as the Singular Value Plot block except for default parameter settings in the Bounds tab: Check that upper and lower bounds on singular values of a linear system, computed from a nonlinear Simulink model, are satisfied during simulation. The Simulink model can be continuous-time, discrete-time or multi-rate and can have time delays. The computed linear system can be Single-Input Single-Output (SISO) or Multi-Input Multi-Output (MIMO). During simulation, the software linearizes the portion of the model between specified linearization input and output, computes the singular values, and checks that the values satisfy the specified bounds: • If all bounds are satisfied, the block does nothing. • If a bound is not satisfied, the block asserts, and a warning message appears at the MATLAB prompt. You can also specify that the block: - Evaluate a MATLAB expression. Stop the simulation and bring that block into focus. During simulation, the block can also output a logical assertion signal: • If all bounds are satisfied, the signal is true (1). • If a bound is not satisfied, the signal is false (0). For MIMO systems, the bounds apply to the singular values computed for all input/output combinations. You can add multiple Check Singular Value Characteristics blocks in your model to check upper and lower singular value bounds on various portions of the model. 10-74 Check Singular Value Characteristics You can also plot the singular values on a singular value plot and graphically verify that the values satisfy the bounds. This block and the other Model Verification blocks test that the linearized behavior of a nonlinear Simulink model is within specified bounds during simulation. • When a model does not violate any bound, you can disable the block by clearing the assertion option. If you modify the model, you can re-enable assertion to ensure that your changes do not cause the model to violate a bound. • When a model violates any bound, you can use Simulink Design Optimization software to optimize the linear system to meet the specified requirements in this block. You can save the linear system as a variable in the MATLAB workspace. The block does not support code generation and can be used only in Normal simulation mode. Parameters The following table summarizes the Singular Value Plot block parameters, accessible via the block parameter dialog box. For more information, see “Parameters” on page 10-284 in the Singular Value Plot block reference page. Parameters Task Configure linearization. Specify inputs and outputs (I/Os). In Linearizations tab: Specify settings. In Linearizations tab: • Linearization inputs/outputs • Click a model signal to add it as a linearization I/O • Linearize on • Snapshot times 10-75 Check Singular Value Characteristics Parameters Task • Trigger type Specify algorithm options. In Linearizations tab: • Enable zero-crossing detection • Use exact delays • Linear system sample time • Sample time rate conversion method • Prewarp frequency (rad/s) Specify labels for linear system I/Os and state names. Specify bounds on the linear system for assertion. In Linearizations tab: • Use full block names • Use bus signal names In Bounds tab: • Include upper singular value bound in assertion • Include lower singular value bound in assertion Specify assertion options (only when you specify bounds on the linear system). In Assertion tab: • Enable assertion • Simulation callback when assertion fails (optional) • Stop simulation when assertion fails • Output assertion signal 10-76 Check Singular Value Characteristics Task Parameters Save linear system to MATLAB workspace. Save data to workspace in Logging tab. View bounds violations graphically in a plot window. Show Plot Display plot window instead of block parameters dialog box on double-clicking the block. Show plot on block open See Also Singular Value Plot Tutorials • “Model Verification at Default Simulation Snapshot Time” on page 5-6 • “Model Verification at Multiple Simulation Snapshots” on page 5-15 • “Model Verification Using Simulink® Control Design™ and Simulink Verification Blocks” on page 5-25 • Verifying Frequency-Domain Characteristics of an Aircraft How To “Monitoring Linear System Characteristics in Simulink Models” on page 5-2 10-77 Gain and Phase Margin Plot Purpose Gain and phase margins of linear system approximated from nonlinear Simulink model Library Simulink Control Design Description This block is same as the Check Gain and Phase Margins block except for different default parameter settings in the Bounds tab. Compute a linear system from a nonlinear Simulink model and view the gain and phase margins on a Bode, Nichols or Nyquist plot. Alternatively, you can view the margins in a table. By default, the margins are computed using negative feedback for the closed-loop system. During simulation, the software linearizes the portion of the model between specified linearization inputs and outputs, and plots the linear system on the specified plot type. The Simulink model can be continuous- or discrete-time or multirate and can have time delays. Because you can specify only one linearization input/output pair in this block, the linear system is Single-Input Single-Output (SISO). You can specify only one gain and phase margin bound each and view them on the selected plot or table. The block does not support multiple gain and phase margin bounds. You can also check that the bounds are satisfied during simulation: • If all bounds are satisfied, the block does nothing. • If a bound is not satisfied, the block asserts, and a warning message appears at the MATLAB prompt. You can also specify that the block: - Evaluate a MATLAB expression. Stop the simulation and bring that block into focus. During simulation, the block can also output a logical assertion signal: • If all bounds are satisfied, the signal is true (1). 10-78 Gain and Phase Margin Plot • If a bound is not satisfied, the signal is false (0). You can add multiple Gain and Phase Margin Plot blocks to compute and plot the gain and phase margins of various portions of the model. You can save the linear system as a variable in the MATLAB workspace. The block does not support code generation and can be used only in Normal simulation mode. Parameters The following table summarizes the Gain and Phase Margin Plot block parameters, accessible via the block parameter dialog box. Parameters Task Configure linearization. Specify inputs and outputs (I/Os). In Linearizations tab: • “Linearization inputs/outputs” on page 10-287. • “Click a signal in the model to select it” on page 10-290. Specify settings. In Linearizations tab: • “Linearize on” on page 10-294. • “Snapshot times” on page 10-296. • “Trigger type” on page 10-297. Specify algorithm options. In Algorithm Options of Linearizations tab: 10-79 Gain and Phase Margin Plot Parameters Task • “Enable zero-crossing detection” on page 10-298. • “Use exact delays” on page 10-300. • “Linear system sample time” on page 10-301. • “Sample time rate conversion method” on page 10-303. • “Prewarp frequency (rad/s)” on page 10-306. Specify labels for linear system I/Os and state names. In Labels of Linearizations tab: • “Use full block names” on page 10-307. • “Use bus signal names” on page 10-309. 10-80 Specify plot type for viewing gain and phase margins. “Plot type” on page 10-120. Plot the linear system. Show Plot Gain and Phase Margin Plot Task Parameters Specify the feedback sign for closed-loop gain and phase margins. “Feedback sign” on page 10-110 in Bounds tab. (Optional) Specify bounds on gain and phase margins of the linear system for assertion. “Include gain and phase margins in assertion” on page 10-106 in Bounds tab. Specify assertion options (only when you specify bounds on the linear system). In Assertion tab: • “Enable assertion” on page 10-325. • “Simulation callback when assertion fails (optional)” on page 10-327. • “Stop simulation when assertion fails” on page 10-328. • “Output assertion signal” on page 10-329. Save linear system to MATLAB workspace. “Save data to workspace” on page 10-323 in Logging tab. Display plot window instead of block parameters dialog box on double-clicking the block. “Show plot on block open” on page 10-331. 10-81 Gain and Phase Margin Plot Linearization inputs/outputs Linearization inputs and outputs that define the portion of a nonlinear Simulink model to linearize. 1 Click . The dialog box expands to display a Click a signal in the model to select it area and a new button. 2 Select a signal in the Simulink Editor. The selected signal appears as a Model signal in the Click a signal in the model to select it area. 3 (Optional) For buses, expand the bus signal to select an individual element. Tip For large buses, you can enter search text for filtering element names in the Filter by name edit box. The name match is case-sensitive. Additionally, you can enter MATLAB regular expression. To modify the filtering options, click . Filtering Options • “Enable regular expression” on page 10-291 • “Show filtered results as a flat list” on page 10-292 10-82 Gain and Phase Margin Plot 4 Click to add the signal to the Linearization inputs/outputs table. The table displays the following information about the selected signal: Block : Port : Bus Element Name of the block associated with the input/output. The number adjacent to the block name is the port number where the selected bus signal is located. The last entry is the selected bus element name. Configuration Type of linearization point: • Input — An input point. • Output — An output point. • Input-Output — An input point immediately followed by an output point. • Output-Input — An output point immediately followed by an input point. • None — Signal selected but not specified as a linearization input or output. Open Loop If your model contains one or more feedback loops, you can choose to linearize an open- or closed-loop system. For example, you might want to linearize only the plant model within a feedback control loop. When such a feedback loop is present, select this option to insert an open loop point 10-83 Gain and Phase Margin Plot and remove the effect of the loop without manually breaking signal lines. For determining gain and phase margins, in most cases, you open the loop. Note If you simulate the model without specifying an input or output, the software does not compute a linear system. Instead, you see a warning message at the MATLAB prompt. Settings No default Command-Line Information Use the getlinio and setlinio commands to specify linearization inputs and outputs. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-84 Gain and Phase Margin Plot Click a signal in the model to select it Enables signal selection in the Simulink model. Appears only when you click . When this option appears, you also see the following changes: • A new button. Use to add a selected signal as a linearization input or output in the Linearization inputs/outputs table. For more information, see Linearization inputs/outputs. • changes to . Use to collapse the Click a signal in the model to select it area. Settings No default Command-Line Information Use the getlinio and setlinio commands to select signals as linearization inputs and outputs. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-85 Gain and Phase Margin Plot Enable regular expression Enable the use of MATLAB regular expressions for filtering signal names. For example, entering t$ in the Filter by name edit box displays all signals whose names end with a lowercase t (and their immediate parents). For details, see “Regular Expressions”. Settings Default: On On Allow use of MATLAB regular expressions for filtering signal names. Off Disable use of MATLAB regular expressions for filtering signal names. Filtering treats the text you enter in the Filter by name edit box as a literal string. Dependencies Selecting the Options button on the right-hand side of the Filter by name edit box ( 10-86 ) enables this parameter. Gain and Phase Margin Plot Show filtered results as a flat list Uses a flat list format to display the list of filtered signals, based on the search text in the Filter by name edit box. The flat list format uses dot notation to reflect the hierarchy of bus signals. The following is an example of a flat list format for a filtered set of nested bus signals. Settings Default: Off On Display the filtered list of signals using a flat list format, indicating bus hierarchies with dot notation instead of using a tree format. Off Display filtered bus hierarchies using a tree format. 10-87 Gain and Phase Margin Plot Dependencies Selecting the Options button on the right-hand side of the Filter by name edit box ( 10-88 ) enables this parameter. Gain and Phase Margin Plot Linearize on When to compute the linear system during simulation. Settings Default: Simulation snapshots Simulation snapshots Specific simulation time, specified in Snapshot times. Use when you: • Know one or more times when the model is at steady-state operating point • Want to compute the linear systems at specific times External trigger Trigger-based simulation event. Specify the trigger type in Trigger type. Use when a signal generated during simulation indicates steady-state operating point. Selecting this option adds a trigger port to the block. Use this port to connect the block to the trigger signal. For example, for an aircraft model, you might want to compute the linear system whenever the fuel mass is a fraction of the maximum fuel mass. In this case, model this condition as an external trigger. Dependencies • Setting this parameter to Simulation snapshots enables Snapshot times. • Setting this parameter to External trigger enables Trigger type. Command-Line Information Parameter: LinearizeAt 10-89 Gain and Phase Margin Plot Type: string Value: 'SnapshotTimes' | 'ExternalTrigger' Default: 'SnapshotTimes' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-90 Gain and Phase Margin Plot Snapshot times One or more simulation times. The linear system is computed at these times. Settings Default: 0 • For a different simulation time, enter the time. Use when you: - Want to plot the linear system at a specific time Know the approximate time when the model reaches steady-state operating point • For multiple simulation times, enter a vector. Use when you want to compute and plot linear systems at multiple times. Snapshot times must be less than or equal to the simulation time specified in the Simulink model. Dependencies Selecting Simulation snapshots in Linearize on enables this parameter. Command-Line Information Parameter: SnapshotTimes Type: string Value: 0 | positive real number | vector of positive real numbers Default: 0 See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-91 Gain and Phase Margin Plot Trigger type Trigger type of an external trigger for computing linear system. Settings Default: Rising edge Rising edge Rising edge of the external trigger signal. Falling edge Falling edge of the external trigger signal. Dependencies Selecting External trigger in Linearize on enables this parameter. Command-Line Information Parameter: TriggerType Type: string Value: 'rising' | 'falling' Default: 'rising' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-92 Gain and Phase Margin Plot Enable zero-crossing detection Enable zero-crossing detection to ensure that the software computes the linear system characteristics at the following simulation times: • The exact snapshot times, specified in Snapshot times. As shown in the following figure, when zero-crossing detection is enabled, the variable-step Simulink solver simulates the model at the snapshot time Tsnap. Tsnap may lie between the simulation time steps Tn-1 and Tn which are automatically chosen by the solver. Computes linear system characteristics at this time point Tn-1 Tsnap Tn Time • The exact times when an external trigger is detected, specified in Trigger type. As shown in the following figure, when zero-crossing detection is enabled, the variable-step Simulink solver simulates the model at the time, Ttrig, when the trigger signal is detected. Ttrig may lie between the simulation time steps Tn-1 and Tn which are automatically chosen by the solver. Trigger signal Amplitude 1 Computes linear system characteristics at this time point 0 Tn-1 Ttrig Tn Time For more information on zero-crossing detection, see “Zero-Crossing Detection” in the Simulink User Guide. 10-93 Gain and Phase Margin Plot Settings Default: On On Compute linear system characteristics at the exact snapshot time or exact time when a trigger signal is detected. This setting is ignored if the Simulink solver is fixed step. Off Compute linear system characteristics at the simulation time steps that the variable-step solver chooses. The software may not compute the linear system at the exact snapshot time or exact time when a trigger signal is detected. Command-Line Information Parameter: ZeroCross Type: string Value: 'on' | 'off' Default: 'on' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-94 Gain and Phase Margin Plot Use exact delays How to represent time delays in your linear model. Use this option if you have blocks in your model that have time delays. Settings Default: Off On Return a linear model with exact delay representations. Off Return a linear model with Padé approximations of delays, as specified in your Transport Delay and Variable Transport Delay blocks. Command-Line Information Parameter: UseExactDelayModel Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-95 Gain and Phase Margin Plot Linear system sample time Sample time of the linear system computed during simulation. Use this parameter to: • Compute a discrete-time system with a specific sample time from a continuous-time system • Resample a discrete-time system with a different sample time • Compute a continuous-time system from a discrete-time system When computing discrete-time systems from continuous-time systems and vice-versa, the software uses the conversion method specified in Sample time rate conversion method. Settings Default: auto auto. Computes the sample time as: • 0, for continuous-time models. • For models that have blocks with different sample times (multi-rate models), least common multiple of the sample times. For example, if you have a mix of continuous-time and discrete-time blocks with sample times of 0, 0.2 and 0.3, the sample time of the linear model is 0.6. Positive finite value. Use to compute: • A discrete-time linear system from a continuous-time system. • A discrete-time linear system from another discrete-time system with a different sample time 0 Use to compute a continuous-time linear system from a discrete-time model. Command-Line Information Parameter: SampleTime 10-96 Gain and Phase Margin Plot Type: string Value: auto | Positive finite value | 0 Default: auto See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-97 Gain and Phase Margin Plot Sample time rate conversion method Method for converting the sample time of single- or multi-rate models. This parameter is used only when the value of Linear system sample time is not auto. Settings Default: Zero-Order Hold Zero-Order Hold Zero-order hold, where the control inputs are assumed piecewise constant over the sampling time Ts. For more information, see “Zero-Order Hold” in Control System Toolbox User’s Guide. This method usually performs better in time domain. Tustin (bilinear) Bilinear (Tustin) approximation without frequency prewarping. The software rounds off fractional time delays to the nearest multiple of the sampling time. For more information, see “Tustin Approximation” in Control System Toolbox User’s Guide. This method usually perform better in the frequency domain. Tustin with Prewarping Bilinear (Tustin) approximation with frequency prewarping. Also specify the prewarp frequency in Prewarp frequency (rad/s). For more information, see “Tustin Approximation” in Control System Toolbox User’s Guide. This method usually perform better in the frequency domain. Use this method to ensure matching at frequency region of interest. Upsampling when possible, Zero-Order Hold otherwise Upsample a discrete-time system when possible and use Zero-Order Hold otherwise. 10-98 Gain and Phase Margin Plot You can upsample only when you convert discrete-time system to a new sample time that is an integer-value-times faster than the sampling time of the original system. Upsampling when possible, Tustin otherwise Upsample a discrete-time system when possible and use Tustin (bilinear) otherwise. You can upsample only when you convert discrete-time system to a new sample time that is an integer-value-times faster than the sampling time of the original system. Upsampling when possible, Tustin with Prewarping otherwise Upsample a discrete-time system when possible and use Tustin with Prewarping otherwise. Also, specify the prewarp frequency in Prewarp frequency (rad/s). You can upsample only when you convert discrete-time system to a new sample time that is an integer-value-times faster than the sampling time of the original system. Dependencies Selecting either: • Tustin with Prewarping • Upsampling when possible, Tustin with Prewarping otherwise enables Prewarp frequency (rad/s). Command-Line Information Parameter: RateConversionMethod Type: string Value: 'zoh' | 'tustin' | 'prewarp'| 'upsampling_zoh'| 'upsampling_tustin'| 'upsampling_prewarp' Default: 'zoh' 10-99 Gain and Phase Margin Plot See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-100 Gain and Phase Margin Plot Prewarp frequency (rad/s) Prewarp frequency for Tustin method, specified in radians/second. Settings Default: 10 Positive scalar value, smaller than the Nyquist frequency before and after resampling. A value of 0 corresponds to the standard Tustin method without frequency prewarping. Dependencies Selecting either • Tustin with Prewarping • Upsampling when possible, Tustin with Prewarping otherwise in Sample time rate conversion method enables this parameter. Command-Line Information Parameter: PreWarpFreq Type: string Value: 10 | positive scalar value Default: 10 See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-101 Gain and Phase Margin Plot Use full block names How the state, input and output names appear in the linear system computed during simulation. The linear system is a state-space object and system states and input/output names appear in following state-space object properties: Input, Output or State Name Appears in Which State-Space Object Property Linearization input name InputName Linearization output name OutputName State names StateName Settings Default: Off On Show state and input/output names with their path through the model hierarchy. For example, in the chemical reactor model, a state in the Integrator1 block of the CSTR subsystem appears with full path as scdcstr/CSTR/Integrator1. Off Show only state and input/output names. Use this option when the signal name is unique and you know where the signal is location in your Simulink model. For example, a state in the Integrator1 block of the CSTR subsystem appears as Integrator1. Command-Line Information Parameter: UseFullBlockNameLabels Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation 10-102 Gain and Phase Margin Plot “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-103 Gain and Phase Margin Plot Use bus signal names How to label signals associated with linearization inputs and outputs on buses, in the linear system computed during simulation (applies only when you select an entire bus as an I/O point). Selecting an entire bus signal is not recommended. Instead, select individual bus elements. You cannot use this parameter when your model has mux/bus mixtures. Settings Default: Off On Use the signal names of the individual bus elements. Bus signal names appear when the input and output are at the output of the following blocks: • Root-level inport block containing a bus object • Bus creator block • Subsystem block whose source traces back to one of the following blocks: — Output of a bus creator block — Root-level inport block by passing through only virtual or nonvirtual subsystem boundaries Off Use the bus signal channel number. Command-Line Information Parameter: UseBusSignalLabels Type: string Value: 'on' | 'off' Default: 'off' 10-104 Gain and Phase Margin Plot See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-105 Gain and Phase Margin Plot Include gain and phase margins in assertion Check that the gain and phase margins are greater than the values specified in Gain margin (dB) > and Phase margin (deg) >, during simulation. The software displays a warning if the gain or phase margin is less than or equals the specified value. By default, negative feedback, specified in Feedback sign, is used to compute the margins. This parameter is used for assertion only if Enable assertion in the Assertion tab is selected. You can view the gain and phase margin bound on one of the following plot types: • Bode • Nichols • Nyquist • Table If you clear Enable assertion, the bounds are not used for assertion but continue to appear on the plot. Settings Default: • Off for Gain and Phase Margin Plot block. • On for Check Gain and Phase Margins block. On Check that the gain and phase margins satisfy the specified values, during simulation. Off Do not check that the gain and phase margins satisfy the specified values, during simulation. 10-106 Gain and Phase Margin Plot Tips • Clearing this parameter disables the gain and phase margin bounds and the software stops checking that the gain and phase margins satisfy the bounds during simulation. The gain and phase margin bounds are also disabled on the plot. • To only view the gain and phase margin on the plot, clear Enable assertion. Command-Line Information Parameter: EnableMargins Type: string Value: 'on' | 'off' Default: 'off' for Gain and Phase Margin Plot block, 'on' for Check Gain and Phase Margins block See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-107 Gain and Phase Margin Plot Gain margin (dB) > Gain margin, specified in decibels. By default, negative feedback, specified in Feedback sign, is used to compute the gain margin. You can specify only one gain margin bound on the linear system in this block. Settings Default: [] for Gain and Phase Margin Plot block. 20 for Check Gain and Phase Margins block. Positive finite number. Tips • To assert that the gain margin is satisfied, select both Include gain and phase margins in assertion and Enable assertion. • To modify the gain margin from the plot window, right-click the plot, and select Bounds > Edit Bound. Specify the new gain margin in Gain margin >. You must click Update Block before simulating the model. Command-Line Information Parameter: GainMargin Type: string Value: [] | 20 | positive finite number. Must be specified inside single quotes (''). Default: '[]' for Gain and Phase Margin Plot block, '20' for Check Gain and Phase Margins block. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-108 Gain and Phase Margin Plot Phase margin (deg) > Phase margin, specified in degrees. By default, negative feedback, specified in Feedback sign, is used to compute the phase margin. You can specify only one phase margin bound on the linear system in this block. Settings Default: [] for Gain and Phase Margin Plot block. 30 for Check Gain and Phase Margins block. Positive finite number. Tips • To assert that the phase margin is satisfied, select both Include gain and phase margins in assertion and Enable assertion. • To modify the phase margin from the plot window, right-click the plot, and select Bounds > Edit Bound. Specify the new phase margin in Phase margin >. You must click Update Block before simulating the model. Command-Line Information Parameter: PhaseMargin Type: string Value: [] | 30 | positive finite number. Must be specified inside single quotes (''). Default: '[]' for Gain and Phase Margin Plot block, '30' for Check Gain and Phase Margins block. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-109 Gain and Phase Margin Plot Feedback sign Feedback sign to determine the gain and phase margins of the linear system, computed during simulation. To determine the feedback sign, check if the path defined by the linearization inputs and outputs include the feedback Sum block: • If the path includes the Sum block, specify positive feedback. • If the path does not include the Sum block, specify the same feedback sign as the Sum block. For example, in the aircraft model, the Check Gain and Phase Margins block includes the negative sign in the summation block. Therefore, the Feedback sign is positive. Settings Default: negative feedback negative feedback Use when the path defined by the linearization inputs/outputs does not include the Sum block and the Sum block feedback sign is -. positive feedback Use when: • The path defined by the linearization inputs/outputs includes the Sum block. • The path defined by the linearization inputs/outputs does not include the Sum block and the Sum block feedback sign is +. Command-Line Information Parameter: FeedbackSign Type: string Value: '-1' | '+1' Default: '-1' 10-110 Gain and Phase Margin Plot See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-111 Gain and Phase Margin Plot Save data to workspace Save one or more linear systems as a variable in MATLAB workspace to perform further linear analysis or control design. The workspace variable is a structure with time and values fields: • The time field stores the simulation time at which the linear system is computed. • The values field is a state-space object which stores the linear system. If the linear system is computed at multiple simulation times, values is an array of state-space objects. Settings Default: Off On Save the computed linear system to MATLAB workspace. Off Do not save the computed linear system to MATLAB workspace. Dependencies This parameter enables Variable name. Command-Line Information Parameter: SaveToWorkspace Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-112 Gain and Phase Margin Plot Variable name Name of the workspace variable that stores one or more linear systems computed during simulation. The name must be unique among the variable names used in all data logging model blocks, such as Linear Analysis Plot blocks, Model Verification blocks, Scope blocks, To Workspace blocks, and simulation return variables such as time, states, and outputs. Settings Default: sys String. Dependencies Save data to workspace enables this parameter. Command-Line Information Parameter: SaveName Type: string Value: sys | any string. Must be specified inside single quotes (''). Default: 'sys' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-113 Gain and Phase Margin Plot Enable assertion Enable the block to check that bounds specified and included for assertion in the Bounds tab are satisfied during simulation. Assertion fails if a bound is not satisfied. A warning, reporting the assertion failure, appears at the MATLAB prompt. If assertion fails, you can optionally specify that the block: • Execute a MATLAB expression, specified in Simulation callback when assertion fails (optional). • Stop the simulation and bring that block into focus, by selecting Stop simulation when assertion fails. For the Linear Analysis Plots blocks, this parameter has no effect because no bounds are included by default. If you want to use the Linear Analysis Plots blocks for assertion, specify and include bounds in the Bounds tab. Clearing this parameter disables assertion, i.e., the block no longer checks that specified bounds are satisfied. The block icon also updates to indicate that assertion is disabled. In the Configuration Parameters dialog box of the Simulink model, the Model Verification block enabling option in the Debugging area of Data Validity node, lets you to enable or disable all model verification blocks in a model, regardless of the setting of this option. Settings Default: On 10-114 Gain and Phase Margin Plot On Check that bounds included for assertion in the Bounds tab are satisfied during simulation. A warning, reporting assertion failure, is displayed at the MATLAB prompt if bounds are violated. Off Do not check that bounds included for assertion are satisfied during simulation. Dependencies This parameter enables: • Simulation callback when assertion fails (optional) • Stop simulation when assertion fails Command-Line Information Parameter: enabled Type: string Value: 'on' | 'off' Default: 'on' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-115 Gain and Phase Margin Plot Simulation callback when assertion fails (optional) MATLAB expression to execute when assertion fails. Because the expression is evaluated in the MATLAB workspace, define all variables used in the expression in that workspace. Settings No Default A MATLAB expression. Dependencies Enable assertion enables this parameter. Command-Line Information Parameter: callback Type: string Value: '' | MATLAB expression Default: '' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-116 Gain and Phase Margin Plot Stop simulation when assertion fails Stop the simulation when a bound specified in the Bounds tab is violated during simulation, i.e., assertion fails. If you run the simulation from the Simulink Editor, the Simulation Diagnostics window opens to display an error message. Also, the block where the bound violation occurs is highlighted in the model. Settings Default: Off On Stop simulation if a bound specified in the Bounds tab is violated. Off Continue simulation if a bound is violated with a warning message at the MATLAB prompt. Tips • Because selecting this option stops the simulation as soon as the assertion fails, assertion failures that might occur later during the simulation are not reported. If you want all assertion failures to be reported, do not select this option. Dependencies Enable assertion enables this parameter. Command-Line Information Parameter: stopWhenAssertionFail Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-117 Gain and Phase Margin Plot Output assertion signal Output a Boolean signal that, at each time step, is: • True (1) if assertion succeeds, i.e., all bounds are satisfied • False (1) if assertion fails, i.e., a bound is violated. The output signal data type is Boolean only if the Implement logic signals as Boolean data option in the Optimization pane of the Configuration Parameters dialog box of the Simulink model is selected. Otherwise, the data type of the output signal is double. Selecting this parameter adds an output port to the block that you can connect to any block in the model. Settings Default:Off On Output a Boolean signal to indicate assertion status. Adds a port to the block. Off Do not output a Boolean signal to indicate assertion status. Tips • Use this parameter to design complex assertion logic. For an example, see “Model Verification Using Simulink® Control Design™ and Simulink Verification Blocks” on page 5-25. Command-Line Information Parameter: export Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation 10-118 Gain and Phase Margin Plot “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-119 Gain and Phase Margin Plot Plot type Plot to view gain and phase margins of the linear system computed during simulation. Settings Default: Bode Bode Bode plot. Nichols Nichols plot Nyquist Nyquist plot Tabular Table. Right-click the Bode , Nichols or Nyquist plot and select Characteristics > Minimum Stability Margins to view gain and phase margins. The table displays the computed margins automatically. Command-Line Information Parameter: PlotType Type: string Value: 'bode' | 'nichols' | 'nyquist' | 'table' Default: 'bode' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-120 Gain and Phase Margin Plot Show plot on block open Open the plot window instead of the Block Parameters dialog box when you double-click the block in the Simulink model. Use this parameter if you prefer to open and perform tasks, such as adding or modifying bounds, in the plot window instead of the Block Parameters dialog box. If you want to access the block parameters from the plot window, select Edit or click . For more information on the plot, see Show Plot. Settings Default: Off On Open the plot window when you double-click the block. Off Open the Block Parameters dialog box when double-clicking the block. Command-Line Information Parameter: LaunchViewOnOpen Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 Show Plot Open the plot window. Use the plot to view: • Linear system characteristics computed from the nonlinear Simulink model during simulation 10-121 Gain and Phase Margin Plot You must click this button before you simulate the model to view the linear characteristics. You can display additional characteristics, such as the peak response time and stability margins, of the linear system by right-clicking the plot and selecting Characteristics. • Bounds on the linear system characteristics You can specify bounds in the Bounds tab of the Block Parameters dialog box or right-click the plot and select Bounds > New Bound. For more information on the types of bounds you can specify on each plot, see “Verifiable Linear System Characteristics” on page 5-5 in the User’s Guide. You can modify bounds by dragging the bound segment or by right-clicking the plot and selecting Bounds > Edit Bound. Before you simulate the model, click Update Block to update the bound value in the block parameters. Typical tasks that you perform in the plot window include: • Opening the Block Parameters dialog box by clicking Edit. or selecting • Finding the block that the plot window corresponds to by clicking or selecting View > Highlight Simulink Block. This action makes the Simulink Editor active and highlights the block. • Simulating the model by clicking or selecting Simulation > Run. This action also linearizes the portion of the model between the specified linearization input and output. • Adding legend on the linear system characteristic plot by clicking See Also Check Gain and Phase Margins Tutorials • “Visualize Bode Response of Simulink Model During Simulation” on page 2-42 10-122 . Gain and Phase Margin Plot • “Visualize Linear System at Multiple Simulation Snapshots” on page 2-64 • “Visualize Linear System of a Continuous-Time Model Discretized During Simulation” on page 2-70 • Plotting Linear System Characteristics of a Chemical Reactor 10-123 Linear Step Response Plot Purpose Step response of linear system approximated from nonlinear Simulink model Library Simulink Control Design Description This block is same as the Check Linear Step Response Characteristics block except for different default parameter settings in the Bounds tab. Compute a linear system from a nonlinear Simulink model and plot the linear step response. During simulation, the software linearizes the portion of the model between specified linearization inputs and outputs, and plots the step response of the linear system. The Simulink model can be continuous- or discrete-time or multirate and can have time delays. Because you can specify only one linearization input/output pair in this block, the linear system is Single-Input Single-Output (SISO). You can specify step response bounds and view them on the plot. You can also check that the bounds are satisfied during simulation: • If all bounds are satisfied, the block does nothing. • If a bound is not satisfied, the block asserts, and a warning message appears at the MATLAB prompt. You can also specify that the block: - Evaluate a MATLAB expression. Stop the simulation and bring that block into focus. During simulation, the block can also output a logical assertion signal: • If all bounds are satisfied, the signal is true (1). • If a bound is not satisfied, the signal is false (0). You can add multiple Linear Step Response Plot blocks to compute and plot the linear step response of various portions of the model. 10-124 Linear Step Response Plot You can save the linear system as a variable in the MATLAB workspace. The block does not support code generation and can be used only in Normal simulation mode. Parameters The following table summarizes the Linear Step Response Plot block parameters, accessible via the block parameter dialog box. Parameters Task Configure linearization. Specify inputs and outputs (I/Os). In Linearizations tab: • “Linearization inputs/outputs” on page 10-287. • “Click a signal in the model to select it” on page 10-290. Specify settings. In Linearizations tab: • “Linearize on” on page 10-294. • “Snapshot times” on page 10-296. • “Trigger type” on page 10-297. Specify algorithm options. In Algorithm Options of Linearizations tab: • “Enable zero-crossing 10-125 Linear Step Response Plot Parameters Task detection” on page 10-298. • “Use exact delays” on page 10-300. • “Linear system sample time” on page 10-301. • “Sample time rate conversion method” on page 10-303. • “Prewarp frequency (rad/s)” on page 10-306. Specify labels for linear system I/Os and state names. In Labels of Linearizations tab: • “Use full block names” on page 10-307. • “Use bus signal names” on page 10-309. 10-126 Plot the linear system. Show Plot (Optional) Specify bounds on step response of the linear system for assertion. Include step response bound in assertion in Bounds tab. Linear Step Response Plot Task Parameters Specify assertion options (only when you specify bounds on the linear system). In Assertion tab: • “Enable assertion” on page 10-325. • “Simulation callback when assertion fails (optional)” on page 10-327. • “Stop simulation when assertion fails” on page 10-328. • “Output assertion signal” on page 10-329. Save linear system to MATLAB workspace. “Save data to workspace” on page 10-323 in Logging tab. Display plot window instead of block parameters dialog box on double-clicking the block. “Show plot on block open” on page 10-331. Linearization inputs/outputs Linearization inputs and outputs that define the portion of a nonlinear Simulink model to linearize. 1 Click . 10-127 Linear Step Response Plot The dialog box expands to display a Click a signal in the model to select it area and a new button. 2 Select a signal in the Simulink Editor. The selected signal appears as a Model signal in the Click a signal in the model to select it area. 3 (Optional) For buses, expand the bus signal to select an individual element. Tip For large buses, you can enter search text for filtering element names in the Filter by name edit box. The name match is case-sensitive. Additionally, you can enter MATLAB regular expression. To modify the filtering options, click . Filtering Options • “Enable regular expression” on page 10-291 • “Show filtered results as a flat list” on page 10-292 4 Click table. 10-128 to add the signal to the Linearization inputs/outputs Linear Step Response Plot The table displays the following information about the selected signal: Block : Port : Bus Element Name of the block associated with the input/output. The number adjacent to the block name is the port number where the selected bus signal is located. The last entry is the selected bus element name. Configuration Type of linearization point: • Input — An input point. • Output — An output point. • Input-Output — An input point immediately followed by an output point. • Output-Input — An output point immediately followed by an input point. • None — Signal selected but not specified as a linearization input or output. Open Loop If your model contains one or more feedback loops, you can choose to linearize an open- or closed-loop system. For example, you might want to linearize only the plant model within a feedback control loop. When such a feedback loop is present, select this option to insert an open loop point and remove the effect of the loop without manually breaking signal lines. 10-129 Linear Step Response Plot For determining gain and phase margins, in most cases, you open the loop. Note If you simulate the model without specifying an input or output, the software does not compute a linear system. Instead, you see a warning message at the MATLAB prompt. Settings No default Command-Line Information Use the getlinio and setlinio commands to specify linearization inputs and outputs. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-130 Linear Step Response Plot Click a signal in the model to select it Enables signal selection in the Simulink model. Appears only when you click . When this option appears, you also see the following changes: • A new button. Use to add a selected signal as a linearization input or output in the Linearization inputs/outputs table. For more information, see Linearization inputs/outputs. • changes to . Use to collapse the Click a signal in the model to select it area. Settings No default Command-Line Information Use the getlinio and setlinio commands to select signals as linearization inputs and outputs. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-131 Linear Step Response Plot Enable regular expression Enable the use of MATLAB regular expressions for filtering signal names. For example, entering t$ in the Filter by name edit box displays all signals whose names end with a lowercase t (and their immediate parents). For details, see “Regular Expressions”. Settings Default: On On Allow use of MATLAB regular expressions for filtering signal names. Off Disable use of MATLAB regular expressions for filtering signal names. Filtering treats the text you enter in the Filter by name edit box as a literal string. Dependencies Selecting the Options button on the right-hand side of the Filter by name edit box ( 10-132 ) enables this parameter. Linear Step Response Plot Show filtered results as a flat list Uses a flat list format to display the list of filtered signals, based on the search text in the Filter by name edit box. The flat list format uses dot notation to reflect the hierarchy of bus signals. The following is an example of a flat list format for a filtered set of nested bus signals. Settings Default: Off On Display the filtered list of signals using a flat list format, indicating bus hierarchies with dot notation instead of using a tree format. Off Display filtered bus hierarchies using a tree format. 10-133 Linear Step Response Plot Dependencies Selecting the Options button on the right-hand side of the Filter by name edit box ( 10-134 ) enables this parameter. Linear Step Response Plot Linearize on When to compute the linear system during simulation. Settings Default: Simulation snapshots Simulation snapshots Specific simulation time, specified in Snapshot times. Use when you: • Know one or more times when the model is at steady-state operating point • Want to compute the linear systems at specific times External trigger Trigger-based simulation event. Specify the trigger type in Trigger type. Use when a signal generated during simulation indicates steady-state operating point. Selecting this option adds a trigger port to the block. Use this port to connect the block to the trigger signal. For example, for an aircraft model, you might want to compute the linear system whenever the fuel mass is a fraction of the maximum fuel mass. In this case, model this condition as an external trigger. Dependencies • Setting this parameter to Simulation snapshots enables Snapshot times. • Setting this parameter to External trigger enables Trigger type. Command-Line Information Parameter: LinearizeAt 10-135 Linear Step Response Plot Type: string Value: 'SnapshotTimes' | 'ExternalTrigger' Default: 'SnapshotTimes' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-136 Linear Step Response Plot Snapshot times One or more simulation times. The linear system is computed at these times. Settings Default: 0 • For a different simulation time, enter the time. Use when you: - Want to plot the linear system at a specific time Know the approximate time when the model reaches steady-state operating point • For multiple simulation times, enter a vector. Use when you want to compute and plot linear systems at multiple times. Snapshot times must be less than or equal to the simulation time specified in the Simulink model. Dependencies Selecting Simulation snapshots in Linearize on enables this parameter. Command-Line Information Parameter: SnapshotTimes Type: string Value: 0 | positive real number | vector of positive real numbers Default: 0 See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-137 Linear Step Response Plot Trigger type Trigger type of an external trigger for computing linear system. Settings Default: Rising edge Rising edge Rising edge of the external trigger signal. Falling edge Falling edge of the external trigger signal. Dependencies Selecting External trigger in Linearize on enables this parameter. Command-Line Information Parameter: TriggerType Type: string Value: 'rising' | 'falling' Default: 'rising' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-138 Linear Step Response Plot Enable zero-crossing detection Enable zero-crossing detection to ensure that the software computes the linear system characteristics at the following simulation times: • The exact snapshot times, specified in Snapshot times. As shown in the following figure, when zero-crossing detection is enabled, the variable-step Simulink solver simulates the model at the snapshot time Tsnap. Tsnap may lie between the simulation time steps Tn-1 and Tn which are automatically chosen by the solver. Computes linear system characteristics at this time point Tn-1 Tsnap Tn Time • The exact times when an external trigger is detected, specified in Trigger type. As shown in the following figure, when zero-crossing detection is enabled, the variable-step Simulink solver simulates the model at the time, Ttrig, when the trigger signal is detected. Ttrig may lie between the simulation time steps Tn-1 and Tn which are automatically chosen by the solver. Trigger signal Amplitude 1 Computes linear system characteristics at this time point 0 Tn-1 Ttrig Tn Time For more information on zero-crossing detection, see “Zero-Crossing Detection” in the Simulink User Guide. 10-139 Linear Step Response Plot Settings Default: On On Compute linear system characteristics at the exact snapshot time or exact time when a trigger signal is detected. This setting is ignored if the Simulink solver is fixed step. Off Compute linear system characteristics at the simulation time steps that the variable-step solver chooses. The software may not compute the linear system at the exact snapshot time or exact time when a trigger signal is detected. Command-Line Information Parameter: ZeroCross Type: string Value: 'on' | 'off' Default: 'on' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-140 Linear Step Response Plot Use exact delays How to represent time delays in your linear model. Use this option if you have blocks in your model that have time delays. Settings Default: Off On Return a linear model with exact delay representations. Off Return a linear model with Padé approximations of delays, as specified in your Transport Delay and Variable Transport Delay blocks. Command-Line Information Parameter: UseExactDelayModel Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 Linear system sample time Sample time of the linear system computed during simulation. Use this parameter to: • Compute a discrete-time system with a specific sample time from a continuous-time system • Resample a discrete-time system with a different sample time • Compute a continuous-time system from a discrete-time system 10-141 Linear Step Response Plot When computing discrete-time systems from continuous-time systems and vice-versa, the software uses the conversion method specified in Sample time rate conversion method. Settings Default: auto auto. Computes the sample time as: • 0, for continuous-time models. • For models that have blocks with different sample times (multi-rate models), least common multiple of the sample times. For example, if you have a mix of continuous-time and discrete-time blocks with sample times of 0, 0.2 and 0.3, the sample time of the linear model is 0.6. Positive finite value. Use to compute: • A discrete-time linear system from a continuous-time system. • A discrete-time linear system from another discrete-time system with a different sample time 0 Use to compute a continuous-time linear system from a discrete-time model. Command-Line Information Parameter: SampleTime Type: string Value: auto | Positive finite value | 0 Default: auto See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-142 Linear Step Response Plot 10-143 Linear Step Response Plot Sample time rate conversion method Method for converting the sample time of single- or multi-rate models. This parameter is used only when the value of Linear system sample time is not auto. Settings Default: Zero-Order Hold Zero-Order Hold Zero-order hold, where the control inputs are assumed piecewise constant over the sampling time Ts. For more information, see “Zero-Order Hold” in Control System Toolbox User’s Guide. This method usually performs better in time domain. Tustin (bilinear) Bilinear (Tustin) approximation without frequency prewarping. The software rounds off fractional time delays to the nearest multiple of the sampling time. For more information, see “Tustin Approximation” in Control System Toolbox User’s Guide. This method usually perform better in the frequency domain. Tustin with Prewarping Bilinear (Tustin) approximation with frequency prewarping. Also specify the prewarp frequency in Prewarp frequency (rad/s). For more information, see “Tustin Approximation” in Control System Toolbox User’s Guide. This method usually perform better in the frequency domain. Use this method to ensure matching at frequency region of interest. Upsampling when possible, Zero-Order Hold otherwise Upsample a discrete-time system when possible and use Zero-Order Hold otherwise. 10-144 Linear Step Response Plot You can upsample only when you convert discrete-time system to a new sample time that is an integer-value-times faster than the sampling time of the original system. Upsampling when possible, Tustin otherwise Upsample a discrete-time system when possible and use Tustin (bilinear) otherwise. You can upsample only when you convert discrete-time system to a new sample time that is an integer-value-times faster than the sampling time of the original system. Upsampling when possible, Tustin with Prewarping otherwise Upsample a discrete-time system when possible and use Tustin with Prewarping otherwise. Also, specify the prewarp frequency in Prewarp frequency (rad/s). You can upsample only when you convert discrete-time system to a new sample time that is an integer-value-times faster than the sampling time of the original system. Dependencies Selecting either: • Tustin with Prewarping • Upsampling when possible, Tustin with Prewarping otherwise enables Prewarp frequency (rad/s). Command-Line Information Parameter: RateConversionMethod Type: string Value: 'zoh' | 'tustin' | 'prewarp'| 'upsampling_zoh'| 'upsampling_tustin'| 'upsampling_prewarp' Default: 'zoh' 10-145 Linear Step Response Plot See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 Prewarp frequency (rad/s) Prewarp frequency for Tustin method, specified in radians/second. Settings Default: 10 Positive scalar value, smaller than the Nyquist frequency before and after resampling. A value of 0 corresponds to the standard Tustin method without frequency prewarping. Dependencies Selecting either • Tustin with Prewarping • Upsampling when possible, Tustin with Prewarping otherwise in Sample time rate conversion method enables this parameter. Command-Line Information Parameter: PreWarpFreq Type: string Value: 10 | positive scalar value Default: 10 See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-146 Linear Step Response Plot Use full block names How the state, input and output names appear in the linear system computed during simulation. The linear system is a state-space object and system states and input/output names appear in following state-space object properties: Input, Output or State Name Appears in Which State-Space Object Property Linearization input name InputName Linearization output name OutputName State names StateName Settings Default: Off On Show state and input/output names with their path through the model hierarchy. For example, in the chemical reactor model, a state in the Integrator1 block of the CSTR subsystem appears with full path as scdcstr/CSTR/Integrator1. Off Show only state and input/output names. Use this option when the signal name is unique and you know where the signal is location in your Simulink model. For example, a state in the Integrator1 block of the CSTR subsystem appears as Integrator1. Command-Line Information Parameter: UseFullBlockNameLabels Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation 10-147 Linear Step Response Plot “Model Verification at Default Simulation Snapshot Time” on page 5-6 Use bus signal names How to label signals associated with linearization inputs and outputs on buses, in the linear system computed during simulation (applies only when you select an entire bus as an I/O point). Selecting an entire bus signal is not recommended. Instead, select individual bus elements. You cannot use this parameter when your model has mux/bus mixtures. Settings Default: Off On Use the signal names of the individual bus elements. Bus signal names appear when the input and output are at the output of the following blocks: • Root-level inport block containing a bus object • Bus creator block • Subsystem block whose source traces back to one of the following blocks: — Output of a bus creator block — Root-level inport block by passing through only virtual or nonvirtual subsystem boundaries Off Use the bus signal channel number. Command-Line Information Parameter: UseBusSignalLabels Type: string Value: 'on' | 'off' 10-148 Linear Step Response Plot Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-149 Linear Step Response Plot Include step response bound in assertion Check that the linear step response satisfies all the characteristics specified in: • Final value • Rise time and % Rise • Settling time and % Settling • % Overshoot • % Undershoot The software displays a warning if the step response violates the specified values. This parameter is used for assertion only if Enable assertion in the Assertion tab is selected. 10-150 Linear Step Response Plot The bounds also appear on the step response plot, as shown in the next figure. % Overshoot % Settling Final value % Rise Initial value % Undershoot Rise time Settling time If you clear Enable assertion, the bounds are not used for assertion but continue to appear on the plot. Settings Default: • Off for Linear Step Response Plot block. • On for Check Linear Step Response Characteristics block. On Check that the step response satisfies the specified bounds, during simulation. Off Do not check that the step response satisfies the specified bounds, during simulation. 10-151 Linear Step Response Plot Tips • Clearing this parameter disables the step response bounds and the software stops checking that the bounds are satisfied during simulation. The bound segments are also greyed out on the plot. • To only view the bounds on the plot, clear Enable assertion. Command-Line Information Parameter: EnableStepResponseBound Type: string Value: 'on' | 'off' Default: 'off' for Linear Step Response Plot block, 'on' for Check Linear Step Response Characteristics block. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-152 Linear Step Response Plot Final value Final value of the output signal level in response to a step input. Settings Default: • [] for Linear Step Response Plot block • 1 for Check Linear Step Response Characteristics block Finite real scalar. Tips • To assert that final value is satisfied, select both Include step response bound in assertion and Enable assertion. • To modify the final value from the plot window, drag the corresponding bound segment. Alternatively, right-click the segment, and select Bounds > Edit. Specify the new value in Final value. You must click Update Block before simulating the model. Command-Line Information Parameter: FinalValue Type: string Value: [] | 1 | finite real scalar. Must be specified inside single quotes (''). Default: '[]' for Linear Step Response Plot block, '1' for Check Linear Step Response Characteristics block. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-153 Linear Step Response Plot Rise time Time taken, in seconds, for the step response to reach a percentage of the final value specified in % Rise. Settings Default: • [] for Linear Step Response Plot block • 5 for Check Linear Step Response Characteristics block Finite positive real scalar, less than the settling time. Tips • To assert that the rise time is satisfied, select both Include step response bound in assertion and Enable assertion. • To modify the rise time from the plot window, drag the corresponding bound segment. Alternatively, right-click the segment, and select Bounds > Edit. Specify the new value in Rise time. You must click Update Block before simulating the model. Command-Line Information Parameter: RiseTime Type: string Value: [] | 5 | finite positive real scalar. Must be specified inside single quotes (''). Default: '[]' for Linear Step Response Plot block, '5' for Check Linear Step Response Characteristics block. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-154 Linear Step Response Plot % Rise The percentage of final value used with the Rise time. Settings Default: Minimum: 0 Maximum: 100 • [] for Linear Step Response Plot block • 80 for Check Linear Step Response Characteristics block Positive scalar, less than (100 – % settling). Tips • To assert that the percent rise is satisfied, select both Include step response bound in assertion and Enable assertion. • To modify the percent rise from the plot window, drag the corresponding bound segment. Alternatively, right-click the segment, and select Bounds > Edit. Specify the new value in % Rise. You must click Update Block before simulating the model. Command-Line Information Parameter: PercentRise Type: string Value: [] | 80 | positive scalar between 0 and 100. Must be specified inside single quotes (''). Default: '[]' for Linear Step Response Plot block, '80' for Check Linear Step Response Characteristics block. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-155 Linear Step Response Plot Settling time The time, in seconds, taken for the step response to settle within a specified range around the final value. This settling range is defined as the final value plus or minus the percentage of the final value, specified in % Settling. Settings Default: • [] for Linear Step Response Plot block • 7 for Check Linear Step Response Characteristics block Finite positive real scalar, greater than rise time. Tips • To assert that the settling time is satisfied, select both Include step response bound in assertion and Enable assertion. • To modify the settling time from the plot window, drag the corresponding bound segment. Alternatively, right-click the segment, and select Bounds > Edit. Specify the new value in Settling time. You must click Update Block before simulating the model. Command-Line Information Parameter: SettlingTime Type: string Value: [] | 7 | positive finite real scalar. Must be specified inside single quotes (''). Default: '[]' for Linear Step Response Plot block, '7' for Check Linear Step Response Characteristics block. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-156 Linear Step Response Plot % Settling The percentage of the final value that defines the settling range of the Settling time. Settings Default: Minimum: 0 Maximum: 100 • [] for Linear Step Response Plot block • 1 for Check Linear Step Response Characteristics block Real number, less than (100 – % rise) and less than % overshoot. Tips • To assert that the percent settling is satisfied, select both Include step response bound in assertion and Enable assertion. • To modify the percent settling from the plot window, drag the corresponding bound segment. Alternatively, right-click the segment, and select Bounds > Edit. Specify the new value in % Settling. You must click Update Block before simulating the model. Command-Line Information Parameter: PercentSettling Type: string Value: [] | 1 | real value between 0 and 100. Must be specified inside single quotes (''). Default: '[]' for Linear Step Response Plot block, '1' for Check Linear Step Response Characteristics block. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-157 Linear Step Response Plot % Overshoot The amount by which the step response can exceed the final value, specified as a percentage. Settings Default: Minimum: 0 Maximum: 100 • [] for Linear Step Response Plot block • 10 for Check Linear Step Response Characteristics block Real number, greater than % settling. Tips • To assert that the percent overshoot is satisfied, select both Include step response bound in assertion and Enable assertion. • To modify the percent overshoot from the plot window, drag the corresponding bound segment. Alternatively, right-click the segment, and select Bounds > Edit. Specify the new value in % Overshoot. You must click Update Block before simulating the model. Command-Line Information Parameter: PercentOvershoot Type: string Value: [] | 10 | real value between 0 and 100. Must be specified inside single quotes (''). Default: '[]' for Linear Step Response Plot block, '10' for Check Linear Step Response Characteristics block. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-158 Linear Step Response Plot % Undershoot The amount by which the step response can undershoot the initial value, specified as a percentage. Settings Default: Minimum: 0 Maximum: 100 • [] for Linear Step Response Plot block • 1 for Check Linear Step Response Characteristics block Real number. Tips • To assert that the percent undershoot is satisfied, select both Include step response bound in assertion and Enable assertion. • To modify the percent undershoot from the plot window, drag the corresponding bound segment. Alternatively, right-click the segment, and select Bounds > Edit. Specify the new value in % Undershoot. You must click Update Block before simulating the model. Command-Line Information Parameter: PercentUndershoot Type: string Value: [] | 1 | real value between 0 and 100. Must be specified inside single quotes (''). Default: '1' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-159 Linear Step Response Plot Save data to workspace Save one or more linear systems as a variable in MATLAB workspace to perform further linear analysis or control design. The workspace variable is a structure with time and values fields: • The time field stores the simulation time at which the linear system is computed. • The values field is a state-space object which stores the linear system. If the linear system is computed at multiple simulation times, values is an array of state-space objects. Settings Default: Off On Save the computed linear system to MATLAB workspace. Off Do not save the computed linear system to MATLAB workspace. Dependencies This parameter enables Variable name. Command-Line Information Parameter: SaveToWorkspace Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-160 Linear Step Response Plot Variable name Name of the workspace variable that stores one or more linear systems computed during simulation. The name must be unique among the variable names used in all data logging model blocks, such as Linear Analysis Plot blocks, Model Verification blocks, Scope blocks, To Workspace blocks, and simulation return variables such as time, states, and outputs. Settings Default: sys String. Dependencies Save data to workspace enables this parameter. Command-Line Information Parameter: SaveName Type: string Value: sys | any string. Must be specified inside single quotes (''). Default: 'sys' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-161 Linear Step Response Plot Enable assertion Enable the block to check that bounds specified and included for assertion in the Bounds tab are satisfied during simulation. Assertion fails if a bound is not satisfied. A warning, reporting the assertion failure, appears at the MATLAB prompt. If assertion fails, you can optionally specify that the block: • Execute a MATLAB expression, specified in Simulation callback when assertion fails (optional). • Stop the simulation and bring that block into focus, by selecting Stop simulation when assertion fails. For the Linear Analysis Plots blocks, this parameter has no effect because no bounds are included by default. If you want to use the Linear Analysis Plots blocks for assertion, specify and include bounds in the Bounds tab. Clearing this parameter disables assertion, i.e., the block no longer checks that specified bounds are satisfied. The block icon also updates to indicate that assertion is disabled. In the Configuration Parameters dialog box of the Simulink model, the Model Verification block enabling option in the Debugging area of Data Validity node, lets you to enable or disable all model verification blocks in a model, regardless of the setting of this option. Settings Default: On 10-162 Linear Step Response Plot On Check that bounds included for assertion in the Bounds tab are satisfied during simulation. A warning, reporting assertion failure, is displayed at the MATLAB prompt if bounds are violated. Off Do not check that bounds included for assertion are satisfied during simulation. Dependencies This parameter enables: • Simulation callback when assertion fails (optional) • Stop simulation when assertion fails Command-Line Information Parameter: enabled Type: string Value: 'on' | 'off' Default: 'on' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-163 Linear Step Response Plot Simulation callback when assertion fails (optional) MATLAB expression to execute when assertion fails. Because the expression is evaluated in the MATLAB workspace, define all variables used in the expression in that workspace. Settings No Default A MATLAB expression. Dependencies Enable assertion enables this parameter. Command-Line Information Parameter: callback Type: string Value: '' | MATLAB expression Default: '' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-164 Linear Step Response Plot Stop simulation when assertion fails Stop the simulation when a bound specified in the Bounds tab is violated during simulation, i.e., assertion fails. If you run the simulation from the Simulink Editor, the Simulation Diagnostics window opens to display an error message. Also, the block where the bound violation occurs is highlighted in the model. Settings Default: Off On Stop simulation if a bound specified in the Bounds tab is violated. Off Continue simulation if a bound is violated with a warning message at the MATLAB prompt. Tips • Because selecting this option stops the simulation as soon as the assertion fails, assertion failures that might occur later during the simulation are not reported. If you want all assertion failures to be reported, do not select this option. Dependencies Enable assertion enables this parameter. Command-Line Information Parameter: stopWhenAssertionFail Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-165 Linear Step Response Plot Output assertion signal Output a Boolean signal that, at each time step, is: • True (1) if assertion succeeds, i.e., all bounds are satisfied • False (1) if assertion fails, i.e., a bound is violated. The output signal data type is Boolean only if the Implement logic signals as Boolean data option in the Optimization pane of the Configuration Parameters dialog box of the Simulink model is selected. Otherwise, the data type of the output signal is double. Selecting this parameter adds an output port to the block that you can connect to any block in the model. Settings Default:Off On Output a Boolean signal to indicate assertion status. Adds a port to the block. Off Do not output a Boolean signal to indicate assertion status. Tips • Use this parameter to design complex assertion logic. For an example, see “Model Verification Using Simulink® Control Design™ and Simulink Verification Blocks” on page 5-25. Command-Line Information Parameter: export Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation 10-166 Linear Step Response Plot “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-167 Linear Step Response Plot Show plot on block open Open the plot window instead of the Block Parameters dialog box when you double-click the block in the Simulink model. Use this parameter if you prefer to open and perform tasks, such as adding or modifying bounds, in the plot window instead of the Block Parameters dialog box. If you want to access the block parameters from the plot window, select Edit or click . For more information on the plot, see Show Plot. Settings Default: Off On Open the plot window when you double-click the block. Off Open the Block Parameters dialog box when double-clicking the block. Command-Line Information Parameter: LaunchViewOnOpen Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 Show Plot Open the plot window. Use the plot to view: • Linear system characteristics computed from the nonlinear Simulink model during simulation 10-168 Linear Step Response Plot You must click this button before you simulate the model to view the linear characteristics. You can display additional characteristics, such as the peak response time and stability margins, of the linear system by right-clicking the plot and selecting Characteristics. • Bounds on the linear system characteristics You can specify bounds in the Bounds tab of the Block Parameters dialog box or right-click the plot and select Bounds > New Bound. For more information on the types of bounds you can specify on each plot, see “Verifiable Linear System Characteristics” on page 5-5 in the User’s Guide. You can modify bounds by dragging the bound segment or by right-clicking the plot and selecting Bounds > Edit Bound. Before you simulate the model, click Update Block to update the bound value in the block parameters. Typical tasks that you perform in the plot window include: • Opening the Block Parameters dialog box by clicking Edit. or selecting • Finding the block that the plot window corresponds to by clicking or selecting View > Highlight Simulink Block. This action makes the Simulink Editor active and highlights the block. • Simulating the model by clicking or selecting Simulation > Run. This action also linearizes the portion of the model between the specified linearization input and output. • Adding legend on the linear system characteristic plot by clicking See Also Check Linear Step Response Characteristics Tutorials • “Visualize Bode Response of Simulink Model During Simulation” on page 2-42 . 10-169 Linear Step Response Plot • “Visualize Linear System at Multiple Simulation Snapshots” on page 2-64 • “Visualize Linear System of a Continuous-Time Model Discretized During Simulation” on page 2-70 • Plotting Linear System Characteristics of a Chemical Reactor 10-170 Nichols Plot Purpose Nichols plot of linear system approximated from nonlinear Simulink model Library Simulink Control Design Description This block is same as the Check Nichols Characteristics block except for different default parameter settings in the Bounds tab. Compute a linear system from a nonlinear Simulink model and plot the linear system on a Nichols plot. During simulation, the software linearizes the portion of the model between specified linearization inputs and outputs, and plots the open-loop gain and phase of the linear system. The Simulink model can be continuous- or discrete-time or multirate and can have time delays. Because you can specify only one linearization input/output pair in this block, the linear system is Single-Input Single-Output (SISO). You can specify multiple open- and closed-loop gain and phase bounds and view them on the Nichols plot. You can also check that the bounds are satisfied during simulation: • If all bounds are satisfied, the block does nothing. • If a bound is not satisfied, the block asserts, and a warning message appears at the MATLAB prompt. You can also specify that the block: - Evaluate a MATLAB expression. Stop the simulation and bring that block into focus. During simulation, the block can also output a logical assertion signal: • If all bounds are satisfied, the signal is true (1). • If a bound is not satisfied, the signal is false (0). You can add multiple Nichols Plot blocks to compute and plot the gains and phases of various portions of the model. 10-171 Nichols Plot You can save the linear system as a variable in the MATLAB workspace. The block does not support code generation and can be used only in Normal simulation mode. Parameters The following table summarizes the Nichols Plot block parameters, accessible via the block parameter dialog box. Parameters Task Configure linearization. Specify inputs and outputs (I/Os). In Linearizations tab: • “Linearization inputs/outputs” on page 10-287. • “Click a signal in the model to select it” on page 10-290. Specify settings. In Linearizations tab: • “Linearize on” on page 10-294. • “Snapshot times” on page 10-296. • “Trigger type” on page 10-297. Specify algorithm options. In Algorithm Options of Linearizations tab: • “Enable zero-crossing 10-172 Nichols Plot Parameters Task detection” on page 10-298. • “Use exact delays” on page 10-300. • “Linear system sample time” on page 10-301. • “Sample time rate conversion method” on page 10-303. • “Prewarp frequency (rad/s)” on page 10-306. Specify labels for linear system I/Os and state names. In Labels of Linearizations tab: • “Use full block names” on page 10-307. • “Use bus signal names” on page 10-309. Plot the linear system. Show Plot Specify the feedback sign for closed-loop gain and phase margins. “Feedback sign” on page 10-216 in Bounds tab. 10-173 Nichols Plot Task Parameters (Optional) Specify bounds on gains and phases of the linear system for assertion. In Bounds tab: • Include gain and phase margins in assertion. • Include closed-loop peak gain in assertion. • Include open-loop gain-phase bound in assertion. Specify assertion options (only when you specify bounds on the linear system). In Assertion tab: • “Enable assertion” on page 10-325. • “Simulation callback when assertion fails (optional)” on page 10-327. • “Stop simulation when assertion fails” on page 10-328. • “Output assertion signal” on page 10-329. 10-174 Nichols Plot Task Parameters Save linear system to MATLAB workspace. “Save data to workspace” on page 10-323 in Logging tab. Display plot window instead of block parameters dialog box on double-clicking the block. “Show plot on block open” on page 10-331. Linearization inputs/outputs Linearization inputs and outputs that define the portion of a nonlinear Simulink model to linearize. 1 Click . The dialog box expands to display a Click a signal in the model to select it area and a new button. 2 Select a signal in the Simulink Editor. The selected signal appears as a Model signal in the Click a signal in the model to select it area. 3 (Optional) For buses, expand the bus signal to select an individual element. 10-175 Nichols Plot Tip For large buses, you can enter search text for filtering element names in the Filter by name edit box. The name match is case-sensitive. Additionally, you can enter MATLAB regular expression. To modify the filtering options, click . Filtering Options • “Enable regular expression” on page 10-291 • “Show filtered results as a flat list” on page 10-292 4 Click to add the signal to the Linearization inputs/outputs table. The table displays the following information about the selected signal: 10-176 Nichols Plot Block : Port : Bus Element Name of the block associated with the input/output. The number adjacent to the block name is the port number where the selected bus signal is located. The last entry is the selected bus element name. Configuration Type of linearization point: • Input — An input point. • Output — An output point. • Input-Output — An input point immediately followed by an output point. • Output-Input — An output point immediately followed by an input point. • None — Signal selected but not specified as a linearization input or output. Open Loop If your model contains one or more feedback loops, you can choose to linearize an open- or closed-loop system. For example, you might want to linearize only the plant model within a feedback control loop. When such a feedback loop is present, select this option to insert an open loop point and remove the effect of the loop without manually breaking signal lines. For determining gain and phase margins, in most cases, you open the loop. Note If you simulate the model without specifying an input or output, the software does not compute a linear system. Instead, you see a warning message at the MATLAB prompt. Settings No default 10-177 Nichols Plot Command-Line Information Use the getlinio and setlinio commands to specify linearization inputs and outputs. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-178 Nichols Plot Click a signal in the model to select it Enables signal selection in the Simulink model. Appears only when you click . When this option appears, you also see the following changes: • A new button. Use to add a selected signal as a linearization input or output in the Linearization inputs/outputs table. For more information, see Linearization inputs/outputs. • changes to . Use to collapse the Click a signal in the model to select it area. Settings No default Command-Line Information Use the getlinio and setlinio commands to select signals as linearization inputs and outputs. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-179 Nichols Plot Enable regular expression Enable the use of MATLAB regular expressions for filtering signal names. For example, entering t$ in the Filter by name edit box displays all signals whose names end with a lowercase t (and their immediate parents). For details, see “Regular Expressions”. Settings Default: On On Allow use of MATLAB regular expressions for filtering signal names. Off Disable use of MATLAB regular expressions for filtering signal names. Filtering treats the text you enter in the Filter by name edit box as a literal string. Dependencies Selecting the Options button on the right-hand side of the Filter by name edit box ( 10-180 ) enables this parameter. Nichols Plot Show filtered results as a flat list Uses a flat list format to display the list of filtered signals, based on the search text in the Filter by name edit box. The flat list format uses dot notation to reflect the hierarchy of bus signals. The following is an example of a flat list format for a filtered set of nested bus signals. Settings Default: Off On Display the filtered list of signals using a flat list format, indicating bus hierarchies with dot notation instead of using a tree format. Off Display filtered bus hierarchies using a tree format. 10-181 Nichols Plot Dependencies Selecting the Options button on the right-hand side of the Filter by name edit box ( 10-182 ) enables this parameter. Nichols Plot Linearize on When to compute the linear system during simulation. Settings Default: Simulation snapshots Simulation snapshots Specific simulation time, specified in Snapshot times. Use when you: • Know one or more times when the model is at steady-state operating point • Want to compute the linear systems at specific times External trigger Trigger-based simulation event. Specify the trigger type in Trigger type. Use when a signal generated during simulation indicates steady-state operating point. Selecting this option adds a trigger port to the block. Use this port to connect the block to the trigger signal. For example, for an aircraft model, you might want to compute the linear system whenever the fuel mass is a fraction of the maximum fuel mass. In this case, model this condition as an external trigger. Dependencies • Setting this parameter to Simulation snapshots enables Snapshot times. • Setting this parameter to External trigger enables Trigger type. Command-Line Information Parameter: LinearizeAt 10-183 Nichols Plot Type: string Value: 'SnapshotTimes' | 'ExternalTrigger' Default: 'SnapshotTimes' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-184 Nichols Plot Snapshot times One or more simulation times. The linear system is computed at these times. Settings Default: 0 • For a different simulation time, enter the time. Use when you: - Want to plot the linear system at a specific time Know the approximate time when the model reaches steady-state operating point • For multiple simulation times, enter a vector. Use when you want to compute and plot linear systems at multiple times. Snapshot times must be less than or equal to the simulation time specified in the Simulink model. Dependencies Selecting Simulation snapshots in Linearize on enables this parameter. Command-Line Information Parameter: SnapshotTimes Type: string Value: 0 | positive real number | vector of positive real numbers Default: 0 See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-185 Nichols Plot Trigger type Trigger type of an external trigger for computing linear system. Settings Default: Rising edge Rising edge Rising edge of the external trigger signal. Falling edge Falling edge of the external trigger signal. Dependencies Selecting External trigger in Linearize on enables this parameter. Command-Line Information Parameter: TriggerType Type: string Value: 'rising' | 'falling' Default: 'rising' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-186 Nichols Plot Enable zero-crossing detection Enable zero-crossing detection to ensure that the software computes the linear system characteristics at the following simulation times: • The exact snapshot times, specified in Snapshot times. As shown in the following figure, when zero-crossing detection is enabled, the variable-step Simulink solver simulates the model at the snapshot time Tsnap. Tsnap may lie between the simulation time steps Tn-1 and Tn which are automatically chosen by the solver. Computes linear system characteristics at this time point Tn-1 Tsnap Tn Time • The exact times when an external trigger is detected, specified in Trigger type. As shown in the following figure, when zero-crossing detection is enabled, the variable-step Simulink solver simulates the model at the time, Ttrig, when the trigger signal is detected. Ttrig may lie between the simulation time steps Tn-1 and Tn which are automatically chosen by the solver. Trigger signal Amplitude 1 Computes linear system characteristics at this time point 0 Tn-1 Ttrig Tn Time For more information on zero-crossing detection, see “Zero-Crossing Detection” in the Simulink User Guide. 10-187 Nichols Plot Settings Default: On On Compute linear system characteristics at the exact snapshot time or exact time when a trigger signal is detected. This setting is ignored if the Simulink solver is fixed step. Off Compute linear system characteristics at the simulation time steps that the variable-step solver chooses. The software may not compute the linear system at the exact snapshot time or exact time when a trigger signal is detected. Command-Line Information Parameter: ZeroCross Type: string Value: 'on' | 'off' Default: 'on' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-188 Nichols Plot Use exact delays How to represent time delays in your linear model. Use this option if you have blocks in your model that have time delays. Settings Default: Off On Return a linear model with exact delay representations. Off Return a linear model with Padé approximations of delays, as specified in your Transport Delay and Variable Transport Delay blocks. Command-Line Information Parameter: UseExactDelayModel Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-189 Nichols Plot Linear system sample time Sample time of the linear system computed during simulation. Use this parameter to: • Compute a discrete-time system with a specific sample time from a continuous-time system • Resample a discrete-time system with a different sample time • Compute a continuous-time system from a discrete-time system When computing discrete-time systems from continuous-time systems and vice-versa, the software uses the conversion method specified in Sample time rate conversion method. Settings Default: auto auto. Computes the sample time as: • 0, for continuous-time models. • For models that have blocks with different sample times (multi-rate models), least common multiple of the sample times. For example, if you have a mix of continuous-time and discrete-time blocks with sample times of 0, 0.2 and 0.3, the sample time of the linear model is 0.6. Positive finite value. Use to compute: • A discrete-time linear system from a continuous-time system. • A discrete-time linear system from another discrete-time system with a different sample time 0 Use to compute a continuous-time linear system from a discrete-time model. Command-Line Information Parameter: SampleTime 10-190 Nichols Plot Type: string Value: auto | Positive finite value | 0 Default: auto See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-191 Nichols Plot Sample time rate conversion method Method for converting the sample time of single- or multi-rate models. This parameter is used only when the value of Linear system sample time is not auto. Settings Default: Zero-Order Hold Zero-Order Hold Zero-order hold, where the control inputs are assumed piecewise constant over the sampling time Ts. For more information, see “Zero-Order Hold” in Control System Toolbox User’s Guide. This method usually performs better in time domain. Tustin (bilinear) Bilinear (Tustin) approximation without frequency prewarping. The software rounds off fractional time delays to the nearest multiple of the sampling time. For more information, see “Tustin Approximation” in Control System Toolbox User’s Guide. This method usually perform better in the frequency domain. Tustin with Prewarping Bilinear (Tustin) approximation with frequency prewarping. Also specify the prewarp frequency in Prewarp frequency (rad/s). For more information, see “Tustin Approximation” in Control System Toolbox User’s Guide. This method usually perform better in the frequency domain. Use this method to ensure matching at frequency region of interest. Upsampling when possible, Zero-Order Hold otherwise Upsample a discrete-time system when possible and use Zero-Order Hold otherwise. 10-192 Nichols Plot You can upsample only when you convert discrete-time system to a new sample time that is an integer-value-times faster than the sampling time of the original system. Upsampling when possible, Tustin otherwise Upsample a discrete-time system when possible and use Tustin (bilinear) otherwise. You can upsample only when you convert discrete-time system to a new sample time that is an integer-value-times faster than the sampling time of the original system. Upsampling when possible, Tustin with Prewarping otherwise Upsample a discrete-time system when possible and use Tustin with Prewarping otherwise. Also, specify the prewarp frequency in Prewarp frequency (rad/s). You can upsample only when you convert discrete-time system to a new sample time that is an integer-value-times faster than the sampling time of the original system. Dependencies Selecting either: • Tustin with Prewarping • Upsampling when possible, Tustin with Prewarping otherwise enables Prewarp frequency (rad/s). Command-Line Information Parameter: RateConversionMethod Type: string Value: 'zoh' | 'tustin' | 'prewarp'| 'upsampling_zoh'| 'upsampling_tustin'| 'upsampling_prewarp' Default: 'zoh' 10-193 Nichols Plot See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-194 Nichols Plot Prewarp frequency (rad/s) Prewarp frequency for Tustin method, specified in radians/second. Settings Default: 10 Positive scalar value, smaller than the Nyquist frequency before and after resampling. A value of 0 corresponds to the standard Tustin method without frequency prewarping. Dependencies Selecting either • Tustin with Prewarping • Upsampling when possible, Tustin with Prewarping otherwise in Sample time rate conversion method enables this parameter. Command-Line Information Parameter: PreWarpFreq Type: string Value: 10 | positive scalar value Default: 10 See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-195 Nichols Plot Use full block names How the state, input and output names appear in the linear system computed during simulation. The linear system is a state-space object and system states and input/output names appear in following state-space object properties: Input, Output or State Name Appears in Which State-Space Object Property Linearization input name InputName Linearization output name OutputName State names StateName Settings Default: Off On Show state and input/output names with their path through the model hierarchy. For example, in the chemical reactor model, a state in the Integrator1 block of the CSTR subsystem appears with full path as scdcstr/CSTR/Integrator1. Off Show only state and input/output names. Use this option when the signal name is unique and you know where the signal is location in your Simulink model. For example, a state in the Integrator1 block of the CSTR subsystem appears as Integrator1. Command-Line Information Parameter: UseFullBlockNameLabels Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation 10-196 Nichols Plot “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-197 Nichols Plot Use bus signal names How to label signals associated with linearization inputs and outputs on buses, in the linear system computed during simulation (applies only when you select an entire bus as an I/O point). Selecting an entire bus signal is not recommended. Instead, select individual bus elements. You cannot use this parameter when your model has mux/bus mixtures. Settings Default: Off On Use the signal names of the individual bus elements. Bus signal names appear when the input and output are at the output of the following blocks: • Root-level inport block containing a bus object • Bus creator block • Subsystem block whose source traces back to one of the following blocks: — Output of a bus creator block — Root-level inport block by passing through only virtual or nonvirtual subsystem boundaries Off Use the bus signal channel number. Command-Line Information Parameter: UseBusSignalLabels Type: string Value: 'on' | 'off' Default: 'off' 10-198 Nichols Plot See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-199 Nichols Plot Include gain and phase margins in assertion Check that the gain and phase margins are greater than the values specified in Gain margin (dB) > and Phase margin (deg) >, during simulation. The software displays a warning if the gain or phase margin is less than or equal to the specified value. By default, negative feedback, specified in Feedback sign, is used to compute the margins. This parameter is used for assertion only if Enable assertion in the Assertion tab is selected. You can specify multiple gain and phase margin bounds on the linear system. The bounds also appear on the Nichols plot. If you clear Enable assertion, the bounds are not used for assertion but continue to appear on the plot. Settings Default: • Off for Nichols Plot block. • On for Check Nichols Characteristics block. On Check that the gain and phase margins satisfy the specified values, during simulation. Off Do not check that the gain and phase margins satisfy the specified values, during simulation. Tips • Clearing this parameter disables the gain and phase margin bounds and the software stops checking that the gain and phase margins satisfy the bounds during simulation. The bounds are also greyed out on the plot. • To only view the gain and phase margin on the plot, clear Enable assertion. 10-200 Nichols Plot Command-Line Information Parameter: EnableMargins Type: string Value: 'on' | 'off' Default: 'off' for Nichols Plot block, 'on' for Check Nichols Characteristics block See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-201 Nichols Plot Gain margin (dB) > Gain margin, in decibels. By default, negative feedback, specified in Feedback sign, is used to compute the gain margin. Settings Default: [] for Nichols Plot block. 20 for Check Nichols Characteristics block. • Positive finite number for one bound. • Cell array of positive finite numbers for multiple bounds. Tips • To assert that the gain margin is satisfied, select both Include gain and phase margins in assertion and Enable assertion. • You can add or modify gain margins from the plot window: - To add new gain margin, right-click the plot, and select Bounds > New Bound. Select Gain margin in Design requirement type, and specify the margin in Gain margin. - To modify the gain margin, drag the segment. Alternatively, right-click the plot, and select Bounds > Edit Bound. Specify the new gain margin in Gain margin >. You must click Update Block before simulating the model. Command-Line Information Parameter: GainMargin Type: string Value: [] | 20 | positive finite value. Must be specified inside single quotes (''). Default: '[]' for Nichols Plot block, '20' for Check Nichols Characteristics block. 10-202 Nichols Plot See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-203 Nichols Plot Phase margin (deg) > Phase margin, in degrees. By default, negative feedback, specified in Feedback sign, is used to compute the phase margin. Settings [] for Nichols Plot block. 30 for Check Nichols Characteristics block. • Positive finite number for one bound. • Cell array of positive finite numbers for multiple bounds. Tips • To assert that the phase margin is satisfied, select both Include gain and phase margins in assertion and Enable assertion. • You can add or modify phase margins from the plot window: - To add new phase margin, right-click the plot, and select Bounds > New Bound. Select Phase margin in Design requirement type, and specify the margin in Phase margin. - To modify the phase margin, drag the segment. Alternatively, right-click the bound, and select Bounds > Edit Bound. Specify the new phase margin in Phase margin >. You must click Update Block before simulating the model. Command-Line Information Parameter: PhaseMargin Type: string Value: [] | 30 | positive finite value. Must be specified inside single quotes (''). Default: '[]' for Nichols Plot block, '30' for Check Nichols Characteristics block. See Also Plot Linear Characteristics of Simulink Models During Simulation 10-204 Nichols Plot “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-205 Nichols Plot Include closed-loop peak gain in assertion Check that the closed-loop peak gain is less than the value specified in Closed-loop peak gain (dB) <, during simulation. The software displays a warning if the closed-loop peak gain is greater than or equal to the specified value. By default, negative feedback, specified in Feedback sign, is used to compute the closed-loop peak gain. This parameter is used for assertion only if Enable assertion in the Assertion tab is selected. You can specify multiple closed-loop peak gain bounds on the linear system. The bound also appear on the Nichols plot as an m-circle. If you clear Enable assertion, the bounds are not used for assertion but continue to appear on the plot. Settings Default: Off On Check that the closed-loop peak gain satisfies the specified value, during simulation. Off Do not check that the closed-loop peak gain satisfies the specified value, during simulation. Tips • Clearing this parameter disables the closed-loop peak gain bound and the software stops checking that the peak gain satisfies the bounds during simulation. The bounds are greyed out on the plot. 10-206 Nichols Plot • To only view the closed-loop peak gain on the plot, clear Enable assertion. Command-Line Information Parameter: EnableCLPeakGain Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-207 Nichols Plot Closed-loop peak gain (dB) < Closed-loop peak gain, in decibels. By default, negative feedback, specified in Feedback sign, is used to compute the margins. Settings Default [] • Positive or negative finite number for one bound. • Cell array of positive or negative finite numbers for multiple bounds. Tips • To assert that the gain margin is satisfied, select both Include closed-loop peak gain in assertion and Enable assertion. • You can add or modify closed-loop peak gains from the plot window: - To add the closed-loop peak gain, right-click the plot, and select Bounds > New Bound. Select Closed-Loop peak gain in Design requirement type, and specify the gain in Closed-Loop peak gain <. - To modify the closed-loop peak gain, drag the segment. Alternatively, right-click the bound, and select Bounds > Edit Bound. Specify the new closed-loop peak gain in Closed-Loop peak gain <. You must click Update Block before simulating the model. Command-Line Information Parameter: CLPeakGain Type: string Value: [] | positive or negative number | cell array of positive or negative numbers. Must be specified inside single quotes (''). Default: '[]' 10-208 Nichols Plot See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-209 Nichols Plot Include open-loop gain-phase bound in assertion Check that the Nichols response satisfies open-loop gain and phase bounds, specified in Open-loop phases (deg) and Open-loop gains (dB), during simulation. The software displays a warning if the Nichols response violates the bounds. This parameter is used for assertion only if Enable assertion in the Assertion tab is selected. You can specify multiple gain and phase bounds on the linear systems computed during simulation. The bounds also appear on the Nichols plot. If you clear Enable assertion, the bounds are not used for assertion but continue to appear on the plot. Settings Default: Off On Check if the Nichols response satisfies the specified open-loop gain and phase bounds, during simulation. Off Do not check if the Nichols response satisfies the specified open-loop gain and phase bounds, during simulation. Tips • Clearing this parameter disables the gain-phase bound and the software stops checking that the gain and phase satisfy the bound during simulation. The bound segments are also greyed out on the plot. 10-210 Nichols Plot • To only view the bound on the plot, clear Enable assertion. Command-Line Information Parameter: EnableGainPhaseBound Type: string Value: 'on' | 'off' Default: 'off' 10-211 Nichols Plot Open-loop phases (deg) Open-loop phases, in degrees. Specify the corresponding open-loop gains in Open-loop gains (dB). Settings Default: [] Must be specified as start and end phases: • Positive or negative finite numbers for a single bound with one edge • Matrix of positive or negative finite numbers , for a single bound with multiple edges • Cell array of matrices with finite numbers for multiple bounds Tips • To assert that the open-loop gains and phases are satisfied, select both Include open-loop gain-phase bound in assertion and Enable assertion. • You can add or modify open-loop phases from the plot window: - To add a new phases, right-click the plot, and select Bounds > New Bound. Select Gain-Phase requirement in Design requirement type, and specify the phases in the Open-Loop phase column. Specify the corresponding gains in the Open-Loop gain column. - To modify the phases, drag the bound segment. Alternatively, right-click the segment, and select Bounds > Edit Bounds. Specify the new phases in the Open-Loop phase column. You must click Update Block before simulating the model. Command-Line Information Parameter: OLPhases Type: string Value: [] | positive or negative finite numbers | matrix of positive or negative finite numbers | cell array of 10-212 Nichols Plot matrices with finite numbers. Must be specified inside single quotes (''). Default: '[]' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-213 Nichols Plot Open-loop gains (dB) Open-loop gains, in decibels. Specify the corresponding open-loop phases in Open-loop phases (deg). Settings Default: [] Must be specified as start and end gains: • Positive or negative number for a single bound with one edge • Matrix of positive or negative finite numbers for a single bound with multiple edges • Cell array of matrices with finite numbers for multiple bounds Tips • To assert that the open-loop gains are satisfied, select both Include open-loop gain-phase bound in assertion and Enable assertion. • You can add or modify open-loop gains from the plot window: - To add a new gains, right-click the plot, and select Bounds > New Bound. Select Gain-Phase requirement in Design requirement type, and specify the gains in the Open-Loop phase column. Specify the phases in the Open-Loop phase column. - To modify the gains, drag the bound segment. Alternatively, right-click the segment, and select Bounds > Edit Bounds. Specify the new gains in the Open-Loop gain column. You must click Update Block before simulating the model. Command-Line Information Parameter: OLGains Type: string 10-214 Nichols Plot Value: [] | positive or negative number | matrix of positive or negative finite numbers | cell array of matrices with finite numbers. Must be specified inside single quotes (''). Default: '[]' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-215 Nichols Plot Feedback sign Feedback sign to determine the closed-loop gain and phase characteristics of the linear system, computed during simulation. To determine the feedback sign, check if the path defined by the linearization inputs and outputs include the feedback Sum block: • If the path includes the Sum block, specify positive feedback. • If the path does not include the Sum block, specify the same feedback sign as the Sum block. For example, in the aircraft model, the Check Gain and Phase Margins block includes the negative sign in the summation block. Therefore, the Feedback sign is positive. Settings Default: negative feedback negative feedback Use when the path defined by the linearization inputs/outputs does not include the Sum block and the Sum block feedback sign is -. positive feedback Use when: • The path defined by the linearization inputs/outputs includes the Sum block. • The path defined by the linearization inputs/outputs does not include the Sum block and the Sum block feedback sign is +. Command-Line Information Parameter: FeedbackSign Type: string Value: '-1' | '+1' Default: '-1' 10-216 Nichols Plot See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-217 Nichols Plot Save data to workspace Save one or more linear systems as a variable in MATLAB workspace to perform further linear analysis or control design. The workspace variable is a structure with time and values fields: • The time field stores the simulation time at which the linear system is computed. • The values field is a state-space object which stores the linear system. If the linear system is computed at multiple simulation times, values is an array of state-space objects. Settings Default: Off On Save the computed linear system to MATLAB workspace. Off Do not save the computed linear system to MATLAB workspace. Dependencies This parameter enables Variable name. Command-Line Information Parameter: SaveToWorkspace Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-218 Nichols Plot Variable name Name of the workspace variable that stores one or more linear systems computed during simulation. The name must be unique among the variable names used in all data logging model blocks, such as Linear Analysis Plot blocks, Model Verification blocks, Scope blocks, To Workspace blocks, and simulation return variables such as time, states, and outputs. Settings Default: sys String. Dependencies Save data to workspace enables this parameter. Command-Line Information Parameter: SaveName Type: string Value: sys | any string. Must be specified inside single quotes (''). Default: 'sys' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-219 Nichols Plot Enable assertion Enable the block to check that bounds specified and included for assertion in the Bounds tab are satisfied during simulation. Assertion fails if a bound is not satisfied. A warning, reporting the assertion failure, appears at the MATLAB prompt. If assertion fails, you can optionally specify that the block: • Execute a MATLAB expression, specified in Simulation callback when assertion fails (optional). • Stop the simulation and bring that block into focus, by selecting Stop simulation when assertion fails. For the Linear Analysis Plots blocks, this parameter has no effect because no bounds are included by default. If you want to use the Linear Analysis Plots blocks for assertion, specify and include bounds in the Bounds tab. Clearing this parameter disables assertion, i.e., the block no longer checks that specified bounds are satisfied. The block icon also updates to indicate that assertion is disabled. In the Configuration Parameters dialog box of the Simulink model, the Model Verification block enabling option in the Debugging area of Data Validity node, lets you to enable or disable all model verification blocks in a model, regardless of the setting of this option. Settings Default: On 10-220 Nichols Plot On Check that bounds included for assertion in the Bounds tab are satisfied during simulation. A warning, reporting assertion failure, is displayed at the MATLAB prompt if bounds are violated. Off Do not check that bounds included for assertion are satisfied during simulation. Dependencies This parameter enables: • Simulation callback when assertion fails (optional) • Stop simulation when assertion fails Command-Line Information Parameter: enabled Type: string Value: 'on' | 'off' Default: 'on' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-221 Nichols Plot Simulation callback when assertion fails (optional) MATLAB expression to execute when assertion fails. Because the expression is evaluated in the MATLAB workspace, define all variables used in the expression in that workspace. Settings No Default A MATLAB expression. Dependencies Enable assertion enables this parameter. Command-Line Information Parameter: callback Type: string Value: '' | MATLAB expression Default: '' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-222 Nichols Plot Stop simulation when assertion fails Stop the simulation when a bound specified in the Bounds tab is violated during simulation, i.e., assertion fails. If you run the simulation from the Simulink Editor, the Simulation Diagnostics window opens to display an error message. Also, the block where the bound violation occurs is highlighted in the model. Settings Default: Off On Stop simulation if a bound specified in the Bounds tab is violated. Off Continue simulation if a bound is violated with a warning message at the MATLAB prompt. Tips • Because selecting this option stops the simulation as soon as the assertion fails, assertion failures that might occur later during the simulation are not reported. If you want all assertion failures to be reported, do not select this option. Dependencies Enable assertion enables this parameter. Command-Line Information Parameter: stopWhenAssertionFail Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-223 Nichols Plot Output assertion signal Output a Boolean signal that, at each time step, is: • True (1) if assertion succeeds, i.e., all bounds are satisfied • False (1) if assertion fails, i.e., a bound is violated. The output signal data type is Boolean only if the Implement logic signals as Boolean data option in the Optimization pane of the Configuration Parameters dialog box of the Simulink model is selected. Otherwise, the data type of the output signal is double. Selecting this parameter adds an output port to the block that you can connect to any block in the model. Settings Default:Off On Output a Boolean signal to indicate assertion status. Adds a port to the block. Off Do not output a Boolean signal to indicate assertion status. Tips • Use this parameter to design complex assertion logic. For an example, see “Model Verification Using Simulink® Control Design™ and Simulink Verification Blocks” on page 5-25. Command-Line Information Parameter: export Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation 10-224 Nichols Plot “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-225 Nichols Plot Show plot on block open Open the plot window instead of the Block Parameters dialog box when you double-click the block in the Simulink model. Use this parameter if you prefer to open and perform tasks, such as adding or modifying bounds, in the plot window instead of the Block Parameters dialog box. If you want to access the block parameters from the plot window, select Edit or click . For more information on the plot, see Show Plot. Settings Default: Off On Open the plot window when you double-click the block. Off Open the Block Parameters dialog box when double-clicking the block. Command-Line Information Parameter: LaunchViewOnOpen Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 Show Plot Open the plot window. Use the plot to view: • Linear system characteristics computed from the nonlinear Simulink model during simulation 10-226 Nichols Plot You must click this button before you simulate the model to view the linear characteristics. You can display additional characteristics, such as the peak response time and stability margins, of the linear system by right-clicking the plot and selecting Characteristics. • Bounds on the linear system characteristics You can specify bounds in the Bounds tab of the Block Parameters dialog box or right-click the plot and select Bounds > New Bound. For more information on the types of bounds you can specify on each plot, see “Verifiable Linear System Characteristics” on page 5-5 in the User’s Guide. You can modify bounds by dragging the bound segment or by right-clicking the plot and selecting Bounds > Edit Bound. Before you simulate the model, click Update Block to update the bound value in the block parameters. Typical tasks that you perform in the plot window include: • Opening the Block Parameters dialog box by clicking Edit. or selecting • Finding the block that the plot window corresponds to by clicking or selecting View > Highlight Simulink Block. This action makes the Simulink Editor active and highlights the block. • Simulating the model by clicking or selecting Simulation > Run. This action also linearizes the portion of the model between the specified linearization input and output. • Adding legend on the linear system characteristic plot by clicking See Also Check Nichols Characteristics Tutorials • “Visualize Bode Response of Simulink Model During Simulation” on page 2-42 . 10-227 Nichols Plot • “Visualize Linear System at Multiple Simulation Snapshots” on page 2-64 • “Visualize Linear System of a Continuous-Time Model Discretized During Simulation” on page 2-70 • Plotting Linear System Characteristics of a Chemical Reactor 10-228 Pole-Zero Plot Purpose Pole-zero plot of linear system approximated from nonlinear Simulink model Library Simulink Control Design Description This block is same as the Check Pole-Zero Characteristics block except for different default parameter settings in the Bounds tab. Compute a linear system from a Simulink model and plot the poles and zeros on a pole-zero map. During simulation, the software linearizes the portion of the model between specified linearization inputs and outputs, and plots the poles and zeros of the linear system. The Simulink model can be continuous- or discrete-time or multirate and can have time delays. Because you can specify only one linearization input/output pair in this block, the linear system is Single-Input Single-Output (SISO). You can specify multiple bounds that approximate second-order characteristics on the pole locations and view them on the plot. You can also check that the bounds are satisfied during simulation: • If all bounds are satisfied, the block does nothing. • If a bound is not satisfied, the block asserts, and a warning message appears at the MATLAB prompt. You can also specify that the block: - Evaluate a MATLAB expression. Stop the simulation and bring that block into focus. During simulation, the block can also output a logical assertion signal: • If all bounds are satisfied, the signal is true (1). • If a bound is not satisfied, the signal is false (0). You can add multiple Pole-Zero Plot blocks to compute and plot the poles and zeros of various portions of the model. 10-229 Pole-Zero Plot You can save the linear system as a variable in the MATLAB workspace. The block does not support code generation and can be used only in Normal simulation mode. Parameters The following table summarizes the Pole-Zero Plot block parameters, accessible via the block parameter dialog box. Parameters Task Configure linearization. Specify inputs and outputs (I/Os). In Linearizations tab: • “Linearization inputs/outputs” on page 10-287. • “Click a signal in the model to select it” on page 10-290. Specify settings. In Linearizations tab: • “Linearize on” on page 10-294. • “Snapshot times” on page 10-296. • “Trigger type” on page 10-297. Specify algorithm options. In Algorithm Options of Linearizations tab: • “Enable zero-crossing 10-230 Pole-Zero Plot Parameters Task detection” on page 10-298. • “Use exact delays” on page 10-300. • “Linear system sample time” on page 10-301. • “Sample time rate conversion method” on page 10-303. • “Prewarp frequency (rad/s)” on page 10-306. Specify labels for linear system I/Os and state names. In Labels of Linearizations tab: • “Use full block names” on page 10-307. • “Use bus signal names” on page 10-309. Plot the linear system. Show Plot 10-231 Pole-Zero Plot Task Parameters (Optional) Specify bounds on pole-zero for assertion. In Bounds tab: • Include settling time bound in assertion. • Include percent overshoot bound in assertion. • Include damping ratio bound in assertion. • Include natural frequency bound in assertion. Specify assertion options (only when you specify bounds on the linear system). In Assertion tab: • “Enable assertion” on page 10-325. • “Simulation callback when assertion fails (optional)” on page 10-327. • “Stop simulation when assertion fails” on page 10-328. • “Output assertion signal” on page 10-329. 10-232 Pole-Zero Plot Task Parameters Save linear system to MATLAB workspace. “Save data to workspace” on page 10-323 in Logging tab. Display plot window instead of block parameters dialog box on double-clicking the block. “Show plot on block open” on page 10-331. Linearization inputs/outputs Linearization inputs and outputs that define the portion of a nonlinear Simulink model to linearize. 1 Click . The dialog box expands to display a Click a signal in the model to select it area and a new button. 2 Select a signal in the Simulink Editor. The selected signal appears as a Model signal in the Click a signal in the model to select it area. 3 (Optional) For buses, expand the bus signal to select an individual element. 10-233 Pole-Zero Plot Tip For large buses, you can enter search text for filtering element names in the Filter by name edit box. The name match is case-sensitive. Additionally, you can enter MATLAB regular expression. To modify the filtering options, click . Filtering Options • “Enable regular expression” on page 10-291 • “Show filtered results as a flat list” on page 10-292 4 Click to add the signal to the Linearization inputs/outputs table. The table displays the following information about the selected signal: 10-234 Pole-Zero Plot Block : Port : Bus Element Name of the block associated with the input/output. The number adjacent to the block name is the port number where the selected bus signal is located. The last entry is the selected bus element name. Configuration Type of linearization point: • Input — An input point. • Output — An output point. • Input-Output — An input point immediately followed by an output point. • Output-Input — An output point immediately followed by an input point. • None — Signal selected but not specified as a linearization input or output. Open Loop If your model contains one or more feedback loops, you can choose to linearize an open- or closed-loop system. For example, you might want to linearize only the plant model within a feedback control loop. When such a feedback loop is present, select this option to insert an open loop point and remove the effect of the loop without manually breaking signal lines. For determining gain and phase margins, in most cases, you open the loop. Note If you simulate the model without specifying an input or output, the software does not compute a linear system. Instead, you see a warning message at the MATLAB prompt. Settings No default 10-235 Pole-Zero Plot Command-Line Information Use the getlinio and setlinio commands to specify linearization inputs and outputs. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-236 Pole-Zero Plot Click a signal in the model to select it Enables signal selection in the Simulink model. Appears only when you click . When this option appears, you also see the following changes: • A new button. Use to add a selected signal as a linearization input or output in the Linearization inputs/outputs table. For more information, see Linearization inputs/outputs. • changes to . Use to collapse the Click a signal in the model to select it area. Settings No default Command-Line Information Use the getlinio and setlinio commands to select signals as linearization inputs and outputs. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-237 Pole-Zero Plot Enable regular expression Enable the use of MATLAB regular expressions for filtering signal names. For example, entering t$ in the Filter by name edit box displays all signals whose names end with a lowercase t (and their immediate parents). For details, see “Regular Expressions”. Settings Default: On On Allow use of MATLAB regular expressions for filtering signal names. Off Disable use of MATLAB regular expressions for filtering signal names. Filtering treats the text you enter in the Filter by name edit box as a literal string. Dependencies Selecting the Options button on the right-hand side of the Filter by name edit box ( 10-238 ) enables this parameter. Pole-Zero Plot Show filtered results as a flat list Uses a flat list format to display the list of filtered signals, based on the search text in the Filter by name edit box. The flat list format uses dot notation to reflect the hierarchy of bus signals. The following is an example of a flat list format for a filtered set of nested bus signals. Settings Default: Off On Display the filtered list of signals using a flat list format, indicating bus hierarchies with dot notation instead of using a tree format. Off Display filtered bus hierarchies using a tree format. 10-239 Pole-Zero Plot Dependencies Selecting the Options button on the right-hand side of the Filter by name edit box ( 10-240 ) enables this parameter. Pole-Zero Plot Linearize on When to compute the linear system during simulation. Settings Default: Simulation snapshots Simulation snapshots Specific simulation time, specified in Snapshot times. Use when you: • Know one or more times when the model is at steady-state operating point • Want to compute the linear systems at specific times External trigger Trigger-based simulation event. Specify the trigger type in Trigger type. Use when a signal generated during simulation indicates steady-state operating point. Selecting this option adds a trigger port to the block. Use this port to connect the block to the trigger signal. For example, for an aircraft model, you might want to compute the linear system whenever the fuel mass is a fraction of the maximum fuel mass. In this case, model this condition as an external trigger. Dependencies • Setting this parameter to Simulation snapshots enables Snapshot times. • Setting this parameter to External trigger enables Trigger type. Command-Line Information Parameter: LinearizeAt 10-241 Pole-Zero Plot Type: string Value: 'SnapshotTimes' | 'ExternalTrigger' Default: 'SnapshotTimes' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-242 Pole-Zero Plot Snapshot times One or more simulation times. The linear system is computed at these times. Settings Default: 0 • For a different simulation time, enter the time. Use when you: - Want to plot the linear system at a specific time Know the approximate time when the model reaches steady-state operating point • For multiple simulation times, enter a vector. Use when you want to compute and plot linear systems at multiple times. Snapshot times must be less than or equal to the simulation time specified in the Simulink model. Dependencies Selecting Simulation snapshots in Linearize on enables this parameter. Command-Line Information Parameter: SnapshotTimes Type: string Value: 0 | positive real number | vector of positive real numbers Default: 0 See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-243 Pole-Zero Plot Trigger type Trigger type of an external trigger for computing linear system. Settings Default: Rising edge Rising edge Rising edge of the external trigger signal. Falling edge Falling edge of the external trigger signal. Dependencies Selecting External trigger in Linearize on enables this parameter. Command-Line Information Parameter: TriggerType Type: string Value: 'rising' | 'falling' Default: 'rising' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-244 Pole-Zero Plot Enable zero-crossing detection Enable zero-crossing detection to ensure that the software computes the linear system characteristics at the following simulation times: • The exact snapshot times, specified in Snapshot times. As shown in the following figure, when zero-crossing detection is enabled, the variable-step Simulink solver simulates the model at the snapshot time Tsnap. Tsnap may lie between the simulation time steps Tn-1 and Tn which are automatically chosen by the solver. Computes linear system characteristics at this time point Tn-1 Tsnap Tn Time • The exact times when an external trigger is detected, specified in Trigger type. As shown in the following figure, when zero-crossing detection is enabled, the variable-step Simulink solver simulates the model at the time, Ttrig, when the trigger signal is detected. Ttrig may lie between the simulation time steps Tn-1 and Tn which are automatically chosen by the solver. Trigger signal Amplitude 1 Computes linear system characteristics at this time point 0 Tn-1 Ttrig Tn Time For more information on zero-crossing detection, see “Zero-Crossing Detection” in the Simulink User Guide. 10-245 Pole-Zero Plot Settings Default: On On Compute linear system characteristics at the exact snapshot time or exact time when a trigger signal is detected. This setting is ignored if the Simulink solver is fixed step. Off Compute linear system characteristics at the simulation time steps that the variable-step solver chooses. The software may not compute the linear system at the exact snapshot time or exact time when a trigger signal is detected. Command-Line Information Parameter: ZeroCross Type: string Value: 'on' | 'off' Default: 'on' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-246 Pole-Zero Plot Use exact delays How to represent time delays in your linear model. Use this option if you have blocks in your model that have time delays. Settings Default: Off On Return a linear model with exact delay representations. Off Return a linear model with Padé approximations of delays, as specified in your Transport Delay and Variable Transport Delay blocks. Command-Line Information Parameter: UseExactDelayModel Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-247 Pole-Zero Plot Linear system sample time Sample time of the linear system computed during simulation. Use this parameter to: • Compute a discrete-time system with a specific sample time from a continuous-time system • Resample a discrete-time system with a different sample time • Compute a continuous-time system from a discrete-time system When computing discrete-time systems from continuous-time systems and vice-versa, the software uses the conversion method specified in Sample time rate conversion method. Settings Default: auto auto. Computes the sample time as: • 0, for continuous-time models. • For models that have blocks with different sample times (multi-rate models), least common multiple of the sample times. For example, if you have a mix of continuous-time and discrete-time blocks with sample times of 0, 0.2 and 0.3, the sample time of the linear model is 0.6. Positive finite value. Use to compute: • A discrete-time linear system from a continuous-time system. • A discrete-time linear system from another discrete-time system with a different sample time 0 Use to compute a continuous-time linear system from a discrete-time model. Command-Line Information Parameter: SampleTime 10-248 Pole-Zero Plot Type: string Value: auto | Positive finite value | 0 Default: auto See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-249 Pole-Zero Plot Sample time rate conversion method Method for converting the sample time of single- or multi-rate models. This parameter is used only when the value of Linear system sample time is not auto. Settings Default: Zero-Order Hold Zero-Order Hold Zero-order hold, where the control inputs are assumed piecewise constant over the sampling time Ts. For more information, see “Zero-Order Hold” in Control System Toolbox User’s Guide. This method usually performs better in time domain. Tustin (bilinear) Bilinear (Tustin) approximation without frequency prewarping. The software rounds off fractional time delays to the nearest multiple of the sampling time. For more information, see “Tustin Approximation” in Control System Toolbox User’s Guide. This method usually perform better in the frequency domain. Tustin with Prewarping Bilinear (Tustin) approximation with frequency prewarping. Also specify the prewarp frequency in Prewarp frequency (rad/s). For more information, see “Tustin Approximation” in Control System Toolbox User’s Guide. This method usually perform better in the frequency domain. Use this method to ensure matching at frequency region of interest. Upsampling when possible, Zero-Order Hold otherwise Upsample a discrete-time system when possible and use Zero-Order Hold otherwise. 10-250 Pole-Zero Plot You can upsample only when you convert discrete-time system to a new sample time that is an integer-value-times faster than the sampling time of the original system. Upsampling when possible, Tustin otherwise Upsample a discrete-time system when possible and use Tustin (bilinear) otherwise. You can upsample only when you convert discrete-time system to a new sample time that is an integer-value-times faster than the sampling time of the original system. Upsampling when possible, Tustin with Prewarping otherwise Upsample a discrete-time system when possible and use Tustin with Prewarping otherwise. Also, specify the prewarp frequency in Prewarp frequency (rad/s). You can upsample only when you convert discrete-time system to a new sample time that is an integer-value-times faster than the sampling time of the original system. Dependencies Selecting either: • Tustin with Prewarping • Upsampling when possible, Tustin with Prewarping otherwise enables Prewarp frequency (rad/s). Command-Line Information Parameter: RateConversionMethod Type: string Value: 'zoh' | 'tustin' | 'prewarp'| 'upsampling_zoh'| 'upsampling_tustin'| 'upsampling_prewarp' Default: 'zoh' 10-251 Pole-Zero Plot See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-252 Pole-Zero Plot Prewarp frequency (rad/s) Prewarp frequency for Tustin method, specified in radians/second. Settings Default: 10 Positive scalar value, smaller than the Nyquist frequency before and after resampling. A value of 0 corresponds to the standard Tustin method without frequency prewarping. Dependencies Selecting either • Tustin with Prewarping • Upsampling when possible, Tustin with Prewarping otherwise in Sample time rate conversion method enables this parameter. Command-Line Information Parameter: PreWarpFreq Type: string Value: 10 | positive scalar value Default: 10 See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-253 Pole-Zero Plot Use full block names How the state, input and output names appear in the linear system computed during simulation. The linear system is a state-space object and system states and input/output names appear in following state-space object properties: Input, Output or State Name Appears in Which State-Space Object Property Linearization input name InputName Linearization output name OutputName State names StateName Settings Default: Off On Show state and input/output names with their path through the model hierarchy. For example, in the chemical reactor model, a state in the Integrator1 block of the CSTR subsystem appears with full path as scdcstr/CSTR/Integrator1. Off Show only state and input/output names. Use this option when the signal name is unique and you know where the signal is location in your Simulink model. For example, a state in the Integrator1 block of the CSTR subsystem appears as Integrator1. Command-Line Information Parameter: UseFullBlockNameLabels Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation 10-254 Pole-Zero Plot “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-255 Pole-Zero Plot Use bus signal names How to label signals associated with linearization inputs and outputs on buses, in the linear system computed during simulation (applies only when you select an entire bus as an I/O point). Selecting an entire bus signal is not recommended. Instead, select individual bus elements. You cannot use this parameter when your model has mux/bus mixtures. Settings Default: Off On Use the signal names of the individual bus elements. Bus signal names appear when the input and output are at the output of the following blocks: • Root-level inport block containing a bus object • Bus creator block • Subsystem block whose source traces back to one of the following blocks: — Output of a bus creator block — Root-level inport block by passing through only virtual or nonvirtual subsystem boundaries Off Use the bus signal channel number. Command-Line Information Parameter: UseBusSignalLabels Type: string Value: 'on' | 'off' Default: 'off' 10-256 Pole-Zero Plot See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-257 Pole-Zero Plot Include settling time bound in assertion Check that the pole locations satisfy approximate second-order bounds on the settling time, specified in Settling time (sec) <=. The software displays a warning if the poles lie outside the region defined by the settling time bound. This parameter is used for assertion only if Enable assertion in the Assertion tab is selected. You can specify multiple settling time bounds on the linear system. The bounds also appear on the pole-zero plot. If you clear Enable assertion, the bounds are not used for assertion but continue to appear on the plot. Settings Default: • Off for Pole-Zero Plot block. • On for Check Pole-Zero Characteristics block. On Check that each pole lies in the region defined by the settling time bound, during simulation. Off Do not check that each pole lies in the region defined by the settling time bound, during simulation. Tips • Clearing this parameter disables the settling time bounds and the software stops checking that the bounds are satisfied during simulation. The bounds are also greyed out on the plot. 10-258 Pole-Zero Plot • If you also specify other bounds, such as percent overshoot, damping ratio or natural frequency, but want to exclude the settling time bound from assertion, clear this parameter. • To only view the bounds on the plot, clear Enable assertion. Command-Line Information Parameter: EnableSettlingTime Type: string Value: 'on' | 'off' Default: 'off' for Pole-Zero Plot block, 'on' for Check Pole-Zero Characteristics block. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-259 Pole-Zero Plot Settling time (sec) <= Settling time, in seconds, of the second-order system. Settings Default: [] for Pole-Zero Plot block 1 for Check Pole-Zero Characteristics block • Finite positive real scalar for one bound. • Cell array of finite positive real scalars for multiple bounds. Tips • To assert that the settling time bounds are satisfied, select both Include settling time bound in assertion and Enable assertion. • You can add or modify settling time bounds from the plot window: - To add a new settling time bound, right-click the plot, and select Bounds > New Bound. Specify the new value in Settling time. - To modify a settling time bound, drag the corresponding bound segment. Alternatively, right-click the bound and select Bounds > Edit. Specify the new value in Settling time (sec) <. You must click Update Block before simulating the model. Command-Line Information Parameter: SettlingTime Type: string Value: [] | 1 | finite positive real scalar| cell array of finite positive real scalars. Must be specified inside single quotes (''). Default: '[]' for Pole-Zero Plot block, '1' for Check Pole-Zero Characteristics block. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-260 Pole-Zero Plot Include percent overshoot bound in assertion Check that the pole locations satisfy approximate second-order bounds on the percent overshoot, specified in Percent overshoot <=. The software displays a warning if the poles lie outside the region defined by the percent overshoot bound. This parameter is used for assertion only if Enable assertion in the Assertion tab is selected. You can specify multiple percent overshoot bounds on the linear system. The bounds also appear on the pole-zero plot. If you clear Enable assertion, the bounds are not used for assertion but continues to appear on the plot. Settings Default: Off for Pole-Zero Plot block. On for Check Pole-Zero Characteristics block. On Check that each pole lies in the region defined by the percent overshoot bound, during simulation. Off Do not check that each pole lies in the region defined by the percent overshoot bound, during simulation. Tips • Clearing this parameter disables the percent overshoot bounds and the software stops checking that the bounds are satisfied during simulation. The bounds are also greyed out on the plot. 10-261 Pole-Zero Plot • If you specify other bounds, such as settling time, damping ratio or natural frequency, but want to exclude the percent overshoot bound from assertion, clear this parameter. • To only view the bounds on the plot, clear Enable assertion. Command-Line Information Parameter: EnablePercentOvershoot Type: string Value: 'on' | 'off' Default: 'off' for Pole-Zero Plot block, 'on' for Check Pole-Zero Characteristics block. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-262 Pole-Zero Plot Percent overshoot <= Percent overshoot of the second-order system. Settings Default: [] for Pole-Zero Plot block 10 for Check Pole-Zero Characteristics block Minimum: 0 Maximum: 100 • Real scalar for single percent overshoot bound. • Cell array of real scalars for multiple percent overshoot bounds. Tips • The percent overshoot p.o can be expressed in terms of the damping ratio ζ, as: p.o. = 100 e− πζ / 1− ζ 2 . • To assert that the percent overshoot bounds are satisfied, select both Include percent overshoot bound in assertion and Enable assertion. • You can add or modify percent overshoot bounds from the plot window: - To add a new percent overshoot bound, right-click the plot, and select Bounds > New Bound. Select Percent overshoot in Design requirement type and specify the value in Percent overshoot <. - To modify a percent overshoot bound, drag the corresponding bound segment. Alternatively, right-click the bound, and select Bounds > Edit. Specify the new damping ratio for the corresponding percent overshoot value in Damping ratio >. You must click Update Block before simulating the model. 10-263 Pole-Zero Plot Command-Line Information Parameter: PercentOvershoot Type: string Value: [] | 10 | real scalar between 0 and 100 | cell array of real scalars between 0 and 100. Must be specified inside single quotes (''). Default: '[]' for Pole-Zero Plot block, '10' for Check Pole-Zero Characteristics block. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-264 Pole-Zero Plot Include damping ratio bound in assertion Check that the pole locations satisfy approximate second-order bounds on the damping ratio, specified in Damping ratio >=. The software displays a warning if the poles lie outside the region defined by the damping ratio bound. This parameter is used for assertion only if Enable assertion in the Assertion tab is selected. You can specify multiple damping ratio bounds on the linear system. The bounds also appear on the pole-zero plot. If you clear Enable assertion, the bounds are not used for assertion but continues to appear on the plot. Settings Default: Off On Check that each pole lies in the region defined by the damping ratio bound, during simulation. Off Do not check that each pole lies in the region defined by the damping ratio bound, during simulation. Tips • Clearing this parameter disables the damping ratio bounds and the software stops checking that the bounds are satisfied during simulation. The bounds are also greyed out on the plot. 10-265 Pole-Zero Plot • If you specify other bounds, such as settling time, percent overshoot or natural frequency, but want to exclude the damping ratio bound from assertion, clear this parameter. • To only view the bounds on the plot, clear Enable assertion. Command-Line Information Parameter: EnableDampingRatio Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-266 Pole-Zero Plot Damping ratio >= Damping ratio of the second-order system. Settings Default: [] Minimum: 0 Maximum: 1 • Finite positive real scalar for single damping ratio bound. • Cell array of finite positive real scalars for multiple damping ratio bounds. Tips • The damping ratio ζ, and percent overshoot p.o are related as: p.o. = 100 e− πζ / 1− ζ 2 . • To assert that the damping ratio bounds are satisfied, select both Include damping ratio bound in assertion and Enable assertion. • You can add or modify damping ratio bounds from the plot window: - To add a new damping ratio bound, right-click the plot and select Bounds > New Bound. Select Damping ratio in Design requirement type and specify the value in Damping ratio >. - To modify a damping ratio bound, drag the corresponding bound segment or right-click it and select Bounds > Edit. Specify the new value in Damping ratio >. You must click Update Block before simulating the model. Command-Line Information Parameter: DampingRatio Type: string 10-267 Pole-Zero Plot Value: [] | finite positive real scalar between 0 and 1 | cell array of finite positive real scalars between 0 and 1 . Must be specified inside single quotes (''). Default: '[]' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-268 Pole-Zero Plot Include natural frequency bound in assertion Check that the pole locations satisfy approximate second-order bounds on the natural frequency, specified in Natural frequency (rad/sec). The natural frequency bound can be greater than, less than or equal one or more specific values. The software displays a warning if the pole locations do not satisfy the region defined by the natural frequency bound. This parameter is used for assertion only if Enable assertion in the Assertion tab is selected. You can specify multiple natural frequency bounds on the linear system. The bounds also appear on the pole-zero plot. If Enable assertion is cleared, the bounds are not used for assertion but continue to appear on the plot. Settings Default: Off On Check that each pole lies in the region defined by the natural frequency bound, during simulation. Off Do not check that each pole lies in the region defined by the natural frequency bound, during simulation. Tips • Clearing this parameter disables the natural frequency bounds and the software stops checking that the bounds are satisfied during simulation. The bounds are also greyed out on the plot. 10-269 Pole-Zero Plot • If you also specify settling time, percent overshoot or damping ratio bounds and want to exclude the natural frequency bound from assertion, clear this parameter. • To only view the bounds on the plot, clear Enable assertion. Command-Line Information Parameter: NaturalFrequencyBound Type: string Value: 'on' | 'off' Default: 'off' 10-270 Pole-Zero Plot Natural frequency (rad/sec) Natural frequency of the second-order system. Settings Default: [] • Finite positive real scalar for single natural frequency bound. • Cell array of finite positive real scalars for multiple natural frequency bounds. Tips • To assert that the natural frequency bounds are satisfied, select both Include natural frequency bound in assertion and Enable assertion. • You can add or modify natural frequency bounds from the plot window: - To add a new natural frequency bound, right-click the plot and select Bounds > New Bound. Select Natural frequency in Design requirement type and specify the natural frequency in Natural frequency. - To modify a natural frequency bound, drag the corresponding bound segment or right-click it and select Bounds > Edit. Specify the new value in Natural frequency. You must click Update Block before simulating the model. Command-Line Information Parameter: NaturalFrequency Type: string Value: [] | positive finite real scalar | cell array of positive finite real scalars. Must be specified inside single quotes (''). Default: '[]' See Also Plot Linear Characteristics of Simulink Models During Simulation 10-271 Pole-Zero Plot “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-272 Pole-Zero Plot Save data to workspace Save one or more linear systems as a variable in MATLAB workspace to perform further linear analysis or control design. The workspace variable is a structure with time and values fields: • The time field stores the simulation time at which the linear system is computed. • The values field is a state-space object which stores the linear system. If the linear system is computed at multiple simulation times, values is an array of state-space objects. Settings Default: Off On Save the computed linear system to MATLAB workspace. Off Do not save the computed linear system to MATLAB workspace. Dependencies This parameter enables Variable name. Command-Line Information Parameter: SaveToWorkspace Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-273 Pole-Zero Plot Variable name Name of the workspace variable that stores one or more linear systems computed during simulation. The name must be unique among the variable names used in all data logging model blocks, such as Linear Analysis Plot blocks, Model Verification blocks, Scope blocks, To Workspace blocks, and simulation return variables such as time, states, and outputs. Settings Default: sys String. Dependencies Save data to workspace enables this parameter. Command-Line Information Parameter: SaveName Type: string Value: sys | any string. Must be specified inside single quotes (''). Default: 'sys' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-274 Pole-Zero Plot Enable assertion Enable the block to check that bounds specified and included for assertion in the Bounds tab are satisfied during simulation. Assertion fails if a bound is not satisfied. A warning, reporting the assertion failure, appears at the MATLAB prompt. If assertion fails, you can optionally specify that the block: • Execute a MATLAB expression, specified in Simulation callback when assertion fails (optional). • Stop the simulation and bring that block into focus, by selecting Stop simulation when assertion fails. For the Linear Analysis Plots blocks, this parameter has no effect because no bounds are included by default. If you want to use the Linear Analysis Plots blocks for assertion, specify and include bounds in the Bounds tab. Clearing this parameter disables assertion, i.e., the block no longer checks that specified bounds are satisfied. The block icon also updates to indicate that assertion is disabled. In the Configuration Parameters dialog box of the Simulink model, the Model Verification block enabling option in the Debugging area of Data Validity node, lets you to enable or disable all model verification blocks in a model, regardless of the setting of this option. Settings Default: On 10-275 Pole-Zero Plot On Check that bounds included for assertion in the Bounds tab are satisfied during simulation. A warning, reporting assertion failure, is displayed at the MATLAB prompt if bounds are violated. Off Do not check that bounds included for assertion are satisfied during simulation. Dependencies This parameter enables: • Simulation callback when assertion fails (optional) • Stop simulation when assertion fails Command-Line Information Parameter: enabled Type: string Value: 'on' | 'off' Default: 'on' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-276 Pole-Zero Plot Simulation callback when assertion fails (optional) MATLAB expression to execute when assertion fails. Because the expression is evaluated in the MATLAB workspace, define all variables used in the expression in that workspace. Settings No Default A MATLAB expression. Dependencies Enable assertion enables this parameter. Command-Line Information Parameter: callback Type: string Value: '' | MATLAB expression Default: '' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-277 Pole-Zero Plot Stop simulation when assertion fails Stop the simulation when a bound specified in the Bounds tab is violated during simulation, i.e., assertion fails. If you run the simulation from the Simulink Editor, the Simulation Diagnostics window opens to display an error message. Also, the block where the bound violation occurs is highlighted in the model. Settings Default: Off On Stop simulation if a bound specified in the Bounds tab is violated. Off Continue simulation if a bound is violated with a warning message at the MATLAB prompt. Tips • Because selecting this option stops the simulation as soon as the assertion fails, assertion failures that might occur later during the simulation are not reported. If you want all assertion failures to be reported, do not select this option. Dependencies Enable assertion enables this parameter. Command-Line Information Parameter: stopWhenAssertionFail Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-278 Pole-Zero Plot Output assertion signal Output a Boolean signal that, at each time step, is: • True (1) if assertion succeeds, i.e., all bounds are satisfied • False (1) if assertion fails, i.e., a bound is violated. The output signal data type is Boolean only if the Implement logic signals as Boolean data option in the Optimization pane of the Configuration Parameters dialog box of the Simulink model is selected. Otherwise, the data type of the output signal is double. Selecting this parameter adds an output port to the block that you can connect to any block in the model. Settings Default:Off On Output a Boolean signal to indicate assertion status. Adds a port to the block. Off Do not output a Boolean signal to indicate assertion status. Tips • Use this parameter to design complex assertion logic. For an example, see “Model Verification Using Simulink® Control Design™ and Simulink Verification Blocks” on page 5-25. Command-Line Information Parameter: export Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation 10-279 Pole-Zero Plot “Model Verification at Default Simulation Snapshot Time” on page 5-6 Show plot on block open Open the plot window instead of the Block Parameters dialog box when you double-click the block in the Simulink model. Use this parameter if you prefer to open and perform tasks, such as adding or modifying bounds, in the plot window instead of the Block Parameters dialog box. If you want to access the block parameters from the plot window, select Edit or click . For more information on the plot, see Show Plot. Settings Default: Off On Open the plot window when you double-click the block. Off Open the Block Parameters dialog box when double-clicking the block. Command-Line Information Parameter: LaunchViewOnOpen Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 Show Plot Open the plot window. Use the plot to view: 10-280 Pole-Zero Plot • Linear system characteristics computed from the nonlinear Simulink model during simulation You must click this button before you simulate the model to view the linear characteristics. You can display additional characteristics, such as the peak response time and stability margins, of the linear system by right-clicking the plot and selecting Characteristics. • Bounds on the linear system characteristics You can specify bounds in the Bounds tab of the Block Parameters dialog box or right-click the plot and select Bounds > New Bound. For more information on the types of bounds you can specify on each plot, see “Verifiable Linear System Characteristics” on page 5-5 in the User’s Guide. You can modify bounds by dragging the bound segment or by right-clicking the plot and selecting Bounds > Edit Bound. Before you simulate the model, click Update Block to update the bound value in the block parameters. Typical tasks that you perform in the plot window include: • Opening the Block Parameters dialog box by clicking Edit. or selecting • Finding the block that the plot window corresponds to by clicking or selecting View > Highlight Simulink Block. This action makes the Simulink Editor active and highlights the block. • Simulating the model by clicking or selecting Simulation > Run. This action also linearizes the portion of the model between the specified linearization input and output. • Adding legend on the linear system characteristic plot by clicking See Also . Check Pole-Zero Characteristics 10-281 Pole-Zero Plot Tutorials • “Visualize Bode Response of Simulink Model During Simulation” on page 2-42 • “Visualize Linear System at Multiple Simulation Snapshots” on page 2-64 • “Visualize Linear System of a Continuous-Time Model Discretized During Simulation” on page 2-70 • Plotting Linear System Characteristics of a Chemical Reactor 10-282 Singular Value Plot Purpose Singular value plot of linear system approximated from nonlinear Simulink model Library Simulink Control Design Description This block is same as the Check Singular Value Characteristics block except for different default parameter settings in the Bounds tab. Compute a linear system from a nonlinear Simulink model and plot the linear system on a singular value plot. During simulation, the software linearizes the portion of the model between specified linearization inputs and outputs, and plots the singular values of the linear system. The Simulink model can be continuous- or discrete-time or multirate, and can have time delays. The linear system can be Single-Input Single-Output (SISO) or Multi-Input Multi-Output (MIMO). For MIMO systems, the plots for all input/output combinations are displayed. You can specify piecewise-linear frequency-dependent upper and lower singular value bounds and view them on the plot. You can also check that the bounds are satisfied during simulation: • If all bounds are satisfied, the block does nothing. • If a bound is not satisfied, the block asserts, and a warning message appears at the MATLAB prompt. You can also specify that the block: - Evaluate a MATLAB expression. Stop the simulation and bring that block into focus. During simulation, the block can also output a logical assertion signal: • If all bounds are satisfied, the signal is true (1). • If a bound is not satisfied, the signal is false (0). For MIMO systems, the bounds apply to the singular values of linear systems computed for all input/output combinations. 10-283 Singular Value Plot You can add multiple Singular Value Plot blocks to compute and plot the singular values of various portions of the model. You can save the linear system as a variable in the MATLAB workspace. The block does not support code generation and can be used only in Normal simulation mode. Parameters The following table summarizes the Singular Value Plot block parameters, accessible via the block parameter dialog box. Parameters Task Configure linearization. Specify inputs and outputs (I/Os). In Linearizations tab: • “Linearization inputs/outputs” on page 10-287. • “Click a signal in the model to select it” on page 10-290. Specify settings. In Linearizations tab: • “Linearize on” on page 10-294. • “Snapshot times” on page 10-296. • “Trigger type” on page 10-297. Specify algorithm options. 10-284 In Algorithm Options of Linearizations tab: Singular Value Plot Parameters Task • “Enable zero-crossing detection” on page 10-298. • “Use exact delays” on page 10-300. • “Linear system sample time” on page 10-301. • “Sample time rate conversion method” on page 10-303. • “Prewarp frequency (rad/s)” on page 10-306. Specify labels for linear system I/Os and state names. In Labels of Linearizations tab: • “Use full block names” on page 10-307. • “Use bus signal names” on page 10-309. Plot the linear system. Show Plot 10-285 Singular Value Plot Task Parameters (Optional) Specify bounds on singular values for assertion. In Bounds tab: • Include upper singular value bound in assertion. • Include lower singular value bound in assertion. Specify assertion options (only when you specify bounds on the linear system). In Assertion tab: • “Enable assertion” on page 10-325. • “Simulation callback when assertion fails (optional)” on page 10-327. • “Stop simulation when assertion fails” on page 10-328. • “Output assertion signal” on page 10-329. 10-286 Save linear system to MATLAB workspace. “Save data to workspace” on page 10-323 in Logging tab. Display plot window instead of block parameters dialog box on double-clicking the block. “Show plot on block open” on page 10-331. Singular Value Plot Linearization inputs/outputs Linearization inputs and outputs that define the portion of a nonlinear Simulink model to linearize. 1 Click . The dialog box expands to display a Click a signal in the model to select it area and a new button. 2 Select a signal in the Simulink Editor. The selected signal appears as a Model signal in the Click a signal in the model to select it area. 3 (Optional) For buses, expand the bus signal to select an individual element. Tip For large buses, you can enter search text for filtering element names in the Filter by name edit box. The name match is case-sensitive. Additionally, you can enter MATLAB regular expression. To modify the filtering options, click . Filtering Options • “Enable regular expression” on page 10-291 • “Show filtered results as a flat list” on page 10-292 10-287 Singular Value Plot 4 Click to add the signal to the Linearization inputs/outputs table. The table displays the following information about the selected signal: Block : Port : Bus Element Name of the block associated with the input/output. The number adjacent to the block name is the port number where the selected bus signal is located. The last entry is the selected bus element name. Configuration Type of linearization point: • Input — An input point. • Output — An output point. • Input-Output — An input point immediately followed by an output point. • Output-Input — An output point immediately followed by an input point. • None — Signal selected but not specified as a linearization input or output. Open Loop 10-288 If your model contains one or more feedback loops, you can choose to linearize an open- or closed-loop system. For example, you might want to linearize only the plant model within a feedback control loop. When such a feedback loop is present, select this option to insert an open loop point Singular Value Plot and remove the effect of the loop without manually breaking signal lines. For determining gain and phase margins, in most cases, you open the loop. Note If you simulate the model without specifying an input or output, the software does not compute a linear system. Instead, you see a warning message at the MATLAB prompt. Settings No default Command-Line Information Use the getlinio and setlinio commands to specify linearization inputs and outputs. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-289 Singular Value Plot Click a signal in the model to select it Enables signal selection in the Simulink model. Appears only when you click . When this option appears, you also see the following changes: • A new button. Use to add a selected signal as a linearization input or output in the Linearization inputs/outputs table. For more information, see Linearization inputs/outputs. • changes to . Use to collapse the Click a signal in the model to select it area. Settings No default Command-Line Information Use the getlinio and setlinio commands to select signals as linearization inputs and outputs. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-290 Singular Value Plot Enable regular expression Enable the use of MATLAB regular expressions for filtering signal names. For example, entering t$ in the Filter by name edit box displays all signals whose names end with a lowercase t (and their immediate parents). For details, see “Regular Expressions”. Settings Default: On On Allow use of MATLAB regular expressions for filtering signal names. Off Disable use of MATLAB regular expressions for filtering signal names. Filtering treats the text you enter in the Filter by name edit box as a literal string. Dependencies Selecting the Options button on the right-hand side of the Filter by name edit box ( ) enables this parameter. 10-291 Singular Value Plot Show filtered results as a flat list Uses a flat list format to display the list of filtered signals, based on the search text in the Filter by name edit box. The flat list format uses dot notation to reflect the hierarchy of bus signals. The following is an example of a flat list format for a filtered set of nested bus signals. Settings Default: Off On Display the filtered list of signals using a flat list format, indicating bus hierarchies with dot notation instead of using a tree format. Off Display filtered bus hierarchies using a tree format. 10-292 Singular Value Plot Dependencies Selecting the Options button on the right-hand side of the Filter by name edit box ( ) enables this parameter. 10-293 Singular Value Plot Linearize on When to compute the linear system during simulation. Settings Default: Simulation snapshots Simulation snapshots Specific simulation time, specified in Snapshot times. Use when you: • Know one or more times when the model is at steady-state operating point • Want to compute the linear systems at specific times External trigger Trigger-based simulation event. Specify the trigger type in Trigger type. Use when a signal generated during simulation indicates steady-state operating point. Selecting this option adds a trigger port to the block. Use this port to connect the block to the trigger signal. For example, for an aircraft model, you might want to compute the linear system whenever the fuel mass is a fraction of the maximum fuel mass. In this case, model this condition as an external trigger. Dependencies • Setting this parameter to Simulation snapshots enables Snapshot times. • Setting this parameter to External trigger enables Trigger type. Command-Line Information Parameter: LinearizeAt 10-294 Singular Value Plot Type: string Value: 'SnapshotTimes' | 'ExternalTrigger' Default: 'SnapshotTimes' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-295 Singular Value Plot Snapshot times One or more simulation times. The linear system is computed at these times. Settings Default: 0 • For a different simulation time, enter the time. Use when you: - Want to plot the linear system at a specific time Know the approximate time when the model reaches steady-state operating point • For multiple simulation times, enter a vector. Use when you want to compute and plot linear systems at multiple times. Snapshot times must be less than or equal to the simulation time specified in the Simulink model. Dependencies Selecting Simulation snapshots in Linearize on enables this parameter. Command-Line Information Parameter: SnapshotTimes Type: string Value: 0 | positive real number | vector of positive real numbers Default: 0 See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-296 Singular Value Plot Trigger type Trigger type of an external trigger for computing linear system. Settings Default: Rising edge Rising edge Rising edge of the external trigger signal. Falling edge Falling edge of the external trigger signal. Dependencies Selecting External trigger in Linearize on enables this parameter. Command-Line Information Parameter: TriggerType Type: string Value: 'rising' | 'falling' Default: 'rising' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-297 Singular Value Plot Enable zero-crossing detection Enable zero-crossing detection to ensure that the software computes the linear system characteristics at the following simulation times: • The exact snapshot times, specified in Snapshot times. As shown in the following figure, when zero-crossing detection is enabled, the variable-step Simulink solver simulates the model at the snapshot time Tsnap. Tsnap may lie between the simulation time steps Tn-1 and Tn which are automatically chosen by the solver. Computes linear system characteristics at this time point Tn-1 Tsnap Tn Time • The exact times when an external trigger is detected, specified in Trigger type. As shown in the following figure, when zero-crossing detection is enabled, the variable-step Simulink solver simulates the model at the time, Ttrig, when the trigger signal is detected. Ttrig may lie between the simulation time steps Tn-1 and Tn which are automatically chosen by the solver. Trigger signal Amplitude 1 Computes linear system characteristics at this time point 0 Tn-1 Ttrig Tn Time For more information on zero-crossing detection, see “Zero-Crossing Detection” in the Simulink User Guide. 10-298 Singular Value Plot Settings Default: On On Compute linear system characteristics at the exact snapshot time or exact time when a trigger signal is detected. This setting is ignored if the Simulink solver is fixed step. Off Compute linear system characteristics at the simulation time steps that the variable-step solver chooses. The software may not compute the linear system at the exact snapshot time or exact time when a trigger signal is detected. Command-Line Information Parameter: ZeroCross Type: string Value: 'on' | 'off' Default: 'on' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-299 Singular Value Plot Use exact delays How to represent time delays in your linear model. Use this option if you have blocks in your model that have time delays. Settings Default: Off On Return a linear model with exact delay representations. Off Return a linear model with Padé approximations of delays, as specified in your Transport Delay and Variable Transport Delay blocks. Command-Line Information Parameter: UseExactDelayModel Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-300 Singular Value Plot Linear system sample time Sample time of the linear system computed during simulation. Use this parameter to: • Compute a discrete-time system with a specific sample time from a continuous-time system • Resample a discrete-time system with a different sample time • Compute a continuous-time system from a discrete-time system When computing discrete-time systems from continuous-time systems and vice-versa, the software uses the conversion method specified in Sample time rate conversion method. Settings Default: auto auto. Computes the sample time as: • 0, for continuous-time models. • For models that have blocks with different sample times (multi-rate models), least common multiple of the sample times. For example, if you have a mix of continuous-time and discrete-time blocks with sample times of 0, 0.2 and 0.3, the sample time of the linear model is 0.6. Positive finite value. Use to compute: • A discrete-time linear system from a continuous-time system. • A discrete-time linear system from another discrete-time system with a different sample time 0 Use to compute a continuous-time linear system from a discrete-time model. Command-Line Information Parameter: SampleTime 10-301 Singular Value Plot Type: string Value: auto | Positive finite value | 0 Default: auto See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-302 Singular Value Plot Sample time rate conversion method Method for converting the sample time of single- or multi-rate models. This parameter is used only when the value of Linear system sample time is not auto. Settings Default: Zero-Order Hold Zero-Order Hold Zero-order hold, where the control inputs are assumed piecewise constant over the sampling time Ts. For more information, see “Zero-Order Hold” in Control System Toolbox User’s Guide. This method usually performs better in time domain. Tustin (bilinear) Bilinear (Tustin) approximation without frequency prewarping. The software rounds off fractional time delays to the nearest multiple of the sampling time. For more information, see “Tustin Approximation” in Control System Toolbox User’s Guide. This method usually perform better in the frequency domain. Tustin with Prewarping Bilinear (Tustin) approximation with frequency prewarping. Also specify the prewarp frequency in Prewarp frequency (rad/s). For more information, see “Tustin Approximation” in Control System Toolbox User’s Guide. This method usually perform better in the frequency domain. Use this method to ensure matching at frequency region of interest. Upsampling when possible, Zero-Order Hold otherwise Upsample a discrete-time system when possible and use Zero-Order Hold otherwise. 10-303 Singular Value Plot You can upsample only when you convert discrete-time system to a new sample time that is an integer-value-times faster than the sampling time of the original system. Upsampling when possible, Tustin otherwise Upsample a discrete-time system when possible and use Tustin (bilinear) otherwise. You can upsample only when you convert discrete-time system to a new sample time that is an integer-value-times faster than the sampling time of the original system. Upsampling when possible, Tustin with Prewarping otherwise Upsample a discrete-time system when possible and use Tustin with Prewarping otherwise. Also, specify the prewarp frequency in Prewarp frequency (rad/s). You can upsample only when you convert discrete-time system to a new sample time that is an integer-value-times faster than the sampling time of the original system. Dependencies Selecting either: • Tustin with Prewarping • Upsampling when possible, Tustin with Prewarping otherwise enables Prewarp frequency (rad/s). Command-Line Information Parameter: RateConversionMethod Type: string Value: 'zoh' | 'tustin' | 'prewarp'| 'upsampling_zoh'| 'upsampling_tustin'| 'upsampling_prewarp' Default: 'zoh' 10-304 Singular Value Plot See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-305 Singular Value Plot Prewarp frequency (rad/s) Prewarp frequency for Tustin method, specified in radians/second. Settings Default: 10 Positive scalar value, smaller than the Nyquist frequency before and after resampling. A value of 0 corresponds to the standard Tustin method without frequency prewarping. Dependencies Selecting either • Tustin with Prewarping • Upsampling when possible, Tustin with Prewarping otherwise in Sample time rate conversion method enables this parameter. Command-Line Information Parameter: PreWarpFreq Type: string Value: 10 | positive scalar value Default: 10 See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-306 Singular Value Plot Use full block names How the state, input and output names appear in the linear system computed during simulation. The linear system is a state-space object and system states and input/output names appear in following state-space object properties: Input, Output or State Name Appears in Which State-Space Object Property Linearization input name InputName Linearization output name OutputName State names StateName Settings Default: Off On Show state and input/output names with their path through the model hierarchy. For example, in the chemical reactor model, a state in the Integrator1 block of the CSTR subsystem appears with full path as scdcstr/CSTR/Integrator1. Off Show only state and input/output names. Use this option when the signal name is unique and you know where the signal is location in your Simulink model. For example, a state in the Integrator1 block of the CSTR subsystem appears as Integrator1. Command-Line Information Parameter: UseFullBlockNameLabels Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation 10-307 Singular Value Plot “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-308 Singular Value Plot Use bus signal names How to label signals associated with linearization inputs and outputs on buses, in the linear system computed during simulation (applies only when you select an entire bus as an I/O point). Selecting an entire bus signal is not recommended. Instead, select individual bus elements. You cannot use this parameter when your model has mux/bus mixtures. Settings Default: Off On Use the signal names of the individual bus elements. Bus signal names appear when the input and output are at the output of the following blocks: • Root-level inport block containing a bus object • Bus creator block • Subsystem block whose source traces back to one of the following blocks: — Output of a bus creator block — Root-level inport block by passing through only virtual or nonvirtual subsystem boundaries Off Use the bus signal channel number. Command-Line Information Parameter: UseBusSignalLabels Type: string Value: 'on' | 'off' Default: 'off' 10-309 Singular Value Plot See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-310 Singular Value Plot Include upper singular value bound in assertion Check that the singular values satisfy upper bounds, specified in Frequencies (rad/sec) and Magnitude (dB), during simulation. The software displays a warning during simulation if the singular values violate the upper bound. This parameter is used for assertion only if Enable assertion in the Assertion tab is selected. You can specify multiple upper singular value bounds on the linear system. The bounds also appear on the singular value plot. If you clear Enable assertion, the bounds are not used for assertion but continue to appear on the plot. Settings Default: • Off for Singular Value Plot block. • On for Check Singular Value Characteristics block. On Check that the singular value satisfies the specified upper bounds, during simulation. Off Do not check that the singular value satisfies the specified upper bounds, during simulation. Tips • Clearing this parameter disables the upper singular value bounds and the software stops checking that the bounds are satisfied during simulation. The bound segments are also greyed out on the plot. 10-311 Singular Value Plot • If you specify both upper and lower singular value bounds but want to include only the lower bounds for assertion, clear this parameter. • To only view the bound on the plot, clear Enable assertion. Command-Line Information Parameter: EnableUpperBound Type: string Value: 'on' | 'off' Default: 'off' for Singular Value Plot block, 'on' for Check Singular Value Characteristics block. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-312 Singular Value Plot Frequencies (rad/sec) Frequencies for one or more upper singular value bound segments, specified in radians/sec. Specify the corresponding magnitudes in Magnitude (dB). Settings Default: [] for Singular Value Plot block [0.1 100] for Check Singular Value Characteristics block Must be specified as start and end frequencies: • Positive finite numbers for a single bound with one edge • Matrix of positive finite numbers for a single bound with multiple edges For example, type [0.1 1;1 10] for two edges at frequencies [0.1 1] and [1 10]. • Cell array of matrices with positive finite numbers for multiple bounds. Tips • To assert that magnitudes that correspond to the frequencies are satisfied, select both Include upper singular value bound in assertion and Enable assertion. • You can add or modify frequencies from the plot window: - To add new frequencies, right-click the plot, and select Bounds > New Bound. Select Upper gain limit in Design requirement type, and specify the frequencies in the Frequency column. Specify the corresponding magnitudes in the Magnitude column. - To modify the frequencies, drag the bound segment. Alternatively, right-click the segment, and select Bounds > Edit Bound. Specify the new frequencies in the Frequency column. 10-313 Singular Value Plot You must click Update Block before simulating the model. Command-Line Information Parameter: UpperBoundFrequencies Type: string Value: [] | [0.1 100] | positive finite numbers | matrix of positive finite numbers | cell array of matrices with positive finite numbers. Must be specified inside single quotes (''). Default: '[]' for Singular Value Plot block, '[0.1 100]' for Check Singular Value Characteristics block. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-314 Singular Value Plot Magnitudes (dB) Magnitude values for one or more upper singular value bound segments, specified in decibels. Specify the corresponding frequencies in Frequencies (rad/sec). Settings Default: [] for Singular Value Plot block [0 0] for Check Singular Value Characteristics block Must be specified as start and end magnitudes: • Finite numbers for a single bound with one edge • Matrix of finite numbers for a single bound with multiple edges For example, type [0 0; 10 10] for two edges at magnitudes [0 0] and [10 10]. • Cell array of matrices with finite numbers for multiple bounds Tips • To assert that magnitudes are satisfied, select both Include upper singular value bound in assertion and Enable assertion. • You can add or modify magnitudes from the plot window: - To add a new magnitude, right-click the plot, and select Bounds > New Bound. Select Upper gain limit in Design requirement type, and specify the magnitude in the Magnitude column. Specify the corresponding frequencies in the Frequency column. - To modify the magnitudes, drag the bound segment. Alternatively, right-click the segment, and select Bounds > Edit Bound. Specify the new magnitudes in the Magnitude column. You must click Update Block before simulating the model. 10-315 Singular Value Plot Command-Line Information Parameter: UpperBoundMagnitudes Type: string Value: [] | [0 0] | finite numbers | matrix of finite numbers | cell array of matrices with finite numbers. Must be specified inside single quotes (''). Default: '[]' for Singular Value Plot block, '[0 0]' for Check Singular Value Characteristics block. See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-316 Singular Value Plot Include lower singular value bound in assertion Check that the singular values satisfy lower bounds, specified in Frequencies (rad/sec) and Magnitude (dB), during simulation. The software displays a warning if the singular values violate the lower bound. This parameter is used for assertion only if Enable assertion in the Assertion tab is selected. You can specify multiple lower singular value bounds on the linear system. The bounds also appear on the singular value plot. If you clear Enable assertion, the bounds are not used for assertion but continue to appear on the plot. Settings Default: Off On Check that the singular value satisfies the specified lower bounds, during simulation. Off Do not check that the singular value satisfies the specified lower bounds, during simulation. Tips • Clearing this parameter disables the upper bounds and the software stops checking that the bounds are satisfied during simulation. The bound segments are also greyed out in the plot window. 10-317 Singular Value Plot • If you specify both lower and upper singular value bounds but want to include only the upper bounds for assertion, clear this parameter. • To only view the bound on the plot, clear Enable assertion. Command-Line Information Parameter: EnableLowerBound Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-318 Singular Value Plot Frequencies (rad/sec) Frequencies for one or more lower singular value bound segments, specified in radians/sec. Specify the corresponding magnitudes in Magnitude (dB). Settings Default [] Must be specified as start and end frequencies: • Positive finite numbers for a single bound with one edge • Matrix of positive finite numbers for a single bound with multiple edges For example, type [0.01 0.1;0.1 1] to specify two edges with frequencies [0.01 0.1] and [0.1 1]. • Cell array of matrices with positive finite numbers for multiple bounds. Tips • To assert that magnitude bounds that correspond to the frequencies are satisfied, select both Include lower singular value bound in assertion and Enable assertion. • You can add or modify frequencies from the plot window: - To add new frequencies, right-click the plot, and select Bounds > New Bound. Select Lower gain limit in Design requirement type and specify the frequencies in the Frequency column. Specify the corresponding magnitudes in the Magnitude column. - To modify the frequencies, drag the bound segment. Alternatively, right-click the segment, and select Bounds > Edit Bound. Specify the new frequencies in the Frequency column. You must click Update Block before simulating the model. 10-319 Singular Value Plot Command-Line Information Parameter: LowerBoundFrequencies Type: string Value: [] | positive finite numbers | matrix of positive finite numbers | cell array of matrices with positive finite numbers. Must be specified inside single quotes (''). Default: '[]' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-320 Singular Value Plot Magnitudes (dB) Magnitude values for one or more lower singular value bound segments, specified in decibels. Specify the corresponding frequencies in Frequencies (rad/sec). Settings Default [] Must be specified as start and end magnitudes: • Finite numbers for a single bound with one edge • Matrix of finite numbers for a single bound with multiple edges For example, type [0 0; 10 10] for two edges with magnitudes [0 0] and [10 10]. • Cell array of matrices with finite numbers for multiple bounds Tips • To assert that magnitudes are satisfied, select both Include lower singular value bound in assertion and Enable assertion. • You can add or modify magnitudes from the plot window: - To add new magnitudes, right-click the plot, and select Bounds > New Bound. Select Lower gain limit in Design requirement type, and specify the magnitudes in the Magnitude column. Specify the corresponding frequencies in the Frequency column. - To modify the magnitudes, drag the bound segment. Alternatively, right-click the segment, and select Bounds > Edit Bound. Specify the new magnitudes in the Magnitude column. You must click Update Block before simulating the model. Command-Line Information Parameter: LowerBoundFrequencies Type: string 10-321 Singular Value Plot Value: [] | finite number | matrix of finite numbers | cell array of matrices with finite numbers. Must be specified inside single quotes (''). Default: '[]' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-322 Singular Value Plot Save data to workspace Save one or more linear systems as a variable in MATLAB workspace to perform further linear analysis or control design. The workspace variable is a structure with time and values fields: • The time field stores the simulation time at which the linear system is computed. • The values field is a state-space object which stores the linear system. If the linear system is computed at multiple simulation times, values is an array of state-space objects. Settings Default: Off On Save the computed linear system to MATLAB workspace. Off Do not save the computed linear system to MATLAB workspace. Dependencies This parameter enables Variable name. Command-Line Information Parameter: SaveToWorkspace Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-323 Singular Value Plot Variable name Name of the workspace variable that stores one or more linear systems computed during simulation. The name must be unique among the variable names used in all data logging model blocks, such as Linear Analysis Plot blocks, Model Verification blocks, Scope blocks, To Workspace blocks, and simulation return variables such as time, states, and outputs. Settings Default: sys String. Dependencies Save data to workspace enables this parameter. Command-Line Information Parameter: SaveName Type: string Value: sys | any string. Must be specified inside single quotes (''). Default: 'sys' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-324 Singular Value Plot Enable assertion Enable the block to check that bounds specified and included for assertion in the Bounds tab are satisfied during simulation. Assertion fails if a bound is not satisfied. A warning, reporting the assertion failure, appears at the MATLAB prompt. If assertion fails, you can optionally specify that the block: • Execute a MATLAB expression, specified in Simulation callback when assertion fails (optional). • Stop the simulation and bring that block into focus, by selecting Stop simulation when assertion fails. For the Linear Analysis Plots blocks, this parameter has no effect because no bounds are included by default. If you want to use the Linear Analysis Plots blocks for assertion, specify and include bounds in the Bounds tab. Clearing this parameter disables assertion, i.e., the block no longer checks that specified bounds are satisfied. The block icon also updates to indicate that assertion is disabled. In the Configuration Parameters dialog box of the Simulink model, the Model Verification block enabling option in the Debugging area of Data Validity node, lets you to enable or disable all model verification blocks in a model, regardless of the setting of this option. Settings Default: On 10-325 Singular Value Plot On Check that bounds included for assertion in the Bounds tab are satisfied during simulation. A warning, reporting assertion failure, is displayed at the MATLAB prompt if bounds are violated. Off Do not check that bounds included for assertion are satisfied during simulation. Dependencies This parameter enables: • Simulation callback when assertion fails (optional) • Stop simulation when assertion fails Command-Line Information Parameter: enabled Type: string Value: 'on' | 'off' Default: 'on' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-326 Singular Value Plot Simulation callback when assertion fails (optional) MATLAB expression to execute when assertion fails. Because the expression is evaluated in the MATLAB workspace, define all variables used in the expression in that workspace. Settings No Default A MATLAB expression. Dependencies Enable assertion enables this parameter. Command-Line Information Parameter: callback Type: string Value: '' | MATLAB expression Default: '' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-327 Singular Value Plot Stop simulation when assertion fails Stop the simulation when a bound specified in the Bounds tab is violated during simulation, i.e., assertion fails. If you run the simulation from the Simulink Editor, the Simulation Diagnostics window opens to display an error message. Also, the block where the bound violation occurs is highlighted in the model. Settings Default: Off On Stop simulation if a bound specified in the Bounds tab is violated. Off Continue simulation if a bound is violated with a warning message at the MATLAB prompt. Tips • Because selecting this option stops the simulation as soon as the assertion fails, assertion failures that might occur later during the simulation are not reported. If you want all assertion failures to be reported, do not select this option. Dependencies Enable assertion enables this parameter. Command-Line Information Parameter: stopWhenAssertionFail Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-328 Singular Value Plot Output assertion signal Output a Boolean signal that, at each time step, is: • True (1) if assertion succeeds, i.e., all bounds are satisfied • False (1) if assertion fails, i.e., a bound is violated. The output signal data type is Boolean only if the Implement logic signals as Boolean data option in the Optimization pane of the Configuration Parameters dialog box of the Simulink model is selected. Otherwise, the data type of the output signal is double. Selecting this parameter adds an output port to the block that you can connect to any block in the model. Settings Default:Off On Output a Boolean signal to indicate assertion status. Adds a port to the block. Off Do not output a Boolean signal to indicate assertion status. Tips • Use this parameter to design complex assertion logic. For an example, see “Model Verification Using Simulink® Control Design™ and Simulink Verification Blocks” on page 5-25. Command-Line Information Parameter: export Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation 10-329 Singular Value Plot “Model Verification at Default Simulation Snapshot Time” on page 5-6 10-330 Singular Value Plot Show plot on block open Open the plot window instead of the Block Parameters dialog box when you double-click the block in the Simulink model. Use this parameter if you prefer to open and perform tasks, such as adding or modifying bounds, in the plot window instead of the Block Parameters dialog box. If you want to access the block parameters from the plot window, select Edit or click . For more information on the plot, see Show Plot. Settings Default: Off On Open the plot window when you double-click the block. Off Open the Block Parameters dialog box when double-clicking the block. Command-Line Information Parameter: LaunchViewOnOpen Type: string Value: 'on' | 'off' Default: 'off' See Also Plot Linear Characteristics of Simulink Models During Simulation “Model Verification at Default Simulation Snapshot Time” on page 5-6 Show Plot Open the plot window. Use the plot to view: • Linear system characteristics computed from the nonlinear Simulink model during simulation 10-331 Singular Value Plot You must click this button before you simulate the model to view the linear characteristics. You can display additional characteristics, such as the peak response time and stability margins, of the linear system by right-clicking the plot and selecting Characteristics. • Bounds on the linear system characteristics You can specify bounds in the Bounds tab of the Block Parameters dialog box or right-click the plot and select Bounds > New Bound. For more information on the types of bounds you can specify on each plot, see “Verifiable Linear System Characteristics” on page 5-5 in the User’s Guide. You can modify bounds by dragging the bound segment or by right-clicking the plot and selecting Bounds > Edit Bound. Before you simulate the model, click Update Block to update the bound value in the block parameters. Typical tasks that you perform in the plot window include: • Opening the Block Parameters dialog box by clicking Edit. or selecting • Finding the block that the plot window corresponds to by clicking or selecting View > Highlight Simulink Block. This action makes the Simulink Editor active and highlights the block. • Simulating the model by clicking or selecting Simulation > Run. This action also linearizes the portion of the model between the specified linearization input and output. • Adding legend on the linear system characteristic plot by clicking See Also Check Singular Value Characteristics Tutorials • “Visualize Bode Response of Simulink Model During Simulation” on page 2-42 10-332 . Singular Value Plot • “Visualize Linear System at Multiple Simulation Snapshots” on page 2-64 • “Visualize Linear System of a Continuous-Time Model Discretized During Simulation” on page 2-70 • Plotting Linear System Characteristics of a Chemical Reactor 10-333 Trigger-Based Operating Point Snapshot Purpose Generate operating points, linearizations, or both at triggered events Library Simulink Control Design Description Attach this block to a signal in a model when you want to take a snapshot of the system’s operating point at triggered events such as when the signal crosses zero or when the signal sends a function call. You can also perform a linearization at these events. To extract the operating point or perform the linearization, you need to simulate the model using either the findop or linearize functions or the simulation snapshots option in the Control and Estimation Tools Manager. Choose the trigger type in the Block Parameters dialog box, as shown in the following figure. The possible trigger types are • rising: the signal crosses zero while increasing. • falling: the signal crosses zero while decreasing. • either: the signal crosses zero while either increasing or decreasing. • function-call: the signal send a function call. 10-334 Trigger-Based Operating Point Snapshot Note Computing Operating Point Snapshots at Triggered Events illustrates how to use this block. See Also findop, linearize 10-335 Trigger-Based Operating Point Snapshot 10-336 11 Model Advisor Checks 11 Model Advisor Checks Simulink Control Design Checks 11-2 Simulink® Control Design™ Checks Identify time-varying source blocks interfering with frequency response estimation Identify all time-varying source blocks in the signal path of any output linearization point marked in the Simulink model. Description Frequency response estimation uses the steady-state response of a Simulink model to a specified input signal. Time-varying source blocks in the signal path prevent the response from reaching steady-state. In addition, when such blocks appear in the signal path, the resulting response is not purely a response to the specified input signal. Thus, time-varying source blocks can interfere with accurate frequency response estimation. This check finds and reports all the time-varying source blocks which appear in the signal path of any output linearization output points currently marked on the Simulink model. The report: • Includes blocks in subsystems and in referenced models that are in normal simulation mode • Excludes any blocks specified as BlocksToHoldConstant in the frestimateOptions object you enter as the input parameter For more information about the algorithm that identifies time-varying source blocks, see the frest.findSources reference page. Input Parameters FRESTIMATE options object to compare results against Provide the paths of any blocks to exclude from the check. Specify the block paths as an array of Simulink.BlockPath objects. This array is stored in the BlocksToHoldConstant field of an option set you create with frestimateOptions. See the frestimateOptions reference page for more information. 11-3 11 Model Advisor Checks Results and Recommended Actions Condition Recommended Action Source blocks exist whose output reaches linearization output points currently marked on the model. Consider holding these source blocks constant during frequency response estimation. Use the frest.findSources command to identify time-varying source blocks at the command line. Then use the BlocksToHoldConstant option of frestimateOptions to pass these blocks to the frestimate command. For example, % Get linearization I/Os from the model. mdl = 'scdengine'; io = getlinio(mdl); % Find time-varying source blocks. blks = frest.findSources(mdl,io); % Create options set with blocks to hold constant. opts = frestimateOptions; opts.BlocksToHoldConstant = blks; % Run estimation with the options. in = frest.Sinestream; sysest = frestimate(mdl,io,in,opts); For more information and examples, see the frest.findSources and frestimateOptions reference pages. Tip Sometimes, the model includes referenced models containing source blocks in the signal path of an output linearization point. In such cases, set the referenced models to normal simulation mode to ensure that this check locates them. Use the set_param command to set SimulationMode of any referenced models to Normal before running the check. See Also • “Estimate Frequency Response Using Linear Analysis Tool” on page 3-28 • “Effects of Time-Varying Source Blocks on Frequency Response Estimation” on page 3-62 11-4 Simulink® Control Design™ Checks • frest.findSources reference page • frestimateOptions reference page • frestimate reference page 11-5 11 11-6 Model Advisor Checks A Examples Use this list to find examples in the documentation. A Examples Frequency Response Estimation “Effects of Time-Varying Source Blocks on Frequency Response Estimation” on page 3-62 “Effects of Noise on Frequency Response Estimation” on page 3-72 “Estimating Frequency Response Models with Noise Using Signal Processing Toolbox” on page 3-74 “Estimating Frequency Response Models with Noise Using System Identification Toolbox” on page 3-76 A-2 Index A compensator design 4-77 Index add linearization input and output 10-5 10-82 10-127 10-175 10-233 10-287 addoutputspec function 8-2 B bus signal names 10-28 10-104 10-148 10-198 10-256 10-309 C closed-loop gain on Nichols plot 10-208 compensator design analysis plots 4-71 beginning a task 4-57 closed-loop responses 4-62 creating a SISO Design Task 4-67 design methods 4-78 design plots 4-68 open-loop systems 4-68 operating points 4-64 overview 4-2 retrieving designs 4-83 storing designs 4-83 time delays 4-77 tunable blocks 4-59 writing to Simulink model 4-85 configuration parameters pane Open-loop gains (dB): 10-214 Control and Estimation Tools Manager compensator design task 4-57 SISO Design Task 4-67 copy function 8-6 D damping ratio on pole-zero plot 10-267 delays E enable assertion 10-44 10-114 10-162 10-220 10-275 10-325 enable zero-crossing detection 10-17 10-93 10-139 10-187 10-245 10-298 equilibrium operating point 1-2 from simulation 1-41 from specifications 1-14 equilibrium states from simulation 1-41 from specifications 1-14 F final value of step response 10-153 frequencies for lower magnitude bound 10-38 frequencies for lower singular value bound 10-319 frequencies for upper magnitude bound 10-32 frequencies for upper singular value bound 10-313 G gain margin bound 10-108 gain margin bound on Nichols plot 10-202 get function 8-75 getinputstruct function 8-78 getlinio function 8-79 getlinplant function 8-84 getstatestruct function 8-88 getxu function 8-90 I include closed-loop peak gain 10-206 include damping ratio on pole-zero plot 10-265 include gain and phase margins 10-106 Index-1 Index include gain and phase margins on Nichols plot 10-200 include lower magnitude bound 10-36 include lower singular value bound 10-317 include natural frequency on pole-zero plot 10-269 include open-loop gain-phase bound 10-210 include percent overshoot bound on pole-zero plot 10-261 include settling time bound on pole-zero plot 10-258 include step response bound 10-150 include upper magnitude bound 10-30 include upper singular value bound 10-311 initopspec function 8-93 L linearization using simulation event 2-60 using simulation snapshot 2-57 linearize on 10-13 10-89 10-135 10-183 10-241 10-294 linio function 8-109 linoptions function 8-117 lower magnitude bound 10-40 lower singular value bound magnitude 10-321 O open-loop phases 10-212 operating point at simulation snapshot 1-41 equilibrium 1-2 from simulation snapshot 1-41 initialize simulation 1-44 initializing optimization search 1-24 meet output specifications 1-21 optimization settings 1-35 SimMechanics model 1-29 Index-2 steady state 1-2 steady states from simulation 1-41 steady states from specifications 1-14 trimming 1-14 operpoint function 8-124 output assertion signal 10-48 10-118 10-166 10-224 10-279 10-329 P percent overshoot 10-158 percent overshoot on pole-zero plot 10-263 percent rise 10-155 percent settling 10-157 percent undershoot 10-159 phase margin bound 10-109 to 10-110 phase margin bound on Nichols plot 10-204 PID automatic tuning 4-3 plot type for gain and phase margins 10-120 prewarp frequency 10-25 10-101 10-146 10-195 10-253 10-306 R retrieving compensator designs 4-83 rise time 10-154 S sample time 10-20 10-96 10-141 10-190 10-248 10-301 Sample time rate conversion method 10-22 10-98 10-144 10-192 10-250 10-303 save data to workspace 10-42 10-112 10-160 10-218 10-273 10-323 select signal 10-9 10-85 10-131 10-179 10-237 10-290 set function 8-137 setlinio function 8-140 settling time 10-156 Index settling time on pole-zero plot 10-260 setxu function 8-145 show plot on block open 10-50 10-121 10-168 10-226 10-280 10-331 simulation initialize operating point 1-44 simulation callback 10-46 10-116 10-164 10-222 10-277 10-327 SISO Design Task creating 4-67 Snapshot times 10-15 10-91 10-137 10-185 10-243 10-296 steady state operating point 1-2 from simulation 1-41 from specifications 1-14 Stop simulation when assertion fails 10-47 10-117 10-165 10-223 10-278 10-328 storing compensator designs 4-83 T trigger type 10-16 10-92 10-138 10-186 10-244 10-297 trim condition 1-2 trimming 1-14 U update function 8-207 upper magnitude bound 10-34 upper singular value bound magnitude 10-315 use exact delays 10-19 10-95 10-141 10-189 10-247 10-300 V variable name for saved linear system 10-43 10-113 10-161 10-219 10-274 10-324 Index-3
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.5 Linearized : Yes Author : batserve Create Date : 2012:08:04 01:02:57-04:00 Modify Date : 2012:08:04 01:02:57-04:00 XMP Toolkit : Adobe XMP Core 4.2.1-c041 52.342996, 2008/05/07-20:48:00 Format : application/pdf Creator : batserve Title : Print Preview - C:\TEMP\Apdf_2541_3068\home\AppData\Local\PTC\Arbortext\Editor\.aptcache\ae2yk5ik/tf2yk5pe Creator Tool : PScript5.dll Version 5.2.2 Producer : Acrobat Distiller 9.0.0 (Windows) Document ID : uuid:bf7f7807-44d9-4dab-9c41-70b9f2eea3e9 Instance ID : uuid:282ddf17-1643-410b-a43f-cc54e9547812 Page Count : 1017EXIF Metadata provided by EXIF.tools