Skip to Main Content Skip to Search
Home |   Select Country  Choose Country  |  Contact Us  |  Cart Store 
Create Account | Log In
Products & Services Industries Academia Support User Community Company

 

Simulink

Version 5.1 resolved the following issues:


Accumulator Pattern Output in a Discontiguous Wide Signal

In the previous release, updating a model containing a certain type of block diagram pattern could cause a memory access (SEGV) error. Patterns that could cause this error typically consist of an accumulator pattern (e.g., a two-port Sum block with a feedback through a Unit Delay block) connected directly or indirectly along with other inputs to a Mux block whose output is connected to more than one block requiring contiguous signal input (i.e., blocks that require that all elements of an input signal occupy adjacent locations in memory). This release fixes the problem.

Block Output Buffer Reuse

Under certain scenarios, Simulink 4.0 and later versions reused a block output data buffer when it should not have done so, thus corrupting data and resulting in invalid simulation and code generation results. This problem has been fixed.

Changing a Signal Index

Depending on signals visible, there had been a possibility of corrupting a model by changing the index (the port number) of a signal. The new version fixes all known problems associated with changing the port number (index).

Compiling Models with Inline Parameters Enabled

Compiling certain models with Inline Parameters enabled previously caused segment violations. This release fixes the problem.

Counting of Large Numbers of Time Steps

In Simulink 5.0 and 5.0.1, either continuous or fixed-step models could miscount steps when start time was large and/or step size was small. After around 10e8 steps, major steps could be skipped or the model could freeze due to a limitation of the timing engine. The current fix increases the threshold for this behavior to at least 10e12 major steps or more. A complete fix is planned for a future release of Simulink.

Direct Look-Up Table and n-D Icon

A fix is included for an icon initialization error in the Direct Look-Up Table, n-D block when the block is configured for column extraction from a 2-D table when the table is an input to the block instead of a block parameter. The error prevented correct simulation of models containing blocks configured as described above.

Early Termination of Real-Time Workshop or Stateflow S-Function Builds Issue Fixed

Previously, pressing CTRL-C during a Real-Time Workshop build or Stateflow S-function build rendered the status window inoperable. This is now fixed.

Fixed rate_transition S-Function

Calling the rate_transition s-function from command line to get checksums used to cause a SEGV. This bug has been fixed.

Hitting Ctrl-S Rapidly Twice In Succession

Previously, there was a chance of causing a segmentation violation in the Simulink model editor by hitting the File/Save accelerator key (Ctrl-S) rapidly twice in succession. This has been fixed.

Inappropriate Bus Warning Message Eliminated

In previous releases, for models with not-loaded-not-visible likbrary link self-modifiable subsystems that contained a bus selector block, Simulink may have generated warning messages like "Warning: Selected signal 'DCM' in TopSS/SS/Bus Selector1' originates from an unconnected source signal entering ..." This has been fixed.

Issue Warnings for Initial Output Changes Due to Conditional Execution

When Constant/Initial Condition/Merge with IC not []/Unit Delay/ Discrete Integrator/Integrator is connected to Outport with IC == [], and the Outport is inside a conditionally executed subsystem (e.g., Triggered, Enable, Trigger and Enable, Function Call, Action) and there's at least one block that inherits Execution Context from the subsystem output port (corresponding to Outport), Simulink may produce different results than previous releases. In this case, you can issue an warning if you have

set_param(model, 'CheckInitialOutput','on')

This parameter is a never saved parameter and is off by default.

The warning message is as follows:

"Warning: The initial output of Outport 'mdintg_ic_warn1/Triggered Subsystem/Out1' is set to [], which is undefined and may produce different results than the previous Simulink releases if 'mdintg_ic_warn1/Triggered Subsystem' is not triggered at t = 0. If you want output port 1 of Subsystem 'mdintg_ic_warn1/Triggered Subsystem' to have the same initial value as the Outport source, 'mdintg_ic_warn1/Triggered Subsystem/Discrete- Time Integrator', please explicitly set this initial output value on 'mdintg_ic_warn1/Triggered Subsystem/Out1'."

Logic Block with Underspecified Data Type

Logic block sometimes froze Simulink during model update if its input or output signals had underspecified data types. This bug has been fixed.

Look-Up Table n-D Spline Interpolation with Linear Extrapolation

A sign error resulting in an incorrect slope calculation for below-range linear extrapolations from a spline-interpolated table has been found and fixed. This only affected spline interpolation/extrapolation results and not the flat or linear interpolation/extrapolation results.

