基于电路图拓扑结构读取的电路仿真方法及系统

未命名 07-15 阅读:116 评论:0


1.本发明属于电路仿真技术领域,特别涉及基于电路图拓扑结构读取的电路仿真方法及系统。


背景技术:

2.电路仿真技术属于重要的工业软件技术,是当下电子设计自动化(eda)的基础。现阶段基于图形化界面的通用eda软件如multisim、tina等,虽然仿真功能强大、图形界面直观,但是其导线设计是基于实物连接的,即与实际二端口元件、面包板、杜邦线的搭建情况相匹配。然而作为虚拟仿真软件,该导线设计方式使得用户在仿真电路搭建上受限较多、不够便捷、存在一定的操作障碍。
3.电路图中包含电路的结构信息。由于引脚间的直接连接并不适用于复杂电路结构,需要导线作为其中显示引脚间复杂间接连接关系的工具。因此,导线具备以形状表达连接关系的特性。以multisim为例,其导线的绘制方法为:用户单击引脚,移动鼠标至目标位置,再次单击建立包含起点、目标位置及其途经点的一段导线,可重复该操作直至整根导线绘制完成,双击结束。其中,途经点位置由最短路径算法自动生成。整根导线绘制完成后,软件自动识别始末点、途经点上所包含的全部引脚,确定相互连接关系。multisim导线设计具有逻辑完备性,能够满足所有电路图绘制及仿真功能,但是具有如下缺点:
4.(1)导线分段多:导线绘制采用橡皮筋技术和最短路径布线技术,在每一段内只支持单击该段目标点来建立与起点间的二元连接并显示图形,途经点并不能够人为控制。若用户需要使用导线同时连接n个引脚,则必须逐个单击目标引脚绘制至少(n-1)段导线。有时自动布线的形状并非整洁美观,用户需要手动分更多段以控制导线的走向。
5.(2)起点受限:导线的起点只能处于断路状态。若起点引脚已与其他元件引脚串联或已连接其他导线,则该点不能再作为创建导线的起始点。特别地,若用户需要在同一引脚引出多条导线,则第一条导线绘制完成后,该点就不能再继续绘制其他导线,必须更换起点位置。此外,导线的起点只能是元件引脚,而不能是导线上的某一点或节点。
6.总而言之,用户需多次更改起点进行绘制,操作连续性、便捷性差;用户所绘制的电路图形更接近实物图,而非整洁简练的电路图;用户需考虑布局与走线方式问题,复杂电路结构的搭建效率较低。电路仿真软件在搭建仿真电路过程中的交互便捷性有待提升。


技术实现要素:

7.本发明的目的在于提供基于电路图拓扑结构读取的电路仿真方法及系统,以解决上述问题。
8.为实现上述目的,本发明采用以下技术方案:
9.基于电路图拓扑结构读取的电路仿真方法,包括:
10.将电路结构划分为七个电路结构类,创建元件类、引脚类、格点类、导线类、节点类、支路类和复合支路类七个类的数组;
11.按照构造函数构造元件类、导线类对象并插入元件类数组、导线类数组中,当绘制完成后,得到当前元件类数组、导线类数组,然后依次遍历元件类数组、导线类数组,基于映射函数,依次通过引脚类数组、格点类数组、支路类数组和节点类数组得到复合支路类数组;
12.创建关联矩阵a,受控电压源系数矩阵d,受控电流源系数矩阵c,独立电压源电压值矩阵us,独立电流源电流值矩阵is,阻抗值矩阵ze,遍历复合支路类数组,根据起始节点类编号、终止节点类编号及数值信息为上述矩阵赋值,代入公式求解节点电压值。
13.进一步的,得到当前元件类数组、导线类数组:
14.通过选择元件、连接导线绘制电路图,遍历当前全部有效元件、有效导线,并在指定位置显示图形,使用对应构造函数构造元件类、导线类对象并插入元件类数组、导线类数组中,当绘制完成后得到当前元件类数组、导线类数组。
15.进一步的,加载全部元件,遍历元件类数组,每个元件构造两个引脚类并插入引脚类数组中,遍历完成后,得到引脚类数组1、格点类数组1:
16.遍历元件类数组,滤除无效元件,每个元件构造两个引脚类并插入引脚类数组中,通过ptog()映射函数判断,若引脚类所在位置坐标处不存在格点则构造格点类并插入格点类数组中,将引脚类编号插入格点类的所连引脚编号集中;遍历完成后,得到引脚类数组1、格点类数组1。
17.进一步的,加载全部导线,遍历每根导线的所连格点类编号集,清空该格点的所连引脚类编号集,赋入该导线编号,遍历完成后,得到在格点类数组1的基础上包含导线所连引脚的格点类数组2:
18.创建途经点集、格点集、引脚集的临时集,初始化为空集;遍历导线类数组,滤除无效导线,每个导线依次遍历途经点集,直至终点;若通过ptol()映射函数判定途经导线,则该导线设置为无效,途经点集附加该导线类的途经点集,格点临时集附加该导线类的所连格点类编号集,引脚临时集附加该导线类的所连引脚类编号集;若通过ptog()映射函数判定途经格点,则格点临时集添加该格点类编号,引脚临时集附加该格点类的所连引脚类编号集;每根导线的途经点集遍历完成后,将引脚临时集、格点临时集赋值为该导线所连引脚类编号集、所格点类编号集,将途经点临时集附加在导线途经点集后面;清空三个临时集,滤除被融合的导线,开始遍历下一根导线。所有导线遍历完成后,开始二次遍历。遍历每根导线遍的所连格点类编号集,清空该格点的所连引脚类编号集,赋入该导线编号;遍历完成后,得到在格点类数组1的基础上包含导线所连引脚的格点类数组2,其中与导线相连的格点类会被清空所连引脚编号集,赋入所连导线类编号。
19.进一步的,设置节点,遍历格点类数组2,得到节点类数组1,与在引脚类数组1的基础上增加外引脚关系的引脚类数组2:
20.遍历格点类数组2,若格点类所连导线类编号为-1,若格点所连引脚个数等于1,判定为电路断路;若等于2,设置两个引脚类互为外引脚;若大于等于3,使用格点类所连引脚集构造节点,同时将其中所有引脚类的所连节点类编号设置为该节点;若格点类所连导线类编号不小于0,且该格点类未被遍历,则根据其所连导线类的所连引脚重复进行上述步骤,完成后将该导线的所连格点类设置为已被遍历,遍历完成后,得到节点类数组1,与在引脚类数组1的基础上增加外引脚关系的引脚类数组2。
21.进一步的,创建支路阻抗值、支路独立电压源电压值、支路独立电流源电流值、支路受控电压源编号集、受控电流源编号值作为临时变量,初始化为0,遍历节点类数组,节点类数组遍历完成后,得到支路类数组,与在节点类数组1的基础上增加了所连支路类编号集的节点类数组2:
22.遍历节点类数组,每个节点遍历所连引脚类,若引脚类所连元件类未被遍历,记录存入引脚所连元件的数值信息,将该元件设置为已被遍历;存入元件数值信息的详细步骤为,对于阻抗,将支路临时阻抗值加上元件阻抗值;对于独立电压源、独立电流源,若当前所遍历的引脚为元件类正极引脚,将支路临时独立电压源电压值、独立电流源电流值加上元件独立电压源电压值、独立电流源电流值,否则取相反数后加入;对于受控电压源,支路临时受控电压源编号集添加元件受控源编号值;对于受控电流源,将元件受控源编号值赋入支路临时受控电流源编号值;判断该引脚的自引脚,若自引脚存在外引脚,则继续遍历该外引脚,重复上述步骤,直至引脚与节点相连;若自引脚与节点直接相连,则构造支路,并在该节点所连支路类编号集中添加该支路编号;根据临时变量数值信息判断支路类型,将临时变量赋入支路数值信息,其中对于电流源与电压源串联、不同电流源串联的连接判定为电路错误;将临时变量清零,继续遍历节点所连引脚类,节点类数组遍历完成后,得到支路类数组,与在节点类数组1的基础上增加了所连支路类编号集的节点类数组2。
23.进一步的,设置复合支路,遍历节点类数组2,得到复合支路类数组1,与在节点类数组2的基础上增加了所连复合支路类编号集的节点类数组3:
24.遍历节点类数组2,每个节点遍历所连支路类,当支路未被遍历时,通过wtom()映射函数判断,若支路类型不为c且不存在与该支路起始节点编号、终止节点类编号相同的复合支路类,或支路类型为c,则构造复合支路,并在该节点所连复合支路类编号集中添加该复合支路编号,在该复合支路所连支路类编号集中添加该支路编号;否则,在已经存在的复合支路所连支路类编号集中添加该支路编号;将该支路设置为已被遍历,节点类数组遍历完成后,得到复合支路类数组1,与在节点类数组2的基础上增加了所连复合支路类编号集的节点类数组3。
25.进一步的,设置复合支路数值信息,遍历复合支路类数组1,得到在复合支路类数组1的基础上增加了数值信息的复合支路类数组2:
26.创建支路阻抗值、支路独立电压源电压值、支路独立电流源电流值、支路受控电压源编号集、受控电流源编号集作为临时变量;遍历复合支路类数组1,每个复合支路遍历所连支路类,对于a类支路,将复合支路临时独立电流源电流值加上支路独立电流源电流值;对于b类支路,复合支路临时受控电流源编号集添加支路受控电流源编号值;对于c类支路,将支路阻抗值、独立电压源电压值、受控电压源编号集赋入复合支路临时阻抗值、独立电压源电压值、受控电压源编号集;复合支路所连支路类遍历完成后,将临时变量赋入复合支路数值信息,将临时变量清零;复合支路类数组遍历完成后,得到在复合支路类数组1的基础上增加了数值信息的复合支路类数组2。
27.进一步的,代入公式求解节点电压值:
28.(aya
t
)un=ayu
s-ais29.其中:y=(1+c)z
e-1
(1+d)-1

