exponenta event banner

Тематическое исследование - Электрохимическая библиотека

Начало

В этом примере рассматриваются более сложные темы создания пользовательских библиотек Simscape™. В ней используется библиотека примеров для моделирования электрохимических систем. Библиотека представляет новую электрохимическую область и определяет все основные компоненты, необходимые для построения электрохимических моделей, включая электрохимическую ссылку, через и между датчиками, источниками и междоменным компонентом. В этом примере иллюстрируются некоторые важные функции моделирования физических сетей, такие как выбор переменных сквозной и поперечной, а также способы преобразования мощности между доменами. Перед просмотром этого более подробного примера рекомендуется ознакомиться с предыдущим разделом «История успеха - базовая библиотека пользовательских блоков».

Библиотека примеров создается на вашем пути так, что она легко исполнима. Однако рекомендуется скопировать исходные файлы в новый каталог, для которого у вас есть разрешение на запись, и добавить этот каталог в путь MATLAB ®. Это позволит внести изменения и перестроить библиотеку под себя. Исходные файлы для библиотеки примеров находятся в следующем каталоге пакета :

matlabroot/toolbox/physmod/simscape/simscapedemos/+ElectroChem

где matlabroot - корневой каталог MATLAB на компьютере, возвращаемый путем ввода

matlabroot

в окне команд MATLAB.

После копирования файлов измените имя каталога +ElectroChem на другое имя, например +MyElectroChem, чтобы ваша копия библиотеки создавалась с уникальным именем.

Построение пользовательской библиотеки

Для построения библиотеки введите

ssc_build MyElectroChem

в окне команд MATLAB. Если здание из +MyElectroChem каталог пакета, вы можете опустить аргумент и тип просто

ssc_build

По завершении построения откройте созданную библиотеку, введя

MyElectroChem_lib

Дополнительные сведения о процессе построения библиотеки см. в разделе Создание пользовательских библиотек блоков.

Определение нового домена

Программное обеспечение Simscape поставляется с несколькими областями Foundation, такими как механические поступательные, механические вращательные, электрические, гидравлические и т. д. По возможности используйте эти предопределенные домены. Например, при создании новых электрических компонентов используйте электрический домен Foundation foundation.electrical.electrical. Это обеспечивает подключение компонентов к стандартным блокам Simscape.

В качестве примера применения, требующего добавления новой области, рассмотрим батарею, в которой нижележащие уравнения включают как электрические, так и химические процессы [1].

Электрохимическая батарея, приводящая в действие резистивную нагрузку R

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

Pb↔Pb2++2e−

Fe2+↔Fe3++e−

Этот ток приводит к окислению свинца и восстановлению железа, при этом общая реакция определяется следующим образом:

Pb+2Fe3+↔Pb2++2Fe2+

Химическая реакция может быть смоделирована с использованием сетевых концепций переменных Through и Across (подробнее см. Основные принципы моделирования физических сетей). Переменная Сквозной (Through) представляет поток, а переменная Поперечный (Across) - усилие. При выборе переменных Через (Through) и Поперек (Across) следует использовать единицы измерения СИ, и произведение этих двух переменных обычно выбирается таким образом, чтобы иметь единицы измерения мощности.

В электрохимических реакциях очевидным выбором для переменной Through является молярная n˙ расхода ионов, измеренная в единицах SI моль/с. Соответствующая переменная Поперечный называется химическим потенциалом и должна иметь единицы измерения J/моль, чтобы гарантировать, что произведение переменных Сквозной и Поперечный имеет единицы измерения мощности J/s. Химический потенциал или свободная энергия Гибба на моль определяется следующим образом:

λ = мк0 + RTlna

где мк0 - стандартный химический потенциал состояния, R - идеальная газовая постоянная, T - температура, а a - активность. В общем, активность может быть функцией ряда различных параметров, включая концентрацию, температуру и давление. Здесь предполагается, что активность пропорциональна молярной концентрации, определяемой как число молей растворенного вещества, деленное на массу растворителя.

Чтобы увидеть определение электрохимического домена, откройте файл Simscape +MyElectroChem/ElectroChem.ssc.

domain ElectroChem
% Electrochemical Domain
% Define through and across variables for the electrochemical domain

% Copyright 2008-2014 The MathWorks, Inc.

    variables
        % Chemical potential
        mu = { 1.0 'J/mol' };
    end

    variables(Balancing = true)
        % Molar flow
        ndot = { 1.0 'mol/s' };
    end

end

Молярное фундаментальное измерение и единица измерения предопределены в реестре единиц Simscape. Если бы этого не было, вы могли бы добавить его с помощью:

pm_adddimension('mole','mol')

Структурирование библиотеки

Рекомендуется структурировать библиотеку путем добавления иерархии. Для этого можно разделить каталог пакета на подкаталоги, каждое имя подкаталога начинается с + персонаж. Если вы посмотрите на +MyElectroChem каталог, вы увидите, что он имеет подкаталоги +Elements, +Sensors, и +Sources. Откройте библиотеку, введя MyElectroChem_lib, и вы увидите три соответствующих поддиапазона.

Определение ссылочного компонента

Физическая сеть должна иметь опорный блок, по которому измеряются переменные Поперек. Так, например, библиотека Foundation содержит блок Electrical Reference для электрической области, блок Mechanical Rotational Reference для вращательной механической области и так далее. Электрохимический нулевой химический потенциал определяется файлом компонентов +MyElectroChem/+Elements/Reference.ssc.

component Reference
% Chemical Reference
% Port A is a zero chemical potential reference port.

% Copyright 2008-2016 The MathWorks, Inc.

    nodes
        A = ElectroChem.ElectroChem; % A:top
    end

    connections
        connect(A, *);
    end

end

Компонент имеет один электрохимический порт с именем A, расположенный в верхней части значка блока.

Компонент использует соединение с неявным ссылочным узлом:

connect(A, *);

Дополнительные сведения о соединениях компонентов и синтаксисе неявного узла ссылки см. в разделе Соединения с неявным узлом ссылки.

Определение идеального исходного компонента

Идеальный источник поперек обеспечивает постоянное значение переменной Поперек независимо от значения переменной Сквозной. В электрической области это соответствует блоку источника постоянного напряжения в библиотеке Foundation. В библиотеке примеров файл компонента +MyElectroChem/+Sources/ChemPotentialSource.ssc реализует эквивалентный источник для химического домена.

component ChemPotentialSource
% Constant Potential Source
% Provides a constant chemical potential between ports A and B.

% Copyright 2008-2013 The MathWorks, Inc.

    nodes
        A = ElectroChem.ElectroChem; % A:top
        B = ElectroChem.ElectroChem; % B:bottom
    end

    parameters
        mu0 = {0, 'J/mol'}; % Chemical potential
    end

    variables(Access=private)
        ndot = { 0, 'mol/s' }; % Molar flow rate
    end

    branches
        ndot: A.ndot -> B.ndot; % Through variable ndot from node A to node B
    end

    equations
        let
            mu = A.mu - B.mu; % Across variable from A to B
        in
            mu == mu0;
        end
    end

end

Двойство идеального источника Поперек является идеальным источником Сквозной, который поддерживает переменную Сквозной до некоторого заданного значения независимо от значения переменной Поперечный. В электрической области это соответствует блоку источника постоянного тока в библиотеке Foundation. В библиотеке примеров этот источник не реализован.

Определение компонентов измерения

Для каждого домена требуется блок измерения сквозной и поперечной. В библиотеке примеров файл компонента +MyElectroChem/+Sensors/SensorThrough.ssc реализует датчик молярного расхода.

component SensorThrough
% Molar Flow Sensor
% Returns the value of the molar flow between the A and the B port
% to the physical signal port PS.

% Copyright 2008-2013 The MathWorks, Inc.

    nodes
        A = ElectroChem.ElectroChem; % A:top
        B = ElectroChem.ElectroChem; % B:bottom
    end

    outputs
        out  = { 0, 'mol/s' }; % PS:top
    end

    variables(Access=private)
        ndot = { 0, 'mol/s' }; % Molar flow rate
    end

    branches
        ndot: A.ndot -> B.ndot; % Through variable ndot from node A to node B
    end

    equations
        let
            mu = A.mu - B.mu; % Across variable from A to B
        in
            mu == 0;     % No potential drop
            out == ndot; % Equate value of molar flow to PS output
        end
    end

end

Скорость потока представлена как физический сигнал, который затем, в свою очередь, может быть передан в Simulink через блок PS-Simulink Converter. branches раздел и let оператор в разделе уравнений определяет взаимосвязь между переменными Through и Across для датчика. В этом случае идеальный датчик расхода имеет нулевое падение потенциала, то есть mu = = 0, гдеmu - химический потенциал. Второе уравнение присваивает выходному физическому сигналу значение переменной Through.

Файл компонента +MyElectroChem/+Sensors/SensorAcross.ssc реализует датчик химического потенциала.

component SensorAcross
% Chemical Potential Sensor
% Returns the value of the chemical potential across the A and B ports
% to the physical signal port PS.