Model Refresh When Scroll Bars Disappear

There was a graphics refresh problem when the scroll bars on a model window disappear and simultaneously cause the display to scroll back to the origin. This could happen under many different circumstances, such as:

  • Deleting the bottom-right most block in a model while the window is scrolled over to view it.
  • Zoom in on a model until the window scroll bars appear, and then enter a subsystem with window reuse set to on.

The previous work-around was to press Ctrl-D (Edit/Update Diagram).

NaN Input No Longer Freezes Binary Search by a Table Look-Up, n-D Block

A NaN input caused a binary search by a Table Look-Up, n-D block to fail to return on some platforms. This caused Simulink and any code generated by Real-Time Workshop to freeze up with certain C compilers. This release alters the binary search algorithm to return properly when NaN is encountered on IEEE-compliant platforms.

Rate Transition Between 0.1 and 0.3

When transitioning from a block sampled at 0.1 to a block sampled at 0.3 using the Rate Transition block, the following error occurs:

Error reported by S-function 'rate_transition' in block 'untitled/Rate Transition': The sample time of the output port 0.3s must be an integer multiple of the input port sample time 0.1s

This error is fixed.

Rate Transition Block with Complex Signals

A problem with the Rate Transition block, when operating on a complex signal, has been fixed. Prior to this fix, the Rate Transition block could write into the wrong area of memory when operating on a complex signal. This problem could lead to segmentation faults and other errors.

sfun_nddirectlook Block

Previously, calling the sfun_nddirectlook block from the command line caused a SEGV. This bug has been fixed.

Sign Block Behavior Change

If fixed-point logging is turned on, the Sign block does not do zero crossing detection regardless of whether zero-crossing detection is enabled for the block. This change makes the behavior of the Sign block consistant with that of other fixed-point-capable blocks that do zero- crossing detection.

Unified Blocks No Longer Cause Segmentation Violation

Unified blocks might causes segmentation violations if singnals input to these blocks are discontiguous and the discontiguous signals are also fed into other blocks that require contiguous signals. This has been fixed.

Verblock is designed to have the same data type for its input and its output.

The block accepts all non-Boolean Simulink built-in data types ansion

5.0.1 contains the following bug fixes:


Abs Block Data Type Propagation Corrected

The Abs d all Fixed-Point Blockset data types with one restriction: Fixed-Point Blockset data types must have a bias of zero. These rules were not completely implemented in Release 13; that has been corrected.

Illegal Rate Transition Error Report

In the previous release, when attempting to report an illegal rate transition error (for example, as a result of a model update), Simulink could crash or misidentify the port involved in the illegal rate transition. This behavior, which occured in multirate models with rate transition errors between blocks with multiple input and/or output ports, has been fixed.

Rate Transistion Errors on Input Ports of Enabled and Triggered Subsystems Now Properly Identified

The previous release of Simulink contained a bug that allowed the input of a subsystem that was both enabled and triggered to be driven by a block with a rate different from the trigger rate. This created an illegal rate transition in multi-tasking mode. Now Simulink generates an appropriate rate transition error message in such situations.

Signal Builder Block Is Now Compatible with Libraries

In the previous release, attempting to save a model that contained linked Signal Builder blocks caused an error. The new version of the block is fully compatible with libraries.

Switch and Multiport Switch Blocks Data Type Propagation Corrected

The output data type of a Switch or Multiport Switch block should be the same as the input signal data type with the greatest positive range to ensure that the output port can accommodate any possible input value. In previous releases, if the inputs of a Switch or Multiport Switch block consisted of signals of both type single and double, Simulink set the data type of the output port to type single. This was incorrect because signals of type double have a much larger positive range than signals of type single. This release corrects this bug.

Updating a Model During Simulation Resets Enable Port Parameter to Default

In previous releases, updating a diagram containing an Enable Port block with its States when enabling parameter set to reset caused Simulink to reset the parameter to its default value, held. This caused the model to produce incorrect answers. This problem has been fixed.

Version 5 contains the following bug fixes:


Block parameter defaults now stored in mdl file

The mdl file now has a new section, "BlockParameterDefaults." The default values for the parameters used by the block types present in the model are written into this section. Then, an individual block instance's parameter values are written into the mdl file only if they differ from the default. This technique reduces the size of the mdl file, as well as reducing the file load time. A block diagram parameter, SaveDefaultBlockParams, exists to control whether or not the parameter defaults are saved to the file. By default it is set to true.

