Этот пример показывает, как подсчитать сущности, которые поступают к блоку Entity Terminator, некумулятивным способом путем сброса счетчика в каждый момент времени.
Чтобы открыть пример, смотрите Example Model for Noncumulative Entity Count
.
Добавьте два блока Entity Generator, блок Entity Input Switch, блок Entity Terminator и блок Simulink Function из SimEvents® библиотека в новую модель. Для получения дополнительной информации см. раздел Simulink Function.
Соедините блоки как показано на схеме.
Дважды кликните блок Generator1 сущности. На вкладке Entity generation установите Period значение 2
.
В модели 2
сущности поступают в Entity Terminator блок в то время 0
, 2
, 4
, 6
, 8
, 10
и 1
сущность приходит во время 1
, 3
, 5
, 7
, 9
.
Дважды кликните сигнатуру функции на блоке Simulink Function и введите nonCumCount()
.
Дважды кликните Simulink Function блок. Добавьте блок Digital Clock из библиотеки Simulink > Sources. Установите параметр Sample time равным -1
для унаследованного шага расчета.
Добавьте блок MATLAB Function. Дважды кликните его и введите этот код.
function y = fcn(curtime) % Define count for counting and prevtime for previous time stamp persistent count prevtime; % Check if prevtime is empty and initiate the count if isempty(prevtime) prevtime = curtime; count = 0; end % Increase count by 1 for equal time stamps. if isequal(curtime, prevtime) count = count + 1; % Reset count to 1 if two consequitive time stamps are not identical else prevtime = curtime; count = 1; end % Output count for visualization y = count; end
Соедините выход блока MATLAB Function с Simulink® Scope блок.
В родительской модели дважды кликните блок Entity Terminator. В Entry action поле вкладки Event actions введите этот код.
nonCumCount();
Симулируйте модель и откройте блок Scope в блоке Simulink Function.
Измените настройки графического изображения блока Scope, щелкнув правой кнопкой мыши график и выбрав Style. Выберите no line
для Line и circle
для параметров Marker.
Обратите внимание, что блок иллюстрирует некумулятивное количество сущностей для сущностей, получающих Entity Terminator блок. Блок также иллюстрирует текущее прибытие сущности в каждый момент времени.
Чтобы подсчитать количество событий, которые происходят мгновенно, используйте nonCumCount()
в любом Event actions.
Entity Gate | Entity Generator | Entity Input Switch | Entity Terminator