30.进一步的,基于电路图拓扑结构读取的电路仿真系统,包括
31.电路结构分类模块,用于将电路结构划分为七个电路结构类,创建元件类、引脚类、格点类、导线类、节点类、支路类和复合支路类七个类的数组;
32.复合支路类数组获得模块,用于按照构造函数构造元件类、导线类对象并插入元件类数组、导线类数组中,当绘制完成后,得到当前元件类数组、导线类数组,然后依次遍历元件类数组、导线类数组,基于映射函数,依次通过引脚类数组、格点类数组、支路类数组和节点类数组得到复合支路类数组;
33.求解模块,用于创建关联矩阵a,受控电压源系数矩阵d,受控电流源系数矩阵c,独立电压源电压值矩阵us,独立电流源电流值矩阵is,阻抗值矩阵ze,遍历复合支路类数组,根据起始节点类编号、终止节点类编号及数值信息为上述矩阵赋值,代入公式求解节点电压值。
34.与现有技术相比,本发明有以下技术效果:
35.本发明导线连接方式灵活,支持用户任意连接,可完全直接绘制电路图实现电路结构的输入,提高复杂电路的搭建效率,操作便捷、提升用户体验。
36.本发明基于用户绘制的图形自动识别并建立电路拓扑结构关系,复杂串并联、受控源、无伴源、断路、短路均可正确识别,辅助列写节点电压方程。逻辑严密,支持用户任意连接方式。此外,本发明支持用户根据软件功能需求自定义数值信息的存储方式与方程的求解、计算方式,且同样适用于含三引脚晶体管、多引脚芯片的电路结构读取。
附图说明
37.图1为导线连接情况示意图;
38.图2为类的包含关系图;
39.图3为复合支路结构图;
40.图4为总体架构图;
41.图5为步骤算法流程图。
42.1-引脚

引脚;2-引脚

导线;3-导线

引脚;4-元件

导线;5-元件

元件6-导线

元件7-导线

