浅谈Visio在教学仿真中的运用

2019-05-13 10:24:16 计算机时代2019年3期

刘平 徐俊蓉

摘 要: 仿真是一种有效而经济的教学手段,但是由于教学仿真开发技术要求高,并且耗费大量时间和精力,所以在课程改革过程中,教学仿真的设计和开发往往是多数教师头疼的问题。介绍利用Microsoft Visio软件绘图简便以及后台编程控制相对简单、灵活等优点,实现高效开发高品质教学仿真的几种方案,其中将Visio与单片机编程软件Keil联合起来进行教学仿真的方案为可编程控制器的仿真提供了一种全新的思路。希望能够为开发教学仿真的教师(或团队)提供参考和借鉴。

关键词: Visio; 理论教学; 仿真; 图形表单; 二次开发

中图分类号:TP391.9 文献标志码:A 文章编号:1006-8228(2019)03-85-04

Discussion on the application of Visio in teaching simulation

Liu Ping, Xu Junrong

(Guiyang Vocational and Technical College, Guiyang, Guizhou 550008, China)

Abstract: Simulation is an effective and economical teaching method. However, the high requirements of teaching simulation development technology and the large amount of time and energy, the design and development of teaching simulation is often a headache for most teachers in the course of curriculum reform. This paper introduces several schemes to realize the efficient development of high quality teaching simulation by using the advantages of Microsoft Visio software for drawing and relatively simple and flexible background programming control, among which the scheme of combining Visio with single-chip programming software Keil for teaching simulation provides a new idea for the simulation of programmable controller. It is hoped that this paper can provide references for teachers (or teams) who develop teaching simulation.

Key words: Visio; theoretical teaching; simulation; Shapesheet; secondary development

0 引言

如何激发学生的学习兴趣,提高教学效果一直是广大职教工作者思考和探索的方向。仿真无疑是其中一种有效的手段,它具有成本低和表达直观等优点。仿真也存在一些问题,一个突出的问题就是教师使用的教学仿真软件往往不是由自己或自己的课程团队开发的,所带来的问题是仿真不能够与课程真正实现对接。如果让任课教师自己开发又困难重重。笔者经过长期的摸索和實践发现:微软公司的专业绘图软件Visio或许能够解决这个矛盾。作为目前最优秀的绘图软件之一,Visio具有作图便捷和绘图效果等优点,特别是其科学包提供的各种专业、精美的元件图形为教学场景的搭建提供了方便。不仅如此,Visio还具备强大的后台编程控制能力和数据库功能,以及对象连接与嵌入等功能,这为基于Visio的二次开发的教学仿真提供了优质的平台[1]。通俗地说,即Visio上所有的图元及其组合图形的属性(包括颜色、形态、位置等)都是可以在后台通过图形表单或程序编辑器控制的,而且编程语言可以是易学易懂的VAB语言 (Visual Basic Application),也可以是功能较强的C/C++,还可以是新兴的.NET开发工具。笔者通过数年的实践和探索,在机电等专业数门专业课的教学中引入了基于Visio二次开发的仿真来辅助教学,有了一点体会,借此与同仁分享。

1 基于Visio的仿真及其在教学中的运用

笔者将基于Visio的教学仿真分为两个层面:独立的Visio软件仿真和Visio与其它软件平台联合进行的仿真。

1.1 独立的Visio软件仿真

在Visio软件中有两种方式可以控制图元的属性,一种是通过对图元对应的Shapesheet(图形表单)进行相应的公式编辑来实现;另一种则是通过后台的程序编辑器编写用户程序来控制。

1.1.1 通过表单来实现仿真

在Microsoft Visio中,每一个图形(或图形组合)都有其对应的Shapesheet,其罗列了该图形(或图形组合)的所有可用属性(Property)和事件(Events),这些条目在对应的Shapesheet中都以表格的形式呈现,而在表格中以Formula(公式)来控制对应对象(图形)的属性。其中的公式中可以引用其它单元格的数据,也可以使用函数和运算符,其语法要求和规则与Microsoft Excel的非常类似[2]。对于使用过Microsoft Excel单元格公式编辑功能的人员,使用Visio的Shapesheet功能就不会有太大困难。因此,通过图形表单开发教学仿真是一种快捷而有效的途径。

以惠斯通电桥教学仿真为例,该设备是一种精密仪表,在教授学生使用惠斯通电桥的教学过程中,教师会反复强调操作步骤和错误操作的结果,但是仍然屡屡出现由于误操作而损坏的情况。如果设计一个具有操作步骤识别,同时功能和外形与实际电桥一致的教学仿真,先让学生在仿真的惠斯通电桥上操作,熟悉后再到实体上操作,实现“虚实结合”,则问题能大为改观。实现的方法如下。

