20-sim 5.1

20-sim 5.1 has been updated with many improvements to help you edit models more easily.

5.1.0 (12 Jan 2024)

General

  • You can now save models as a processed model file. This means you don’t need to process / compile these files before starting the simulator.
  • Loading and processing large models is faster.

Editor

  • A selected submodel is now has a bold orange outline and is more visible (centered) in the Editor when you click Go Up.
  • Navigate through the model hierarchy using ENTER and Backspace.
  • Use the Home, End, PgUp, and PgDown keys for to easily scroll through large models.

Simulator

  • Select a Speed Factor for real-time simulation.
  • Plots can be disabled to save memory.

Python Scripting

  • New functions for loading and saving a processed model file.
  • New functions for loading and saving a simulation state.
  • Coordinates are displayed in the footer. This is useful when placing submodels in the Editor using scripting.

Octave Scripting

  • Added: Support for Octave 8.1.0/8.2.0/8.3.0

C-Code Generation

  • Added: You can now make code templates that support not just one data type (real) but
    all four (boolean, integer, real, string). A template has been added for the Arduino that
    supports this. Also 20-sim 4C 3.0 will support this for the Bachmann template. As a
    result, the generated C-code of your model is more efficient, both in performance
    and in resource usage.

Bug-fixes and Improvements

  • In addition to the above mentioned items, 20-sim 5.1 received more than 180 bug-fixes and minor improvements since 20-sim 5.0.

20-sim 5.0

5.0.4 (build 12788, December 7, 2023)

Editor

  • Improved: added extra caching to speed-up certain drawing actions
  • Fixed: crash in drawing routines during model close followed by a model open from scripting
  • Fixed: crash in drawing submodel terminals when controlling 20-sim from scripting
  • FMI: Fixed: for some specific FMUs, the generated 20-sim code is truncated. As a result, the model does not process.

Simulator

  • Fixed: Empty plot without any curves can cause a freeze of the simulator window
  • Disabled: AVX512 simulation support because it is not yet faster than AVX2
  • Fixed: Do not show a stopsimulation() message box when 20-sim is in scripting mode
  • Improved: Speed-up the data file reader by reading and returning a whole row at once

Scripting

  • 3D Mechanics Editor: Fixed: get/set design parameters did not work using the example given in the Python API documentation
  • 3D Mechanics Editor: Fixed: get/set design parameters function did not accept dot-separated names

Installer

  • Fixed: unattended installation was broken with 20-sim 5.0.3

Code generation

  • Fixed: FMI 1.0/2.0 auto-compilation with Visual Studio 20xx did not work on some systems

5.0.3 (build 12565, September 4, 2023)

Editor

  • Improvement: Optimize drawing and scrolling behavior for larger models
  • Improvement: Creating a port using right-click insert port now creates the port at the right-click location
  • Fixed: crash after dissolving multiple large submodels
  • Fixed: stability improvements for drawing cleanup and submodel delete actions

Processing

  • Fixed: Submodel processing failed with global variables that were never assigned
  • Fixed: Allow the usage of the rows() and columns() functions in initialequations

Code generation

  • Fixed: out-of-memory error during C-code generation for large models

Simulator kernel

  • Disable AVX512 simulation mode on supported CPUs. Needs more testing.
  • Fixed: certain models could trigger a crash in AVX mode on a CPU that does not support AVX2 but only AVX.
  • Fixed: external import variables were reset to zero at a continuation of the simulation
  • Fixed: wrong simulation results when a descrete system goes to zero states

Simulator

  • Improvement: Add the model name to the simulator windows for a plots to distinguish plots with the same name but in different open models
  • Fixed: dragging a plot curve from a plot onto the empty space at the bottom of the plot tree could crash 20-sim

Collision detection

  • Improvement: add support for charging objects
  • Fixed: added various measures to improve simulation stability during collisions

Quantities and Units

  • Add linear density (kg/m) to the units list

Data file

  • Fixed: add back value extrapolation at the end of the data file
  • Fixed: Rewind a data file to allow multiple-run parameter sweeps
  • Improvement: add a GUI option to stop the simulation when the end of a data file is reached. By default 20-sim 5.0.3 will now extrapolate values.

Scripting

  • Improvement: Add support to set/change the value of a constant for a script using SetVariable()
  • Improvement: Do not set the simulation state to finished when an endless simulation reaches the entered finish time value
  • Fixed: Don’t show a “stop simulation” message box in script mode
  • Fixed: Creating a connection with duplicatable ports did not work
  • Fixed: Python: set_implementations() with list arguments did not work properly
  • Fixed: Crash on running a script from the scripting menu with a text figure selected
  • Fixed: various scripting functions did not accept a . as separator for submodel paths

3D Animation

  • Improvement: Add support for showing catenary cables
  • Improvement: Reduce the memory footprint of 3D animations
  • Fixed: Deleting a 3D animation plot with a large STL file could crash 20-sim

Code generation

  • C++ Class: Fixed: GetStepSize() should return the step_size instead of the time (Credits: H.O. Dorresteijn)
  • FMU export: Fixed: generation on a UNC network share did not compile the FMU code

License

  • Fixed: set user RW-access right to the version-indepent license folder to allow users to update their license without the need for administrator rights

5.0.2 (build 12127, October 19, 2022)

Model Processing

  • Fixed: 20-sim could not open a partially encrypted model under specific conditions

Simulator

  • Improved: faster matrix transpose in AVX2
  • Improved: faster matrix multiplications in AVX2

FMI

  • Fixed: FMU export fails from the File->Export menu

Scripting

  • Octave: updated documentation for Octave 7.2.0 support

5.0.1 (build 12080, September 14, 2022)

Editor

  • New: Show the scripting menu by default (for saved models).
  • Fixed: Distribute horizontal and vertical did not work as expected.

Scripting

  • New: Octave 7.1 support added.
  • New: Add “new” menu item to the Scripting menu to make it easier to add new scripts to a model.
  • New: Add “edit” menu to the Scripting menu to make it easier to edit existing scripts.
  • Fixed: Creating connections to a port on the top-level of the model.
  • Fixed: Opening a model with a capitalized EMX extension looses plots and simulator settings.
  • Fixed: Python tdmech.connect() attempted to start 20-sim 4.9.
  • Improved: Code generation from scripting now returns an error result if the code generation fails.

Processing

  • Fixed: error in sample() and hold() functions when expressions are used instead of variables.

Mask

  • Fixed: Loading and saving weight files in the neural network demos fails.

Code Generation

  • Fixed: Generated code of discrete systems always had a sampletime of 1 Hz.
  • Fixed: Code generation on a network share fails sometimes.

Controller Design Editor

  • Fixed: Crash when switching to bode plots view.

Simulator

  • Improved: Various additional optimizations and fixes of the new SSE2 and above instruction sets.
  • Improved: Reduce memory usage during instruction generation.
  • Fixed: Transpose of a 1×1 matrix under SSE2.
  • Fixed: Crash due to failed memory allocation on large models with a large amount of plot variables.
  • Improved: Remove unnecessary plot updates when replaying an animation.

Collision Detection

  • New: Possibility to obtain collision pairs with correct forces added.

5.0.0 (build 11933, July 18, 2022)

Editor

  • New: Allow Unicode characters in names of submodels and ports (e.g. Greek port names).
  • New: Allow encrypting a submodel with a password.
  • Improved: Show a lock icon in the model tree for encrypted submodels.
  • Improved: “Choose Plot” dialogue shows the plot window names.
  • Preliminary: Add a partial Spanish translation.

Graph Editor

  • New: Submodels with a rectangular shape can have straight line connections for fixed <=> non-fixed terminal connections.
  • New: Add copy value to clipboard functionality to the right mouse menu.
  • New: Right mouse click option “Add implementation from file”.
  • New: Right mouse click option to synchronize the interface between all implementations of a submodel that has multiple implementations.
  • Improved: When you zoom in, the snap-to-grid functionality becomes more accurate.
  • Improved: Newly added ports were not added on grid.
  • Improved: Added a tool setting to increase the default undo buffer size.

Equation Editor

  • New: Added a variable value pane to the equation editor to inspect the current values during a simulation run or the end values after finishing the simulation.
  • New: Add copy value to clipboard functionality to the right mouse menu.

Sidops Language

  • New: Allow setting a non-zero initial value for import variables (external).
  • New: Added support for expressions as default values during declaration of parameters:
    parameters
    real p1;
    real p2 = 5;
    real p3 = 2 * p2;
    real p4 = 45 {deg};
    real p5 = (2 * p2) {deg};
  • New: Enter and view variable values in hexadecimal and binary format:
    variables
    integer x ('view=decimal')
    integer y ('view=hexadecimal')
    integer z ('view=binary')
    equations
    x = 12345;
    y = 0x12345;
    z = 0b10110;
  • New: Add the “favorite” keyword to the Sidops language:
    real favorite myparameter;
  • New: Added to Quantities and Units:
    Angular Jerk: {rad/s3} and {deg/s3}
  • New: Add the missing bitwise C-style or operator:
    or_result = x | y

Icon Editor

  • Improved: When opening the icon editor, zoom-in to have a better resolution.

Simulator

  • New: Completely rewritten simulation kernel that now supports generation of optimized SSE2, AVX and AVX2 instructions.
    On recent PCs with AVX2 support this can speed-up the simulation of larger models up-to 50%.
  • New: Add support for storing a processed model.
  • New: Add keyboard shortcuts to the plot and curves tree:
    DEL to delete a curve/plot; F2 to rename.
  • New: Show attributes (like ‘readonly’) in the parameter editor.
  • Improved: Table2d reader now also accepts , and ; separated csv files.
  • Improved: Use the curve color for the y-axis lables when using separated (=non-shared) y-axes.

3D Mechanics Editor

  • New: Support for expressions. Users can type expressions using design parameters for all parts in the editor:
    object/joint/sensor/actuator positions and orientations
    masses
    inertias
  • Added: Initial XML-RPC and Python scripting support:
    getVersion
    openModel
    saveModel
    closeModel
    generateCode
    generateSubmodel
    generateScenery

Library

  • Hydraulics: New: updated all library block to use the fluid settings from a shared HydraulicFluidProperties block.
  • Examples: Updated all Hydraulics examples to use the new HydraulicFluidProperties block.
  • Improved: Clock libary model optimized discrete implementation for code generation purposes.
  • New: Signal\Logical libary blocks now have a “boolean” implementation.
  • Improved: Signal\Logical libary blocks and, or, xor, nand and nor now have implementations upto 9 ports.

Code Generation

  • New: Added Visual Studio 2022 project files to all code generation templates with existing Visual Studion project files.
  • New: Add a targets.ini option to specify a float postfix. Add %FLOATPOSTFIX%="f" when XXDouble is a typedef for float instead of double.
  • Improved: Arduino template: Add float postfix ‘f‘ to all literal values.

