exponenta event banner

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

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

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

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

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

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

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

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

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

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

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

    entitySys.id=5;
  • Если блоки Задать атрибут (Set Attribute) изменяют атрибуты, в блоке Генератор объектов (Entity Generator) кодируйте Create на вкладке Действия события.

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

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

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

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

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

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

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

Можно создать случайные числа, используя:

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

Замените режимы распределения случайных чисел на основе событий на эквивалентный код MATLAB ® в действиях с событиями. Дополнительные сведения о создании случайных распределений см. в разделе Языки действий события и создание случайных чисел.

Если требуется дополнительное распределение случайных чисел, см. раздел Статистика и инструментарий машинного обучения.

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

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

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

  • Распределение: Arbitrary discrete

  • Вектор значения: [2 3 4 5 6]

  • Вектор вероятности: [0.3 0.3 0.1 0.2 0.1]

  • Начальное начальное число: 12234

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

  1. Задайте начальное начальное значение, например:

    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

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

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

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

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

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

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

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

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

При наличии более длинного или более сложного кода рекомендуется заменить блок «Функция атрибута» функцией Simulink и скопировать код без изменений в блок «Функция Simulink».

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

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

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

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

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

Например:

Связанные темы