首先,在Visio绘图页面上搭建与实体惠斯通电桥的外形及操作方式相似的场景,如图1所示。这里称“搭建”是因为其中的毫安表、电阻箱、电阻和外接电池(如果需要)在Visio的科学包中都有现成的模版,只要拖拽到页面并将其组合即可。然后,在Visio的Shapesheet中描述惠斯通电桥的内在的电学关系以及图中各个档位开关、按钮以及毫安表指针之间的内在关系。其中关键之一是建立图中档位开关的位置与对应电阻值的关系。以电桥x10档为例,在该挡位开关对应的图形表单中,新建一个保存对应电阻值的变量,并将其以公式的形式描述如下:

ROUND(MOD(360 deg-Angle,360 deg)/36 deg,0)*10

由于一圈共分为10档,所以上式中通过取整函数(ROUND)将360度分为10份,每一份对应10欧姆的电阻值。需要注意的是当档位开关从0度顺时针旋转360度,在Visio中被解读为(-0,-180)度和[+180,+0]度两个阶段,所以,上式中是用周角减去当前角度,然后再对周角取余的目的正是将当前角度转换为[0,360)度的形式。比率挡位开关位置与对应比率的关系描述也基本类似。关键之二是在Visio的Shapesheet中描述图1中毫安表指针偏转角度与计算出来的不平衡电流毫安值的关系。Visio中提供的电流计指针偏转范围是(-35,+35)度,较为常用的惠斯通电桥上电流计指针指示范围是(-0.5,+0.5)mA,根据该线性关系就可以算出不平衡电流对应的指针偏转角度。为了限制虚拟的电流表的指针偏转角度不超过±35度,需要通过Bound()函数将不平衡电流限制在-0.5mA-+0.5mA的范围以内。

该仿真惠斯通电桥上按钮的操作的方式是通过鼠标右键的快捷菜单实现。实现方案是:在按钮对应的Shapeshee中增加一个用户定义单元,存放用来表示该按钮的开合状态的布尔型变量flag。然后在该按钮Actions(动作)栏中添加两个条目,分别对应该按钮的开合状态,详细公式填写表1所示。

其功能是在按钮获得焦点后,单击鼠标右键出现闭合或打开的菜单选项,点击对应选项来仿真惠斯通电桥上按钮的操作,从而控制前面定义的变量flag的状态。另外,惠斯通电桥的操作是有顺序要求的,例如,要求电源按钮(Kb)和测试按钮(Kg)接通的情况下是不能调整电阻箱电阻的挡位开關。为了对该要求进行仿真,可以在挡位开关的Shapesheet中Events(事件)栏的EventsXFMod(状态改变将触发对应的脚本)条目中填写公式,通过if()指令判断如果Kg或Kb的结果为1,则触发PLAYSOUND()函数播放提示音讯,提示操作者操作错误。

1.1.2 通过程序编辑器和表单来实现仿真

对于过程较为复杂的仿真,特别是动作与时序有关的情形下,单独通过表单编的辑往往难以实现要求的功能,此时还需要用到功能更强更灵活的Visio Automation(自动化技术)进行二次开发。Automation是一种方法,它使用 Microsoft Visual Basic for Application(VBA)、Microsoft Visual basic、C/C++或其它支持 Automation的语言编程。就Visio的二次开发的方式而言,可以分为创建Visio加载项(add-ons)、创建组件模型COM(add-ins)及通过Visio自带的Visual Basic编辑器创建VBA解决方案三种方式实现[3]。由于Visio的Visual Basic编辑器是Visio软件自带的编程环境,直接打开编辑器就可以编辑程序,并且Visual Basic编程方式比较容易掌握,因此,对于非计算机专业的教师而言,采用第三种方式是比较适合。本文也主要介绍这种方式在教学仿真中的运用。

前面已经说过,在Visio中图形的位置、角度以及大小等物理属性都存储在表单中。用户程序对图形对象这些属性的读写是后台编程控制前台页面图形的基本方法和过程。Visio 对象的结构模型(即对象组织形式)是一个广义的概念,大到运用程序、小到图元都称为对象。它们通过层次结构组合在一起称为对象模型,其模型表明了对象之间的隶属关系,同时也是用户程序引用图形某属性数据的路径。Visio的对象模型比较繁杂,不过其中常用的对象有Documents、Pages、Shapes和Cell四种,它们及其所包含的元素的关系如图2所示。

正是由于Visio对象存在这样的隶属关系,所以在程序中访问一个图元的某个属性的基本过程也是按照图2所示的顺序进行。在默认情况下,Document为当前文档,Page为活动页面(Actived Page)。在此以展示三相交流电机旋转磁场形成的仿真实例(如图3所示)来介绍通过用户程序编写和图形表单公式编辑两种方式结合来实现仿真的方式。鉴于文章篇幅所限制以及图形编辑的方式已经在本文1.1.1部分作了介绍,这里重点介绍其中在Visual Basic编程环境下实现的功能。

其中的DoEvents是为了实现控制权的转让,以便让操作系统处理其它的事件,这样能够提高计算机工作效率。

