Этот пример показывает, как можно в интерактивном режиме изменить источник компонента и получить мгновенную обратную связь на получившейся реализации блока.
Чтобы иметь блок отражают изменения в базовом источнике, щелкают правой кнопкой по значку блока и, из контекстного меню, выбирают Simscape> Refresh source code. Если вы делаете ошибку (например, не используйте ключевое слово end
) при редактировании источника компонента, то, когда вы обновляете блок, компилятор выпускает диагностическое сообщение об ошибке, указывая на соответствующую строку в коде.
Откройте диалоговое окно блока Simscape> Foundation Library> Electrical> Electrical Elements> 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-2016 The MathWorks, Inc. inputs R = { 0.0, 'Ohm' }; % PS: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
.