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

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

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

  1. Откройте 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
    
  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.

Похожие примеры

Подробнее о