=Overview=
 
=Overview=
The SIMulation Workbench&trade; <b>ML Toolkit</b> for MATLAB provides support for integrating MATLAB/Simulink models seamlessly into the SimWB environment. The <b>ML Toolkit</b> is installed as a part of the MATLAB/Simulink environment and provides access to real-time host from within Simulink via the <b>ML Toolkit</b>GUI and within MATLAB via the SimWB API. This ML Toolkit GUI and the command line API provide an easy workflow which facilitates the generation of SimWB compliant code from Real-Time Workshop® (RTW) a.k.a. Simulink Coder(MATLAB R2011b and later). Simulink model parameters are automatically extracted from the RTW model and mapped into the RTDB so they can be accessed at run-time.
+
The SIMulation Workbench&trade; <b>MLToolkit</b> for MATLAB provides support for integrating MATLAB/Simulink models seamlessly into the SimWB environment. The <b>MLToolkit</b> is installed as a part of the MATLAB/Simulink environment and provides access to real-time host from within Simulink via the <b>MLToolkit</b> GUI and within MATLAB via the SimWB API. This MLToolkit GUI and the command line API provide an easy workflow which facilitates the generation of SimWB compliant code from Real-Time Workshop® (RTW) a.k.a. Simulink Coder(MATLAB R2011b and later). Simulink model parameters are automatically extracted from the RTW model and mapped into the RTDB so they can be accessed at run-time.
    
In order for a Simulink model to talk to external hardware, it needs hardware-specific S-function driver blocks in the model. This means that an engineer may have to maintain two different models: one for simulation and one for code generation. For code generation, Simulink source and sink blocks need to be replaced with Input and Output hardware specific S-function blocks.
 
In order for a Simulink model to talk to external hardware, it needs hardware-specific S-function driver blocks in the model. This means that an engineer may have to maintain two different models: one for simulation and one for code generation. For code generation, Simulink source and sink blocks need to be replaced with Input and Output hardware specific S-function blocks.
 
SimWB alleviates the need for hardware-specific S-function blocks by providing complete I/O independence through the Real-Time DataBase(RTDB). The RTDB holds the information necessary to configure I/O boards and data bus protocols. I/O boards are configured outside of the model programs, and data acquisition is performed via external I/O tasks which store and retrieve data values through the RTDB.
 
SimWB alleviates the need for hardware-specific S-function blocks by providing complete I/O independence through the Real-Time DataBase(RTDB). The RTDB holds the information necessary to configure I/O boards and data bus protocols. I/O boards are configured outside of the model programs, and data acquisition is performed via external I/O tasks which store and retrieve data values through the RTDB.
   −
The SimWB <b>ML Toolkit</b>GUI provides a workflow to easily create SimWB compliant RTW code from a Simulink model without having to insert hardware-specific S-function blocks in the model. SimWB-specific blocks are automatically inserted into the model during the code generation process to generate SimWB-complaint code. From the SimWB <b>ML Toolkit</b>GUI you can connect to the real-time host, select a System Target File, automatically create an RTDB for your model, generate SimWB-compliant RTW(Simulink Coder) code, and create an executable for your model on the real-time host.
+
The SimWB <b>MLToolkit</b> GUI provides a workflow to easily create SimWB compliant RTW code from a Simulink model without having to insert hardware-specific S-function blocks in the model. SimWB-specific blocks are automatically inserted into the model during the code generation process to generate SimWB-complaint code. From the SimWB <b>MLToolkit</b> GUI you can connect to the real-time host, select a System Target File, automatically create an RTDB for your model, generate SimWB-compliant RTW(Simulink Coder) code, and create an executable for your model on the real-time host.
    
[[File:simwbtoolkit.png]]
 
[[File:simwbtoolkit.png]]
<div class="high">Image: SimWB <b>ML Toolkit</b>architecture</div>
+
<div class="high">Image: SimWB <b>MLToolkit</b> architecture</div>
    
[[File:singlesystemsol.png]]
 
[[File:singlesystemsol.png]]
 
:<span class="high">Using "SW" Prefixed Block Names</span>
 
:<span class="high">Using "SW" Prefixed Block Names</span>
   Unexpected non-MediaWiki exception encountered, of type "Error"
[95820a98] /swbwiki/index.php?title=SIMulation_Workbench_Toolkit&diff=1561&oldid=1080 Exception from line 436 of /var/www/html/mediawiki-1.23.3/includes/diff/DairikiDiff.php: Call to undefined function each()
Backtrace:
#0 /var/www/html/mediawiki-1.23.3/includes/diff/DairikiDiff.php(546): DiffEngine->diag()
#1 /var/www/html/mediawiki-1.23.3/includes/diff/DairikiDiff.php(347): DiffEngine->compareSeq()
#2 /var/www/html/mediawiki-1.23.3/includes/diff/DairikiDiff.php(228): DiffEngine->diffLocal()
#3 /var/www/html/mediawiki-1.23.3/includes/diff/DairikiDiff.php(725): DiffEngine->diff()
#4 /var/www/html/mediawiki-1.23.3/includes/diff/DairikiDiff.php(864): Diff->__construct()
#5 /var/www/html/mediawiki-1.23.3/includes/diff/DairikiDiff.php(987): MappedDiff->__construct()
#6 /var/www/html/mediawiki-1.23.3/includes/diff/TableDiffFormatter.php(193): WordLevelDiff->__construct()
#7 /var/www/html/mediawiki-1.23.3/includes/diff/DiffFormatter.php(143): TableDiffFormatter->changed()
#8 /var/www/html/mediawiki-1.23.3/includes/diff/DiffFormatter.php(83): DiffFormatter->block()
#9 /var/www/html/mediawiki-1.23.3/includes/diff/DifferenceEngine.php(910): DiffFormatter->format()
#10 /var/www/html/mediawiki-1.23.3/includes/diff/DifferenceEngine.php(813): DifferenceEngine->generateTextDiffBody()
#11 /var/www/html/mediawiki-1.23.3/includes/diff/DifferenceEngine.php(743): DifferenceEngine->generateContentDiffBody()
#12 /var/www/html/mediawiki-1.23.3/includes/diff/DifferenceEngine.php(665): DifferenceEngine->getDiffBody()
#13 /var/www/html/mediawiki-1.23.3/includes/diff/DifferenceEngine.php(635): DifferenceEngine->getDiff()
#14 /var/www/html/mediawiki-1.23.3/includes/diff/DifferenceEngine.php(443): DifferenceEngine->showDiff()
#15 /var/www/html/mediawiki-1.23.3/includes/Article.php(826): DifferenceEngine->showDiffPage()
#16 /var/www/html/mediawiki-1.23.3/includes/Article.php(549): Article->showDiffPage()
#17 /var/www/html/mediawiki-1.23.3/includes/actions/ViewAction.php(44): Article->view()
#18 /var/www/html/mediawiki-1.23.3/includes/Wiki.php(428): ViewAction->show()
#19 /var/www/html/mediawiki-1.23.3/includes/Wiki.php(292): MediaWiki->performAction()
#20 /var/www/html/mediawiki-1.23.3/includes/Wiki.php(588): MediaWiki->performRequest()
#21 /var/www/html/mediawiki-1.23.3/includes/Wiki.php(447): MediaWiki->main()
#22 /var/www/html/mediawiki-1.23.3/index.php(46): MediaWiki->run()
#23 {main}