导线。
具体实施方式
43.以下结合附图对本发明进一步说明:
44.基于电路图拓扑结构读取的电路仿真方法,包括基于各类数组存储对象、基于编号进行索引成员信息、基于映射函数查找成员编号的数据结构。
45.1、在主程序中创建各类的数组,数组中的每个元素为该类对象,存储其成员变量。数组初始长度为0,构造新对象时动态申请数组内存。
46.2、对象相互调用时,可通过编号直接索引数组元素的数据。例如,1号节点所连的第2个引脚所连元件的值,可表示为objectarray[pinarray[nodearray[1].pin[2]].object].value。这种数据结构通过该类数组、以编号为基本单位进行数据存储与传输方法,同样适用于受控源元件等元件数值信息进行建模时。例如,1号支路上的2号受控源(control source,简称cs)的控制系数,可表示为csarray[wayarray[1].cs[2]].value。当编号为-1时,表示该类成员不存在。
[0047]
3、映射函数用于进行不同类成员之间的查找,如坐标类(cpoint)向格点类(grid)进行映射:已知所有格点的坐标,欲查找某位置坐标处格点类的编号,则需要建立ptog()函数。该函数的实现方法是,首先传入需要判断的坐标,遍历格点类数组的全部元素,若某格点对象的坐标与该坐标相等,则返回其数组编号,若不存在则返回-1。此外,还需要坐标类向导线类映射函数ptol()、坐标类向元件类映射函数ptoo()、支路类向复合支路类映射函数wtom()共四个映射函数,其实现方法与功能相似。映射函数在读取电路结构中用于判断是否需要构造新对象,当编号为-1时则对象不存在,方能构造新对象,否则在原对象基础上共用或附加。
[0048]
具体的,基于电路图拓扑结构读取的电路仿真方法,主要包含如下步骤,
[0049]
步骤1,应用程序初始化,创建七个类的数组,初始长度为0。
[0050]
步骤2,创建图形化交互界面。绘制元件时,用户在指定位置左键单击空白网格点,则会在此处根据所选元件种类构造元件类对象,并将其编号存入元件类数组。再次使用左键单击元件所在位置,元件将会顺时针旋转90
°
,该功能可以用来改变元件的朝向和参考方向,使元件排布与电路图一致。用户再右键单击元件所在位置,程序将根据该元件的类型弹出赋值对话框,用户输入对应参数后即可完成元件赋值。绘制导线时,用户使用中键单击网格点,则会以该网格点为起点构造导线类对象。用户通过控制光标位置改变导线走向,屏幕会根据鼠标的移动轨迹显示导线的路径,直至用户再次单击中键结束绘制,将该导线编号存入导线类数组。每次用户抬起鼠标按键后,默认一次绘制操作完成,程序将会遍历当前全部有效元件、有效导线,并在指定位置显示图形。用户完成全部绘制、赋值、旋转、连接、删除操作后,点击运行,则已绘制的电路图便不可更改,直至运行停止。
[0051]
步骤3,用户通过选择元件、连接导线绘制电路图,程序使用相应构造函数构造元件类、导线类对象并插入元件类数组、导线类数组中。当用户绘制完成后点击运行,得到当前元件类数组、导线类数组。
[0052]
步骤4,加载全部元件。遍历元件类数组,滤除无效元件,每个元件构造两个引脚类并插入引脚类数组中。通过ptog()映射函数判断,若引脚类所在位置坐标处不存在格点则构造格点类并插入格点类数组中,将引脚类编号插入格点类的所连引脚编号集中。遍历完成后,得到引脚类数组1、格点类数组1。
[0053]
步骤5,加载全部导线。创建途经点集、格点集、引脚集的临时集,初始化为空集。遍历导线类数组,滤除无效导线,每个导线依次遍历途经点集,直至终点。若通过ptol()映射函数判定途经导线,则该导线设置为无效,途经点集附加该导线类的途经点集,格点临时集附加该导线类的所连格点类编号集,引脚临时集附加该导线类的所连引脚类编号集;若通过ptog()映射函数判定途经格点,则格点临时集添加该格点类编号,引脚临时集附加该格点类的所连引脚类编号集。每根导线的途经点集遍历完成后,将引脚临时集、格点临时集赋值为该导线所连引脚类编号集、所格点类编号集,将途经点临时集附加在导线途经点集后面。清空三个临时集,滤除被融合的导线,开始遍历下一根导线。所有导线遍历完成后,开始二次遍历。遍历每根导线遍的所连格点类编号集,清空该格点的所连引脚类编号集,赋入该导线编号。遍历完成后,得到在格点类数组1的基础上包含导线所连引脚的格点类数组2,其中与导线相连的格点类会被清空所连引脚编号集,赋入所连导线类编号。
[0054]
步骤6,设置节点。遍历格点类数组2,若格点类所连导线类编号为-1,若格点所连
引脚个数等于1,判定为电路断路;若等于2,设置两个引脚类互为外引脚;若大于等于3,使用格点类所连引脚集构造节点,同时将其中所有引脚类的所连节点类编号设置为该节点。若格点类所连导线类编号不小于0,且该格点类未被遍历,则根据其所连导线类的所连引脚重复进行上述步骤,完成后将该导线的所连格点类设置为已被遍历。遍历完成后,得到节点类数组1,与在引脚类数组1的基础上增加外引脚关系的引脚类数组2。
[0055]
步骤7,设置支路。创建支路阻抗值、支路独立电压源电压值、支路独立电流源电流值、支路受控电压源编号集、受控电流源编号值作为临时变量,初始化为0。遍历节点类数组,每个节点遍历所连引脚类,若引脚类所连元件类未被遍历,记录存入引脚所连元件的数值信息,将该元件设置为已被遍历。存入元件数值信息的详细步骤为,对于阻抗,将支路临时阻抗值加上元件阻抗值;对于独立电压源、独立电流源,若当前所遍历的引脚为元件类正极引脚,将支路临时独立电压源电压值、独立电流源电流值加上元件独立电压源电压值、独立电流源电流值,否则取相反数后加入;对于受控电压源,支路临时受控电压源编号集添加元件受控源编号值;对于受控电流源,将元件受控源编号值赋入支路临时受控电流源编号值。判断该引脚的自引脚,若自引脚存在外引脚,则继续遍历该外引脚,重复上述步骤,直至引脚与节点相连;若自引脚与节点直接相连,则构造支路,并在该节点所连支路类编号集中添加该支路编号。根据临时变量数值信息判断支路类型,将临时变量赋入支路数值信息,其中对于电流源与电压源串联、不同电流源串联的连接判定为电路错误。将临时变量清零,继续遍历节点所连引脚类。节点类数组遍历完成后,得到支路类数组,与在节点类数组1的基础上增加了所连支路类编号集的节点类数组2。
[0056]
步骤8,设置复合支路。遍历节点类数组2,每个节点遍历所连支路类,当支路未被遍历时,通过wtom()映射函数判断,若支路类型不为c且不存在与该支路起始节点编号、终止节点类编号相同的复合支路类,或支路类型为c,则构造复合支路,并在该节点所连复合支路类编号集中添加该复合支路编号,在该复合支路所连支路类编号集中添加该支路编号;否则,在已经存在的复合支路所连支路类编号集中添加该支路编号。将该支路设置为已被遍历。节点类数组遍历完成后,得到复合支路类数组1,与在节点类数组2的基础上增加了所连复合支路类编号集的节点类数组3。
[0057]
步骤9,设置复合支路数值信息。创建支路阻抗值、支路独立电压源电压值、支路独立电流源电流值、支路受控电压源编号集、受控电流源编号集作为临时变量。遍历复合支路类数组1,每个复合支路遍历所连支路类,对于a类支路,将复合支路临时独立电流源电流值加上支路独立电流源电流值;对于b类支路,复合支路临时受控电流源编号集添加支路受控电流源编号值;对于c类支路,将支路阻抗值、独立电压源电压值、受控电压源编号集赋入复合支路临时阻抗值、独立电压源电压值、受控电压源编号集。复合支路所连支路类遍历完成后,将临时变量赋入复合支路数值信息,将临时变量清零。复合支路类数组遍历完成后,得到在复合支路类数组1的基础上增加了数值信息的复合支路类数组2。
[0058]
步骤10,列写并求解节点电压方程。创建关联矩阵a,受控电压源系数矩阵d,受控电流源系数矩阵c,独立电压源电压值矩阵us,独立电流源电流值矩阵is,阻抗值矩阵ze。遍历复合类数组2,根据起始节点类编号、终止节点类编号及数值信息为上述矩阵赋值,代入公式求解节点电压值un。
[0059]
(aya
t
)un=ayu
s-ais[0060]
其中y=(1+c)z
e-1
(1+d)-1

