В этом примере показано, как подсчитывать объекты, поступающие в блок терминатора объектов, некумулирующим способом путем сброса счетчика в каждый момент времени.

Чтобы открыть пример, см. Example Model for Noncumulative Entity Count.
Добавьте два блока генератора объектов, блок переключателя ввода объектов, блок терминатора объектов и блок функции Simulink из библиотеки SimEvents ® в новую модель. Дополнительные сведения см. в разделе Функция симулятора.
Подключите блоки, как показано на схеме.
Дважды щелкните на блоке «Entity Generator1». На вкладке Создание сущности установите для параметра Период значение 2.
В модели, 2 объекты приходят в блок терминатора объектов в момент времени 0, 2, 4, 6, 8, 10 и 1 сущность приходит в момент времени 1, 3, 5, 7, 9.
Дважды щелкните по сигнатуре функции в блоке Simulink Function и введите nonCumCount().

Дважды щелкните блок Simulink Function. Добавьте блок цифровых часов из библиотеки Simulink > Sources. Задайте для параметра Sample time значение -1 для наследуемого времени выборки.
Добавьте функциональный блок MATLAB. Дважды щелкните его и введите этот код.
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 к блоку Simulink ® Scope.
В родительской модели дважды щелкните блок «Терминатор объекта». В поле Действие ввода на вкладке Действия события введите этот код.
nonCumCount();
Смоделировать модель и открыть блок Scope в блоке Simulink Function.
Измените параметры печати блока «Область», щелкнув правой кнопкой мыши на графике и выбрав «Стиль». Выбрать no line для строки и circle для параметров маркера.
Обратите внимание, что блок иллюстрирует количество некумулирующих объектов для объектов, поступающих в блок терминатора объектов. Блок также иллюстрирует мгновенные поступления объектов в каждый момент времени.

Чтобы подсчитать количество мгновенных событий, используйте nonCumCount() в любом Событии.
Литник сущности | Генератор объектов | Переключатель ввода объекта | Терминатор объекта