Scenario Manager

  • New: Added a new tool called the “Scenario Manager” to graphically define and excute automation scripts for 20-sim.
    With this tool you can define advanced multiple-run experiments.

Scripting

  • New: Add the Controllab Python installation to the registry to allow selecting it in external editor tools like Visual Studio Code.
  • New: Pass the selected submodel as an environment variable to a script when called from the “Scripting” menu.
  • New: Function to add/remove ports to/from a submodel.
    Python: add_port(), remove_port()
    Octave: xxsimAddPort(), xxsimRemovePort()
  • New: Function to create a connection between to submodels.
    Python: create_connection()
    Octave: xxsimCreateConnection()
  • New: Allow setting/clearing the “realtime” option using the set_settings (Python) xxsimSetSettings (Octave) function.
  • New: Allow changing the CPU architecture setting (e.g. to “AVX2”) using the set_settings (Python) xxsimSetSettings (Octave) function.
  • New: Function to insert a submodel from file.
    Python: insert_submodel()
    Octave: insertSubmodel()
  • New: Function to import a 3D scenery from file.
    Python: import_3d_scenery()
    Octave: xxsimImport3DScenery()
  • New: Function to set the submodel properties fields.
    Python: set_submodel_properties()
    Octave: xxsimSetSubmodelProperties()
  • Improved: getPorts() now also returns quantity and unit information.
  • Improved: Add support for Octave 5.x and 6.x
  • Improved: Add support for calling .pyw files from the Scripting menu.

Collision Detection

  • New: Function to obtain collision pairs.
  • New: Cone and capsule collider shapes.
  • New: Option to store onlyu the normal force.
  • New: Group rigid body object as a Bullet compound object.
  • New: Added the option to disable objects.

Joystick

  • New: Add function to detect the availability of a force feedback joystick or a gamepad with rumble support.
  • New: Add support for the JoyWarrior 24A10L and JoyWarrior 28A12L digital outputs (e.g. to control LEDs).

Subscription

  • New: Update the licence manager to support 20-sim subscriptions and regulator online license verification and auto-updates.
  • Improved: Warn the user when the 20-sim license is about to expire soon (e.g. within 2 weeks).
  • Changed: Limit the personal version to a maximum of 3000 variables and 500 equations.

Installer

  • New: The installer and all 20-sim binaries are signed with the Controllab code signing certificate.

20-sim 4.9

Develoment release for 20-sim 5.0. This version is never officially released.
Version number update to 5.0 in May 2022
.

20-sim 4.8

4.8.5 (build 12055, August 11, 2022)

License

  • Changed: 20-sim 4.8 should not accept a 20-sim 5.0 license key.
  • Fixed: Floating license xml file is no longer written (backport from 20-sim 5.0).

Scripting

  • Fixed: getImplementations(path) does not work with . Only accepts \ (backport from 20-sim 5.0).
  • New: add support for Octave 6.x and 7.1 (Windows only).

Simulator

  • Fixed: Real-time simulation starts running faster than real-time after multiple hours.

Installer

  • Sign the installer with the Controllab code signing certificate.

4.8.4 (build 11233, November 11, 2021)

License

  • Fixed: Floating license activation for standard users without admin rights.

Examples

  • Fixed: Dynamic Error Budgetting example crashes.

Simulator

  • Fixed: EulerAngles: QuaternionFromRotationMatrix could return NaN.
  • Fixed: Data file: Reading from CSV data files is sometimes slow.

Scripting

  •  Fixed: xxsim.plot.savePlotAsBitmap did not check the simulation state. Don’t accept save plots as bitmap during simulation.

4.8.3 (build 10415, October 21, 2020)

General

  • Added: New procedure to request trial licenses. This is now going via a webpage with a dedicated form, making the whole process of receiving a trial license much simpler.
  • Fixed: Windows explorer crash due to a path with a length of over 260 characters (maximum path length for Windows).

Graph Editor

  • Improved: When an invalid name is entered when adding a new implementation to a submodel, the “Enter name” dialog is now reopened instead of aborting the dialog.
  • Fixed: When adding an implementation with the same name as an already existing implementation to a submodel, it no longer overwrites the existing implementation, but now says that the name is not allowed.

Model Processing

  • Improved: Global parameters that are assigned a value in the initialequations section gave a warning during processing that the default value of the global was not set. This is now no longer the case.

Simulator

  • Improved: Drawing of plots in the simulator was sometimes unexpectedly slow. This has been resolved now.
  • Fixed: Dropping an .emx file on the simulator no longer causes a crash.

Language

  • Fixed: Parameter values are no longer allowed to have multiple dots in them.

Library

  • Added: Bondgraph submodels EffortDetector and FlowDetector were added.

3D Animation Toolbox

  • Fixed: Coupling a 20-sim variable to the transparancy setting of an object sometimes caused a crash. This has been fixed.

Scripting

  • Fixed: Adding plot curves via scripting no longer stores these curve variable paths with dots, but instead with the usual backslashes.

3D Mechanics Toolbox

  • Fixed: An issue has been resolved in which the body properties dialog crashes when breaking a connection between bodies.

Dynamic Documentation

  • Added: Support for running under recent versions of the Bachmann PLC WEBSRV webserver

4.8.2 (build 10124, April 24, 2020)

General

  • New: GUI language Chinese.

Graph Editor

  • Improved: Text alignment fixes.
  • Fixed: Opening the submodel properties of old 20-sim models.

Model Processing

  • Fixed: Algebraic loop solver generated incorrect equations under certain instances. Resulting simulator message: “Matrix sizes not compatible in div instruction”.

Simulator

  • Fixed: Plot lines are too light for the second run.

FMI Import

  • Fixed: a renamed FMU file (file name different than the FMU name in the modelDescription.xml) does not simulate in 20-sim.

FMI Export

  • Fixed: local variables were incorrectly generated with variability “constant” instead of “continuous”.
  • Fixed: VS2010 project files did not include the MeBDFi sourcesScripting.

Scripting:

  • New: Octave: Add support for Octave 5.2.0 and 5.1.0.0 (Windows 32-bit/64-bit).
  • Fixed: Python: add missing int() cast in linearize_model function.
  • Fixed: Python: disconnect() function closed 20-sim where it should only disconnect.
  • Fixed: GetSubmodelProperties() and SetSubmodelProperties() did not work for old 20-sim models.

4.8.1 (build 9989, Jan 13, 2020)

General

  • Fixed: Installation of 20-sim for the first time on a PC no longer throws an error that it cannot find a missing folder.

Graph Editor

  • Improved: Table2D block now gives more meaningful errors when something goes wrong.
  • Fixed: Exporting your model to bitmap when the model was up outside of the visible part of the editor sometimes did not export the part of the bitmap that was not visible in 20-sim.

Language

  • Improved: The range attribute for variables and parameters now has support for one empty part of a range, like range=<0,] only sets the lower limit to 0, but sets no upper limit.

Simulator

  • Improved: Add additional checks to prevent NaN in step responses after linearization.

Code Generation

  • Fixed: Bitget/Bitset/Bitclear did not generate code correctly in case you wanted to get/set/clear a bit outside of the allowed 32 bits of an integer in 20-sim. This is now fixed.
  • Fixed: The code generation dialogue now also remembers the name of the submodel of which code was generated last, even if it is a nested submodel.
  • Added: Build support for Microsoft Visual Studio 2019 compiler for all code targets.

4.8.0 (build 9961, Nov 11, 2019)

General

  • Improved: All dialogs now use the anti-aliasing font, for better readability on LCD screens.

Graph Editor

  • New: The Model Properties dialog now also shows the hierarchical path of the submodel. You can copy-paste and use this in your scripts for submodel-related scripting functions.
  • New: Connections and submodels will highlight when you hover on top. This makes drag and drop of models from the library easier.
  • New: Interface Editor has now the possibility to edit the source text directly. Making it much easier to copy/paste ports between submodels.
  • New: In the Editor you can change the position of terminals directly without opening the Icon Editor: Choose View menu – Show Terminals (Ctrl-T); Left-click the terminal that you want to move and drag it to the wanted location while keeping the left mouse button pressed.
  • New: Allow text alignment on left, center, right top and bottom.
  • Improved: Color of splitter is reused as color of signal.
  • Improved: Hide non-interesting folder and .folders in the library tree.
  • Improved: FMU import reconstructs vectors and matrices based on the FMI structured naming convention.
  • Fixed: Boolean signal on boolean signal now inserts the correct submodel.
  • Fixed: Submodels no longer move a few pixels after a save and reload of the model.
  • Fixed: Several issues with dialogues that are placed behind the 20-sim main window are resolved.
  • Fixed: Support for Unicode characters in the submodel description field has been added.
  • Fixed: Duplication of a submodel sometimes showed a very large icon.
  • Fixed: Tooltips are now shown in the Linear Systems Editor.
  • Fixed: Undo snapshots were not taken in case the global relations, interface editor, linear systems editor or controller design editor were closed.
  • Fixed The interface editor up and down arrow buttons did not always properly move the item up and down the list of ports.
  • Fixed: The linear systems editor crashed when the numerical values dialogue was also open.
  • Fixed: Using an existing splitter with a colour did not propagate through to newly tapped off signals from this splitter.
  • Fixed: Message shown when double-clicking an encrypted submodel is now more clear on why you cannot view its contents.
  • Fixed: Positioning of long port names did not always work correctly.
  • Fixed: Dragging multiple selections in the editor, sometimes only dragged 1 figure.
  • Fixed: Closing graph editor did not close the interface editor.
  • Fixed: Fix in which the wrong global relations editor was shown when the selection of a submodel was made via the search option of 20-sim.

Editor

  • New: Support of Annotations/Attributes. Example ‘min’, ‘max’, ‘range’
  • New: The Editor will show a Scripting menu when Octave or Python scripts are available for a model and stored in a Scripting subfolder.
  • New: The editor now has new ‘Go Back’ and ‘Go Forward’ buttons to quickly navigate between the last two selected submodels in the model hierarchy.
  • New: keyboard shortcut keys for ‘Go Up’ (Alt-Up), ‘Go Down’ (Alt-Down) and the newly added ‘Go Back’ (Alt-Left) and ‘Go Forward’ (Alt-Right).
  • New: If a lot of parenthesis () are used, it may be hard to see the grouping. You can put your mouse pointer next to a parenthesis and have the group highlighted.
  • Changed: The model properties of encrypted submodels except for the name are now read-only.
  • Fixed: Tooltips in the equation editor sometimes showed wrong values.
  • Fixed: When processing an equation model within 2 seconds after its equations got pasted, the processing still processed an old model.
  • Fixed: Sometimes, when global variables are present, local equations did not show their errors.
  • Fixed: Symbolic and numeric linearization failed when the input is static (literal / parameter / constant).