Breaking disabled library links from the command line

Breaking disabled library links from the command-line now works.

Bus Selector adapts to bus structure changes

In previous releases, adding signals to a bus or otherwise changing its structure required that you update any Bus Selector blocks that select signals from the bus. In the current release, you need to update the Bus Selector only if it selects signals that no longer exist or no longer have unique names.

Changing Configurable Subsystem selection crashed MATLAB

The Configurable Subsystem has been made faster and more robust when changing block choices. This is especially noticeable for large subsystems.

Creating Simulink data object classes in the MATLAB work directory

Previous releases of Simulink prevented you from creating Simulink data object classes in the MATLAB directory or any of its subdirectories. The current release allows you to create classes in the work subdirectory of the MATLAB root directory.

Dot Product block now works in loops

In Release 12.1, a Dot Product block in a loop cannot determine its port dimension and hence causes a simulation error. Now the block assigns a default dimension setting to the port, thereby avoiding the simulation error.

Drag-selecting blocks froze UNIX

Releasing the left mouse button over the Simulink menu bar when drag-selecting multiple blocks caused UNIX to lock up. This has been fixed.

Grouping blocks caused divide-by-zero error

Grouping blocks in Simulink into a subsystem caused a divide-by-zero error if the blocks were too close to the top or left edge of the model. This has been fixed.

Improved detection of evenly spaced breakpoints in PreLook-Up Index Search and Look-Up Table n-D blocks

The option for using a fast index search algorithm that relies on evenly spaced breakpoints for look-up tables was enhanced to better detect evenly spaced breakpoints within a tolerance of value*eps. Note that breakpoint expressions such as [-5:0.1:5] may still need to be written as 0.1*[-50:50] to generate a dataset that is evenly spaced within the required tolerance. The linear and binary search options will of course still work on any strictly increasing breakpoint data set (not just evenly spaced ones).

Keyboard panning capabilities added to Simulink diagram editor

You can now scroll Simulink diagrams around using the keyboard by pressing the Ctrl key in conjunction with any of the arrow keys. This is sometimes more convenient than manipulating the scroll bars with the mouse.

MATLAB and Simulink lockup after ESC during drag operation

In previous releases, pressing the Esc key while dragging a block or performing other types of drag operations caused MATLAB and Simulink to become unresponsive. In the current release, pressing the Esc key will abort the drag operation.

Multirate models caused Simulink to hang

For multirate models that are simulated to very large times, Simulink would eventually miss a sample hit for one of the rates. This would cause Simulink to hang. This has now been fixed and Simulink no longer hangs.

PreLook-Up Index Search, Look-Up Table n-D (Flat interpolation) blocks now return top of table

The behavior of the PreLook-Up Index Search block (index only mode) and the Look-Up Table n-D block (in flat interpolation mode) were changed to return the last index in the table when the input value is at or above the last breakpoint value as this is more useful than the previous behavior. For the Look-Up Table n-D block, this is done on an individual dimension basis. In previous versions (Simulink 4 and 4.1), the index search would deliberately return the next to last index and the n-D flat look-up would deliberately return the next to last table value even when the input value was at or above the last breakpoint.

Propagating library changes created recursive links

If changes are made to a linked block, propagating such changes to the library via the Link Options menu now does not result in recursive links.

Pulse generator computed sample time

The Pulse Generator Block would sometimes report that the computed sample time is not an integer multiple fo the fixed step size when, in fact, it was. This has been fixed.

Scope block will not crash when "Save To Workspace" variable name is longer than 31 characters

Scope blocks with "Save To Workspace" variable names longer than the maximum MATLAB variable length (currently 31 characters) used to crash Simulink in unpredictable ways during simulation. Such variable names will no longer crash Simulink, though they will generate an error.

SegV when adding/deleting Simulink blocks with Model Browser open on Unix

On Unix platforms, a segmentation violation would occur if you added or deleted blocks in a Simulink model while the Model Browser was open. This has been fixed.

Selecting Tools->Coverage Settings when all Simulink licenses are checked out

The "Undefined variable names" error is no longer displayed when selecting Menu->Tools->Coverage Settings without an available Simulink license.

Self-modifying masked library blocks had missing connections

Library subsystems containing self-modifying masked blocks no longer have to be marked as MaskSelfModifiable for the linked blocks to be connected properly.

Shift+drag disconnected a block inside a locked reference block

