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