SMILELAND

善始者实繁,克终者盖寡。


  • Home

  • About

  • Categories

  • Archives

  • Tags

  • Search

2020-01-19-中压配网高阻接地故障检测的建模研究

Posted on 2020-01-19

《Modeling Study for High Impedance Fault Detection in MV Distribution System》

Cui T, Dong X, Bo Z, et al. Modeling study for high impedance fault detection in MV distribution system[C]//2008 43rd International Universities Power Engineering Conference. IEEE, 2008: 1-5.

DOI: 10.1109/UPEC.2008.4651507 

摘要

建模研究为高阻抗故障(HIF)检测的研究提供了一种更有效,更灵活的方法。 能够揭示HIF的大多数功能的准确模型非常重要。 在对记录的测试结果进行广泛研究的基础上,本文总结了一组最常见且令人满意的特征:电弧特征,非线性,随时间变化的电阻和随机性。 已经公开了可以重构这些特征的仿真建模方法。 利用ATP-EMTP模型,提出了一种基于一系列时变接地电阻和动态电弧电阻的HIF模型。 为了重建HIF的这些细节特征,已经测试了电弧参数及其影响。 随机因素已被引入该模型的HIF行为不稳定。最后,通过将该模型应用于模拟的MV系统,初步讨论了几种特征提取和检测方法。

1. Introduction

高阻抗故障(HIF)通常定义为导体在非导电表面上的不必要的电接触,从而限制了故障电流,使常规继电器的检测水平降低[1]。 由于HIF通常是由在公众范围内被压倒但通电的导体引起的,并且大多带有电弧,因此对人身安全和财产安全构成了巨大威胁。 因此,HIF检测早已成为保护工程师关注的重点。但这仍然是一个未解决的问题。

由于没有明显的稳态故障特征,因此基本的短路模型不适合HIF研究。因此,使用特殊的波形和故障电流/电压的不稳定行为来识别此类故障。 罗素与TAMU的研究人员进行了各种现场测试。 已经使用了谐波能量,频谱,电弧模式和随机性等HIF特征,并提出了一种具有专家系统的复合算法[2]。 在各种细节特征中,三次谐波匝数更加实用和独特,三次谐波的相位角和幅度被证明是HIF的独特特征[3] [4],而大多数情况下,随机故障间歇是HIF的共同特征。 在大多数阶段测试中[2] [5]。

以前有关HIF检测的许多研究高度依赖于现场测试。 昂贵的阶段测试和不可预测的实验条件禁止在各种系统条件下对HIF进行全面研究。 因此,基于实际测试的结果,对于HIF检测的研究非常必要的是可以准确表示这些特征的数学模型。 已经提出了几种HIF模型:Nam通过使用时变电阻来拟合HIF来模拟HIF [6],Michalik使用弧形模型来描述HIF的详细波形[7],而Elkalashy也使用通用模型 表示HIF电弧故障特征的电弧模型[8]。

由于某些最显着的波形失真是由电弧引起的,例如周期性的失超,重燃,随机故障爆发,以及更大范围内的故障非线性。 弧模型的研究是HIF建模的方法。尽管HIF电弧与大多数电弧模型不同,后者专注于高压开关设计,超高压线路故障定位或自动重合闸系统[9]。 对于HIF,电弧通常位于不受限制的空间内,具有较短的长度和较低的系统电压。 因此,应指定弧的参数。

本文在对现场数据进行研究的基础上,对HIF的机理进行了分析和总结。 详细介绍了具有电弧热方程式和可变接地电阻的仿真模型。 弧模型参数是所提出模型的一个非常重要的方面。通过全面扫描弧的参数,可以重构HIF弧的不同行为并进行相应分类。 包括随机性和瞬态性在内的其他因素也旨在表示配电系统中HIF功能的更多功能。 利用随机因素,已经重建了间歇行为。 在使用分布式参数馈送器测试模型时,已揭示出HIF的快速瞬态功能。

本文的组织结构为:第二部分是现场测试数据和HIF机制的摘要; 使用ATP-EMTP进行建模的方法和模型的检验在第三部分中; 在第四节中,使用该HIF模型对MV系统进行了仿真,还初步揭示了一些功能。

2. HIF现场数据和机制

A. 现场数据

以下是从德州电力公司,台湾电力公司和TAMU的实际现场测试中借来的数字,它们代表了各种HIF阶段测试波形。 图1(a)和(b)说明了这些详细的波形失真。 图1(c)说明了较长时间范围内HIF的随机性。

enter description here

上面的典型高阻抗故障电流图表明了HIF特性的不同方面:1)在详细范围内,过零电流附近的特定畸变是电弧[7] [8]的明显特征; 2)在每个周期的范围内,由于接地电阻非线性[3] [4],波形看起来像正常的正弦波电流,由于谐波而失真。 3)在更长的时间范围内,HIF会以间歇性模式爆发并熄灭[2] [5]。

在各种文档中,这些功能被引用为HIF的最常见特征,因此已经开发出许多检测技术来利用这些功能。

B. HIF机制-电弧

尽管电流波形在以上不同情况下的行为有所不同,但仍有一些HIF的潜在机制有助于上述这些共同特征。 本文工作的目的是基于这些机制对HIF进行建模。 弧及其相应的影响在这些方面起着重要作用。

1)典型的电弧特征:与正常的短路故障不同,HIF产生的稳态电流有限,对于典型的12.5 kV系统,故障电流范围为10至50A [1]。 因此,弧的细节特征不再可忽略。 电弧实际上塑造了特殊的细节,例如穿越零淬火和故障电流的重新点火。

2)引起谐波失真的接地电阻的非线性也可以通过故障/电弧路径的热特性来简单地解释:当电流下降时,注入功率也下降,由于冷却而造成功率损耗, 故障路径将减小,从而使电流的绝对值低于相交零点附近的标准正弦波,因此,将谐波注入故障电流。

3)在大多数HIF情况下,电弧放电路径是在空气中且冷却条件较好的情况下进行的,这使电弧更容易熄灭,并导致HIF电流断断续续。其他事实(例如导体的随机摆动和电弧运动)也有助于HIF的间歇/随机功能。

