Configure Timer Service Interfaces - MATLAB & Simulink (original) (raw)
Main Content
For component deployment models, you can generate code that accesses the function clock tick provided by the target environment. A function clock tick value is the number of time ticks from the start of program execution to the present time for a function. Generated code for a function can access the target platform function clock tick value by calling a function provided by the platform timer service.
You represent requests for the function clock tick in a model implicitly when you include blocks that rely on elapsed or absolute time. The code generator produces code that calls a timer service function, depending on the block context (for example, for a block that relies on elapsed time and is used in an aperiodic context). If you do not want to use the default timer service interface specified in the Embedded Coder Dictionary, you can configure the timer service interface by using the Code Mappings Editor or code mappings programming interface.
By default, an Embedded Coder Dictionary provides an interface for these data communication methods:
- Outside execution: The platform service communicates clock tick value outside (before and after) function execution.
- During execution: The platform communicates clock tick value immediately during function execution.
Configure Timer Service Interfaces by Using the Code Mappings Editor
In this example, the component model references a shared coder dictionary that defines the default timer service interfaces for exported functions in the component model. To configure the timer to use something other than the default service interface, use the Code Mappings editor.
Open the component model,ComponentDeploymentFcn
.
openExample('ComponentDeploymentFcn');
In this model, the Function-Call Subsystem blockIntegrator
uses a timer service because it contains aDiscrete-Time Integrator block.
Verify that the component model references the shared coder dictionary,ComponentDeploymentCoderDictionary.sldd
.
In the Model Configuration Parameters dialog box, verify that the Shared coder dictionary parameter is set toComponentDeploymentCoderDictionary.sldd
. This dictionary defines default service interfaces, including the timer services, of the component model.
Open the Embedded Coder app.
To configure the integrator function to use a timer service interface other than the default defined by the shared coder dictionary, use the Code Mappings editor.
To open the Code Mappings editor, in the C Code tab, click > .
On the Functions tab, on the table row for theExported Function:Aperiodic
function, click the pencil icon. TheTimer Service, is set to Dictionary default: get_tick_outside
.
To configure the function to access clock tick value immediately during function execution instead of before or after execution as specified in the dictionary, set theTimer Service of Exported Function:Aperiodic
to get_tick_during
.
Configure Timer Service Interfaces Programmatically
To configure timer services of a function component programmatically, access the code mapping properties of the component model.
Open the model.
openExample('ComponentDeploymentFcn');
Get the code mappings for the model by using thecoder.mapping.api.get
function.
cm = coder.mapping.api.get('ComponentDeploymentFcn');
In this model, the exported function Aperiodic
, represented by theFunction-Call Subsystem,Integrator
, requires timer services in the platform environment. Get the current timer service interface configuration by using thegetFunction
function.
getFunction(cm, 'ExportedFunction:Aperiodic', 'TimerService')
ans =
'Dictionary default'
The function is configured to use the default timer service interface defined in the shared coder dictionary.
To configure the function to access timer services during function execution instead of before or after execution as specified in the dictionary, use thesetFunction
function and set the TimerService
property to get_tick_during
, which is defined in the dictionary.
setFunction(cm, 'ExportedFunction:Aperiodic',... 'TimerService', 'get_tick_during')
See Also
Code Mappings Editor | coder.mapping.api.CodeMapping | getFunction | setFunction