% Copyright 2008-2013 The MathWorks, Inc.

    nodes
        A = ElectroChem.ElectroChem; % A:top
        B = ElectroChem.ElectroChem; % B:bottom
    end

    outputs
        out  = { 0, 'J/mol' }; % PS:top
    end

    variables(Access=private)
        ndot = { 0, 'mol/s' }; % Molar flow rate
    end

    branches
        ndot: A.ndot -> B.ndot; % Through variable ndot from node A to node B
    end

    equations
        let
            mu = A.mu - B.mu; % Across variable from A to B
        in
            ndot == 0; % Draws no molar flow
            out == mu; % Equate value of chemical potential difference to PS output
        end
    end

end

Химический потенциал представлен как физический сигнал, который затем, в свою очередь, может быть передан в Simulink через блок PS-Simulink Converter. branches раздел и let оператор в разделе уравнений определяет взаимосвязь между переменными Through и Across для датчика. В этом случае идеальный датчик химического потенциала не притягивает поток, то есть ndot = = 0, гдеndot - расход. Второе уравнение присваивает выходному физическому сигналу значение переменной Поперек.

Определение основных компонентов

После создания блоков измерения и привязки следующим шагом будет создание блоков, определяющих поведенческие отношения между переменными Сквозной (Through) и Поперечный (Across). В электрической области, например, такими компонентами являются резистор, конденсатор и индуктор.

В качестве примера основного электрохимического компонента рассмотрим химическое восстановление или окисление иона, которое можно рассматривать как электрохимический эквивалент нелинейного конденсатора. Определяющими уравнениями в терминах переменных Through (Сквозной) и Across (Поперечный)

n˙=ν

a = nC0M

λ = мк0 + RTlna

где n - число молей иона, C0 - стандартная концентрация 1 моль/кг, а М - масса растворенного вещества.

Чтобы увидеть реализацию этих уравнений, откройте файл +MyElectroChem/+Elements/ChemEnergyStore.ssc.

component ChemEnergyStore
% Chemical Energy Store :1 :fixed
% Represents a solution of dissolved ions. The port A presents the
% chemical potential defined by mu0 + log(n/(C0*M))*R*T where mu0 is the
% standard state oxidizing potential, n is the number of moles of the ion,
% C0 is the standard concentration of 1 mol/kg, M is the mass of solvent,
% R is the universal gas constant, and T is the temperature.

% Copyright 2008-2015 The MathWorks, Inc.

    nodes
        A = ElectroChem.ElectroChem; % A:top
    end

    parameters
        mu0 = {-7.42e+04, 'J/mol'}; % Standard state oxidizing potential
        m_solvent = {1, 'kg'};      % Mass of solvent
        T = {300, 'K'};             % Temperature
    end

    parameters (Access=private)
        R = {8.314472, '(J/K)/mol'}; % Universal gas constant
        C0 = {1, 'mol/kg'};          % Standard concentration
        n1 = {1e-10, 'mol'};         % Minimum number of moles
    end

    variables
        ndot = { 0, 'mol/s' }; % Molar flow rate
        n  = {value = { 0.01, 'mol' }, priority = priority.high}; % Quantity of ions
    end

    branches
        ndot : A.ndot -> *; % Through variable ndot
    end

    equations
        n.der == ndot;
        if n > n1
            A.mu == mu0 + log(n/(C0*m_solvent))*R*T;
        else
            A.mu == mu0 + (log(n1/(C0*m_solvent)) + n/n1 - 1)*R*T;
        end
    end

end

