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

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

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

  1. Добавьте два блока Entity Generator, блок Entity Input Switch, блок Entity Terminator и блок Simulink Function от библиотеки SimEvents® до новой модели. Для получения дополнительной информации смотрите Simulink Function.

  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 Function и введите nonCumCount().

  5. Дважды кликните блок Simulink Function. Добавьте блок 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 Function.

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

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

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

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

| | |

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

Больше о

Для просмотра документации необходимо авторизоваться на сайте