由于交流电的相位角还与其频率有关,所以在该仿真中通过控制上述滑块的位置来调节交流电的频率(其数值与滑块的位置的关系在对应的图形表单中通过公式的形式描述,这里再展开说明),为此定义一个变量f来引用当前的设定频率(user.f),以此为基础,A相交流电当前相位角可以通过其在时间间隔中的相位角变化量累加而得到:

其中的s *360 *0.05就是交流电在0.05秒的时间间隔内相位角的增量。另外,为了便于后续的显示要将累加得到的相位角对360取余,从而将其转换到[0,360)度的范围内。在此基础上,通过对应的图形表单建立以下关系。

⑴ 图3中指示交流电相位角的竖线的水平坐标与交流电相位角的对应关系。

⑵ 图3中磁场及合成画面上在空间相差120度的三相交流磁场与三相交流相位角的关系。

⑶ 三相交流磁场与其合成磁场的关系。

这样在启动后台用户程序后,指示当前相位角的竖线将同步于当前A相相位角的变化而移动,同时,随着相位角的变化,三相交流电各自在空间中产生的磁场以及其合成磁场的状态也将在仿真画面中动态的呈现出来。

1.2 基于多平台联合的Visio仿真

涉及可编程控制类软件的课程通过理实一体化的教学当然是最好。但是在实训设备不能满足课程设计要求的情况下,用仿真代替就是一种有效的补充手段。通常这类可编程控制类软件都会以某种方式向第三方软件提供数据接口,从而实现信息互通。例如西门子PLC 的编程控制软件Step7的组件S7.ocx[6],常用的单片机编程软件Keil的头函数文件agsi.h[7]。

下面以基于Visio展示平台的单片机控制仿真为例简要介绍这类仿真的实现方法。

单片机编程软件Keil提供了一个SDK(软件开发工具包),该SDK包含一个名为agsi.h的头函数文件。在C++等编程环境中利用agsi.h提供的函数和方法,能对Keil相应寄存器数据进行读写等操作。通常在用户程序中引用该函数,并将结果在用户程序中显示出来。但是,由于C++本身不是专业的绘图软件,所以仿真多是LED、数码管等简单项目。如果将Visio在绘图方面的优势以及其中图元可后台控制的特点利用起来就能够弥补Keil仿真的缺憾。实施方案是在C++编程环境中利用agsi.h读单片机存储器的数据并保存到数据文件中,然后,读取数据文件中的数据并写入单片机对应的寄存器中。然后编译该用户程序并生成一个DLL文件(Dynamic Link Library,称为动态链接库文件)加载到单片机编程软件KEIL上。它相当于一个内置的数据接口,在形式上独立于Keil,但是被加载后,在逻辑上与Keil仿真软件融为一体[8],这就构成了一个具有开放数据的单片机控制程序运行通用仿真平台;另一边利用Visio搭建相应的控制场景,并通过后台编程的方式读写前述数据文件,进而实现单片机用户程序对场景中对象的形态、位置和颜色等属性的读入和控制,如图4所示。

其优势在于:①该仿真数据接口是通用的,课程开发者仅仅需要根据项目设计单片机控制程序和控制场景;②由于Visio是专业的绘图软件,所以场景搭建简便而且呈现效果较好。相对于proteus等主要用于设计和功能测试这类功能大而全的单片机仿真软件,这种仿真方式更具个性化。这些特征对课程开发和课堂教学而言具有很大优势。

2 结束语

Microsoft Visio不仅有优秀的绘图功能还具备强大的后台编程控制功能,对其功能的深入研究并在教学仿真中适时运用,必将对涉及到电工电子、气动和液压以及单片机等知识点的课程教学有颇多益处。由于篇幅和笔者学习深度有限,论述或许不够详尽。希望本文能起到抛砖引玉的作用,让更多的同仁共同来研究其教学运用。

参考文献(References):

[1] 崔中伟,夏丽华.Visio 2016图形设计标准教程[M].北京大学

出版社,2017.

[2] (美)Microsoft,莱恩工作室译.开发Microsoft Visio解决方案[M].

北京大学出版社,2002.

[3] 刘强,刘向君.利用Visio二次开发实现逻辑图自动分析[J].软

件导刊,2008.8(1):13-14

[4] 管丽娜,白海波.实用Visual Basic6 教程[M].清華大学出版

社,2001.

[5] 肖敏.使用Doevents方法解决程序中的死锁问题[J].有色冶

金设计与研究,2011.32(Z1):126-128

[6] 王帅,胡毅,何平,安涛,张腾飞,郭安.基于OPC技术实现西门

子数控系统的数据采集[J].组合机床与自动化加工技术,2016.4:69-71

[7] 宋成森,李式巨.利用AGSI接口实现单片机系统软件仿真[J].

工业控制计算机,2005.9:48-49

[8] 王小东.Keil u V2下AGSI接口结构及其仿真DLL的实现[J].

计算机运用出版社,2008.11:33-35