案例分析 - 电化学图书馆

入门

本案例研究探讨建立自定义的Simscape™库的更高级的主题。它使用模拟电化学系统的实例库。该库引入了一个新的电化学域,并限定所有的基本组成部分的需要来构建电化学模型,包括一种电化学参考,通过和整个传感器,源和跨域组件。该示例示出了一些的物理网络建模的显着特征,如通过和横跨的变量,以及电力变换域之间的选择。我们建议您通过一节工作,案例分析 - 基本自定义功能块库看着这个更高级的例子了。

这个例子库已内置和你的路径上,使得它容易执行。但是,建议您将源文件复制到一个新的目录,您具有写权限,并且该目录添加到您的MATLAB®路径。这将允许你做出改变和重建库的自己。对于例如库的源文件是在下面的包目录:

matlabroot/工具箱/ physmod /的Simscape / simscapedemos / +电化学

哪里matlabroot你的机器上的MATLAB的根目录,进入返回的

matlabroot

在MATLAB命令窗口。

复制文件后,更改目录名称电化学+另一个名称,例如+ MyElectroChem,让你的库的副本建立一个独特的名字。

构建定制库

要构建库,键入

ssc_build MyElectroChem

在MATLAB命令窗口。如果从内部建设+ MyElectroChem包目录,则可以省略的说法,只是类型

ssc_build

构建完成后,打开通过键入生成的库

MyElectroChem_lib

有关库的构建过程的详细信息,请参阅构建自定义块库

定义一个新域名

的Simscape软件附带了几个基础领域,如机械平移,旋转机械,电气,液压,等等。如果可能的话,使用这些预定义的域。例如,创建新的电器元件时,使用基金会电领域foundation.electrical.electrical。这将确保您的组件可以连接到标准的Simscape块。

为需要增加一个新的域的应用的一个例子,考虑一个电池其中底层方程涉及电和化学过程[1]。

电化学电池驱动阻性负载R

两个半电池是由防止离子电池之间流动,因此电子从固体铅阳极流向阴极的铂膜分隔。两个半电池反应是:

P b P b 2 + + 2 Ë -

F Ë 2 + F Ë 3 + + Ë -

在引线当前结果被氧化和铁被还原,与由下式给出总反应:

P b + 2 F Ë 3 + P b 2 + + 2 F Ë 2 +

化学反应可使用的网络概念,通过和跨越变量(有关详细信息,请参阅建模模拟物理网络的基本原则)。通变量表示的流动和跨接变量代表的努力。当通过跨和变量选择,你应该使用SI单位和两个变量的产品通常选择有权力的单位。

在电化学反应中,用于通过可变一个显而易见的选择是摩尔流速 ñ ˙ 离子,在摩尔的SI单位测量的/秒。相应的横跨变量称为化学势,而且必须有焦耳/摩尔为单位,以确保通过跨及变量产品具有功率单位,J /秒。化学势或每摩尔吉布斯自由能由下式给出:

μ = μ 0 + [R Ť LN 一个

其中μ0是标准状态下的化学势,[R是完美的气体常数,Ť是温度,和一个是活动。一般情况下,活动可以是许多不同的参数,包括浓度,温度,和压力的函数。这里假定的活性正比于定义为溶剂的质量除以溶质的摩尔数的摩尔浓度。

看到电化学域定义,打开的Simscape文件+ MyElectroChem / ElectroChem.ssc

域电化学%电化学域%定义通过和整个变量用于电化学域%版权所有2008  -  2014年MathWorks公司变量%化学潜在亩= {1.0“焦耳/摩尔”};端变量(平衡= TRUE)%摩尔流量ndot = {1.0 '摩尔/ S'};年底结束

摩尔基本量纲和单位在单位的Simscape注册表中预定义。如果它没有去过,那你可能已经添加了它:

pm_adddimension( '摩尔', '摩尔')

构建图书馆

这是很好的做法,加入层次构建库。要做到这一点,你可以细分包目录到子目录,每个子目录的名称开始与+字符。如果你看一下+ MyElectroChem目录,你会看到它有子目录+元素+传感器+资源。打开通过键入库MyElectroChem_lib,你会看到三个相应的子库。

定义参考组件

物理网络必须有一个参考块,对横跨变量进行测量。因此,例如,基金会库包含用于电域中,机械旋转参考块的旋转机械结构域,等电基准块。电化学零化学势由组件文件中定义+ MyElectroChem / +元素/ Reference.ssc

部件参考%化学参考%端口A是一个零化学势参考端口。%版权所有二〇〇八年至2016年MathWorks公司节点A = ElectroChem.ElectroChem;%A:顶端连接进行连接(A,*);年底结束

该组件具有一个电化学端口,命名为A,位于块图标的顶部。

该组件使用到的隐式引用节点的连接:

连接(A,*);

有关组件连接的详细信息和所述隐式引用节点的语法,见连接到隐参考节点

定义一个理想光源组件

跨源的理想提供了用于跨变量恒定值,而不管通过变量的值的。在电域,这对应于直流电压源的基业库块。在该示例库,组件文件+ MyElectroChem / +源/ ChemPotentialSource.ssc实现对化工领域的等价物源。

部件ChemPotentialSource%恒压源提供%端口A和B.%2008  -  2013年版权MathWorks公司之间的恒定的化学势,Inc.的节点A = ElectroChem.ElectroChem;%A:顶端B = ElectroChem.ElectroChem;%B:底端参数MU0 = {0, '焦耳/摩尔'};%化学势端变量(ACCESS =私人)ndot = {0, '摩尔/ S'};%摩尔流率端分支ndot:A.ndot  - > B.ndot;%通过从节点A到节点B端方程可变ndot让亩= A.mu  -  B.mu;%横跨从A到B中亩== MU0变量;结束结束结束

双重的理想跨源的是通过源的理想,它保持通过可变一些设定值无论在整个变量的值的。在电域中,这对应于直流电流源的基础库阻塞。在该示例中的库,这个源未实现。

定义测量组件

每个域既需要通过和跨测量块。在该示例库,组件文件+ MyElectroChem / +传感器/ SensorThrough.ssc实现了一个摩尔流率传感器。

部件SensorThrough%摩尔流量传感器%返回A和B端口%之间的摩尔流量的物理信号端口PS的值。%2008  -  2013年版权MathWorks公司节点A = ElectroChem.ElectroChem;%A:顶端B = ElectroChem.ElectroChem;%B:底端输出OUT = {0, '摩尔/ S'};%PS:顶端变量(ACCESS =私人)ndot = {0, '摩尔/ S'};%摩尔流率端分支ndot:A.ndot  - > B.ndot;%通过从节点A到节点B端方程可变ndot让亩= A.mu  -  B.mu;%跨可变从A到B中亩== 0;%无势降== ndot;摩尔流量的%齐当值PS输出端端端

流率被表示为物理信号,然后可以依次经由PS-Simulink的转换器块被传递给Simulink中。万博1manbetx该分支机构段和在方程部语句限定穿过之间以及整个变量传感器的关系。在这种情况下,理想的流量传感器具有零电位降,即== 0,其中是化学势。第二个方程分配的值通过变量到物理信号输出。

组件文件+ MyElectroChem / +传感器/ SensorAcross.ssc器具的化学电势传感器。

部件SensorAcross%化学电位传感器%返回在A的化学势和B端口%到物理信号端口PS的值。%2008  -  2013年版权MathWorks公司节点A = ElectroChem.ElectroChem;%A:顶端B = ElectroChem.ElectroChem;%B:底端输出OUT = {0, '焦耳/摩尔'};%PS:顶端变量(ACCESS =私人)ndot = {0, '摩尔/ S'};%摩尔流率端分支ndot:A.ndot  - > B.ndot;%通过从节点A到节点B端方程可变ndot让亩= A.mu  -  B.mu;%跨可变从A到B中ndot == 0;%绘制无摩尔流出==亩;化学势差的%齐当值PS输出端端端

化学势是作为物理信号,然后可以依次经由PS-Simulink的转换器块被传递给Simulink中。万博1manbetx该分支机构段和在方程部语句限定穿过之间以及整个变量传感器的关系。在这种情况下,理想的化学电位传感器不消耗流量,也就是ndot== 0,其中ndot是流率。第二个方程分配的可变跨到物理信号输出的值。

定义基本组件

在创建了测量和参考块,下一步就是要创建定义通过和跨地区变量行为关系块。在电域中,例如,这样的部件是电阻器,电容器和电感。

作为基本电化学元件的一个例子,考虑一个离子的化学还原或氧化,其可以被认为是一个非线性电容器的电化学当量。在通过跨及变量ν术语和μ的定义方程是:

ñ ˙ = ν

一个 = ñ C 0 中号

μ = μ 0 + [R Ť LN 一个

哪里ñ是离子的摩尔数,C0为1摩尔/千克的标准浓度,并中号是溶质的质量。

要查看这些方程的实施,打开文件+ MyElectroChem / +元素/ ChemEnergyStore.ssc

部件ChemEnergyStore%化学能存储:1:固定%代表溶解的离子的溶液。端口A介绍%化学势由MU0 +的log(n /(C0 * M))* R * T其中MU0是%标准状态氧化电位,n是离子的摩尔数,%C0是定义的1摩尔/千克标准浓度,M是溶剂的质量,%R是通用气体常数,T是温度。%版权所有2008  -  2015年MathWorks公司节点A = ElectroChem.ElectroChem;%A:顶端参数MU0 = {-7.42e + 04, '焦耳/摩尔'};%标准状态的氧化电位m_solvent = {1, '公斤'};溶剂的T%质量= {300, 'K'};%温度端参数(接入=私人)R = {8.314472, '(J / K)/摩尔'};%通用气体常数C0 = {1, '摩尔/千克'};%标准浓度N1 = {1E-10, '摩尔'}; % 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,则对数函数的操作数是有限的。没有这种保护,求解器会扰动的价值ñ到等于或小于零。

  • 可以在公式部分使用专用参数的定义。这里的通用气体常数([R)和标准浓度(C0)被定义为私有的参数。他们的价值观也同样可以直接在方程中使用,但是这会降低清晰度的可读性。类似地,在摩尔浓度的下限N1也被定义为一个秘密参数,但同样可以被暴露给用户。

定义跨域接合部件

跨域块允许能量的结构域之间的交换。例如,旋转机电转换器块在电气和旋转机械能之间的基金会库可转换。要涉及两套通过之间以及各变量,需要两个方程。第一个来自底层物理定律,并从两个域的权力总结到转换器,它必须合计为零秒。

作为一个接口部件的一个例子,考虑电化学半电池。化学摩尔流量和电流是由法拉第定律,这需要相关:

ν = 一世 ž F

其中ν是摩尔流速,一世是当前,ž是每离子电子的数量,并F是法拉第常数。第二个方程来自等同的电学和化学的力量:

V 2 - V 1 一世 = μ 2 - μ 1 ν

这可以被改写为:

V 2 - V 1 = μ 2 - μ 1 ν 一世 = μ 2 - μ 1 ž F

这是一个用化学势差的方面能斯特方程,(μ2- μ1)。这些化学电气转换方程由组件文件中实现+ MyElectroChem / +元素/ Chem2Elec.ssc

部件Chem2Elec%化学 - 电转换%化学能转换成电能(和反之亦然)%假定没有损失。电流流i被与电子的%摩尔流量ndot由I = -ndot * Z * F,其中F是法拉第常数%和z为交换的电子的数量。%版权所有2008-2017 MathWorks公司节点P = foundation.electrical.electrical;%+:前n = foundation.electrical.electrical;% - :顶A = ElectroChem.ElectroChem;%A:底部B = ElectroChem.ElectroChem;%B:底端参数Z = {1, '1'};交换电子的%数结束参数(接入=私人)F = {9.6485309e4, 'C /摩尔'};%法拉第常数端变量I = {0, 'A'};%电流ndot = {0, '摩尔/ 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

注意使用的让 - 在终端建设中的组分方程。中间项k被声明为

ķ = 1 ž F

它然后在下面的表达式子句中两个方程中使用。

这部分有四个端口,但只有两个方程。这是因为组件接口的两个不同的物理网络。每个网络都有两个端口,一个方程,从而满足了要求ñ-1方程,其中ñ是端口数。在跨域部件的情况下,这两个方程是耦合的,从而限定了两个物理结构域之间的相互作用。

法拉第常数是一个隐藏的参数,因为它是一个物理常数是阻止用户将不需要改变。因此,就不会出现从组件文件中生成的块对话框。

定制库的外观

该库可以使用定制lib.m文件。一个lib.m位于顶层的包目录文件可以用来添加注解。顶层库模型的名称期间,基于所述顶层包名生成过程自动构造,如_lib,但可以作为一个注解顶级库中添加一个更具描述性的名称。例如,打开+ MyElectroChem / lib.m在MATLAB编辑器。下面的线标注其名称顶级库:

libInfo.Annotation = sprintf的( '实施例电化学库')

在电化学库的例子,lib.m文件也放置在每个子包目录定制的名称和相应的子文库的外观。例如,打开+ MyElectroChem / +传感器/ lib.m在MATLAB编辑器。以下行导致被命名为子库电化学传感器

libInfo.Name = '电化学传感器';

在不存在的lib.m文件,该库将分包的名字,那就是来命名,传感器。欲了解更多信息,请参阅库配置文件

使用自定义组件来构建模型

电池单元使用自定义域名电化学示例使用电化学库以铅铁电池建模。更多信息请参见例子帮助。

参考

[1]佩奇尤克斯,F.,B.阿拉德,C.拉勒门特,A. Vachoux和H.莫瑞尔。“建模和多学科系统的仿真用键合图和VHDL-AMS。”国际会议上的键合图建模与仿真(ICBGM)。美国新奥尔良,2005年1月23日至27日