Processing

  • Fixed: Constants are no longer always continuous time. They can not we be used in discrete systems as well.
  • Improved: A parameter can now be used both in continuous and discrete time, without propagation of discreteness.
  • Improved: Reset Causality now also removes the User Causality.
  • Improved: When a warning is thrown about an unknown unit for a global, the processing is aborted.
  • Fixed: Double assignment of variables previously caused a crash, this has been resolved.
  • Fixed: Functions that generate an implicit coupling (int, previous, etc.) should have coupled variables of the same data type.
  • Improved: Derivative function did not work in discrete time systems.
  • Improved: Behaviour of the initial value of the previous function suddenly changed when a variable value was changed to a literal value as initial value.
  • Fixed: Local globals could be assigned multiple times.
  • Fixed: Show unknown unit warning for globals window.

Simulator

  • New: Possibility to limit the final step to not cross the finish time.
  • New: reset initial to zero from the menu.
  • New: Errors from MATLAB calls tomatlab, domatlab, frommatlab are now shown in 20-sim.
  • Improved: Nichols plot grid is extended to repeat for each multiple of 2π.
  • Improved: Better handling of time events for fixed and variable step-size integration methods. This increases the simulation speed of many models with events.
  • Improved: Give more informative message when loading of a simulation DLL does not work.
  • Fixed: Breakpoints are now also active in realtime simulation.
  • Fixed: stepsize instruction now gives correct result.
  • Fixed: Bitget and bitset functions did not work for larger integers.
  • Fixed: Sensitivity of the Multiple Run Simulation mode now works correctly.
  • Fixed: Joystick dll crashed when setting force feedback values to the joystick from within 20-sim.
  • Fixed: Optimization run shows under certain conditions the actual number of steps being -1.
  • Fixed: Breakpoints were not triggered when attempting to simulate in realtime.
  • Fixed: DLLs were not properly unloaded when an error occured during model initialization.
  • Fixed: When Backward Euler is selected, but there are dependent states in a model, it used to switch to BDF, but this is now no longer the case.
  • Fixed: Sometimes the buttons in the simulator indicated simulation, even though there was no simulation running.

Library

  • New: Mux and demux models for integer and boolean data types.
  • New: New demo models: RotatingPendulum, Controllab (our logo), ScaraRobot_UnityAnimation.
  • New: The datafile reader has been updated to support more variants of the CSV file format. Note: not backward compatible! This version stores additional information in the model. Once edited, you cannot open it in previous versions of 20-sim.
  • Improved: Boolean library blocks are improved and now only exist once in the library. Furthermore, they now have all boolean inputs and outputs.
  • Fixed: Impulse block with variable step integration gave wrong results.

Language

  • New: Range support for parameters and variables. You can now extend the declaration with min, max, range and readonly attributes to limit the allowed values for parameter changes.
  • New: language functions bitshiftright, bitinv

Plots

  • New: Select predefined plot settings from the Color Themes.
  • New: Set the colors for all elements of a plot like the axes and the plot border.
  • New: Save plot settings as default for a single plot, multiple plots and every new plot that you open.
  • New: Variable name in Plot Properties Sheet | Axis/Curve page can now be edited directly, without having to open the Variable Choose Dialog.
  • New: Multiplication/Offset settings to scale and vertically shift a variable before plotting.
  • Improved: Scaling for plots now default on Auto-Scaling.
  • Improved: Scaling of plots in endless simulation mode after clear period now uses the previous scaling.
  • Improved: Default line thickness now on 2 instead of 1.
  • Improved: Code Generation is now also available as toolbar button.
  • Improved: The secondary simulator plot windows now also contain all plot toolbar buttons.
  • Changed: Simulator plots are not automatically rescaled anymore when you zoom-in. A manual zooming during simulation is kept when the plot goes out of the range.
  • Fixed: Bug fix that gave plots wrong plot settings when model properties were changed.
  • Fixed: Copying curves sometimes did not properly copy the label of that curve correctly.
  • Fixed: Scaling curves during endless simulation did not work properly.
  • Fixed: Creating a csv file from plots introduced tabs that should not be present.
  • Fixed: Renaming a variable using the f2 key did not propagate through to the plot variable.

3D Mechanics Editor

  • Fixed: The 3D mechanics editor thought it had a demo license when the license type is a floating license.
  • Fixed: Crashes on an undo action were fixed.

3D Animation

  • Improved: 3D Animation Properties: Variable fields now scale with the size of the dialog.
  • New: Allow to enter the rotational values in degrees, radians or grads.
  • Fixed: Cone object. Initial drawing of the object now correct (Cone no longer on the floor).

Settings

  • New: tool configuration option DLL Search Folders to learn 20-sim additional folder where it should search for DLLs used in e.g. the dll or dlldynamic function. This allows for sharing own/custom DLLs with multiple models.
  • New: It is now possible to choose between different MATLAB session types to connect to a MATLAB automation session: shared session, shared desktop session, dedicated session.

Code Generation

  • New: Arduino template: New: eventup, eventdown, timeevent functions are now supported.
  • Fixed: Code generation for Bachmann PLC caused duplicate SVI variable entries in some cases.
  • Fixed: The timeevent function in 20-sim had an implementation in c-code which caused increasing delays.
  • Fixed: parameters that were vectors or matrices and labelled as favorite now generate correct C-Code.

FMI Support

  • New: FMU export (standalone) now supports the use of the MeBDFi multi-step integration method in an FMU.
  • Improved: FMU export now properly uses the FMI structured naming convention for matrices.
  • Improved: FMU import now uses the FMI structured naming convention to recognize and restore vector and matrix signals and parameters.
  • Improved: FMU import uses the FMI structured naming convention to import parameters with their original hierarchy.
  • Improved: Several compilation fixes for the FMU MeBDFi integration method.
  • Improved: Support for the most recent visual studio 2017 installations when building FMUs.

HTML Documentation

  • Fixed: Variables were shown in SI Units, even if other units were specified. These are now shown in the given units.

Scripting

  • New: Scripting menu in the Editor when scripts are stored in a Scripting folder next to your model.
  • New: Import variables can now be set with the function XML-RPC function xxsim.setvariables.
  • New: Support for Octave 4.4.x (Win32, Win64). Note that Octave 5.1.x is not yet supported due to missing functions in Octave 5.1.x.
  • New Octave/Matlab script functions:
    • xxsimExport3DScenery
    • xxsimGetSubmodelTree
    • xxsimSetSubmodelProperties
    • xxsimGetPorts
  • New Python script functions:
    • export_3d_scenery
    • get_submodel_tree
    • set_submodel_properties
    • get_ports
    • get_monitor_variables, get_monitor_values, set_monitor_variables
  • Improved: The build-in Python installation is upgraded to version 3.7 and contains additional packages for reading/writing Excel documents (openpyxl and xlrd), for data analysis (pandas), for symbolic mathematics (sympy) and for creating scripts with a GUI (wxPython).
  • Improved: Add plot type to the existing getPlotsFromWindow scripting function.
  • Improved: Made sure that the Python function get_submodel_properties functions as described in the documentation.
  • Improved: log2csv Python function now has the missing “overwrite” argument to overwrite the results file.
  • Improved: Scripting functions for getSubmodelTree and getSubmodelProperties did not work correctly on node-like submodels, like junctions and nodes.
  • Improved: Fixed several scripting functions such that they correctly work on equation-only 20-sim models.
  • Improved: Now return false when the simulator is not yet open and you try to call the isSimulating function.
  • Improved: Improved error handling for the Simulator Run function.

Toolboxes

  • New toolbox: 20-sim Unity Toolbox. This is a brand new toolbox that couples 20-sim with the third party software Unity.

20-sim 4.7

4.7.3 (build 9981, Jan 13, 2020)

General

  • Fixed: Make sure that all default toolboxes remain active when 20-sim 4.7 is activated using a 20-sim 4.8 license.
  • Changed: Better detection of running 20-sim under Wine.

Editor

  • Fixed: Make sure that models made in 20-sim 4.8 that use the new text figure alignment feature can be opened in 20-sim 4.7.
  • Fixed: Make sure that when a text figure is selected in the editor, and a submodel is selected in the model tree, a go up can still be performed.
  • Fixed: A crash of the linear system editor when a NaN occurred has been resolved.

Language

  • Improved: bitcmp has been improved to work more like its Octave equivalent.
  • Improved: The bitget/bitset functions have been improved in case a bit is requested above its 32-bit limit.

Simulator

  • Fixed: fixed a crash in the data from file dialogue.
  • Improved: Nominal value and percentages were not properly remembered in the multiply run sensitivity settings of the multiple run dialogue. This has now been resolved.

Code Generation

  • Improved: The bit complement and bit swap bytes function implementations have been improved for all code generation targets.
  • Fixed: Make sure, when no 20-sim Python is installed, that a proper error message is given during the FMU build process.

4.7.2 (build 9375, Dec 21, 2018)

Editor

  • Improved: Creating a signal from an existing splitter with color now copies the splitter color.
  • Fixed: Printing of encrypted models should not be possible.
  • Fixed: Splitter delete from right mouse menu crashes 20-sim.
  • Changed: Export to Matlab/Simulink is not allowed in the 20-sim Viewer.
  • Fixed: 20-sim crash during submodel copy-paste when the new submodel has more ports than the existing submodel.
  • Fixed: Dissolve of a submodel with input edge = output edge results in an unhandled exception.

Model Processing

  • Fixed: Strange generation of discrete indices for particular models.

FMI support

  • Fixed: FMI Import: Fix type conversion warnings in FMI 2.0 master import for non-real data types
  • Fixed: FMI Import: 20-sim should set the initial inputs before fmi2ExitInitializationMode()
  • Fixed: Export of an model with an FMU to Matlab/Simulink gives an unhandled exception

Simulator

  • Fixed: Joystick DLL crash when writing force feedback values to a joystick without force feedback interface

Scripting

  • New: Add Octave 4.4.1 x86/x64 support
  • Improved: Code generation from scripting should not start compilation as parallel task. Instead the script call should block until compilation is finished.
  • Fixed: Python version is overwritten when an older 20-sim version is installed.
  • Fixed: Several fixes for scripting functions in case of equation models (no graphical model)

MotionProfile Wizard

  • Fixed: Unitialized use of reference variable with a certain combination of settings

Linear Systems Editor

  • Fixed: Linear system editor with Numerical Values dialog open results in a non-responsive 20-sim session
  • Fixed: File export did not save the file

3D Mechanics Editor

  • Fixed: a valid floating license says demo version in 3D Mechanics

4.7.1 (build 8902, May 25, 2018)

Documentation

  • Improved: Imported FMU submodels now show FMI documentation when pressing F1
  • Fixed: explanation of sample and hold were swapped
  • Fixed: DLL documentation output/input mistake
  • Model help did not open webpage URLs anymore

