Моделируйте компонент и получите мгновенную обратную связь

В этом примере показано, как можно в интерактивном режиме изменить источник компонента и получить мгновенную обратную связь на получившейся реализации блока.

Чтобы иметь блок отражают изменения в базовом источнике, щелкают правой кнопкой по значку блока и, из контекстного меню, выбирают Simscape> Refresh source code. Если вы делаете ошибку (например, не используйте end ключевое слово), когда редактирование источника компонента, затем когда вы обновляете блок, компилятор, выпускает диагностическое сообщение об ошибке, указывая на соответствующую линию в коде.

  1. Откройте 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-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
    
  2. Поменяйте имя компонента в первой линии:

    component my_var_res
  3. Сохраните исходный код как файл под названием my_var_res.ssc в вашей текущей рабочей директории.

  4. Чтобы создать новую модель с оптимальными настройками для физического моделирования, в Командном окне MATLAB®, введите:

    ssc_new
  5. Откройте библиотеку Simscape> Utilities и добавьте блок Simscape Component в вашу модель. Сначала, блок не указывает ни на какой файл компонента, поэтому это не имеет никаких портов, и в значке блока говорится Unspecified.

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

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

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

  9. Щелкните по ссылке Source code, чтобы начать редактировать исходный код. Измените имя блока и описание:

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

  11. Объявите выход 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
    
    
  12. Обновите блок снова. Значок блока теперь имеет дополнительный выходной порт физического сигнала e.

  13. Соедините блок с простой тестовой буровой установкой, чтобы проверить правильную эффективность.

    Примечание

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

Связанные примеры

Больше о