如图1所示,并非每个HIF都具有所有这些特征,但是所有这些特征都导致了HIF的一个相对共同的组成部分:断层电弧,随机的熄灭/重击行为以及更大的接地电阻率。 而本文的HIF模型就是基于这些机制的。

3. HIF 建模

A. 用ATP-EMTP建立模型

在本节中,对10 kV系统中的典型HIF进行了分析和建模,通过选择具有适当参数设置的电弧模型以及在电弧模型中包括随机因素,可以实现上述空气电弧特性。

大多数HIF是单相接地故障[1]。 在故障点,HIF由两部分组成:1)导体与非导体之间的动态交流电弧; 2)故障路径电阻,通常是树木,建筑物或地面。因此,HIF模型可以由一系列两个可变电阻器来表示:瞬态电弧电阻器和稳态较高故障路径电阻器[6]。 前一个$R_{ARC}$描述了由电弧引起的每个周期的波形的细节(熄弧和重燃)。 后一个$R_P$表示根据接地电阻率和介电条件而变化的故障路径电阻。

enter description here

由ATP-EMTP的不同MODELS模块控制的两个随时间变化的电阻已用于构建这两个电阻。

对于动态电弧电阻$R_{ARC}$,有多种建模方法。 黑匣子模型仅通过使用外部信息(例如电弧电流和电压)来描述电弧的电气特性,因此它们更适合于本研究。 Cassie模型和Mayr模型是最有代表性的电弧模型,它们基于具有相似思想的热方程:电弧电导与电弧放电路径中的热量有关,但是它们具有不同的恒定参数假设。 这两个模型及其推导已广泛用于电弧的研究,例如断路器,自动重合闸系统和故障定位的研究[9]。 对于我们对HIF弧的特定研究,选择了Mayr方程,因为它最适用于小电流,尤其适用于表示电弧过零点的特性。

Mayr方程是。

\[\frac{1}{g} \frac{d g}{d t}=\frac{d \ln g}{d t}=\frac{1}{\tau_{m}}\left(\frac{E i}{P_{m}}-1\right)\tag{1}\]

式中,$g$是单位长度的电弧电导。 $τ_m$是时间常数,表示电弧的温度惯性。 $P_m$是每长度电弧的功率损耗; $E$是每长度的弧径电势; $i$是电弧电流。 在这个方程中,电弧的热状态由两部分表示:热源是电能注入$E_i$; 热损失是假设的恒定功率损失$P_m$; 热条件对电导$g$的变化的影响具有一个以$τ_m$表示的时间延迟。

对于交流电弧,当电流在每个周期接近零,$Ei <P_m$时,电弧内部的热量将减少,电导$g$也将减少,由于时间常数$τ_m$,$g$的变化将滞后。 因此,从当前的零交叉点开始会有最低电导点的延迟,从而使电弧持续存在,并在每个周期内都围绕零交叉点出现灭弧和重燃。

另外,谐波,特别是具有特定相位的三次谐波也可以简单地进行解释:如果三次谐波都过零时与基波相比的相位大约为180º,则三次谐波会减弱基波电流,使其低于理想正弦波 在零点附近波动。 这也是公式(1)的意义。

对于上述典型的Mayr电弧模型,具有更长的时间延迟$τ_m$和更低的功率损耗$P_m$(较差的冷却条件),电弧将更可能稳定持续。 矛盾的是,更好的冷却条件意味着,由于较低的$τ_m$和较高的$P_m$,排出路径内部的热量将更快地散发。 因此,在更好的冷却条件下,电弧可能更容易完全自熄。 通常,Mayr的模型用于有限空间(开关室)中的断路器设计。 对于露天故障电弧,冷却条件($τ_m$和$P_m$)和电弧形状(由电弧长度表示)是可变的,应加以调整。 而且,露天的更好的冷却条件将使电弧更容易熄灭。 这导致了随机性特征。

对于状态稳定电阻$R_P$,本文估算的主要考虑因素是接地电阻率,该值随土壤类型,温度,湿度和许多其他因素而变化。 典型的接地电阻率ρ从中等水平的300Ωm(在页岩中)到非常高的水平(在粗砂中)[3000]变化[12]。 假设故障点处的HIF由半径为$r_1 = 5 cm$的圆柱电极表示。接地电阻可以通过$R =ρ/(2πr_1)$来计算。 电阻值的范围为1kΩ至10kΩ。因此,在此模型中,$R_P$的变化范围为10kΩ至5kΩ,并沿时间轴变化。

对于使用EMTP的MODELS进行建模,从电源电路中获取电弧的电压和电流,并在每个模拟步骤中将其馈入MODELS的输入,然后根据这些输入,通过以下方式,MODELS可以用于求解(1):

\[\begin{aligned} (\ln g)_{t} &=(\ln g)_{t_{0}}+\int_{t_{0}}^{t} \frac{1}{\tau_{m}}\left(\frac{E i}{P_{m}}-1\right) d t \\ &=(\ln g)_{t-\Delta t}+\frac{\Delta t}{2}\left(\frac{1}{\tau_{m}}\left(\frac{E i}{P_{m}}-1\right)_{t-\Delta t}+\frac{1}{\tau_{m}}\left(\frac{E i}{P_{m}}-1\right)_{t}\right) \end{aligned}\tag{2}\]

$t_0$是故障开始时间,$t$是当前仿真时间。 $Δt$是时间步长。 订阅t表示当前时间步的数据,t –Δ t表示最后计算步的历史数据。 然后,结果g将在下一个模拟步骤中作为可变电弧电阻应用于电源电路。

B. HIF模型结果的示例

下图是一个HIF模型的电弧电流示例的结果,考虑到室外的冷却条件,电弧功率损耗$P_m$设置为8 kW / m(正常值为3 kW / m),电弧 长度为5厘米,时间常数$τ_m$设置为600us。

enter description here enter description here enter description here

图3中的电压和电流的测量是在弧点处进行的。 但是,对于位于母线的故障检测器,由于较低的电弧电压和较高的路径阻抗,因此难以获得准确的电弧电压。 对于平衡接地系统,该电弧电流可以在相线接地故障的情况下从中性线电流获得。

