При миграции устаревших SimEvents® модели, вы часто должны создавать действия события в следующих образцах:
Установка значений атрибутов
Получение значений атрибутов
Генерация генерации случайных чисел
Использование последовательностей событий
Замена блоков функции атрибутов
Использование Simulink® сигналы в основанных на событиях расчетах
Используйте следующие инструкции для замены Set Attribute блоков:
Если блоки Set Attribute немедленно следуют за блоками генератора сущностей, чтобы инициализировать атрибуты, в блоке Entity Generator кодируйте Generate действие на вкладке Event actions, чтобы задать начальное значение атрибута. Для примера:
entitySys.id=5;
Если блоки Set Attribute изменяют атрибуты, в блоке Entity Generator кодируйте Create действие на вкладке Event actions.
Этот пример иллюстрирует Generation действие для инициализации значений атрибутов:

Вернуться к рабочему процессу миграции.
Если вы записываете действия события, чтобы получить значения атрибутов, используйте блок Simulink Function:
Поместите вычислительный блок в Simulink Function блок.
Передайте значение атрибута как аргумент из действия события в блок 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>
В качестве общего руководства:
Установите начальный seed, например:
persistent init if isempty(init) rng(12234); init=true; end
Определите, чему назначен вектор значений в унаследованной модели, и непосредственно присвойте его в коде действия в новой модели. В этом примере вектор значений назначается FinalStop.
Чтобы назначить значения в соответствующей области значений, вычислите совокупный вектор вероятности. Для удобства используйте вектор вероятностей, чтобы вычислить совокупный, вероятно, вектор. Для примера, если вектор вероятности:
[0.3 0.3 0.1 0.2 0.1]
Совокупный вектор вероятностей является:
[0.3 0.6 0.7 0.9 1]
Создайте случайную переменную для использования в коде, например:
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 блоки, которые генерируют последовательность чисел из заданных векторов-столбцов, действиями события:

Замените Attribute Function блоки, которые манипулируют атрибутами с помощью кода MATLAB, действиями события:
Скопируйте код Attribute Function без синтаксиса функции на вкладку Event actions в соответствующем действии события.
Для обращения к атрибуту сущности используйте сущность формата .Attribute1.
Для краткого или простого кода используйте такие конструкции, как:

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

Вернуться к рабочему процессу миграции.
Если вы используете сигналы Simulink в основанных на событиях расчетах, отправьте сигналы в блок Simulink Function.
Скопируйте основанный на событиях код расчета в блок Simulink Function.
Отправьте сигналы Simulink как входы в блок Simulink Function.
Для примера:
