В этом примере показано, как можно в интерактивном режиме изменить источник компонента и получить мгновенную обратную связь о полученной реализации блока.
Чтобы блок отражал изменения базового источника, щелкните правой кнопкой значок блока и в контекстном меню выберите 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
.