Editor

  • Improved: Zooming with Ctrl+MouseWheel has now more intermediate steps
  • Improved: Dissolve of a splitter should introduce an additional intermediate point in the new signal connection if it is located at a corner
  • Fixed: Dissolve ordering of intermediate points in a signal connection was wrong under certain conditions
  • Fixed: port name tool-tips were not working anymore
  • Fixed: Simulator to editor parameter value synchronization did not work for parameters with annotations
  • Fixed: 20-sim crash on a vertical scroll action for specific models
  • Fixed: FMI import: calculated fixed parameters should not be set
  • Fixed: FMI import went wrong when the active model is stored in a read-only folder

Processing

  • Fixed: static matrix index expressions did not longer work. A new model check was too strict.

3D-animation

  • Fixed: paths disappeared during a file save for non-existing STL files
  • Fixed: Non-existing STL files were continuously checked for, resulting in a lower FPS

Simulator

  • table function: add error message when the table data is not monotonically increasing for the first column
  • Fixed: early stop of a running simulation took multiple seconds on certain PCs
  • Improved: Modified BDF method: better usage of the MeBDFi method arguments for the maximum stepsize

Scripting

  • New: Add support for Octave 4.2.2 and 4.4 (both x86 and x64 Windows)
  • Fixed: xxsimWriteLogToCsv failed under certain conditions

Library

  • Fixed: Discrete LowPassFilter-FO and LowPassFilter-SO blocks had non-zero initials which should have been zero
  • Fixed: Certain library blocks had absolute library paths pointing to 20-sim 4.0

Code Generation

  • Fixed: C-code generation of encrypted submodels
  • Fixed: unexpected rounding errors in generated double literals for certain integer values

4.7.0 (build 8692, March 2, 2018)

General

  • 20-sim 4.7 has been updated to support the Microsoft Windows 10 Creators Update and Fall Creators Update. While older versions of 20-sim will (mostly) work under Windows 10, 20-sim 4.7 has been specially developed and tested for latest releases of Windows 10.
  • We have continued our efforts to support the FMI standard for co-simulation.

Editor

  • You can now delete a submodel but keep the connected signals or ports with the Dissolve command.
  • FMU import: You can now import models from other programs (supporting FMI 2.0 co-simulation export) into 20-sim. Simply drag and drop the model (with the extension .fmu) into 20-sim and connect!
  • FMU export: You can now export a 20-sim model as an FMU with a variable step integration method (using VODE Adams).
  • FMU export is now part of the File – Export menu.
  • (Re-)drawing of large models in the Editor is faster.
  • In the Interface Editor use the Move Up and Move Down buttons to order the list of ports.
  • Drawing closed curves has been improved.
  • The Search box now also shows port names of graphical models.
  • Flat drawing style for new submodels. A shadow is no longer added by default.
  • The Interface Editor now as support for ordering ports.
  • “Edit Globals” added to the right-click menu.
  • Connecting boolean signals now allows for inserting And/Or/Xor/Nand/Nor blocks similator to the PlusMinus/MultiplyDivide blocks for real and integer signals.

Simulator

  • In the Parameters Editor You can set initial values to zero with the Initials to Zero command.
  • In plots you can now select parameters to be displayed.
  • Faster plotting for fixed step-size simulations (pre-allocates required memory).
  • The Variable Chooser dialog for selecting plot variables now also shows parameters.
  • It is now possible to copy and paste curves from one plot to another.
  • It is now possible to copy and paste plots from one window to another.
  • Real-time simulation timer is now more accurate.

Language

  • The function settoolsetting has been added to set specific simulation options from within the model during simulation.
  • Type casting is supported to prevent warnings when converting data types.

Library

  • You can now play a sound during a simulation our couple a sound at event generated during a simulation.
  • A hydraulic line model has been added.
  • Most of the valves and pumps in the Hydraulics library now have parasitic volumes to minimize algebraic loops and speed up simulations of hydraulic models.
  • The Joystick library block and example model are updated to support multiple joysticks.

Examples

  • Added a PlaySound example model.

3D Animation Toolbox

  • Import of large STL-files in the 3D Animation toolbox is faster.

3D Mechanics Toolbox

  • The center of mass is shown when you select a body.

Real Time Toolbox

  • All code generation templates:
    • Support for the Event, EventUp/EventDown and TimeEvent functionality of 20-sim.
    • Generate more efficient code for matrix manipulations.
    • Extra code filtering to generate only the code necessary for the selected model
    • Visual Studio 2017 Solution and build support added
  • Arduino support: the Arduino code generation template now supports all AVR and ARM boards that are supported by the Arduino IDE and not only the Arduino Uno and Due.
  • FMU 1.0/2.0 export for 20-sim submodel:
    • Multi-instance support
    • Allow parameter updates during co-simulation.
    • Vode-Adams integration method support.
    • fmi2GetFMUstate/fmi2SetFMUstate support (fixed step-size integration methods only)
    • Many small improvements & compatibility fixes.

Scripting

  • Support for Octave 4.2.0 / 4.2.1 for Windows (32-bit and 64-bit).
  • Allow set/reset of the endless simulation option from scripting using xxsimSetSettings (Octave) / set_settings (Python).
  • New Octave/Matlab scripting functions:
    • xxsimAddPlotWindow
    • xxsimAddPlotToWindow
    • xxsimAddCurveToPlot
    • xxsimGetCurveIDFromName
    • xxsimGetCurvesFromPlot
    • xxsimGetSubmodelProperties
    • xxsimHideCurve
    • xxsimHidePlot
    • xxsimHidePlotWindow
    • xxsimRemoveCurveFromPlot
    • xxsimRemovePlotFromWindow
    • xxsimReplaceSubmodel
    • xxsimSaveSubmodel
    • xxsimGotoSubmodel
    • xxsimGetWindowSize
    • xxsimSetWindowSize
  • New Python scripting functions:
    • add_plot_window
    • add_plot_to_window
    • add_curve_to_plot
    • get_curves_from_plot
    • hide_curve
    • hide_plot
    • hide_plot_window
    • remove_curve_from_plot
    • remove_plot_from_window
    • remove_plot_window
    • replace_submodel
    • save_submodel
    • goto_submodel
    • get_submodel_properties
    • get_window_size
    • set_window_size

Installer

  • Keep C-code, M-code and library path settings on 20-sim update
  • Installation in a different directory (other than the default) did uninstall an existing installation in the default directory

Bugfixes & Minor improvements General

  • Use the Windows 7 “Browse for folder” dialog
  • Updated Dutch translation

License

  • Connection to license server now uses SSL

Editor

  • Drag-drop a new model on an equation model did not open the new model. Drag-drop only worked on graphical models
  • Fixed: Drag-drop items from the explorer to 20-sim did not work anymore in Windows 10 Fall Creators update
  • MLP Network Editor: fix faulty display of names of inputs & outputs
  • Improved: submodel implementation switching is now faster
  • Fixed: Spline figures were drawn with rounding effects
  • Quantities and units: Make sure that the domain name does not contain spaces (not supported)
  • Fixed: Tooltip evaluation of an expression could freeze 20-sim
  • Graph editor open could result in a weird window size and position on multi-display systems
  • Bond graph: Fixed: a node submodel was introduced into a bond-graph connection instead of a junction when drawing a new connection onto an existing bond
  • Fixed: Selection of items close to a submodel with long text labels was difficult
  • Fixed a stability issue when selecting a search result line
  • Fixed a stability issue during model open
  • Fixed: XML parsing error: ‘no element found’ at line 1
  • Fixed: Implode action looses non-zero initialvalues for variable names that end with numbers
  • Fixed: File Open sometimes asked twice if you would like to save the current model

Library

  • Fixed: The model “Block Diagram Mainmodel” from “Getting Started Manual” did not open

Code generation

  • Targets.ini learned a new (optional) option to clear the target directory for code generation: cleartargetdirectory=true
  • Added: New token %INITIALIZE_PARAMETERS2% to assign parameter values to a constant array like “const XXDouble xx_P = {…};”
  • Initialize variables memory to 0.0
  • Simulink: code generation failed for initial state values that are calculated in initialequations
  • FMI Export: FMU did not create an output signal when the output is a state
  • FMI Export: 20-sim exports with hierarchical names. Add the missing “variableNamingConvention=’structured’ to the modelDescription.xml
  • FMI Export: Array index starts with 0 => should be 1

Documentation

  • Plot modes documentation updates
  • Added: PhaseSensor block
  • Updated keyboard shortcut key list
  • Reference Manual: removed the non-existing 3D-animation beam element

Simulator

  • Fixed: 3D plot name was not stored in the model
  • Fixed: hidden variables were not shown as initial values
  • Fixed: new plot windows did not have a default name
  • Fixed a division by zero livelock during linearization
  • Fixed: CSV file reader livelock when reading an invalid CSV file
  • Fixed: Stopping the simulation occasionally showed “Message not understood: #checkForAutoAccept’
  • Fixed a stability issue in the numerical values dialog
  • Parameter dialog: unit combo box sometimes showed the wrong unit

3D Animation

  • Fixed: 3D object spring: Lower Side Closed flag was not stored in the model
  • Fixed: Unapplying a background image in a 3D plot was not stored in the model
  • Fixed: Spot Exponent in Light 3D object was not stored in the model
  • Fixed: Light objects in 3D animation cannot get Map color types.

3D Mechanics editor

  • Fixed: Joint3D wrong if checked in UpdateHingePoints

Scripting

  • Allow starting 20-sim with a non-default scripting port
  • Fixed model open/save/close/process for model names and paths that contain an ampersand

20-sim 4.6

4.6.4 (build 8004, July 26, 2017)

3D Animation

  • Fixed: Range issue in Spot Angle.

Code Generation

  • Fixed: Directly mapping to an R(ate)-variable if a submodel takes the integral/previous of an input.
  • Fixed: Initial equations in a FMU cannot influence initial states.
  • Fixed: Crash when running a generated FMU in a FMI 1.0 master simulator.
  • Fixed: FMU 2.0 Export: Table2D implementation for source code FMU does not work on Linux/MacOSX

Documentation

  • Reference Manual: Fixed: Unclear statement about ‘while do’ and ‘reapeat until’.
  • Reference Manual: Fixed: Orientation of Euler angles in 3D animation window (ZXZ instead of XYZ).

Simulator

  • Fixed: Not saving a model when closing 20-sim during a simulation.
  • Fixed: A issue when writing a data file of multiple run results (parameter sweep).
  • Fixed: A issue that unnamed nodes can generate instructions for a continuous time block instead of the corresponding discrete block.
  • Fixed: A crash during a multiple run simulation with parameter sweep.

4.6.3 (build 7733, March, 13, 2017)

