基于Matlab与Java集成的生态环境监测系统设计研究

来源 :中国科技博览 | 被引量 : 0次 | 上传用户:jettey
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘 要]本文依据最新的生态环境监测系统设计理论与实践研究,介绍了一种以JBuilder为开发平台,本文详细分析研究了Matlab和Java的集成,利用Java-COM桥技术实现了两者之间的集成。利用Java-COM桥技术用Matlab作为数学分析、数据处理工具、算法开发工具的大气环境评测系统的设计与实现。该系统不仅充分发挥了JBuilder开发应用程序的强大优势,而且充分利用了Matlab在计算、图形绘制上的长处。
  [关键词]生态监测 系统设计 Matlab Java
  中图分类号:TF762.3 文献标识码:A 文章编号:1009-914X(2016)21-0101-02
  1 COM和Java解决方案
  Microsoft Java编译器、虚拟机以及各式各样的工具极大简化了Java/COM程序员的工作。编译器有特殊的引导命令和包,可将Java类当作COM类对待。但在大多数情况下,只需依赖Microsoft JVM为COM提供的支持,同时利用两个有力的外部工具。若将Java对象创建成一个COM服务器,那么对象仍然会在JVM内部运行。Microsoft JVM是作为一个DLL实现的,它向操作系统展示出了COM接口。在内部,JVM将对这些COM接口的函数调用映射成Java对象中的方法调用。当然,JVM必须知道哪个Java类文件对应于服务器执行模块;之所以能够找出这方面的信息,是由于事前已用Javareg在Windows注册表内注册了类文件。Javareg是与Microsoft Java SDK配套提供的一个工具程序,能读入一个Java类文件,生成相应的类型库以及一个GUID,并可将类注册到系统内。
  Java/COM客户是一些特殊的Java代码,它们想激活和使用系统内注册的一个COM服务器。同样地,JVM会与COM服务器沟通,并将它提供的服务作为Java类内的各种方法展示出来。另一个Microsoft工具是jactivex,它能读取一个类型库,并生成相应的Java源文件,在其中包含特殊的编译器引导命令。生成的源文件属于在指定类型库之后命名的一个包的一部分。下一步是在自己的COM客户Java源文件中导入那个包。
  2 利用Java-COM桥实现Matlab與Java集成
  2.1 大气环评系统中COM组件生成关键技术
  计算模块是系统的核心模块,根据大气环境评测模型中给出的公式,我们可以方便的得到污染源附近定点的污染物浓度,利用Matlab编程求解,点源模式和熏烟模式以及对点源模式的扩展在Matlab中的关键代码。
  1.Matlab中COM Builder编译环境设置
  Matlab COM Builder在编译生成COM组件时需要借助于外部的编译器,因此首先需要设置Matlab COM Builder所使用的外部编译器,通过mbuilde-setup完成编译环境的设置。Matlab自动注册mwcomutil.dll和mwcommgr.dll,这两个DLL是Matlab COM Builder生成的COM组件的基础,所有生成的COM组件都会使用到这两个DLL。
  2.创建COM组件
  将编写好的M文件利用Matlab的COM生成器发布成COM组件,并且在系统中完成注册。成功创建COM组件后,创建信息显示在“Build Status”面板中。Matlab把.m文件编译成COM组件,同时将COM组件的信息登记在注册表中,登记信息中的ProgID为该COM组件的标识符,jawin就是通过ProgID来调用COM组件。
  3. 组件接口
  COM是一个标准,遵从这个标准的组件能够相互调用。COM通过接口对外提供所有的功能,每一个COM组件都实现一定的接口,至少实现IUnknown接口。由于系统对Matlab的调用只涉及到简单的参数传递,没有特殊要求的接口,故开发的组件有IUnknown和IDispatch接口。接口本质上是一个只包含虚函数指针的结构体。具体的函数由组件类实现,客户调用组件正是通过虚函数指针实现的。
  4.接口定义
  COM规范在采用OSF的DCE规范描述远程调用接口IDL (Interface Description Language,接口描述语言)的基础上,进行扩展形成了COM接口的描述语言。接口描述语言提供了一种不依赖于任何语言的接口描述方法,因此,它可以成为组件程序和客户程序之间的共同语言。COM规范使用的IDL接口描述语言不仅可用于定义COM接口,同时还定义了一些常用的数据类型,也可以描述自定义的数据结构,对于接口成员函数,可以指定每个参数的类型、输入输出特性,甚至支持可变长度的数组的描述。IDL支持指针类型,与C/C++很类似。
  接口定义语言是一种方法,通过这种方法,可以定义COM对象所支持的接口。IDL定义了许多的构成声明和属性的关键字。IDL文件由MIDL编译器编译。MIDL编译器的输出包括:类型库,这个二进制文件包含关于由COM服务器程序所暴露对象的信息。类型库由读取类型库所描述组件对象的接口的开发工具装载。更重要的是,类型库可以被标准的调度对象在跨COM调度时使用。类型库有时是一个单独的TLB文件,有时它作为资源被编译到相关联的DLL或可执行文件中。C/C++兼容的接口描述头文件(*.h),它可以被组件程序和客户程序所使用;GUID文件,它声明了在IDL文件中的每个接口和类相对应的GUID。可以生成代理/存根DLL的源文件。
  组件发布后会有一个全球唯一的GUID,本系统中发布的组件注册到注册表文件中后的“{5618F642-0799-485F-997E-66146110DA64}”即为Matlab发布组件的GUID,并且在注册表留有注册信息。支持COM组件技术的开发工具都可以在开发的应用程序中利用该GUID调用这个组件的方法和过程。当然也可以根据该GUID在注册表中的注册信息,即ProgID中的信息“dqms.dqms.1_0”来调用此组件,大气环境评测系统就是使用这种方法调用通过Java-COM桥调用组件的。   2.2 在Java中调用COM技术
  在Java编程时通过导入jawin包,利用jawin包中的类和ProgID(系统组件的ProgID在上文中已经提及)来初始化COM、生成对象和调用组件函数。步骤如下:
  (1)导入jawin.jar;(2)用引入的包Ole32CoInitialize()来初始化COM;(3)根据ProgID生产一个DispatchPtr(jawin包中的类)对象,后面用该对象来调用COM组件函数和设置属性;(4)调用Matlab函数输入变量和输出变量的设置。首先生成一个Integer对象,用来表示输出参数个数,当没有输出变量时不用生成这个对象,然后输出定义成Variant.ByrefHolder(jawin包中的类)对象的变量,并且用空的输出变量的数据类型构造该对象,输入对象为一般的Object对象;(5)用生成的DispatchPtr对象的invoke函数来调用Matlab函数以及输入、输出变量。Invoke调用参数作如下排列;函数名称(字符串),表示输出变量个数的Integer对象,第一个表示输出变量的Variant ByrefHolder对象,第二个表示输出变量的Variant ByrefHolder对象,……,第一个输入变量对象,第二个输入变量对象……
  也可以生成一个Object数组供DispatchPtr对象的Invoke()函数调用,该Object数组元素包括表示输出变量个数的Integer对象、表示输出变量的Variant ByrefHolder对象、输入变量对象。(6)取出输出变量的值,通过强制转换表示输出变量的Variant.ByrefHolder对象,通过getRef()得到的对象到输出变量的数据类型对象。
  3 大气环境评测系统设计
  3.1 大气环境评测系统的架构
  大气环境评测系统是湖北省环境检测中心站的项目“环境评测计算系统”中的大气评测部分,预期设计用在可移动的污染物检测设备上。系统主要包括点源扩散模式、多源面源扩散模式、熏烟模式等常见的扩散模式预测功能,都是按照HJ/T2.2-93导则-大气环境(文献6)推荐的模型和计算方法对污染物浓度进行預测。
  系统在设计上将应用和负责计算两部分分为应用层和计算层,如图2所示。应用层部分包含了大气环境评测系统的多种模式预测功能,主要工作是参数的设置和中间指标,如烟气抬升高度、太阳高度角、混合层厚度等的计算,并准备计算各种模式需要用到的数据。应用层的另一个功能就是对计算层返回的计算结果进行分析,显示到GUI中去。
  计算层的主要工作是通过Java-COM桥将得到的数据传递到计算组件中,并将计算结果返回。
  3.2 计算模块程序流程
  计算模块是大气环境评测系统的核心,是各种扩散模式模型的应用过程。计算模块的数据流程并不复杂,首先是在GUI中对污染源进行设置,得到最原始的污染源参数;紧接着是按照预测模式的不同,分别计算中间指标,然后将得到的数据作为调用COM组件的参数进行传递;数据传递给由Matlab发布的COM组件后结果计算将结果数据返回给应用层,再返回到GUI。模块的程序流程中整个计算模块的核心部分在于对COM组件得到调用,由于项目的特性,大气环境评测模型有很多的参数,调用组件的过程时需要加以注意参数的顺序和格式。
  4 结论
  综上所述,一般的环境监测设计系统都讨论了Matlab与高级语言的编程接口方法,对目前已有Matlab接口方法进行了系统总结,分析了这些方法的优势、缺陷和使用条件,然后提出了利用COM组件技术实现Matlab与高级语言接口的方法。重点研究了Matlab中开发COM组件的技术,并研究了Matlab生成COM组件的内部过程,给出了Matlab和标准COM变量之间的转换规则。而本文另辟蹊径详细分析研究了Matlab和Java的集成,利用Java-COM桥技术实现了两者之间的集成。文章进一步研究可以研究大气环境影响评价中的大气预测模型,此模型旨在于通过对污染源参数的测定,将得到的数据用模型可以计算出污染源附近某点的污染物浓度。简单的讨论了大气环境评测系统的设计和开发过程。对系统开发过程中的难点进行了详细的介绍并对其进行了深入分析。本文的创新之处在于:在现有的大气环境评测系统中,没有利用数学计算软件,在模型计算上的准确度都依赖于对计算函数的编写精度,而本文则是利用了COM技术实现了Matlab的完美重用,并且将Matlab运用到计算系统中去,加大了系统的计算精度和准确性。由于个人精力和经验所限,文中谈到的一些功能只是提出了些想法和实现的可行性并没有全部实现,系统的图形功能还没有开发成熟,只能简单的显示出定点浓度的示意,并没有达到显示安全范围的功能,这些还有待他人的继续开发和完善。实际上大气环境评测系统是环境影响评价评测项目中的大气部分,整个项目包括了如声环境、水环境等多个方面的内容,希望在不久的将来后继开发者能将全部功能实现,为环境工作者提供一套方便、快捷、实用、精确的计算软件。
  另外,现在的数学计算工具功能越来越强大,可以对环境预测模型进行扩展,现有的模型没有涉及到最大安全范围的计算,只是计算了污染源附近某处的污染物浓度以及最大浓度距离。可以设计一套程序对安全范围进行拟合,一种比较笨拙的办法是将离污染源的距离按照一定规律进行多次计算,根据污染物浓度标准,将浓度符合国家安全标准的位置在图形中标识出来。这只是一种比较简单的方法,还有待进一步的论证和深入。
  参考文献
  [1]邓翔宇.基于GPRS和无线传感网络的环境监测系统设计[J]. 自动化与仪器仪表.2011(03)
  [2]陈立定,冯景辉.基于PLC和GPRS的远程环境监测系统设计[J]. 自动化与仪表.2010(04)
  [3]张绪良,王树德,张朝晖,徐宗军,郑伟.GIS湿地生态环境监测与管理信息系统的建设与应用[J].中国农学通报. 2010(13)
