Это тематическое исследование объясняет, как создать вашу собственную библиотеку авторских блоков на основе файлов компонента. Это пользуется библиотекой в качестве примера конденсаторных моделей. Библиотека использует Основу Simscape™ электрическая область и задает три простых компонента. Для более усовершенствованных тем, включая добавление нескольких уровней иерархии, добавление новых областей и настройка внешнего вида библиотеки, видят Тематическое исследование — Электрохимическая Библиотека.
Библиотека в качестве примера приезжает созданная и в ваш путь так, чтобы это было с готовностью исполняемо. Однако рекомендуется, чтобы вы скопировали исходные файлы в новую директорию, для которой вы имеете разрешение записи и добавляете что директория в ваш путь MATLAB®. Это позволит вам вносить изменения и восстанавливать библиотеку для себя. Исходные файлы для библиотеки в качестве примера находятся в следующей директории пакета:
matlabroot/toolbox/physmod/simscape/simscapedemos/+Capacitors
где matlabroot
является корневым каталогом MATLAB на вашей машине, как возвращено путем ввода
matlabroot
в окне Команды MATLAB.
После копирования файлов измените имя каталога +Capacitors
на другое имя, например, +MyCapacitors
, так, чтобы ваша копия библиотеки создала с уникальным именем.
Чтобы создать библиотеку, ввести
ssc_build MyCapacitors
в Окне Команды MATLAB. При создании из директории пакета +MyCapacitors
можно не использовать аргумент и ввести только
ssc_build
Когда сборка завершится, откройте сгенерированную библиотеку путем ввода
MyCapacitors_lib
Для получения дополнительной информации о процессе сборки библиотеки смотрите Библиотеки Авторского блока Создания.
Чтобы добавить блок, запишите соответствующий файл компонента и поместите его в директорию пакета. Например, блок Ideal Capacitor в вашей библиотеке MyCapacitors_lib
производится файлом IdealCapacitor.ssc
. Откройте этот файл в редакторе MATLAB и исследуйте его содержимое.
component IdealCapacitor % Ideal Capacitor % Models an ideal (lossless) capacitor. The output current I is related % to the input voltage V by I = C*dV/dt where C is the capacitance. % Copyright 2008-2017 The MathWorks, Inc. nodes p = foundation.electrical.electrical; % +:top n = foundation.electrical.electrical; % -:bottom end parameters C = { 1, 'F' }; % Capacitance end variables i = { 0, 'A' }; % Current v = {value = { 0, 'V' }, priority = priority.high}; % Voltage drop end branches i : p.i -> n.i; % Through variable i from node p to node n end equations assert(C > 0) v == p.v-n.v; % Across variable v from p to n i == C*v.der; % Capacitor equation end end
Во-первых, давайте исследуем элементы файла компонента, которые влияют на внешний вид блока. Дважды кликните блок Ideal Capacitor в библиотеке MyCapacitors_lib
, чтобы открыть ее диалоговое окно и сравнить значок блока и диалоговое окно к содержимому файла IdealCapacitor.ssc
. Имя блока, Идеальный Конденсатор, взято из комментария к строке 2. Комментарии к строкам 3 и 4 затем взяты, чтобы заполнить описание блока в диалоговом окне. Порты блока заданы разделом узлов. Выражения комментария в конце каждой строки управляют меткой порта и местоположением. Так же в разделе параметров, комментарии используются, чтобы задать названия параметра в диалоговом окне блока. Для получения дополнительной информации смотрите Настройку Имени блока и Внешнего вида.
Также заметьте, что в разделе уравнения существует утверждение, чтобы гарантировать, что значение емкости всегда больше, чем нуль. Это - хорошая практика, чтобы гарантировать, что компонент не используется за пределами его области валидности. Блокам библиотеки Simscape Foundation реализовали такие проверки, где это необходимо.
В этой библиотеке в качестве примера существует два дополнительных компонента, которые могут использоваться для моделирования суперконденсатора. Эти компоненты являются эволюциями Идеального Конденсатора. Это - хорошая практика, чтобы инкрементно создать модели компонента, добавляя и тестируя дополнительные функции, когда они добавляются.
Идеальный суперконденсатор
Суперконденсаторы, как их имя предполагает, являются конденсаторами с очень высоким значением емкости. Отношение между напряжением и зарядом не является постоянным, в отличие от этого, для идеального конденсатора. Предположим, что таблица данных производителя дает график емкости как функция напряжения, и та емкость увеличивается приблизительно линейно с напряжением от 1 фарады на уровне нулевых вольт к 1,5 фарадам, когда напряжение составляет 2,5 вольта. Если напряжение емкости обозначается v, то емкость может быть аппроксимирована как:
Для конденсатора, текущего i и напряжения v связаны стандартным уравнением
и следовательно
где C0 = 1 и Cv = 0.2. Это уравнение реализовано следующей строкой в разделе уравнения файла Simscape IdealUltraCapacitor.ssc
:
i == (C0 + Cv*v)*v.der;
Для программного обеспечения Simscape, чтобы интерпретировать это уравнение, переменные (v
и i
) и параметры (C0
и Cv
) должны быть заданы в разделе объявления. Для получения дополнительной информации смотрите, Объявляют, что Variablesand Компонента Объявляют Параметры Компонента.
Реализация некоторых уравнений компонента требует использования внутренних переменных. Пример при реализации суперконденсатора с резистивными потерями. Существует два резистивных условия, эффективное серийное сопротивление R и сопротивление саморазряда Rd. Из-за топологии это не возможно к непосредственно специальному конденсаторные уравнения с точки зрения через и через переменные i и v.
Суперконденсатор с резистивными потерями
Этот блок реализован файлом компонента LossyUltraCapacitor.ssc
. Откройте этот файл в редакторе MATLAB и исследуйте его содержимое.
component LossyUltraCapacitor % Lossy Ultracapacitor % Models an ultracapacitor with resistive losses. The capacitance C % depends on the voltage V according to C = C0 + V*dC/dV. A % self-discharge resistance is included in parallel with the capacitor, % and an equivalent series resistance in series with the capacitor. % Copyright 2008-2017 The MathWorks, Inc. nodes p = foundation.electrical.electrical; % +:top n = foundation.electrical.electrical; % -:bottom end parameters C0 = { 1, 'F' }; % Nominal capacitance C0 at V=0 Cv = { 0.2, 'F/V'}; % Rate of change of C with voltage V R = {2, 'Ohm' }; % Effective series resistance Rd = {500, 'Ohm' }; % Self-discharge resistance end variables i = { 0, 'A' }; % Current vc = {value = { 0, 'V' }, priority = priority.high}; % Capacitor voltage end branches i : p.i -> n.i; % Through variable i from node p to node n end equations assert(C0 > 0) assert(R > 0) assert(Rd > 0) let v = p.v-n.v; % Across variable v from p to n in i == (C0 + Cv*vc)*vc.der + vc/Rd; % Equation 1 v == vc + i*R; % Equation 2 end end end
Дополнительная переменная используется, чтобы обозначить напряжение через конденсатор, vc. Уравнения могут затем быть выражены с точки зрения v, i и vc с помощью тока Кирхгоффа и законов о напряжении. При подведении итогов токов в конденсаторе + узел дает первое уравнение Simscape:
i == (C0 + Cv*vc)*vc.der + vc/Rd;
Подведение итогов напряжений дает второе уравнение Simscape:
v == vc + i*R;
Как проверка, количество уравнений, требуемых для компонента, используемого в одной связанной сети, дано суммой количества портов плюс количество внутренних переменных минус одна. Это не обязательно верно для всех компонентов (например, одним исключением является масса), но в целом это - хорошее эмпирическое правило. Здесь это дает 2 + 1 - 1 = 2.
В файле Simscape начальное условие (начальное напряжение в этом примере) применяется к переменной vc
с priority = priority.high
, потому что это - дифференциальная переменная. В этом случае vc
с готовностью идентифицируется как дифференциальная переменная, когда это имеет der
(дифференциатор), оператор применился к нему.
Конденсаторным блокам в библиотеке MyCapacitors_lib
в качестве примера сопоставили значки с ними.
Во время сборки библиотеки, если существует файл изображения в директории с тем же именем как файл компонента Simscape, то это используется, чтобы задать значок для блока. Например, блок Ideal Capacitor, заданный IdealCapacitor.ssc
, использует IdealCapacitor.jpg
, чтобы задать его значок блока. Если вы не включаете файл изображения, то блок отображает свое имя вместо значка. Для получения дополнительной информации смотрите, Настраивают Значок Блока.