C. 测试和辨识电弧参数

对于此动态电弧模型,三个参数:$P_m$,$τ_m$和电弧长度确定它是自熄电弧还是稳定持续电弧,并且这些参数还会导致HIF电流的形状不同以及电弧畸变程度。

具有更好的冷却条件:更大的功率损耗或更低的延时,HIF电弧往往更容易熄灭。

enter description here

在图4中,当电流过零时,HIF电弧电流消失,这种机制有助于实现HIF电弧最常见的间歇性特征。

enter description here

通过不同的参数,此HIF电弧电流的形状会发生变化,如图5所示。

对于持续稳定的电弧,周期性失真将随着功率损耗的增加和/或时间常数的减小而增加。 换句话说,在更好的冷却条件下变形会更高。

此外,如前所述,如果冷却条件达到更高的水平,电弧可能会自行熄灭。 通过在10 kV交流电压源下扫描该模型的所有三个参数,下图显示了熄灭和持续电弧放电情况的边界。

enter description here

在图6中,右下方是“电弧稳定持续”参数区域:较低的功率损耗和较高的时间常数表示较差的冷却条件。 相反,左上方的“电弧自熄”参数区具有更好的冷却条件,电弧将在爆裂后几个周期在零交叉点处自熄。 如图1(c)所示,随机重发会导致间歇性中断。 此外,如图5所示,参数在边界附近的持续弧似乎具有较高的周期性失真。

D. 修正(随机因素)

由于复杂的现场情况,这三个电弧参数是可变的。 因此,通过将随机因素引入这些参数,开发了一种HIF模型,旨在重建第二节中的随机特征。

在图6中,当将正常参数设置在持久区域的边界附近,并在这些参数之一中引入随机偏差时,可以描述随机间歇但仍具有详细弧特征的波形:

enter description here

在图7中,时间常数设置为$τ_m = 600us·(1±0.25·Rnd)$,其中Rnd是由EMTP生成的均匀分布的随机数,范围为0到1。$P_m = 9 kW / m$, 弧长为5 cm,位于图6中的边界之一。 电流过零后的每半个周期,将产生一个新的$τ_m$,为下一次电流过零做准备。

通过这种方式,HIF弧模型具有详细特征以及间断/随机特征。 在下一部分中,此模型用于模拟MV系统中,以进一步提取特征。

4. 系统仿真及检测方法

A. 系统仿真

本节采用中性点接地系统。 使用HIF模型模拟相接地HIF。

主要采样的模拟信号是零线电流,在平衡的接地系统中,该零线电流被认为等于相线对地电流。

HIF在具有线性R-L型负载的20公里架空线中间进行。 分布式参数用于表示HIF的瞬态特征。

enter description here

故障电流的结果在图9中。 这些重要和最常见的特征已由该模型揭示:1)随机爆发并熄灭; 2)电弧熄灭和点燃; 3)周期性失真或谐波; 4)此外,在实际的分布式参数系统中,以较高的采样速度,可以捕获由故障传导的初始引起的快速瞬变,并且可以用作另一个独特的特征。

enter description here

B. 特征提取

小波分解已被用于通过电弧熄灭和重燃来提取细节失真,类似的小波和处理方法已在[13]中进行了详细介绍。

频率限制为1 kHz至10 kHz的带通滤波器用于提取HIF的快速瞬态特征。

根据[3] [4],谐波特征主要由三次谐波与基波的相位差以及与基波的比表示。

enter description here enter description here

5. 结论

与昂贵的现场测试相比,通过建模进行的HIF检测研究是一种更有效,更灵活的方法。 本文通过对高阻抗电弧故障机理的研究,利用ATP-EMTP模型对细节波形以及间歇性特征进行了解释和重构。通过将此模型应用于分发系统,一些最独特的功能已经被揭示出来。 最后,提出了几种初步的方法作为特征提取的一个例子。

参考文献

[1] PSRC Working Group D15, “High Impedance Fault Detection Technology,” Report of PSRC. March 1, 1996. [Online]. Available: http://grouper.ieee.org/groups/td/dist/documents/highz.pdf .

[2] R. Patterson, W. Tyska, B. D. Russell, and B. M. Aucoin, “A Microprocessor-Based Digital Feeder Monitor with High-Impedance Fault Detection,” in 47th Annual Conference for Protective Relay Engineers Texas A&M University, College Station, Texas, USA, 1994.

[3] A. E. Emanuel, D. Cyganski, J. A. Orr, S. Shiller, and E. M. Gulachenski, “High impedance fault arcing on sandy soil in 15 kV distribution feeders: contributions to the evaluation of the low frequency spectrum,” Power Delivery, IEEE Transactions on, vol. 5, pp. 676-686, 1990.

[4] D. I. Jeerings and J. R. Linders, “Unique aspects of distribution system harmonics due to high impedance ground faults,” Power Delivery, IEEE Transactions on, vol. 5, pp. 1086-1094, 1990.

[5] C. L. Benner and B. D. Russell, “Practical high-impedance fault detection on distribution feeders,” Industry Applications, IEEE Transactions on, vol. 33, pp. 635-640, 1997.

[6] S. R. Nam, J. K. Park, Y. C. Kang, and T. H. Kim, “A modeling method of a high impedance fault in a distribution system using two series time-varying resistances in EMTP,” in Power Engineering Society Summer Meeting, 2001. IEEE, 2001, pp. 1175-1180 vol.2.

[7] M. Michalik, W. Rebizant, M. Lukowicz, Seung-Jae Lee, and SangHee Kang, “High-impedance fault detection in distribution networks with use of wavelet-based algorithm,” Power Delivery, IEEE Transactions on, vol. 21, pp. 1793-1802, 2006.

[8] N. I. Elkalashy, M. Lehtonen, H. A. Darwish, M. A. Izzularab, and A. M. I. Taalab, “Modeling and experimental verification of high impedance arcing fault in medium voltage networks,” Dielectrics and Electrical Insulation, IEEE Transactions on [see also Electrical Insulation, IEEE Transactions on], vol. 14, pp. 375-383, 2007.

