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

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

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

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

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

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

  • Заменяя Функциональные блоки Атрибута

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

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

Используйте эти инструкции, чтобы заменить блоки Set Attribute:

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

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

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

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

Значения Get Attribute

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

  1. Поместите блок вычисления в Функциональный блок Simulink.

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

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

Можно сгенерировать использование случайных чисел:

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

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

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

Если вы генерируете случайные числа, возвратитесь к Рабочему процессу Миграции.

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

Вот пример того, как воспроизвести произвольное дискретное распределение для Основанного на событии устаревшего блока Случайных чисел. Примите, что блок имеет эти установки параметров:

  • Distribution: Arbitrary discrete

  • Value vector: [2 3 4 5 6]

  • Probability vector: [0.3 0.3 0.1 0.2 0.1]

  • Initial seed: 12234

Как общее руководство:

  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

Если вы генерируете случайные числа, возвратитесь к Рабочему процессу Миграции.

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

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

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

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

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

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

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

Если вы имеете дольше или более сложный код, рассматриваете заменяющий Функциональный блок Атрибута на Функцию Simulink и копирующий код без модификации в Функциональный блок Simulink.

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

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

Если вы используете Сигналы Simulink в основанном на событии вычислении, отправьте сигналы в Функциональный блок Simulink.

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

  2. Отправьте Сигналы Simulink как входные параметры к Функциональному блоку Simulink.

Например:

Похожие темы