Function Element Call - Specify function call to be issued via invoking function port - Simulink (original) (raw)
Specify function call to be issued via invoking function port
Since R2022a
Libraries:
Simulink / Ports & Subsystems
Description
The Function Element Call block allows a Function Caller block in a referenced model to call a Simulink® function in another referenced model. The Function Element Call block, when placed at the root level of a model referenced by aModel block, creates an invoking function port in theModel block. When the invoking function port is connected to an exporting function port of another Model block, a Function Caller block in the Model block can issue function calls to Simulink functions in that other Model block and receive return values through the respective function ports of the Model blocks.
By using multiple Function Element Call blocks, multiple Function Caller blocks in a referenced model can issue function calls through a single invoking function port. All Function Element Call blocks that use the same port share a dialog box. A model can have more than one invoking function port.
A Function Element Call block must be placed at the root level of model designated as an export-function model. See Export-Function Models Overview. For each Function Element Call block, a Function-Call Subsystem block should also be placed at the root level of the model, and aFunction Caller block should be placed inside the subsystem, designating the function to call through the Function Element Call block.
Examples
When you insert a Function Element Call block, the block label populates with default values. The label consists of two interactive text fields: the port name and the function element name. To change the name of the port associated with the block, edit the first text field in the label by clicking the text.
To allow multiple functions to be called through a port, create aFunction Element Call block for each function that you want to include. In the block dialog box, click . Alternatively, holdCtrl while you drag an existing Function Element Call block to a new location. Upon releasing the pointer, selectNew Element.
If multiple blocks are associated with the same port and you change the name of the port, all blocks that share the port update to reflect the new port name.
To create a port, hold Ctrl while you drag an existingFunction Element Call block to a new location. Upon releasing the pointer, select New Port.
In the block dialog box:
- Change port and function element names.
- Reorder function elements by dragging an element into the list of elements.
- Remove blocks associated with selected function elements by clicking
.
To change the name of the function element associated with the block, edit the second text field in the label by clicking the text.
All function element names associated with the port must be unique. Each function element name should match the function name of one of theSimulink Function blocks to call through the port.
Use the function element name as the function name in theFunction prototype parameter of the Function Caller block issuing function calls through the port, qualified by the port name. See Port name.
To associate the port with a service interface authored in System Composer™, specify the port data type.
Double-click a block associated with the port. Then, select the port name in the tree.
To display the data type, click .
Select a service interface from the Data type list or enter the service interface as Bus:_`ServiceInterfaceName`_
. The service interface name now appears in parentheses next to the port name.
You can associate a service interface definition only with the port as a whole, not with individual function elements within the port.
Ports
Output
Select a function from the corresponding external input port of the parent model.
Parameters
To edit the element associated with aFunction Element Call block, in the Simulink Editor, edit the block label.
To edit port attributes, use the Property Inspector. From the Simulink Toolstrip, on the Simulation tab, in thePrepare gallery, select Property Inspector.
Block Label
Specify a port name that is not already in use by another block or port within the model. The name appears as a port label on the parentModel block. The name also appears next to the block. Multiple blocks can access the same port.
Use the same port name to qualify, with dot notation, the function name in theFunction prototype parameter of theFunction Caller block issuing function calls through the port.
[OutArg1,OutArg2,...] = PortName.FunctionElementName(InArg1,InArg2,...)
Programmatic Use
To set the block parameter value programmatically, use the set_param function.
Parameter: | PortName |
---|---|
Values: | 'client' (default) | port name in quotes |
Data Types: | char | string |
Example: set_param("mymodel/Function Element Call", PortName="clientPort")
To specify the element that the block selects, in the Simulink Editor, edit the second text field of the block label.
Multiple blocks can access the same element.
Programmatic Use
To set the block parameter value programmatically, use the set_param function.
Parameter: | Element |
---|---|
Values: | 'f1' (default) | element path in quotes |
Data Types: | char | string |
Example: set_param("mymodel/Function Element Call", Element="f3")
Port Tab
To toggle whether the tabs are visible, click .
For information about the port name, see Port name.
Specify the order in which the port that corresponds to the block appears on the parent Model block.
- If you add a block that creates another port, the port number is the next available number.
- Deleting all blocks associated with a port deletes the port. The software renumbers other ports to be sequential and does not skip any numbers.
- Specifying a port number that exceeds the number of ports creates a port for that number and for any skipped sequential numbers.
Programmatic Use
To set the block parameter value programmatically, use the set_param function.
Parameter: | Port |
---|---|
Values: | '1' (default) | real integer in quotes |
Data Types: | char | string |
Example: set_param("mymodel/Function Element Call", Port="5")
Signal Tab
To toggle whether the tabs are visible, click .
When you specify the port data type, a parenthetical appears next to the port name. To display the specified data type in full, click the attribute summary.
Before R2025a: To specify the port data type, pause on the port name in the tree. Then, click . Alternatively, when available, click the attribute summary.
The port data type can be inherited or specified.
Inherit: auto
— Inherited data type.Bus: <object name>
— Use the name of the Simulink.Bus object preceded byBus:
. For example, specifyBus: myBusObject
.ValueType: <object name>
— Use the name of the Simulink.ValueType object preceded byValueType:
. For example, specifyValueType: windVelocity
. The data type of the value type must be a Simulink.Bus object.
Tips
- When you specify a
Simulink.Bus
object or aSimulink.ValueType
object with aSimulink.Bus
object data type, the Property Inspector and block dialog box display the elements defined by the correspondingSimulink.BusElement
objects. - To create an object using the Type Editor, click
.
Programmatic Use
To programmatically set the port data type, use the set_param function. Specify the port as the model name, a forward slash, and the port name.
Parameter: | OutDataTypeStr | |
---|---|---|
Values: | "Inherit: auto" (default) | "Bus: " | "ValueType: " |
Example: set_param("mymodel/client", OutDataTypeStr="Bus: ServiceInterface")
Block Characteristics
Data Types | Boolean | bus | double | enumerated | fixed point | half | integer | single | string |
---|---|---|---|---|---|---|---|---|
Direct Feedthrough | no | |||||||
Multidimensional Signals | yes | |||||||
Variable-Size Signals | yes | |||||||
Zero-Crossing Detection | no |
Tips
- Use the Filter box to specify a search term to use for filtering a long list of function elements. Do not enclose the search term in quotation marks. The filter does a partial string search and supports regular expressions. To use a regular expression character as a literal, include an escape character (
\
). For example, to use a question mark, typefcn\?1
. For more information, see Regular Expressions. - To change the background color of aFunction Element Call block, click
and select a standard color or specify a custom color. Alternatively, use the
BackgroundColor
block property. For more information, see Programmatically Specify Block Parameters and Properties.
Extended Capabilities
Version History
Introduced in R2022a
You can now specify port attributes more easily.
- To toggle the display of port attributes, click
. Port attributes now appear on thePort and Signal tabs. The
button replaces the button that appears when you pause on the port name in a previous release.
- To edit the port name, double-click the name of the port. Alternatively, on the Port tab, specify Port name.
- To change block colors, click
and select a standard color or specify a custom color.
- To create a
Simulink.Bus
object using the Type Editor, on the Signal tab, click.
When you press Ctrl and drag a Function Element Call block to a new location, you receive clearer options:
- New Port — Create a port.
- New Element — Add an element to the port.
- Duplicate — Create a duplicate Function Element Call block.
In previous releases, you receive two options:
- Create New Port — Create a port.
- Use Existing Port — Create a duplicateFunction Element Call block.
These actions now consistently create a port:
- Double-click the canvas. Then, start typing
Function Element Call
, and select the block from the menu. - Copy and paste a Function Element Call block.
In previous releases, these actions create a port, add an element to a port, or duplicate a block.