[9] Y. Li, X. Dong, Z. Q. Bo, N. F. Chin, and Y. Ge, “Adaptive reclosure using high frequency fault transients,” in Developments in Power System Protection, 2001, Seventh International Conference on (IEE), 2001, pp. 375-378.

[10] A. A. Girgis, W. Chang, and E. B. Makram, “Analysis of highimpedance fault generated signals using a Kalman filtering approach,” Power Delivery, IEEE Transactions on, vol. 5, pp. 1714-1724, 1990.

[11] H. Shyh-Jier and H. Cheng-Tao, “High-impedance fault detection utilizing a Morlet wavelet transform approach,” Power Delivery, IEEE Transactions on, vol. 14, pp. 1401-1410, 1999.

[12] “IEEE guide for measuring earth resistivity, ground impedance, and earth surface potentials of a ground system” IEEE Std 81-1983, 1983.

[13] Xinzhou Dong, Yaozhong Ge, Jiali He, “ Surge impedance relay,” Power Delivery, IEEE Transactions on, vol. 20, pp. 1247-1256, Apr. 2005.

Read more »

2020-01-11-写一个Level-2的S-function

Posted on 2020-01-11

Write Level-2 MATLAB S-Functions

From:https://ww2.mathworks.cn/help/simulink/sfg/writing-level-2-matlab-s-functions.html

About Level-2 MATLAB S-Functions

使用Level-2MATLAB®S函数API,您可以使用MATLAB语言来创建具有多个输入和输出端口的自定义块,并能够处理Simulink®模型产生的任何类型的信号,包括任何数据的矩阵和帧信号 类型。 2级MATLAB S函数API与创建C MEX S函数的API紧密对应。 创建C MEX S函数的许多文档也适用于Level-2 MATLAB S函数。 为避免重复,本节着重于提供特定于编写Level-2 MATLAB S函数的信息。

Level-2 MATLAB S-function是MATLAB函数,用于定义在Simulink模型中引用MATLAB函数的Level-2 MATLAB S-Function块实例的属性和行为。 MATLAB函数本身包含一组回调方法(请参见Level 2 MATLAB S-Function回调方法),Simulink引擎在更新或仿真模型时会调用这些方法。 回调方法执行初始化和计算由S函数定义的块的输出的实际工作。

为了完成这些任务,引擎将运行时对象作为参数传递给回调方法。 运行时对象有效地充当了S功能块的MATLAB代理,从而允许回调方法在仿真或模型更新期间设置和访问块属性。

About Run-Time Objects(关于运行对象)

Simulink引擎调用Level-2 MATLAB S函数回调方法时,会将Simulink.MSFcnRunTimeBlock类的实例作为参数传递给该方法。 该实例被称为S-Function块的运行时对象,对于Level-2 MATLAB S-function回调方法具有相同的目的,而SimStruct结构则用于C MEX S-function回调方法。 该对象使该方法能够提供并获得有关块端口,参数,状态和工作矢量的各种元素的信息。 该方法通过获取或设置块运行时对象的属性或调用方法来执行此操作。 有关获取和设置运行时对象属性以及调用运行时对象方法的信息,请参见Simulink.MSFcnRunTimeBlock类的文档。

运行时对象不支持MATLAB稀疏矩阵。 例如,如果变量块是运行时对象,则Level-2 MATLAB S函数中的以下行会产生错误:

block.Outport(1).Data = speye(10);

speye命令形成一个稀疏身份矩阵。

Level-2 MATLAB S-Function Template(Level 2 MATLAB S函数模板)

使用基本的Level-2 MATLAB S函数模板msfuntmpl_basic.m来开始创建新的Level-2 MATLAB S函数。 该模板包含由Level-2 MATLAB S-function API定义的所需回调方法的框架实现。 要编写更复杂的S函数,请使用带注释的模板msfuntmpl.m。

要创建MATLAB S函数,请制作一个模板副本,并根据需要编辑该副本,以反映您正在创建的S函数的所需行为。 以下两节描述了MATLAB代码模板的内容。 编写Level-2 MATLAB S-Function的示例部分介绍了如何编写对单位延迟建模的2级MATLAB S函数。

Level-2 MATLAB S-Function Callback Methods(2级MATLAB S函数回调方法)

2级MATLAB S函数API定义了构成2级MATLAB S函数的回调方法的签名和一般用途。 S函数本身提供了这些回调方法的实现。 所述实现又确定块属性(例如,端口,参数和状态)和行为(例如,块输出作为时间的函数以及块输入,状态和参数)。 通过使用一组适当的回调方法创建S函数,您可以定义满足应用程序特定要求的块类型。

一个2级MATLAB S函数必须包括以下回调方法:

  • 用于初始化基本S函数特征的设置函数
  • 一个用于计算S函数输出的Outputs函数

根据S函数定义的块的要求,您的S函数可以包含其他方法。 Level 2 MATLAB S函数API定义的方法通常对应于C MEX S函数API定义的类似命名的方法。 有关在仿真过程中何时调用这些方法的信息,请参见Simulink Engine与CS功能交互中的“过程视图”。

下表列出了所有2级MATLAB S函数回调方法。

Level-2 MATLAB Method
setup
CheckParameters
Derivatives
Disable
Enable
InitializeConditions
Outputs
PostPropagationSetup
ProcessParameters
Projection
SetInputPortComplexSignal
SetInputPortDataType
SetInputPortDimensions
SetInputPortDimensionsModeFcn
SetInputPortSampleTime
SetOutputPortComplexSignal
SetOutputPortDataType
SetOutputPortDimensions
SetOutputPortSampleTime
SimStatusChange
Start
Terminate
Update

Using the setup Method(使用设置方法)

Level 2 MATLAB S-function中设置方法的主体将初始化相应Level-2 MATLAB S-Function块的实例。 在这方面,设置方法类似于C MEX S函数实现的mdlInitializeSizes和mdlInitializeSampleTimes回调方法。 设置方法执行以下任务:

  • 初始化块的输入和输出端口数。
  • 设置这些端口的属性,例如维度,数据类型,复杂性和采样时间。
  • 指定块采样时间。 有关如何指定有效采样时间的更多信息,请参见《使用Simulink》中的“指定采样时间”。
  • 设置S功能对话框参数的数量。
  • 通过将MATLAB S函数中的局部函数的句柄传递给S函数块的运行时对象的RegBlockMethod方法来注册S函数回调方法。 有关使用RegBlockMethod方法的信息,请参见Simulink.MSFcnRunTimeBlock的文档。

