韦忠善, 王力虎
(1.广西职业技术学院 计算机与电子信息工程系,广西 南宁 530226;2.广西师范大学 物理科学与技术学院,广西 桂林 541004)
电路图比对方法的研究与应用
韦忠善1, 王力虎2
(1.广西职业技术学院 计算机与电子信息工程系,广西 南宁 530226;2.广西师范大学 物理科学与技术学院,广西 桂林 541004)
定义一种电路图特征向量及其提取,提出了一种电路图比对方法,实现了二维电路图形信息到一维字符信息的转换。通过比对电路图特征向量,可以判别两电路图是否一致。将所提出的电路图比对方法应用于模拟电路设计练习系统的开发,实现了电路设计练习的对错自动评判。实践应用表明,电路图比对方法简单有效,所开发的练习系统深受好评,有较好的应用价值和推广前景。
电路图比对; 电路设计; 练习系统
模拟电子技术是电子信息、通信和电气类专业最重要的技术基础课程[1-4],旨在培养学生对典型模拟电路的分析能力和设计能力。对于第一个目标,相对容易实现,而对于第二个目标,实现比较困难。一个主要原因在于,教材及其配套的练习系统提供的练习题,多为电路分析题目,几乎没有电路设计题目,因而,学生平时训练,多是进行电路分析的训练,很少进行电路设计的练习[5-8]。为了培养学生对典型模拟电路的设计能力,有必要开发一个模拟电路设计练习系统,提供给学生作电路设计练习之用。
在模拟电路设计练习系统的设计与实现过程,面临最大的技术困难是:如何对学生所画的电路图与系统提供的标准电路图进行比对,从而判别学生所设计电路的对错[9-10]。关于电路图比对的技术,国内外还没见有相关文献报道。为了解决此技术难题,提出了一个电路图比对方法,具体思路是定义一个电路图特征向量,用以描述电路图隐含的电路拓朴和电路参数,通过提取待比对的两电路图的电路图特征向量,将二维电路图形信息转换成一维字符串信息,最后对待比对的两电路图的电路图特征向量进行一致性比较,若完全一致,表明两电路图指向同一电路,否则,表明指向不同的电路。
应用文中的电路图比对方法,开发了一个模拟电路设计练习系统,系统有几个特色:①系统具有“设计对错自动评判”功能,满足了“即时反馈” 现代教学理验要求;②系统提供题库,同时提供题目开发功能,支持教师对题库进行二次开发,如增添新题目,或修改原有题目,从而使练习系统普适于不同学校,也更有生命力;③系统自带电路绘图模块,系统运行无需借助于任何第三方工具,具有易安装、易使用的特点。所开发的练习系统,经3所学校10多个班级试用,深受欢迎,表明练习系统有较大的应用价值和推广前景。
电路图隐含电路的两个要素:电路拓朴和电路参数。电路拓朴指电路元件及其电气连接关系,电路参数指电路元件的参数值。图形不同的电路图,若隐含的电路拓朴和元件参数一致,则实质为同一电路,只是表现形式不同,反之,各指向不同的电路[11-15]。如图1的两电路图,左图为系统提供的共发射极放大电路,右图为学生设计的共发射极电路,两电路图从图形上有较大的不同,但隐含的电路拓朴和电路参数完全相同,实质为同一电路。
图1 图形形式不同但实质为同一电路的两电路图
为了检验用户的设计是否正确,可将用户所画的电路图与题库提供的标准电路图进行比对,比对内容为两电路图隐含的电路拓朴和电路参数,若完全一致,表明设计正确,否则,表明设计错误。
若是人工比对,比较容易实现,因为人脑可过滤电路图形式上的干扰,只专注比对电路图的电路拓朴和电路参数是否一致;若让计算机程序完成比对,需要设计一个合适的数据结构,用来存放从电路图提取的电路拓朴和电路参数,然后通过比对数据结构的各元素,完成电路图比对。
文中,先定义元件引脚特征字,然后用元件引脚特征字定义节点特征字,再用节点特征字定义电路图特征向量,最后通过比对电路图特征向量,实现电路图比对的自动化。
1.1 电路图特征向量
每张电路图包含若干个节点,每个节点连接若干个元件的引脚,若电路图的节点及节点所连接的元件引脚确定,则电路图所隐含的电路拓朴和电路参数就确定。反过来,由若干个元件的引脚属性,可以确定一个电路节点属性,由若干个节点的属性,可以确定一张电路图的电路拓朴和电路参数。
为此,定义元件引脚特征字,一个元件引脚特征字,对应一个元件的一个引脚,用来描述此引脚属性。再用元件引脚特征字定义节点特征字,一个节点特征字,对应一个节点,用来描述此节点属性。最后,由节点特征字定义电路图特征向量,用来描述电路拓朴和参数。
电路图特征向量隐含也仅隐含电路图的电路拓朴和电路参数数据,无冗余数据,依据电路图特征向量提取算法程序,确定的电路图能也只能生成唯一的电路图特征向量,因而,可以通过比对电路图特征向量,实现电路图比对的自动化。
从电路图到生成电路图特征向量,实质是从二维平面图形信息转换成一维字符串信息的过程,实现了信息维度下降的同时,实现了信息从图形到文字转变,从而,显著降低了电路图比对的难度。
1.1.1 元件引脚特征字定义
元件引脚特征字(Pin Feather String,PFS)定义为:PFS=元件类型标识+[元件参数]+[引脚名]。其中,元件类型标识用以标识元件的类型,如“R”、“D”和“C”分别为电阻、二极管和电容的元件类型标识;[元件参数]为可省项,用以标记有参数值的元件的参数值,如“100 kΩ”、“ 10 μF”分别表示电阻阻值和电容容量;[引脚名]也为可省项,用以标记有极元件的引脚名称,如“P”和“N”分别标记正极(或正相端)和负极(或反相端),“b”、“c”、“e”分别标记三极管的基极、集电极和发射极。元件引脚及其特征字实例为:100 kΩ电阻引脚(R100K),5.1 V稳压二极管正极(Z5.1VP),NPN三极管的基极(NPNb),运放的正相输入端(OPAPi),发光二极管的负极(LEDN),+5 V直流电源(VCC+5 V)。其中:R、Z、NPN、OPA、LED和VCC分别为对应元件类型标识;P和N分别指正极(或正相端)和负极(或反相端);i指输入端。
1.1.2 节点特征字定义
设有一电路节点,连接有M个元件,由M个元件的引脚特征字组成集合为
PFS={pfsi},i=1,2,…,M
把集合PFS的引脚特征字,按其值由大到小排列,组成向量为:
(pfs1,pfs2,…,pfsM), ∀sj∈PFS,j=1,2,…,M
把向量(pfs1,pfs2,…,pfsM)的每个分量,按从左到右顺序串接起来,所得字符串定义为节点特征字(nfs: node feather string),表示为:
nfs=pfs1-pfs2-…-pfsM
式中,“-”用以分隔前后特征字。
所谓特征字的值非一般数值概念,只有两特征字比较时才有意义,两特征字的值比较算法用C语言描述如下:
Int StringCompare(const char *str1, const char *str2)
{ int N1, N2;
N1=strlen(str1); //计算字符串的长度。
N2= strlen (str2);
if (N1>N2)
return(1); //若字符串1的长度大于字符串2的长度,返回1。
else if (N1 return(-1); //若字符串1的长度小于字符串2的长度,返回-1。 else //若两字符串长度相等,再调用字符串比较函数strcmp()比较两字符串大小 { N1= strcmp(str1,str2); if (N1>0) return(1); //字符串1大于字符串2,返回1。 else if (N1<0) return(-1); //字符串1小于字符串2,返回-1。 else return(0); //字符串1等于字符串2,返回0。 } } 以图1左电路图三极管基极所在节点为例,其节点的元件引脚特征集合为: {“NPNb”,“R510K”,“C10uP”} 按特征字的值由大到小排列,生成向量为: (“R510K”,“C10uP”,“NPNb”) 按从左到右顺序,把上向量的分量串接起来,得此节点的特征字为: nfs=“R510K-C10uP-NPNb” 1.1.3 电路图特征向量定义 设有一电路图,有N个节点,由N个节点的节点特征字组成的集合为: NFS={nfsi},i=1,2,…,N 对集合NFS的节点特征字,按其值由大到小排列,组成向量定义为电路图特征向量(circuit feather vector,CFV),表示为: CFV=(nfs1,nfs2,…,nfsN), ∀nfsj∈NFS, j=1,2,…,N 以图1左电路图为例,由电路图6个节点的节点特征字组成的集合为: NFS={“C10uN-Vi”,“R510K-C10uP-NPNb”,“NPNe-Gnd”,“C10uP-NPNc-R2K”,“VCC+5 V-R510K-R2K”,“C10uN-Vo” } 由集合NFS生成的电路图特征向量为: CFV=(“VCC+5V-R510K-R2K”,“R510K-C10uP-NPNb”,“C10uP-NPNc-R2K”,“NPNe-Gnd”,“C10uN-Vo”,“C10uN-Vi”) 用同样方法,所得到的图1右电路图的电路图特征向量与上表达式相同,表明图1两电路图实质为同一电路。 1.2 电路图特征向量提取 电路图特征向量提取算法描述如下: AssignNumberForEachNode(); //统计电路图节点,并分配节点号 For each node //遍历每个电路节点 { AssignNumberForEachPin(node) //统计节点连接元件的引脚,并分配引脚号 For each pin //遍历每个引脚 { Generate_pfs(pin); } //产生引脚特征字 } Generate_PFS(node); //产生节点的引脚特征字集 Generate_VectorOfPFS(node); //产生节点的引脚特征字向量 Generate_nfs(node); //产生节点特征字 } Gererate_NFS(); //产生节点特征字集 Generate_VectorOfNFS(); //产生电路图特征向量 1.3 支路等效 利用上述方法,可以解决图1两电路图的比对,但应用于图2左两电路图,会得出两电路图为不同电路的结论。但其实,图2左两电路图,尽管隐含的拓朴不完全一致,差异表现在R1和D1位置上的互换,但两者是同一支路的两个元件,其串接顺序的不同,对电路功能并无任何影响,因此,两电路图实质上完全等效。 图2 图形拓朴存在差异但实质为同一电路的两电路图及其等效电路图 为了排除支路元件串接顺序不同给电路图比对带来的干扰,提出支路等效方法——对任一支路,若支路含K个元件(K≥2),可用一虚拟元件等效此K个元件的串联,用来等效的虚拟元件,称为支路等效元件。 以图2(a),(b)两电路图的R1和D1所在支路为例,介绍支路等效元件引脚特征字定义与生成算法。 设R1和D1的等效元件为Comp,Comp也存在两引脚,其上引脚和下引脚分别接至电容U1正极和负极。经过支路等效后,图2(a),(b)两电路图的等效电路图如图2(c)电路图所示,Comp上引脚特征字计算方法如下: 分别由R1和D1的上引脚特征字组成集合:{“R100”,“LEDP”}。对集合{“R100”,“LEDP”}按值由大到小排序,生成特征字向量:(“LEDP”,“R100”)。按从左到右顺序,把向量(“LEDP”,“R100”)的每个元件引脚特征字串接起来,所得字符串定义为等效元件Comp的上引脚特征字,表示为:“LEDP-R100”。同样方法,可以得到Comp下引脚特征字为:“LEDN-R100” 显然,对于图2(a),(b)两电路图,尽管R1和D1位置互换,但两元件在同一支路,经过支路等效变换后,等效电路图的等效元件的上引脚特征字都为“LEDP-R100”,下引脚特征字都为“LEDN-R100”,因而,消除了支路元件串接顺序不同给电路比对带来的影响。 若D1极性接反,等效元件Comp的上引脚和下引脚特征字互换,分别为“LEDN-R100”和“LEDP-R100”。可见,等效元件的引脚特征字,包含支路各元件的类型、参数值、方向等必要信息,剔除了给电路图比对带来干扰的元件串接顺序信息。 引入支路等效方法后,在进行电路图特征向量提取前,应先完成支路统计与支路等效步骤。 2.1 练习系统组成 练习系统组成框图如图3所示。 图3 模拟电路设计练习系统框图 在题目开发阶段,调用电路绘图单元,绘制题目的标准电路图;调用题目编辑单元,编辑题目的文本(题目介绍和要求);调用题目存储单元,保存题目。保存内容包括题目的文本、元件数据和连接线数据,元件数据包括电路图各元件的摆放方向、坐标和参数等数据,连接线数据包括电路图各电气连接线的端点坐标数据。 在电路设计练习阶段,选择好题目后,题目编辑与显示单元显示题目的文本;元件与连接线参数读取单元读出所存标准电路图的元件数据和连接线数据;读出数据送两路,一路送至连接线删除单元,把当中的连接线数据删除,再把余下的数据送至元件位置和方向随机设置单元,对元件的坐标和方向进行随机设置,然后由电路绘图单元绘出随机摆放的元件;另一路送至电路图特征向量提取单元,提取出标准电路图的电路图特征向量(简称标准电路图特征向量);在电路绘图区,练习者依据设计要求,重新摆放元件、添加连接线,完成电路设计;练习者完成电路设计后,系统把练习者所画电路图的元件数据和连接线数据送至电路图特征向量提取单元,提取练习者所设计的电路图的电路图特征向量(简称设计电路图特征向量);最后,由电路图特征向量比较单元,对标准电路图特征向量和设计电路图特征向量进行一致性比较,若两者完全一致,提示设计正确,否则,提示设计错误。 2.2 实 例 以NPN管驱动LED电路为例,介绍练习系统的应用。 题目开发时,开发界面如图4所示。在左边的电路绘图区,添加元件,翻转元件到合适方向,移动元件到需要位置,编辑元件参数,最后添加连接线,绘出题目的标准电路图。在右边文本编辑区,编写题目介绍和电路设计要求。 图4 题目开发界面实例 电路设计练习时,当选择好题目后,系统重现题目介绍和电路设计要求,但删除了连接线,只显示所存电路图的元件,且元件的方向和位置为随机设定,绘图区显示内容如图5所示。在绘图区,练习者根据电路设计要求,分别移动各元件,翻转各元件到需要方向,再添加连接线,完成电路设计。 图6为一练习者所设计的电路图,尽管从图形上,与标准电路图有较大的差别,且D1和R1的串接顺序也不一样,但经过支路等效,提取、比对两电路图特征向量,系统可判定两电路图实质为同一电路,指示练习者设计电路正确。 图5 电路设计练习时的初始界面 图6 一练习者完成电路设计后的界面 图7为另一练习者所设计的电路图,尽管电路拓朴与标准电路完全相同,但电路参数有差异,表现在两个电阻的参数上,经过提取、比对两电路图特征向量,系统可判定两电路图并非同一电路,指示练习者设计电路错误。 图7 另一练习者完成电路设计后的界面 开发模拟电路设计练习系统的最大技术难题是如何判别练习者所设计电路的对错,为此,提出了一种电路图比对方法。所提方法定义了一种电路图特征向量,所定义电路图特征向量只包含电路图的电路拓朴和电路参数信息,没有其它冗余信息,通过提取、比较待比对两电路图的电路图特征向量,可以判别两电路图是否一致。将电路图比对方法应用于模拟电路设计练习系统,实现了“设计对错自动评判”关键功能,练习系统经三所学校十多个班级试用,深受好评。项目组正在优化系统、丰富题库,争取把系统推广到更多学校,服务更多学生。 [1] 教育部高等学校电子电气基础课程教学指导分委员会. 电子电气基础课程教学基本要求[M]. 北京: 高等教育出版社, 2011. [2] 王 波, 张 岩, 王美玲, 等. “模拟电子技术实验”课程的改革[J]. 实验室研究与探索, 2013(4): 140-143. [3] 李朝海, 吴援明. “模拟电路”教学效果的调查分析及其对策研究[J]. 理工高教研究, 2009(1): 126-128. [4] 刘 艳, 朱昌平, 宋凤琴, 等. 模拟电子技术实验教学中的学生实践能力培养[J]. 实验技术与管理, 2010(2): 110-112. [5] 张新安, 李春树, 潘海军. 电子技术课程实践教学改革的研究与实践[J]. 实验室研究与探索, 2010(11): 293-296. [6] 王 波, 张 岩, 王美玲, 等. 电子技术课程设计教学改革的探索[J]. 实验室研究与探索, 2013(10): 380-382. [7] 陈 静, 史雪飞. “模拟电子技术”课程中若干关键问题的探讨[J]. 电气电子教学学报, 2014(1): 59-61. [8] 黄艳芳, 吴 波. 电工电子实习教学的现状与改革[J]. 实验室研究与探索, 2011(9):147-149. [9] 孙丽凤, 徐淑华, 宫 鹏. 电工与电子技术教学手段方法探讨[J]. 电气电子教学学报, 2010(9): 78-80. [10] 张 华. 仿真技术在模拟电路教学中的应用研究[D]. 济南:山东师范大学, 2011: 6-8. [11] 朱海燕, 韦忠善. 模拟电路的计算机仿真软件开发[J]. 计算机测量与控制, 2014(1): 291-293. [12] 仇佳捷. 基于OSG的虚拟电工电子实验平台设计[J]. 实验室研究与探索, 2012(10): 3-6. [13] 景晓渝. 基于C++ Builder的快速电路图绘制研究[J]. 软件导刊, 2012(7): 155-156. [14] 朱 敏, 杨春玲, 孔德晶. 模拟电路内建自测试故障特征提取与优化[J]. 仪器仪表学报, 2013(1): 200-205. [15] 田成来, 彭敏放, 宋丽伟, 等. 模拟电路故障最优特征搜索与识别[J]. 仪器仪表学报, 2012(7): 1499-1555. Study and Application of Circuit Diagram Comparison Method WEIZhong-shan1,WANGLi-hu2 (1. Department of Computer and Electronic Information Engineering, Guangxi Vocational and Technical College,Nanning 530226, China; 2. College of Physical Science and Technology, Guangxi Normal University,Guilin 541004, China) The article offers a kind of means for schematic comparison. The method is to define the characteristic vector for a circuit diagram, and then to convert information of a two-dimension circuit diagram into one-dimension character information. By extracting and comparing characteristic vector of circuit diagram, two circuit diagrams are judged whether or not to be consistent with each other. The method proposed in this paper can be applied to the development of analog circuit design practice system, and realized the automatic evaluation on right or wrong for circuit design. Application results show that the method is simple and effective, the practice system is highly regarded, and has high application value and promotion prospects. circuit diagram comparison; circuit design; practice system 2015-03-10 广西教育厅科学研究基金项目(YB2014486) 韦忠善(1972-),男,广西横县人,硕士,副教授,电子技术教研室主任,主要从事电子技术、计算机仿真技术教学与研究。 Tel.:13768516507;E-mail:724704157@qq.com TP 311 A 1006-7167(2016)01-0097-052 模拟电路设计练习系统
3 结 语