Print Preview C:\TEMP\Apdf_2541_3068\home\AppData\Local\PTC\Arbortext\Editor\.aptcache\ae3p8sjd/tf3p8gus Simulink PLC Coder User's Guide

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 195 [warning: Documents this large are best viewed by clicking the View PDF Link!]

Simulink®PLC Coder™
User’s Guide
R2012b
How to Contact MathWorks
www.mathworks.com Web
comp.soft-sys.matlab Newsgroup
www.mathworks.com/contact_TS.html Technical Support
suggest@mathworks.com Product enhancement suggestions
bugs@mathworks.com Bug reports
doc@mathworks.com Documentation error reports
service@mathworks.com Order status, license renewals, passcodes
info@mathworks.com Sales, pricing, and general information
508-647-7000 (Phone)
508-647-7001 (Fax)
The MathWorks, Inc.
3 Apple Hill Drive
Natick, MA 01760-2098
For contact information about worldwide offices, see the MathWorks Web site.
Simulink®PLC Coder™ User’s Guide
© COPYRIGHT 2010–2012 by The MathWorks, Inc.
The software described in this document is furnished under a license agreement. The software may be used
or copied only under the terms of the license agreement. No part of this manual may be photocopied or
reproduced in any form without prior written consent from The MathWorks, Inc.
FEDERAL ACQUISITION: This provision applies to all acquisitions of the Program and Documentation
by, for, or through the federal government of the United States. By accepting delivery of the Program
or Documentation, the government hereby agrees that this software or documentation qualifies as
commercial computer software or commercial computer software documentation as such terms are used
or defined in FAR 12.212, DFARS Part 227.72, and DFARS 252.227-7014. Accordingly, the terms and
conditions of this Agreement and only those rights specified in this Agreement, shall pertain to and govern
theuse,modification,reproduction,release,performance,display,anddisclosureoftheProgramand
Documentation by the federal government (or other entity acquiring for or through the federal government)
and shall supersede any conflicting contractual terms or conditions. If this License fails to meet the
government’s needs or is inconsistent in any respect with federal procurement law, the government agrees
to return the Program and Documentation, unused, to The MathWorks, Inc.
Trademarks
MATLAB and Simulink are registered trademarks of The MathWorks, Inc. See
www.mathworks.com/trademarks for a list of additional trademarks. Other product or brand
names may be trademarks or registered trademarks of their respective holders.
Patents
MathWorks products are protected by one or more U.S. patents. Please see
www.mathworks.com/patents for more information.
Revision History
March 2010 Online only New for Version 1.0 (Release 2010a)
September 2010 Online only Revised for Version 1.1 (Release 2010b)
April 2011 Online only Revised for Version 1.2 (Release 2011a)
September 2011 Online only Revised for Version 1.2.1 (Release 2011b)
March 2012 Online only Revised for Version 1.3 (Release 2012a)
September 2012 Online only Revised for Version 1.4 (Release 2012b)
Contents
Getting Started
1
Product Description ............................... 1-2
Key Features ..................................... 1-2
PLC Code Generation in the Development Process ... 1-3
Expected Users ................................... 1-3
Glossary ......................................... 1-4
System Requirements .............................. 1-4
Related Products .................................. 1-5
Supported Simulink and Stateflow Blocks ........... 1-6
Supported IDE Platforms .......................... 1-7
3S-Smart Software Solutions CoDeSys Software ........ 1-8
B&R Automation Studio 3.0 Software ................. 1-8
Beckhoff TwinCAT 2.11 ............................ 1-8
KW-Software MULTIPROG 5.0 ...................... 1-8
Phoenix Contact PC WORX Version 6.0 ............... 1-9
Rockwell Automation RSLogix 5000 Software .......... 1-9
Siemens SIMATIC STEP 7 .......................... 1-9
PLC Code Generation Workflow .................... 1-10
Prepare Model for Structured Text Generation ....... 1-11
Solvers .......................................... 1-11
Configuring Simulink Models for Structured Text Code
Generation ..................................... 1-11
Checking System Compatibility for Structured Text Code
Generation ..................................... 1-16
Generate and Examine Structured Text Code ........ 1-19
Generate Structured Text from the Model Window ...... 1-19
v
Generate Structured Text with the MATLAB Interface ... 1-24
Generate Structured Text Code and Integrate with Existing
Siemens SIMATIC STEP 7 Projects ................ 1-25
Matrix Data Types ................................ 1-26
Generated Code Header ............................ 1-26
Specify Custom Names for Generated Files ............ 1-26
Propagation of Block Descriptions .................... 1-27
Internal Signals for Debugging in RSLogix 5000 IDE .... 1-28
Import Structured Text Code Automatically ......... 1-31
PLC IDEs That Qualify for Importing Code
Automatically .................................. 1-31
Generate and Automatically Import Structured Text
Code .......................................... 1-32
Troubleshoot Automatic Import Issues ................ 1-33
IntegrateAbsoluteTimeTemporalLogicCode ....... 1-35
Simulation and Code Generation of Motion
Instructions ..................................... 1-38
Workflow for Using Motion Instructions in Model ....... 1-38
Library of Motion Instructions ....................... 1-41
Data Types for Motion Instructions ................... 1-41
Limitations for MAM Instruction ..................... 1-42
Mapping Simulink Semantics to Structured
Text
2
Simulink PLC Coder Mapping Semantics ............ 2-2
Generated Code Structure for Simple Simulink
Subsystems ..................................... 2-3
Generated Code Structure for Reusable Subsystems .. 2-5
Generated Code Structure for Triggered Subsystems .. 2-7
vi Contents
Generated Code Structure for Stateflow Charts ...... 2-9
Generated Code Structure for MATLAB Function
Block ........................................... 2-11
Generating Test Bench Code
3
Generated Structured Text and Test Bench Code ..... 3-2
Test Bench Verification ............................ 3-2
Generated Files ................................... 3-2
Integrate Generated Code into Custom Code ........... 3-2
Generate and Manually Import Test Bench Code ..... 3-5
Import and Verify Structured Text Code
Automatically ................................... 3-9
Import and Verify Structured Text to KW-Software
MULTIPROG 5.0 and Phoenix Contact PC WORX 6.0
IDEs Automatically ............................. 3-9
Generate, Automatically Import, and Verify Structured
Text .......................................... 3-11
Code Generation Reports
4
Information in Code Generation Reports ............ 4-2
Create and Use Code Generation Reports ............ 4-4
Generate a Traceability Report from Configuration
Parameters .................................... 4-4
Keep the Report Current ........................... 4-6
Trace from Code to Model ........................... 4-7
Trace from Model to Code ........................... 4-8
Model Web View in Code Generation Report ........... 4-10
vii
Generate a Traceability Report from the Command Line .. 4-13
Working with Tunable Parameters in the
Simulink PLC Coder Environment
5
Configure Tunable Parameters for Your Model ....... 5-2
Tunable Parameters ............................... 5-2
Configure Your Model for Tunable Parameters ......... 5-5
Identify Tunable Parameters ....................... 5-8
Tune Parameters Using Simulink.Parameter
Objects ......................................... 5-12
Work Directly with Simulink.Parameter Objects ........ 5-12
Work with Simulink.Parameter Objects Using Model
Explorer ....................................... 5-15
Configure Tunable Parameters Using Configuration
Parameters ..................................... 5-17
Defining Tunable Parameter Values in the MATLAB
Workspace ..................................... 5-17
Configuring Parameters to Be Tunable ................ 5-19
Controlling Generated Code Partitions
6
Function Block Partitions .......................... 6-2
Function Block Partitioning Guidelines ............... 6-2
One Function Block for Atomic Subsystems ............ 6-2
One Function Block for Virtual Subsystems ............ 6-3
Multiple Function Blocks for Nonvirtual Subsystems .... 6-4
Control Generated Code Using Subsystem Block
Parameters .................................... 6-5
viii Contents
Integrating Externally Defined Symbols
7
Integrate Externally Defined Symbols ............... 7-2
Integrate Custom Function Block in Generated
Code ........................................... 7-3
IDE-Specific Considerations
8
Rockwell Automation RSLogix Considerations ....... 8-2
Add-On Instruction and Function Blocks .............. 8-2
Double-Precision Data Types ........................ 8-2
Unsigned Integer Data Types ........................ 8-2
Unsigned Fixed-Point Data Types .................... 8-3
Enumerated Data Types ............................ 8-3
Siemens SIMATIC STEP 7 Considerations ........... 8-4
Double-Precision Floating-Point Data Types ........... 8-4
int8 and Unsigned Integer Types ..................... 8-4
Unsigned Fixed-Point Data Types .................... 8-4
Enumerated Data Types ............................ 8-5
Supported Simulink and Stateflow Blocks
9
Simulink Blocks ................................... 9-2
Stateflow Blocks ................................... 9-12
ix
Limitations
10
Coder Limitations ................................. 10-2
Current Limitations ............................... 10-2
Fixed-Point Data Type Limitations ................... 10-3
Permanent Limitations ............................. 10-5
Block Restrictions ................................. 10-6
Simulink Block Support Exceptions ................... 10-6
Stateflow Chart Exceptions ......................... 10-6
Reciprocal Sqrt Block .............................. 10-7
Lookup Table Blocks ............................... 10-7
Functions — Alphabetical List
11
Configuration Parameters for Simulink PLC
Coder Models
12
PLC Coder: General ............................... 12-2
PLC Coder: General Tab Overview ................... 12-3
Target IDE ....................................... 12-4
Target IDE Path .................................. 12-6
Code Output Directory ............................. 12-8
Generate testbench for subsystem .................... 12-9
PLC Coder: Comments ............................. 12-10
Comments Overview ............................... 12-11
Include comments ................................. 12-11
Include block description ........................... 12-12
Simulink block / Stateflow object comments ............ 12-13
Show eliminated blocks ............................ 12-14
xContents
PLC Coder: Optimization .......................... 12-15
Optimization Overview ............................. 12-15
Signal storage reuse ............................... 12-16
Remove code from floating-point to integer conversions that
wraps out-of-range values ........................ 12-18
Loop unrolling threshold ........................... 12-19
PLC Coder: Symbols ............................... 12-20
Symbols Overview ................................. 12-21
Maximum identifier length .......................... 12-22
Use the same reserved names as Simulation Target ..... 12-23
Reserved names ................................... 12-24
Externally Defined Symbols ......................... 12-25
PLC Coder: Report ................................ 12-26
Generate traceability report ......................... 12-26
Generate model Web view .......................... 12-27
Index
xi
xii Contents
1
Getting Started
“Product Description” on page 1-2
“PLC Code Generation in the Development Process” on page 1-3
“Related Products” on page 1-5
“Supported Simulink and Stateflow Blocks” on page 1-6
“Supported IDE Platforms” on page 1-7
“PLC Code Generation Workflow” on page 1-10
“Prepare Model for Structured Text Generation” on page 1-11
“Generate and Examine Structured Text Code” on page 1-19
“Import Structured Text Code Automatically” on page 1-31
“Integrate Absolute Time Temporal Logic Code” on page 1-35
“Simulation and Code Generation of Motion Instructions” on page 1-38
1Getting Started
Product Description
Generate IEC 61131 structured text for PLCs and PACs
Simulink®PLC Coder™ generates hardware-independent IEC 61131
structured text from Simulink models, Stateflow®charts, and Embedded
MATLAB®functions. The structured text is generated in PLCopen and other
file formats supported by widely used integrated development environments
(IDEs). As a result, you can compile and deploy your application to numerous
programmable logic controller (PLC) and programmable automation
controller (PAC) devices.
Simulink PLC Coder generates test benches that help you verify the
structured text using PLC and PAC IDEs and simulation tools. Support for
industry standards is available through IEC Certification Kit (for IEC 61508
and IEC 61511).
Key Features
Automatic generation of IEC 61131-3 structured text
Simulink support, including reusable subsystems, PID controller blocks,
and lookup tables
Stateflow support, including graphical functions, truth tables, and state
machines
Embedded MATLAB support, including if-else statements, loop constructs,
and math operations
Support for multiple data types, including Boolean, integer, enumerated,
and floating-point, as well as vectors, matrices, buses, and tunable
parameters
IDE support, including B&R Automation Studio®, PLCopen, Rockwell
Automation®RSLogix™ 5000, Siemens®SIMATIC®STEP®7, and Smart
Software Solutions CoDeSys
Test-bench creation
1-2
PLC Code Generation in the Development Process
PLC Code Generation in the Development Process
Simulink PLC Coder software lets you generate IEC-61131-3 compliant
structured text code from Simulink models. Thissoftwarebringsthe
Model-Based Design approach into the domain of PLC and PAC development.
Using the coder, system architects and designers can spend more time
fine-tuning algorithms and models through rapid prototyping and
experimentation, and less time on coding PLCs.
Typically, you use a Simulink model to simulate a design for realization
in a PLC. Once satisfied that the model meets design requirements, run
the Simulink PLC Coder compatibility checker utility. This utility verifies
compliance of model semantics and blocks for PLC target IDE code generation
compatibility. Next, invoke the Simulink PLC Coder tool, using either the
command line or the graphical user interface. The coder generates structured
text code that implements the design embodied in the model.
Usually, you also generate a corresponding test bench. You can use the test
bench with PLC emulator tools to drive the generated structured text code
and evaluate its behavior.
The test bench feature increases confidence in the generated code and saves
time spent on test bench implementation. The design and test process are
fully iterative. At any point, you can return to the original model, modify it,
and regenerate code.
At completion of the design and test phase of the project, you can easily export
the generated Structure Text code to your PLC development environment.
You can then deploy the code.
Expected Users
The Simulink PLC Coder product is a tool for control and algorithm design
and test engineers in the following applications:
PLC manufacturing
Machine manufacturing
Systems integration
1-3
1Getting Started
You should be familiar with:
MATLAB®and Simulink software and concepts
PLCs
Structured text language
If you want to download generated code to a PLC IDE, you should also be
familiar with your chosen PLC IDE platform. See “Supported IDE Platforms”
onpage1-7foralistoftheseplatforms.
Glossary
Term Definition
PAC Programmable automation controller.
PLC Programmable logic controller.
IEC 61131-3 IEC standard that defines PLC coder languages, including the structured
text language for which the Simulink PLC Coder software generates code.
PLCopen Vendor- and product-independent organization that works with the
IEC 61131-3 standard. The Simulink PLC Coder product can generate
structured text using the PLCopen XML standard format. See
http://www.plcopen.org/pages/tc6_xml/xml_intro/index.htm for
details.
structured text High-level textual language defined by IEC-61131-3 standard for the
programming of PLCs.
function block Structured text language programming concept that allows the
encapsulation and reuse of algorithmic functionality.
System Requirements
See the MathWorks Web site at System Requirements for a list of related
products.
1-4
Related Products
Related Products
See the MathWorks Web site at Related Products for a list of related products.
1-5
1Getting Started
Supported Simulink and Stateflow Blocks
To access a Simulink library of blocks that the Simulink PLC Coder software
supports, type plclib in the MATLAB Command Window. The coder can
generate structured text code for subsystems that contain these blocks. The
library window is displayed.
This library contains two sublibraries, Simulink and Stateflow. Each
sublibrary contains the blocks that you can include in a Simulink PLC Coder
model.
For a list of the supported blocks, see “Simulink Blocks” on page 9-2 and
“Stateflow Blocks” on page 9-12. See “Block Restrictions” on page 10-6 for
restrictions on using these blocks.
1-6
Supported IDE Platforms
Supported IDE Platforms
The Simulink PLC Coder product supports the following IDE platforms:
3S-Smart Software Solutions CoDeSys Version 2.3 or 3.3
B&R Automation Studio 3.0
Beckhoff®TwinCAT®2.11
KW-Software MULTIPROG®5.0
Note The Simulink PLC Coder software supports only the English version
of KW-Software MULTIPROG target IDE.
Phoenix Contact®PC WORX™ 6.0
Note The Simulink PLC Coder software supports only the English version
of Phoenix Contact PC WORX target IDE.
Rockwell Automation RSLogix 5000 Series Version 17, 18, or 19
Note The Simulink PLC Coder software can generate code for Add-On
instructions (AOIs) and routine code.
Siemens SIMATIC STEP 7 Version 5.4
Note The Simulink PLC Coder software assumes that:
-English systems use English S7
-German systems use German S7
Generic
1-7
1Getting Started
PLCopen XML
See the MathWorks Web site at Supported IDEs for a list of supported IDEs
and platforms.
3S-Smart Software Solutions CoDeSys Software
To get CoDeSys Version 2.3 or 3.3, see:
http://www.3s-software.com/index.shtml?en_download
This download page requires you to be a registered user.
1If you are not yet a registered user, create an account. It might take a few
days to receive a password for the account.
2When you receive a password, use it to access the download page.
3On the download page, select the CoDeSys software to download.
You do not need to download the CoDeSys SP RTE example.
4Follow CoDeSys download and installation instructions to install the
software.
B&R Automation Studio 3.0 Software
To get the B&R Automation Studio product, see:
http://www.br-automation.com/cps/rde/xchg/br-productcatalogue-
/hs.xsl/cookies_allowed.htm?caller=products_5309_ENG_HTML.htm/
Beckhoff TwinCAT 2.11
To get the Beckhoff TwinCAT 2.11 product, see:
http://www.beckhoff.com/english.asp?twincat/default.htm
KW-Software MULTIPROG 5.0
To get the KW-Software MULTIPROG 5.0 product, see:
1-8
Supported IDE Platforms
http://www.kw-software.com/com/index1024.html
Phoenix Contact PC WORX Version 6.0
To get the Phoenix Contact PC WORX Version 6.0 product, see:
http://www.phoenixcontact.com/automation/32131_31906.htm
Rockwell Automation RSLogix 5000 Software
To get the Rockwell Automation RSLogix 5000 product, see:
http://www.rockwellautomation.com/rockwellsoftware/design/-
rslogix5000/
The coder can generate code for Rockwell Automation RSLogix 5000 Add-On
instructions (AOIs) and routines.
Siemens SIMATIC STEP 7
To get the Siemens SIMATIC STEP 7 Version 5.4 product, see:
http://www.sea.siemens.com/us/Products/Automation/-
Engineering-Software/step-7-pro/Pages/step-7-pro.aspx.
1-9
1Getting Started
PLC Code Generation Workflow
The basic workflow of Simulink PLC Coder users includes:
1Define and design a Simulink model from which you want to generate code.
2Identify the model components for which you want to generate code for
importing to a PLC.
3Place the components in a Subsystem block.
4Identify your target PLC IDE.
5Select a solver.
6Configure the Subsystem block to be atomic.
7Check that the model is compatible with the Simulink PLC Coder software.
8Simulate your model.
9Configure model parameters to generate code for your PLC IDE.
10 Examine the generated code.
11 Import code to your PLC IDE.
1-10
Prepare Model for Structured Text Generation
Prepare Model for Structured Text Generation
In this section...
“Solvers” on page 1-11
“Configuring Simulink Models for Structured Text Code Generation” on
page 1-11
“Checking System Compatibility for Structured Text Code Generation”
on page 1-16
Solvers
Choose a solver for your Simulink PLC Coder model.
Model Solver Setting
Continuous Use a continuous solver and configure a fixed sample time
for the subsystem for which you generate code.
Discrete Discrete fixed-step solver.
Configuring Simulink Models for Structured Text
Code Generation
This topic assumes that you have a model for which you want to generate and
import code to a PLC IDE. Before you use this model, perform the following
steps.
1In the MATLAB Command Window, open your model. For example:
1-11
1Getting Started
2Configure the model to use the fixed-step discrete solver. To do this, select
Simulation > Model Configuration Parameters and in the Solver
pane, set Type to Fixed-step and Solver to discrete (no continuous
states).
If your model uses a continuous solver, has a subsystem, configure a fixed
sample time for the subsystem for which you generate code.
3Save this model as plcdemo_simple_subsystem1.
4Place the components for which you want to generate structured text code
in a subsystem. For example:
1-12
Prepare Model for Structured Text Generation
Optionally, rename In1 and Out1 to U and Y respectively. This operation
results in a subsystem like the following:
5Save the subsystem.
6In the top-level model, right-click the Subsystem block and select Block
Parameters (Subsystem).
1-13
1Getting Started
7In the resulting block dialog box, select Treat as atomic unit.
1-14
Prepare Model for Structured Text Generation
8Click OK.
9Simulate your model.
10 Save your model. In later procedures, you can use either this model, or the
plcdemo_simple_subsystem model that comes with your software.
You are now ready to:
1-15
1Getting Started
Set up your subsystem to generate structured text code. See “Checking
System Compatibility for Structured Text Code Generation” on page 1-16.
Generate structured text code for your IDE. See “Generate and Examine
Structured Text Code” on page 1-19.
Checking System Compatibility for Structured Text
Code Generation
This topic assumes that you have a model that you have configured to work
with the Simulink PLC Coder software.
1In your model, navigate to the subsystem for which you want to generate
code.
2Right-click that Subsystem block and select PLC Code > Check
Subsystem Compatibility.
The coder verifies that your model satisfies the Simulink PLC Coder
criteria and displays an information window when done.
1-16
Prepare Model for Structured Text Generation
If the subsystem is not atomic, right-clicking the Subsystem block and
selecting PLC Code prompts you to select Enable “Treat as atomic
unit” to generate code.
1-17
1Getting Started
This command opens the block parameter dialog box so that you can select
the Treat as atomic unit check box.
You are now ready to generate structured text code for your IDE. See
“Generate and Examine Structured Text Code” on page 1-19.
1-18
Generate and Examine Structured Text Code
Generate and Examine Structured Text Code
In this section...
“Generate Structured Text from the Model Window” on page 1-19
“Generate Structured Text with the MATLAB Interface” on page 1-24
“Generate Structured Text Code and Integrate with Existing Siemens
SIMATIC STEP 7 Projects” on page 1-25
“Matrix Data Types” on page 1-26
“Generated Code Header” on page 1-26
“Specify Custom Names for Generated Files” on page 1-26
“Propagation of Block Descriptions” on page 1-27
“Internal Signals for Debugging in RSLogix 5000 IDE” on page 1-28
Generate Structured Text from the Model Window
This topic assumes that you have set up your environment and Simulink
modeltousetheSimulinkPLCCodersoftwaretogeneratestructuredtext
code. If you have not yet done so, see “Prepare Model for Structured Text
Generation” on page 1-11.
1If you do not have the plcdemo_simple_subsystem model open, open it now.
2Right-click the Subsystem block and select PLC Code > Options.
1-19
1Getting Started
The Configuration Parameters dialog box is displayed.
3In PLC Code > General options > Target IDE, select a target IDE.
For example, select CoDeSys 2.3.
4Click Apply.
1-20
Generate and Examine Structured Text Code
5Click the Generate code button.
This button:
Generates structured text code (same as the PLC Code > Generate
Code for Subsystem option)
Stores generated code in model_name.exp (for example,
plcdemo_simple_subsystem.exp)
When code generation is complete, an information window is displayed.
This window has links that you can click to open the associated files.
The Simulink PLC Coder software generates structured text code and stores
it according to the target IDE platform. These platform-specific paths are
default locations for the generated code. To customize generated file names,
see “Specify Custom Names for Generated Files” on page 1-26.
1-21
1Getting Started
Platform Generated Files
3S-Smart
Software
Solutions
CoDeSys 2.3
current_folder\plcsrc\model_name.exp Structured text file for importing
to the target IDE.
33S-Smart
Software
Solutions
CoDeSys 3.3
current_folder\plcsrc\model_name.xml Structured text file for importing
to the target IDE.
B&R
Automation
Studio IDE
The following files in current_folder\plcsrc\model_name —Filesfor
importing to the target IDE:
Package.pkg — (If test bench is generated) Top-level package file for function
blocks library and test bench main program in XML format.
In the main folder (if test bench is generated):
IEC.prg — Test bench main program definition file in XML format.
mainInit.st — Text file. Test bench init program file in structured text.
mainCyclic.st Text file. Test bench cyclic program file in structured text.
mainExit.st — Text file. Test bench exit program file in structured text.
main.typ — Text file. Main program type definitions file in structured text.
main.var — Text file. Main program variable definitions file in structured
text.
Beckhoff
TwinCAT 2.11
current_folder\plcsrc\model_name.exp Structured text file for importing
to the target IDE.
KW-Software
MULTIPROG
5.0
current_folder\plcsrc\model_name.xml Structured text file, in XML
format, for importing to the target IDE.
Phoenix
Contact PC
WORX 6.0
current_folder\plcsrc\model_name.xml Structured text file, in XML
format, for importing to the target IDE.
1-22
Generate and Examine Structured Text Code
Platform Generated Files
Rockwell
Automation
RSLogix 5000
IDE: AOI
current_folder\plcsrc\model_name.L5X (If test bench is generated)
Structured text file for importing to the target IDE using Add-On Instruction
(AOI) constructs. This file is in XML format and contains the generated
structured text code for your model.
Rockwell
Automation
RSLogix 5000
IDE: Routine
current_folder\plcsrc\model_name.L5X (If test bench is generated)
Structured text file for importing to the target IDE using routine constructs.
This file is in XML format and contains the generated structured text code for
your model.
In current_folder\plcsrc\model_name (if test bench is not generated), the
following files are generated:
subsystem_block_name.L5X — Structured text file in XML format. Contains
program tag and UDT type definitions and the routine code for the top-level
subsystem block.
routine_name.L5X Structured text files in XML format. Contains routine
code for other subsystem blocks.
Siemens
SIMATIC
STEP 7 IDE
current_folder\plcsrc\model_name\model_name.scl —Structuredtext
file for importing to the target IDE.
current_folder\plcsrc\model_name\model_name.asc —(Iftestbenchis
generated) Text file. Structured text fileandsymboltableforgeneratedtest
bench code.
Generic current_folder\plcsrc\model_name.st — Pure structured text file. If your
target IDE is not available for the Simulink PLC Coder product, consider
generating and importing a generic structured text file.
PLCopen XML current_folder\plcsrc\model_name.xml — Structured text file formatted
using the PLCopen XML standard. If your target IDE is not available for the
Simulink PLC Coder product, but uses a format like this standard, consider
generating and importing a PLCopen XML structured text file.
The example in this topic illustrates generated code for the CoDeSys
Version 2.3 PLC IDE. Generated code for other platforms, such as Rockwell
Automation RSLogix 5000, is in XML or other format and looks different.
1-23
1Getting Started
For a description of how the generated code for the Simulink components
map to structured text components, see “Simulink®PLC Coder™ Mapping
Semantics” on page 2-2.
If you are confident that the generated structured text is good, optionally
change your workflow to automatically generate and import code to the target
IDE. For more information, see “Import Structured Text Code Automatically”
on page 1-31.
Generate Structured Text with the MATLAB Interface
You can generate structured text code for a subsystem from the MATLAB
Command Window with the plcgeneratecode function. The function
assumes that you have configured the parameters for the model, or that you
1-24
Generate and Examine Structured Text Code
want to use the default settings. For example, to open the Configuration
Parameters dialog box for the subsystem, type:
plcopenconfigset('plcdemo_simple_subsystem/Simple_Subsystem')
Configure the subsystem as described in “Generate Structured Text from the
Model Window” on page 1-19.
To generate the code for the subsystem, type:
generatedfiles = plcgeneratecode('plcdemo_simple_subsystem/Simple_Subsystem')
Generate Structured Text Code and Integrate with
Existing Siemens SIMATIC STEP 7 Projects
This topic describes a workflow to integrate generated code into an existing
Siemens SIMATIC STEP 7 project.
This topic assumes that:
You have generated code for the Siemens SIMATIC STEP 7 target IDE. If
you have not yet done so, see “Generate Structured Text from the Model
Window” on page 1-19.
You have a Siemens SIMATIC STEP 7 project into which you want to
integrate the generated code.
1In the Siemens SIMATIC STEP 7 project, right-click Sources and select
Insert New Object > External Source.
A browser window is displayed.
2In the browser window, navigate to the folder that contains the Simulink
PLC Coder generated code you want to integrate.
3In this folder, select model_name.scl,thenclickOK.
A new entry named model_name appears in the Sources folder.
4In the Sources folder, double-click model_name.
1-25
1Getting Started
The generated code is listed in the SCL editor window.
5In the SCL editor window, select Options > Customize.
The customize window is displayed.
6In the customize window, select Create block numbers automatically.
7Click OK.
This action enables the software to generate automatically the symbol
addresses for Subsystem blocks.
8In the SCL editor window, compile the model_name.scl file for the
Subsystem block.
The new Function Block is now integrated and available for use with the
existing Siemens SIMATIC STEP 7 project.
Matrix Data Types
The coder converts matrix data types to single-dimensional vectors
(column-major) in the generated structured text.
Generated Code Header
After generating structured text code, examine it. If your model has author
names, creation dates, and model descriptions, the generated code contains
these items in the header comments. Theheaderalsolistsfundamental
sample times for the model and the subsystem block for which you generate
code.
Specify Custom Names for Generated Files
To specify a different name for the generated files, set the Function name
options parameter in the Subsystem block:
1Right-click the Subsystem block for which you want to generate code and
select Subsystem Parameters.
2In the Main tab, select the Treat as atomic unit check box.
1-26
Generate and Examine Structured Text Code
3Click the Code Generation tab.
4From the Function Packaging parameter list, select either Function or
Reusable Function.
These options enable the Function name options and File name
options parameters.
5Select the option that you want to use for generating the file name:
Function name options Generated File Name
Auto Default. Uses the model name,
as listed in “Prepare Model for
Structured Text Generation”
on page 1-11, for example,
plcdemo_simple_subsystem.
Use subsystem name Uses the subsystem name, for
example, SimpleSubsystem.
User specified Uses the custom name that
you specify in the Function
name parameter, for example,
SimpleSubsystem.
Propagation of Block Descriptions
To propagate blocks to generated code for all target IDEs:
1Right-click the block for which you want to propagate comments.
2From the menu, select Properties.
3In the General tab, navigate to the Description section and enter the text
that you want to propagate and save the changes.
4In the Configuration Parameters dialog box, click the PLC Code
Generation > Comments > Include block description check box and
save the changes.
5Generate code for the model as usual and observe that the comments have
propagated to the generated code.
1-27
1Getting Started
For Rockwell Automation RSLogix 5000 AOI/routine target IDEs, the coder
also generates the subsystem block description text as an AOI or routine
description L5X XML tag. The IDE can then import the tag as part of AOI
and routine definition in the generated code.
Internal Signals for Debugging in RSLogix 5000 IDE
For debugging, you might want to generate code for test point outputs from
the top level subsystem of your model. The coder generates code that maps the
test pointed output to optional AOI output parameters for RSLogix 5000 IDEs.
In the generated code, the variable tags that correspond to the test points have
the property Required=false. This example assumes that you have a model
appropriately configured for the coder, such as plcdemo_simple_subsystem.
1If you do not have the plcdemo_simple_subsystem model open, open it now.
2In the Configuration Parameters dialog box, set Target IDE to Rockwell
RSLogix 5000: AOI.
3In the top level subsystem of the model, right-click the output line and
select Properties.
1-28
Generate and Examine Structured Text Code
The Signal Properties dialog box is displayed.
4On the Logging and accessibility tab, click the Test point check box.
1-29
1Getting Started
5Click OK.
6Generate code for the top level subsystem.
7Inspect the generated code for the string Required=false.
For more information on signals with test points, see “What Is a Test Point?”.
1-30
Import Structured Text Code Automatically
Import Structured Text Code Automatically
In this section...
“PLC IDEs That Qualify for Importing Code Automatically” on page 1-31
“Generate and Automatically Import Structured Text Code” on page 1-32
“Troubleshoot Automatic Import Issues” on page 1-33
PLC IDEs That Qualify for Importing Code
Automatically
If you are confident that your model produces structured text that does not
require visual examination, you can generate and automatically import
structured text code to one of the following target PLC IDEs:
3S-Smart Software Solutions CoDeSys Version 2.3
KW-Software MULTIPROG Version 5.0
Phoenix Contact PC WORX Version 6.0
Rockwell Automation RSLogix 5000 Version 17, 18, or 19
For the Rockwell Automation RSLogix routine format, you must generate
testbench code for automatic import and verification.
Siemens SIMATIC STEP 7 Version 5.4 only for the following versions:
-Siemens SIMATIC Manager: Version V5.4+SP5+HF1, Revision K5.4.5.1
-S7-SCL: Version V5.3+SP5, Revision K5.3.5.0
-S7-PLCSIM: Version V5.4+SP3, Revision K5.4.3.0
This topic describes how to work with the default CoDeSys Version 2.3 IDE.
The procedure should work without additional changes for the other supported
PLC IDEs, with the exception of the KW-Software MULTIPROG 5.0 and
Phoenix Contact PC WORX 6.0 IDE. For notes on how to automatically import
structured text code to these IDEs, see “Import and Verify Structured Text
to KW-Software MULTIPROG 5.0 and Phoenix Contact PC WORX 6.0 IDEs
Automatically” on page 3-9.
1-31
1Getting Started
Generate and Automatically Import Structured Text
Code
You can generate and automatically import structured text code. Before you
start:
In the target IDE, save any current project.
Close all open projects.
Close the target IDE and all target IDE-related windows.
Note While the automatic import process is in progress, do not touch your
mouse or keyboard. Doing so might disrupt the automatic import process.
You can resume normal operations when the process completes.
The following procedure assumes that you have installed your target PLC
IDE in a default location and uses the CoDeSys V2.3 IDE. If you installed the
target PLC IDE in a nondefault location, open the Configuration Parameters
dialog box. In the PLC Coder node, set the Target IDE Path parameter to
the installation folder of your PLC IDE. See “Target IDE Path” on page 12-6
for more details.
1If it is not already started, start the MATLAB Command Window.
2Open the plcdemo_simple_subsystem model.
3Right-click the Subsystem block and select PLC Code > Generate and
Import Code for Subsystem.
The software then:
aGenerates the code.
bStarts the target IDE interface.
cCreates a new project.
dImports the generated code to the target IDE.
If you want to generate, import, and run the structured text code, see “Import
andVerifyStructuredTextCodeAutomatically”onpage3-9.
1-32
Import Structured Text Code Automatically
Troubleshoot Automatic Import Issues
This topic describes guidelines, hints, and tips for questions or issues you
might have while using the automatic import capability of the Simulink PLC
Coder product.
Supported Target IDEs
The Simulink PLC Coder software supports only the following versions of
target IDEs for automatic import and verification:
3S-Smart Software Solutions CoDeSys Version 2.3
KW-Software MULTIPROG 5.0 (English)
Phoenix Contact PC WORX 6.0 (English)
Rockwell Automation RSLogix 5000 Series Version 17, 18, 19 (English)
For the Rockwell Automation RSLogix routine format, you must generate
testbench code for automatic import and verification.
Siemens SIMATIC STEP 7 Version 5.4 (English and German)
Unsupported Target IDEs
The following target IDEs currently do not support automatic import. For
these target IDEs, the automatic import menu items (Generate and Import
Code for Subsystem and Generate, Import, and Verify Code for
Subsystem)aredisabled.
3S-Smart Software Solutions CoDeSys Version 3.3
B&R Automation Studio IDE
Beckhoff TwinCAT 2.11
Generic
PLCopen
Possible Automatic Import Issues
When the Simulink PLC Coder software fails to finish automatically
importing for the target IDE, it reports an issue in a message dialog box. To
remedy issue, try the following actions:
1-33
1Getting Started
Check that the coder supports the target IDE version and language setting
combination.
Check that you have specified the target IDE path in the subsystem
Configuration Parameters dialog box.
Close any currently open projects in the target IDE, close the target IDE
completely, and try again.
Some target IDEs can have issues supporting the large data sets the coder
test bench generates. In these cases, try to shorten the simulation cycles to
reduce the data set size, then try the automatic import again.
Other applications can interfere with automatic importing to a target
IDE. Try to close other unrelated applications on the system and try the
automatic import again.
1-34
Integrate Absolute Time Temporal Logic Code
Integrate Absolute Time Temporal Logic Code
Use this workflow to generate code with absolute time temporal logic for
targets other than Rockwell Automation RSLogix 5000 IDE. The coder
supports absolute time temporal logic automatically for the Rockwell
Automation RSLogix 5000 IDE.
This workflow refers to plcdemo_sf_abs_time as an example of a model that
contains absolute time temporal logic constructs.
Before you start:
In your IDE, create a PLC_CODER_TIMER function block for your
absolute time temporal logic constructs. In this block, define the
code for the timer logic. When the Simulink PLC Coder product
generates code for a model that uses absolute time temporal logic, it
generates calls to this block in the code to implement timer logic. See
\toolbox\plccoder\plccoderdemos\plc_coder_timer.st for an example
PLC_CODER_TIMER definition for the generic IDE.
1-35
1Getting Started
The input/output interface and logic of the PLC_CODER_TIMER function block
in your IDE must match the definition in this example.
Check that you have a Stateflow license. The coder supports absolute time
temporal logic constructs that you specify in Stateflow charts.
1Create your model using absolute time temporal logic constructs. Include
the temporal logic constructs in a Stateflow chart. For an example, see
plcdemo_sf_abs_time.
1-36
Integrate Absolute Time Temporal Logic Code
2Configure the chart to generate Simulink PLC Coder code.
3Generate code for the chart.
4In the generated code, look for instances of PLC_CODER_TIMER. For example:
5Integrate the generated code and the PLC_CODER_TIMER function block
into your IDE.
1-37
1Getting Started
Simulation and Code Generation of Motion Instructions
In this section...
“Workflow for Using Motion Instructions in Model” on page 1-38
“Library of Motion Instructions” on page 1-41
“Data Types for Motion Instructions” on page 1-41
“Limitations for MAM Instruction” on page 1-42
The Simulink PLC Coder software supports a workflow for the behavioral
simulation and code generation of motion instructions for the Rockwell
Automation RSLogix 5000 IDE.
Workflow for Using Motion Instructions in Model
This workflow uses plcdemo_motion_control in the plcdemos folder. This
example provides a template that you can use with motion instructions. It
contains the following subsystems:
Subsystem Description
Controller Contains an example Stateflow chart
with motion instructions. The controller
subsystem sends inputs to the Command
Profile subsystem (part of the template).
Replace this subsystem with your own
controller subsystem.
Command Profile Contains a utility subsystem in which the
coder calculates the position data based on
the parameters of the motion instructions
MAM command. Typically, you do not need
to modify this subsystem.
Do not need to replace this subsystem.
1-38
Simulation and Code Generation of Motion Instructions
Subsystem Description
Drive Model Contains a minimalistic drive model.
Replace this subsystem with your own drive
model subsystem.
Drive Status Contains a utility subsystem that reads
drive status and returns that status to the
Controller subsystem. Typically, you do not
need to modify this subsystem.
Do not need to replace this subsystem.
Before you start, create
A custom controller subsystem. This subsystem contains motion
instructions. The controller subsystem sends inputs to the Command
Profile subsystem.
A custom drive (plant) model subsystem. The subsystem sends inputs to
a Drive Status subsystem. Design the subsystem to work with the inputs
and outputs.
To modify the plcdemo_motion_control example:
1Open the plcdemo_motion_control example template.
2Replace the ExampleController chart in the Controller subsystem with
your controller subsystem.
3ReplacetheDriveModelsubsysteminthe template with your drive (plant)
model.
4Simulate the model.
5Observe the simulation results in the model scopes.
The following shows the output from plcdemo_motion_control without
modification.
1-39
1Getting Started
6Generatecodefortheexamplemodel. ToviewthecodeinHTML
format, in the coder configuration parameters, select the PLC Code
Generation > Report > Generate traceability report check box and
click Apply.
Navigate to the PLC Code Generation node and click Generate code.
An HTML file of the generated code is displayed.
7Observe the generated code for MAM,MAFR,andMSO.
1-40
Simulation and Code Generation of Motion Instructions
MAFR and MSO
MAM
Library of Motion Instructions
The plcdemo_motion_control example uses a motion instructions library
that contains a Motion Stub Functions Stateflow chart. This chart defines
stub functions for only the following motion instructions:
MAM
MAFR
MSO
To use other Rockwell Automation RSLogixmotioninstructionsinthemodel,
you must define your own stub functions to correspond to the RSLogix motion
instructions in the Motion Stub Functions chart.
Data Types for Motion Instructions
The plcdemo_motion_control example uses Simulink bus data types
(Simulink.Bus) that correspond to the motion instruction AXIS and
MOTION_INSTRUCTION user-defined data types (UDTs) in the Rockwell
1-41
1Getting Started
Automation RSLogix 5000 IDE. For these UDTs, the example defines only the
fields used in the ExampleController chart of the plcdemo_motion_control
example. When you generate code, the coder maps the bus data types
to the motion instruction UDTs. If your controller subsystem uses
any other fields of motion instruction UDTs, you must add them to
the definition of the corresponding Simulink bus data types. The
/toolbox/plccoder/plccoderdemos/PLCMotionType.mat file contains the
definitions of the Simulink bus data types. As needed by your controller, you
can add more fields to these definitions.
Name Size Bytes Class Attributes
AXIS_SERVO_DRIVE 1x1 Simulink.Bus
MOTION_INSTRUCTION 1x1 Simulink.Bus
Limitations for MAM Instruction
In the plcdemo_motion_control example, the MAM instruction has the
following limitations:
1Direction parameter is always forward.
2The software supports only the Trapezoidal profile.
3The software ignores all units parameters.
4The software does not support Merge and Merge speed.
1-42
2
Mapping Simulink
Semantics to Structured
Text
“Simulink®PLC Coder™ Mapping Semantics” on page 2-2
“Generated Code Structure for Simple Simulink Subsystems” on page 2-3
“Generated Code Structure for Reusable Subsystems” on page 2-5
“Generated Code Structure for Triggered Subsystems” on page 2-7
“Generated Code Structure for Stateflow Charts” on page 2-9
“Generated Code Structure for MATLAB Function Block” on page 2-11
2Mapping Simulink®Semantics to Structured Text
Simulink PLC Coder Mapping Semantics
When you examine generated code, you evaluate how well the Simulink PLC
Coder software has generated code from your model. The following topics
describe how the coder maps Simulink subsystem semantics to function block
semantics in structured text. As examples, the topics describe the mapping
in the context of the different subsystem types that Simulink supports. The
examples assume that you have already generated code (see “Generate
Structured Text from the Model Window” on page 1-19). These topics use
code generated with CoDeSys Version 2.3. All examples are located in the
matlabroot\toolbox\plccoder\plccoderdemos folder.
2-2
Generated Code Structure for Simple Simulink Subsystems
Generated Code Structure for Simple Simulink Subsystems
This topic assumes that you have generated structured text code from a
Simulinkmodel. Ifyouhavenotyetdoneso,see“GenerateStructuredText
from the Model Window” on page 1-19.
The example in this topic shows generated code for the CoDeSys Version 2.3
IDE. Generated code for other IDE platforms looks different.
1If you do not have the plcdemo_simple_subsystem.exp file open, open it
in the MATLAB editor. In the folder that contains the file, type:
edit plcdemo_simple_subsystem.exp
A file like the following is displayed.
The following figure illustrates the mapping of the generated code to
structured text components for a simple Simulink subsystem. The Simulink
subsystem corresponds to the structured text function block, Subsystem.
Note The coder maps alias data types to the base data type in the
generated code.
2-3
2Mapping Simulink®Semantics to Structured Text
Input parameter for
subsystem method
type
Subsystem
inputs and
outputs
Subsystem
State (DWork)
variables
Initialize and
step methods
Inlined
parameters
Subsystem
Atomic subsystem name
2Inspect this code as you ordinarily do for PLC code. Check the generated
code.
2-4
Generated Code Structure for Reusable Subsystems
Generated Code Structure for Reusable Subsystems
This topic assumes that you have generated structured text code from a
Simulinkmodel. Ifyouhavenotyetdoneso,see“GenerateStructuredText
from the Model Window” on page 1-19.
The example in this topic shows generated code for the CoDeSys Version 2.3
IDE. Generated code for other IDE platforms looks different.
1Open the plcdemo_reusable_subsystem model.
2Right-click the Subsystem block and select PLC Code > Generate Code
for Subsystem.
The Simulink PLC Coder software generates structured text code and
places it in current_folder/plcsrc/plcdemo_reusable_subsystem.exp.
3If you do not have the plcdemo_reusable_subsystem.exp file open, open it
in the MATLAB editor.
The following figure illustrates the mapping of the generated code to
structured text components for a reusable Simulink subsystem . This
graphic contains a copy of the hierarchical subsystem, ReusableSubsystem.
This subsystem contains two identical subsystems, S1 and S2. This
configuration enables code reuse between the two instances (look for the
ReusableSubsystem string in the code).
2-5
2Mapping Simulink®Semantics to Structured Text
Instance variables
Instance invocations (call sites)
Reused code in
FUNCTION_BLOCK
4Examine the generated structured text code. The code defines
FUNCTION_BLOCK ReusableSubsystem_S1 once.
Look for two instance variables that correspond to the two instances
declared inside the parent FUNCTION_BLOCK ReusableSubsystem
(_instance_ReusableSubsystem_S1_1: ReusableSubsystem_S1 and
_instance_ReusableSubsystem_S1_0: ReusableSubsystem_S1). The
code invokes these two instances separately by passing in different inputs.
The code invokes the outputs per the Simulink execution semantics.
2-6
Generated Code Structure for Triggered Subsystems
Generated Code Structure for Triggered Subsystems
This topic assumes that you have generated structured text code from a
Simulinkmodel. Ifyouhavenotyetdoneso,see“GenerateStructuredText
from the Model Window” on page 1-19.
The example in this topic shows generated code for the CoDeSys Version 2.3
PLC IDE. Generated code for other IDE platforms looks different.
1Open the plcdemo_cruise_control model.
2Right-click the Controller subsystem block and select PLC
Code > Generate Code for Subsystem.
The Simulink PLC Coder software generates structured text code and
places it in current_folder/plcsrc/plcdemo_cruise_control.exp.
3If you do not have the plcdemo_cruise_control.exp file open, open it in
the MATLAB editor.
The following figure illustrates the mapping of the generated code to
structured text components for a triggered Simulink subsystem . The
firstpartofthefigureshowstheController subsystem and the triggered
Stateflow chart that it contains. The second part of the figure shows
excerpts of the generated code. Notice the zero-crossing functions that
implement the triggered subsystem semantics.
Subsystem Triggered Stateflow Chart
2-7
2Mapping Simulink®Semantics to Structured Text
Generated code
Triggered subsystem semantics
2-8
Generated Code Structure for Stateflow®Charts
Generated Code Structure for Stateflow Charts
This topic assumes that you have generated structured text code from a
Simulinkmodel. Ifyouhavenotyetdoneso,see“GenerateStructuredText
from the Model Window” on page 1-19.
The example in this topic shows generated code for the CoDeSys Version 2.3
PLC IDE. Generated code for other IDE platforms looks different.
1Open the plcdemo_stateflow_controller model.
2Right-click the ControlModule chart and select PLC Code > Generate
Code for Subsystem.
The Simulink PLC Coder software generates structured text code and places
it in current_folder/plcsrc/plcdemo_stateflow_controller.exp.
3If you do not have the plcdemo_stateflow_controller.exp file open,
open it in the MATLAB editor.
The following figure illustrates the mapping of the generated code to
structured text components for a Simulink Subsystem block that contains a
Stateflow chart.
2-9
2Mapping Simulink®Semantics to Structured Text
Inlined code for Stateflow chart
4Examine the generated structured text code.
The Simulink PLC Coder software aggressively inlines the generated code
for the Stateflow chart. The coder performs this inlining because different
functions from Stateflow charts share some global state data. However,
function blocks in structured text code do not share state data. As a result,
the coder software cannot map these functions onto separate function blocks.
Instead, it must inline these functions.
2-10
Generated Code Structure for MATLAB Function Block
Generated Code Structure for MATLAB Function Block
This topic assumes that you have generated structured text code from a
Simulinkmodel. Ifyouhavenotyetdoneso,see“GenerateStructuredText
from the Model Window” on page 1-19.
The example in this topic shows generated code for the CoDeSys Version 2.3
IDE. Generated code for other IDE platforms looks different.
1Open the plcdemo_eml_tankcontrol model.
2Right-click the TankControl block and select PLC Code > Generate
Code for Subsystem.
The Simulink PLC Coder software generates structured text code and
places it in current_folder/plcsrc/plcdemo_eml_tankcontrol.exp.
3If you do not have the plcdemo_eml_tankcontrol.exp file open, open it in
the MATLAB editor.
The following figure illustrates the mapping of the generated code to
structured text components for a Simulink Subsystem block that contains a
MATLAB Function block. The coder tries to perform inline optimization on
the generated code for MATLAB local functions. If the coder determines
that it is more efficient to leave the local function as is, it places the
generated code in a structured text construct called FUNCTION.
4Examine the generated structured text code.
2-11
2Mapping Simulink®Semantics to Structured Text
Generated code
for MATLAB
subfunctions
MATLAB code
2-12
3
Generating Test Bench
Code
“Generated Structured Text and Test Bench Code” on page 3-2
“Generate and Manually Import Test Bench Code” on page 3-5
“Import and Verify Structured Text Code Automatically” on page 3-9
3Generating Test Bench Code
Generated Structured Text and Test Bench Code
In this section...
“Test Bench Verification” on page 3-2
“Generated Files” on page 3-2
“Integrate Generated Code into Custom Code” on page 3-2
Test Bench Verification
The Simulink PLC Coder software simulates your model and automatically
captures the input and output signals for the subsystem that contains your
algorithm. This set of input and output signal data is the test bench data. The
coder also automatically generates a test bench (test harness) using the text
bench data. The test bench runs the generated code to verify that the output
is functionally and numerically equivalent to the output from the execution
of a Simulink model. To perform this verification, import the generated
structured text and the test bench data into your target IDE.
You can import test bench code:
Manually, as described in “Generate and Manually Import Test Bench
Code” on page 3-5.
Automatically, including running the test bench, as described in “Import
and Verify Structured Text Code Automatically” on page 3-9
Generated Files
Depending on the target IDE platform, the Simulink PLC Coder software
generates code into one or more files. See “Generate Structured Text from
the Model Window” on page 1-19 for list of the target IDE platforms and
the possible generated files.
Integrate Generated Code into Custom Code
For the top-level subsystem that has internal state, the generated
FUNCTION_BLOCK code has ssMethodType.ssMethodType is a special
input argument that the coder adds to the input variables section of the
FUNCTION_BLOCK section during code generation. ssMethodType enables you
3-2
Generated Structured Text and Test Bench Code
to execute code for Simulink Subsystem block methods such as initialization
and computation steps. The generated code executes the associated CASE
statement based on the value passed in for this argument.
To use ssMethodType with a FUNCTION_BLOCK for your model, in the generated
code, the top-level subsystem function block prototype has one of the following
formats:
Has Internal
State
ssMethodType Contains...
Yes The generated function block for the block will have an
extra first parameter ssMethodType of integer type. This
extra parameter is in addition to the function block I/O
parameters mapped from Simulink block I/O ports. To use
the function block, first initialize the block by calling the
function block with ssMethodType set to integer constant
SS_INITIALIZE. If the IDE does not support symbolic
constants, set ssMethodType to integer value 0. For
each follow-up invocation, call the function block with
ssMethodType set to constant SS_STEP.IftheIDEdoesnot
support symbolic constants, set ssMethodType to integer
value 1. These settings cause the function block to initialize
or compute and return output for each time step.
No The function block interface only has parameters mapped
from Simulink block I/O ports. There is no ssMethodType
parameter. To use the function block in this case, call the
function block with I/O arguments.
For non top-level subsystems, in the generated code, the subsystem function
block prototype has one of the following formats:
3-3
3Generating Test Bench Code
Has Internal
State
ssMethodType Contains...
Yes The function block interface has the ssMethodType
parameter. The generated code might have SS_INITIALIZE,
SS_OUTPUT,orotherssMethodType constants to implement
Simulink semantics.
No The function block interface only has parameters mapped
from Simulink block I/O ports. There is no ssMethodType
parameter.
3-4
Generate and Manually Import Test Bench Code
Generate and Manually Import Test Bench Code
This example shows how to generate test bench code. It uses the CoDeSys
V2.3 IDE as an example target IDE.
This example assumes that you have an appropriately configured model from
which to generate structured text. If you have not yet done this procedure, see
“Prepare Model for Structured Text Generation” on page 1-11. All demos are
located in the matlabroot\toolbox\plccoder\plccoderdemos folder.
1If you do not have the plcdemo_simple_subsystem model open, open it now.
2Check that you have connected the inputs and outputs of the subsystem
for which you want to generate the test bench. You can import this test
bench with the generated code to the target IDE to verify that the output is
functionally and numerically equivalent to the output from the execution
of a Simulink model. For example:
3-5
3Generating Test Bench Code
3Right-click the Subsystem block and select PLC Code > Options.
The Configuration Parameters dialog box is displayed.
4In PLC Code > General options > Target IDE, select your target IDE,
for example, CoDeSys 2.3.
5Select the Generate testbench for subsystem check box.
6Click Apply.
7Click the Generate code button.
3-6
Generate and Manually Import Test Bench Code
This button:
Generates structured text code (same as the PLC Code > Generate
Code for Subsystem option)
Generates the test bench for code through Simulink simulation
Combines the generated code and test bench into model_name.exp (for
example, plcdemo_simple_subsystem.exp)
When the code generation is complete, an information window is
displayed.
8Click OK.
The Simulink PLC Coder software generates structured text code and
writes it to current_folder/plcsrc/plcdemo_simple_subsystem.exp.
Depending on the target IDE, the coder might generate additional
supporting files.
3-7
3Generating Test Bench Code
9Close the model.
bdclose(sys)
See the user manual for your target IDE for information on how to import
generated code into the target IDE.
3-8
Import and Verify Structured Text Code Automatically
Import and Verify Structured Text Code Automatically
In this section...
“Import and Verify Structured Text to KW-Software MULTIPROG 5.0 and
Phoenix Contact PC WORX 6.0 IDEs Automatically” on page 3-9
“Generate, Automatically Import, and Verify Structured Text” on page 3-11
These topics assume that you have read “Import Structured Text Code
Automatically” on page 1-31. If you have not yet done so, read that topic first.
It also assumes that you are confident that your model produces structured
text that does not require visual examination.
If you do not want to run and verify the generated code and want only to
import it, see “Generate and Automatically Import Structured Text Code”
on page 1-32.
Import and Verify Structured Text to KW-Software
MULTIPROG 5.0 and Phoenix Contact PC WORX 6.0
IDEs Automatically
Before you can automatically import generated code to this IDE, create an
Empty template. This topic assumes that you have already set your target IDE
to KW-Software MULTIPROG 5.0 or Phoenix Contact PC WORX 6.0.
1Start the KW-Software MULTIPROG 5.0 or Phoenix Contact PC WORX
6.0 IDE.
2Select File > Delete Template and search for and delete any template
named Empty.ClickOK when done.
3Select File > New Project, select Project Wizard,thenclickOK.
The Project Wizard starts.
aIn the Project Name field, type Empty,
bIn the Project Path field, type or select a path to which you have write
privileges.
cClick Next.
3-9
3Generating Test Bench Code
dIn the remaining wizard dialog boxes, click Next to leave the default
selections. At the end of the wizard, click Finish.
The IDE updates with the new Empty project tree.
4In the project, delete everything under the following nodes:
Logical POUs
Physical Hardware
5Check that the project tree has only top-level nodes for Libraries,Data
Types,Logical POUs,andPhysical Hardware. There should be no
subtree nodes.
6In the IDE, select File > Save As Template.
7In Template Name,typeEmpty.
8Click OK.
9Close the IDE interface.
When you are ready, open your model, right-click the Subsystem block, and
select one of the following:
PLC Code > Generate and Import Code for Subsystem
PLC Code > Generate, Import, and Verify Code for Subsystem
The coder:
1Generates the code and test bench.
2Starts the IDE.
3Creates a new, empty project using your Empty template.
4Imports the generated code and test bench in XML file to the IDE.
5If you selected PLC Code > Generate, Import, and Verify Code for
Subsystem, the IDE also runs the generated code to verify it.
3-10
Import and Verify Structured Text Code Automatically
Generate, Automatically Import, and Verify
Structured Text
You can generate, automatically import, and run and verify structured text
code. If you want only to generate and automatically import structured text
code, see “Import Structured Text Code Automatically” on page 1-31 instead.
The following procedure assumes that you have installed your target PLC
IDE in a default location. If you installed the target PLC IDE in a nondefault
location, open the Configuration Parameters dialog box. In the PLC Coder
node, set the Target IDE Path parameter to the installation folder of your
PLC IDE. See “Target IDE Path” on page 12-6 for more details.
Note While the automatic import and verification process is in progress, do
not touch your mouse or keyboard. Doing so might disrupt the automatic
import or verification process. You can resume normal operations when the
process completes.
If you are working with the KW-Software MULTIPROG 5.0 or Phoenix
Contact PC WORX 6.0 IDE, see “Import and Verify Structured Text to
KW-Software MULTIPROG 5.0 and Phoenix Contact PC WORX 6.0 IDEs
Automatically” on page 3-9.
1If you do not have the plcdemo_simple_subsystem model open, open it now.
2Right-click the Subsystem block and select PLC Code > Generate,
Import, and Verify Code for Subsystem.
The coder then:
aGenerates the code and test bench.
bStarts the target IDE.
cCreates a new project.
dImports the generated code and test bench to the new project in the
target IDE.
eOn the target IDE, runs the generated code to verify it.
3-11
3Generating Test Bench Code
3-12
4
Code Generation Reports
“Information in Code Generation Reports” on page 4-2
“Create and Use Code Generation Reports” on page 4-4
4Code Generation Reports
Information in Code Generation Reports
The coder creates and displays a Traceability Report file when you select
one or more of these options:
GUI
Option
Command-Line Property Description
Generate
traceability
report
PLC_GenerateReport Specify whether to create
code generation report.
Generate
model Web
view
PLC_GenerateWebview Include the model Web view
in the code generation report
to navigate between the
code and model within the
same window. You can share
your model and generated
code outside of the MATLAB
environment.
In the Configuration Parameters dialog box, in the Report panel, you see
these options.
Note You must have a Simulink Report Generator™ license to generate
traceabilty reports.
The coder provides the traceability report to help you navigate more easily
between the generated code and your source model. When you enable code
generation report, the coder creates and displays an HTML code generation
report. You can generate reports from the Configuration Parameters dialog
4-2
Information in Code Generation Reports
box or the command line. A typical traceability report looks something like
this figure:
4-3
4Code Generation Reports
Create and Use Code Generation Reports
In this section...
“Generate a Traceability Report from Configuration Parameters” on page
4-4
“Keep the Report Current” on page 4-6
“Trace from Code to Model” on page 4-7
“Trace from Model to Code” on page 4-8
“Model Web View in Code Generation Report” on page 4-10
“Generate a Traceability Report from the Command Line” on page 4-13
Generate a Traceability Report from Configuration
Parameters
To generate a Simulink PLC Coder code generation report from the
Configuration Parameters dialog box:
1Verify that the model is open.
2Open the Configuration Parameters dialog box and navigate to the PLC
Code Generation pane.
3To enable report generation, select Report > Generate traceability
report.
4Click Apply.
4-4
Create and Use Code Generation Reports
5Click PLC Code Generation > Generate code to initiate code and report
generation. The coder generates HTML report files as part of the code
generation process.
The HTML report appears:
4-5
4Code Generation Reports
For more information on using the report that you generate for tracing, see:
“Trace from Code to Model” on page 4-7
“Trace from Model to Code” on page 4-8
Keep the Report Current
If you generate a code generation report for a model, and subsequently make
changes to the model, the report might become invalid. To keep your code
generation report current, after modifying the source model, regenerate code
and the report. If you close and then reopen a model, regenerate the report.
4-6
Create and Use Code Generation Reports
TracefromCodetoModel
You must have already generated code with a traceability report. If not, see
“Generate a Traceability Report from Configuration Parameters” on page 4-4
or “Generate a Traceability Report from the Command Line” on page 4-13.
To trace generated code to your model:
1In the generated code HTML report display, look for <S1>/Gain.
S1/Gain
2In the HTML report window, click a link to highlight the corresponding
source block. For example, in the HTML report shown in the previous
figure, you click the hyperlink for the Gain block (highlighted) to view
that block in the model. Clicking the hyperlink locates and displays the
4-7
4Code Generation Reports
corresponding block in the model editor window. You can use the same
method to trace other block from the HTML report.
Trace from Model to Code
You can select a component at any level of the model with model-to-code
traceability. You can also view the code references to that component in the
HTML code generation report. You can select the following objects for tracing:
Subsystem
Simulink block
MATLAB Function block
Truth Table block
State Transition Table block
Stateflow chart, or the following elements of a Stateflow chart:
-State
-Transition
-Graphical function
-MATLAB function
-Truth table function
You must have already generated code with a traceability report to trace a
model component to the generated code. If not, see “Generate a Traceability
Report from Configuration Parameters” on page 4-4 or “Generate a
Traceability Report from the Command Line” on page 4-13.
4-8
Create and Use Code Generation Reports
To trace a model component to the generated code:
1In the model window, right-click the component and select PLC
Code > Navigate to Code.
2Selecting Navigate to Code activates the HTML code generation report.
The following figure shows the result of tracing the Gain block within the
subsystem.
In the report, the highlighted tag S1/Gain indicates the beginning of
the generated code for the block. You can use the same method to trace
from other Simulink, Stateflow and MATLAB objects to the generated
traceability report.
4-9
4Code Generation Reports
Model Web View in Code Generation Report
Model Web Views
To review and analyze the generated code, it is helpful to navigate between the
code and model. You can include a Web view of the model within the HTML
code generation report. You can then share your model and generated code
outside of the MATLAB environment. You need a Simulink Report Generator
licensetoinc
lude a Web view of the model in the code generation report.
Browser Requirements for Web Views
Web views require a Web browser that supports Scalable Vector Graphics
(SVG). Web views use SVG to render and navigate models.
You can use the following Web browsers:
Mozilla®Firefox®Version 1.5 or later, which has native support for SVG.
To download the Firefox browser, go to www.mozilla.com/.
Apple Safari Web browser
The Microsoft®Internet Explorer®Web browser with the Adobe®SVG
Viewer plug-in. To download the Adobe SVG Viewer plug-in, go to
www.adobe.com/svg/.
Note Web views do not currently support Microsoft Internet Explorer 9.
Generate HTML Code Generation Report with Model Web View
This example shows how to create an HTML code generation report which
includes a Web view of the model diagram.
1Open the plcdemo_simple_subsystem model.
2Open the Configuration Parameters dialog box and navigate to the Code
Generation pane.
3To enable report generation, select Report > Create report code
generation report.
4-10
Create and Use Code Generation Reports
4To enable model web view, select Report > Generate model Web view.
5Click Apply.
The dialog box looks something like this:
6Click PLC Code Generation > Generate code to initiate code and
report generation. The code generation report for the top model opens in
a MATLAB Web browser.
4-11
4Code Generation Reports
7In the left navigation pane, select a source code file. The corresponding
traceable source code is displayed in the right pane and includes hyperlinks.
8Click a link in the code. The model Web view displays and highlights the
corresponding block in the model.
9To go back to the code generation report for the top model, at the top of the
left navigation pane, click the Back button until the top model’s report
is displayed.
4-12
Create and Use Code Generation Reports
For more information about navigating between the generated code and the
model diagram, see:
“Trace from Code to Model” on page 4-7
“Trace from Model to Code” on page 4-8
Model Web View Limitations
When you are using the model Web view, the HTML code generation report
includes the following limitations :
Code is not generated for virtual blocks. In the model Web view, if you
click a virtual block, the code generation report clears any highlighting in
the source code files.
Stateflow truth tables, events, and links to library charts are not supported
in the model Web view.
Searching in the code generation report does not find or highlight text in
the model Web view.
In a subsystem build, the traceability hyperlinks of the root-level inports
and outports blocks are disabled.
If you navigate from the actual model diagram (not the model Web view
in the report), to the source code in the HTML code generation report, the
model Web view is disabled and is no longer visible. To enable the model
Web view, open the report again, see .
Generate a Traceability Report from the Command
Line
To generate a Simulink PLC Coder code generation report from the command
line code for the subsystem, plcdemo_simple_subsystem/SimpleSubsystem:
1Open a Simulink PLC Coder model, for example:
open_system('plcdemo_simple_subsystem');
2Enable the code generation parameter PLC_GenerateReport.Toviewthe
output in the model Web view, also enable PLC_GenerateWebview:
set_param('plcdemo_simple_subsystem', 'PLC_GenerateReport', 'on');
4-13
4Code Generation Reports
set_param('plcdemo_simple_subsystem', 'PLC_GenerateWebView', 'on');
3Generate the code.
generatedfiles = plcgeneratecode('plcdemo_simple_subsystem/SimpleSubsystem')
An information window and the traceability report are displayed. If the
model Web view is also enabled, that view is displayed.
4-14
5
Working with Tunable
Parameters in the Simulink
PLC Coder Environment
“Configure Tunable Parameters for Your Model” on page 5-2
“Identify Tunable Parameters” on page 5-8
“Tune Parameters Using Simulink.Parameter Objects” on page 5-12
“Configure Tunable Parameters Using Configuration Parameters” on page
5-17
5Working with Tunable Parameters in the Simulink®PLC Coder™ Environment
Configure Tunable Parameters for Your Model
In this section...
“Tunable Parameters” on page 5-2
“Configure Your Model for Tunable Parameters” on page 5-5
Tunable Parameters
Block parameters can be either tunable or nontunable. A tunable parameter
is a parameter that you can change while a simulation is running. With the
Simulink PLC Coder software, you can tune parameters:
From the MATLAB workspace, while the model simulation is running.
In the IDE, while the generated code is running.
The Simulink PLC Coder software exports tunable parameters as exported
symbols and preserves the names of these parameters in the generated code.
It does not mangle these names. As a result, if you use a reserved IDE
keyword as a tunable parameter name, the code generation might cause
compilation errors in the IDE. As a general rule, do not use IDE keywords as
tunable parameter names.
The coder maps tunable parameters in the generated code as listed in the
following table:
Parameter Storage Class
Target IDE
SimulinkGlobal ExportedGlobal ImportedExtern Imported-
ExternPointer
CoDeSys 2.3 Local function
block variables.
Global variable. Variable
definition is
skipped.
Ignored. If you
set the parameter
to this value, the
software treats
5-2
Configure Tunable Parameters for Your Model
Parameter Storage Class
Target IDE
SimulinkGlobal ExportedGlobal ImportedExtern Imported-
ExternPointer
it the same as
ImportedExtern.
CoDeSys 3.3 Local function
block variables.
Global variable. Variable
definition is
skipped.
Ignored. If you
set the parameter
to this value, the
software treats
it the same as
ImportedExtern.
B&R
Automation
Studio 3.0
Local function
block variable.
Local function
block variable
Local function
block variable.
Ignored. If you
set the parameter
to this value, the
software treats
it the same as
ImportedExtern.
Beckhoff
TwinCAT 2.11
Local function
block variable.
Global variable. Variable
definition is
skipped.
Ignored. If you
set the parameter
to this value, the
software treats
it the same as
ImportedExtern.
KW-Software
MULTIPROG
5.0
Local function
block variable.
Local function
block variable.
Local function
block variable.
Ignored. If you
set the parameter
to this value, the
software treats
it the same as
ImportedExtern.
Phoenix
Contact PC
WORX 6.0
Local function
block variable.
Global variable. Variable
definition is
skipped.
Ignored. If you
set the parameter
to this value, the
software treats
it the same as
ImportedExtern.
5-3
5Working with Tunable Parameters in the Simulink®PLC Coder™ Environment
Parameter Storage Class
Target IDE
SimulinkGlobal ExportedGlobal ImportedExtern Imported-
ExternPointer
RSLogix 5000
17, 18: AOI
AOI local tags. AOI input tags. AOI input tags. Ignored. If you
set the parameter
to this value, the
software treats
it the same as
ImportedExtern.
RSLogix
5000 17, 18:
Routine
Instance fields
of program UDT
tags.
Program tags. Variable
definition is
skipped.
Ignored. If you
set the parameter
to this value, the
software treats
it the same as
ImportedExtern.
Siemens
SIMATIC
STEP 7 5.4
Local function
block variable.
Local function
block variable.
Local function
block variable.
Ignored. If you
set the parameter
to this value, the
software treats
it the same as
ImportedExtern.
Generic Local function
block variable.
Global variable. Variable
definition is
skipped.
Ignored. If you
set the parameter
to this value, the
software treats
it the same as
ImportedExtern.
PLCOpen Local function
block variable.
Global variable. Variable
definition is
skipped.
Ignored. If you
set the parameter
to this value, the
software treats
it the same as
ImportedExtern.
5-4
Configure Tunable Parameters for Your Model
Configure Your Model for Tunable Parameters
Simulink PLC Coder parameters are inlined and not tunable by default.
Toconfigureamodeltoenabletunableparametersis:
1Identify the model parametersthatyouwanttobetunable.
2Define these parameters in the MATLAB workspace in one of the following
ways:
Create a Simulink.Parameter object and use either the
Simulink.Parameter command-line interface or Model Explorer to
configure parameters.
Simulink stores Simulink.Parameter objects outside the model. This
action enables you to share Simulink.Parameter objects between
multiple models and work with referenced models.
Use the Configuration Parameters dialog box to define parameters,
then configure tunable parameters in the Configuration
Parameters > Optimization > Signals and Parameters > Model
Parameter Configuration dialog box.
Simulink stores specified global tunable parameters using the
Configuration Parameters dialog box with the model. You specify these
parameter values in the MATLAB base workspace. You cannot share
these parameters between multiple models.
This table lists the possible tunable parameters and how you can set them
using either Simulink.Parameter or the Configuration Parameters dialog
box. When using Simulink.Parameter, enter the entire command without
hyphens.
5-5
5Working with Tunable Parameters in the Simulink®PLC Coder™ Environment
Mapping of Tunable
Parameters in
Generated Code
Simulink.Parameter Configuration Parameter
Dialog Box
Local variables in function
block
Simulink.Parameter.-
StorageClass =
`SimulinkGlobal'
Set Configuration
Parameters > Optimization-
> Signals and Parameters
>ModelParameter
Configuration > Storage
class to SimulinkGlobal
(Auto)
Global variables Simulink.Parameter.-
StorageClass =
'ExportedGlobal'
Simulink.Parameter.-
CoderInfo.CustomStorageClass
= 'Default'
Set Configuration
Parameters > Optimization-
> Signals and Parameters
>ModelParameter
Configuration > Storage
class to ExportedGlobal
Set Configuration
Parameters > Optimization-
> Signals and Parameters
>ModelParameter
Configuration > Storage
type qualifier to empty field
(default)
Global constants Simulink.Parameter.Storage-
Class = 'ExportedGlobal'
Simulink.Parameter.-
CoderInfo.CustomStorageClass
= 'Const'
Set Configuration
Parameters > Optimization-
> Signals and Parameters
>ModelParameter
Configuration > Storage
class to ExportedGlobal
Set Configuration
Parameters > Optimization-
> Signals and Parameters
>ModelParameter
5-6
Configure Tunable Parameters for Your Model
Mapping of Tunable
Parameters in
Generated Code
Simulink.Parameter Configuration Parameter
Dialog Box
Configuration > Storage
type qualifier to const
Externally defined
variable
Simulink.Parameter.-
StorageClass =
'ImportedExtern'
Set Configuration
Parameters > Optimization-
> Signals and Parameters
>ModelParameter
Configuration > Storage
class to ImportedExtern
5-7
5Working with Tunable Parameters in the Simulink®PLC Coder™ Environment
Identify Tunable Parameters
The model my_plcdemo_tunable_params shows how to configure tunable
parameters. This model is the same as the plcdemo_tunable_params and
plcdemo_tunable_params_slparamobj example models. The difference is
that the example model already has the tunable parameters configured.
Note The coder does not support tuning parameters of bus data type.
1IntheMATLABCommandWindow,createamodeltolooklikethe
following.
2Select the Sum, Gain, and Unit Delay blocks and create an atomic
subsystem with inputs U, U1, and U2 and outputs Y, Y1, and Y2. Rename
the Subsystem block as SimpleSubystem. When you are finished, the top
model and atomic subsystem model look like the following model:
5-8
Identify Tunable Parameters
3Save this subsystem as my_plcdemo_tunable_params.
4Double-click SimpleSubsystem.
5-9
5Working with Tunable Parameters in the Simulink®PLC Coder™ Environment
5The three Gain blocks have the constants that you want to make tunable:
K1,K2,andK3.
Next, define these parameters in the MATLAB workspace.
If you want to use Simulink.Parameter objects, and use either the
Simulink.Parameter command-line interface or Model Explorer to
configure parameters, see “Tune Parameters Using Simulink.Parameter
Objects” on page 5-12.
5-10
Identify Tunable Parameters
If you want to use the Configuration Parameters dialog box, see
“Defining Tunable Parameter Values in the MATLAB Workspace
on page 5-17. Use the Configuration Parameters dialog box to define
parameters, then configure tunable parameters in the Configuration
Parameters > Optimization > Signals and Parameters > Model
Parameter Configuration dialog box.
5-11
5Working with Tunable Parameters in the Simulink®PLC Coder™ Environment
Tune Parameters Using Simulink.Parameter Objects
In this section...
“Work Directly with Simulink.Parameter Objects” on page 5-12
“Work with Simulink.Parameter Objects Using Model Explorer” on page
5-15
Work Directly with Simulink.Parameter Objects
This topic describes how to define tunable parameters in the MATLAB
workspace using a MATLAB script that works with Simulink.Parameter
objects.
Note Alternatively, you can use the Model Explorer to create constants as
Simulink.Parameter and define them. For more information, see “Work with
Simulink.Parameter Objects Using Model Explorer” on page 5-15.
You must have already created the my_plcdemo_tunable_params model or
opened plcdemo_tunable_params or plcdemo_tunable_params_slparamobj
and identified the parameters for tuning. If you have not yet done so, see
“Identify Tunable Parameters” on page 5-8.
1In the MATLAB base workspace, create a script that defines tunable
parameters. In the MATLAB Command Window, create a MATLAB file,
such as setup_tunable_params.m, that contains the following code. This
script creates the constants K1,K2,andK3 as Simulink.Parameter objects,
assigns values, and sets the storage class for these constants.
% define tunable parameters in base workspace as
% Simulink.Parameter objects
% tunable parameter mapped to local variable
K1 = Simulink.Parameter;
K1.Value = 0.1;
K1.StorageClass = 'SimulinkGlobal';
5-12
Tune Parameters Using Simulink.Parameter Objects
% tunable parameter mapped to global variable
K2 = Simulink.Parameter;
K2.Value = 0.2;
K2.StorageClass = 'ExportedGlobal';
K2.CoderInfo.CustomStorageClass = 'Default';
% tunable parameter mapped to global const
K3 = Simulink.Parameter;
K3.Value = 0.3;
K3.StorageClass = 'ExportedGlobal';
K3.CoderInfo.CustomStorageClass = 'Const';
2In the my_plcdemo_tunable_params model, select File > Model
Properties > Model Properties.
3In the Model Properties dialog box, on the Callbacks pane, select
PreLoadFcn.
4To run the script at model load time, enter the name of the script that you
created, for example, setup_tunable_params.
5-13
5Working with Tunable Parameters in the Simulink®PLC Coder™ Environment
5Click Apply.
6In the Callbacks pane, select CloseFcn.
7In the Model close function pane, enter the clear command to clear
these constants. For example:
clear K1 K2 K3;
5-14
Tune Parameters Using Simulink.Parameter Objects
When you close the model, this command clears these constants from the
MATLAB workspace.
8Click Apply,thenOK.
9In the MATLAB Command Window, you can change the parameter values
using the Simulink.Parameter.Value field.
10 When you are done, save the model, and generate and inspect the code.
Work with Simulink.Parameter Objects Using Model
Explorer
This topic describes how to define tunable parameters in the MATLAB
workspace using the Model Explorer. Within the Model Explore, you can
create constants as Simulink.Parameter objects and tune the parameters.
5-15
5Working with Tunable Parameters in the Simulink®PLC Coder™ Environment
Note Alternatively, you can use the Simulink.Parameter object
command-line interface to create constants and define them. For more
information, see “Work Directly with Simulink.Parameter Objects” on page
5-12.
1In the Simulink editor window, select View > Model Explorer.
In the MATLAB Command Window, create a MATLAB file, such as
setup_tunable_params.m, that contains the following code. This script
creates the constants K1,K2,andK3 as Simulink.Parameter objects,
assigns values, and sets the storage class for these constants.
2In the Model Hierarchy pane, select Base Workspace.
The Contents pane is updated with the contents of the MATLAB base
workspace.
3To create a new Simulink.Parameter object, select Add > Simulink
Parameter.
4In the Dialog pane for the Simulink.Parameter object, edit the Storage
class and Value parameters. Click Apply to save changes.
5When you are done, save the model, and generate and inspect the code.
For more information about using the Model Explorer to work with data
objects, see “Using the Model Explorer to Create Data Objects”.
5-16
Configure Tunable Parameters Using Configuration Parameters
Configure Tunable Parameters Using Configuration
Parameters
In this section...
“Defining Tunable Parameter Values in the MATLAB Workspace” on page
5-17
“Configuring Parameters to Be Tunable” on page 5-19
Defining Tunable Parameter Values in the MATLAB
Workspace
This topic describes how to define tunable parameter values in the MATLAB
workspace using the Simulink Model Properties dialog box. Defining tunable
parameters in this way enables the model to automatically define parameters
each time that you open the model.
You must have already created the my_plcdemo_tunable_params model or
opened plcdemo_tunable_params and identified the parameters for tuning. If
you have not yet done so, see “Identify Tunable Parameters” on page 5-8.
1In the my_plcdemo_tunable_params model, select File > Model
Properties > Model Properties.
2In the Model Properties dialog box, on the Callbacks pane, select
PreLoadFcn.
3In the Model pre-load function pane, enter the three constants K1,K2,
and K3. Assign initial values to them. For example:
K1 = 0.1;
K2 = 0.2;
K3 = 0.3;
5-17
5Working with Tunable Parameters in the Simulink®PLC Coder™ Environment
4Click Apply.
5In the Callbacks pane, select CloseFcn.
6In the Model close function pane, enter the clear command to clear
these constants. For example:
clear K1 K2 K3;
5-18
Configure Tunable Parameters Using Configuration Parameters
When you close the model, this command clears these constants from the
MATLAB workspace.
7Click Apply,thenOK.
Your next task is to configure these parameters to be tunable. See
“Configuring Parameters to Be Tunable” on page 5-19.
Configuring Parameters to Be Tunable
This topic describes how to configure parameters to be tunable using the
Simulink Configuration Parameters dialog box.
You must have already created the my_plcdemo_tunable_params model or
opened plcdemo_tunable_params and defined the parameters for tuning. If
5-19
5Working with Tunable Parameters in the Simulink®PLC Coder™ Environment
you have not yet done so, see “Defining Tunable Parameter Values in the
MATLAB Workspace” on page 5-17.
You must already be familiar with the tunable parameter properties on the
Global (tunable) parameters pane. For more information, see Setting
Tunable Parameter Properties in the Simulink Coder™ documentation.
This example uses code generated with CoDeSys Version 2.3.
1In the model, right-click SimpleSubsystem and select PLC
Code > Options.
2Navigate to Optimization > Signals and Parameters.
3In the Simulation and code generation section, select the Inline
parameters check box. (This check box is cleared by default.)
4Click Configure.
5-20
Configure Tunable Parameters Using Configuration Parameters
5In the Model Parameter Configuration dialog box, from the Source list,
select Referenced workspace variables.
6Use the Ctrl key to select all the parameters and click Add to table >> to
add them to the Global (tunable) parameters table.
5-21
5Working with Tunable Parameters in the Simulink®PLC Coder™ Environment
By default, this dialog box sets all parameters to the SimulinkGlobal
(Auto) storage class. This setting generates code with the tunable
parameters set at the local level. In this case, these parameters appear at
the function block level in each function block that uses the parameter.
You can also optionally set the storage type qualifier for a parameter to
const.
7Click Apply and OK.
8In the Configuration Parameters dialog box, navigate to PLC
Code > General options.
9Select the Target IDE and Output Directory settings, then click
Generate code.
10 Observe that the VAR section of Function Block SimpleSubsystem defines
K1,K2,andK3.
5-22
Configure Tunable Parameters Using Configuration Parameters
11 Toconfigureaparametertobeaglobalvariableinthegeneratedcode,set
the parameter storage class of K2 to ExportedGlobal. Leave the storage
type qualifier unset.
Some target IDEs do not support the access of global variables. In this case,
the Simulink PLC Coder software uses SimulinkGlobal as the automatic
storage class.
To configure a parameter to be a global constant in the generated code, set
the parameter storage class of K3 to ExportedGlobal. Set storage type
qualifier to const.
12 Click Apply and OK, then rebuild the code.
13 Observe that K2 is now in the VAR_GLOBAL section. K3 is in the
VAR_GLOBAL_CONSTANT section.
5-23
5Working with Tunable Parameters in the Simulink®PLC Coder™ Environment
14 To configure a parameter so that you or somebody else can provide it
through external structured text, set the parameter storage class of K1 to
ImportedExtern. The coder does not generate a variable declaration for
theparameterinthecode. Leavethestoragetypequalifierunset.
15 Click Apply and OK, then rebuild the code.
16 Observe that K1 no longer appears in the VAR section of the generated
code. (ComparetoStep10.)
Note The Simulink PLC Coder software does not support setting the
parameter storage class to ImportedExternPointer.Ifyousetthe
parameter to this value, the software treats it the same as ImportedExtern.
5-24
6
Controlling Generated Code
Partitions
6Controlling Generated Code Partitions
Function Block Partitions
In this section...
“Function Block Partitioning Guidelines” on page 6-2
“One Function Block for Atomic Subsystems” on page 6-2
“One Function Block for Virtual Subsystems” on page 6-3
“Multiple Function Blocks for Nonvirtual Subsystems” on page 6-4
“Control Generated Code Using Subsystem Block Parameters” on page 6-5
Function Block Partitioning Guidelines
The Simulink PLC Coder software converts subsystems to function block
units according to the following rules:
Generates a function block for the top-level atomic subsystem for which
you generate code.
Generates a function block for an atomic subsystem whose Function
packaging parameter is set to Function or Reusable function.
Inlines generated code from atomic subsystems, whose Function
packaging parameter is set to Inline, into the function block that
corresponds to the nearest ancestor subsystem. This nearest ancestor
cannot be inlined.
These topics use code generated with CoDeSys Version 2.3.
One Function Block for Atomic Subsystems
Thecodeforplcdemo_simple_subsystem is an example of generating code
with one function block. The atomic subsystem for which you generate code
does not contain any other subsystems.
6-2
Function Block Partitions
One Function Block for Virtual Subsystems
The plcdemo_hierarchical_virtual_subsystem example contains an
atomic subsystem that has two virtual subsystems, S1 and S2, inlined. A
virtual subsystem does not have the Treat as atomic unit parameter
selected. When you generate code for the hierarchical subsystem, the code
contains only the FUNCTION_BLOCK HierarchicalSubsystem component.
There are no additional function blocks for the S1 and S2 subsystems.
6-3
6Controlling Generated Code Partitions
Multiple Function Blocks for Nonvirtual Subsystems
The plcdemo_hierarchical_subsystem example contains an atomic
subsystem that has two nonvirtual subsystems, S1 and S2. Virtual subsystems
have the Treat as atomic unit parameter selected. When you generate
code for the hierarchical subsystem, that code contains the FUNCTION_BLOCK
HierarchicalSubsystem,FUNCTION_BLOCK HierarchicalSubsystem_S1,
and FUNCTION_BLOCK HierarchicalSubsystem_S2 components.
6-4
Function Block Partitions
Function Block for Hierarchical Subsystem
Function Block for Hierarchical S2
Function Block for Hierarchical S1
Control Generated Code Using Subsystem Block
Parameters
You can partition generated code using the following Subsystem block
parameters on the Code Generation tab. See the Subsystem block
documentation for details.
Function packaging
Function name options
Leave the File name options set to the default, Auto.
Generating Separate Partitions and Inlining Subsystem Code
Use the Function packaging parametertospecifythecodeformatto
generate for an atomic (nonvirtual) subsystem. The Simulink PLC Coder
software interprets this parameter depending on the setting that you choose:
6-5
6Controlling Generated Code Partitions
Setting Coder Interpretation
Auto Uses the optimal format based on
the type and number of subsystem
instances in the model.
Reusable function,Function Generates a function with arguments
that allows the subsystem code to be
shared by other instances of it in the
model.
Inline Inlines the subsystem
unconditionally.
For example, in the plcdemo_hierarchical_virtual_subsystem,youcan:
Inline the S1 subsystem code by setting Function packaging to Inline.
This setting creates one function block for the parent with the S1 subsystem
inlined.
Create a function block for the S2 subsystem by setting Function
packaging to Reusable function,Auto,orFunction. This setting creates
twofunctionblocks,onefortheparent,oneforS2.
6-6
Function Block Partitions
Changing the Name of a Subsystem
You can use the Function name options parameter to change
thenameofasubsystemfromtheoneontheblocklabel. When
the Simulink PLC Coder generates software, it uses the string you
specify for this parameter as the subsystem name. For example, see
plcdemo_hierarchical_virtual_subsystem:
1Open the S1 subsystem block parameter dialog box.
2If the Treat as atomic unit check box is not yet selected, select it.
3Click the Code Generation tab.
4Set Function packaging to Function.
5Set Function name options to User specified.
6In the Function name field, specify a custom name. For example, type
my_own_subsystem.
6-7
6Controlling Generated Code Partitions
7Save the new settings.
8Generate code for the parent subsystem.
9Observe the renamed function block.
6-8
7
Integrating Externally
Defined Symbols
“Integrate Externally Defined Symbols” on page 7-2
“Integrate Custom Function Block in Generated Code” on page 7-3
7Integrating Externally Defined Symbols
Integrate Externally Defined Symbols
The coder allows you to suppress symbol definitions in the generated code.
This suppression allows you to integrate a custom element, such as user
defined function blocks, function blocks, data types, and named global
variable and constants, in place of one generated from a Simulink subsystem.
You must then provide these definitions when importing the code into the
target IDE. You must:
Define the custom element in the subsystem for which you want to generate
code.
Name the custom element.
In the Configuration Parameters dialog box, add the name of the custom
element to PLC Code Generation > Symbols > Externally Defined
Symbols in the Configuration Parameters dialog box.
Generate code.
For a description of how to integrate a custom function block, see “Integrate
Custom Function Block in Generated Code” on page 7-3. For a description
of the Externally Defined Symbols parameter, see “Externally Defined
Symbols” on page 12-25.
7-2
Integrate Custom Function Block in Generated Code
Integrate Custom Function Block in Generated Code
To integrate a custom function block, ExternallyDefinedBlock, this procedure
uses the example plcdemo_external_symbols.
1In a Simulink model, add a MATLAB Function block.
2Double-click the MATLAB Function block.
3In the MATLAB editor, minimally define inputs, outputs, and stubs. For
example:
function Y = fcn(U,V)
% Stub behavior for simulation. This block
% is replaced during code generation
Y=U+V;
4Change the MATLAB Function block name to ExternallyDefinedBlock.
5Create a subsystem from this MATLAB Function block.
6Complete the model to look like plcdemo_external_symbols.
7-3
7Integrating Externally Defined Symbols
7Open the Configuration Parameters dialog box for the model.
8Add ExternallyDefinedBlock to PLC Code
Generation > Symbols > Externally Defined Symbols.
9The plcdemo_external_symbols model also suppresses K1 and InBus.Add
these symbol names to the Externally Defined Symbols field, separated
by spaces. For other settings, see the plcdemo_external_symbols model.
7-4
Integrate Custom Function Block in Generated Code
10 Save and close your new model. For example, save it as
plcdemo_external_symbols_mine.
11 Generate code for the model.
12 In the generated code, look for instances of ExternallyDefinedBlock.
The reference of ExternallyDefinedBlock is:
The omission of ExternallyDefinedBlock is:
7-5
7Integrating Externally Defined Symbols
7-6
8
IDE-Specific Considerations
“Rockwell Automation RSLogix Considerations” on page 8-2
“Siemens SIMATIC STEP 7 Considerations” on page 8-4
8IDE-Specific Considerations
Rockwell Automation RSLogix Considerations
This topic describes the considerations to remember for this target IDE
platform.
Add-On Instruction and Function Blocks
The structured text concept of function block exists for Rockwell Automation
RSLogix target IDEs as an Add-On instruction (AOI). The Simulink
PLC Coder software generates AOIs for Add-On instruction format, not
FUNCTION_BLOCK.
Double-Precision Data Types
The Rockwell Automation RSLogix target IDE does not support
double-precision data types. At code generation, the Simulink PLC Coder
converts this data type to single-precision data types in generated code.
Note Design your model to use single-precision data type (single) as much
as possible instead of double-precision data type (double). If you must use
doubles in your model, note that the numerical results produced by the
generated structured text might differ from Simulink results. This difference
is due to double-single conversion in the generated code.
Unsigned Integer Data Types
The Rockwell Automation RSLogix target IDE does not support unsigned
integer data types. At code generation, the Simulink PLC Coder converts this
data type to signed integer data types in generated code.
Note Design your model to use signed integer data types (int8, int16, int32)
as much as possible instead of unsigned integer data types (uint8, uint16,
uint32). Doing so avoids overflow issues that unsigned-to-signed integer
conversions can cause in the generated code.
8-2
Rockwell Automation®RSLogix™ Considerations
Unsigned Fixed-Point Data Types
In the generated code, Simulink PLC Coder converts fixed-point data types to
target IDE integer data types. Because the Rockwell Automation RSLogix
target IDE does not support unsigned integer data types, do not use unsigned
fixed-point data types in the model. See “Fixed-Point Data Type Limitations”
on page 10-3 for coder limitations for fixed-point data type support.
Enumerated Data Types
The Rockwell Automation RSLogix target IDE does not support enumerated
data types. At code generation, the Simulink PLC Coder converts this data
type to 32–bit signed integer data type in generated code.
8-3
8IDE-Specific Considerations
Siemens SIMATIC STEP 7 Considerations
This topic describes the considerations to remember for this target IDE
platform.
Double-Precision Floating-Point Data Types
The Siemens SIMATIC STEP 7 target IDE does not support double-precision
floating-point data types. At code generation, the Simulink PLC Coder
converts this data type to single-precision real data types in generated code.
Note Design your model to use single-precision floating-point data type
(single) as much as possible instead of double-precision floating-point data
type (double). If you must use double-precision floating-point data types in
your model, the numerical results produced by the generated structured text
might differ from Simulink results. Design your model so that the possible
precision loss of numerical results of the generated code does not changethe
expected semantics of the model.
int8 and Unsigned Integer Types
The Siemens SIMATIC STEP 7 SCL language does not support int8 and
unsigned integer data types. At code generation, the Simulink PLC Coder
converts int8 and unsigned integer data types to int16 or int32 in generated
code.
Note Designyourmodeltouseint16andint32datatypesasmuchas
possible instead of int8 or unsigned integer data types. If you must use
int8 or unsigned integers, the numerical results produced by the generated
structured text might differ from Simulink results. Design your model so that
effects of integer data type conversion of the generated code do not change
the expected semantics of the model.
Unsigned Fixed-Point Data Types
In the generated code, Simulink PLC Coder converts fixed-point data types
to target IDE integer data types. Because the Siemens SIMATIC STEP 7
8-4
Siemens®SIMATIC®STEP®7 Considerations
target IDE does not support unsigned integer data types, do not use unsigned
fixed-point data types in the model. See “Fixed-Point Data Type Limitations”
on page 10-3 for coder limitations for fixed-point data type support.
Enumerated Data Types
The Siemens SIMATIC STEP 7 target IDE does not support enumerated data
types. At code generation, the Siemens SIMATIC STEP 7 converts this data
type to 16–bit signed integer data type in generated code.
8-5
8IDE-Specific Considerations
8-6
9
Supported Simulink and
Stateflow Blocks
“Simulink Blocks” on page 9-2
“Stateflow Blocks” on page 9-12
9Supported Simulink®and Stateflow®Blocks
Simulink Blocks
To access a Simulink library of blocks that the Simulink PLC Coder software
supports, in the MATLAB Command Window, type plclib.
Additional Math & Discrete/Additional Discrete
Transfer Fcn Direct Form II
Transfer Fcn Direct Form II Time Varying
Unit Delay Enabled
Unit Delay Enabled External IC
Unit Delay Enabled Resettable
Unit Delay Enabled Resettable External IC
Unit Delay External IC
Unit Delay Resettable
Unit Delay Resettable External IC
Unit Delay With Preview Enabled
Unit Delay With Preview Enabled Resettable
Unit Delay With Preview Enabled Resettable External RV
Unit Delay With Preview Resettable
Unit Delay With Preview Resettable External RV
Commonly Used Blocks
Inport
Bus Creator
9-2
Simulink®Blocks
Bus Selector
Constant
Data Type Conversion
Demux
Discrete-Time Integrator
Gain
Ground
Logical Operator
Mux
Product
Relational Operator
Saturation
Scope
Subsystem
Inport
Outport
Sum
Switch
Terminator
Unit Delay
9-3
9Supported Simulink®and Stateflow®Blocks
Discontinuities
Coulomb and Viscous Friction
Dead Zone Dynamic
Rate Limiter
Rate Limiter Dynamic
Relay
Saturation
Saturation Dynamic
Wrap To Zero
Discrete
Difference
Discrete Transfer Fcn
Discrete Derivative
Discrete FIR Filter
Discrete Filter
PID Controller
PID Controller (2 DOF)
Discrete State-Space
Discrete-Time Integrator
Integer Delay
9-4
Simulink®Blocks
Memory
Tapped Delay
Transfer Fcn First Order
Transfer Fcn Lead or Lag
Transfer Fcn Real Zero
Unit Delay
Zero-Order Hold
Logic and Bit Operations
Bit Clear
Bit Set
Bitwise Operator
CompareToConstant
Compare To Zero
Detect Change
Detect Decrease
Detect Increase
Detect Fall Negative
Detect Fall Nonpositive
Detect Rise Nonnegative
Detect Rise Positive
9-5
9Supported Simulink®and Stateflow®Blocks
Extract Bits
Interval Test
Interval Test Dynamic
Logical Operator
Shift Arithmetic
Lookup Tables
Dynamic-Lookup
Interpolation Using Prelookup
PreLookup
n-D Lookup Table
Math Operations
Abs
Add
Assignment
Bias
Divide
Dot Product
Gain
Math Function
Matrix Concatenate
9-6
Simulink®Blocks
MinMax
MinMax Running Resettable
Permute Dimensions
Polynomial
Product
Product of Elements
Reciprocal Sqrt
Reshape
Rounding Function
Sign
Slider Gain
Sqrt
Squeeze
Subtract
Sum
Sum of Elements
Trigonometric Function
Unary Minus
Vector Concatenate
9-7
9Supported Simulink®and Stateflow®Blocks
Model Verification
Assertion
Check Discrete Gradient
Check Dynamic Gap
Check Dynamic Range
Check Static Gap
Check Static Range
Check Dynamic Lower Bound
Check Dynamic Upper Bound
Check Input Resolution
Check Static Lower Bound
Check Static Upper Bound
Model-Wide Utilities
DocBlock
Model Info
Ports & Subsystems
Atomic Subsystem
CodeReuse Subsystem
Enabled Subsystem
Enable
9-8
Simulink®Blocks
Function-Call Subsystem
Subsystem
Inport
Outport
Signal Attributes
Data Type Conversion
Data Type Duplicate
Signal Conversion
Signal Routing
Bus Assignment
Bus Creator
Bus Selector
Demux
From
Goto
Goto Tag Visibility
Index Vector
Multiport Switch
Mux
Selector
9-9
9Supported Simulink®and Stateflow®Blocks
Sinks
Display
Floating Scope
Scope
Stop Simulation
Terminator
To File
To Workspace
XY Graph
Sources
Constant
Counter Free-Running
Counter Limited
Enumerated Constant
Ground
Pulse Generator
Repeating Sequence Interpolated
Repeating Sequence Stair
User-Defined Functions
MATLAB Function
9-10
Simulink®Blocks
Fcn
9-11
9Supported Simulink®and Stateflow®Blocks
Stateflow Blocks
The code supports the following Stateflow blocks.
Stateflow
CChart
MATLAB Chart
State Transition Table
Truth Table
9-12
10
Limitations
“Coder Limitations” on page 10-2
“Block Restrictions” on page 10-6
10 Limitations
Coder Limitations
In this section...
“Current Limitations” on page 10-2
“Fixed-Point Data Type Limitations” on page 10-3
“Permanent Limitations” on page 10-5
Current Limitations
The Simulink PLC Coder software does not support the following Simulink
semantics:
Complex data types
Model reference
Global data store memory (DSM)
Absolute time temporal logic in Stateflow charts
Note Absolute time temporal logic is supported for only the Rockwell
Automation RSLogix 5000 IDE.
Stateflow machine-parented data and events
Exported graphical functions in Stateflow charts
Limited support for math functions. The coder does not support the
following functions: tanh,cosh,sinh,rand.
Merge block
Multi-rate models
Signal and state storage classes
Virtual buses at the input ports of the top-level Atomic Subsystem block.
For Each Subsystem block
Variable-size signals
10-2
Coder Limitations
Nonfinite data, for example NaN or Inf.
Fixed-Point Data Type Limitations
Simulink PLC Coder software supports the fixed-point data type. To generate
code for fixed-point data types, configure block and model parameters as
described in this topic.
Note If you do not configure the blocks and models as directed, the generated
structured text might:
Not compile.
Compile, but return results that differ from the simulation results.
Block Parameters
Properly configure block parameters:
1If the block in the subsystem has a Signal Attributes tab, navigate to
that tab.
2For the Integer rounding mode parameter, select Round.
3Clear the Saturate on integer overflow check box.
4For the Output data type parameter, select a fixed-point data type.
5Click the Data Type Assistant button.
6For the Word length parameter, enter 8,16,or32.
7For the Mode parameter, select Fixed point.
8For the Scaling parameter, select Binary point.
10-3
10 Limitations
9Click OK.
Be sure to edit the model configuration parameters (see “Model Configuration
Parameters” on page 10-4).
Model Configuration Parameters
Properly configure model configuration parameters:
1In model Configuration Parameters dialog box, click the Hardware
Implementation node.
2For theDevice vendor parameter, select Generic.
3For the Device type, select Custom.
4For the Signed integer division rounds to, select Zero.
5For the Number of bits,setchar to 16.
10-4
Coder Limitations
Permanent Limitations
The structured text language has inherent restrictions. As a result, the
Simulink PLC Coder software has the following restrictions:
The Simulink PLC Coder software supports generating code only for
atomic subsystems.
No blocks that require continuous time semantics. This restriction includes
continuous integrators, zero-crossing blocks, physical modeling blocks,
and so on.
No pointer data types.
No recursion (including recursive events).
10-5
10 Limitations
Block Restrictions
In this section...
“Simulink Block Support Exceptions” on page 10-6
“Stateflow Chart Exceptions” on page 10-6
“Reciprocal Sqrt Block” on page 10-7
“Lookup Table Blocks” on page 10-7
Simulink Block Support Exceptions
The Simulink PLC Coder software supports the plclib blocks with the
following exceptions. Also, see “Coder Limitations” on page 10-2 for a list of
limitations of the software.
If you get unsupported fixed-point type messages during code generation,
update the block parameter. Open the block parameter dialog box. Navigate
to the Signal Attributes and Parameter Attributes tabs. Check that the
Output data type and Parameter data type parameters are not Inherit:
Inherit via internal rule. Set these parameters to either Inherit:
Same as input or a desired non-fixed-point data type, such as double or int8.
Stateflow Chart Exceptions
If you receive a message about consistency between the original subsystem
and the S-function generated from the subsystem build, and the model
contains a Stateflow chart that contains one or more Simulink functions, use
thefollowingproceduretoaddresstheissue:
1Open the model and double-click the Stateflow chart that causes the issue.
The chart Stateflow Editor dialog box is displayed.
2Right-click in this dialog box.
3In the context-sensitive menu, select Properties.
The Chart dialog box is displayed.
10-6
Block Restrictions
4In the Chart dialog box, navigate to the States When Enabling parameter
and select Held.
5Click Apply and OK and save the model.
Reciprocal Sqrt Block
The Simulink PLC Coder software does not support the Simulink Reciprocal
Sqrt block signedSqrt and rSqrt functions.
Lookup Table Blocks
Simulink PLC Coder has limited support for lookup table blocks. The coder
does not support:
Number of dimensions greater than 2
Cubic spline interpolation method
Begin index search using a previous index mode
Cubic spline extrapolation method
Note The Simulink PLC Coder software does not support the
Simulink Lookup Table Dynamic block. For your convenience, the
plclib/Simulink/Lookup Tables library contains an implementation of a
dynamic table lookup block using the Prelookup and Interpolation Using
Prelookup blocks.
10-7
10 Limitations
10-8
11
Functions — Alphabetical
List
plccoderdemos
Purpose Product examples
Syntax plccoderdemos
Description plccoderdemos displays the Simulink PLC Coder examples.
Examples Display Simulink PLC Coder examples.
plccoderdemos
See Also plcopenconfigset
11-2
plccoderpref
Purpose Manage user preferences
Syntax plccoderpref
plccoderpref('plctargetide')
plccoderpref('plctargetide', preference_value)
plccoderpref('plctargetide', 'default')
plccoderpref('plctargetidepaths')
plccoderpref('plctargetidepaths','default')
Description plccoderpref displays the current set of user preferences, including
the default target IDE.
plccoderpref('plctargetide') returns the current default target
IDE. This default can be the target IDE set previously, or the factory
default. The factory default is 'codesys23'.
plccoderpref('plctargetide', preference_value)sets the default
target IDE to the one that you specify in preference_value.This
command sets the preference_value to persist as the default target
IDE for all future MATLAB sessions.
plccoderpref('plctargetide', 'default') sets the default target
IDE to the factory default target IDE ('codesys23').
plccoderpref('plctargetidepaths') returns a 1-by-1 structure of
the installation paths of all supported target IDEs.
plccoderpref('plctargetidepaths','default') sets the contents of
the 1-by-1 structure of the installation paths to the default values.
Tips Use the Simulink Configuration Parameters dialog box to change the
installation path of a target IDE (Target IDE Path).
Input
Arguments
plctargetide
String directive that specifies the default target IDE.
11-3
plccoderpref
Value Description
codesys23 3S-Smart Software Solutions CoDeSys
Version 2.3 (default) target IDE
codesys33 3S-Smart Software Solutions CoDeSys
Version 3.3 target IDE
brautomation30 B&R Automation Studio 3.0 target
IDE
twincat211 Beckhoff TwinCAT 2.11 target IDE
multiprog50 KW-Software MULTIPROG 5.0 target
IDE
pcworx60 Phoenix Contact PC WORX 6.0
rslogix5000 Rockwell Automation RSLogix 5000
Series target IDE for AOI format
rslogix5000_routine Rockwell Automation RSLogix 5000
Series target IDE for routine format
step7 Siemens SIMATIC STEP 7 Version 5
target IDE
plcopen PLCopen XML target IDE
generic Generic target IDE
Default: codesys23
plctargetidepaths
String that specifies the target IDE installation path. Contains a 1-by-1
structure of the installation paths of all supported target IDEs.
codesys23: 'C:\Program Files\3S Software'
codesys33: 'C:\Program Files\3S CoDeSys'
rslogix5000: 'C:\Program Files\Rockwell Software'
rslogix5000_routine: 'C:\Program Files\Rockwell Software'
brautomation30: 'C:\Program Files\BrAutomation'
11-4
plccoderpref
multiprog50: 'C:\Program Files\KW-Software\MULTIPROG 5.0'
pcworx60: 'C:\Program Files\Phoenix Contact\Software Suite 150'
step7: 'C:\Program Files\Siemens'
plcopen: ''
twincat211: 'C:\TwinCAT'
generic: ''
default
String that sets your preferences to the factory default.
Examples Return the current default target IDE.
plccoderpref('plctargetide')
Set rslogix5000 as the new default target IDE.
plccoderpref('plctargetide', 'rslogix5000')
Assume that you have previously changed the installation path of the
CoDeSys 2.3 target IDE. Return the current target IDE installation
paths.
codesys23: 'C:\Program Files2\3S-Software\CoDeSys\v2.3
codesys33: 'C:\Program Files\3S CoDeSys'
rslogix5000: 'C:\Program Files\Rockwell Software'
rslogix5000_routine: 'C:\Program Files\Rockwell Software'
brautomation30: 'C:\Program Files\BrAutomation'
multiprog50: 'C:\Program Files\KW-Software\MULTIPROG 5.0'
pcworx60: 'C:\Program Files\Phoenix Contact\Software Suite 150'
step7: 'C:\Program Files\Siemens'
plcopen: ''
twincat211: 'C:\TwinCAT'
generic: ''
11-5
plccoderpref
Set the installation path of all the target IDEs, including CoDeSys 2.3,
to factory default.
» plccoderpref('plctargetidepaths','default')
ans =
codesys23: 'C:\Program Files\3S Software'
codesys33: 'C:\Program Files\3S CoDeSys'
rslogix5000: 'C:\Program Files\Rockwell Software'
rslogix5000_routine: 'C:\Program Files\Rockwell Software'
brautomation30: 'C:\Program Files\BrAutomation'
multiprog50: 'C:\Program Files\KW-Software\MULTIPROG 5.0'
pcworx60: 'C:\Program Files\Phoenix Contact\Software Suite 150'
step7: 'C:\Program Files\Siemens'
plcopen: ''
twincat211: 'C:\TwinCAT'
generic: ''
11-6
plcgeneratecode
Purpose Generate structured text for subsystem
Syntax generatedfiles = plcgeneratecode(subsystem)
Description generatedfiles = plcgeneratecode(subsystem)generates
structured text for the specified atomic subsystem in a model.
subsystem is the fully qualified path name of the atomic subsystem.
generatedfiles is a cell array of the generated file names. You must
first load or start the model.
Examples Generate code for the subsystem,
plcdemo_simple_subsystem/SimpleSubsystem.
plcdemo_simple_subsystem
generatedfiles = plcgeneratecode('plcdemo_simple_subsystem/SimpleSubsystem')
See Also plcopenconfigset
11-7
plcopenconfigset
Purpose Open Configuration Parameters dialog box for subsystem
Syntax plcopenconfigset(subsystem)
Description plcopenconfigset(subsystem)opens the Configuration Parameters
dialog box for the specified atomic subsystem in the model. subsystem is
the fully qualified path name of the atomic subsystem.
Examples Open the Configuration Parameters dialog box for the subsystem,
plcdemo_simple_subsystem/SimpleSubsystem.
plcdemo_simple_subsystem
plcopenconfigset('plcdemo_simple_subsystem/SimpleSubsystem')
See Also plcgeneratecode
11-8
12
Configuration Parameters
for Simulink PLC Coder
Models
“PLC Coder: General” on page 12-2
“PLC Coder: Comments” on page 12-10
“PLC Coder: Optimization” on page 12-15
“PLC Coder: Symbols” on page 12-20
“PLC Coder: Report” on page 12-26
12 Configuration Parameters for Simulink®PLC Coder™ Models
PLC Coder: General
In this section...
“PLC Coder: General Tab Overview” on page 12-3
“Target IDE” on page 12-4
“Target IDE Path” on page 12-6
“Code Output Directory” on page 12-8
“Generate testbench for subsystem” on page 12-9
12-2
PLC Coder: General
PLC Coder: General Tab Overview
Set up general information about generating structured text code to download
to target PLC IDEs.
Configuration
To enable the Simulink PLC Coder options pane, you must:
1Create a model.
2Add either an Atomic Subsystem block, or a Subsystem block for which you
have selected the Treat as atomic unit check box.
3Right-click the subsystem block and select PLC Code > Options.
Tip
In addition to configuring parameters for the Simulink PLC Coder model, you
can also use this dialog box to generate structured text code and test bench
code for the Subsystem block.
See Also
“Prepare Model for Structured Text Generation” on page 1-11
“Generate Structured Text from the Model Window” on page 1-19
12-3
12 Configuration Parameters for Simulink®PLC Coder™ Models
Target IDE
SelectthetargetIDEinwhichtogeneratecode.
Settings
Default: 3S CoDeSys 2.3
3S CoDeSys 2.3
Generates structured text (IEC 61131) code for 3S-Smart Software
Solutions CoDeSys Version 2.3.
3S CoDeSys 3.3
Generates structured text code in PLCopen XML for 3S-Smart Software
Solutions CoDeSys Version 3.3.
B&R Automation Studio 3.0
Generates structured text code for B&R Automation Studio 3.0.
Beckhoff TwinCAT 2.11
Generates structured text code for Beckhoff TwinCAT 2.11 software.
KW-Software MULTIPROG 5.0
Generates structured text code in PLCopen XML for KW-Software
MULTIPROG®5.0.
Phoenix Contact PC WORX 6.0
Generates structured text code in PLCopen XML for Phoenix Contact
PC WORX 6.0.
Rockwell RSLogix 5000: AOI
Generates structured text code for Rockwell Automation RSLogix 5000
using Add-On Instruction (AOI) constructs.
Rockwell RSLogix 5000: Routine
Generates structured text code for Rockwell Automation RSLogix 5000
routine constructs.
Siemens SIMATIC Step 7 5.4
Generates structured text code for Siemens SIMATIC STEP 7 5.4.
Generic
Generates a pure structured text file. If the target IDE that you want is
not available for the Simulink PLC Coder product, consider generating
and downloading a generic structured text file.
12-4
PLC Coder: General
PLCopen XML
Generates structured text code formatted using PLCopen XML
standard.
Tip
Rockwell Automation RSLogix 5000 routines represent the model hierarchy
using hierarchical user-defined types (UDTs). UDT types preserve model
hierarchy in the generated code.
The coder generates code for reusable subsystems as separate routine
instances. These subsystems access instance data in program tag fields.
Command-Line Information
Parameter: PLC_TargetIDE
Type: string
Value: 'codesys23' |'codesys33' |'rslogix5000' |
'rslogix5000_routine' |'brautomation30' |'multiprog50' |
'pcworx60' |'step7' |'plcopen' |'twincat211' |'generic'
Default: 'codesys23'
See Also
“Generate Structured Text from the Model Window” on page 1-19
12-5
12 Configuration Parameters for Simulink®PLC Coder™ Models
Target IDE Path
Enter target IDE installation path. The listed path is the factory default
for the Target IDEentry.
Settings
Default: C:\Program Files\3S Software
C:\Program Files\3S Software
Factory default installation path for 3S-Smart Software Solutions
CoDeSys software Version 2.3.
C:\Program Files\3S CoDeSys
Factory default installation path for 3S-Smart Software Solutions
CoDeSys software Version 3.3..
C:\Program Files\BrAutomation
Factory default installation path for B&R Automation Studio 3.0
software.
C:\TwinCAT
Factory default installation path for Beckhoff TwinCAT 2.11 software.
C:\Program Files\KW-Software\MULTIPROG 5.0
Factory default installation path for KW-Software MULTIPROG 5.0
software.
C:\Program Files\Phoenix Contact\Software Suite 150
Factory default installation path for Phoenix Contact PC WORX 6.0
software.
C:\Program Files\Rockwell Software
Factory default installation path for Rockwell Automation RSLogix
5000 software.
C:\Program Files\Siemens
Factory default installation path for Siemens SIMATIC STEP 7 5.4
software.
Tip
The value of this parameter changes when you change the Target IDE
value.
12-6
PLC Coder: General
If you right-click the Subsystem block, the PLC Code > Generate
and Import Code for Subsystem command uses this value to import
generated code.
If your target IDE installation is standard, do not edit this parameter.
Leave it as the default value.
If your target IDE installation is nonstandard, edit this value to specify
the actual installation path.
If you change the path and click Apply, the changed path remains for that
target IDE for other models and between MATLAB sessions. To reinstate
the factory default, use the command:
plccoderpref('plctargetidepaths','default')
Command-Line Information
See plccoderpref.
See Also
“Import Structured Text Code Automatically” on page 1-31
12-7
12 Configuration Parameters for Simulink®PLC Coder™ Models
Code Output Directory
Enter a path to the target folder into which code is generated.
Settings
Default: plcsrc subfolder in your working folder
Command-Line Information
Parameter: PLC_OutputDir
Type: string
Value: './plcsrc'
Default: './plcsrc'
See Also
“Generate Structured Text from the Model Window” on page 1-19
12-8
PLC Coder: General
Generate testbench for subsystem
Specify the generation of test bench code for the subsystem.
Settings
Default: off
On
Enables generation of test bench code for subsystem.
Disables generation of test bench code for subsystems.
Tips
If you right-click the Subsystem block and choose PLC Code > Generate
and Import Code for Subsystem, the software also generates the test
bench for the subsystem, regardless of the setting of the Generate testbench
for subsystem check box.
Dependency
This parameter is disabled if your model has absolute time temporal logic.
Note TheSimulinkPLCCodersoftwaresupportsabsolutetimetemporal
logic in Stateflow charts for the Rockwell Automation RSLogix 5000 IDE.
Command-Line Information
Parameter: PLC_GenerateTestbench
Type: string
Value: 'on' |'off'
Default: 'off'
See Also
“Generate Structured Text from the Model Window” on page 1-19
12-9
12 Configuration Parameters for Simulink®PLC Coder™ Models
PLC Coder: Comments
In this section...
“Comments Overview” on page 12-11
“Include comments” on page 12-11
“Include block description” on page 12-12
“Simulink block / Stateflow object comments” on page 12-13
“Show eliminated blocks” on page 12-14
12-10
PLC Coder: Comments
Comments Overview
Control the comments that the Simulink PLC Coder software automatically
creates and inserts into the generated code.
See Also
“Generate Structured Text from the Model Window” on page 1-19
Include comments
Specify which comments are in generated files.
Settings
Default: on
On
Places comments in the generated files based on the selections in the
Auto generated comments pane.
Off
Omits comments from the generated files.
Command-Line Information
Parameter: PLC_RTWGenerateComments
Type: string
Value:'on' |'off'
Default: 'on'
See Also
“Generate Structured Text from the Model Window” on page 1-19
12-11
12 Configuration Parameters for Simulink®PLC Coder™ Models
Include block description
Specify which block description comments are in generated files.
Settings
Default: on
On
Places comments in the generated files based on the contents of the
block properties General tab.
Off
Omits block descriptions from the generated files.
Command-Line Information
Parameter: PLC_RTWGenerateDescriptions
Type: string
Value: 'on' |'off'
Default:'on'
See Also
“Generate Structured Text from the Model Window” on page 1-19
12-12
PLC Coder: Comments
Simulink block / Stateflow object comments
Specify whether to insert Simulink block and Stateflow object comments.
Settings
Default: on
On
Inserts automatically generated comments that describe block code and
objects. The comments precede that code in the generated file.
Off
Suppresses comments.
Command-Line Information
Parameter: PLC_RTWSimulinkBlockComments
Type: string
Value: 'on' |'off'
Default: 'on'
See Also
“Generate Structured Text from the Model Window” on page 1-19
12-13
12 Configuration Parameters for Simulink®PLC Coder™ Models
Show eliminated blocks
Specify whether to insert eliminated block comments.
Settings
Default: off
On
Inserts statements in the generated code from blocks eliminated as the
result of optimizations (such as parameter inlining).
Off
Suppresses statements.
Command-Line Information
Parameter: PLC_RTWShowEliminatedStatement
Type: string
Value: 'on' |'off'
Default:'off'
See Also
“Generate Structured Text from the Model Window” on page 1-19
12-14
PLC Coder: Optimization
PLC Coder: Optimization
In this section...
“Optimization Overview” on page 12-15
“Signal storage reuse” on page 12-16
“Remove code from floating-point to integer conversions that wraps
out-of-range values” on page 12-18
“Loop unrolling threshold” on page 12-19
Optimization Overview
Select the code generation optimization settings.
See Also
“Generate Structured Text from the Model Window” on page 1-19
12-15
12 Configuration Parameters for Simulink®PLC Coder™ Models
Signal storage reuse
Reuse signal memory.
Settings
Default: on
On
Simulink PLC Coder software reuses memory buffers allocated to store
block input and output signals, reducing the memory requirement of
your real-time program.
Off
Simulink PLC Coder software allocates a separate memory buffer for
each block’s outputs. This allocation makes all block outputs global
and unique, which in many cases significantly increases RAM and
ROM usage.
Tips
This option applies only to signals with storage class Auto.
Signal storage reuse can occur among only signals that have the same
data type.
Clearing this option can substantially increase the amount of memory
required to simulate large models.
Clear this option if you need to:
-Debug a C-MEX S-function.
-Use a Floating Scope or a Display block with the Floating display
option selected to inspect signals in a model that you are debugging.
If Signal storage reuse is enabled and you attempt to use a Floating
Scope or floating Display block to display a signal whose buffer has been
reused, Simulink PLC Coder software opens an error dialog.
Command-Line Information
Parameter:PLC_PLCEnableVarReuse
12-16
PLC Coder: Optimization
Type: string
Value: 'on' |'off'
Default: 'on'
See Also
“Generate Structured Text from the Model Window” on page 1-19
12-17
12 Configuration Parameters for Simulink®PLC Coder™ Models
Remove code from floating-point to integer
conversions that wraps out-of-range values
Enable code removal for efficient casts.
Settings
Default: on
On
Simulink PLC Coder software removes code from floating-point to
integer conversions.
Off
Simulink PLC Coder software does not remove code from floating-point
to integer conversions.
Tips
Use this parameter to optimize code generation.
Command-Line Information
Parameter: PLC_PLCEnableEfficientCast
Type: string
Value: 'on' |'off'
Default: 'on'
See Also
“Generate Structured Text from the Model Window” on page 1-19
12-18
PLC Coder: Optimization
Loop unrolling threshold
Specify the minimum signal or parameter width for which a for loop is
generated.
Settings
Default: 5
Specify the arraysizeatwhichthecodegeneratorbeginstouseafor loop
instead of separate assignment statements to assign values to the elements of
asignalorpa
rameter array.
When there are perfectly nested loops, the code generator uses a for loop if
the product of the loop counts for all loops in the perfect loop nest is greater
than or equal to the threshold.
Command-Line Information
Parameter: PLC_RollThreshold
Type: string
Value: any valid value
Default:'5'
See Also
“Generate Structured Text from the Model Window” on page 1-19
12-19
12 Configuration Parameters for Simulink®PLC Coder™ Models
PLC Coder: Symbols
In thissection...
“Symbols Overview” on page 12-21
“Maximum identifier length” on page 12-22
“Use the same reserved names as Simulation Target” on page 12-23
“Reserved names” on page 12-24
“Externally Defined Symbols” on page 12-25
12-20
PLC Coder: Symbols
Symbols Overview
Select the automatically generated identifier naming rules.
See Also
“Generate Structured Text from the Model Window” on page 1-19
12-21
12 Configuration Parameters for Simulink®PLC Coder™ Models
Maximum identifier length
Specify the maximum number of characters in generated function, type
definition, and variable names.
Settings
Default: 31
Minimum: 31
Maximum: 256
You can use this parameter to limit the number of characters in function, type
definition, and variable names. Many target IDEs have their own restrictions.
The Simulink PLC Coder software complies with target IDE limitations.
Command-Line Information
Parameter: PLC_RTWMaxIdLength
Type: int
Value: 31 to 256
Default: 31
See Also
“Generate Structured Text from the Model Window” on page 1-19
12-22
PLC Coder: Symbols
Use the same reservednamesasSimulationTarget
Specify whether to use the same reserved names as those specified in the
Simulation Target > Symbols pane.
Settings
Default: off
On
Enables using the same reserved names as those specified in the
Simulation Target > Symbols pane pane.
Off
Disables using the same reserved names as those specified in the
Simulation Target > Symbols pane pane.
Command-Line Information
Parameter: PLC_RTWUseSimReservedNames
Type: string
Value: 'on' |'off'
Default:'off'
See Also
“Generate Structured Text from the Model Window” on page 1-19
12-23
12 Configuration Parameters for Simulink®PLC Coder™ Models
Reserved names
Enter the names of variables or functions in the generated code that you do
notwanttobeuse
d.
Settings
Default: ()
This action changes the names of variables or functions in the generated
code to avoid name conflicts with identifiers in custom code. Reserved names
must be shorter than 256 characters.
Tips
Start each reserved name with a letter or an underscore.
Each reserved name must contain only letters, numbers, or underscores.
Separate the reserved names using commas or spaces.
Command-Line Information
Parameter: PLC_RTWReservedNames
Type: string
Value: string
Default: ''
See Also
“Generate Structured Text from the Model Window” on page 1-19
12-24
PLC Coder: Symbols
Externally Defined Symbols
Specify the names of identifiers for which you want to suppress definitions.
Settings
Default: ()
This action suppresses the definition of identifiers, such as those for function
blocks, variables, constants, and user types in the generated code. This
suppression allows the generated code to refer to these identifiers. When
you import the generated code into the PLC IDE, you must provide these
definitions.
Tips
Start each name with a letter or an underscore.
Each name must contain only letters, numbers, or underscores.
Separate the names using spaces.
Command-Line Information
Parameter: PLC_ExternalDefinedNames
Type: string
Value: string
Default: ''
See Also
“Generate Structured Text from the Model Window” on page 1-19
“Integrate Externally Defined Symbols” on page 7-2
Integrating User Defined Function Blocks, Data Types, and
Global Variables into Generated Structured Text
12-25
12 Configuration Parameters for Simulink®PLC Coder™ Models
PLC Coder: Report
In this section...
“Generate traceability report” on page 12-26
“Generate model Web view” on page 12-27
Generate traceability report
Specify whether to create a code generation report.
Settings
Default: off
On
Creates code generation report as HTML file.
Off
Suppresses creation of code generation report.
Command-Line Information
Parameter: PLC_GenerateReport
Type: string
Value: 'on' |'off'
Default: 'off'
SeeAlso
“Generate Structured Text from the Model Window” on page 1-19
12-26
PLC Coder: Report
Generate model Web view
Include the model Web view in the code generation report to navigate
between the code and the model within the same window. You can share your
model and generated code outside of the MATLAB environment. You need
a Simulink Report Generator license to include a Web view of the model in
the code generation report.
Settings
Default: Off
On
Include model Web view in the code generation report.
Off
Omit model Web view in the code generation report.
Command-Line Information
Parameter: PLC_GenerateWebView
Type: string
Value: 'on' |'off'
Default: 'off'
See Also
“Generate Structured Text from the Model Window” on page 1-19
12-27
12 Configuration Parameters for Simulink®PLC Coder™ Models
12-28
Index
A
accessing supported blocks 1-6
atomic subsystems 1-11
B
B&R Automation Studio®1-7
accessing 1-8
basic workflow 1-10
Beckhoff®TwinCAT®1-7
accessing 1-8
before you start 1-11
block parameters 6-5
C
changing name of a subsystem 6-7
Code generation
development process 1-3
CoDeSys 1-7
importing 1-8
compatibility 1-16
configuration parameters
pane 12-3 12-11 12-15 12-21
Create code generation report 12-26
Externally Defined Symbols 12-25
Generate model Web view 12-27
Include block descriptions 12-12
Include comments 12-11
Loop unrolling threshold 12-19
Maximum identifier length: 12-22
Output directory 12-8 to 12-9
Remove code from floating-point to
integer conversions that wraps
out-of-range values 12-18
Reserved names: 12-24
Show eliminated blocks 12-14
Signal storage reuse 12-16
Simulink block / Stateflow object
comments 12-13
Target IDE 12-4
Target IDE Path 12-6
Use the same reserved names as
Simulation Target 12-23
PLC Coder: General 12-2
reference 12-1
configuring parameters to be tunable 5-19
configuring Simulink®models 1-11
configuring tunable parameters 5-2
D
defining tunable parameters in the MATLAB®
workspace 5-12 5-17
E
expected background 1-3
expected users 1-3
F
function block 1-4
generating multiple for nonvirtual
subsystems 6-4
generating one for atomic subsystems 6-2
generating one for virtual subsystems 6-3
partitions 6-2
functions
plccoderdemos 11-2
plccoderpref 11-3
plcgeneratecode 11-7
plcopenconfigset 11-8
G
generated code
controlling with block parameters 6-5
mapping MATLAB®Coder™ subsystems to
function blocks 2-11
mapping reusable code to function blocks 2-5
Index-1
Index
mapping Stateflow®enabled and triggered
subsystems to function blocks 2-7
mapping Stateflow®subsystems to function
blocks 2-9
mapping to function blocks 2-3
partitioning 6-1
generating and examining structured text
code 1-19
generating and importing structured text 3-5
generating code 1-19
MATLAB®interface 1-24
generating separate partitions and inlining
subsystem code 6-5
generating structured text code 1-19
generating test bench code 3-1
glossary 1-4
I
IDE platforms
supported 1-7
identifying tunable parameters 5-8
IEC 61131-3 1-4
K
KW-Software MULTIPROG®
accessing 1-8
L
limitations 10-1
M
mapping Simulink®semantics 2-2
N
nonvirtual subsystems 6-4
P
partitioning
controlling generated code with subsystem
block parameters 6-5
generated code 6-1
multiple function block for nonvirtual
subsystems 6-4
one function block for atomic subsystems 6-2
one function block for virtual subsystems 6-3
platforms 1-7
PLC Coder: General
configuration parameters 12-2
plccoderdemos function 11-2
plccoderpref function 11-3
plcgeneratecode 1-24
plcgeneratecode function 11-7
PLCopen 1-4
plcopenconfigset 1-24
plcopenconfigset function 11-8
R
related products 1-5
requirements 1-5
Rockwell Automation®RSLogix™ 1-7
accessing 1-9
considerations 8-2
double-precision data types 8-2
enumerated integer data types 8-3
unsigned fixed-point data types 8-3
unsigned integer data types 8-2
S
Siemens®SIMATIC®STEP®7
accessing 1-9
considerations 8-4
double-precision floating-point data
types 8-4
enumerated integer data types 8-5
Index-2
Index
int8 and unsigned integer data types 8-4
Siemens®SIMATIC®STEP®7
unsigned fixed-point data types 8-4
Simulink®
semantics 2-2
Simulink®PLC Coder™
limitations 10-1
structured text 1-4
subsystem block parameters 6-5
subsystems
atomic 1-11
supported blocks
accessing 1-6
supported IDE platforms 1-7
system requirements 1-4
T
target platforms 1-7
test bench code
generating 3-1
Treat as atomic unit 1-11
tunable parameters
about 5-2
configuring 5-2
identifying 5-8
MATLAB®workspace 5-12 5-17
U
useful terms 1-4
V
virtual subsystems 6-3
W
working with generated structured text 3-2
Index-3

Navigation menu