Main Content

Link Data Dictionary to Custom Libraries

When you create a custom block library, you might define data objects — such as bus and enumeration types — to be used on block interfaces. You can make these data types available to library users by storing them in a Simulink® data dictionary that is attached to the library. Library users automatically gain access to the data types contained in the dictionary when they drag a block from the library into their model.

Author Library Blocks with Data Types Defined in Attached Data Dictionary

To define data and types for your library blocks in a data dictionary:

  1. Create a new data dictionary or open an existing dictionary. To create a new dictionary, in the Model Explorer, select File > New > Data Dictionary. To open an existing dictionary, select File > Open and browse for your dictionary.

  2. Add data and types, such as bus objects, to the data dictionary.

    View of Model Explorer. On the left, a data dictionary node is expanded in the Model Hierarchy pane. On the right, the Contents pane displays the two bus objects contained in the Design Data section of the dictionary.

  3. Save the data dictionary.

You can attach the data dictionary to your library by using the UI or programmatically by using the set_param function.

To attach the data dictionary by using the UI:

  1. Unlock your library (see Lock and Unlock Libraries).

  2. In the Simulink Editor, on the Modeling tab, click Library Properties.

  3. In the Library Properties dialog box, on the External Data tab, click Browse to locate and open your data dictionary.

  4. Click OK to attach the dictionary.

To attach the data dictionary by using the set_param function, use this command.

set_param('myLib','DataDictionary','myLibData.sldd');

After you have attached the dictionary and saved your library, the dictionary and its content appears in the Model Explorer as an external data source for the library.

View of Model Explorer. On the left, the library node is expanded in the Model Hierarchy pane. Under the library node, the External Data node is expanded to show the attached data dictionary. On the right, the Contents pane displays the two bus objects contained in the Design Data section of the dictionary.

As you develop blocks for your library, you can select the types contained in the library dictionary from the Data type list.

On the left, the model canvas displays the contents of a subsystem library block. The Out block is selected. On the right, a block parameters dialog box displays the dictionary data types in the drop-down menu for Data type.

Use Blocks From a Library with Attached Data Dictionary

When you drag a block from a library into your model, the model automatically gains access to data objects contained in the dictionary attached to that library. To see the dictionary in the Model Explorer, in the Simulink Editor, click the model data badge in the bottom left corner, then click External Data. The dictionary appears as an external data source to your model under the From Libraries node.

View of Model Explorer. On the left, a model node is expanded in the Model Hierarchy pane. Under the model node, the External Data node is expanded. Under the External Data node, the From Libraries node is expanded to show the attached data dictionary. On the right, the Contents pane displays the two bus objects contained in the Design Data section of the dictionary.

The data objects defined in the library are now available to the model for simulation and code generation without the need to bring those data objects into either the base workspace or another data dictionary.

On the left, the model canvas displays a library block used in a model. The Out block is selected. On the right, a block parameters dialog box displays the dictionary data types in the drop-down menu for Data type.

When you update or save your model, if the model no longer contains a block from the library, the library dictionary is no longer available to your model and the dictionary is removed from the From Libraries node.

Considerations When Using a Library Dictionary

There are several considerations when authoring or using a library with a linked data dictionary.

  • In most cases, you will define bus or enumeration types in a library dictionary, but library authors can share any type of object with library users by adding objects to the dictionary.

  • Items in the library dictionary are global in scope, and symbol resolution occurs as if the library dictionary is directly connected to the model.

  • If a library link is broken, the data associated with the library is no longer available. To regain access to the data, you must manually link your model to the library dictionary.

  • In a model hierarchy, a model must directly or indirectly reference a library dictionary to use the data objects that the dictionary contains.

  • Like a data dictionary hierarchy or model reference hierarchy, a Simulink library can also form a hierarchy by using blocks from another library. A user model can automatically access a library dictionary through a library hierarchy. To ensure that dictionary dependencies are up to date, at the command line, use the Simulink.LibraryDictionary.refresh function to perform a dependency analysis on the libraries in the current directory, in another specified directory, or used by a specified model. Because this library dependency analysis can be expensive, call the refresh function only if you have a missing dependency. Once the analysis is complete, the information is persistent across MATLAB® sessions. To clear the previous dependency analysis, use the Simulink.LibraryDictionary.clear function.

  • When you drag a block from a library into your model, the model gains access to the data dictionary attached to that library. However, if the block is from a sublibrary, access is only to the data dictionary attached to that sublibrary. In this case, to provide a model with access to both library and sublibrary dictionaries when it uses the block, the library author must contain the sublibrary block in a new subsystem.

  • If you store your library under the MATLAB root folder, you can attach a dictionary to the library, but a model does not have automatic access to the dictionary when you add a block from the library.

  • Simulink does not support finding unused variables for a library-linked data dictionary.

See Also

| |

Related Topics