Example of Writing a Level-2 MATLAB S-Function(一个例子)

以下步骤说明了如何编写简单的Level-2 MATLAB S函数。 如果适用,这些步骤包括模型msfcndemo_sfundsc2中使用的S函数示例msfcn_unit_delay.m中的示例。 所有代码行都将变量名称块用于S函数运行时对象。

1 将Level 2 MATLAB S函数模板msfuntmpl_basic.m复制到您的工作文件夹中。 如果在复制文件时更改了文件名,请将功能行中的功能名更改为相同的名称。

2 修改设置方法以初始化S函数的属性。 对于此示例:

  • 将运行时对象的NumInputPorts和NumOutputPorts属性设置为1,以初始化一个输入端口和一个输出端口。
  • 调用运行时对象的SetPreCompInpPortInfoToDynamic和SetPreCompOutPortInfoToDynamic方法,以指示输入和输出端口从模型继承其已编译属性(尺寸,数据类型,复杂度和采样模式)。
  • 将运行时对象的InputPort的DirectFeedthrough属性设置为false,以指示输入端口没有直接馈通。 保留在模板文件副本中设置的所有其他输入和输出端口属性的默认值。 为Dimensions,DatatypeID和Complexity属性设置的值将覆盖使用SetPreCompInpPortInfoToDynamic和SetPreCompOutPortInfoToDynamic方法继承的值。
  • 将运行时对象的NumDialogPrms属性设置为1,以初始化一个S函数对话框参数。
  • 通过将运行时对象的SampleTimes属性的值设置为[-1 0],指定S函数具有继承的采样时间。
  • 调用运行时对象的RegBlockMethod方法来注册此S函数中使用的以下四个回调方法。

    • PostPropagationSetup
    • InitializeConditions
    • Outputs
    • Update

    从模板文件的副本中删除所有其他注册的回调方法。 在对RegBlockMethod的调用中,第一个输入参数是S函数API方法的名称,第二个输入参数是MATLAB S函数中关联的局部函数的函数句柄。

    下面这个msfcn_unit_delay.m的例子,描述上面所述的步骤:

function setup(block)

%% Register a single dialog parameter
block.NumDialogPrms  = 1;

%% Register number of input and output ports
block.NumInputPorts  = 1;
block.NumOutputPorts = 1;

%% Setup functional port properties to dynamically
%% inherited.
block.SetPreCompInpPortInfoToDynamic;
block.SetPreCompOutPortInfoToDynamic;

%% Hard-code certain port properties
block.InputPort(1).Dimensions        = 1;
block.InputPort(1).DirectFeedthrough = false;

block.OutputPort(1).Dimensions       = 1;

%% Set block sample time to [0.1 0]
block.SampleTimes = [0.1 0];

%% Register methods
block.RegBlockMethod('PostPropagationSetup',@DoPostPropSetup);
block.RegBlockMethod('InitializeConditions',@InitConditions);
block.RegBlockMethod('Outputs',             @Output);  
block.RegBlockMethod('Update',              @Update);  

如果您的S函数需要连续状态,请使用运行时对象的NumContStates属性在设置方法中初始化连续状态的数量。 不要在设置方法中初始化离散状态。

3 在PostPropagationSetup方法中初始化离散状态。 2级MATLAB S函数将离散状态信息存储在DWork向量中。 在此示例中,模板文件中的默认PostPropagationSetup方法就足够了。

msfcn_unit_delay.m中的以下PostPropagationSetup方法名为DoPostPropSetup,它初始化了一个名为x0的DWork向量

function DoPostPropSetup(block)

%% Setup Dwork
  block.NumDworks = 1;
  block.Dwork(1).Name = 'x0'; 
  block.Dwork(1).Dimensions      = 1;
  block.Dwork(1).DatatypeID      = 0;
  block.Dwork(1).Complexity      = 'Real';
  block.Dwork(1).UsedAsDiscState = true;

如果您的S函数使用其他DWork向量,则也应在PostPropagationSetup方法中对其进行初始化(请参见在Level 2 MATLAB S函数中使用DWork向量)。

4 在InitializeConditions或Start回调方法中初始化离散和连续状态或其他DWork向量的值。 对于模拟开始时一次初始化的值,请使用Start回调方法。 每当重新启用包含S功能的已启用子系统时,请使用InitializeConditions方法获取需要重新初始化的值。

  对于此示例,使用InitializeConditions方法将离散状态的初始条件设置为S函数的dialog参数的值。 例如,msfcn_unit_delay.m中的InitializeConditions方法为:

	function InitConditions(block)

  %% Initialize Dwork
  block.Dwork(1).Data = block.DialogPrm(1).Data;

对于具有连续状态的S函数,请使用ContStates运行时对象方法初始化连续状态数据。 例如:

block.ContStates.Data(1) = 1.0;

5 在Outputs回调方法中计算S函数的输出。 对于此示例,将输出设置为DWork向量中存储的离散状态的当前值。

  msfcn_unit_delay.m中的Outputs方法为:

	function Output(block)

  block.OutputPort(1).Data = block.Dwork(1).Data;

6 对于具有连续状态的S函数,请使用“导数”回调方法计算状态导数。 运行时对象将派生数据存储在其“派生”属性中。 例如,以下行将第一状态导数设置为等于第一输入信号的值。

block.Derivatives.Data(1) = block.InputPort(1).Data;

本示例不使用连续状态,因此不实现“派生”回调方法。

7 在Update回调方法中更新所有离散状态。 对于此示例,将离散状态的值设置为第一输入信号的当前值。   msfcn_unit_delay.m中的Update方法是:

	function Update(block)

  block.Dwork(1).Data = block.InputPort(1).Data;