Editor

  • Fixed: do not rescale rectangles in an icon when the ‘name’ text is not inside the rectangle.
  • Improvement: rectangle rescale should take into account the grid.
  • Fixed: SVG-related memory leakage.
  • Fixed: Exception when connecting a single port to a multi-port bond element after replacing a multi-bond junction by a single-bond switching junction.
  • Fixed: Library blocks with masks could trigger an isRelease exception.
  • Improvement: Model > Processing > Warnings/Errors > “Port is not used” renamed to “Power port is not used” since it does not apply for signal ports.
  • Motion Profile Editor: Fixed: Help button was unavailable.
  • Fixed: Tooltip for global parameters did not show a descriptive comment when using them in other submodels
  • Fixed: Filter Editor did not open when inserted after a search action for this library block

Icon Editor

  • Improvement: better icon alignment to grid

Interface Editor

  • Feature: Add up/down buttons for rearranging the input and output ports
  • Fixed: Selected item in the tree did not always correspond with the selected port
  • Fixed: Adding ports until the list is bigger than the window should show the scroll bar.
  • Fixed: When you create a new signal port and change it to output, the tree is not refreshed, so it seems that it is still an input
  • Fixed: Create a new signal port and change its name and keep the focus on the name field. Add another new port using the toolbar button. Sometimes, the new port is not automatically selected in the tree and the name of the previous port stays active.

Linear System Editor

  • Fixed: LSE showed chinese characters in the first node of the parameters list

3D Animation Editor

  • Fixed: crash on some PCs when adding a spring to the 3D-animation

3D Mechanics Editor

  • Fixed: Manual constraint joints could become automatically assigned

Processing

  • Fixed: Not all syntax errors from the Global Relations Editor are reported to the user
  • Fixed: Processing could fail for certain models when ‘Optimize divisions’ is enabled
  • Fixed: When pressing “Save”, 20-sim tries to check the current submodel. This should not be done, since the current submodel may not be finished yet or even fail any model checks.

Library

  • Fixed: Signal Mux block moves when switching implementations
  • Fixed: Signal Demux block moves when switching implementations

Simulator

  • EulerAngles DLL: Fixed: EulYXZsFromRotationMatrix was accidentally calculating relative
  • Fixed: Unit information in the simulator is lost when a model is opened ans saved without simulating
  • Fixed: Disable certain menu options that are not available during simulation

Scripting

  • Fixed: prevent changing submodel implementations during simulation
  • Fixed: A model in a path that contains a ‘&’ could not be opened using scripting
  • Improvement: Accept also forward slashes in the xxsimSaveModel function
  • Python: Fixed: set_implementations() does not accept a dict under Python 3.x
  • Python: Fixed: various scripting issues
  • Python: added get_version() function (returns the 20-sim version)
  • Octave: added: xxsimGetVersion() function (returns the 20-sim version)
  • Octave: added support for Octave 4.2.0 (Windows, 32-bit only)

C-code generation

  • Feature: C/C++ code generation templates can now tell 20-sim which integration methods are supported by this template. This allows for adding support for variable step-size integration methods in future versions of the templates.
  • Fixed: C-code generation for string parameters with two backslashes generated three backslashes instead of four. Each backslash should be escaped separately.
  • Fixed: Global string parameters that are assigned outside the generated submodel were generated as empty strings.

Documentation

  • Getting Started manual: Improvement: various corrections and clarifications
  • Reference Manual: Fixed: function names in the tree should not start with a capital
  • Reference Manual: Removed: reference to Windows XP and the X-file format (not supported anymore)
  • Documentation generation: Fixed: SVG files generated by the XML documentation generation option could not be opened in other tools due to namespace issues

4.6.2 (build 7308, October, 5th 2016)

General Improvements

  • Fixed: Renaming submodel could fail in some rare occasions.
  • Fixed: In some occasions linearization of the model could influence the starting behaviour of the simulation model.

Editor

  • Feature: F2 on submodel now selects the submodel name, which allows quick rename of model.
  • Feature: tooltips with value are now also shown during simulation.
  • Fixed: Background image update now works better when a local path is used.
  • Fixed: Clicking on Print icon works again.
  • Fixed: Renaming a submodel with states, now leaves initial value intact.
  • Fixed: Tapping of a signal, starting close to a submodel with a long name (where name takes more space than icon) now works correctly.
  • Fixed: Updating of string parameter array now works better. In some occasions that first element would get the concatenation of all strings.
  • Fixed: Switching implementation of a submodel could incorrectly change equation code for variables that were paremeters in other implementation.
  • Fixed: now all free ports are shown in the editor, and not only the ones closest to the mouse click

Processing

  • Improvement: Better handling of global parameters and variables with a local scope.
  • Improvement: Global parameters that have no assigned value at any location now gives a warning message.
  • Fixed: A parameter that is used multiple times as initial value for an integral now works correctly.
  • Fixed: Using a double ddt function could crash 20-sim.

Interface Editor

  • Improvement: Port list is now shown on left side.
  • Improvement: Clicking on white space of radio button and checkboxes now works all right.

Linear System Editor

  • Fixed: panel resize now shows scrollbars again when needed.
  • Fixed: Linear system transfer to Matlab opens Matlab again in case it was closed.
  • Fixed: Delay time now works correctly in Eigen Frequency editor.

Filter Editor

  • Fixed: When a too high order was chosen, 20-sim could crash.

Code generation

  • Fixed: use of limit function in an expression now works correct. Parenthesis were missing around the expanded code for the limit function.
  • Fixed: EulerAngles.c in templates contained wrong function argument in function EulerAngles_EulYXZsFromRotationMatrix. EulOrdYXZr was used instead of EulOrdYXZs.
  • Fixed: String parameters are now correctly generated in generated C-Code.
  • Fixed: In some occasions 20-sim could crash on models containing a dependent state.
  • Fixed: Equations with matrix index on left side, could end up in Output Equations where it should not be.
  • Added VS2008, VS2010, VS2013 and VS2015 solutions to the C-Code template.

Simulator

  • Fixed: use of limit function in an expression now works correct.
  • Fixed: FFT plot with pairwise input-output switched on could crash 20-sim.
  • Fixed: Running a model containing the EulerAngles.dll more than 1000 times could cause that the DLL could not longer be loaded.

3D Mechanics Editor

  •  Fixed: Icon representation for viewport now represent actual view.

4.6.1 (build 6898, 8 April 2016)

General Improvements

  • Translation: Dutch add translations for untranslated items and improve some existing translations
  • Documentation: update element-wise power operator documentation: 20-sim also accepts a scalar
  • Documentation: fixed: adjoint(T) matrix description was wrong
  • New: added command line options to start 20-sim with a different scripting port:
      -http-port=1234
      -tcp-port=1235
      -serial-port=com2
  • Properties dialog: auto-select the name of the submodel instead of the description field

Processing

  • Fixed: processing of for ranges with variables used as index in the matrix

Interface Editor

  • Fixed: item focus and keyboard selection
  • Fixed: select the port name automatically when adding a new port

Library

  • Fixed: masked library blocks like the MotionProfile wizard did not always update the 20-sim submodel
  • Hydraulics: Fixed: valve arrows in the icon pointed in the wrong direction

Code generation

  • Fixed: code generation for element-wise power
  • Fixed: code generation for matrix elements with variable indices
  • Fixed: XXExponent2 needs xx_logarithm_2 in Arduino and StandaloneFMU template
  • Fixed: StandaloneFMU: generated code did not compile with VS2010 (express)
  • Fixed: StandaloneFMU: Outputs/Unknown indices are wrong when the model contains vectors or matrices
  • Workaround: StandaloneFMU: VS201x compiler could hang while compiling models with many parameters (> 10000)
  • Added: StandaloneFMU: support for the 20-sim Table2D block (requires Python during code generation)

Simulator

  • Disable certain right-click menu options during simulation that are not allowed

3D Animation

  • Fixed: occasional crash on mouse hover when updating a variable reference in the 3D animation properties

3D Mechanics Editor

  • Translation: fix diacritics characters
  • Fixed: selecting Camera Move mode, moves the camera without holding the left mouse button

4.6.0 (build 6684, 10 December 2015)

 General Improvements

  • GUI look-and-feel now adapts to the Windows version dependent look-and-feel.
  • FMI support: The Functional Mockup Interface (FMI) is a tool-independent standard to support model exchange. 20-sim now supports exporting models as FMUs (Functional Mockup Units).
  • Python Scripting: 20-sim supports now scripting from a Python script. This means that you can now use Python to automate and control 20-sim next to the existing Octave/Matlab scripting support.
  • 20-sim can be used to develop training simulators.

Editor

  • Gradient Fill of submodels is standard on. You can turn this off in the General Properties (click Tools – Options).
  • Version numbers can be defined for each 20-sim model. The version numbers can be shown in the model background image. Version numbers are also available as tokens during the C-code generation.
  • Use Ctrl + Mouse Wheel to zoom in and out.
  • 20-sim now also supports the 64-bit version of Matlab for the exchange of data between 20-sim and Matlab. This applies to the domatlab, tomatlab, frommatlab functions and the Matlab buttons in the 20-sim GUI (e.g. the Linear System Editor)
  • Drawing closed curves has been improved.

Simulator

  • Using the C-code generation command, you can now export models using the FMI standard. Both version 1.0 and 2.0 of the FMI standard are supported.
  • The Variables Chooser allows you to show or hide knots.
  • Faster plot curve drawing on multi-core systems

Language

  • A new function realtime is added. It can be used to check if the simulation runs slower or faster than the wall-clock time.
  • The bitshift operator now also supports right shift.

Library

  • Bond graph II-element added.
  • Double clicking a library model opens it in the editor.

3D Animation Toolbox

  • You can show plots and 3D animations in full screen.
  • Multiple 3D animations are drawn more efficiently resulting in higher frame rates.
  • You can show or hide individual objects by clicking the Solo or Hide option.
  • You can show the frame rate in a 3D Animation and set the frame rate to a maximum.
  • You can connect the transparency to a variable.

3D Mechanics Toolbox

  • Support of global parameters for inertia’s and global parameters for joints with spring/dampers.
  • Support of flexibility in joints by overriding constraint settings.
  • Ctrl + Mouse Wheel to zoom in and out.

Scripting

  • Scripting from Python is now supported with similar functions as in Octave/Matlab.
  • MIMO linearization support added to xxsimLinearizeModel in Octave/Matlab.
  • New Octave/Matlab scripting functions:
    • xxsimClose
    • xxsimSavePlotAsBitmap
    • xxsimStartSimulation
    • xxsimStopSimulation
    • xxsimIsSimulating
    • xxsimCopyStatesToInitials
    • xxsimOpenSimulator
    • xxsimSetTimeout
    • xxsimGetImplementations
    • xxsimGetMemoryUsage
    • xxsimGetPlotIDFromName
    • xxsimGetPlotsFromWindow
    • xxsimGetPlotWindowIDFromName
    • xxsimGetPlotWindows
    • Support of Octave 4.0 (with GUI).
    • Scripting API documentation is now also accessible from the Help menu.

