Этот пример показывает, как вызвать Simulink® функция, когда сущность входит в элемент массива хранения пользовательского системного блока дискретных событий, и для изменения атрибутов сущности. Для получения дополнительной информации о вызове функций Simulink из MATLAB System блока, смотрите Вызов функций Simulink из MATLAB System Block.
Чтобы представлять такое поведение, генерируется пользовательский блок с одним входом, одним выходом и одним элементом памяти. Дополнительные сведения о создании пользовательского блока хранения сущностей см. в разделе Задержка сущностей с пользовательским блоком хранения сущностей.
Смотрите код, который вызывает функцию Simulink для изменения атрибутов сущности
Определите имя функции Simulink, которая будет вызываться в Системе дискретных событий object™ используя getSimulinkFunctionNamesImpl
способ.
function name = getSimulinkFunctionNamesImpl(obj) % Declare the name of the Simulink Function. name = {'assignData'}; end
Имя функции Simulink объявлено как assignData
.
Функции assignData
в действии события входа.
function [entity,event] = CarEntry(obj,storage,entity,source) % Assign data when an entity enters the storage. entity.Attribute1 = assignData(); coder.extrinsic('fprintf'); fprintf('Entity Attribute Value: %f\n', entity.Attribute1); event = obj.eventForward('output', 1, obj.Delay); end
Создайте модель с помощью блока Entity Generator, MATLAB Discrete-Event System блока и блока Entity Terminator.
Откройте блок MATLAB Discrete-Event System и установите Discrete-event System object name равным CustomEntityStorageBlockSLFunc
.
Выведите статистику Number of entities departed, d из блока Entity Generator и соедините ее с возможностями.
Добавьте блок Simulink Function к модели.
На блоке Simulink Function дважды кликните сигнатуру функции и введите y = assignData()
.
В блоке Simulink Function добавьте блок Uniform Random Number и измените его параметр Sample time на -1
.
Симулируйте модель. Область возможностей отображает 3
сущности покинули блок Entity Generator.
Diagnostic Viewer отображает случайные значения атрибутов, присвоенные 3
сущности при входе в хранилище.
entry
| getEntityPortsImpl
| getEntityStorageImpl
| getEntityTypesImpl
| matlab.DiscreteEventSystem
| matlab.System