8 在Terminate方法中执行任何清除操作,例如清除变量或内存。 与C MEX S函数不同,Level-2 MATLAB S函数不需要具有Terminate方法。

有关其他回调方法的信息,请参见Level 2 MATLAB S函数回调方法。 有关运行时对象属性的列表,请参见Simulink.MSFcnRunTimeBlock和父类Simulink.RunTimeBlock的参考页。

Instantiating a Level-2 MATLAB S-Function

要在模型中使用Level-2 MATLAB S-function,请将Level-2 MATLAB S-Functionblock的实例复制到模型中。 打开该块的“块参数”对话框,然后在S函数名称字段中输入实现S函数的MATLAB文件的名称。 如果您的S函数使用任何其他参数,请在“块参数”对话框的“参数”字段中以逗号分隔的列表形式输入参数值。

Operations for Variable-Size Signals(可变大小信号的操作)

以下是对2级MATLAB S函数模板(msfuntmpl_basic.m)的修改以及允许您使用可变大小信号的其他操作。

function setup(block)
% Register the properties of the output port
block.OutputPort(1).DimensionsMode = 'Variable';
block.RegBlockMethod('SetInputPortDimensionsMode',  @SetInputDimsMode);

function DoPostPropSetup(block)
%Register dependency rules to update current output size of output port a depending on
%input ports b and c
block.AddOutputDimsDependencyRules(a, [b c], @setOutputVarDims);

%Configure output port b to have the same dimensions as input port a
block.InputPortSameDimsAsOutputPort(a,b);

%Configure DWork a to have its size reset when input size changes.
block.DWorkRequireResetForSignalSize(a,true);

function SetInputDimsMode(block, port, dm)
% Set dimension mode
block.InputPort(port).DimensionsMode = dm;
block.OutputPort(port).DimensionsMode = dm;

function setOutputVarDims(block, opIdx, inputIdx)
% Set current (run-time) dimensions of the output
outDimsAfterReset = block.InputPort(inputIdx(1)).CurrentDimensions;
block.OutputPort(opIdx).CurrentDimensions = outDimsAfterReset;

Generating Code from a Level-2 MATLAB S-Function(从2级MATLAB S函数生成代码)

为包含Level-2 MATLAB S函数的模型生成代码要求您提供相应的目标语言编译器(TLC)文件。 您不需要TLC文件即可加速包含Level-2 MATLAB S函数的模型。 Simulink Accelerator™软件以解释模式运行Level-2 MATLAB S函数。 但是,如果M文件S函数在模型参考中,则M文件S函数无法在加速模式下使用。 有关为MATLAB S函数编写TLC文件的更多信息,请参见内联S函数(Simulink Coder)和内联MATLAB File S函数(Simulink Coder)。

MATLAB S-Function Examples

Level 2 MATLAB S函数示例提供了一组自文档模型,这些模型说明了Level 2 MATLAB S函数的用法。 在MATLAB命令提示符下输入sfundemos以查看示例。

MATLAB S-Function Limitations

  • 2级MATLAB S函数不支持过零检测。
  • 您不能从2级MATLAB S函数中触发函数调用子系统。
Read more »

2020-01-09-逻辑谬误

Posted on 2020-01-09

“中国人在自然科学方面的知识平均水平很低” “外国人水平都很高吗,你舔什么外国人?” 逻辑谬误:稻草人,红鲱鱼,诉诸动机

“中国人在自然科学方面的知识平均水平很低” “中国发展这么快你装看不见?” 逻辑谬误:推不出,一厢情愿

“中国人在自然科学方面的知识平均水平很低” “那怎么能有屠呦呦杨振宁?” 逻辑谬误:诉诸细节,烟雾弹

“中国人在自然科学方面的知识平均水平很低” “一个臭名昭著的大V也这么说” 逻辑谬误:希特勒归谬

“中国人在自然科学方面的知识平均水平很低” “科学不是中国人发明的不需要学,自古以来” 逻辑谬误:非我所创,诉诸年代,诉诸传统

正常人的讨论问题方法:

“中国人在自然科学方面的知识平均水平很低”

“你说的不对,中国人在自然科学知识的平均水平并不低,你说低是说外国人高吗”

“不是,平均水平取决于各个受教育水平的人群的分布统计,以及外国是个错误的概念,各个国家肯定不同”

“你做过什么统计了吗,凭什么说?”

“全国普通高中入学率约50-60%,再考虑文理分科,你可以估算接受高中理科教育的人占某个年龄的比例,但这只是近20年可用的估算方法。我国从1986年开始义务教育,1992年十四大提出目标世纪末基本扫除青壮年文盲,因此你可以大概估算95%以上超过四十岁的中国公民在自然科学方面都是文盲。”

“这也是没办法,历史原因,我们还在发展”

“你说得对,所以我说,中国人在自然科学方面的知识平均水平很低。”

Read more »

2020-01-09-S-function level1 错误

Posted on 2020-01-09

在编写S-function时报错。

error occurred while running the simulation and the simulation was terminated Caused by: Output returned by S-function ‘cassie’ in ‘basic9/Cassie arc model sfunction/S-Function’ during flag=3 call must be a real vector of length 1

可能的错误因素:

  1. 输出元素个数和你的定义输出个数不同;
  2. s-function的输入变量个数和与其连接的模块的输入变量个数不一致;
  3. 还有一种可能是输出为无穷,也就是除以0了;
  4. S-function的输入变量的维数不是1维的向量;
Read more »

2020-01-02-精确仿真

Posted on 2020-01-02

电力系统的精确仿真,尤其是电磁暂态的精确仿真,更尤其是配电网层次的精确仿真,综合着细节,又综合着大尺度,这样的仿真是不是不可能做得出来啊!!!

Read more »

2019-12-26-奇葩说辩题:大学应该开设恋爱必修课么?

Posted on 2019-12-26

