Запись действий события для устаревших моделей

При миграции устаревших SimEvents® модели, вы часто должны создавать действия события в следующих образцах:

  • Установка значений атрибутов

  • Получение значений атрибутов

  • Генерация генерации случайных чисел

  • Использование последовательностей событий

  • Замена блоков функции атрибутов

  • Использование Simulink® сигналы в основанных на событиях расчетах

Замените Set Attribute блоки на действия события

Используйте следующие инструкции для замены Set Attribute блоков:

  • Если блоки Set Attribute немедленно следуют за блоками генератора сущностей, чтобы инициализировать атрибуты, в блоке Entity Generator кодируйте Generate действие на вкладке Event actions, чтобы задать начальное значение атрибута. Для примера:

    entitySys.id=5;
  • Если блоки Set Attribute изменяют атрибуты, в блоке Entity Generator кодируйте Create действие на вкладке Event actions.

Этот пример иллюстрирует Generation действие для инициализации значений атрибутов:

Вернуться к рабочему процессу миграции.

Получение значений атрибутов

Если вы записываете действия события, чтобы получить значения атрибутов, используйте блок Simulink Function:

  1. Поместите вычислительный блок в Simulink Function блок.

  2. Передайте значение атрибута как аргумент из действия события в блок Simulink Function.

Замените распределения случайных чисел в действиях события

Вы можете сгенерировать случайные числа с помощью:

Распределение случайных чисел

Замените Event-Based Random Number блок случайного числа режимами распределения на эквивалентные MATLAB® код в событийных действиях. Для получения дополнительной информации о генерации случайных распределений смотрите Языки действий События и Генерация случайных чисел.

Если вам нужны дополнительные распределения случайных чисел, см. Statistics and Machine Learning Toolbox.

После генерации случайных чисел вернитесь к Рабочему процессу миграции.

Пример произвольной замены дискретного распределения

Вот пример того, как воспроизвести произвольное дискретное распределение для Event-Based Random Number устаревшего блока. Предположим, что блок имеет следующие настройки параметров:

  • Distribution: Arbitrary discrete

  • <reservedrangesplaceholder1> <reservedrangesplaceholder0>

  • <reservedrangesplaceholder1> <reservedrangesplaceholder0>

  • <reservedrangesplaceholder1> <reservedrangesplaceholder0>

В качестве общего руководства:

  1. Установите начальный seed, например:

    persistent init
    if isempty(init)
    		rng(12234);
    		init=true;
    end
  2. Определите, чему назначен вектор значений в унаследованной модели, и непосредственно присвойте его в коде действия в новой модели. В этом примере вектор значений назначается FinalStop.

  3. Чтобы назначить значения в соответствующей области значений, вычислите совокупный вектор вероятности. Для удобства используйте вектор вероятностей, чтобы вычислить совокупный, вероятно, вектор. Для примера, если вектор вероятности:

    [0.3 0.3 0.1 0.2 0.1]

    Совокупный вектор вероятностей является:

    [0.3 0.6 0.7 0.9 1]
  4. Создайте случайную переменную для использования в коде, например:

    x=rand();

Вот пример кода для этого примера блока, чтобы вычислить распределение. Вектор значений назначен FinalStop:

% Set initial seed.
persistent init
if isempty(init)
		rng(12234);
		init=true;
end
% Create random variable, x.
x=rand();
%
% Assign values within the appropriate range using the cumulative probability vector.
%
if x < 0.3
    entity.FinalStop=2;
elseif x >= 0.3 && x< 0.6
    entity.FinalStop=3;
elseif x >= 0.6 && x< 0.7
    entity.FinalStop=4;
elseif x >= 0.7 && x< 0.9
    entity.FinalStop=5;
else
    entity.FinalStop=6;
end

После генерации случайных чисел вернитесь к Рабочему процессу миграции.

Замените Event-Based Sequence блок на действия события

Замените Event-Based Sequence блоки, которые генерируют последовательность чисел из заданных векторов-столбцов, действиями события:

Замените блоки функций атрибута на действия события

Замените Attribute Function блоки, которые манипулируют атрибутами с помощью кода MATLAB, действиями события:

  1. Скопируйте код Attribute Function без синтаксиса функции на вкладку Event actions в соответствующем действии события.

  2. Для обращения к атрибуту сущности используйте сущность формата Attribute1..

Для краткого или простого кода используйте такие конструкции, как:

Если у вас более длинный или сложный код, рассмотрите замену Attribute Function блока на Simulink Function и копирование кода без модификации в Simulink Function блок.

Вернуться к рабочему процессу миграции.

Если используется сигналы Simulink в основанных на событиях расчетах

Если вы используете сигналы Simulink в основанных на событиях расчетах, отправьте сигналы в блок Simulink Function.

  1. Скопируйте основанный на событиях код расчета в блок Simulink Function.

  2. Отправьте сигналы Simulink как входы в блок Simulink Function.

Для примера:

Похожие темы