About This Guide

    To the Reader
        What Is Simulink?
        Using This Manual

    Related Products
    Typographical Conventions

Quick Start

    Running a Demo Model
        Description of the Demo
        Some Things to Try
        What This Demo Illustrates
        Other Useful Demos

    Building a Simple Model
    Setting Simulink Preferences
        Simulink Preferences

How Simulink Works

    What Is Simulink
    Modeling Dynamic Systems
        Block Diagrams
        Blocks
        States
        System Functions
        Block Parameters
        Continuous Versus Discrete Blocks
        Subsystems
        Custom Blocks
        Signals
        Data Types
        Solvers

    Simulating Dynamic Systems
        Model Initialization Phase
        Model Execution Phase
        Processing at Each Time Step
        Determining Block Update Order
        Atomic Versus Virtual Subsystems
        Solvers
        Zero-Crossing Detection
        Algebraic Loops

    Modeling and Simulating Discrete Systems
        Specifying Sample Time
        Purely Discrete Systems
        Multirate Systems
        Determining Step Size for Discrete Systems
        Sample Time Propagation
        Invariant Constants
        Mixed Continuous and Discrete Systems

Simulink Basics

    Starting Simulink
    Opening Models
    Entering Simulink Commands
        Using the Simulink Menu Bar to Enter Commands
        Using Context-Sensitive Menus to Enter Commands
        Using the Simulink Toolbar to Enter Commands
        Using the MATLAB Window to Enter Commands
        Undoing a Command

    Simulink Windows
        Status Bar
        Zooming Block Diagrams

    Saving a Model
        Saving a Model in Earlier Formats

    Printing a Block Diagram
        Print Dialog Box
        Print Command
        Specifying Paper Size and Orientation
        Positioning and Sizing a Diagram

    Generating a Model Report
        Model Report Options

    Summary of Mouse and Keyboard Actions
        Manipulating Blocks
        Manipulating Lines

    Ending a Simulink Session

Creating a Model

    Creating a New Model
    Selecting Objects
        Selecting One Object
        Selecting More Than One Object

    Specifying Block Diagram Colors
        Choosing a Custom Color
        Defining a Custom Color
        Specifying Colors Programmatically
        Enabling Sample Time Colors

    Connecting Blocks
        Automatically Connecting Blocks
        Manually Connecting Blocks
        Disconnecting Blocks

    Annotating Diagrams
        Using TeX Formatting Commands in Annotations

    Creating Subsystems
        Creating a Subsystem by Adding the Subsystem Block
        Creating a Subsystem by Grouping Existing Blocks
        Model Navigation Commands
        Window Reuse
        Labeling Subsystem Ports
        Controlling Access to Subsystems

    Creating Conditionally Executed Subsystems
        Enabled Subsystems
        Triggered Subsystems
        Triggered and Enabled Subsystems
        Control Flow Blocks

    Model Discretizer
        Requirements
        Discretizing a Model from the Model Discretizer GUI
        Viewing the Discretized Model
        Discretizing Blocks from the Simulink Model
        Discretizing a Model from the MATLAB Command Window

    Using Callback Routines
        Tracing Callbacks
        Creating Model Callback Functions
        Creating Block Callback Functions
        Port Callback Parameters

    Managing Model Versions
        Specifying the Current User
        Model Properties Dialog Box
        Creating a Model Change History
        Version Control Properties

Working with Blocks

    About Blocks
        Block Data Tips
        Virtual Blocks

    Editing Blocks
        Copying and Moving Blocks from One Window to Another
        Moving Blocks in a Model
        Copying Blocks in a Model
        Deleting Blocks

    Setting Block Parameters
        Setting Block-Specific Parameters
        Block Properties Dialog Box
        State Properties Dialog Box

    Changing a Block's Appearance
        Changing the Orientation of a Block
        Resizing a Block's Icon
        Displaying Parameters Beneath a Block's Icon
        Using Drop Shadows
        Manipulating Block Names
        Specifying a Block's Color

    Controlling and Displaying Block Execution Order
        Assigning Block Priorities
        Displaying Block Execution Order

    Look-Up Table Editor
        Browsing LUT Blocks
        Editing Table Values
        Displaying N-D Tables
        Plotting LUT Tables
        Editing Custom LUT Blocks

    Working with Block Libraries
        Terminology
        Simulink Block Library
        Creating a Library
        Modifying a Library
        Creating a Library Link
        Disabling Library Links
        Modifying a Linked Subsystem
        Propagating Link Modifications
        Updating a Linked Block
        Breaking a Link to a Library Block
        Finding the Library Block for a Reference Block
        Library Link Status
        Displaying Library Links
        Getting Information About Library Blocks
        Browsing Block Libraries
        Adding Libraries to the Library Browser