Bugfixes and Improvements

  • General
    • All open 20-sim windows will be closed when the Editor is closed.
  • Editor
    • When changing the colors of models directly in the Graph Editor these changes are stored after saving the model.
    • Models cannot be placed any more outside the border and get out of view.
    • Line drawing can be stopped with the escape key and stops with right mouse button.
    • When removing a submodel implementation, it is first asked which implementation to remove.
    • Drag-drop of a submodel with one implementation does not ask anymore which implementation you want to select.
    • The Global Relations Editor is now also accessible from the Tools menu.
  • Simulator
    • Endless simulation does not call finalequations anymore.
    • Warning given by incorrect input of eye function.
    • The last selected code-generation path will now be remembered and stored in the model.
    • Code generation templates
    • Add support for XXRealtime() (ANSI-C version of the realtime function).
    • Slightly faster RungeKutta4 integration routine.
    • Added VS2015 solutions.
    • starttime and finishtime are not generated as hardcoded values anymore.
  • Library
    • Updated the icons of various sensor blocks to show a proper +/- pair after a rotation with 90 degrees.
    • Updated all library blocks with integral symbols to use the Unicode compatible Lucida Sans font now instead of SymbolProp. This allows proper HTML export for 20-sim drawings.

20-sim 4.5

4.5.4 (build 6171, 28 September 2015)

Fixes

  • Editor: improved rendering of background images with transparency
  • C-Code generation: Matrix code generation error with parentheses: c = (a + b)
  • C++ Code generation: (CPPclass template) fix compile error when using XXLinsolve
  • Simulator: right-mouse plot dragging plot does not release when the mouse pointer is outside the plot boundary
  • Linear System Editor: fixed the print button behaviour

4.5.3 (build 5904, 7 July 2015)

Bug fixes:

  • 3D Mechanics Editor: Fixed: adding joints was not possible anymore due to the invalid name checks introduced in 4.5.2

4.5.2 (build 5872, 29 June 2015)

Improvements

  • C-Code generation: Combine multiple discrete system in code generation if the sample times are equal
  • C-Code generation: Arduino Target now generates proper Arduino Sketch (=Arduino project)
  • C-Code generation: Proper C-Code escaping for strings containing double quotes (“)
  • 3D Animation: better handling of mouse during playback with multiple 3D Animation windows open
  • 3D Mechanics Editor: improved checking for invalid names
  • Undo buffer: improved performance
  • Scripting: added following functions: xxsim.simulator.start, xxsim.simulator.stop, xxsim.simulator.isSimulating
  • Scripting: possibility to change the value of a parameter during simulation
  • File save: Connections are now sorted on alphabet for better file comparison possibility
  • Model processing: More clear message if too many arguments are passed to a function
  • Model processing: Better message in case equations can not be sorted
  • Search function: also the global relations editor is now included in search

Fixes

  • Windows XP: Shell extensions does not show 20-sim icon anymore due to stability issues and compatibility with 64-bit windows
  • Scripting: Scripting function “xxsim.model.setImplementations” and “destecs.setImplementations” now also works for hierarchical models
  • Scripting: function “xxsim.model.setImplementations” now also works for models with more than two implementations
  • Numerical values: Fixed an issue where the cursor would jump to a wrong location if clicking on the slider forward/backward
  • Simulation Plots: Fixed an issue where depending on the toggle state of a plot, that after saving the model the plots could disappear
  • C-Code generation: The duration of XXImpulse function now matches that with the 20-sim implementation
  • C-Code generation: Arguments of XXImpulse were missing a comma in some cases
  • C-Code generation: XXArcTangentHyperbolic function now calculates the correct function
  • Global variables: Better performance saving large model with global variables
  • 3D Animation video creation: Fixed an issue where the creation of the video could not be terminated
  • Library: Fixed and issue where update from library did not update the model. Happened only for models saved in 20-sim 4.5

Models updates

  • Library: Fixed an issue in one of the equations for the LoopFlushingValve library model

4.5.1 (build 5561, 3 December 2014)

Fixes

  • Code generation: Submodel icons with transparency were shown with a black background in 20-sim 4C
  • Model editor: Copy-paste could trigger a crash under certain conditions
  • Interface editor: Open on double-click and selection of the proper ports when adding new ports.

4.5.0 (build 5489, 12 November 2014)

General Improvements

  • The code for loading and compiling of models has been rewritten to handle large models more efficiently. Loading and compiling of large models will now be up to 300% faster.
  • The code for plotting graphs has been updated to handle large simulations more efficiently. This will be particularly clear when zooming into plots with many data points.
  • The symbolic solver handles algebraic loops more efficiently.Dynamic Error Budgetting: added a Help button.

Editor

  • Drag and drop of image files (bitmaps, svg images, ..) is now supported in the Editor and Icon Editor.
  • Native support for SVG background images has been added.
  • Multiple align methods for objects have been added.
  • An additional causal form has been added: Likes causality. This causal form can be used for parasitic elements like the parasitic volume.

Simulator

  • The minimum and maximum value of every variable is now shown in the Variables Chooser if you run a simulation in Debug Mode.
  • FFT plots can now be selected in the Simulator tree. Results are updated after every simulation run.
  • FFT plots can show the transfer function, by choosing the the option Pair-wise transfer function.
  • Plots and 3D animations can be shown in Full Screen Mode.

Library

  • An extra implementation has been added to the gearbox and transmission models: ideal transmission with efficiency.
  • The model unbalance has been added.
  • A friction model has been added.
  • The accumulator model has been expanded with a real gas and temperature model.
  • A loop flushing valve has been added.
  • A shuttle valve has been added.
  • A pressure compensator has been added.
  • A parasitic volume has been added.

Examples

  • New example models are added:
  • Collision detection: CubesWallCrush, CylinderStack
  • Control: Smith Predictor, AntiWindup, Euler differentiation problems, FiniteStateMachine
  • Signal Processing: Phase locked loop demo
  • Hydraulics: AccumulatorTest, Closed Circuit Drive Train with Loop Flushing Valve, Hydraulic Operated Disk Brake
  • 1D Mechanics: Crank Rod Mechanism
  • 3D Mechanics: KnucleBoomCrane
  • Bond graph: TrolleyWithLoad

Language

  • Support of bitwise operators.

Frequency Domain Toolbox

  • Support of linear systems with time delay. The time delay is now stored in a linear system model and shown with a exponential added to the transfer function.
  • You can choose to unwrap or wrap the phase in a Bode plot.

3D Mechanics Editor

  • You can override each constraint joint by individual spring dampers by setting the Constraint Properties.
  • A compliant joint (6D spring) has been added.

Scripting

  • New functions are added for code generation: xxsimGenerateCCode, xxsimGenerateMatlabCode, xxsimGetCCodeTargets, xxsimGetMatlabTargets.
  • New functions are added to fetch and modify tool and model settings: xxsimQuerySettings, xxsimSetSettings
  • New functions are added fetch the list of implementations of submodels and to change the implementation: xxsimQueryImplementations, xxsimSetImplementations
  • A new function is added for SISO linearization: xxsimLinearizeModel

Fixes & Improvements

  • General
    • Some memory leakages have been fixed.
  • Library
    • The cylinder models now have a separate barrel mass and a piston mass: CylinderSingle, CylinderSingleSpringReturn, CylinderDouble.
  • Editor
    • The values of global variables are now correctly shown as tooltips.
    • The Zooming option Scale to Fit now takes into account a background image.
    • Imploding a set of models now maintains the arithmetic type (boolean/real/integer).
    • Expressions are better evaluated with tool tips.
    • Printing a model now layouts better.
    • Datafiles from Power Spectral Density function are also stored in .emz file.
  • Simulator
    • FFT plots now have sufficient height.
    • Autosave now completely stores simulation data.
  • 3D Animation
    • Selections of objects are only shown with the plot properties open. Not when you hover your mouse over a 3D animation.
    • Camera movements with the mouse are more intuitive.
  • 3D mechanics Editor
    • A mouse click will not move the plot with 2 pixels anymore.
    • For constraint joints that contain spring/dampers, proper code is generated now.
    • Fix for code generation of model “Generic Filter”
  • Code Generation
    • Fix for code generation of model “Generic Filter”.

20-sim 4.4

4.4.2 (build 5077, 8 September 2014)

General Improvements

  • Dynamic Error Budgetting: added a Help button
  • Improved drawing of multi-bonds with intermediate points
  • Documentation: fixed a few broken links in the Help file
  • Documentation: HeatCapacity: T0/C should be T0*C as in the library block
  • Documentation: Added an unattended UNinstall page
  • Documentation: Change the phone number of Controllab Products B.V.
  • Documentation: Improve the formatting of language reference section in the reference PDF manual
  • Text editor dialog: now resizable
  • License manager: Strip all white space characters from the entered key to prevent problems with copy-pasted keys directly from the e-mail
  • Scripting: Add xxsimClearRun() as example call to the MultipleRun script to show how to cleanup old plot data (and free the allocated memory)

Model updates

  • Library: Bond Graph: the icon for the switching 1-junction (X1) was wrong
  • Library: Terminals on the switch block now have a fixed position
  • Example: AnimalPopulation was not stable when running longer than the default run-time

Fixes

  • Graph Editor: Infinite depth library path results in a non-responsive 20-sim editor after search action
  • Graph Editor: Tree selection of a submodel, followed by an “Edit icon” would change the wrong submodel
  • Graph Editor: Plot variables lost on a “Go up” on the main model
  • Graph editor: Check energetic behavior failes when there are port matrices involved
  • Linear System Editor shows a wrong Bode plot for certain Kp values.
  • Printing: Horizontal compression and overlapping letters in text labels (Windows XP only)
  • 3D Mechanics editor: spring damper for constraints were forgotten
  • 3D Mechanics editor: do not accept names that start with a number
  • 3D animation: beam did not work anymore
  • 3D Animation: vector arrow diameter shrinks by a factor of two when writing and reading
  • Stability issue: clicking on “Help” in the interface editor when the editor is already closed could crash 20-sim
  • Stability issue: auto save during ‘Check model equations’ could crash 20-sim
  • Stability issue: Wine (Linux/MacOSX) fix a crash of the editor when the MS Sans Serif or Arial fonts are missing
  • Scripting: xxsimRun looses the connection with 20-sim on long-running simulations
  • Code generation: ANSI-C: Fixed: warning: suggest parentheses around && within ||
  • Installation: Unattended installation should abort when 20-sim is still running

4.4.1 (build 4356, 28 October 2013)

