Controls 2017
Controls 2017
With Adams Controls, the two designers can share the same mechanical model. They can also verify from
one database the combined effects of a control system on a nonlinear, non-rigid model. The physical
4 Adams Controls
Benefits of Adams Controls
testing process is greatly simplified, and the risk of the control law being poorly matched to the real
system is eliminated as you can see in the figure below.
Welcome to Adams Controls 5
Ways to Use Adams Controls
Controls
Application
Controls Input Controls Output
1. Build the Model - The first step in working with Adams Controls is to build or import an Adams
model. The model should be complete and include all necessary geometry, constraints, forces, and
measures.
2. Create the Adams Inputs and Outputs - The outputs describe the variables that go to the
controls application (the output from the Adams model is the input to the controls system). The
inputs describe the variables that come back into Adams (the output of the controls application)
and, therefore, complete a closed loop between Adams and the controls application. All inputs and
outputs must be set up as state variables. After these are defined, you export the plant system files
from Adams for use in the controls simulation software.
3. Build the Block Diagram - Build the control system block diagram with Easy5 or
MATLAB/Simulink. Include the Adams plant in your block diagram, or if using Real-Time
Workshop, export the controls system and import into Adams.
4. Simulate the Model - Simulate the combined mechanical model and control system. Several
different methods are available to run your simulation.
Adams Controls Overview 7
Simulation Methods
Choosing a Simulation Method
Adams Controls offers you three methods with which you can simulate your integrated model and
controller:
Co-simulation/Discrete mode: Specifies that Adams solve the mechanical system equations and the
control application solve the control system equations. The mode names of "co-simulation" and
"discrete" are synonymous.
Function Evaluation/Continuous mode: Specifies that the control application solve both the mechanical
and control system equations. The mode names of "function evaluation" and continuous are
synonymous.
Control System Import : Specifies that Adams solve the combined mechanical system and control system
equations by importing an External System Library (ESL) which is binary representation of a model
generated by MATLAB/Real-Time Workshop or Easy5. The ESL is used by Adams Controls to
automatically create a General State Equations (GSE) entity, along with other supporting entities. This
process is also known as External Function Evaluation (XFE), External System Import (ESI), Importing
General State Equations, or Dynamic System Import (DSI).
These methods allow you to use different methods to integrate your Adams and controls models (EASY5
or MATLAB). See the table below for an overview of suitable controller/simulation method options.
Simulation Method
Controller type: Discrete mode: Continuous mode: C-code import:
Continuous Yes Yes Yes
Continuous sampled controller Yes Yes Yes
Controller with discrete and Yes Yes Yes
continuous states
Discrete controller with synchronous Yes Yes Yes
sampling rates
Discrete controller with No Yes Yes
asynchronous multi-sampling rates
Logic-based controller No Yes No
Co-simulation
For most analyses, the discrete mode is generally the more efficient simulation method. It is faster and
can handle complex models better than continuous mode. You should use continuous mode when
equations solved in the control system would cause a large coupling effect on the Adams data. For
example, you might prefer to use the continuous mode if your analysis requires a very small time step.
Adams Controls Overview 11
Simulation Methods
To preserve the proper dynamics for a mechanical system, discrete mode should sample the mechanical
system at least five times greater than the highest frequency of interest. If the time step is too small to
sample at five times the highest frequency, then you should use continuous mode.
Note: You can find the highest frequency of your mechanical system by performing a linear
analysis with the Adams add-on module, Adams Linear.
Function Evaluation
In continuous (function evaluation) mode, the control system package solves the equations of motion for
the combined controls and mechanical dynamics system. Adams formulates the equations of motion for
the mechanical subsystem and provides information to the controls package as needed.
Typically Adams simulations involve solving a set of differential (equations of motion) and algebraic
(constraint and applied force) equations, known as a DAE system. The Adams integrators are specially
tuned for efficient solution of this type of problem. Using coordinate partitioning, Adams can also
formulate the equations of motion based on a minimum independent set of system states. This results in
a compact ordinary differential equation (ODE) formulation of the equations of motion. Typically this
system of equations is more difficult to solve numerically than the DAE method described above.
The benefit of this ODE formulation is that the state values and time derivatives can be easily
communicated to the controls package. Using this information, the controls package can form a
combined ODE system describing the controls and mechanical states. This is the problem that the
controls package then solves with its own integration techniques. When a new set of state values is found
in the controls package, Adams is called to find the time derivatives of these states, based on the ODE
formulation that Adams has created for the mechanical states. This is why it is known as function
evaluation mode. Adams simply sets up the equations of motion and provides time derivative
information for the states in this mode.
For more information on how continuous mode works, refer to
http://simcompanion.mscsoftware.com/iKB8015801.
Using Easy5
1. Make sure that both Easy5 and Adams have been installed.
2. Make sure you have permission (that is, root ('superuser') privilege) to add and modify files in the
Easy5 installation directory.
3. Perform the following, depending on your platform:
On Linux:
a. Open an xterm window and set your working directory to a directory outside the Easy5
installation directory tree.
b. Start Easy5. The standard command is easy5x.
c. In the Easy5 main window, from the File menu, select Open Command Shell.
d. At the prompt in the command shell, enter:
$EZHOME/install_adams_controls.bat <Adams_topdir> <Easy5_topdir>
where: <Adams_topdir> is the top-level directory for Adams, also provided by "adams2017
-top"; <Easy5_topdir> is the top-level directory of Easy5 (for example,
C:\MSC.Software\Adams\2017, C:\MSC.Software\EASY5\2015, respectively).
On Windows:
a. From the Start menu, point to Programs, , point to Easy5 - (version), point to Shell, and then
select Easy5 Command Shell.
b. At the prompt within the command shell type:
install_adams_controls.bat <Adams_topdir> <Easy5_topdir>
Adams Controls Overview 15
Using Easy5
where: <Adams_topdir> is the top-level directory for Adams, also provided by "adams2017
-top"; <Easy5_topdir> is the top-level directory of Easy5 (for example,
C:\MSC.Software\Adams\2017, C:\MSC.Software\EASY5\2015, respectively).
Note: If you are unable to identify a command line command to run Adams but you can
identify the top-level directory of the Adams installation, you can use -d "directory
path" in place of the command line command.
License Configuration
To configure your computer to run licensed exported Easy5 models within Adams:
1. Start Easy5.
2. From the File menu, select Open Command Shell.
3. At the prompt in the command shell, type easy5x -license.
Easy5 displays the licensing information, beginning with the type of license and the server name
(if a server license) or the path to the license file.
4. Write down the contents of the line that starts with Active license file(s), and the value that
appears in the line following it (for example, 1700@rainier).
5. Perform one of the following:
If the line is Active license file(s) [EASY5_LMD_LICENSE_FILE], set the environment
variable EASY5_LMD_LICENSE_FILE to the output value displayed in Step 4 above (for
example, 1700@rainier).
If the line is Active license file(s) [MSC_LICENSE_FILE], find the value of the
environment variable MSC_LICENSE_FILE to see what license file Adams is using.
If Easy5 and Adams are using different licenses (or license servers), set
LM_LICENSE_FILE to the value for the Easy5 license (for example 2500@bosco).
If Easy5 and Adams are using the same license, your computer is configured properly.
6. For Windows platforms only, modify the Path environment variable to include the path to the
lib_em64t_IFORT (Win64) subdirectory of your Easy5 installation tree.
If your Easy5 model contains components from a licensed library (for example, the Thermo-
Hydraulic, Powertrain, or Gas Dynamics libraries), you will need to make sure Adams finds
your Easy5 license. Failure to perform this step will result in the Easy5 license library not
being found.
16 Adams Controls
Using Easy5
Adams supports the Intel Visual Fortran 16 compiler. The Easy5 model import feature is not
supported with the GNU or other compilers. Check
http://simcompanion.mscsoftware.com/DOC9283 for latest compiler support information.
To find the appropriate value for the variable:
a. Start Easy5.
b. Open an Easy5 command shell: from the Easy5 File menu, select Open Command Shell.
c. At the command shell prompt, enter: echo %EZHOME%.
The output is the directory in which Easy5 is installed. You will use the directory information
in Step 5 below. The usual value of EZHOME is:
C:\MSC.Software\Easy5\(version)\
Animation Options
Adams Controls lets you choose one of two animation modes: interactive or batch. Both methods allow
you to save results to Adams files for review at a later date.
Initialization
Initialization Sequence
Adams Controls performs an Initialization Sequence, consisting of a few different steps, before
commencing with the Co-simulation or Function Evaluation run. The initialization sequence is as
follows.
1. If desired, necessary Adams Solver or Adams View commands are submitted (for example,
ADAMS_init variable for MATLAB; see the Initialization Commands section for more details).
2. Following sequence is followed depending on the status of static simulation:
a. If static simulation is requested, then static analysis is performed at time = 0. (for example,
ADAMS_static='yes' for MATLAB)
b. If static simulation is requested and the simulation fails, the initial conditions analysis is
submitted.
c. If static simulation is not requested, then initial conditions analysis is submitted.
4. Dynamic co-simulation/function evaluation run begins at time = 0.
Thus, equivalent commands in Adams View and Adams Solver work in a similar manner. The exception
is that with Adams View, the model is not registered with the Adams Solver until after all the user
commands in Step 1. have been submitted, which means you may create modeling entities with Adams
View commands. In general, when the model is submitted to Adams Solver, you cannot create new
modeling entities, so this feature will not be available.
22 Adams Controls
Initialization
The Plant Export dialog box below displays the options that correspond to the steps listed above. The
option Initialization Command corresponds to Step 1. above, while Initial Static Analysis corresponds
to Steps 2.a.-c.
Initialization Commands
Initialization commands are Adams commands which are executed before the controls package starts the
co-simulation. If you run a simulation with animation in interactive mode, you must use Adams View
commands to initialize your model. If you are in batch mode, use Adams Solver commands.
You can specify a command in two ways. For example, if you want to change the color of the antenna
model, for an interactive (Adams View) simulation, you can issue one of the following commands:
At the MATLAB prompt, enter:
Co-Simulation and Function Evaluation 23
Initialization
Adams_Init=geometry attributes
geometry_name=.main_olt.antenna.REV15 color=RED
Within the Adams mask, Initialization command field reads: Adams_Init.
Alternatively, in the Initialization commands text box, you can enter the complete command
string enclosed in single quotes and square brackets as follows:
[geometry attributes geometry_name=.main_olt.antenna.REV15
color=RED]
For Adams Solver, you can also place all of your initialization commands in a single file, and reference
it with the FILE command. You can do this in the Plant Export dialog box or you can manually edit your
.inf or .m files. For Easy5, your .inf file might look like this:
NUMBER OF COMMANDS
1
file/command=myfile.acf
This reads in and executes the .acf file.
In MATLAB, you would modify the following variable, either in the .m file, or in the workspace:
ADAMS_init='file/command=myfile.acf'
24 Adams Controls
Co-Simulation and Interpolation/Extrapolation
Interpolation/Extrapolation Options
Step 1 - Options for Adams Controls Plant Inputs
The following describe what happens to the Adams Plant inputs (that is, outputs from Easy5 or
MATLAB/Simulink) when Simulink or Easy5 leads the co-simulation.
If the Plant Input interpolation order is set to zero:
Adams Controls holds the Easy5/Simulink inputs, U, as constant values. In other words, apply a
zero-order hold to the Plant Input values of Easy5 coming into Adams. For example, specify that
the sample times occur at time = 0, 1, 2... If the current sample time is time = 2, and
the last communication interval is time = 1, the Plant Inputs are sampled at time = 2, and
held constant while Adams integrates from the last time (t1) to the current time (t2) to
provide the Plant Outputs to Easy5.
If the Plant Input interpolation order is set to one:
Adams Controls uses linear interpolation between the current and past values from Easy5 or
MATLAB/Simulink. For example, if the current sample time is time= 2 (t2), and the last
sample time is time = 1 (t2), the Plant Inputs are sampled by Adams Controls at time =
2, and linearly interpolated from t1 (saved from the previous communication time) to t2, as
shown below while Adams integrates from the last time (t1) to the current time (t2) to
provide the Plant Outputs to Easy5.
interpolation: Plant Inputs, U (1 2) = U1 + (U2 - U1) /
communication_interval * (current_simulation_time - t1)
Co-Simulation and Function Evaluation 25
Co-Simulation and Interpolation/Extrapolation
The communication interval is set to 1 millisecond, and the results for all interpolation settings are very
close to the result for Function Evaluation. However, upon closer inspection, the plot on the right show
that for linear extrapolation ("extrap1"), the co-simulation results (shown in the green line) are very
close to the results for Function Evaluation. The results for extrapolation off are similar (red and blue
striped line), but a little bit different than Function Evaluation. This can also be seen in the next plot of
the input torque to Adams:
The plot to the right is a close-up of the bottom of the plot on the right. You can see that the red line for
Function Evaluation is more closely matched by the plots that use extrapolation ("extrap1").
28 Adams Controls
Co-Simulation and Interpolation/Extrapolation
Now, for comparison, look at this same example where the communication interval has been changed
from 1 ms to 5 ms. In this case, the linear extrapolation is not as accurate as for 1 ms, and the results
without extrapolation appear to be closer to the Function Evaluation case.
Plot of azimuth position:
Thus, linear extrapolation can help get an accurate answer, as long as the communication interval is small
enough to provide an accurate prediction.
Co-Simulation and Function Evaluation 29
User Libraries
User Libraries
In Adams when you want to link in a user subroutine, you create a library (standard user executable) and
simply select it when you need the subroutine(s) within the library.
Using TCP/IP
About TCP/IP
TCP/IP (Transmission Control Protocol/Internet Protocol) is the standard for network communications.
In addition to the default pipes-based communication protocol, you can use TCP/IP communication
Adams Controls. TCP/IP-based communication allows you to run Adams on one workstation while
running controls software, such as Easy5 or MATLAB, on a second networked machine of the same or
different architecture. In the Adams Controls communication protocol, the controls software is the client
and Adams is the server.
A python script, adams_daemon.py, is used to setup TCP/IP communication between Adams and Easy5
or MATLAB. This script can be found in /$install_dir/controls/utils, where $install_dir is the directory
in which Adams is installed.
Once started, the default mode of Adams daemon will be available to sequentially service requests from
clients for successive Adams simulations. When a client terminates an Adams simulation, the daemon
becomes available to start another Adams simulation for the next client. In the default mode, the daemon
does not terminate until you explicitly terminate it from the operating system. To terminate the process,
you can either close the window of the process, or enter:
Windows: Ctrl + Break
Linux/Linux: Ctrl + C
Optionally, you can enter the number of runs before termination with the -n flag for adams_daemon.py.
Note: Although it is not required for general use, for the instructions below, copy the file
/$install_dir/controls/utils/adams_daemon.py to your local working directory, where
$install_dir is the directory in which Adams is installed
5. Start the default Adams daemon in your current working directory by entering one of the
following commands in a command shell:
On Windows: adams2017 python adams_daemon.py
On Linux: adams2017 -c python adams_daemon.py exit
If using MATLAB and you are running the Simulink and Adams models on the same machine,
optionally you can start the same process by using the start_adams_daemon.m script found in the
Adams installation. To use it after importing the .m file from the Plant Export, simply enter the
following at a MATLAB command prompt:
>> start_adams_daemon
The Adams daemon starts and displays the following:
--------------------------------------------------------
The Adams Controls server daemon is now operational for
TCP/IP communication with Easy5 or Matlab client(s).
This server daemon will remain in the send/receive mode
until this window is closed or the following keyed in:
Windows: Ctrl+Break
Linux: Ctrl+C
--------------------------------------------------------
32 Adams Controls
Using TCP/IP
Note: When your client connects to the Adams daemon, it displays information similar to the
following:
.
34 Adams Controls
Using TCP/IP
Limitations
Only one Adams Plant Block may be used in a model.
1000 inputs/1000 outputs/1000 independent states.
Name of the Adams model limited to 512 characters.
Adams and the MATLAB/Simulink or Easy5 must communicate at the same time interval.
Quasi-static co-simulations are not supported (co-simulation performs a series of
simulate/dynamic commands).
Kinematic Adams models in Function Evaluation are not supported (Workaround: add a dummy
part to get a dynamic model).
Adams Control Subroutines (CONSUB's) in Function Evaluation are not supported.
Initialization Commands: SAVE and RELOAD are not supported.
The compiler used by EASY5 must be the same as that supported by Adams; see
http://www.mscsoftware.com/ for a list of supported compilers.
36 Adams Controls
Limitations
Control System Import 37
2 2 2 2
e 1 + e2 + e3 + + en < E
where e is the difference between the predicted and corrected state, and E is the integrator ERROR
setting. If, for example, e3 has an error tolerance setting from the ESL for the GSE of E3, then the formula
becomes:
2 2 2 2
e 1 + e2 + ( e3 E E3 ) + + en < E
which effectively tightens the error tolerance if E3 < E.
As a general guideline, this feature may be more effective when the number of continuous states from
your ESL is much larger than the number of states in the rest of the Adams model. If the opposite is true,
then the addition of the ESL error tolerance values may not have much effect, or may be too restrictive.
Also, you may find this beneficial to decrease simulation times if you are able to increase the integrator
ERROR setting to loosen error needed on the Adams parts, and so on, while maintaining the error
required for the GSE/ESL.
See the INTEGRATOR statement for more details about ERROR. This feature only applies to the C++
Solver, and only Easy5 models currently report error tolerance values.
40 Adams Controls
Removing External System Library
To delete a GSE:
1. Click the Plugin tab on the Adams View ribbon.
2. From the Controls container, click the Adams Controls icon . Select Controls System
Delete.
3. Enter the name of the model and GSE you want to delete.
4. Select OK.
Control System Import 41
Using MATLAB/Code Generation
Software Requirements
This example requires licenses for Adams Solver, Adams View, and Adams Controls. It also requires
licenses for MATLAB/Simulink/Real-Time Workshop, and using the version(s) that are compatible with
Adams. The exact versions supported can be found under "Supported Versions of Integration Products"
in the following link:
www.mscsoftware.com/support/platform-support
Compilers supported by both Adams and MATLAB/Code Generation must also be available (for
example, Microsoft Visual Studio 2013) - again, see the link above for exact details. These products are
all assumed to be on the same machine for this tutorial.
Solver Settings
You can choose either Variable-step or Fixed-step solvers in MATLAB/Simulink, under Simulation
Configuration Parameters Solver Type. The choice will affect the model code that is generated
from Code Generation, in particular to how sample times are handled. This is important to Adams since
Adams will be integrating the model, not MATLAB/Code Generation. In this regard, the Variable-step
integrator is recommended since Adams Solver uses mainly variable-step integrators, and this will ensure
the outputs and states are computed properly. If you would still like to use a Fixed-step integrator setting,
the model should have at least one continuous state to produce the code for Adams that will handle the
sample times properly. For example, if you have a discrete-only model, add a dummy continuous block
(for example, integrator) to the model.
Tip: To look for differences in sample times between Fixed-Step and Variable-step
integrators settings, look for the function ssIsSampleHit(), which handles
evaluation of code at sample times.
As a MATLAB requirement, an Code Generation S-Function must have the same
type of integrator setting as the model that will use it (that is, both Fixed-step, or
both Variable-step).
42 Adams Controls
Using MATLAB/Code Generation
The controller for the antenna model will be used to illustrate this process. This file can be found in
install_dir/controls/example/antenna/continuous.mdl. The parameters to be changed are 1040 in
Transfer Fcn and 950 in Transfer Fcn1.
and in continuous_rsim_cg/continuous_data.c:
Step 4 - Create Code Generation-GSE with the tunable parameters exposed in Adams
View
1. Create ESL as described in Learning Adams Controls with Controls System Import.
2. Once the GSE is created, open the Database Navigator and expand the GSE to examine its
children - you should see that the design variables Kp and Kv are created. The default values are
1040.0 and 950.0 as defined in the Simulink model. Those design variables can be changed to
study the effects on ESL.
Note: Your make utility and compiler may be sensitive to DOS/Linux end-of-line character
differences. Therefore, we recommend that you run a dos2Linux file conversion utility to
ensure your files have a Linux end-of-line.
Note: This procedure applies if you have Adams Controls installed on one Windows machine and
MATLAB/Simulink/RTW installed on another Windows machine.
extern/include
rtw/c/rsim
rtw/c/libsrc
rtw/c/src
rtw/c/tools
rtw/c/tlc
4. In the Adams working directory (on the Adams Controls machine), run
<adams_install_dir>/controls/utils/process.py to create the RTW target for Adams Controls.
5. Copy all of the .tmf and .tlc files from the working directory to the directory on the MATLAB
machine where the Simulink model resides.
6. Create the External System Library of the Simulink model on the RTW machine. For specific
instructions, see About Control System Import.
7. Copy the created ESL to the working directory on the Adams Controls machine.
The code generation of the Simulink model now exists on both machines.
8. On the machine where Adams Controls is installed, create the GSE with Control System Import
and run the simulation (see About Control System Import).
3. Modify model with S-Function to choose RSIM target from step 2 and build S-Function again -
this will create an object file that can be used in later steps to build the Adams Controls ESL from
RTW.
4. Provide the following when distributing the model to the person who will make the Adams
Controls ESL from RTW:
sfunctionname_sf.mexw32
sfunctionname_sf.h
sfunctionname_sfcn_rtw/sfunctionname_sf.h
sfunctionname_sfcn_rtw/sfunctionname_mid.h
sfunctionname_sfcn_rtw/sfunctionname_sid.h
sfunctionname_sfcn_rtw/sfunctionname_sf_private.h
sfunctionname_sfcn_rtw/sfunctionname_sf_types.h
sfunctionname_sfcn_rtw/sfunctionname.mk
sfunctionname_sfcn_rtw/sfunctionname_sf_data.c (if applicable)
modelname_rsim_rtw/sfunctionname_sf.obj
modelname.mdl
5. At the receiver's end, using the files from Step 4, retain the directory structure and place the object
file in the directory of the new model's name, for example,
"newmodelname_rsim_rtw/sfunctionname_sf.obj"
6. Put the S-Function block in modelname.mdl within the new Simulink model (for example,
newmodelname.mdl").
7. Build the ESL using the Adams Controls-modified RSIM target.
Limitations:
If your S-function depends on other modules, this method may fail. You may have to manually add the
dependent modules to the S-function by using the following command:
set_param('Sfunction_blockpath','SFunctionModules','file1 file2 file3')
Where:
'Sfunction_blockpath' is the path of the Sfunction block.
'file1', 'file2' and so on are the names of the dependent files.
These details can be found also written for another example here:
How do I build my model that contains an RTW generated S-function block if I do not have the
source code?
http://www.mathworks.com/matlabcentral/answers/196427
How do I build my model containing a C-MEX S-function if I don't have the S-function C source
file using Real-Time Workshop?
http://www.mathworks.com/matlabcentral/answers/196428
The overriding rules for working with MATLAB/Simulink/Real-Time Workshop must be followed in use
of S-Functions. Please consult Mathworks and their documentation for more details.
Control System Import 49
Using MATLAB/Code Generation
To parameterize an S-Function for Adams, when building the S-Function block using an S-
Function target, you must:
1. Build the S-Function using the S-Function target in RTW and choose the parameters to be Global
(tunable) Parameters - (that is, Inline, and then choose exceptions -- just as you would for an
Adams ESL)
2. Build the ESL using the Adams Controls-modified RSIM target and again choose the same
parameters to be Global (tunable) Parameters.
The parameters can be generally found in the "_data.c" files, for example, "sfunctionname_sf_data.c"
and "ESL_model_name_data.c" when this is done properly.
For more details on these steps, see the Learning Adams Controls with Control System Import from
MATLAB with S-Functions.
/* task offsets */
ssSetOffsetTime(rtS, 0, 0.0);
ssSetOffsetTime(rtS, 1, 0.0);
}
50 Adams Controls
Using MATLAB/Code Generation
Here, there is one non-zero sample time (0.001) which will set the sample rate in GSE_SAMP. You can
confirm the blocks that use these sample times by searching for the ssIsSampleHit function in this same
file.
Finally, setting the Fixed-step size for Simulink can add a sample time to your model, even if it is purely
continuous.
Control System Import 51
Using MATLAB/Code Generation
Limitations
The models supported by Adams Controls are firstly limited by those restrictions enforced by
MATLAB/Real-Time workshop itself. Please consult the Mathworks documentation for the official
limitations, but a summary of these can be found next. In addition, Adams Controls has its own
limitations for S-Functions support for ESL creation/use which are also listed.
file, FORTRAN, or Ada S-functions (inlining means to use an RTW .tlc file to write the code for the S-
Function directly in the generated code).
The RSim target is subject to the following limitations:
The RSim target does not support algebraic loops.
The RSim target does support MATLAB function blocks, if there is no discrete-time block.
However to make this work with discrete-time block, use the below methods.
Step 1: Generate the S-Function block from RTW by applying the S-Function Target in
Code Generation.
Step 2: Create Adams ESL from the Simulink model that contains the S-Function block
generated in Step 1.
The RSim target does not support the transport delay block. However to make this work, use the
similar method mentioned in the discrete-time block.
The RSim target does not support noninlined M-file, FORTRAN, or Ada S-functions.
Control System Import 53
Using MATLAB/Code Generation
If an RSim build includes referenced models (by using Model blocks), these models must be set
up to use fixed-step solvers for code to be generated for them. The top model, however, can use a
variable-step solver as long as all blocks in the referenced models are discrete (variable-step
solver not supported by Adams).
In certain cases, changing block parameters can result in structural changes to your model that
change the model checksum. An example of such a change would be changing the number of
delays in a DSP simulation. In such cases, you must regenerate the code for the model.
Limitations
External System Libraries (ESL's) are not guaranteed to be compatible from release to release;
you must rebuild the ESL for each new version of Adams.
The ESL may be used only once per Control System Import. (Workaround: to use the same
model more than once, create duplicate ESL's with different names and repeat the Control
System Import. This includes copying/renaming a file already generated. Mechatronics excluded
from workaround.)
A maximum limit of 100 ESL's can be loaded.
The name of the ESL is limited to 32 characters Easy5, 200 characters MATLAB/Simulink.
SAVE and RELOAD are not supported for an External System Library (ESL).
MATLAB/Simulink and Easy5 Interactive (IS) blocks are not supported (that is, recreated in
Adams).
"From File" block in Simulink is not supported - see Article KB8016298 "How to prepare a
Simulink model for RTW DLL creation."
The compiler used by EASY5 or MATLAB/RTW must be the same as that supported by Adams;
see http://www.mscsoftware.com/ for a list of supported compilers.
Easy5 models may not be implicit.
Adams Solver (FORTRAN) does not have a bisection method for SENSOR's to improve the
accuracy of the detection of continuous state reset and switch states in Easy5. So, if you have
these in your model, you may improve the accuracy of your simulation by using the C++ Solver
instead of FORTRAN.
Also see the Limitations under the section "Using MATLAB/RTW".
Functional Mock-up Interface (FMU) 55
Note: Microsoft Visual Studio C compiler is required on Windows platforms (supported version:
14.0) and Intel C compiler is required on Linux platforms for FMU export. Compilers are
not required for FMU import.
Exporting an FMU
Adams model could be exported as an FMU with the FMI 1.0 Co-Simulation Tool standard. This could
be done by using the existing Adams Controls Plant Export dialog box.
The procedure will be very similar to existing Plant Export. The user would specify the Input and Output
signals, select the Target Software as FMU and then choose whether to use TCP/IP or PIPE (TCP/IP
unchecked) during the co-simulation.
An FMU file will be created in the current working directory with the name specified in "File Prefix"
field and the extension .fmu. A pair of .cmd and .adm file will also be generated with the same name.
The exporting FMU will have the following capability flags:
canHandleEvents="false" // The slave does not support event handling during co-simulation.
58 Adams Controls
Exporting an FMU
On linux64 platform, create the alias as specified in the Adams installation guide. It is suggested that the
exporting and importing machine has the same Adams installation path. Otherwise the Adams cannot be
called during a Co-Simulation. Or the user could use TCP/IP instead of PIPE.
To use TCP/IP, the Adams Host Name should be set correctly and adams_daemon.py should be running
on the host machine. The adams_daemon.py could be found under
"Adams_installation_path\controls\utils\" (for example,
C:\MSC.Software\Adams\2017\controls\utils\). To run the adams_daemon.py, see Using TCP/IP in the
help document.
After the Co-Simulation, the Adams FMU generated result files could be found in the resource directory
of the extracted FMU. This is decided by the software importing the Adams FMU. For example, if the
60 Adams Controls
Exporting an FMU
Adams FMU is imported into another Adams session, the extracted FMU could be found in the current
working directory. Other software may use the user temporary directory.
Functional Mock-up Interface (FMU) 61
Importing an FMU
Importing an FMU
An external FMU could be loaded in Adams by using the Adams Controls System Import dialog box.
The FMU should confirm to FMI 1.0 or 2.0 Co-Simulation or Model Exchange standard. Currently
Adams cannot handle events during co-simulation, nor does it support interpolation/extrapolation.
Adams will not allow string inputs and outputs.
To import an FMU into Adams, simply choose the FMU in the External System Library field. The Output
and Input signals should be selected using Existing Controls Plant or from Poutput/Pinput.
The Communication Interval should be set according to the frequency of interest of the FMU model
(above the Nyquist Frequency). The Visibility specifies whether the importing FMU could be visible or
not during the Co-Simulation (needs to be supported by the importing FMU). If the imported FMU
belongs to Adams, then after the simulation, GUI of the imported FMU would not be closed
automatically. It would remain open so that users can continue perform other simulation activity by
interacting with the FMU master Adams window. The GUI of the imported FMU does not support any
user interaction. It automatically gets closed once user resets the simulation from the FMU master Adams
window.
The Communication Interval and Visibility fields are automatically disabled if the imported FMU is of
Model Exchange type. If the FMU supports FMI 2.0 and supports both Model Exchange and Co-
62 Adams Controls
Importing an FMU
Simulation, the user would be presented with an option to choose the kind of simulation that is to be run.
Accordingly, the corresponding simulation would be executed.
The imported FMU will be extracted in the current working directory under /fmu/<General State
Equation Name>/.
Integration with Vertical Products 63
For the latest information on integrating Adams Controls with Adams Car, and Adams Chassis, refer to
the Adams Technical Articles at http://simcompanion.mscsoftware.com.
64 Adams Controls
Examples 65
Examples
66 Adams Controls
Tutorials and Examples
Exports the Adams plant files. Adams Controls saves the input and output information in an .m (for
MATLAB) or .inf file (for EASY5). It also generates a command file (.cmd) and a dataset file (.adm) that
are used during the simulation process. Adams could also export the model as a .fmu file (Functional
Mock-up Unit or FMU) that follows the FMI standard.
Easy5
MATLAB
FMU - Creates a Functional Mock-up Unit that follows the
FMI standard.
Analysis Type Select one of the following:
Deletes the general state equation (GSE), its associated arrays, and the dependency on the Adams model.
Imports a control system into your Adams model as a general state equation (GSE).
Error Scale Factor: Values > 0 will scale all of the ESL error
tolerance values in order to tighten or loosen these values, that is,
Final GSE error tolerance = Error Scale Factor * ESL error tolerance
Values <= 0 will disable using the ESL error tolerance values, and the
default computation for the local integration error will be used.
Information Check to display verbose information about the general state
equation (GSE) that the controls system import created.
Communication Interval This option is only enabled for External System Libraries of type
FMU co-simulation. For co-simulation with the FMU, you need to
specify the communication interval. Sample the FMU at least two
times faster than the highest frequency of interest (refer to Nyquist
frequency). This option is disabled for FMU of type model exchange
and other ESLs exported using MATLAB or Easy5.
Visibility This option is only enabled for External System Libraries of type
FMU co-simulation. Visibility means the FMU runs in interactive
mode. Turn it off if you want to run it in batch mode. In order for this
option to work in Adams, visibility needs to be supported by the
specified FMU.
Overwrite PINPUT Functions Check to overwrite the values of any existing PINPUT functions in
the GSE. Default is to add to the existing values.
One caveat when checking this option is that, if the same PINPUT
variable is updated by multiple ESLs, then only the last imported
ESL value would be retained.
74 Adams Controls
Adams Controls System Import
Appendix
74 Adams Controls
Entering File Names in Text Boxes
Index
Adams Controls
G RTW
General state equations building library, 45
deleting, 40 C-code import, 11
importing, 38 dll, 46
RTW-GSE, 42, 46
simulink Model, 42
I
Import
C-code, 11 S
General state equations, 38 Sample rate, 49
RTW-GSE, 46 Sample time settings, 49
Initialization commands, 22 Simulation
Integration with vertical products, 63 animation options, 20
Interactive animation mode, 20 choosing a method, 10
continuous, choosing, 11
discrete, 10
L initialization commands, 22
Libraries, user, 29
Simulink
LM_LICENSE_FILE, 14, 15
simulink model to RTW, 42
Loading Adams/Controls plugin, 8
source blocks, 49
using control system import via RTW-GSE,
M 46
Mathwork's Real-Time Workshop, 5 Simulink, sample time setting, 49
MATLAB Sine wave, 49
C-code import, 11 Solver dataset, 12
creating tree, 45 Starting Adams/Controls, 8
MATLAB/Simulink/RTW, 44 State variables, 12
RTW-GSE, 46 Storage class for parameter export, 43
running adams with, 32
running on different machines, 44
MSC_LICENSE_FILE, 14, 15
T
tcp/ip, 30
P U
Parameter Sample Time, 49
Uniform random number, 49
Parameters
Unload Adams Controls plugin, 8
design variables versus state variables, 12
User libraries, 29
exporting, 42
Plant files, exporting, 13
Plugin manager, 8 V
Pulse generator, 49 Variables, 12
design, 12
state, 12
R Vertical product integration, 63
Random Number, 49
X
XFE, 11