Working with Signals

    Signal Basics
        About Signals
        Control Signals
        Signal Buses
        Signal Glossary
        Determining Output Signal Dimensions
        Signal and Parameter Dimension Rules
        Scalar Expansion of Inputs and Parameters
        Setting Signal Properties
        Signal Properties Dialog Box

    Working with Complex Signals
    Checking Signal Connections
    Displaying Signals
        Signal Names
        Signal Labels
        Displaying Signals Represented by Virtual Signals

    Working with Signal Groups
        Creating a Signal Group Set
        The Signal Builder Dialog Box
        Editing Signal Groups
        Editing Signals
        Editing Waveforms
        Signal Builder Time Range
        Exporting Signal Group Data
        Simulating with Signal Groups
        Simulation Options Dialog Box

Working with Data

    Working with Data Types
        Data Types Supported by Simulink
        Fixed-Point Data
        Block Support for Data and Numeric Signal Types
        Specifying Block Parameter Data Types
        Creating Signals of a Specific Data Type
        Displaying Port Data Types
        Data Type Propagation
        Data Typing Rules
        Enabling Strict Boolean Type Checking
        Typecasting Signals
        Typecasting Parameters

    Working with Data Objects
        Data Object Classes
        Creating Data Objects
        Accessing Data Object Properties
        Invoking Data Object Methods
        Saving and Loading Data Objects
        Using Data Objects in Simulink Models
        Creating Data Object Classes

    The Simulink Data Explorer
    Associating User Data with Blocks

Modeling with Simulink

    Modeling Equations
        Converting Celsius to Fahrenheit
        Modeling a Simple Continuous System

    Avoiding Invalid Loops
    Tips for Building Models

Browsing and Searching Models

    Finding Objects
        Filter Options
        Search Criteria

    The Model Browser
        Using the Model Browser on Windows
        Using the Model Browser on UNIX

Running a Simulation

    Simulation Basics
        Specifying Simulation Parameters
        Controlling Execution of a Simulation
        Interacting with a Running Simulation

    The Simulation Parameters Dialog Box
        The Solver Pane
        The Workspace I/O Pane
        The Diagnostics Pane
        The Advanced Pane

    Diagnosing Simulation Errors
        Simulation Diagnostic Viewer
        Creating Custom Simulation Error Messages

    Improving Simulation Performance and Accuracy
        Speeding Up the Simulation
        Improving Simulation Accuracy

    Running a Simulation Programmatically
        Using the sim Command
        Using the set_param Command

Analyzing Simulation Results

    Viewing Output Trajectories
        Using the Scope Block
        Using Return Variables
        Using the To Workspace Block

    Linearizing Models
    Finding Steady-State Points

Creating Masked Subsystems

    About Masks
        Mask Features
        Creating Masks

    Masked Subsystem Example
        Creating Mask Dialog Box Prompts
        Creating the Block Description and Help Text
        Creating the Block Icon

    Masking a Subsystem
    The Mask Editor
        The Icon Pane
        The Parameters Pane
        Control Types
        The Initialization Pane
        The Documentation Pane

    Linking Mask Parameters to Block Parameters
    Creating Dynamic Dialogs for Masked Blocks
        Setting Masked Block Dialog Parameters
        Predefined Masked Dialog Parameters

Simulink Debugger

    Introduction
    Starting the Debugger
    Starting the Simulation
    Using the Debugger's Command-Line Interface
        Block Indexes
        Accessing the MATLAB Workspace

    Getting Online Help
    Running a Simulation
        Continuing a Simulation
        Running a Simulation Nonstop
        Advancing to the Next Block
        Advancing to the Next Time Step

    Setting Breakpoints
        Setting Breakpoints at Blocks
        Setting Breakpoints at Time Steps
        Breaking on Nonfinite Values
        Breaking on Step-Size Limiting Steps
        Breaking at Zero Crossings

    Displaying Information About the Simulation
        Displaying Block I/O
        Displaying Algebraic Loop Information
        Displaying System States
        Displaying Integration Information

    Displaying Information About the Model
        Displaying a Model's Block Execution Order
        Displaying a Block

    Debugger Command Summary

Performance Tools

    About the Simulink Performance Tools Option
    The Simulink Accelerator
        Accelerator Limitations
        How the Accelerator Works
        Runnning the Simulink Accelerator
        Handling Changes in Model Structure
        Increasing Performance of Accelerator Mode
        Blocks That Do Not Show Speed Improvements
        Using the Simulink Accelerator with the Simulink Debugger
        Interacting with the Simulink Accelerator Programmatically
        Comparing Performance
        Customizing the Simulink Accelerator Build Process
        Controlling S-Function Execution

    Graphical Merge Tool
        Comparing Models
        The Graphical Merge Tool Window
        Navigating Model Differences
        Merging Model Differences
        Generating a Model Differences Report

    Profiler
        How the Profiler Works
        Enabling the Profiler
        The Simulation Profile

    Model Coverage Tool
        How the Model Coverage Tool Works
        Using the Model Coverage Tool
        Creating and Running Test Cases
        The Coverage Report
        Coverage Settings Dialog Box
        HTML Settings
        Model Coverage Commands