摘 要:基于Excel开发实时监控人机界面(HMI)软件的技术路线,大大降低了实时监控人机界面软件的开发难度和工作量,大幅度地缩短了开发周期,节省了研发费用和投资;不仅使所开发出的软件具有强大的实时监控功能,而且还具有高度的灵活性和可拓展性,支持嵌入式系统项目的研发、生产及维护的整个生命周期的各个阶段。
关键词:Excel;实时监控;人机界面;BASIC语言
对于以单片机为核心的嵌入式自动测控系统,通常在系统开发阶段需要借助微型计算机(PC机)来完成数据采集、数据分析、实时监控、人机交互等任务。要有效地达到此目的,需要在PC机上安装和运行一个实时监控人机界面软件,自动化或半自动化地完成上述任务。目前,主要有两种开发实时监控人机界面软件的方法:(1)采用某种计算机语言直接编程实现,如采用微软的可视化编程语言VC++6.0[1]或VB 6.0[1]等;(2)在商品化的人机界面软件框架的基础上进行二次开发实现,此类软件框架在国外有InTouth[2]、WinCC[3]、RSView[4]等,国内有“力控”[5]、“组态王”[6]等。第一种方法具有高度的灵活性和可拓展性,但要求开发者具有较高的计算机软件技术水平,开发难度大,开发周期长。第二种方法降低了开发难度,但灵活性和可拓展性受到了很大限制,有些方面难以满足实际要求,且此类商品化软件框架的价格为几千到十几万元,这是一笔不小的投资。基于对上述两种方法优缺点的认识,本文提出了一条新的技术路线:基于Excel[7]开发实时监控人机界面软件。采用这条新的技术路线,大大降低了实时监控人机界面软件的开发难度,大幅度缩短了开发周期,节省了研发费用和投资;同时,不仅使所开发出的软件具有强大的实时监控功能,而且还具有高度的灵活性和可拓展性,支持嵌入式系统项目的研发、生产和维护的整个生命周期的各个阶段。
1 基于Excel的技术路线
Excel是功能强大的电子表格处理软件,其对象模型包括了一百多个不同的对象,从文本框、矩形等简单对象到透视表、图表等复杂对象。特别是它集成了与微软VB 6.0相兼容的Visual Basic计算机语言,支持先进的面向对象和面向部件的编程技术,使得它成为了一个功能强大的软件开发工具。开发基于Excel的人机界面应用程序包括两部分:设计用户界面(GUI)和编写代码程序。
传统的应用程序界面开发方法要编写一大段程序语句。与此不同的是,本文利用了Excel集成的可视化Visual Basic编程语言和支持“快速原型法”的软件开发模式,即使用“工具箱”中的若干控件,按照设计者的构思,在指定位置“画”出对用户友好的界面。
有了用户界面后,对应用界面要执行的控件进行“事件驱动”,也就是执行某个程序算法,使它按照设计者的意愿运行。这一技术路线把原来统一控制的大程序分解成为许多独立、小规模的子程序,分别执行事件。如利用Excel自带的自动化编程技术“录制宏”生成的程序模块为样板程序,或利用自有的或第三方的AciveX控件编程进行功能拓展。
2 实时监控人机界面软件的结构
在高性能恒温晶振(OCXO)的科研项目中,开发了用于精密控制恒温箱的实时监控人机界面。该高精度温度控制系统以微控制器MSC1210为核心组成嵌入式系统控制器,或称为下位机。下位机通过RS232串口与上位机(PC机)通信,如图1所示。
通过与下位机的通信,对嵌入式系统的下位机进行监控,自动记录和显示采样数据、显示工艺参数的实时趋势曲线等。其软件结构如图2所示。
启动模块具有“启动监控中心”、“数据保存到文件”和初始化全局变量的功能。实时监控中心可以控制通信开关、上载开关、选择上载数据的处理方式,实时设置并显示控制器参数,以及实时显示采样数据。其中通信开关是其他功能按钮的使能开关,即只有打开通信开关,上、下位机的通信开始工作后,其他功能按钮才能工作。
3 主要功能模块的设计介绍
3.1 通信模块
通信模块是软件设计的难点,其主要功能为实现上位机与下位机的通信,设计的关键在于上位机与下位机通信协议条款的制定及实现。上位机与下位机通信的稳定性与正确性是实现实时监控的前提,通信协议所制定的通信数据包格式一般需要设计成能完成基本的校验功能,它包含有前导码、数据包标识码、数据校验码和结束码。
为了减少编程的难度和工作量,采用微软提供的串口通信AciveX控件MSCOMM32.OCX来实现与RS232串口硬件直接有关的底层功能。因此,通信模块程序仅处理有关通信协议方面的高层功能,如收、发和校验通信数据包,上载与下载控制器参数包,发送上位机向下位机下达的命令包等。
3.2 主监控模块
主监控模块用于显示最新上载数据,包括给定值、测量值、控制值以及上载量、设置给定值、设置手动控制值以及切换控制方式。值得一提的是,这一实时监控人机界面软件可以实现无扰动切换自动与手动的控制方式,即在两者相互切换的过程中,PWM占空比不会出现大幅度跳动,由此防止恒温箱的输入电流出现瞬时的大幅度变化,干扰整个电路的正常工作。图3为主监控模块的操作界面。
3.3 实时数据记录与保存模块
此模块把从控制器上载的实时数据和相关的时间、工艺参数自动记录到电子表格并将自动形成文件保存到硬盘中。
模块程序的编写使用了Excel电子表格对象模型,并结合面向对象的编程技术来实现。采用了“录制宏”的自动化编程技巧完成此项工作:首先,采用“录制宏”,把手工操作实现数据记录与保存的每个步骤录制下来后,Excel就会自动给出一个实现相应操作、采用BASIC面向对象语言描述的程序模块;然后,以此BASIC程序模块为样板程序,添加少量必要的程序流程控制语句和少量其他修改,调试通过后就完成了此模块程序的编写。
从控制器上载的实时数据可以选择直接写入电子表格,或者在趋势曲线上显示后成批写入电子表格。电子表格或趋势曲线被设计成能够显示1 000组数据,并按照记录时间自动分配文件名保存到指定文件夹内,以便于将来对数据进行分析和处理。
3.4 控制器参数的实时修改和保存
控制器参数的实时修改功能是专为控制器的调试设置的。在调试过程中,需要不断调整控制器参数以寻找最佳值。把控制器的参数设计为存放在单片机的RAM中,每个参数均可按单独下载刷新的方式方便地进行实时修改。同时,把存放在RAM的参数写入闪存,以及把存放在闪存的参数恢复到RAM中存放的功能。
因此,当调试完成或告一段落时,就可以将控制器存放在RAM中的参数写入闪存保存,作为最终产品的控制器参数或供下次实验使用。控制器在上电复位的初始化的过程中,自动完成控制器参数的恢复或上次实验参数的加载,从而减少调试的工作量。图4为控制器参数的实时修改和保存界面。
3.5 实时趋势曲线的显示
如果直接用计算机语言编写显示实时趋势曲线的程序,将是难度很大且十分耗时的任务。因此,为了降低难度和节省开发时间,采用了微软提供的图形显示AciveX控件MSCHRT20.OCX来完成这个任务。所获得的实时趋势曲线显示效果如图5所示。
实时趋势曲线图直观地显示了当前控制器的测量值、给定值和控制值,大大降低了参数调试的操作难度。
3.6 历史数据的重现与分析(图示分析或统计数值分析)
实时数据的自动保存功能可以使历史数据重现。Excel能完成绝大多数常用统计分析任务。同时,Excel电子表格在数据的预处理、图形的绘制等方面具有相当出色的应用,其内置函数数量多且使用方便,可以用于完成历史数据的重现与分析。
4 在科研项目中的应用
上述实时监控人机界面已在项目实验中应用,并借此工具对高精度恒温箱的制造技术参数、工艺参数和控制参数进行了大量有价值的探索。
(1)控制器参数的设置。其中,PID参数的设置是整个控温的关键,其好坏直接影响控温效果。这一人机界面实时反映控制器当前状态,使操作者能够及时调整控制器参数。同时,手动操作的功能也有助于了解被控对象的特性,获得第一手经验和技术诀窍,用于引入“实时专家系统”。
(2)实验数据的记录与分析。基于Excel电子表格的人机界面借用了Excel自带的数据处理功能,可以在曲线上重现历史数据,从分析和重现记录的历史数据中获得有用经验。
(3)变换实验方案。基于Excel的实时监控人机界面的开发简便而有效,采用模块式的编程方法,组态灵活、扩展容易,兼容性好,从而在变换实验方案时能以较快速度进行扩展和升级维护,以适应实验方案的改变。
(4)在项目产品生产阶段,这一程序可扩展为产品测试检验软件,自动生成产品质量的检验文件,实现产品质量的查询、分析和跟踪的电子化,并能够向客户提供合格产品的电子质量报告文件。
为嵌入式自动测控系统量身定制实时监控人机界面软件是一项技术复杂、难度大、开发周期长的任务。本文利用新的方法和技术路线达到了降低开发难度、缩短开发周期和节省研发费用的目的,并在嵌入式系统科研项目的应用中获得了很好的运行效果,验证了新的技术路线的可行性和有效性。这一技术路线能有效支持嵌入式系统产品的整个生命周期。基于Excel方案的最大缺点是运行速度比较慢,原因为Excel的BASIC语言是解析执行的。但是,基于Excel方案的程序很容易移植到微软的VB6.0下编译执行。最终采用此方法,对基于Excel方案的程序进行移植处理后,不仅能够提高程序的执行速度,而且还可以按照商品化的形式发布程序。
参考文献
[1] Microsoft Corporation.MSDN Library Visual Studio 6.0.1998.
[2] Invensys Systems,Inc.In touch user′s guide.2002.
[3] Siemens AG.SIMATIC HMI WinCC V6.0 Online Help.2005.
[4] Rockwell Software Inc.RSView32 user′s guide.1999.
[5] 北京三维力控科技有限公司.力控6.0联机帮助.2008.
[6] 北京亚控科技有限公司.组态王6.52联机帮助.2007.
[7] Microsoft Corporation.Microsoft Excel在线帮助.2003.