General Improvements

  • Scripting: xxsimList now shows the list itself when this is used as a command. (implicit ‘help xxsimList’)
  • Linearization: default setting for ‘closed loop’/’open loop’ now default on ‘open loop’
  • Parameter Editor Dialog: Autosizing for quantities and units column in Parameter Editor Dialog

Model updates

  • Quantities and Units: Added Hydraulic Resistance
  • Library: Ground.emx, Changed DegC unit to K to prevent error message when connecting this element to other thermal components

Fixes

  • Multiple Run Results Dialog: Showed overlapping text, now better layout
  • Scripting: added getModelVariables.m in tutorials, to show how to get 20-sim model variables and their properties
  • Scripting: in Matlab variables names with only one character now work also. E.g. xxsimSetVariables(‘f’, 123)
  • Scripting: replaced ‘isboolean’ with ‘islogical’ in all script files for Matlab compatibility.
  • Scripting: In matlab check for presence of ‘system identification’ toolbox in script modelIdentification.m
  • Scripting: retrieving and setting values with xxsimGetVariables and xxsimSetVariables now use the unit value(s) that the variable uses.
  • Scripting: ‘addpath’ now always adds the absolute path of the 20-sim scripts. So moving to another folder will not result in warning messages of a relative path.
  • Scripting: xxsimRun, if a model needs processing but has errors, the run will not start
  • Scripting: xxsimOpenModel, when opening model created with a newer version of 20-sim a messagebox will no longer pop up in scripting.
  • Matlab Code Generation: Matlab/Octave line continuation (‘…’) syntax error in generated code. Fixed with additional space.
  • Multiple Run Results: Matlab button now generates proper an m-file and dat-file.
  • Graph Editor : Fixed some errors in Tooltip showing values. In some occasions it could crash 20-sim.
  • Memory leakage in Vode Adams Integration method in combination with events.

4.4.0 (build 4262, 25 September 2013)

