exponenta event banner

Некумулятивный подсчет объектов

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

Чтобы открыть пример, см. Example Model for Noncumulative Entity Count.

  1. Добавьте два блока генератора объектов, блок переключателя ввода объектов, блок терминатора объектов и блок функции Simulink из библиотеки SimEvents ® в новую модель. Дополнительные сведения см. в разделе Функция симулятора.

  2. Подключите блоки, как показано на схеме.

  3. Дважды щелкните на блоке «Entity Generator1». На вкладке Создание сущности установите для параметра Период значение 2.

    В модели, 2 объекты приходят в блок терминатора объектов в момент времени 0, 2, 4, 6, 8, 10 и 1 сущность приходит в момент времени 1, 3, 5, 7, 9.

  4. Дважды щелкните по сигнатуре функции в блоке Simulink Function и введите nonCumCount().

  5. Дважды щелкните блок Simulink Function. Добавьте блок цифровых часов из библиотеки Simulink > Sources. Задайте для параметра Sample time значение -1 для наследуемого времени выборки.

  6. Добавьте функциональный блок 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
    Сохраните файл (необязательно).

  7. Подключите выход функционального блока MATLAB к блоку Simulink ® Scope.

  8. В родительской модели дважды щелкните блок «Терминатор объекта». В поле Действие ввода на вкладке Действия события введите этот код.

    nonCumCount();

  9. Смоделировать модель и открыть блок Scope в блоке Simulink Function.

  10. Измените параметры печати блока «Область», щелкнув правой кнопкой мыши на графике и выбрав «Стиль». Выбрать no line для строки и circle для параметров маркера.

  11. Обратите внимание, что блок иллюстрирует количество некумулирующих объектов для объектов, поступающих в блок терминатора объектов. Блок также иллюстрирует мгновенные поступления объектов в каждый момент времени.

Чтобы подсчитать количество мгновенных событий, используйте nonCumCount() в любом Событии.

См. также

| | |

Связанные примеры

Подробнее