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

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

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

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

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

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

См. также

| | |

Похожие примеры

Подробнее о