В этом компоненте представлены две функции языка Simscape, еще не использованные в блоках, которые до сих пор рассматривались. Это:

  • Использование условного оператора в разделе уравнений. Это необходимо для предотвращения принятия логарифма нуля. Следовательно, если молярная концентрация меньше указанного уровня n1, то операнд логарифмической функции ограничен. Без этой защиты решатель может нарушить значение n до нуля или меньше.

  • Определение частных параметров, которые могут использоваться в разделе уравнений. Здесь универсальная газовая постоянная (Rи стандартной концентрации (C0) определяются как частные параметры. Их значения можно также использовать непосредственно в уравнениях, но это снизит читаемость определения. Аналогично, нижний предел молярной концентрации n1 также определяется как частный параметр, но в равной степени мог быть открыт для пользователя.

Определение компонента междоменного взаимодействия

Междоменные блоки позволяют обмениваться энергией между доменами. Например, блок вращательного электромеханического преобразователя в библиотеке Foundation преобразует электрическую и вращательную механическую энергию. Чтобы связать два набора переменных Через (Through) и Поперек (Across), требуются два уравнения. Первый происходит от основного физического закона, а второй - от суммирования полномочий из двух доменов в конвертер, который должен суммировать ноль.

В качестве примера взаимодействующего компонента рассмотрим электрохимическую полуклетку. Мольный расход химических веществ и электрический ток связаны законом Фарадея, который требует, чтобы:

start= izF

где λ - молярный расход, i - ток, z - число электронов на ион, а F - постоянная Фарадея. Второе уравнение происходит от уравнения электрической и химической мощности:

(V2 V1) i = (

которые могут быть переписаны как:

(V2 V1) = (

Это уравнение Нернста, записанное в терминах разности химических потенциалов, (мк2 - мк1). Эти уравнения химико-электрического преобразователя реализованы в файле компонентов +MyElectroChem/+Elements/Chem2Elec.ssc.

component Chem2Elec
% Chemical to Electrical Converter
% Converts chemical energy into electrical energy (and vice-versa)
% assuming no losses. The electrical current flow i is related to the
% molar flow of electrons ndot by i = -ndot*z*F where F is the Faraday
% constant and z is the number of exchanged electrons.

% Copyright 2008-2017 The MathWorks, Inc.

    nodes
        p = foundation.electrical.electrical; % +:top
        n = foundation.electrical.electrical; % -:top
        A = ElectroChem.ElectroChem;  % A:bottom
        B = ElectroChem.ElectroChem;  % B:bottom
    end

    parameters
        z = {1, '1'};                % Number of exchanged electrons
    end

    parameters(Access=private)
        F = {9.6485309e4, 'C/mol'};  % Faraday constant
    end

    variables
        i = { 0, 'A'   };      % Current
        ndot = { 0, 'mol/s' }; % Molar flow rate
    end

    branches
        i   : p.i    -> n.i;    % Through variable i from node p to node n
        ndot: A.ndot -> B.ndot; % Through variable ndot from node A to node B
    end

    equations
        let
            k = 1/(z*F);
            v = p.v - n.v;    % Across variable v from p to n
            mu = A.mu - B.mu; % Across variable mu from A to B
        in
            v == k*mu;    % From equating power
            ndot == -k*i; % Balance electrons (Faraday's Law)
        end
    end

end

Обратите внимание на использование let-in-end конструкция в уравнениях компонентов. Промежуточный термин k объявляется как

k = 1zF

Затем он используется в обоих уравнениях в следующем предложении выражения.

Этот компонент имеет четыре порта, но только два уравнения. Это происходит потому, что компонент взаимодействует с двумя различными физическими сетями. Каждая из сетей имеет два порта и одно уравнение, таким образом удовлетворяя требованию для уравнений n-1, где n - количество портов. В случае междоменного компонента два уравнения связаны, тем самым определяя взаимодействие между двумя физическими доменами.

Константа Фарадея является скрытым параметром, поскольку это физическая константа, которую пользователям не нужно будет изменять. Поэтому он не появится в диалоговом окне блока, созданном из файла компонента.

Настройка внешнего вида библиотеки

Библиотеку можно настроить с помощью lib.m файлы. A lib.m файл, расположенный в каталоге пакетов верхнего уровня, можно использовать для добавления аннотаций. Имя библиотечной модели верхнего уровня создается автоматически в процессе сборки на основе имени пакета верхнего уровня, как package_lib, но можно добавить более описательное имя в библиотеку верхнего уровня в качестве аннотации. Например, открыть +MyElectroChem/lib.m в редакторе MATLAB. Следующая строка аннотирует библиотеку верхнего уровня с ее именем:

libInfo.Annotation = sprintf('Example Electrochemical Library')

В примере электрохимической библиотеки: lib.m файлы также помещаются в каждый каталог подпакетов для настройки имени и внешнего вида соответствующих субблиц. Например, открыть +MyElectroChem/+Sensors/lib.m в редакторе MATLAB. Следующая строка приводит к именованию вспомогательной библиотеки Electrochemical Sensors:

libInfo.Name = 'Electrochemical Sensors';

В отсутствие lib.m файл, библиотека будет названа именем подпакета, то есть Sensors. Дополнительные сведения см. в разделе Файлы конфигурации библиотеки.

Использование пользовательских компонентов для построения модели

В примере аккумуляторного элемента с пользовательским электрохимическим доменом для моделирования свинцово-железной батареи используется электрохимическая библиотека. Для получения дополнительной информации см. пример справки.

Ссылки

[1] Печё, Ф., Б. Аллар, К. Лаллемент, А. Вашу и Х. Морель. «Моделирование и моделирование многопрофильных систем с использованием графиков связи и VHDL-AMS». Международная конференция по моделированию и моделированию графов облигаций (ICBGM). Новый Орлеан, США, 23-27 января 2005 года.