其他文献
[摘 要]文章主要介绍了储能式现代有轨电车储能电源的通风结构设计、散热仿真计算及实际运行结果验证。  [关键词]储能电源 通风结构 散热仿真  中图分类号:U223 文献标识码:A 文章编号:1009-914X(2016)21-0109-02  引言  储能式现代有轨电车是一种新型的绿色环保、高效低碳的城市轨道交通,车载储能电源是其唯一的动力来源。储能电源是以超级电容为储能载体的集成系统,超级电容
期刊
[摘 要]高硬度水是在中国大部分地区普遍存在的现象。在工业生产与日常生活中,常常会由于水体中溶解的各种物质的沉积而造成管道或系统的堵塞,从而导致生产效率下降和维修成本增加等系列问题。此外作为饮用水,长期饮用高硬度水对人的身体健康也会造成危害。目前处理水垢的典型方法是填加药剂除垢。本次设计的是利用一个小型电子设备,产生一个连续变化的电磁波,并通过线圈缠绕到管道的方式将这个电磁波加到水处理器或是管道内
期刊
[摘 要]近些年我国科学技术发展到前所未有的高度,计算机技术和通信技术的推出与应用在很大程度上促进了各行各业发展与进步。就以军事领域来说,通信技术与计算机技术的融合应用在很大程度上提高了我国军事水平。但是,从目前军用通信技术与计算机融合应用实际情况来看,还存在一些不足之处,需要我国相关研究人员明确军用通信技术与计算机技术融合优势,明确其发展趋势,进而致力于通信技术与计算机技术融合应用研究,为使我国
期刊
[摘 要]DC/DC模块是储能式现代有轨电车地面充电装置的核心部件,文本详细介绍了基于Buck三电平的DC/DC模块的主要技术参数、工作原理和主要特点, 并对基于三电平DC/DC模块的充电装置进行了试验。试验表明,基于Buck三电平的IGBT电压应力为输入电压的一半,充电装置的输出电能质量满足充电要求。  [关键词]三电平 DC/DC模块 充电装置  中图分类号:TM46 文献标识码:A 文章编号
期刊
[摘 要]社会经济的快速发展不仅改善了人们的生活质量,同时也提高了人们对供电可靠性的关注度。现如今,社会对电能的需求量越来越大,配电网的可靠运行就显得尤为重要。本文主要针对10KV配网运行中易发的故障问题进行了分析,同时提出了维修配网运行中故障问题的有效策略。  [关键词]10KV配网 运行故障 防范措施  中图分类号:TM76 文献标识码:A 文章编号:1009-914X(2016)21-011
期刊
[摘 要]动力不足是重型汽车发动机故障的主要原因之一,动力不足严重影响着重型汽车的正常使用,积极分析中兴汽车发动机动力不足的主要原因,并采取合理的诊断与解决对策,对于维护重型汽车的正常使用有着重要的意义。鉴于此,本文以柴油发动机为例,对重型汽车动力不足的常见原因进行分析,并提出相应的解决思路,以供参考。  [关键词]重型汽车 发动机 动力不足  中图分类号:U464 文献标识码:A 文章编号:10
期刊
[摘 要]本文通过对云锡老厂锡矿贯通测量的分析研究,发现了貫通测量误差定理和误差估算的一种新的方法,为矿山测量走出了一条小小的新路。  [关键词]贯通测量 误差分析 GPS 全站仪  中图分类号:TD313 文献标识码:A 文章编号:1009-914X(2016)21-0099-02  1 引言  老厂锡矿是云锡公司最大的一个矿山,矿山面积105平方公里,以井下采矿为主。井下每年掘进巷道总长约30
期刊
[摘 要]本文简单介绍了遥控台系统的组成,分析了传输过程对语音信号的影响,选取了语音信号测试的相关参数标准和测试工具,并对测试方法进行讨论。  [关键词]遥控台 比选器 话音传输 综测仪  中图分类号:TH834 文献标识码:A 文章编号:1009-914X(2016)21-0113-01  1 遥控台系统简介  甚高频遥控台系统通常由远端遥控台、传输链路和比选终端组成。远端遥控台的核心设备是甚高
期刊
[摘 要]投资者和东道国投资争端仲裁庭于2015年12月17日就澳大利亚与菲利普?莫里斯亚洲公司投资争端案做出了一个缩减版的裁决,该裁决已于2016年5月公布。本文就该裁决的内容进行分析,以期对该案有更深入的了解。  [关键词]烟草平装措施;知识产权;商业利益;公共健康  中图分类号:D961.1 文献标识码:A 文章编号:1009-914X(2016)21-0077-02  2015年12月17
期刊
[摘 要]本文基于传统电网识别的缺陷,引入了面向对象的图示化智能识别技术。在数据库智能图形系统基础上,通过对电网及其组成部分进行属性、方法、事件的定义,以及开展智能化数学概述,用图元属性对元件状态、方式进行描述。结合具体的图示化短路系统设计实践,对该方法进行验证。结果显示,该方法可以有效的将图元和数据库同步关联,实现电网软件的同平台操作。  [关键词]智能电网 图像识别技术 应用分析  中图分类号
期刊