В этом примере показано, как можно в интерактивном режиме изменить источник компонентов и получить мгновенную обратную связь относительно результирующей реализации блока.
Чтобы блок отражал изменения в базовом источнике, щелкните правой кнопкой мыши значок блока и в контекстном меню выберите «Simscape» > «Обновить исходный код». В случае ошибки (например, опустить end ключевое слово) при редактировании источника компонента, затем при обновлении блока компилятор выдает диагностическое сообщение об ошибке, указывая на соответствующую строку в коде.
Откройте диалоговое окно Simscape > Foundation Library > Electrical > Electrical Elements > Variable Resistor block и щелкните ссылку Source code. Базовый исходный код откроется в окне Редактор.
component variable_resistor
% Variable Resistor :1.5
% Models a linear variable resistor. The relationship between voltage V
% and current I is V=I*R where R is the numerical value presented at the
% physical signal port R. The Minimum resistance parameter prevents
% negative resistance values.
%
% Connections + and - are conserving electrical ports corresponding to
% the positive and negative terminals of the resistor respectively. The
% current is positive if it flows from positive to negative, and the
% voltage across the resistor is given by V(+)-V(-).
% Copyright 2005-2020 The MathWorks, Inc.
inputs
R = { 0.0, 'Ohm' }; % R:left
end
nodes
p = foundation.electrical.electrical; % +:left
n = foundation.electrical.electrical; % -:right
end
parameters
Rmin = { 0, 'Ohm' }; % Minimum resistance R>=0
end
variables
i = { 0, 'A' }; % Current
v = { 0, 'V' }; % Voltage
end
branches
i : p.i -> n.i;
end
intermediates
power_dissipated = v*i;
end
equations
assert(Rmin>=0)
v == p.v - n.v;
if R > Rmin
v == i*R;
else
v == i*Rmin;
end
end
end
Измените имя компонента в первой строке:
component my_var_res
Сохранить исходный код как файл с именем my_var_res.ssc в текущей рабочей папке.
Чтобы создать новую модель с оптимальными настройками для физического моделирования, в окне команд MATLAB ® введите :
ssc_new
Откройте библиотеку «Simscape > Utilities» и добавьте в модель блок «Компонент Simscape». Сначала блок не указывает ни на один файл компонента, поэтому у него нет портов, и значок блока говорит Unspecified.

Дважды щелкните блок, чтобы открыть диалоговое окно выбора исходного файла. Напечатать my_var_res в текстовое поле.

Нажмите кнопку ОК. Значок блока обновляется и отражает выбранный исходный компонент. Теперь он имеет два сохраняющихся электрических порта, + и -, и физический входной сигнальный порт PS.

Дважды щелкните блок, чтобы открыть его диалоговое окно. На этом этапе он имеет то же имя блока, описание, параметры и переменные, что и блок переменного резистора в библиотеке Foundation.

Щелкните ссылку Исходный код, чтобы начать редактирование исходного кода. Измените имя и описание блока:
component my_var_res % Variable Resistor with Energy Sensor % Variable linear resistor that outputs total electrical energy.
Чтобы блок отражал изменения в базовом источнике, щелкните правой кнопкой мыши значок блока и в контекстном меню выберите «Simscape» > «Обновить исходный код». Диалоговое окно блока обновляется соответствующим образом.

Объявление выходных данных e и добавьте уравнение, рассчитывающее общую электрическую энергию. Теперь источник компонентов выглядит следующим образом:
component my_var_res
% Variable Resistor with Energy Sensor
% Variable linear resistor that outputs total electrical energy.
inputs
R = { 0.0, 'Ohm' }; % PS:left
end
outputs
e = { 0, 'J' };
end
nodes
p = foundation.electrical.electrical; % +:left
n = foundation.electrical.electrical; % -:right
end
parameters
Rmin = { 0, 'Ohm' }; % Minimum resistance R>=0
end
variables
i = { 0, 'A' }; % Current
v = { 0, 'V' }; % Voltage
end
branches
i : p.i -> n.i;
end
equations
assert(Rmin>=0)
v == p.v - n.v;
if R > Rmin
v == i*R;
else
v == i*Rmin;
end
e == integ(v*i);
end
end
Обновите блок еще раз. Значок блока теперь имеет дополнительный порт выхода физического сигнала e.

Подключите блок к простой тестовой установке для проверки правильности рабочих характеристик.


Примечание
Существует ограничение на то, что имя модели не может совпадать с именем исходного файла блока компонента Simscape. Поэтому при сохранении модели испытательной установки обязательно присвойте ей другое имя, например: my_var_res_test.