奇葩说有个辩题叫做,大学应该开设恋爱必修课么?最后是反方获胜,也就是不应该,主要论点有以下几点:

  1. 不应该教人谈恋爱,教人谈恋爱会使人变得有目的性;
  2. 教人谈恋爱的时间以及是必修课有问题,大学之前是尽量禁止学生谈恋爱,而大学之后开这门必修课的意思会变成鼓励大家谈恋爱;
  3. 一个自愿单身的人,凭什么非要让他(她)去上一堂必修课;
  4. 大学所教必修课是让学生去尽可能掌握的,而恋爱千人千面,无法去掌握;
  5. 教课的时间有问题,应该更早的参与到孩子的恋爱指导过程中,而不是等到大学来教授;
  6. 大学教授本身很可能是恋爱经验薄弱的人,怎么教?

既然是辩论题,其实以上论点当然都有着漏洞。

比如

  1. 恋爱课教授的课程是什么,辩题里没有说,上面的论点是以教授如何获得恋情的技巧代替了教授恋爱双方亲密关系的处理;
  2. 成人本就是人生中的节点,大学前的恋爱和大学后的恋爱本就目的应应有不同,教授如何看待亲密关系,亲密关系间的矛盾处理方法,本就是应该在这个时间点教授的,而不应该更早;
  3. 人的一生中总是充满着变动的,此时此刻不想恋爱,觉得一辈子单身,但保不齐以后会有变动,即使未来也单身,就不需要处理亲密关系的方法了么?谁说上过的课以后就一定要用呢,学到的是处理类似事件的通识而已;
  4. 虽然千人千面,但总有共识之处,而大学所教授的基础教育课程就应该教授基础共识性内容;
  5. 恋爱的启蒙当然要家长来越早开始越好,但亲密关系涉及到大量心理学理论,很多父母是无能为力的。
  6. 大学教授本人很可能恋爱经验薄弱,但恋爱经验并不是评价一个人是否能够处理好两性亲密关系的能力。

所以如上,我认为大学应该教授恋爱必修课。

Read more »

2019-12-26-读《莫扎特》

Posted on 2019-12-26

之前对音乐上的事情是完全不了解的,更别提莫扎特了。

莫扎特一定是一个天才,这是毋庸置疑的,但能有这样的成就,兴趣和培养也是分不开的。

莫扎特的父亲就是一个音乐家,从小就对莫扎特进行训练,5岁就可以登台演出了。

在那个年代,音乐家的社会地位很低,他们是为了宫廷教会的唱诗来服务的,但莫扎特并不想接受宫廷的活计。

莫扎特本可以去当时的世界第一都市伦敦,但他却还是选择的维也纳。莫扎特在非常年轻的时候就获得了骑士勋章。

这本就是一份收入不太差的工作,而且莫扎特极为高产,有评论家说莫扎特的一生写的曲谱要比抄谱员还多,莫扎特可以一边打台球,当轮到对手的时候继续写几个小节的乐章。

他的收入主要由4个方面。

  1. 官方职位;
  2. 教授学生;
  3. 出售戏剧音乐;
  4. 出售曲谱。

据统计,莫扎特的巅峰时候的年收入合现在300万元人民币,在当时就是比较有钱了。

但莫扎特仍然过得比较撂倒,总是要借钱,因为他不会管理自己的生活及开销,每天付出极大的热情在音乐上,并且要照顾他多病的妻子,但莫扎特只活到了30多岁,他的妻子活到了80多岁。

莫扎特的孩子们很多有夭折了,最后只有2个儿子,但他们都没有遗传莫扎特的音乐基因,并没有那么出色。

莫扎特的音乐是欢乐了,是热情的,是浪子的,是自由的,是高产的,在当时,他受到宫廷音乐家的打压,因为所有的宫廷音乐家的天赋加起来也比不上莫扎特,记住这些就够了。

Read more »

2019-12-25-利用小书匠编辑器同步github博客

Posted on 2019-12-25

一直在寻找windows平台下的类似mac平台下mweb这类的静态博客写作软件,之前的主力博客是构建在Blogger平台上的,mweb正好适用,一键发送至Blogger,又可以无痛配置图床,同时支持一键复制带图床地址的markdown原文,方便移植。但是在windows下一直没找到,尤其是Blogger平台,WordMark可以使用,但是无论是WordMark3(已不支持Blogger)还是WordMark2,不知道为什么均无法进行授权链接,也就作罢。

后来觉得Blogger确实有点太丑了,所以希望转移到Github平台,毕竟这自由度高了很多,是未来不是。

如何利用Github构建博客在之前的文章里已经写清楚了,目前最普遍的方式是利用GitHub Desktop来进行博客同步,但是这种同步的方式一个显著的不方便点在于,Github博客中的图片显示需要利用图床,而插入的图片需要先上传图床再下载图片链接进行插入,这种方式非常笨拙。虽然可以利用天若OCR这类工具辅助获取图床地址,但仍然在工作流过程中会被打断,需要等待图片上传成功获取地址。此时非常怀念mweb,甚至自己已经决定在windows下安装vmware来安装黑苹果来使用mweb了,是时候在浏览小众软件时无意间在评论区看到小书匠这款软件跳了出来,小书匠这款Markdown编辑器的图传自动上传功能和Github备份功能完美的解决了这个问题之间的矛盾。

1. Github备份设置

小书匠的绑定界面如下:

小书匠绑定界面

在这个界面可进行Github的绑定和图床的绑定。

Github绑定界面需要填入Token、仓库名称、以及分支名称。

enter description here

enter description here

在Github设置界面申请token,主要要对repo打钩。仓库名称为Github博客仓库名称,分支为master。

填入后,Github备份就设置好了。

2. 图床设置

可以选择sm.ms图床,本身免费的就有5G使用空间,不乱用也够了,也可以申请其他图床。

enter description here

在sm.ms网站申请个人账号,在设置中的API Token中生成秘钥,小书匠中选择sm.ms v2

enter description here

绑定成功后直接粘贴图片进markdown编辑界面后,系统会自动上传图片至图床。

3. 同步至Github

ctrl+s保存,或者点击保存,会弹出保存位置。

enter description here

保存在posts就可以了,若更新后重新点击保存会自动进行同步。

保存后在左侧备份栏会看到保存的文件。

enter description here

保存成功右上角会有消息提示。

enter description here

4. 网站同步

现在就可以去网站上看一看新写的文章了。

enter description here

已经可以看到文章已经同步上去了。

5. 注意事项

