使用Iocomp工控图表工具绘制实时曲线

2022-09-09 10:47:24 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

概述:本文为使用Iocomp工控图表工具绘制实时曲线探索及研究教程,为大家介绍了Iocomp控件、实时曲线绘制方法、Iocomp界面操作,属性分类等。帮助学习者更好的运用Iocomp。

[摘要]数据采集是控制系统最常见的任务,对于大量的实时采集数据采用曲线加以分析已成为很重要的一种手段。文章将介绍如何用 Iocomp控件实现控制软件中的实时曲线的设计与绘制,并结合实例程序加以具体说明。实践表明,该方法简单可靠,对工业实时控制应用有一定借鉴意义。

Iocomp控件:

  • Iocomp ActiveX/VCL
  • Iocomp .NET WinForm
  • Iocomp .Net CF

0.引言

在工业控制领域,需要进行大量的数据处理和可视化显示。实时监测软件中,常常需要将采集到的数据实时显示到界面上来,以便于工作人员观测,及时发现问题和解决问题,通常还要求曲线可伸缩、可漫游、可取值,可若干条曲线的比较,以增强其可分析性。传统的控制软件开发工具多用 DOS或 Windows下的 C语言开发,导致系统开发周期长,可维护性差,并且不具有标准的 Windows图形用户界面。VB作为一种 Windows软件开发工具,既具有效率高界面友好的功能,又可以使用 DLL来实现 I/O端口的输入功能,还可以通过 API函数或 Mscomm控件实现串口通信。而本文将详细介绍一种基于 VB的 Iocomp控件实现实时曲线的绘制方法,该方法简便易行,编程也比较简单,在实际应用中得到了良好的效果。

1、Iocomp Software简介

Iocomp Software是一个让 Iocomp公司引以为豪的全新的、100%托管的、领先的、高速的、易用的、能实时绘制的控件。拥有许多在其他同类图表控件产品中所不能找到的全新特征功能及性能。Iocomp Software特征如下:

属性定制编辑器:每一个控件都带有一个将属性以逻辑形式分组的属性定制编辑器,它们使得用户能够轻松的设置控件属性。在属性窗口中可以无限的搜索,属性窗口也可以无限的层叠。

值相关联:大多数的控件都拥有一些值,它们在设置前可能是相关联的,这就提供了一个相关联的机制以及程序灵活性。

实时 -高效:该产品的工具控件是当今最高效的。具有实时显示、缩放、滚动、即使是在进行数据绘制时、不限制 X以及 Y坐标轴、不限制通道、曲线拟合、直角坐标轴、可视化的布局管理器、支持 EMF、BMP、 JPG以及 TXT格式的文件输出。

2、实时曲线绘制方法

实时曲线的绘制方法多种多样,根据对曲线的要求,我们可以采用不同的方法来绘制,从而达到最佳的曲线效果,以下列出了几种常用的绘制实时曲线的方法:

方法一:采用 TeeChart实现。TeeChart Pro是一款提供上百种 2D和 3D图形风格、40种数学和统计功能、加上无限制的轴和 22种调色板组件供选择的绘图控件。TeeChart还包括一个强大的、完整的编辑对话框,几乎可用于每个组件和子组件,允许你快速的设计复杂图表应用程序。图表编辑器通过 TeeCommander组件进一步得到增强,它提供一次点击访问图表编辑器和共同特征。

方法二:在 VB中绘制实时曲线是比较难的,一般要应用第三方控件或是 Windows API函数来完成,但是如果你对实时曲线的要求不是很高,只要能表示出当前的一般情况的话,我们可以直接应用 VB提供给我们的空间来完成。

方法三:可以采用工控组态软件来实现。组态软件具有动画显示、流程控制、数据采集、设备控制与输出、工程报表、数据与曲线等强大功能,在自动控制中占据主力军的位置,已逐渐成为工业自动化的灵魂。

方法四:采用 Iocomp控件来实现。结合 Iocomp Components图形仪表组件,易于实现 VB组态。

结合以上四种方法的总结与比较,采用 Iocomp控件来实现实时曲线的绘制是最佳的,在工业控制软件当中,它将为更多的程序员提供更广的应用领域和发展空间。

3、Iocomp控件介绍

Iocomp控件主要有三种组件:⑴iPlot ⑵iXYPlot ⑶iScope iPlot是一款即时绘图组件,支持具有连续递增的 X坐标的数据序列的绘图。其典型的用途是图表记录或滚动图表类型的应用。该组件可 用于所有的绘图应用。iPlot组件的应用使得绘图程序得到了最优化, iPlot组件还可提供高速接入和绘图方法。

iXYPlot是一个即时绘图组件,它支持具备任意 X、Y坐标值的数据。

iScope是一个真正的实时模拟和数字范围的组件。支持实时处理和显示的数据时,5MHz的信号输入率如果是连续的数据或使用更高的数据传输率采用间断数据。

iPlot组件和 iXYPlot组件的等级是相同的,除了通道的对象。其层次结构图如图 1。

图 1层次结构图常用属性简介如下表:

Channel属性,可以访问指定的通道。可以使用 AddChannel, DeleteChannel和 RemoveAllChannel方法在运行时间中添加或者移除某个通道。在设计时,可以使用内置的属性编辑器来改变通道。 Annotation属性,可以访问指定的注释。可以使用 AddAnnotation, DeleteAnnotation和 RemoveAllAnnotation方法在运行时间中添加或者移除某个注释。注释无法在设计时间中添加。 X-axis属性,您可以访问指定的 X轴线。您可以使用 AddXAxis, DeleteXAxis和 RemoveAllXAxes方法在运行时间中添加或者移除某个 X轴。在设计时间,可以使用内置的属性编辑器来改变某个 X轴。 YAxis属性,可以访问指定的 Y轴线。可以使用 AddYAxis, Delete YAxis和 RemoveAllYAxes方法在运行时间中添加或者移除某个 Y轴。在设计时间,可以使用内置的属性编辑器来改变某个 Y轴。 DataView属性通过索引号,可以访问数据视图。该功能接口支持多个数据视图,但是在当前版本中未提供该功能支持,期待在下面版本中推出。 ToolBar属性通过索引号,可以访问工具栏。该功能接口支持多个工具栏,但是在当前版本中未提供该功能支持,期待在下面版本中推出。 Legend属性通过索引号,可以访问图标符号。该功能接口支持多个图标符号,但是在当前版本中未提供该功能支持,期待在下面版本中推出。

4、编辑主界面

对界面的设置是必不可少的,它可以更直观更简捷的为我们提供绘制实时曲线的各个属性功能,我们可以直接修改程序来进行对一些属性要求的设置,也可以直接在面板的分项属性中进行设置,对各属性

不同的设置得到的结果显示也将不一样,可以根据设计员自己的要求来具体设置。下图 2是显示了本文所应用的 iPlot组建的编辑主界面。

5、具体实例

下面来看一下如何采用 Iocomp控件中的 iPlot组件来实现实时曲线的绘制,编写程序既简单又方便。 采用 Iocomp控件中的 iPlot组件绘制实时曲线,其实时测量值曲线绘制显示界面如图 3。

实时曲线反映的是现场数据的实时性和当前趋势,绘制实时采集数据曲线是为了实时观测,以便掌握实时采集数据变动的趋势,使曲线显示效果最佳,因此在实现时需显示曲线的动态变化,当前点在曲线的最右端显示,而整个曲线动态地向左移动。实时曲线在动态的移动时,测量值、峰值、谷值这三个通道同时相应的显示具体采样数值,一目了然。由于篇幅有限,程序只保留核心部分。编写程序如下:

Private Sub Form_Load()

iPlotX1.Channel(0).TitleText = " 测量值"

iPlotX1.Channel(1).TitleText = " 峰值"

iPlotX1.Channel(2).TitleText = " 谷值"

Call Comm_initial

XValue = 0

If Right(App.Path, 1) = "" Then

fpname = App.Path &"data"

Else

fpname = App.Path &"data"

End If

ComD1.InitDir = fpname

End Sub

以上程序完成对 iPlotX控件的初始化,初始化具有三个通道,名字分别为测量值、峰值、谷值,并调用 Comm_initial函数完成对串口的初始化,设定 App.Path & “data”为采集数据存放路径。

Private Sub Timer1_Timer()

Dim a

Dim i%, j%, k%, l%

Dim bjsta As String

Dim otime As Long

Dim delayt As Integer

delayt = 60

i=0 '命令重发次数计数变量

j=0

k=0

l=0

fs1:

MSComm.InBufferCount = 0

MSComm.OutBufferCount = 0 '清空输出缓冲区

MSComm.Output = "#01" & vbCr '测量值读取 otime = GetTickCount i=i 1 Do

a = DoEvents() Loop Until MSComm.InBufferCount >= 10 Or GetTickCount >= otime

delayt clclz = MSComm.Input If Left(clclz, 1) = "=" And IsNumeric(Mid(clclz, 2, 6)) Then

lbclz.Caption = Mid(clclz, 2, 6) clclz = lbclz.Caption

Else If i > 10 Then GoTo fs2 GoTo fs1

End If ……………… //省略程序数据采集峰值、谷值,其采集方法同上 fs5:

YValue = Val(lbclz.Caption) iPlotX1.Channel(0).AddYNow Yvalue YValue = Val(Lbfz.Caption) iPlotX1.Channel(1).AddYNow YValue YValue = Val(Lbgz.Caption) iPlotX1.Channel(2).AddYNow YValue YValue = yboutv2 XValue = XValue 1 MSComm.InBufferCount = 0 MSComm.OutBufferCount = 0 ……………… //数据保存部分省略

End Sub

以上程序为实时采集函数,其功能:用 MSComm实现与串口的通信, MSComm.Output = “#01” & vbCr语句为读仪表命令。每次采样发出 3条仪表读取测量值命令,1条报警开关读取命令。采样频率在有线通信和无线通信模式下最高每秒可以达到 15次,在无线通信出错较大情况下可以保证每秒正确采样 8次,通信采用的强烈的纠错方法;采样数据测量值、峰值、谷值送入 Iocomp控件实时显示,程序会在每次采样过后将数据存入本软件的 data目录下。

6.结束语

以上程序采用 Iocomp控件实现实时曲线的绘制,曲线的采样频率可以每秒达到 50次,最高可达 100次,灵敏度极高,绘制出的曲线也比较流畅,它不仅可用在工业控制的历史数据处理,而且可以广泛地适用于商业、管理及很多有大量数据需曲线显示的应用。 因此,Iocomp Components图形仪表组件对于构建逼真的人机界面、处理实时数据将非常有用,相信它们会被广泛地应用到越来越多的领域和行业当中。由于控件具有界面友好、操作简单、可扩展性强等特点,因此使用这些组件可以非常方便地扩展出风格多种多样的数据图形,整个设计过程都无需编程。

作者:陕西理工学院物理系 翟世磊 李明波 李福 刘东

文章转载自:慧都控件网 [http://www.evget.com]

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/160973.html原文链接:https://javaforall.cn

0 人点赞