[0061]
类的成员函数由构造函数组成,包括,
[0062]
1、元件类(object),是电路的基本组成部分,用于储存电路元件的结构及数值信息。固有属性:种类(阻抗、独立电压源、独立电流源、受控电压源、受控电流源,enum),位置坐标(cpoint),朝向(正极位于左、上、右、下,enum),元件数值(阻抗值、独立电压源电压值、独立电流源电流值、受控源编号值),有效性(bool);结构属性:正极引脚类编号(int),负极引脚类编号(int),所在支路类编号(int),是否已被遍历(bool)。元件类构造函数的参数包含种类、位置坐标、朝向。元件类视图函数的参数包括窗口指针(cdc*),用于在指定位置绘制电路图符号,如电阻的视图函数绘制中心在格点上的矩形及两端的线段。
[0063]
2、引脚类(pin),是构成电路拓扑结构的基础,用于在元件间建立连接关系,通过直接接触或导线进行连接。对于二端口元件,其两个引脚a、b一定成对出现并经过元件两两相连,定义引脚a、b互为自引脚;若引脚a与其他元件的引脚b直接连接使得两元件构成串联关系,则定义引脚a、b互为外引脚;三个及以上引脚之间构成多元连接关系,定义引脚与节点相连。固有属性:位置坐标(cpoint),所连元件类编号(int),自引脚编号(int);结构属性:外引脚编号(int),所连节点类编号(int)。引脚类构造函数的参数包含位置坐标、所连元件、自引脚。
[0064]
3、格点类(grid),是引脚类所在的网格点,用于存储全部引脚的相互连接关系,是读取电路拓扑结构的基础。根据是否连接导线,格点类分为仅发生引脚直接连接的格点,即多个引脚共用同一格点,与至少连接一根导线的格点。固有属性:位置坐标(cpoint);结构属性:所连引脚类编号集(cuintarray),所连导线类编号(int),是否已被遍历(bool)。格点类构造函数的参数仅包含位置坐标。
[0065]
4、导线类(line),是使全部途经点等电位的特殊电路结构,用于辅助显示引脚连接关系,其途经点所连的全部引脚相互连接。固有属性:途经点集(carray《cpoint,cpoint&》),有效性(bool);结构属性:所连引脚类编号集(cuintarray)、所连格点类编号集(cuintarray)。导线类构造函数的参数包含途经点集、引脚集、格点集。导线类视图函数的参数包括窗口指针(cdc*),用于绘制始于导线起点、逐个连接途经点、终于终点的折线段,作为导线的电路图图形。
[0066]
5、节点类(node),是电路拓扑结构中的节点,用于存储引脚间至少三元的相互连接关系。固有属性:所连引脚类编号集(cuintarray),节点电压值(double);结构属性:所连支路类编号集(cuintarray),所连复合支路类编号集(cuintarray)。节点类构造函数的参数包含引脚集。
[0067]
6、支路类(way),是节点间仅包含元件串联的电路结构。根据电路原理,包含不同元件的支路类可通过等效变换化简为如下三种:a类支路,仅包含一个独立电流源的支路;b类支路,仅包含一个受控电流源的支路;c类支路,仅包含至少一个阻抗、或与独立电压源串联、或与受控电压源串联的支路。固有属性:所包含元件编号集(cuintarray),支路类型(a、b、c类,enum),支路数值(总阻抗值、总独立电压源电压值、总独立电流源电流值、受控电压源编号集、受控电流源编号值);结构属性:起始节点类编号(int),终止节点类编号(int),所在复合支路编号(int),是否已被遍历(bool)。支路类构造函数的参数包含支路类型、起始节点类编号、终止节点类编号。
[0068]
7、复合支路类(multiway),是至多一个c类支路与若干个a、b类支路相互并联形成的电路结构,用于在电路拓扑结构中连接节点。复合支路类包含至少一个支路类,两个节点之间可并联多条复合支路。固有属性:复合支路数值(总阻抗值、总独立电压源电压值、总独立电流源电流值、受控电压源编号集、受控电流源编号集);结构属性:起始节点类编号(int),终止节点类编号(int),所包含支路类编号集(cuintarray)。复合支路类构造函数的参数包含起始节点类编号、终止节点类编号。
[0069]
本发明再一实施例中,提供基于电路图拓扑结构读取的电路仿真系统,能够用于实现上述的基于电路图拓扑结构读取的电路仿真方法,具体的,该系统包括:
[0070]
电路结构分类模块,用于将电路结构划分为七个电路结构类,创建元件类、引脚类、格点类、导线类、节点类、支路类和复合支路类七个类的数组;
[0071]
复合支路类数组获得模块,用于按照构造函数构造元件类、导线类对象并插入元件类数组、导线类数组中,当绘制完成后,得到当前元件类数组、导线类数组,然后依次遍历元件类数组、导线类数组,基于映射函数,依次通过引脚类数组、格点类数组、支路类数组和节点类数组得到复合支路类数组;
[0072]
求解模块,用于创建关联矩阵a,受控电压源系数矩阵d,受控电流源系数矩阵c,独立电压源电压值矩阵us,独立电流源电流值矩阵is,阻抗值矩阵ze,遍历复合支路类数组,根据起始节点类编号、终止节点类编号及数值信息为上述矩阵赋值,代入公式求解节点电压值。电压值作为仿真结果的基础。
[0073]
本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本发明各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