在研究过程中也遇到了一些困难。

首先是图传怎么都保存不上,明明图片已经上传成功,但本地仍然看不到,后来发现需要将小书匠升级到最新版本。

还有的问题就是,小书匠无法对文件名称和文章题目单独命名,Github博客模板能识别的文章 .m文件名格式是“2019-12-25-利用小书匠编辑器同步github博客”,前面要有时间的,这导致博客题目也别命名为时间开头,仍需要想办法解决。

在另存为中可以选择其他存储路径。

Read more »

2019-12-26-读《爱因斯坦传》

Posted on 2019-12-19

今天读《爱因斯坦》传,仅记录自认为最紧要的部分。

爱因斯坦无疑是个天才,他说话极晚,却出口成章(说话有逻辑,不说半句话);六年级熟知欧几里得几何,13岁啃完《纯粹理性批判》,16岁学完学校的全部数学课程。不过上学时对老师挑刺,老师很不喜欢,于是退学回家。

第一年考大学并没有考上,但有知名大学教授说可随时来旁听,因为爱因斯坦的物理学天赋。第二年考上大学。

在大学组织了一个学习小组,自己命名为科学院,该科学院有3名成员,直到爱因斯坦去世才解散。

因有不喜欢他的教授搞鬼,爱因斯坦不容易找到工作,最后在专利局工作。

也就是在专利局工作期间,1905年,他发表了21篇论文,包括《狭义相对论》。

狭义相对论是什么?

在牛顿力学中,世界上有2个恒定不变的量,是时间和空间,这两个坐标轴是不动的。但这时候和实验发生了冲突。若测量光速,是一个恒定值,无论在测量者的移动速度是如何的,该光速仍然是恒定值,这在时间和空间均为不变量的条件下是不成立的。

爱因斯坦想象,一个人站在火车上拍皮球,皮球直上直下运动,那么皮球上下往返一次走过的路程是$2l$,但观察者在货车外,则皮球走过的路程变成了波动的曲线,该曲线往返一次的路程>2l,那么作为外界的观察者,为什么会出现这种问题呢,因为观察者的相对运动。若皮球的速度是相同的,那么为什么两个人看到皮球走的路程不同呢,因为若观察者的速度提高,他看外界的时间流逝会变快,反过来,火车速度快一些,那么火车上的时间流逝会变慢,相对皮球的速度,火车外的人的相对速度更快,所以那个人看到皮球走了更长的时间,所以表现出更长的路程,这就是匀速状态下的相对论。它改变了时间和空间是2条固定不变的坐标系的固有理论体系。

同样是这一年,爱因斯坦提出了$E=mc^2$,他说,“这世界最不可理解的部分就是这个世界居然是可以被理解的”,这句话也成为爱因斯坦一生的注脚,他坚信世界是因果关系论的,是可被理解的,所以疯狂的反对量子力学的提出,甚至抛出“上帝不掷骰子”,但和波尔的辩论总是赢不了,因为他打开了量子力学的大门而不敢走进去。

《广义相对论》是狭义相对论的进一步阐释,将匀速运动情况扩展到加速度情况,这个问题由于爱因斯坦的数学不好拖到了1919年才最终解决这个问题,在正确的构想下,详实的数学证明依然需要多版的论文和理论交锋才能最终成型。

晚年的爱因斯坦并没有太大的理论成就,因为拒绝进入量子力学领域,但他的一生的成就也是无可比拟的。

在他死后,为他进行医学验尸的医生,将他的大脑保存下来,他的眼科医生将他的眼球偷走。他们将一个人奉为一个神。

爱因斯坦从来没有参与原子弹的研发,这是他身前身后名的小插曲。

Read more »

城市印象

Posted on 2019-08-29

城市印象之漯河

刚走出漯河西高铁站,就是空气太湿了,手上,身上都像结满了露珠一样。

是一个不起眼的小车站,和普通小地方的车站没什么两样,只有1个出站口,人也不多,站台在2楼,大厅在1楼。

为了省钱,通过高德查了坐的公交,走到公交站,一个小站,只有一个站台,不多时公交就到了,一辆不大的绿色公交,玻璃上贴着城市文化宣传语,让阅读成为一种习惯,英文还翻译成了 “make reading a habit”,不伦不类。

上了车后的第一感觉是好新的车,车座上铺着皮革坐垫,彩色的,也看起来很新。走到空座位坐下,发现车的座椅都好旧,只是很干净,对就是很干净。

车开起来,发现整座城市都很干净,干净的街道,干净的设施,但所有的东西都很旧,好像是用了好久。

然后就觉得这座城市很有意思,像是一个衣装笔挺的老人,一个老人却有着孩童般的灵魂。

入住后,在街上闲逛,路灯是老旧的样子,还有个灯不亮了,但真干净。

住的地方对面就是漯河的国网公司。

晚上8点的市政府附近的街道,也没多少车。

马路的路基也是很破旧的样子,不知道承受了多久的风吹日晒,不过好干净,缝隙中也没有什么垃圾。

晚上8:30还能看到这样的洒水车在工作,地面也都是湿润的。

破旧的垃圾桶也被擦拭的好干净。

还有这样的捕蝇网,还很完好,网上也没有什么脏的灰尘。

市政府旁的人行道红绿灯也是坏掉的。

所以,真是座干净的城市,据说是全国卫生城市,沈阳创城没有成功的那个,确实有差距,在这样的一座城市里走,空气都是干净的,风吹来,不会带起灰尘,漯河这座小城,挺好。

Read more »
1 … 7 8 9
月白

月白

Thinking can do nothing, but action will !!!

82 posts
5 categories
138 tags
RSS
GitHub Email
Friends
  • 111qqz
  • VectorLu
  • Yalv
  • YJK
  • 大黄菌
  • Liadbiz
  • CharsTech
  • 五斤
  • YangHan
  • 一之笔
  • DaiChao1997
  • Oubindo
  • Danielhu
  • hhuysqt
  • 瓠樽
  • Leon-wtf
  • Lighting Studio
0%
© 2016 - 2021 月白
Powered by Jekyll
Theme - NexT.Muse
知识共享许可协议