Если вы не используете константы для параметров блоков в вашей модели, они появляются в сгенерированном коде как переменные. Можно выбрать, как эти переменные появляются в сгенерированном коде. Например, можно управлять следующими переменными характеристиками:
Встраиваются ли переменные в сгенерированном коде
Локальны ли переменные для функционального блока, глобальной переменной, или не заданные
Для получения дополнительной информации смотрите Параметры блоков в Сгенерированном коде.
Чтобы управлять, как параметры блоков появляются в сгенерированном коде:
Используйте переменные вместо констант для параметров блоков.
Задайте эти параметры в рабочей области MATLAB® одним из следующих способов:
Используйте скрипт MATLAB, чтобы создать объект Simulink.Parameter
. Запустите скрипт каждый раз, когда модель загружает.
Simulink® хранит объекты Simulink.Parameter
вне модели. Можно затем совместно использовать объекты Simulink.Parameter
между многоуровневыми моделями.
Используйте диалоговое окно Model Configuration Parameters, чтобы сделать параметры настраиваемыми.
Simulink хранит заданное использование глобальных настраиваемых параметров диалогового окна Configuration Parameters моделью. Вы не можете совместно использовать эти параметры между многоуровневыми моделями.
Значение параметров рабочего пространства MATLAB должно иметь совпадающий тип данных, как используется в модели. В противном случае значение переменной в сгенерированном коде обнуляется. Смотрите Ограничения Типа данных параметров Рабочей области.
Simulink.Parameter
Этот пример показывает, как создать и изменить объект Simulink.Parameter
.
Модель plcdemo_tunable_params_slparamobj
иллюстрирует эти шаги. Модель содержит блок Subsystem SimpleSubsystem
, который имеет три блока Усиления с настраиваемыми параметрами, K1
, K2
и K3
.
Запишите скрипт MATLAB, который задает настраиваемые параметры.
Следующий скрипт setup_tunable_params.m
создает константы K1
, K2
и K3
как Simulink.Parameter
, возражает, присваивает значения и устанавливает классы памяти для этих констант. Для получения дополнительной информации о классах памяти смотрите Параметры блоков в Сгенерированном коде.
% define tunable parameters in base workspace as % Simulink.Parameter objects % tunable parameter mapped to local variable K1 = Simulink.Parameter; K1.Value = 0.1; K1.StorageClass = 'Model default'; % tunable parameter mapped to global variable K2 = Simulink.Parameter; K2.Value = 0.2; K2.StorageClass = 'ExportedGlobal'; K2.CoderInfo.CustomStorageClass = 'Default'; % tunable parameter mapped to global const K3 = Simulink.Parameter; K3.Value = 0.3; K3.StorageClass = 'ExportedGlobal'; K3.CoderInfo.CustomStorageClass = 'Const';
Укажите, что скрипт, который setup_tunable_params.m
должен выполнить перед образцовыми загрузками и что рабочее пространство MATLAB должно быть очищено перед моделью, закрывается.
В окне модели выберите File> Model Properties> Model Properties.
В диалоговом окне Model Properties, на вкладке Callbacks, выбирают PreLoadFcn
. Введите setup_tunable_params
для Model pre-load function.
На вкладке Callbacks выберите CloseFcn
. Введите clear K1 K2 K3;
для Model close function.
Каждый раз, когда вы открываете модель, переменные K1
, K2
и K3
, загружается в базовое рабочее пространство. Можно просмотреть переменные и их классы памяти в Model Explorer.
Сгенерируйте код и осмотрите его.
Переменная | Класс памяти | Сгенерированный код (3S CoDeSys 2.3) |
---|---|---|
K1 | Model default |
FUNCTION_BLOCK SimpleSubsystem . . VAR K1: LREAL := 0.1; . . END_VAR . . END_FUNCTION_BLOCK |
K2 | ExportedGlobal |
VAR_GLOBAL K2: LREAL := 0.2; END_VAR |
K3 | ExportedGlobal и набор CoderInfo.CustomStorageClass к Const . |
VAR_GLOBAL CONSTANT SS_INITIALIZE: SINT := 0; K3: LREAL := 0.3; SS_STEP: SINT := 1; END_VAR |
Этот пример показывает, как сделать параметры настраиваемым использованием диалогового окна Model Configuration Parameters.
Модель plcdemo_tunable_params
иллюстрирует эти шаги. Модель содержит блок Subsystem SimpleSubsystem
, который имеет три блока Усиления с настраиваемыми параметрами, K1
, K2
и K3
.
Укажите, что переменные K1
, K2
и K3
должны быть инициализированы перед образцовыми загрузками и что рабочее пространство MATLAB должно быть очищено, прежде чем модель закроется.
Выберите File> Model Properties> Model Properties.
В диалоговом окне Model Properties, на вкладке Callbacks, выбирают PreLoadFcn
. Введите K1=0.1; K2=0.2; K3=0.3;
для Model pre-load function.
На вкладке Callbacks выберите CloseFcn
. Введите clear K1 K2 K3;
для Model close function.
Выберите Simulation> Model Configuration Parameters.
Перейдите к панели Optimization. Укажите, что все параметры должны быть встроены в сгенерированном коде. Выберите Inlined
for Default Parameter Behavior.
Чтобы заменить встраивание и сделать отдельные параметры настраиваемыми, нажмите Configure. В диалоговом окне Model Parameter Configuration, от Source list, выбирают Referenced workspace variables
.
Ctrl +select параметры и нажимает Add to table >>.
По умолчанию это диалоговое окно устанавливает все параметры на класс памяти SimulinkGlobal
. Установите Storage class и Storage type qualifier как показано в этой фигуре. Для получения дополнительной информации о классах памяти смотрите Параметры блоков в Сгенерированном коде.
Сгенерируйте код и осмотрите его.
Переменная | Класс памяти | Сгенерированный код (3S CoDeSys 2.3) |
---|---|---|
K1 | SimulinkGlobal |
FUNCTION_BLOCK SimpleSubsystem . . VAR K1: LREAL := 0.1; . . END_VAR . . END_FUNCTION_BLOCK |
K2 | ExportedGlobal |
VAR_GLOBAL K2: LREAL := 0.2; END_VAR |
K3 | ExportedGlobal и набор Storage type qualifier к Const . |
VAR_GLOBAL CONSTANT SS_INITIALIZE: SINT := 0; K3: LREAL := 0.3; SS_STEP: SINT := 1; END_VAR |