In previous releases, holding down the Shift key and dragging a block inside a reference block (i.e., a library link) disconnects the block's signal lines and brings up a dialog box asking if you would like to disable the link. In the current release, Simulink does not disconnect the lines.

Simulink debugger did not recognize CurrentBlock parameter

In the previous release, you could not use get_param or set_param to set or get the value of the CurrentBlock parameter in the command-line debugger until you selected a block. The Simulink command-line debugger now allows you to set and get the value of this parameter without having to first select a block with the mouse.

Version 4.1.1 contains the following bug fixes:


  • The Delay block caused a segmentation fault during simulation when used in an accumulator pattern (i.e. sum/delay feedback to create a counter).
  • The Multiport Switch block caused a segmentation fault while attempting to report an error when the data type of the signal at the control input port was boolean.
  • The Continuous Transfer Function block could cause a segmentation fault during simulation if its denominator has 0's as leading element(s). Even when a segmentation fault did not occur, the state-space realization had uncontrollable states.
  • A segmentation fault would occur during the block diagram compilation phase (before simulation begins) if a bus or muxed signal branched to more than 20 destination blocks requesting contiguous memory for input values.
  • The direct feedthrough flag was inverted for continuous and discrete transfer function blocks when their realization is tunable which could lead to an invalid block execution order.
  • Data store writes are no longer allowed to have a constant sample time. This was leading to unexpected, undesirable behavior. For example, if two data store writes with the same tag were executed conditionally and orthogonally and those blocks had a constant source, both blocks would execute one unconditionally during model initialization. The value of the last one to execute would be used for the duration of the simulation.
  • Variable-step solvers generated invalid answers for some models, because of divide-by-zero operations that sometimes occurred in the zero crossing detection code.
  • If the pulse generator were given a negative delay that was equal in magnitude to the duty cycle in time-based mode, simulation would never get beyond time zero. • If the delay were non-zero, the pulse generator would improperly synch up with time after being enabled.
  • If a model contained a variable sample time block and used a fixed-step solver, Simulink would generate erroneous warnings regarding sample times not being in the sample timetable when the model was compiled.
  • The error message that read, "diagram because it contains variable sample time blocks or S-functions" now reads, "Cannot compile diagram because it contains variable sample time blocks or S-functions and is using a fixed-step solver."
  • During simulation, when a block reported an error during its block output operation, Simulink R12.1 would not immediately report the error that resulted in unexpected termination of the simulation. It could also cause problems if a user written S-function relies on immediate simulation shutdown when an error is first encountered.
  • When signals produced by a bus selector indirectly and inadvertently looped back into a bus selector, Simulink would produce erroneous and confusing results in R12.1.
  • The warning about duplicate names of signals feeding a Bus Creator block did not indicate which names are duplicates.
  • Unexpected results occurred without producing an error when invalid connections were made with asynchronous (interrupt) support using function-call subsystems. • The VxWorks library, vxlib.mdl, contained blocks that allow for the asynchronous execution of function-call subsystems and blocks that specify how data should be transferred to and from the asynchronously executed function-call subsystems, but was not consistent in distinguishing between them to ensure that they were used correctly.
  • Models containing blocks with long names (such as matrix math blocks, M-file S-functions, and S-functions requiring contiguous inputs) would cause previous releases of Simulink to crash.
  • The busdemo.mdl (type busdemo at the Matlab prompt) now uses two Bus Creators instead of a Mux block.
  • The function ssGetModelName returned a NULL string when a model was simulated from the command line, but returned the correct answer when simulated from the menu.
  • A logic error in ssGetOutputPortReusable caused S-Functions that called ssGetOutputPortReusable to receive the wrong answer.
  • In R12.1, the Chirp block swept at twice the specified rate.
  • In R12 and R12.1, masked blocks with parameter fields that had the name of a single base workspace variable took more memory than previously in R11 because Simulink was making an internal copy of the variable.
  • In R12 and R12.1, when the Matrix Multiply block was used within a loop, an error during dimensions propagation could occur.
  • In R12.1, if parameters were tuned in a model containing an If block when the model was simulating, a Segmentation Violation could occur.
  • In R12 and R12.1, a dimensions propagation error could occur when using the Reshape or Dot-Product blocks in a loop.
  • In R12.1, when a masked library block had a disabled field, it could potentially appear unconnected if the field contained an invalid expression. This typically occurred when the user typed 'sim(model)' without first loading the model.
Contact sales
Free technical kit
Trial software
E-mail this page