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

Этот пример показывает, как считать сущности, которые прибывают в блок Entity Terminator некумулятивным способом путем сброса счетчика в каждый раз момент.

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

  1. Добавьте два блока Генератора Сущности, Входной блок switch Сущности, блок Entity Terminator и Функциональный блок Simulink от библиотеки SimEvents® до новой модели. Для получения дополнительной информации смотрите Функцию Simulink.

  2. Соедините блоки как показано в схеме.

  3. Дважды кликните блок Entity Generator1. Во вкладке Entity generation, набор Period к 2.

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

  4. Дважды кликните функциональную подпись на Функциональном блоке Simulink и введите nonCumCount().

  5. Дважды кликните Функциональный блок Simulink. Добавьте блок Digital Clock от библиотеки Simulink > Sources. Установите параметр Sample time на -1 для наследованного шага расчета.

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

  7. Соедините вывод блока MATLAB function к блоку Simulink® Scope.

  8. В родительской модели дважды кликните блок Entity Terminator. В поле Entry action вкладки Event actions введите этот код.

    nonCumCount();

  9. Моделируйте модель и откройте блок Scope в Функциональном блоке Simulink.

  10. Измените настройки графического вывода блока Scope путем щелчка правой кнопкой по графику и выбора Style. Выберите no line для Line и circle для параметров Marker.

  11. Заметьте, что блок иллюстрирует, что некумулятивная сущность значит сущности, прибывающие блок Entity Terminator. Блок также иллюстрирует мгновенное прибытие сущности каждый раз.

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

Смотрите также

| | |

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

Больше о