虚拟电子实验台的设计规则与算法
2014-02-08秦宏王皓曲延华张玉梅
秦宏,王皓,曲延华,张玉梅
(1.沈阳工程学院自动化学院,辽宁沈阳110136;2.辽宁移动通信公司网络管理中心,辽宁沈阳110179)
1 虚拟实验台基本功能
实验台是虚拟电子实验室的核心部件,所有的电子器件、仪器仪表、电源等构件都放在实验台上,通过导线连接形成实验电路,因此实验台必须具备以下基本功能:
1)为用户提供可选择的常用器件,并在实验台上安放、承载、移动.
2)能够重复调用同一个器件,实现控件的动态加载.例如,电路中的多个电阻不可能都具有为自己单独编写的“方法”,而是按类划分,将所有新增加的电阻控件都放在电阻集合类中.
3)各实验器件、仪器仪表、电源等控件间的连接功能,即布线、删除、移动等.
4)实验器件与实验电路的合法性检查.
5)控件的删除.
6)电路图的保存、读取.
7)器件节点号的自动赋值、排序与计算,建立客户端表面图形化的电路与服务器端实际电路拓扑结构的映射关系.
2 虚拟实验台的主要算法与规则
2.1 常用器件选择、承载与动态添加功能
虚拟实验室的部件设计成ActiveX控件,因为基于网络的虚拟电子实验室承载的平台是B/S结构,利用ActiveX强大的可移植性,ActiveX能被B/S和C/S结构的软件随意调用,因此能够嵌入到IE浏览器中.
首先,采用Active Bar 2.0控件作为器件的选择菜单,将所有的器件集成到菜单中,用Picture控件作为摆放平台.实验台的程序开发要具有选择电子器件并添加到实验台、动态加载重复添加的器件等功能.
例如,用户点击电阻后再添加另外一个电阻时,系统不仅要自动命名不同的名称,还要对不同的电阻能够执行同样的“方法”.考虑通过“类”的方法实现重复调用,将所有新增加的控件都放在同一个集合类中.
下面程序表示动态加载1个示波器SSS.sbq,并将它加到集合类CtrlItems中去,完成1个控件的动态加载,方法如下:
ControlItem为集合中的单个元素,是程序编写的另一个类,此类中定义了针对集合里的不同控件进行响应的事件.例如,当用户添加自定义的电阻控件的1个端子,会通过CLICK中的raise event方法调用类模块ControlItem中的方法.
2.2 器件之间的连接
以画图(线)的方式实现电子器件之间的连接.电子器件之间的连线不是简单的图形,每条线都是一个自定义line控件,line控件要有记录线两端的端口信息的功能,这样才能使服务器端知道控件间的连接关系.增加连线,将器件端口连接起来需要完成的工作有:
1)修改连线两端点的端口信息,通知对方端口某控件的某端口与之发生了连接.
2)对允许空闲的端口,将其状态设置为“已连接”.同时,设置实验台上的端口以红色显示,标注其允许空闲,例如,示波器的未用通道.
3)重新计算端口的节点号.节点号的赋值与计算要满足多项规则,最主要的是一定要保证同一条线两端的节点号一致以及不相连的节点的号值必须不同.
4)线的删除.线的删除将按照图1所示流程进行.
图1 线的删除
2.3 控件的删除
控件(器件)的删除首先要保证没有其他器件与其相连,也就是说,必须先删除连接线才能删除器件.删除的同时,将该器件由集合中删除以释放资源.
2.4 实验器件的合法性检查
实验台ActiveX控件必须要对电路的合法性进行检查,才能保证提交到服务器解析的电路数据无误,否则利用服务器纠错将会极大加重服务器的负荷.总之,一切在客户端完成的检查一定要在客户端完成,提交到服务器上的数据一定是规范并且满足解析输入条件的.
合法项检查一般包括:有参数的器件必须有赋值、器件端口无空闲状态、器件节点号符合规定、有示波器和电源等必要设备以及其他条件.
2.5 电路的保存与读取
用户在实验进行中可能会中途停止转而进行其他操作,因此实验台需要具有对当前搭接的电路图进行保存的功能,当再次进入实验时,用户可以重新读取原来的进度.需要注意的是,电路的保存和读取不仅要保存电路的图形和配置数值,更重要的是电路的拓扑结构、连接关系、节点关系等都要进行保存.重新开始实验即重新从数据库中读取原来的进度时,实验台上现有的电路必须先清除然后才能加载新数据,否则将造成器件同名问题,因此实验台读取进度的程序中要预先判断当前实验台上是否有数据,如果有数据需要预先清除.
2.6 器件节点号的赋值与计算
程序除了通过器件种类、配置数据获得实际电路结构以外,电路的连接关系是极其重要的,如果连接关系错误将得到截然相反的结论,解析程序是根据器件的节点号码区分电路之间的连接关系的.如图2所示,其中图a中是人工配置的节点号码,对应的电路文件如图b所示.
图2 电路的节点号配置与生成的CIR电路文件
例如,CIR电路文件中的第二行“rb1 5 4 220k”说明在节点5、4之间有1个阻值为220 k的电阻,“c1 1 2 47uf”则代表节点1、2之间存在的元件是47μF的电容.
程序需要得知如何为电路分配节点号码,不同的用户做的电路完全迥异,取用元件的顺序、连接导线的顺序都各不相同,就算是对同一个实验也不可能预先规划一个完全一致的模版.因此,以颜色来类比节点号,采用了以下的节点号(颜色)配置方案.
1)同色原则
与同一节点(颜色)相连的所有连线两端的节点号码(颜色)均相同.
2)染色原则
2个或2个以上不同节点(颜色)互连时,所有节点都配置相同的节点号码(颜色),而不管原先的节点号码(颜色)是什么,这称为染色原理.至于2个节点相遇成为1个节点后,该节点最后会被统合成什么数字的节点号,为使程序简便,遵循最小数字优先的原则,即用小数字(浅颜色)覆盖大数字(深颜色).
根据以上同色原则和染色原则,用户在给实验台添加器件和连线时,每个器件的各个端口首先按照拿取顺序被分配一个从小到大的、唯一不重复的ID号码,在器件连接中根据连接关系,按照同色原则和染色原则不断重新赋值器件端口的节点号码.所有节点的拓扑可用二叉树遍历的方法确定每个节点的最终号码,或者说最终颜色.
如图3所示,当用户将某绿色节点⑤与某器件端口的红色节点④连接时,根据染色原理,程序将CIR文件中所有与④相连的节点号都染色为红色节点号④.为了不遗漏,通过二叉树遍历的方法搜索,或者搜索集合中所有已出现的节点号,找出所有的⑤并以④替换.在客户端最后提交到服务器前,实验台还要对每个器件的节点号进行分析,查找错误并互动提示给用户,例如接地节点序号不为0、不允许的空闲端口等问题.直到用户的CIR文件完全通过合法性规则的检验,方可提交到服务器.
图3 同色原则与染色原则
3 电路CIR文件生成
CIR文件的生成是实验台要完成另一个主要功能,也是实验台在向服务器传送数据之前完成的最后一个工作,实现将用户设计的电路编译成电路CIR文件的功能.
3.1 用户电路信息
在用户完成了器件选择、摆放、电路连接等基本操作以后,客户端就根据用户的连接信息自动生成服务器端进行电路仿真需要的数据文件,即CIR文件,然后将该CIR文件送给服务器,这样可以大大减轻服务器端的压力,使虚拟实验系统的实时、多用户等目标有实现的可能.
3.2 用户测量与分析信息
在电路CIR文件的生成过程中,不仅需要生成电路信息,还需要根据用户的仪表摆放和连接情况生成分析语句.例如,某双踪示波器的双通道分别测量节点③、①的对地电压,则需要生成相应的时域分析语句为“.plot tran V(3,0)V(1,0)”.
3.3 分用户信息的区分
每个用户的CIR文件要写入服务器固定目录,每个用户的CIR要进行区分,作为临时文件,实验结束后将该CIR文件删除.
4 结语
利用核心的同色算法和染色算法,完成了虚拟电子实验室核心部件虚拟实验台的规则设计和搭建,使得自主开发的虚拟电子实验台具有器件的选择、承载、连接、编辑以及电路的合法性检查、保存、读写等功能,尤其是给出了一种表面图形化的电路与实际电路拓扑结构映射关系的建立方法,实现了对选取的器件形成的任意电路的仿真.
[1] 冼凯仪.虚拟电子实验台在电子技术基础实验教学中的应用[J].中国现代教育装备,2008(3):48-50.
[2] 马海瑞,周爱军.基于Data Socket技术的Lab VIEW远程测控.佳工机电网[DB/OL].[2013-04-10].http://www.newmaker.com/art_16615.htm l.
[3] 杨中华.LabW indows_CVI网络化通信的研究与实现[J].深圳职业技术学院学报,2009,8(5):50-53.
[4] 谢维成,李富干.基于WEB的虚拟实验室平台设计及软件实现[J].西北大学学报:自然科学版,2008,27(1):69-72.
[5] 夏惊涛,穆道生.基于ActiveX控件的视频监控系统客户端编程[J].广播与电视技术,2006(1):83-85.
[6] 张世荣,唐玉玲.用DataSocket实现本地/远程进程间通信[J/OL].[2013-6-19].http://plc.ca800.com/detail.asp?id=962.