Main Content

Configure Timer Service Interfaces

Since R2022b

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');

Screenshot of component model

In this model, the Function-Call Subsystem block Integrator uses a timer service because it contains a Discrete-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 to ComponentDeploymentCoderDictionary.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 Code Interface > Component Interface.

On the Functions tab, on the table row for the Exported Function:Aperiodic function, click the pencil icon. The Timer Service, is set to Dictionary default: get_tick_outside.

Default configuration of the code mappings by using dictionary default values

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 the Timer Service of Exported Function:Aperiodic to get_tick_during.

Code mappings editor with timer service for Exported Function:Aperiodic configured 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 the coder.mapping.api.get function.

cm = coder.mapping.api.get('ComponentDeploymentFcn');

In this model, the exported function Aperiodic, represented by the Function-Call Subsystem, Integrator, requires timer services in the platform environment. Get the current timer service interface configuration by using the getFunction 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 the setFunction 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

| | |

Related Topics