散堆物料体积测量方法研究及其应用软件设计_第1页
散堆物料体积测量方法研究及其应用软件设计_第2页
散堆物料体积测量方法研究及其应用软件设计_第3页
散堆物料体积测量方法研究及其应用软件设计_第4页
散堆物料体积测量方法研究及其应用软件设计_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEIVPAGEI 散堆物料体积测量方法研究及其应用软件设计摘要大型不规则散堆物料的体积的准确测量,多年来一直是一个技术难题。以火电厂为例,长期以来国内普遍采用人工盘煤的方法测量煤场的储煤量,由于人工盘煤整形不是十分精确,水平面是倾斜的,煤堆的各面凹凸不平,采用直尺测量容易造成与实际存煤量的偏差,直接影响发供电煤耗的准确计算。针对这种情况本课题使用超声波扫描法将观测对象沿一边方向分成若干段单元,利用超声波通过不同介质具有不同反射的特性,对每段单元的每个断面进行扫描,分析计算断面的扫描面积,从而求出整个观测对象体积。本文主要研究这种测量方法测量堆积物料体积的具体实现,包括数据采集、数据处理、可视化图像重建和最后体积计算等内容,在此基础上进行完善的应用系统设计,完成了散堆物料的体积测量的数据采集过程的模拟实现、数据传输、体积计算分析、可视化图像重建。系统所用的技术可以直接用于真实的计算机测量应用系统开发上面。本课题主要使用MicrosoftVisualBasic.NET2005窗体应用程序制作出体积测量系统,使用MATLAB绘制出散堆物料的三维曲面图。软件界面友好,操作简单,计算速度快。关键词:散堆物料,体积,测量,软件仿真 ResearchonLargeYardMaterialVolumeMeasurementMethodandDesignofApplicationSoftwareABSTRACTLargematerialvolumeofirregularaccuratemeasurement,continuouslyhasbeenformanyyearsisatechnicalproblem.Forexample,withlongpowerwidelyusedartificiallydishofdomesticcoalwaystomeasuretheamountofcoalreservoir,duetoartificiallyequipmentinventoryofcoalisnotveryprecise,coalplasticisinclinedplane,allthesurfaceofcoalisuneven,andiscausedbyactualrulermeasurementeasydepositquantityofcoalgas,directlyaffectingdeviationofcoalconsumptionaccuratecalculation.Inviewofthissituation,thistopicusingultrasonicscanningmethodistheobservationobjectdividedintomanyalongthesidedirection,usingultrasonicthroughparagraphunitwithdifferentreflectionunderstandmediumcharacteristicsofeachsectioneachsegmentofunitscanning,analysisandcalculationofthescanningarea,thussectionoutthewholeobservationobjectvolume.Thissubjectmainlystudiesthemeasuringmethodofmeasuringaccumulationmaterialvolumeconcreterealization,includingdataacquisition,dataprocessing,visualimagereconstructionandfinalvolumecalculations,etc.Onthisbasisforperfectapplicationsystemdesign,completedthevolumeofthematerialsmeasurementofdatacollectionprocesssimulationimplementation,datatransmission,volumecalculationandanalysis,andvisualizationimagereconstruction.Systemcanbeuseddirectlytoatechniqueusedrealcomputermeasurementapplicationsystemdevelopmentabove.ThissubjectmainlyusesMicrosoftVisualBasic.Net2005formapplicationsmakevolumemeasurementsystem.The3-DsurfacefigureofMaterialstackismadebyMATLAB.Thesoftwarefriendlyinterface,easytooperate,andcomputingspeedisfast.KEYWORDS:materialstack,volume,measuring,softwaresimulation目录摘要 IABSTRACT II1绪论 11.1问题的提出 11.2研究背景 11.3国内外常用方法 22散堆物料体积测量系统概述 42.1散堆物料的概述 42.2常用测量方法 42.2.1激光测距 42.2.2CCD摄影机 52.2.3超声波测距 63散堆物料体积测量系统的开发模式 83.1散堆物料体积测量系统设计方案 83.2散堆物料体积测量系统软件设计的基本思想 84散堆物料体积测量系统设计 104.1散堆物料体积测量系统的一般组成 104.2散堆物料体积测量系统的基本功能 104.3散堆物料三维立体图像生成常用方法 104.3.1立体摄影测量方法拟合三维曲面 104.4本系统散堆物料三维曲面生成方法及算法分析 124.5散堆物料体积测量系统的四种方法简介 144.5.1方法一简介 144.5.2方法二简介 164.5.3方法三简介 184.5.4方法四简介 204.5.5散堆物料体积测量系统的四种方法总结 225开发平台 235.1MATLAB 235.2VB.NET 246散堆物料体积测量系统软件设计的关键技术及其实现 266.1VB.NET与Matlab的混合编程技术 266.2方法一的关键技术及其软件系统实现 276.2.1方法一的体积测量 276.2.2方法一的软件系统实现 286.3方法二的关键技术及其软件系统实现 346.3.1方法二的体积测量 346.3.2方法二的软件系统实现 356.3方法三的关键技术及其软件系统实现 376.3.1方法三的体积测量 376.3.2方法三的软件系统实现 406.4方法四的关键技术及其软件系统实现 446.4.1方法四的体积测量 446.4.2方法四的软件系统实现 477结束语 52致谢 54参考文献 55PAGE22陕西科技大学毕业论文(设计说明书)PAGE55散堆物料体积测量方法研究及其应用软件设计1绪论1.1问题的提出大型不规则散堆物料的体积的准确测量,多年来一直是一个技术难题。以火电厂为例,发电成本的70%~80%是用于燃煤费用,做好燃煤管理是电力部门经营管理的重要工作之一。长期以来国内火电厂普遍采用人工盘煤的方法测量煤场的储煤量,盘煤工作量较大,投入人力、物力较多,且测量误差较大。由于人工盘煤整形不是十分精确,水平面是倾斜的,煤堆的各面凹凸不平,采用直尺测量容易造成与实际存煤量的偏差,直接影响发供电煤耗的准确计算。如果把它应用到发电厂仓储煤炭的计量管理中,就会发现对堆积煤炭进行体积的规则化整理除耗费力和物力外,还将在一定程度上影响仓储煤炭的连续使用,并且测量精度不能适应生产管理的要求。现在这种方法只能在实时性要求不高的堆积煤炭中长期计量中采用。尤其是近几年来,一些不法商家或人员采取不正当手段让企业的检尺人员“故意涨尺”,发电厂每年因此而造成的损失可达上千万元人民币。因此,火电厂燃煤体积的准确测量一直是困扰我国发电行业的一个难题。针对于燃煤体积的测量,人们研究了很多方法。除了人工检尺方法外,还有称重测量法,视觉平面测量法等等,但在这些方法的测量过程,受人为因素影响较大,测量结果的准确度难于保证。为使火电厂的燃煤体积测量实现自动化,降低人为因素的影响,提高测量精度,减少企业的损失,同时也为了使我国的火电行业尽快地实现科学的管理,赶上国际先进水平,本项目采用机器视觉测量技术,从理论和实验两个方面对散堆物料体积的测量问题进行了较为深入的研究。新测量系统的投入,不但测量快速,数字准确,而且不受煤场形状约束,不论白天、阴雨天、黑夜(具备照明光源的情况下)均可进行盘煤。1.2研究背景在最近的几十年中,机器视觉检测技术作为一项高新技术得到快速发展。近十年来国内外的许多研究机构,在机器视觉检测这一方面做了大量的研究工作,提出了一系列的测量方法,这些方法都是基于机器视觉检测技术,构造视觉检测系统,利用图像处理技术对所拍摄的物体图像进行处理,最后采用一定的算法来获得相关的数据。这些方法主要有:双像合成法、莫尔条纹法,傅立叶变换轮廓法,位相测量法,三角测距法,聚焦法,飞行时间法和光谱法等。国内对三维物体形状检测的研究虽然起步较晚,但也取得了一些成果。通过检索,了解到上海交通大学、湖南大学、安徽大学、哈尔滨工业大学、青岛海洋大学、中国计量学院、滦河发电厂等等研究机构与院校分别提出过开发研究的机器视觉检测系统和方法。所有这些,为解决散堆物料体积的自动、准确测量提供了一种很好的借鉴和经验。国外三维视觉检测技术的研究中,虽然取得了一定韵成果,但在散堆物料体积测算方面,仅有芬兰一家公司介绍过有关整车燃煤测量的系统。整车测量对于燃煤的规格要求较高,所以该系统仅对于体积较小、比较规则的燃煤比较适用,但对于大量使用形状不规则的燃煤的我国发电行业来讲则很难适用。而且其设备的价格高达9万美元,测量精确度也不是很高。这对于我国目前阶段的发电行业是无人敢问津的,而其它的研究机构至今还没有研究出较为可靠的适用于我国国情的测量系统。1.3国内外常用方法通过与国内研究方法的比较,我们发现虽然现存的研究方法较多,应用的范围较广泛,但本项目在散堆物料体积测算方面所采用的新方法与其它方法不尽相同,存在着自己独特之处。(1)《火电场煤场储煤量激光检测装置》利用煤场上现有的门式堆取料机和装在上面的小车作两维扫描运动,用装在小车上激光器和线阵CCD摄影机组成的光电探测系统对煤堆各点表面高度进行逐点光学测距。将在不同高度的煤表面上形成的激光点成像在线阵CCD上,根据像点在CCD上的不同位置确定煤堆表面各点高度,再进行积分计算求得煤堆体积,它的主要技术特征为利用激光器和线阵CCD摄像机组成的光电探测系统对煤堆各点表面高度进行逐点光学测量和利用门式堆取料机及其小车的机械运动进行测距传感器的平面定位。利用这种技术原理所带来的问题是:第一,由激光器和线阵CCD摄象机组成的光电探测系统在对煤堆表面高度进行光学测量时测距精度与激光器和线阵CCD摄象机之间的相互位置关系有关,与摄象机和煤炭表面之间的距离有关。这套光学测距方法的精度将限制煤堆表面高度的测量精度。第二,利用门式堆取料机及其小车的机械运动实现光电探测系统的平面扫描运动,扫描运动速度难以提高。门式堆取料机及其小车机械运动的性能决定了光电探测器的平面扫描方式与速度,门式堆取料机属大型机械要对其进行精确扫描控制,无论在控制系统设计还是实际操作方面均非常困难。这将从整体上影响煤炭体积的测量精度,并加大测量所需时间。(2)《基于无棱镜的全站仪的盘煤系统》在煤地周围均匀布设一定数量的基础控制煤场煤堆体积自动计量系统制点(一般以6-10为宜),以便能观测到煤维全貌.基础控制点的观则可选择GPS或全站仪,坐标系可选择独立坐标系或国家坐标系。基础控制点的选取与埋设应注意以下几个方面:(a)距煤维在100(b)便于观测和永久保存(c)基础控制点和煤堆之间不应有任何巡挡物在每一个基础控制点上,利用全站仪,分别对煤堆有效观测范围进行扫射。如在基础控制点上,扫不到煤堆顶部,可利用后交的方法,在煤堆顶部建立监时控制点,以采集煤塔顶部的有效数据。观测时应注意采集能表达煤堆起伏的特征点,如分水线、合水线、坡顶线、坡底线、上坎线、下坎线和凸凹处等等。一般来讲,坡度大、起伏明显的区域,点密度要求大一些,而地形平缓的区域,点密度可相应减小一些。用全站仪带来的问题是明显的:第一,测试精度不高。全站仪的价格与精度关系直接相关,一个精度高的的全站仪的价格在几万元左右,而要达到整体测量精度在1%左右的测试系统,要求单次测距精度在5.00cm第二,工程施工的实现难度较大。用全站仪测量要在煤地周围均匀布设一定数量的基础控制点(6-10个)。基础控制点距煤维在100m第三,对测量人员的要求较高。测试点的选取要注意采集能表达煤堆起伏的特征点,这就对人员的依赖性加大,测量的随机性很大。2散堆物料体积测量系统概述2.1散堆物料的概述物料,是我国生产领域中的一个专业术语。生产企业习惯将最终产品之外的、在生产领域流转的一切材料(不论其来自生产资料还是生活资料)、燃料、零部件、半成品、外协件以及生产过程中必然产生的边角余料、废料以及各种废物统称为物料。散堆物料即为没有任何规则、形状的物料,比如说盖房所用的沙堆、火电厂的煤堆等。此次研究以煤堆为研究对象,长期以来国内火电厂普遍采用人工盘煤的方法测量煤场的储煤量,盘煤工作量较大,投入人力、物力较多,且测量误差较大。由于人工盘煤整形不是十分精确,水平面是倾斜的,煤堆的各面凹凸不平,采用直尺测量容易造成与实际存煤量的偏差,直接影响发供电煤耗的准确计算。新测量系统的投入,不但测量快速,数字准确,而且不受煤场形状约束,不论白天、阴雨天、黑夜(具备照明光源的情况下)均可进行盘煤。2.2常用测量方法2.2.1激光测距激光测距仪一般采用两种方式来测量距离:脉冲法和相位法。脉冲法测距的过程是这样的:测距仪发射出的激光经被测量物体的反射后又被测距仪接收,测距仪同时记录激光往返的时间。光速和往返时间的乘积的一半,就是测距仪和被测量物体之间的距离。脉冲法测量距离的精度是一般是在+/-1米左右。另外,此类测距仪的测量盲区一般是15米左右。激光测距仪是利用激光对目标的距离进行准确测定(又称激光测距)的仪器。激光测距仪在工作时向目标射出一束很细的激光,由光电元件接收目标反射的激光束,计时器测定激光束从发射到接收的时间,计算出从观测者到目标的距离。若激光是连续发射的,测程可达40公里左右,并可昼夜进行作业。若激光是脉冲发射的,一般绝对精度较低,但用于远距离测量,可以达到很好的相对精度。世界上第一台激光器,是由美国休斯飞机公司的科学家梅曼于1960年,首先研制成功的。美国军方很快就在此基础上开展了对军用激光装置的研究。1961年,第一台军用激光测距仪通过了美国军方论证试验,对此后激光测距仪很快就进入了实用联合体。激光测距仪重量轻、体积小、操作简单速度快而准确,其误差仅为其它光学测距仪的五分之一到数百分之一,因而被广泛用于地形测量,战场测量,坦克,飞机,舰艇和火炮对目标的测距,测量云层、飞机、导弹以及人造卫星的高度等。它是提高高坦克、飞机、舰艇和火炮精度的重要技术装备。由于激光测距仪价格不断下调,工业上也逐渐开始使用激光测距仪。国内外出现了一批新型的具有测距快、体积小、性能可靠等优点的微型测距仪,可以广泛应用于工业测控、矿山、港口等领域。2.2.2CCD摄影机CCD是于1969年由美国贝尔实验室(BellLabs)的维拉•波义耳(WillardS.Boyle)和乔治•史密斯(GeorgeE.Smith)所发明的。当时贝尔实验室正在发展影像电话和半导体气泡式内存。将这两种新技术结合起来后,波义耳和史密斯得出一种装置,他们命名为“电荷‘气泡’元件”(Charge"Bubble"Devices)。这种装置的特性就是它能沿着一片半导体的表面传递电荷,便尝试用来做为记忆装置,当时只能从暂存器用“注入”电荷的方式输入记忆。但随即发现光电效应能使此种元件表面产生电荷,而组成数位影像。到了70年代,贝尔实验室的研究员已经能用简单的线性装置捕捉影像,CCD就此诞生。有几家公司接续此一发明,着手进行进一步的研究,包括快捷半导体(FairchildSemiconductor)、美国无线电公司(RCA)和德州仪器(TexasInstruments)。其中快捷半导体的产品率先上市,于1974年发表500单元的线性装置和100x100像素的平面装置。四十年来,CCD器件及其应用技术的研究取得了惊人的进展,特别是在图像传感和非接触测量领域的发展更为迅速。随着CCD技术和理论的不断发展,CCD技术应用的广度与深度必将越来越大。CCD是使用一种高感光度的半导体材料集成,它能够根据照射在其面上的光线产生相应的电荷信号,在通过模数转换器芯片转换成“0”或“1”的数字信号,这种数字信号经过压缩和程序排列后,可由闪速存储器或硬盘卡保存即收光信号转换成计算机能识别的电子图像信号,可对被测物体进行准确的测量、分析。一般的CCD大多能感应红外线,所以衍生出红外线影像、夜视装置、零照度(或趋近零照度)摄影机/照相机等。为了减低红外线干扰,天文用CCD常以液态氮或半导体冷却,因室温下的物体会有红外线的黑体辐射效应。CCD对红外线的敏感度造成另一种效应,各种配备CCD的数码相机或录影机若没加装红外线滤镜,很容易拍到遥控器发出的红外线。降低温度可减少电容阵列上的暗电流,增进CCD在低照度的敏感度,甚至对紫外线和可见光的敏感度也随之提升(信噪比提高)。温度噪声、暗电流(darkcurrent)和宇宙辐射都会影响CCD表面的像素。天文学家利用快门的开阖,让CCD多次曝光,取其平均值以缓解干扰效应。为去除背景噪声,要先在快门关闭时取影像讯号的平均值,即为"暗框"(darkframe)。然后打开快门,取得影像后减去暗框的值,再滤除系统噪声(暗点和亮点等等),得到更清晰的细节。天文摄影所用的冷却CCD照相机必须以接环固定在成像位置,防止外来光线或震动影响;同时亦因为大多数影像平台生来笨重,要拍摄星系、星云等暗弱天体的影像,天文学家利用"自动导星"技术。大多数的自动导星系统使用额外的不同轴CCD监测任何影像的偏移,然而也有一些系统将主镜接驳在拍摄用之CCD相机上。以光学装置把主镜内部份星光加进相机内另一颗CCD导星装置,能迅速侦测追踪天体时的微小误差,并自动调整驱动马达以矫正误差而不需另外装置导星。2.2.3超声波测距由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人研制上也得到了广泛的应用。(1)超声波发生器为了研究和利用超声波,人们已经设计和制成了许多超声波发生器。总体上讲,超声波发生器可以分为两大类:一类是用电气方式产生超声波,一类是用机械方式产生超声波。电气方式包括压电型、磁致伸缩型和电动型等;机械方式有加尔统笛、液哨和气流旋笛等。它们所产生的超声波的频率、功率和声波特性各不相同,因而用途也各不相同。目前较为常用的是压电式超声波发生器。(2)压电式超声波发生器原理压电式超声波发生器实际上是利用压电晶体的谐振来工作的。超声波发生器内部结构有两个压电晶片和一个共振板。当它的两极外加脉冲信号,其频率等于压电晶片的固有振荡频率时,压电晶片将会发生共振,并带动共振板振动,便产生超声波。反之,如果两电极间未外加电压,当共振板接收到超声波时,将压迫压电晶片作振动,将机械能转换为电信号,这时它就成为超声波接收器了。(3)超声波测距原理超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2。这就是所谓的时间差测距法。超声波测距的原理是利用超声波在空气中的传播速度为已知,测量声波在发射后遇到障碍物反射回来的时间,根据发射和接收的时间差计算出发射点到障碍物的实际距离。由此可见,超声波测距原理与雷达原理是一样的。测距的公式表示为:L=C×T(2-1)式中L为测量的距离长度;C为超声波在空气中的传播速度;T为测量距离传播的时间差(T为发射到接收时间数值的一半)。超声波测距主要应用于倒车提醒、建筑工地、工业现场等的距离测量,虽然目前的测距量程上能达到百米,但测量的精度往往只能达到厘米数量级。由于超声波易于定向发射、方向性好、强度易控制、与被测量物体不需要直接接触的优点,是作为液体高度测量的理想手段。在精密的液位测量中需要达到毫米级的测量精度,但是目前国内的超声波测距专用集成电路都是只有厘米级的测量精度。通过分析超声波测距误差产生的原因,提高测量时间差到微秒级,以及用LM92温度传感器进行声波传播速度的补偿后,我们设计的高精度超声波测距仪能达到毫米级的测量精度。超声波测距误差分析根据超声波测距公式L=C×T,可知测距的误差是由超声波的传播速度误差和测量距离传播的时间误差引起的。当要求测距误差小于1mm时,假设已知超声波速度C=344m/s(20℃室温),忽略声速的传播误差。测距误差s△t<(0.001/344)≈0.000002907s即2.907μs。在超声波的传播速度是准确的前提下,测量距离的传播时间差值精度只要在达到微秒级,就能保证测距误差小于1mm的误差。使用的12MHz晶体作时钟基准的89C51单片机定时器能方便的计数到1μs的精度,因此系统采用89C51定时器能保证时间误差在1mm的测量范围内。超声波的传播速度受空气的密度所影响,空气的密度越高则超声波的传播速度就越快,而空气的密度又与温度有着密切的关系,如表1所示。已知超声波速度与温度的关系如下:式中:r—气体定压热容与定容热容的比值,对空气为1.40,R—气体普适常量,8.314kg.ol-1.K-1,M—气体分子量,空气为28.8×10-3kg.mol-1,T—绝对温度,273K+T℃。近似公式为:C=C0+0.607×T℃(2-2)式中:C0为零度时的声波速度332m/s;T为实际温度(℃)。对于超声波测距精度要求达到1mm时,就必须把超声波传播的环境温度考虑进去。例如当温度0℃时超声波速度是332m/s,30℃时是350m/s,温度变化引起的超声波速度变化为18m/s。若超声波在30℃的环境下以0℃的声速测量100m距离所引起的测量误差将达到5m,测量1m误差将达到5mm。3散堆物料体积测量系统的开发模式3.1散堆物料体积测量系统设计方案图3-1散堆物料体积测量系统外部硬件图本系统模拟把散堆物料均匀分为若干等份,然后用数据采集系统采集到每小块物料顶端的高度,然后将数据发送到AT89C52单片机中,NRF905无线射频收发模块负责数据的无线传送,由于信号不能直接传送到PC中,则再连接一个AT89C52单片机,用RS232接口连接在PC和单片机之间进行数据的传送。在这个体统中键盘负责单片机的复位、上电和启动,如3-1图所示。通过计算机模拟分析这些高度画出散堆物料的三维立体图形,进而算出散堆物料的体积。在本系统中要使用到数据采集器,数据采集器在外部数据采集中起到至关重要的作用,下面是数据采集器的简介。数据采集器(BarcodeHandTerminal)或称盘点机、掌上电脑,其具有一体性、机动性、体积小、重量轻、高性能,并适于手持等特点。它是将条码扫描装置与数据终端一体化,带有电池可离线操作的终端电脑设备。具备实时采集、自动存储、即时显示、即时反馈、自动处理、自动传输功能。为现场数据的真实性、有效性、实时性、可用性提供了保证。3.2散堆物料体积测量系统软件设计的基本思想本课题主要研究测量堆积物料体积的具体实现,包括数据采集、数据处理、可视化图像重建和最后体积计算等内容,在此基础上进行完善的应用系统设计,重点放在数据采集过程的模拟实现、数据传输、体积计算分析、可视化图像重建。系统所用的技术可以直接用于真实的计算机测量应用系统开发上面。(1)先利用四种方法采集数据,采集出每个小柱体的高度。(2)利用上述数据在MATLAB中绘制出三维图形。(3)使用MicrosoftVisualBasic.NET2005窗体应用程序制作出上述四种方法的体积测量系统。(4)使用可视化编程技术将上述四种体积测量系统制作出完整的体积测量软件,仿真图3-2所示。图3-2散堆物料体积测量系统仿真图4散堆物料体积测量系统设计4.1散堆物料体积测量系统的一般组成大型料场的体积测量是指庞大的不易测量的不规则物料堆体积的测量,近年来非接触的测量方法逐渐流行,主要有超声波、激光断面扫描法和图像法。其中超声波、激光断面扫描法是将观测对象沿一边方向分成若干个段单元,利用超声波或激光通过不同介质具有不同反射的特性,对每段单元的每个断面进行扫描,分析计算断面的扫描面积,从而求出整个观测对象体积。本课题主要研究这种测量方法测量堆积物料体积的具体实现,包括数据采集、数据处理、可视化图像重建和最后体积计算等内容,在此基础上进行完善的应用系统设计,如果条件允许则以实际的超声波传感器采集数据进行实际系统开发,否则以软件完全模拟这一过程,重点放在数据采集过程的模拟实现、数据传输、体积计算分析、可视化图像重建。4.2散堆物料体积测量系统的基本功能大型不规则散堆物料的体积的准确测量,多年来一直是一个技术难题。以火电厂为例,发电成本的70%~80%是用于燃煤费用,做好燃煤管理是电力部门经营管理的重要工作之一。长期以来国内火电厂普遍采用人工盘煤的方法测量煤场的储煤量,盘煤工作量较大,投入人力、物力较多,且测量误差较大。由于人工盘煤整形不是十分精确,水平面是倾斜的,煤堆的各面凹凸不平,采用直尺测量容易造成与实际存煤量的偏差,直接影响发供电煤耗的准确计算。新测量系统的投入,不但测量快速,数字准确,而且不受煤场形状约束,不论白天、阴雨天、黑夜(具备照明光源的情况下)均可进行测量。本系统可以完成大型料堆计算机辅助测量的解决方案,通过超声波测距数据采集过程的模拟实现,然后完成数据传输、体积计算分析、可视化图像重建。最后通过体积测量软件将散堆物料的体积计算出来。4.3散堆物料三维立体图像生成常用方法4.3.1立体摄影测量方法拟合三维曲面用立体摄影测量方法实现散堆物料测量近景摄影测量在这方面具有明显优势,可高效、快速、较准确的计算出煤山体积和储量。摄影测量通过像点坐标与物点坐标之间的关系,利用立体相对的几何关系,从摄影基线的两端作前方交会,来测量地物点的空间位置,求算立体像对中所有各地物点的空间坐标,形成一个地面立体模型。其测量方法如下。(1)准备工作在煤山周围已有的三角点和水准点的基础上,用光电测距仪布设摄影站和像控点。摄影站的布设就是在测区内选择若干条摄影基线(基干摄影点的连线)的位置,从这些基线的两端拍若干对像片,以完成对整个煤山的整体覆盖。遵循便于立体观测和保证远景最弱点精度的原则,我们选择了4.30m到在煤山周围选择了24个具有特殊形状并能在像片上清晰获得影响的地物点为像控点,在内业中发现和削弱可能存在的误差,并对煤山上所有特征散点进行控制。(2)外业摄影用普通135相机在每条摄影基线两端各拍一张,共计7对14张像片,每对像片要有一个不大于16°的夹角。(3)内业处理把像对按左右顺序重叠向内,药膜朝下,分别放在左右像对盘上,经过对中定向后,转动x、y、p、q四个手轮,对像对进行观测量测结果。为了确定像点和物点坐标之间的关系,利用立体相对的几何关系,从摄影基线两端作前方交会,来测定地面物点的以像空间辅助坐标系中的坐标表示的空间位置。利用数个物方控制点,依据基线方程式,通过空间后方交会,求解该像片的外方位元素。摄影站点和像控点坐标都是大地坐标系,而像点坐标系则是像控辅助坐标系和摄影测量坐标系,需要进行转换。设T-xtytzt为地面坐标系,G-xyz为摄影测量坐标系,它们之间的关系为:(4-1)式中,a=λsinθ;b=λcosθ;λ=a2+b2经反算即可得出地面坐标系的坐标表达式。经坐标转换计算出的地面点坐标是离散的,为了计算煤山体积和标绘煤山曲线图,还要进行网格化加密,其方法如下:以某点(x0,y0)为原点,按从左向右,从上向下的顺序,每次增加一个增量dx、dy,得到网格点的坐标(xi,yi),其相应的Z坐标可由周围点推算得出。这样就得出了某网格点的空间坐标(xi,yi,zi),并由此计算出网格点的高hi。因为每个网格的底面积为dx·dy,则每个网格柱的体积为Vi=xi·yi·hi,将所有网格柱的体积累加起来,就是整个煤山的体积,即:V=∑Vi=∑dx·dy·hi=dx·dy∑hi(4)煤山测量可靠性分析把己知点坐标看作未知,解算出这些点的坐标,并与其己知坐标比较可知点的位置误差最大为226mm,最小误差为26mm。其结果基本满足了煤山测量精度要求。利用煤山周围已有的形状规则的建筑物在拍摄煤山时一并拍上,利用拍摄照片求出其体积并与实际体积比较:其值为可能误差,通过实践表明体积为97.2m3的房子,相对误差仅为0.7%,满足煤山精度要求。另外,也可用常规测量方法检核测量精度。由于煤山形状较复杂,因测量方法的不同,其结果必须存在一定差异。但通常都可以满足煤山测量精度要求,结果是可信赖的。总之,摄影测量技术测定煤山体积具有外业时间短,劳动强度低,作业效率高,工作量小,不直接接触煤山,安全性好,所需人力、物力少,花费低,还可利用计算机技术进行批量计算自动化处理数据4.4本系统散堆物料三维曲面生成方法及算法分析当物料堆成规则体时,很容易通过数学知识对其进行运算,而对于散堆物料,由于其表面是不规则的,很难进行直接求解,我们可以将其进行分割化,分割后可将每一部分视作规则体进行体积运算,最后再把每部分体积相加得到总体积。图4-1散堆物料底面图图4-2散堆物料表面轮廓图如图,将物料底面进行分割,得到的每一小块的面积S,如果又知道了每块面积S对应的高度h,就可以计算出该物料的体积V。V=∑S*h(4-2)将脉冲超声波探头吊起在散堆物料的上方,利用探头对整个散堆物料上表面进行扫描,脉冲超声波探头向散堆物料表面垂直发射脉冲信号,同时该探头接受和处理反射回来的电磁波信号,根据发送脉冲时刻和接收到反射回波时刻的时间差t,可确定探头到反射面的距离L,从而得出煤堆表面到基准面的高度h,探头高度为H。L=vt/2(4-3)h=H-L(4-4)式中v为超声波在空气中的速度。采用的脉冲超声波探头每隔277ns发射1ns的微波,在发射间隔时间里天线系统作为接收装置使用。探头采用特殊的调整间隔时间的技术将每秒钟3600000个回波图放大、定位,然后进行分析处理。探头以每0.1s精确细致地分析处理这些被放大的回波信号。散堆物料体积的测量原理是测量机构把整个散堆物料划分为许多底面积相同的小柱体,利用脉冲超声波测距技术测出每个柱体的高度,根据上述已知条件,就可计算出这个小柱体的体积,再将所有小柱体体积累加即可得到整个散堆物料的体积。测量时,随着探头在散堆物料上空的扫描运动,笔记本计算机通过数据采集器将采集的高度数据存入硬盘中,当整个散堆物料测量完毕,计算机随后计算出散堆物料的体积。图4-3散堆物料体积测算流程图这里要采用近似处理,即将每块区域物料表面视作正方形,测出每个均匀正方形的面积S。然后根据超声波测距可测出探头到散堆物料顶端时间T,则探头到散堆物料顶端的高度:hn=(T/2)*C(4-5)注:C为超声波速度340m/s已知探头高度为H,则散堆物料高度为探头高度减去探头到散堆物料的高度即为:h=H-hn(4-6)则散堆物料分成的均匀小体积为:Vn=S*h(4-7)所以散堆物料的体积为:V=V1+V2+V3+V4+V5+……+Vn=S*(H-h1)+S*(H-h2)+S*(H-h3)+S*(H-h4)+S*(H-h5)+……+S*(H-hn)=∑S*h(4-8)4.5散堆物料体积测量系统的四种方法简介4.5.1方法一简介利用散堆物料上现有的门式堆取料机和装在上面的小车作两维扫描运动,用装在小车上脉冲超声测距传感器对散堆物料各点表面高度进行逐点测距,此系统的机械结构图如图4-4所示。图4-4方法一机械结构图将在不同高度的散堆物料表面上形成的脉冲超声测距点,散堆物料体积的测量原理是测量机构把整个散堆物料划分为许多底面积相同的小柱体,利用测距技术测出每个柱体的高度,根据上述已知条件,就可计算出这个小柱体的体积,再将所有小柱体体积累加即可得到整个散堆物料的体积。测量时,随着脉冲超声波探头在散堆物料上空的扫描运动,计算机通过数据采集器将采集的高度数据存入硬盘中,当整个散堆物料测量完毕,计算机随后计算出散堆物料的体积。它的主要技术特征为利用脉冲超声测距探测系统对散堆物料各点表面高度进行逐点测量和利用门式堆取料机及其小车的机械运动进行测距传感器的平面定位。在这个测距装置中,脉冲超声波探头放在衡梁的小车中,可以在X轴上滑动,大车可以在Y轴上滑动。测距装置测定正下方的数据,先按X方向按相等间隔采集一组数据,采集完成后沿Y方向移动一段间隔采集新的一组数据。每采集一个数据都会将数据传送到AT89C52中。这样就可以完成对整个物料的高度测量,进行数据采集后,通过无线发送装置到PC上进行数据的分析和计算的求解。图4-5方法一散堆物料体积测算硬件流程图 为了便于说明设定图4-6坐标系:图4-6坐标系沿X方向安装滑竿,距离地面高度为H,将脉冲超声测距传感器测距装置安装在滑竿上,并其大车可沿Y方向任意滑动,如图4-7所示,测距装置测量物料表面到测距装置的距离hi(i为数据采集点的标号)。图4-7大小车运动简图XOZ平面的截面图4-8如下,脉冲超声测距传感器测距装置在衡量的小车滑动下沿X方向按相等间隔采集一组数据,假设采集到8个距离数据h1—h8。图4-8XOZ截面图由截面图可知:(1)当距离hi等于高度H时,说明此时采集点的高度为0,即当前没有物料;当距离hi小于高度H时,则可得采集点的高度为H-hi,即物料高度为H-hi。(2)图中红线所示是根据采集点描绘的物料截面轮廓,当采集点越密集时,所得到的轮廓越接近实际轮廓,因此可以通过控制采集的分布密度来控制最终结果的精确度。沿Y方向安装两根滑轨,使大车在可沿Y方向能够任意滑动。(1)当完成X方向的一组数据采集后,X方向滑竿沿Y方向移动一段距离,进行下一组的数据采集,直到所有的数据采集完毕。(2)同样也可以通过,控制每组数据采集完成后沿Y放、方向的移动距离,从而控制最终运算的精度。4.5.2方法二简介利用散堆物料上现有的门式堆取料机和装在上面的小车作两维扫描运动,用装在小车上脉冲超声测距传感器对散堆物料各点表面高度进行逐点测距,此系统的机械结构图如图4-9所示。图4-9方法二机械结构图将在不同高度的散堆物料表面上形成的脉冲超声测距点,根据像点在散堆物料表面各点高度,再进行积分计算求得散堆物料体积,它的主要技术特征为利用脉冲超声测距探测系统对散堆物料各点表面高度进行逐点测量和利用门式堆取料机及其小车的机械运动进行测距传感器的平面定位。在这个测距装置中,用若干个脉冲超声波探头放在的小车中,比如散堆物料的宽度是10M,分成均匀的10等份,则在X方向的横梁上安装十个脉冲超声波探头,大车可以在Y轴上滑动。测距装置测定正下方的数据,大车沿Y方向的滑轨每移动一段间隔,便在X方向采集一组数据。每采集一行数据,就将数据存储到单片机中。这样就可以完成对整个物料的高度测量,进行数据采集后,用于对体积的求解。图4-10方法二散堆物料体积测算硬件流程图沿X方向安装若干个脉冲超声测距传感器测距装置,距离地面高度为H,并其大车可沿Y方向能够任意滑动,测距装置测量物料表面到测距装置的距离hi(i为数据采集点的标号)。当大车在Y轴上移动一均匀间距时,在X方向的若干个脉冲超声测距传感器测距装置便可以收集一组收据,如图4-11所示:图4-11外部机械运动简图XOZ平面的截面图如4-12所示:图4-12XOZ截面图由截面图可知:(1)当距离hi等于高度H时,说明此时采集点的高度为0,即当前没有物料;当距离hi小于高度H时,则可得采集点的高度为H-hi,即物料高度为H-hi。(2)图中红线所示是根据采集点描绘的物料截面轮廓,当采集点越密集时,所得到的轮廓越接近实际轮廓,因此可以通过控制采集的分布密度来控制最终结果的精确度。沿Y方向安装两根滑轨,使大车可沿Y方向任意滑动。(1)当若干个脉冲超声测距传感器测距装置完成一组数据采集后,大车沿Y方向移动一段距离,进行下一组的数据采集,直到所有的数据采集完毕。(2)同样也可以通过控制每组数据,采集完成后沿Y方向的移动距离,从而控制最终运算的精度。4.5.3方法三简介散堆物料体积的测量原理是测量机构把整个散堆物料划分为许多底面积相同的小柱体,利用脉冲超声波测距技术测出每个柱体的高度,根据上述已知条件,就可计算出这个小柱体的体积,再将所有小柱体体积累加即可得到整个散堆物料的体积。测量时,随着脉冲超声波探头在煤场上空的扫描运动,计算机通过数据采集器将采集的高度数据存入硬盘中,当整个散堆物料场测量完毕,计算机随后计算出散堆物料的体积。图4-13方法三散堆物料体积测算硬件流程图在这个测距装置中,脉冲超声波探头安装在大车横梁正中间,脉冲超声波探头可以在XOZ面旋转,探头初始位置与大车衡量垂直,通过探头选装先完成散堆物料左半边的扫描,完成后探头回到初始位置,然后进行右半边的扫描,这一行扫描完后,大车可以在Y轴上滑动。利用脉冲超声波探头在XOZ面旋转便可以将脉冲发射在散堆物料的任意点上,在X轴分为若干等间距,将脉冲发射在这些点上,便可知道探头到散堆物料的距离,利用三角函数便可计算出散堆物料各均匀小柱体的高度。在X轴上测量一组数据后,滑竿边在Y轴上滑动一均匀间距,便可采集新的一组数据。这样就可以完成对整个物料的高度测量,进行数据采集后,用于对体积的求解。图4-14方法三外部机械图 为了便于说明,XOZ的截面如图4-15所示:图4-15XOZ截面图沿Y轴方向安装大车,将脉冲超声测距传感器测距装置安装在大车衡量上探头距离地面高度为H,并且大车可沿Y方向能够任意滑动,测距装置测量物料表面到测距装置的距离Li(i为数据采集点的标号)。由截面图可知,当距离Hi等于高度H时,说明此时采集点的高度为0,即当前没有物料;当距离Hihi小于高度H时,则可得采集点的高度为H-Hi,即物料高度H-Hi。当完成X方向的一组数据采集后,大车沿Y方向移动一段距离,进行下一组的数据采集,直到所有的数据采集完毕。4.5.4方法四简介散堆物料体积的测量原理是测量机构把整个散堆物料划分为许多底面积相同的小柱体,利用脉冲超声波测距技术测出每个柱体的高度,根据已知条件,就可计算出这个小柱体的体积,再将所有小柱体体积累加即可得到整个散堆物料的体积。图4-16方法四散堆物料体积测算硬件流程图测量时,随着脉冲超声波探头在物料堆上空的扫描运动,计算机通过数据采集器将采集的高度数据存入硬盘中,当整个散堆物料场测量完毕,计算机随后计算出散堆物料的体积。在这个测距装置中,脉冲超声波要发射到某一点,事先可以根据探头高度测算出脉冲超声波探头和YOZ面的角度α,和XOZ面的角度β,通过控制角度将信号发射到指定的点上。在这个测距装置中,脉冲超声波探头安装在高杆上,脉冲超声波探头可以任意旋转。假设存放物料区域为矩形,将物料的底面分割为均匀正方形,按照精度来确定采集点的个数和位置;即精度要求越高则采集点越密集。利用脉冲超声波探头先旋转和YOZ面的角度α,再旋转和XOZ面的角度β便可以将脉冲发射在散堆物料的任意点上,利用声波反射,便可知道探头到散堆物料的距离,利用三角函数便可计算出散堆物料各均匀小柱体的高度。这样就可以完成对整个物料的高度测量,进行数据采集后,用于对体积的求解。图4-17方法四外部硬件图沿Y轴方向安装一根高竿,距离地面高度为H,将脉冲超声测距传感器测距装置安装在高竿上,测距装置测量物料表面到测距装置的距离Li(i为数据采集点的标号)。图4-18方法四小柱体高度测量图由示意图4-18可知:当距离Hi等于高度H时,说明此时采集点的高度为0,即当前没有物料;当距离Hihi小于高度H时,则可得采集点的高度为H-Hi,即物料高度H-Hi。当完成X方向的一组数据采集后,调整角度,进行下一组的数据采集,直到所有的数据采集完毕。4.5.5散堆物料体积测量系统的四种方法总结在第一种方法中脉冲超声波探头放在横梁的小车中,可以在X轴上滑动,大车可以在Y轴上滑动。测距装置测量正下方的数据,先按X方向按相等间隔采集一组数据,采集完成后沿Y方向移动一段间隔采集新的一组数据。这样就可以完成整个物料堆的高度测量,进行数据采集后,用于对体积的计算。这种方法,只使用一个探头,灵活方便,成本低,但是需要探头来回移动,效率不高。第二种方法中,用若干个脉冲超声波探头放在的小车中,比如散堆物料的宽度是10M,分成均匀的10等份,则在X方向的横梁上安装十个脉冲超声波探头,大车可以在Y轴上滑动。测距装置测量正下方的数据,大车沿Y方向的滑轨每移动一段间隔,便在X方向采集的一组数据。这样就可以完成整个物料堆的高度测量,进行数据采集后,用于对体积的计算。这种方法速度快,效率高,但是不太灵活,而且成本高。第三种方法中,脉冲超声波探头安装在大车横梁上,脉冲超声波探头可以在XOZ面旋转,大车可以在Y轴上滑动。利用脉冲超声波探头在XOZ面旋转便可以将脉冲发射在散堆物料的任意点上,在X轴分为若干等间距,将脉冲发射在这些点上,便可知道探头到散堆物料的距离,利用三角函数便可计算出散堆物料各均匀小柱体的高度。在X轴上测量一组数据后,大车在Y轴上滑动一均匀间距,便可采集新的一组数据。这样就可以完成整个物料堆的高度测量,进行数据采集后,用于对体积的计算。这种方法速度比较快,但是可能会有盲区,探头位置越高,盲区存在可能性越小。第四种方法中,脉冲超声波探头安装在高杆上,脉冲超声波探头可以在任意旋转。假设存放物料区域为矩形,将物料的底面分割为均匀正方形,按照精度来确定采集点的个数和位置;即精度要求越高则采集点越密集。利用脉冲超声波探头先旋转和YOZ面的角度α,在旋转和XOZ面的角度β便可以将脉冲发射在散堆物料的任意点上,利用声波反射,便可知道探头到散堆物料的距离,利用三角函数便可计算出散堆物料各均匀小柱体的高度。这样就可以完成整个物料堆的高度测量,进行数据采集后,用于对体积的计算。这种成本最低,但是速度比较慢,效率较低,而且会有误差,高竿越高,误差越小,而且可减少盲区存在可能性。5开发平台本课题的开发平台主要使用到MicrosoftVisualBasic.NET2005和matlab,使用MicrosoftVisualBasic.NET2005做系统窗体结构,用matlab做三维立体图形设计。5.1MATLABMATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用。Matlab一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。新版本的MATLAB可以利用MATLAB编译器和C/C++数学库和图形库,将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C++代码。允许用户编写可以和MATLAB进行交互的C或C++语言程序。另外,MATLAB网页服务程序还容许在Web应用中使用自己的MATLAB数学和图形程序。MATLAB的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。工具箱是MATLAB函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。在开发环境中,使用户更方便地控制多个文件和图形窗口;在编程方面支持了函数嵌套,有条件中断等;在图形化方面,有了更强大的图形标注和处理功能,包括对性对起连接注释等;在输入输出方面,可以直接向Excel和HDF5进行连接。在决策软件中,Matlab作为一种常用出色的图形处理软件,在本次设计中主要用于绘制散堆物料的三维曲面。只是实现该功能的方法有很多种,也就是实现VB.NET与Matlab的接口方法有多种。以下会具体介绍这方面,尤其是MATLABBuilderfor.NET。5.2VB.NETVB.NET是VisualBasic.NET的简称。提到VB.NET,就不能不先提一下VB(VisualBasic)。VisualBasic是Windows环境下的一种简单、易学的编程语言,由于其开发程序的快速、高效,深受程序员的喜爱。严格地来说,VisualBasic只是半面向对象的语言,其面向对象的能力机程序的执行效率往往不能一些程序员的需要,因此,大的项目很少使用VisualBasic来开发。VisualBasic的最后一个版本是VisualBasic6.0。在VisualBasic6.0之后,微软公司推出了全新的“.NET构架”,在其第一个版本VisualStudio.NET7.0中,集成了VisualBasic7.0、VisualC++7.0及C#,其中的VisualBasic7.0(VB7.0),即是VB.NET的第一个版本。现在.NET是最新版本是VisualStudio2005,对应的VB.NET的最新版本是集成在其中的VisualBasic9.0(VB9.0),也可称为VB.NET2005。由于VB.NET集成在VisualStudio.NET之中,你只需安装VisualStudio.NET,就可使用集成在其中的相应版本的VB.NET。建议安装最新版本-VisualStudio2005,现在的电脑配置,基本都能满足其安装要求,操作系统可以是windowsxp、windows2000或以上版本,,同时要求有IE6.0或更高版本以及WindowsInstaller3.1或更高版本。VB.NET是基于.NET框架的完全面向对象的编程语言,而VB6.0只是半面向对象的语言,使用VB.NET可以编制出功能更加强大的windows程序。现在,我们把VB.NET和VB6.0做一下比较,看看VB.NET对比VB6.0有着什么样的特性和优点。(1)在VB6.0中,创建对象的时候,需要等这个对象创建完毕后,再另外调用一个独立的方法对其进行初始化。在VB.NET中,可以利用构造函数为对象赋初值,这样就不需要进行烦琐的调用赋初值了。构造函数的使用,简化了编码的过程和出错的机会。(2)VB.NET编写线程的能力比VB6.0有很大的增强。(3)在VB6.0中,需要首先声明一个变量,然后才能对其赋值,这样就需要写两行代码。在VB.NET中,可以使用初始化函数将这两个步骤合并在一行代码中完成,这个似乎微小的改进,提供了更少、更简单、更易于维护的代码。(4)VB.NET基于.NET框架,开发者可以快速的可视化开发网络应用程序、网络服务、Windows应用程序和服务器端组件。(5)因为VB.NET是基于.NET框架的,可以与其它.NET语言协同工作。(6)在VB.NET中,通过Web窗体及ADO.NET,开发者可以快速开发可扩展的Web站点。因此,本设计的的开发平台选择VB.NET。6散堆物料体积测量系统软件设计的关键技术及其实现6.1VB.NET与Matlab的混合编程技术VB.NET是一种完全面向对象的语言,它的主要功能就是用来编写那些通过命令行和用户交互的应用程序。由于本设计中涉及到比较复杂的数学计算,用VB.NET实现会比较麻烦,而且会降低程序运行速度,因此利用VB.NET与MATLAB混合编程的方法来解决这一问题。MATLAB是MathWorks公司推出的一套数值计算软件,它起源于矩阵运算,并已发展成一种高度集中的计算机语言,目前的最新版本是7.3。它作为一种进行科学和工程计算的交互式软件包和可视化工具,具有较强的数值计算、图像处理、系统分析、界面友好、开放性强等许多特点,因此深受用户欢迎,同时,MATLAB提供了便捷的与其他程序和语言接口的功能,使得它与其它语言优势互补成为可能。下面的部分简要介绍了在VB.NET中如何使用和控制MATLAB的方法。利用ActiveX自动化技术,只需进行简单的编程,就可以在自己的VB.NET应用程序中执行MATLAB命令。ActiveX部件是微软公司提供的一种用于模块集成的新协议,由一些遵循ActiveX规范的可执行代码组成,比如一个exe、dll或ocx文件。在程序中加入ActiveX部件后,它将成为开发和运行换将的一部分,并为应用程序提供新的功能。它包括自动化控制器和自动化服务器。自动化控制器是使用和操纵自动化对象的应用程序或组件。VB.NET和Microsoft的其它语言一样,是一种典型的自动化控制器,通过它,可以生成、使用和消除自动化服务器。自动化服务器指的是由其它应用程序编程驱动的组件,MATLAB跟其它大多数软件一样,也支持ActiveX自动化技术,因此MATLAB可以作为自动化服务器。这样,如果已经建立了一个ActiveX自动化连接,在一个VB.NET应用程序中就可以调用MATLAB的命令,向MATLAB传送或从MATLAB接收数据。(1)在VB.NET应用程序中创建ActiveX对象注意在系统注册表中MATLAB的ActiveX对象名为"Matlab.Application",具体程序如下:DimMatAsObjectMat=CreateObject("Matlab.Application")创建好一个ActiveX对象后,就可以对此对象进行操作,如同在VB.NET中对其他对象的操作一样。(2)使用MATLABActiveX自动化对象的方法Matlab.Application对象主要有5种方法,介绍如下:(a)Execute(commandasstring)方法执行本方法将调用MATLAB执行一条有command字符串决定的MATLAB命令,同时返回一个字符串表示命令的执行情况。(b)GetFullMatrix方法VoidGetFullMatrix([in]BSTRName,[in]BSTRWorkspace,[in,out]SAFEARRAY(double)*pr,[in,out]SAFEARRAY(double)*pi);这个方法用来将指定的MATLAB工作空间中的一个一维或二维数组送到VB.NET程序中,Name指定了MATLAB中的矩阵变量名,Workspace指定了该矩阵所在的工作空间,pr和pi分别是数组的实部和虚部。(c)PutFullMatrix方法VoidPutFullMatrix([in]BSTRName,[in]BSTRWorkspace,[in,out]SAFEARRAY(double)*pr,[in,out]SAFEARRAY(double)*pi);这个方法用来将VB.NET程序中一个一维或二维数组送到MATLAB的一个矩阵变量中。(d)VoidMinimizeCommandWindow()方法用来使MATLAB命令行窗口最小化,具体调用如下:MATLAB.MinimizeCommandWindow()(e)VoidMaximizeCommandWindow()方法用来使MATLAB命令行窗口最大化,具体调用如下:MATLAB.MaximizeCommandWindow()6.2方法一的关键技术及其软件系统实现6.2.1方法一的体积测量图6-1方法一体积测量流程图这里要采用近似处理,即将每块区域物料底面视作正方形。测出每个均匀正方形的面积S,然后根据超声波测距可测出探头到散堆物料顶端时间T,则探头到散堆物料顶端的高度:hn=(T/2)*C(6-1)注:C为超声波速度340m/s已知探头高度为H,则散堆物料高度为探头高度减去探头到散堆物料的高度即为:h=H-hi(6-2)则散堆物料分成的均匀小体积为:Vn=S*h(6-3)所以散堆物料的体积为:V=V1+V2+V3+V4+V5+……+Vn=S*(H-h1)+S*(H-h2)+S*(H-h3)+S*(H-h4)+S*(H-h5)+……+S*(H-hi)=∑S*h(6-4)6.2.2方法一的软件系统实现图6-2方法一小柱体高度采集流程图首先先设计传感器阵列的行数PrivateSubcol_ValueChanged(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handlescol.ValueChangedcreateData()data_1.DataSource=table'MsgBox(col.Value)EndSub设计传感器阵列的列数PrivateSubrow_ValueChanged(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handlesrow.ValueChangedcreateData()data_1.DataSource=tableEndSub在指定的行,指定的列产生一个高度,高度为随机数,随机数的范围是18M到45M。random用法:random(x);//注释:x是个正整数。即可随机产生0~x之间的一切整数。而且它是一个函数,不能单独使用。如a:=random(100);就是随机产生1个0~100之间的数赋给变量a;SubcreateData()Dimi,jAsIntegerDimrndAsRandom'ReDimsend(CInt(row.Value),CInt(col.Value))table=NewDataTable("测量数据")Fori=1Tocol.ValueDimColumnAsDataColumn=NewDataColumn("第"+i.ToString+"列测点",GetType(System.Double))table.Columns.Add(Column)NextRandomize()rnd=NewSystem.Random()'定义一个随机数对象Fori=1Torow.ValueDimdrAsDataRow=table.NewRow()Forj=0Totable.Columns.Count-1dr.Item(j)=rnd.Next(1800,4500)/100Nexttable.Rows.Add(dr)NextEndSub这样就可以产生模拟堆积物的测量结果,在指定的行,指定的列中可以产生一个随机高度。图6-3高度采集模块效果图然后随机产生的高度,乘以指定的行间距和指定的列间距,就是每一个小柱体的体积。PrivateSubdataTran_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesdataTran.ClickdataTable=NewDataTable("接收数据")DimColumn1AsDataColumn=NewDataColumn("x坐标",GetType(System.Byte))DimColumn2AsDataColumn=NewDataColumn("y坐标",GetType(System.Byte))DimColumn3AsDataColumn=NewDataColumn("z坐标",GetType(System.Double))DimColumn4AsDataColumn=NewDataColumn("此处体积",GetType(System.Double))dataTable.Columns.Add(Column1)dataTable.Columns.Add(Column2)dataTable.Columns.Add(Column3)dataTable.Columns.Add(Column4)Dimi,jAsIntegerFori=0Totable.Rows.Count-1Forj=0Totable.Columns.Count-1DimdrAsDataRow=dataTable.NewRow()dr.Item(0)=CByte((j+1)*col_dis.Value)dr.Item(1)=CByte((i+1)*row_dis.Value)dr.Item(2)=CDbl(table.Rows(i).Item(j))dr.Item(3)=CDbl(table.Rows(i).Item(j)*col_dis.Value*row_dis.Value)dataTable.Rows.Add(dr)NextNextdata_2.DataSource=dataTable'Fori=0Totable.Rows.Count-1'SumZ+=data_2.DataSource'NextEndSub图6-4小柱体体积算模块效果图将每一个小柱体求和,就是一个散堆物料的体积。PrivateSubresult_Click_1(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)Handlesresult.ClickDimjAsIntegerDimsumAsDoublesum=0Forj=0TodataTable.Rows.Count-1sum+=dataTable.Rows(j).Item(3)NextTextBox1.Text=sum.ToString()EndSub图6-5散堆物料体积测算结果效果图根据上面所测得高度,使用和matlab混合编程技术可以将散堆物料的三维立体图像画出来。Submixprog1()'调用Matlab显示DimrownumAsInteger=dataTable.Rows.Count-1'制造横坐标数据MRealx=Array.CreateInstance(GetType(Double),CInt(co

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论