exponenta event banner

Прототип компонента и мгновенная обратная связь

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

Чтобы блок отражал изменения в базовом источнике, щелкните правой кнопкой мыши значок блока и в контекстном меню выберите «Simscape» > «Обновить исходный код». В случае ошибки (например, опустить end ключевое слово) при редактировании источника компонента, затем при обновлении блока компилятор выдает диагностическое сообщение об ошибке, указывая на соответствующую строку в коде.

  1. Откройте диалоговое окно Simscape > Foundation Library > Electrical > Electrical Elements > Variable Resistor block и щелкните ссылку Source code. Базовый исходный код откроется в окне Редактор.

    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». Сначала блок не указывает ни на один файл компонента, поэтому у него нет портов, и значок блока говорит Unspecified.

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

  7. Нажмите кнопку ОК. Значок блока обновляется и отражает выбранный исходный компонент. Теперь он имеет два сохраняющихся электрических порта, + и -, и физический входной сигнальный порт PS.

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

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

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

  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. Поэтому при сохранении модели испытательной установки обязательно присвойте ей другое имя, например: my_var_res_test.

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

Подробнее