中学虚拟电路实验系统的设计

时间:2022-08-28 09:54:03

中学虚拟电路实验系统的设计

摘要:虚拟电路实验室系统通过对不同的电路建立数学模型,然后对数学模型进行求解,对电路实验进行仿真,让学生在计算机上完成电路实验。该文主要介绍了如何运用脚本语言ActionScript3.0并结合Flash IDE来完成中学虚拟电路实验系统的设计。

关键词:计算机仿真; ActionScript3.0;Flash

中图分类号:TP391 文献标识码:A文章编号:1009-3044(2009)34-9727-02

The Design of Virtual Circuit Experiment System for High School

YANG Ling-zhi, HU Run-ping, LI Ying

(Southwest University of Science and Technology, Mianyang 621010, China)

Abstract: Virtual circuit laboratory system, through the establishment of different mathematical models of the circuit, and then solving the mathematical model of the circuit simulation experiments to enable students to complete the circuit in a computer experiment. This article describes how to use scripting language in combination with ActionScript3.0 to complete the secondary Flash IDE virtual circuit experimental system design.

Key words: computer simulation; ActionScript3.0; flash

1 总体框架设计与实现

1) 按钮和实例元件的制作

由于Flash的矢量绘图功能效果好,存储内存小,而且按钮可以直接链接类文件,与类关联,所以要直接做按钮。

2) 类的设计与实现

具体的交互功能是在主控制文件中完成的,界面上所有按钮和舞台上的显示元件都有相对应的类定义,来实现一些简单的功能。

3) 主控制文件介绍

主控制文件是整个系统的主要部分,负责所有交互内容的管理。包括按钮的响应、对元件的操作、和电路分析功能的链接。其中大部分交互是通过事件机制来完成的。

2 按钮交互功能

1) 给舞台和按钮添加监听器

事件监听机制:在ActionScript3.0中,事件的处理者只能是函数对象或对象的方法。给舞台和显示板添加事件监听器,监听相关的事件,添加鼠标事件监听,执行删除、显示信息等操作。

2) 橡皮功能的实现

为了模拟真实的删除元件的形式,从外部导入橡皮图片,使之坐标随鼠标坐标变化,实现鼠标跟随。通过点击实现删除操作。

3) 访问限制设计

在舞台上的按钮有一定的约束关系。为了防止导线添加出现问题,规定了必须完成某条导线才能点击其他按钮。在运行电路前,一定要检测电路,是否符合基本标准。不允许出现点电源短路等错误链接。这些判断都会通过提示对话框完成提示。

4) 与电路分析算法的连接

与后台电路分析算法的连接主要是通过“检测”按钮来完成的,在“检测”的响应函数中建立电路类的实例myCircuit,把显示板上的元件数组和导线数组传给myCircuit,这样就建立与电路类的连接。然后利用电路类中的方法构建电路结构和进行电路分析。

3 元件交互功能

显示板上的元件和导线的管理:

1) 先创建元件实例,在通过showPanel.addChild(…)将该实例添加到显示列表,实现实例按钮的响应。

2) 导线的添加,必须利用一个临时变量willdwire来完成。在显示板上通过点击元件节点把节点的值赋给willdwire,当导线获得两点后,调用自身方法drawLine()画出导线。

3) 每添加一个元件,就保存到elementsArray中,把创建的导线保存到wireArray中。

4 文件的交互功能

1) 文件的保存与打开

保存功能:File.save(currentDoc, nameString + str);

打开功能:File.browse([new FileFilter("CircuitDoc", "*.xml")]);

File.addEventListener(Event.SELECT, loadListener);

2) 文件信息的还原

成功载入文件后,调用display()把文件的信息还原到舞台。

function display(event : Event): void {…}

分别将元件和导线XML节点分组保存,var elementslist: XMLList = currentDoc.element; var wireslist : XMLList = currentDoc.wire;

然后依次访问数组的每个XML节点,根据节点信息先判断Etype类型,然后根据Etype创建相同类型的元件。再把其他信息分别赋值给对应的变量。然后把元件添加到已经清空的显示板上。导线的信息读取后还要调用drawLine(),绘制出导线的线条。

5 数学模型仿真

基本的前台和后台交互更能实现后,开始实现对数学模型的仿真。

1) 通过电路之间的约束条件,把这些规律用计算机模拟出来。

这里的电路约束有KCL、KVL、VAR。这些约束条件主要反映的是电路各个支路和结点的关系。

2) 把舞台上的连接关系转换成可以和模型进行直接关联的电路结构,即有结点,支路等。

在最初的设计中,每个元件都有两个连接节点,每个节点记录了与之相连接的导线。假设电路的每条支路有一个元件,支路和支路的交汇处事电路结点。那么需要利用一个递归函数找出所有的结点和支路。只有找出结点和支路后才能建立基尔霍夫关联矩阵,建立结点和支路的关系。

3) 制定出分析方法,对转换后的图进行分析,排除和计算。

在这个过程中需要处理一些不合理的连接关系,比如电源短路、元件短路、断路等。如果一条支路的两端结点是同一个结点,则可以判定这条支路上的元件被短路;如果一条支路存在一个以上的空结点,则可以判定这条支路的元件是断路的。

如果有开关,需要判断出开关控制的支路,然后记录这些被控制的支路。

通过得到的关联方程和VAR关系,建立得到 n-1个KCL独立方程和b-n+1个KVL方程。运用Matrix中的矩阵计算方法求得方程的解。把得到的解记录到对应的变量中

4) 把第3步的结果交给前台处理,控制灯的亮灭和线标的显示。

6 结论

Flash+ActionScript3.0能近似模拟真实实验,表现出很好的交互效果。ActionScript3.0是一种和Java很相似的脚本语言,其内建的方法和强大的事件机制也为实现交互提供了很好的支持。在前台设计好界面,后台进行控制,对开发者来说很形象易懂。不过这种方案也相对有限,对于一般的应用程序或者flas游戏来说比较简单,而ActionScript3.0是一种很有发展前景的脚本语言。

这个设计最重要的特点就是有效地结合了FlashIDE的图形制做功能和ActionScript3.0编程功能,使得设计方法简单有效。本文主要是介绍了一种新的仿真方法,然后实现对数学模型的模拟。在实现模拟时要注意数学模型和数据之间的关系,以便找到模拟方法。

参考文献:

[1] 乔珂. ActionScript 3.0权威指南[M]. 北京:电子工业出版社,2008.

[2] Ramaswamy A.Lights, camera, ActionScript 3.0[EB/OL]./developerworks/library/wa-actionscript.

[3] Moock C. Essential ActionScript 3.0[M]. O'Reilly Media,2007.

[4] 邓友生,韩立群. 虚拟电路实验室的设计开发[J]. 计算机仿真,2005(5).

[5] 庞淑英,罗萍,吴光敏,等. 虚拟电子实验室中电路元器编程实现的研究[J]. 昆明理工大学学报,2002,27(5).

[6] 李凌霞,刘志镜. 网络虚拟电路实验室的Java实现[J]. 计算机辅助设计与图形学学报,2004,16(3).

上一篇:《计算机网络》课程教学改革的研究与实践 下一篇:UML嵌入式系统设计