В этом примере показано, как можно в интерактивном режиме изменить источник компонента и получить мгновенную обратную связь о полученной реализации блока.
Чтобы блок отражал изменения базового источника, щелкните правой кнопкой значок блока и в контекстном меню выберите Simscape > Refresh source code. Если вы ошибаетесь (для примера опускайте end ключевое слово) при редактировании источника компонента, затем при обновлении блока компилятор выдает диагностическое сообщение об ошибке, указывая на соответствующую линию в коде.
Откройте Simscape > Библиотека фундаментов > Electrical > Electrical Элементов > Variable Resistor диалогового окна блока и щелкните ссылку Source code. Базовый исходный код откроется в окне Editor.
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 Component к модели. Сначала блок не указывает ни на один файл компонента, поэтому у него нет никаких портов и значок блока говорит Unspecified.

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

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

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

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

Объявите выходной 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 Component. Поэтому, если вы сохраняете модель тестовой установки, убедитесь, что присвоили ей другое имя, например my_var_res_test.