技术特征:
1.基于电路图拓扑结构读取的电路仿真方法,其特征在于,包括:将电路结构划分为七个电路结构类,创建元件类、引脚类、格点类、导线类、节点类、支路类和复合支路类七个类的数组;按照构造函数构造元件类、导线类对象并插入元件类数组、导线类数组中,当绘制完成后,得到当前元件类数组、导线类数组,然后依次遍历元件类数组、导线类数组,基于映射函数,依次通过引脚类数组、格点类数组、支路类数组和节点类数组得到复合支路类数组;创建关联矩阵a,受控电压源系数矩阵d,受控电流源系数矩阵c,独立电压源电压值矩阵u
s
,独立电流源电流值矩阵i
s
,阻抗值矩阵z
e
,遍历复合支路类数组,根据起始节点类编号、终止节点类编号及数值信息为上述矩阵赋值,代入公式求解节点电压值。2.根据权利要求1所述的基于电路图拓扑结构读取的电路仿真方法,其特征在于,得到当前元件类数组、导线类数组:通过选择元件、连接导线绘制电路图,遍历当前全部有效元件、有效导线,并在指定位置显示图形,使用对应构造函数构造元件类、导线类对象并插入元件类数组、导线类数组中,当绘制完成后得到当前元件类数组、导线类数组。3.根据权利要求2所述的基于电路图拓扑结构读取的电路仿真方法,其特征在于,加载全部元件,遍历元件类数组,每个元件构造两个引脚类并插入引脚类数组中,遍历完成后,得到引脚类数组1、格点类数组1:遍历元件类数组,滤除无效元件,每个元件构造两个引脚类并插入引脚类数组中,通过ptog()映射函数判断,若引脚类所在位置坐标处不存在格点则构造格点类并插入格点类数组中,将引脚类编号插入格点类的所连引脚编号集中;遍历完成后,得到引脚类数组1、格点类数组1。4.根据权利要求3所述的基于电路图拓扑结构读取的电路仿真方法,其特征在于,加载全部导线,遍历每根导线的所连格点类编号集,清空该格点的所连引脚类编号集,赋入该导线编号,遍历完成后,得到在格点类数组1的基础上包含导线所连引脚的格点类数组2:创建途经点集、格点集、引脚集的临时集,初始化为空集;遍历导线类数组,滤除无效导线,每个导线依次遍历途经点集,直至终点;若通过ptol()映射函数判定途经导线,则该导线设置为无效,途经点集附加该导线类的途经点集,格点临时集附加该导线类的所连格点类编号集,引脚临时集附加该导线类的所连引脚类编号集;若通过ptog()映射函数判定途经格点,则格点临时集添加该格点类编号,引脚临时集附加该格点类的所连引脚类编号集;每根导线的途经点集遍历完成后,将引脚临时集、格点临时集赋值为该导线所连引脚类编号集、所格点类编号集,将途经点临时集附加在导线途经点集后面;清空三个临时集,滤除被融合的导线,开始遍历下一根导线;所有导线遍历完成后,开始二次遍历;遍历每根导线遍的所连格点类编号集,清空该格点的所连引脚类编号集,赋入该导线编号;遍历完成后,得到在格点类数组1的基础上包含导线所连引脚的格点类数组2,其中与导线相连的格点类会被清空所连引脚编号集,赋入所连导线类编号。5.根据权利要求4所述的基于电路图拓扑结构读取的电路仿真方法,其特征在于,设置节点,遍历格点类数组2,得到节点类数组1,与在引脚类数组1的基础上增加外引脚关系的引脚类数组2:遍历格点类数组2,若格点类所连导线类编号为-1,若格点所连引脚个数等于1,判定为
电路断路;若等于2,设置两个引脚类互为外引脚;若大于等于3,使用格点类所连引脚集构造节点,同时将其中所有引脚类的所连节点类编号设置为该节点;若格点类所连导线类编号不小于0,且该格点类未被遍历,则根据其所连导线类的所连引脚重复进行上述步骤,完成后将该导线的所连格点类设置为已被遍历,遍历完成后,得到节点类数组1,与在引脚类数组1的基础上增加外引脚关系的引脚类数组2。6.根据权利要求5所述的基于电路图拓扑结构读取的电路仿真方法,其特征在于,创建支路阻抗值、支路独立电压源电压值、支路独立电流源电流值、支路受控电压源编号集、受控电流源编号值作为临时变量,初始化为0,遍历节点类数组,节点类数组遍历完成后,得到支路类数组,与在节点类数组1的基础上增加了所连支路类编号集的节点类数组2:遍历节点类数组,每个节点遍历所连引脚类,若引脚类所连元件类未被遍历,记录存入引脚所连元件的数值信息,将该元件设置为已被遍历;存入元件数值信息的详细步骤为,对于阻抗,将支路临时阻抗值加上元件阻抗值;对于独立电压源、独立电流源,若当前所遍历的引脚为元件类正极引脚,将支路临时独立电压源电压值、独立电流源电流值加上元件独立电压源电压值、独立电流源电流值,否则取相反数后加入;对于受控电压源,支路临时受控电压源编号集添加元件受控源编号值;对于受控电流源,将元件受控源编号值赋入支路临时受控电流源编号值;判断该引脚的自引脚,若自引脚存在外引脚,则继续遍历该外引脚,重复上述步骤,直至引脚与节点相连;若自引脚与节点直接相连,则构造支路,并在该节点所连支路类编号集中添加该支路编号;根据临时变量数值信息判断支路类型,将临时变量赋入支路数值信息,其中对于电流源与电压源串联、不同电流源串联的连接判定为电路错误;将临时变量清零,继续遍历节点所连引脚类,节点类数组遍历完成后,得到支路类数组,与在节点类数组1的基础上增加了所连支路类编号集的节点类数组2。7.根据权利要求6所述的基于电路图拓扑结构读取的电路仿真方法,其特征在于,设置复合支路,遍历节点类数组2,得到复合支路类数组1,与在节点类数组2的基础上增加了所连复合支路类编号集的节点类数组3:遍历节点类数组2,每个节点遍历所连支路类,当支路未被遍历时,通过wtom()映射函数判断,若支路类型不为c且不存在与该支路起始节点编号、终止节点类编号相同的复合支路类,或支路类型为c,则构造复合支路,并在该节点所连复合支路类编号集中添加该复合支路编号,在该复合支路所连支路类编号集中添加该支路编号;否则,在已经存在的复合支路所连支路类编号集中添加该支路编号;将该支路设置为已被遍历,节点类数组遍历完成后,得到复合支路类数组1,与在节点类数组2的基础上增加了所连复合支路类编号集的节点类数组3。8.根据权利要求7所述的基于电路图拓扑结构读取的电路仿真方法,其特征在于,设置复合支路数值信息,遍历复合支路类数组1,得到在复合支路类数组1的基础上增加了数值信息的复合支路类数组2:创建支路阻抗值、支路独立电压源电压值、支路独立电流源电流值、支路受控电压源编号集、受控电流源编号集作为临时变量;遍历复合支路类数组1,每个复合支路遍历所连支路类,对于a类支路,将复合支路临时独立电流源电流值加上支路独立电流源电流值;对于b类支路,复合支路临时受控电流源编号集添加支路受控电流源编号值;对于c类支路,将支路阻抗值、独立电压源电压值、受控电压源编号集赋入复合支路临时阻抗值、独立电压源电
压值、受控电压源编号集;复合支路所连支路类遍历完成后,将临时变量赋入复合支路数值信息,将临时变量清零;复合支路类数组遍历完成后,得到在复合支路类数组1的基础上增加了数值信息的复合支路类数组2。9.根据权利要求1所述的基于电路图拓扑结构读取的电路仿真方法,其特征在于,代入公式求解节点电压值:(aya
t
)u
n
=ayu
s-ai
s
其中:y=(1+c)z
e-1
(1+d)-1
。10.基于电路图拓扑结构读取的电路仿真系统,其特征在于,包括电路结构分类模块,用于将电路结构划分为七个电路结构类,创建元件类、引脚类、格点类、导线类、节点类、支路类和复合支路类七个类的数组;复合支路类数组获得模块,用于按照构造函数构造元件类、导线类对象并插入元件类数组、导线类数组中,当绘制完成后,得到当前元件类数组、导线类数组,然后依次遍历元件类数组、导线类数组,基于映射函数,依次通过引脚类数组、格点类数组、支路类数组和节点类数组得到复合支路类数组;求解模块,用于创建关联矩阵a,受控电压源系数矩阵d,受控电流源系数矩阵c,独立电压源电压值矩阵u
s
,独立电流源电流值矩阵i
s
,阻抗值矩阵z
e
,遍历复合支路类数组,根据起始节点类编号、终止节点类编号及数值信息为上述矩阵赋值,代入公式求解节点电压值。

技术总结
基于电路图拓扑结构读取的电路仿真方法及系统,包括:将电路结构划分为七个电路结构类;按照构造函数构造元件类、导线类对象并插入元件类数组、导线类数组中,当绘制完成后,得到当前元件类数组、导线类数组,然后依次遍历元件类数组、导线类数组,基于映射函数,依次通过引脚类数组、格点类数组、支路类数组和节点类数组得到复合支路类数组;本发明导线连接方式灵活,支持用户任意连接,可完全直接绘制电路图实现电路结构的输入,提高复杂电路的搭建效率,操作便捷、提升用户体验。提升用户体验。提升用户体验。


技术研发人员:胡书瑞 刘明阳 应雨倩 郝瑞霆 张惟钧 高昕悦
受保护的技术使用者:西安交通大学
技术研发日:2023.04.18
技术公布日:2023/7/12
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