General Improvements

  • General: Scripting allows you to run tasks in 20-sim automatically using specialized scripting functions. With these functions you can open models, run simulations, change parameters, process the results and much more. You can run your scripts from Octave and Matlab.
  • General: The memory limit for 20-sim has been increased to 3 GB on 32-bit systems and 4 GB on 64-bit systems.
  • General: New units Apparent Power {VA}, Reactive Power {var} and Thermal Conductivity {W/K} and jerk {m/s3} have been added.
  • Editor: If a newer version of 20-sim is available on the 20-sim website, in the Editor automatically an update button will appear.
  • Equation Editor: Auto indenting has been added to the Equation Editor.
  • Equation Editor: Multi-line tab and multi-line untab has been added to the Equation Editor.
  • Graph Editor: Drag and drop of a 3D mechanics file (.3dm) into the Editor is now supported.
  • Equation Editor: The function linsolve allows a non-square matrix to be entered yielding a pseudoinverse.
  • Simulator: Support of High Resolution Export of plots.
  • Library: A centrifugal pump model has been added (Iconic Diagrams\Hydraulics\Pumps).
  • Library: A model to import data from a joystick has been added (Signal\Sources\Joystick).
  • Library: A model to import data from the keyboard has been added (Signal\Sources\Keyboard). An example model shows a scara robot driven by keyboard commands (Examples\2D Mechanics\ScaraRobotKeyboard).
  • Library: A model to test hydraulic valves has been added (Examples\Hydraulics\ValveTest).
  • Library: Two Crank Rod examples have been added (Examples\1D Mechanics\Crank Rod Mechanim and (Examples\1D Mechanics\Crank Rod Mechanim with Sledge).
  • Library: LowPassFilter-FO and LowPassFilter-SO in Signal\Discrete now really discrete.
  • Language: The function stopsimulation has been extended with a silent stop and a normal stop prompting the user.
  • Frequency Domain Toolbox: Closed Loop linearization has been added to the Frequency Response.
  • Linear System Editor: The Linear System Editor now accept values with an exponent form and ‘+’ like: 1e+10.
  • 3D Mechanics Editor: The camera position has been added to the Camera Settings, allowing you to numerically change the camera position.

Fixes

  • General: Some memory leakages have been fixed.
  • Editor: The Zooming option Scale to Fit now takes into account a background image.
  • Editor: Imploding a set of models now maintains the arithmetic type (boolean/real/integer).
  • Equation Editor: Expressions are better evaluated with tooltips.
  • Editor: Printing a model now layouts better.
  • General: Datafiles from Power Spectral Density function are also stored in .emz file.
  • Simulator: FFT plots now have sufficient height.
  • Simulator: Autosave now completely stores simulation data.
  • 3D Mechanics Editor: A mouse click will not move the plot with 2 pixels anymore.
  • 3D Mechanics Editor: For constraint joints that contain spring/dampers, proper code is generated now.
  • Code generation: Fix for code generation of model “Generic Filter”

20-sim 4.3

4.3.3 (build 3841, 11 June 2013)

General Improvements

  • Documentation: DataFromFile: add an example for the CSV file format

Fixes

  • 3D animation: Cylinder thickness 0.1 was not allowed for lines
  • Documentation: fixed several broken links and “Help” buttons
  • Model processing: Error in processing dependent states in a multi-bond model (regression from 4.3.2)
  • Graph Editor: improved print results of graphical models (text size, alignment, arrows)
  • Graph Editor: Background images did not show up under certain conditions
  • Simulator: some integration methods seemed to hang when using a resint under certain conditions
  • Simulator: toMatlab/fromMatlab used a ‘\’ separator for hierachical names instead of the intended ‘.’
  • Toolbox: Neural Network toolbox could not open certain weigth files

4.3.2 (build 3752, 22 May 2013)

General Improvements

  • Equation Editor: The equation editor has now a built-in auto-complete function. Type a few characters and then press TAB. Now a menu pops up that shows all known words of declared variables, functions, keywords, etc that correspond with the typed characters.
  • Library: extended the spindle model with a new “Pitch” implementation.

Fixes

  • General: various 20-sim start time improvements
  • Wizards: Speed-up opening of wizards like the MotionProfileWizard
  • License: Speed-up license checking for floating licenses
  • 3D animation: raytracing of lines was incorrect
  • 3D Mechanics editor: improve the importing of bodies from STL files
  • 3D Mechanics editor: improve the positioning of imported STL bodies
  • Documentation: Updated Spindle documentation and corrected the eventup documentation
  • Code generation: generated code for generic filter was incomplete
  • Code generation: correct incomplete code generated for nested if expressions with matrix to scalar assignments
  • Code generation: improve readability for nested if’s
  • Graph Editor: importing of old .em model files with an empty 3D animation part did not work
  • Graph Editor: redisplay errors after up/down on large graphical models
  • Model processing: Error processing algebraic loop variables could result in erroneous instructions
  • Library: Windows shortcuts inside a custom library folder could crash 20-sim
  • Library: The discrete blocks: LowPassFilter-FO and LowPassFilter-SO were actually continuous
  • Library: Fixed an incorrect formula in Thermal\Components\Radiation
  • Examples: LQR_and_LQG_with_MATLAB did not work anymore
  • Simulator: automatic coloring of plot curves with more than 17 curves
  • Simulator: finalequations were executed twice
  • Simulator: table file reading returned an error when not starting reading at time=0
  • Simulator: reading a data file with corrupted or incomplete last lines could stall the simulator
  • Recovery: recover also plot settings from autosave files

4.3.1 (build 3548, 15 March 2013)

General Improvements

  • Graph Editor: More information in the resulting list of a search
  • Simulation Plot: Automatic adding of plot-variables is now only done if the variables is not yet in a plot.

Fixes

  • Equation Editor: Pasting with Ctrl-V keeps working after save action.
  • Equation Editor: String parameters containing comma’s now saves properly.
  • C-Code generation: generating C-Code for function ‘initialvalue()’ and ‘dly()’ now always works.
  • C-Code generation: Code generation for matrix max-function inside conditional if-then-else expression fixed
  • 3D Animation: Copying to clipboard is fixed
  • 3D Mechanics Editor: Copy paste of objects works again
  • License: Floating license functionality improved.
  • License: License path field in License Activation wizard is no longer read-only, making it possible to copy-paste a path.
  • License: Graph Editor shows correct license state information after applying key in initial License Activation Dialog.
  • Simulation Window: Numerical Values button fixed.
  • User DLL: The current working directory is set to that path of the user-DLL, so that dependencies for that DLL can be found if they are in the same folder.
  • Editor: Changing a global parameter in equation editor text is now properly parsed.
  • Graph Editor: Special symbols e.g. integrator symbol, are now shown correctly on Chinese Windows versions.
  • Simulator Plot: Toggling to different tiling state now shows time{s} instead of X{s} for the x-axis.
  • Simulator Plot: Default color for first curve is blue, instead of magenta.
  • Stability & memory usage improvements.

4.3.0 (build 3214, 7 November 2012)

First Release of New Version!

General

  • The 20-sim interface has been changed to reflect the new corporate identity. There is now a new logo for 20sim. The about boxes of both 20sim and 3D mechanics are changed.
  • Autosave now also saves simulation experiments.
  • A functionality is added to check for updates online.

Editor

  • 20-sim 4.3 uses GDI+ for better drawing. The line drawing in the graphic editor is also improved.
  • Auto-sizing of icons for default models is added.
  • Preview of formatting of the text editor for the text box of the graphical editor is now available.
  • Choice list for making connections etc. is now provided. Connection can now be double clicked for selection.
  • Closing Graph Editor also closes the Simulator window. The same is true for loading a new model, this closes the Simulator window as well.
  • Zooming with Alt-mousewheel is now possible.
  • Save a Copy As is added as an option for saving a model. It is very helpful for making snapshots of your model.
  • Background Image is added to a model property. Models and sub-models can now have a background picture.

Simulator

  • It is now possible to move plots and curves among plot windows. All plot windows are listed in a tree at the left window pane.
  • Dragging and dropping of plots and curves with in a plot window is now possible.
  • The distribute curves button which was missing in 20-sim 4.2 is back.
  • The right mouse menu on plots now contains additional options for moving plots and more features like analyzing data.
  • The tools option is added to the menu bar of all plot windows.
  • An option to copy all plots altogether from a plot window to clipboard is added.
  • Export of plots to clipboard and bitmap is now possible in both screen resolution and high resolution.

Library

  • A new implementation has been added to Function table. It is now possible to input table values from a matrix.
  • Unsigned counter support is added to the incremental encoder implementation.

Frequency Domain Toolbox

  • Ctrl-B can now be used as shortcut for Dynamic Error Budgeting.
  • Nyquist plot now always starts scaling on [-2,2] on both axes.
  • Dynamic Error Budgeting: With file input, it now only uses numbers within the range of the file and assumes zero outside. This fixes inconsistencies with different frequency ranges for other inputs.

3D Mechanics Editor

  • Sensors and Actuator Property window also have break and add connection button.

Ccode Generation

  • Templates revised e.g template supports XXDelay, XXInitialFunction and XXStopSimulation

Bugfixes and Improvements

General

  • Better memory management.
  • Importing old 4.0 models is improved.
  • Better implementation of Table/File for large files.
  • Matlab connection: Better checking on sizes of variables that are communicated.
  • DataFromFile: now always first looks at the model location for the file name.
  • Changes made in plot windows will also trigger a saving option when a model is closed.
  • Exponent notation for numbers now accepts a plus. Example: real R = 1e+029.
  • String parameter that contain a comma (,) are now properly stored and read back from file.
  • In some cases a discrete expression was not calculated in discrete time. Example [a1,a2] = expression; with a1 and a2 scalars could trigger this bug. This is fixed.
  • On some multiple monitor display systems, the menu could appear on the wrong screen
  • Better checking of window positions, plot windows will no longer open outside the windows boundaries.
  • License: Better checking of entered keys, thus preventing typo’s.
  • If a user does not have Administrator rights then the possibility to install the license for All Users in the License Activation Wizard is grayed out.

Editor

  • Right Mouse Menu on tree, Model Properties now really opens the correct level and not on a possible selection.
  • Servo Motor Editor now properly saves a model and library again.
  • Parameter Editor, during editing a value and then clicking on the model tree did not apply the value, this has been fixed.
  • Better synchronization of global parameters.
  • Choosing Plot dialog is now re-sizable, and you can double click to select an entry.
  • Find results now show longer lines before breaking with a …
  • Auto Causality is now also possible for very large models (>500 bonds).
  • A new default implementation is added for the Integrate-Reset library block to prevent problems with some integration routines like RungeKuttaFehlberg, BDF and MeBDF.

Simulator

  • Some borders are removed for better layout. Also a better theme support for Windows XP is provided.
  • Copy to clipboard now also aligns strip charted plots.
  • Automatic plot variables (variables that end on ‘\plot’) are now automatically added to a new empty plot.
  • Multiple run: redraw is handled properly at the end of each run when needed.
  • Copy Experiment to Clipboard works again.
  • Copy to Clipboard, thickness of box of legend is now properly scaled.

Toolboxes

  • 3D Animation: Crash which was caused during Cut/Delete because of redraw appearing too early is now fixed.
  • Nyquist and Nichols plot properties also show pages for x- and y-axes.
  • Dynamic Error Budgeting: responses are now always independent of the selection of Show All Outputs.

3D mechanics Editor

  • View Toggle buttons now really toggle again.
  • Copy/Paste works again.
  • The create and break connection for sensors in 3D mechanics is fixed.

Model Processing

  • Automatically generated variables for states/rates etc. now always have unique names. 

20-sim 4.2

4.2.7 (build 3088, 12 October 2012)

Fixes

  • Library: fixed wrong unit for ThermalConductance
  • Matlab connection: In retrieving matrices from matlab, a check is performed on the correct size of the receiving matrix.
  • Crash due to resource leakage on large models
  • 3D Mechanics editor: fix for non-working toolbar buttons
  • 3D Animation: fix potential crash on redraw during a drawing action. This typically occurs when deleting items from the tree.
  • Equation Editor: accept the + in the exponent notation “1e+010″in literal numbers
  • Icon update from a Mask DLL
  • Fixed: automatic added plot variables
  • Bode plot: prevent negative values for the x-axis
  • Start menu: Shortcut to the Reference manual pointed to the wrong file name
  • Simulator: File, Export, Experiment to clipboard was broken due to ANSI/Unicode mismatch

4.2.6 (build 2837, 5 July 2012)

New Features

  • Simulator window menu: Tools | Frequency Domain Toolbox | FFT Analysis, now shows a new plot.
  • Simulator window: Plot properties from the menu now comes with a list of plot windows
  • Simulator window: Right mouse button now has export data: for one plot, for current window or for all plots.
  • Library: add new example model “Phase-Locked Loop”

Fixes

  • Integration method Vode Adams: Fixed an error for locating events.
  • Import/Export of CSV files improved. Sometimes nothing was read.
  • Import of experiment files (other .emx files) now works again.
  • Fixed add to “plot/favorites/input probes/output probes” with the right mouse button. Also for the first curve, a label is generated properly.
  • Plot Properties: Removed checkbox for Strip Charted, because it is now a feature of the Plot window itself.
  • Graph Editor: Processing of main equation model showed “Empty Model”.
  • Graph Editor: Better warning when DLLs are missing during startup
  • Graph Editor: Fix for menu displaying on the wrong screen (multi monitor)
  • Graph Editor: Fix for default parameter update on drop replacement
  • Graph Editor: Fix exception on save when the model has syntax errors
  • MotionProfileWizard: Calculation of port variables removed from initialequations to improve sorting of equations.
  • MotionProfileWizard: Fixed a bug that could cause an exception on closing the window.
  • MotionProfileWizard: Now also detect external inputs on reopening the wizard.
  • Linearization: models that have noise as inputs could give additional states and non-constistent answers. This is fixed now.
  • Modulo operator: slightly different way of calculating the modulo operator. Now the div and mod are always in sync. The method is equal to the generated C-Code function as well.
  • Simulator: In strip-chart mode, the title in the legenda is placed to the left side, to save some space.
  • Simulator: calculation of limint improved. Now the output is really clipped.
  • Simulator: calculation of resint improved.
  • Simulator: for multiple plots, the names are numbered if it is equal.
  • Simulator: warn for saving the model when changed simulator settings are detected on model close
  • Linear System Editor: In Plot Properties for Nyquist and Nichols plot, now also show the tab pages for x-and y-axes.
  • C-code: fix code implementation of the initialfunction() and the dly() function
  • C-code: Fix generation of xxfuncs functions that requeire an id as argument
  • C-code: Improve code generation for “StopSimulation”
  • C-code: replate unknow token XX_NR_INITIALVALUE_FUNCS by NUMBEROF_INITIALFUNCTION
  • DESTECS: when a shared design parameteris promoted to an initial value, it will still be found now
  • DESTECS: better change detection to prevent unneeded questions to save the model

4.2.5 (build 2469, 19 March 2012)

New Features

  • Simulator: possibility to copy or store the all plots to bitmap or clipboard instead of one plot.
  • DESTECS: add support for retrieving and changing the implementations of a submodel

Fixes

  • License: error where 20-sim could not go to demonstration mode is fixed.
  • License: minor fix when trying to activate a license that does not exist.
  • VodeAdams: specific settings for this method are now properly stored and loaded in .emx file
  • VodeAdams: Fixed a crash if setting for the iteration type for non-linear systems was on functional and the model contained events.
  • Simulator: Copy to clipboard: the bitmap copy now has the correct size, and not an additional white space at the right and bottom.
  • C-code generation: fixes and optimization for Scalar to Matrix assignment.
  • GraphEditor: Selection of port sometimes resulted in a exception.
  • Documentation Editor: link to help-page fixed.

4.2.4 (build 2402, DESTECS build, 27 February 2012)

Fixes and New Features

  • Code Generation dialog. Transparent buttons now show the background again, instead of black.
  • DESTECS changes:
    • Fixed: Writing csv file failed if overwrite == false, even if file did not exist.
    • Added: Suspend/Resume functions for co-simulation.
    • Added: The start function now accepts startTime and finishTime.
    • Fixed: periodic 100% cpu usage when waiting for incoming XMLRPC connections on some systems.

4.2.3 (build 2383, 20 February 2012)

New Features

  • Simulator: Reorder Plots. See right mouse menu on plots and in the tree on the Plot Window. Only present when more than one curve is present.
  • Unattended installation: Usage 20sim.exe /S.

Fixes

  • Linearization: option “as closed system” is now remembered.
  • License Activation now checks if activation for “All Users” is possible. If not this option is greyed out.
  • Quantities and Units editor: File is saved correctly again.
  • 3D Mechanics Editor: Applying model settings now also introduces an undo-snapshot. Undo an edit after changing model settings, does not loose the model settings itself.
  • A delay was present when starting/continuing simulation. This is fixed now.
  • 3D Animation: Stop button now responds properly.
  • Graph Editor: Connection Edit Dialog now has a larger size and also takes into acount the DPI settings when using 125% scaling for screen fonts on laptops.
  • File Save As: always stores simulation/plot information (even when model has not been processed).

4.2.2 (build 2303, 31 January 2012)

New Features

  • Time indicator for 3D Animation plot
  • Updated license dialog, improved support for updating licenses and floating license support.
  • DESTECS: stop button will interrupt the co-simulation
  • DESTECS: more verbose error messages

Fixes

  • Controller Design Editor: Fixed the calculation of the response(H) linear system when a measurement(M) linear system is present.
  • Controller Design Editor: Fixed crash if a plot was closed and data was recalculated.
  • Simulation Plots: Property “Hidden plot” was not written to experiment file.
  • Simulation Plots: Strip chart plots are now better distributed. Title is shown in legend, Last plot gets more space to draw the x-axis information.
  • Numerical values dialog was not deleted properly, which could cause a crash.
  • Fixed: typing in the equation editor was sometimes interrupted for a short time.
  • Fix freeze for code generation of for statement (rare cases).
  • Transfer function from 2 FFT signals now generates correct phase.
  • DESTECS: Load model checks full path.

4.2.1.1 (14 December 2011)

First Release of New Version!

General Features

  • Unicode support
  • XMLRPC scripting support
  • New toolbox added: Dynamic Error Budgetting
  • New license manager

Editor

  • Global Relations Editor added
  • Find also searches the library
  • Drag and Drop now supports data files (e.g. CSV) in the Editor
  • Plant sensitivity (PS) and control sensitivity (CS) added to the Controller Design Editor
  • Tool Tips in Editor now show value, quantity, unit and description
  • Motor Wizard: models are no longer encrypted

Simulator

  • Treeview added that shows all plot windows and plot variables
  • Better handling of plot windows
  • Simulation plots can be grouped / combined into panels
  • 3D animation panel has a loop button

Library

  • Bond Graph:
    • Connection terminals on Bond Graph elements are now placed next to the element
    • PowerMux and PowerDemux are replaced with a multiple implementations version
  • Signal:
    • Mux and Demux models are replaced with a multiple implementations version
    • The model Event has been added
    • The model Noise has been added
    • The model PhaseSensor has been added
  • Examples:
    • New Demo models added: Simple State Machine, Car Skid 3D, Keyboard controlled Scara Robot

What’s Fixed in 4.2

  • HTML documentation improved
  • CSV File Reading now accepts more formats
  • MATLAB connection fixed (32-bit Matlab only). Read this document for more information on how to set-up Matlab to allow communication with 20-sim.
  • Implode / Explode now keeps the initial values as well
  • Drawings are now also stored in the Undo stack
  • Connection mode when using a zoom-level of more than 100%