-
2019-10-28 15:44:12
看到一篇关于c#曲线控件介绍的很好的一篇文章,特将文章连接发到这里,以便日后学习查看
https://www.cnblogs.com/dathlin/p/8341222.html更多相关内容 -
曲线_c#实时曲线_C#曲线数据_C#曲线控件_C#曲线显示_实时
2021-09-10 22:05:15C#实时曲线显示,曲线控件,可进行数据操作 -
wpf曲线控件
2018-09-01 23:25:45自己工作中使用的非常好的wpf曲线控件,有用到这块的可以拿去直接使用。不是直接使用相关的参考也很有帮组,基本可以自己搞定。 -
组态王超级XY曲线控件例程
2019-05-25 16:09:41组态王超级XY曲线控件例程案例比较经典 -
贺兰实时曲线控件,VB6.0源码版
2021-05-12 00:43:14摘要:VB源码,控件组件,曲线控件 实时曲线控件,绘制实时曲线(类似 Windows 任务管理器CPU使用率曲线),功能很多的一个曲线控件,可自定义的功能非常多,比如可以设置每条曲线的颜色、曲线的类型(实线、虚线等)... -
C# 曲线控件 曲线绘制 实时曲线 多曲线控件 开发
2021-11-08 09:57:17本文将使用一个NuGet公开的组件来实现曲线的显示,包含了多种显示的模式和配置来满足各种不同的应用场景,方便大家进行快速的开发系统。 联系作者及加群方式(激活码在群里发放):Cooperation - HslCommunication ...Prepare
本文将使用一个NuGet公开的组件来实现曲线的显示,包含了多种显示的模式和配置来满足各种不同的应用场景,方便大家进行快速的开发系统。
联系作者及加群方式(激活码在群里发放):Cooperation - HslCommunication 官网
在Visual Studio 中的NuGet管理器中可以下载安装,也可以直接在NuGet控制台输入下面的指令安装:
1
Install-Package HslCommunication
NuGet安装教程 VS使用Nuget教程详解 Visual studio 安装第三方的组件库 - dathlin - 博客园
更强大的历史曲线控件参考:C# 历史曲线控件 基于时间的曲线控件 可交互的高级曲线控件 HslControls曲线控件使用教程 - dathlin - 博客园
Summary
曲线控件属于组件里诸多控件中的一种,为什么单独拿出来写一篇博客呢,就是因为曲线控件相对于其他控件都要复杂很多,并不是几个属性那么简单,下面列举了本曲线控件的特性:
- 提供便捷的API调用即可显示曲线信息内容,不需要复杂的配置
- 曲线界面的一些信息可以自由定制,比如坐标轴的颜色,是否显示虚线等等
- 高度的大小自适应,无论你怎么调整控件的大小,始终都能友好显示
- 支持数据拉伸填充和像素点填充两种模式,具体区别参照下面的代码
- 多曲线支持,支持同时显示多个曲线信息,每个曲线可独立的指定颜色,线宽等等。
- 支持左右两个参考系,就是说一个控件中允许显示2种数据跨度不一致的曲线,每种曲线可以显示多条不同的曲线
其他控件的说明地址:C# 时间控件 竖直进度条 饼图显示 仪表盘 按钮基础控件库 - dathlin - 博客园
组件的完整API说明:HslCommunication组件库使用说明 - dathlin - 博客园
要想使用组件的控件,除了使用NuGet来安装组件外,还需要将组件的dll文件(在你的项目的packages里面可以找到,如果你本来就是引用本地的,就直接拖拽本地的即可)拖拽到工具栏:
拖拽完成后效果如下:
先定义一个方法,获取指定范围的,指定个数的随机数数组,供下方的代码调用
1
2
3
4
5
6
7
8
9
private
float
[] GetRandomValueByCount(
int
count,
float
min,
float
max )
{
float
[] data =
new
float
[count];
for
(
int
i = 0; i < data.Length; i++)
{
data[i] = (
float
)random.NextDouble( ) * (max - min) + min;
}
return
data;
}
1.单曲线使用
把控件拖拽到窗口界面上去后,现在界面如下,你可以随意的拉伸大小,调整到一个虚线看着比较清晰的时刻停止:
我们看到左右纵轴的数据跨度都是0-100,现在我们有个需求,手里有300个0-200的数据需要显示,那么就要先设置左右纵轴的数据跨度
接下来就可以编写显示的代码了,一下数据随机:
1
2
3
4
private
void
userButton1_Click(
object
sender, EventArgs e )
{
userCurve1.SetLeftCurve(
"A"
, GetRandomValueByCount( 300, 0, 200 ), Color.DodgerBlue );
}
显示结果如下:
看吧,相当简单方便,如果你觉得目前的数据太密了,想要宽松一点,希望数据拉伸满整个X轴,没问题,因为目前默认的模式是像素点模式,所以切换为拉伸模式即可。
然后在运行看看效果:
接下来我们要对曲线“A”进行数据更新,我们假设你的data数组的数据已经更新了,有可能只更新了一个数据,有可能全部更新了,在数据更新的时候就不需要在指定颜色了,因为指定了颜色也没有用了。
1
2
3
4
5
6
7
8
private
void
userButton3_Click(
object
sender, EventArgs e )
{
// 假设你的data数组已经更新了
// 之前已经给A指定过颜色了,以后后续的数据更新不需要重新指定,指定了也无效
// 如果需要重新设置颜色,或是线宽,需要先RemoveCurve,然后重新创建曲线信息
userCurve1.SetLeftCurve(
"A"
, GetRandomValueByCount( 300, 100, 200 ) );
}
从上面的数据更新我们发现,只要更新了数据,就不停的调用数据显示,那么我们就可以显示实时数据了,而唯一的麻烦之处在于我们需要维护自己的data数组。所以当前的这种方式只适合静态数据显示
2.举个经典的例子
当我们需要显示一些统计数据的时候,比如说我要显示十二个月的销售金额,那么我们应该怎么写
我们先选择拉伸模式,然后设置拉伸模式下最大的数据量为12;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private
void
userButton9_Click(
object
sender, EventArgs e )
{
// 模拟的数据
string
[] text =
new
string
[]
{
"一月"
,
"二月"
,
"三月"
,
"四月"
,
"五月"
,
"六月"
,
"七月"
,
"八月"
,
"九月"
,
"十月"
,
"十一月"
,
"十二月"
};
userCurve1.SetCurveText( text );
userCurve1.SetLeftCurve(
"A"
, GetRandomValueByCount( 12, 0, 200 ), Color.Tomato );
// 每个月用户1的销售金额
}
效果图如下:
如果我有两条曲线需要显示,以方便对比的话:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private
void
userButton9_Click(
object
sender, EventArgs e )
{
// 模拟的数据
string
[] text =
new
string
[]
{
"一月"
,
"二月"
,
"三月"
,
"四月"
,
"五月"
,
"六月"
,
"七月"
,
"八月"
,
"九月"
,
"十月"
,
"十一月"
,
"十二月"
};
userCurve1.SetCurveText( text );
userCurve1.SetLeftCurve(
"A"
, GetRandomValueByCount( 12, 0, 200 ), Color.Tomato );
// 每个月用户1的销售金额
userCurve1.SetLeftCurve(
"B"
, GetRandomValueByCount( 12, 0, 200 ), Color.DodgerBlue );
// 每个月用户2的销售金额
}
图形效果如下:
即时3条曲线或者是更多的曲线,以此类推。重复设定数据即可,只是每条曲线的关键字需要区分开来。
控件支持移除曲线,主要包含了下面的两个方法,移除单个的曲线,或者是移除所有的曲线。
1
2
userCurve1.RemoveCurve(
"A"
);
// 移除指定的曲线
userCurve1.RemoveAllCurve( );
// 移除所有的曲线
在上面设置曲线数据的时候发现,是通过调用 SetLeftCurve 方法来设置曲线信息的,这个方法有个left单词,很明显是设置左曲线的,控件里还有设置右曲线的,SetLeftCurve 方法就是设置右曲线,那么这里的左右曲线都是指什么呢?
我们在上面的曲线控件上看到,纵轴的刻度线分左右两边,那么设置左曲线就是以左边的刻度线为标准绘制的曲线,而设置右曲线则以右刻度线为标准,在上图中,左右刻度的信息是一致的,所以无所谓左曲线还是右曲线,但是如果我们设置不一致后,那么我们就可以实现显示2种不同范围的数据信息,例如我们右曲线设置为0-10,再随便显示2条曲线
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
private
void
userButton9_Click(
object
sender, EventArgs e )
{
// 模拟的数据
string
[] text =
new
string
[]
{
"一月"
,
"二月"
,
"三月"
,
"四月"
,
"五月"
,
"六月"
,
"七月"
,
"八月"
,
"九月"
,
"十月"
,
"十一月"
,
"十二月"
};
userCurve1.SetCurveText( text );
userCurve1.SetLeftCurve(
"A"
, GetRandomValueByCount( 12, 0, 200 ), Color.Tomato );
// 每个月用户1的销售金额
userCurve1.SetLeftCurve(
"B"
, GetRandomValueByCount( 12, 0, 200 ), Color.DodgerBlue );
// 每个月用户2的销售金额
userCurve1.SetRightCurve(
"C"
, GetRandomValueByCount( 12, 3, 6 ), Color.LimeGreen );
userCurve1.SetRightCurve(
"D"
, GetRandomValueByCount( 12, 3, 6 ), Color.Orchid );
}
效果图如下:
高级使用举例,动态坐标轴,
根据上面的情况,我们看到如果我们获取到的一组数据,范围不确定的,需要来动态调整的,比如我们有一个12个数据的float数组,我们设置左坐标轴为数据的上下限
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
private
void
userButton10_Click(
object
sender, EventArgs e )
{
// 模拟的数据
string
[] text =
new
string
[]
{
"一月"
,
"二月"
,
"三月"
,
"四月"
,
"五月"
,
"六月"
,
"七月"
,
"八月"
,
"九月"
,
"十月"
,
"十一月"
,
"十二月"
};
float
[] data = GetRandomValueByCount( 12, 40, 150 );
userCurve1.ValueMaxLeft = (
float
)Math.Ceiling( data.Max( ) );
// 向上取整
userCurve1.ValueMinLeft = (
float
)Math.Floor( data.Min( ) );
// 向下取整
userCurve1.SetCurveText( text );
userCurve1.SetLeftCurve(
"A"
, data, Color.Tomato );
// 每个月用户1的销售金额
}
效果图如下:
可以看到,不停的刷新数据后,左坐标轴的数据一直在更新中。
总结下:如果每次都是强行更新所有的数据,也能达到实时刷新的效果,但是如果是一个数据一个数据的采集显示,将按照下面的实时数据模式使用更加合理
3.实时数据显示使用
当我们需要显示一些实时数据时,也就是说,每隔1秒(随便举个栗子)就有新的数据采集上来,然后追加到曲线中去,曲线进行挪动,通常就是这种情况。
3.1 像素点模式(请确认 IsAbscissaStrech 为False):
我们先讲解默认的模式,所谓像素点模式是指在横轴上,一个像素点显示一个数据,如果你的横轴像素长度为1000,那么你就可以显示1000个数据了,当然在实时显示的情况下,不需要你管那么多,你只需要负责定期往里面塞数据即可。
第一步先进行初始化:先增加指定名字的曲线信息,曲线颜色,曲线宽度等等
1
2
3
4
5
private
void
userButton4_Click(
object
sender, EventArgs e )
{
// 这里传入了数组长度为空的数据,不能传NULL
userCurve1.SetLeftCurve(
"B"
,
new
float
[] { }, Color.Tomato );
}
我们再写一个按钮,启动定时器,去新增数据,来模拟我们从其他设备读取到的数据信息:
1
2
3
4
5
6
7
8
9
10
private
void
userButton5_Click(
object
sender, EventArgs e )
{
Timer timer =
new
Timer( );
timer.Interval = 100;
timer.Tick += ( sender1, e1 ) =>
{
userCurve1.AddCurveData(
"B"
, random.Next( 50, 201 ) );
};
timer.Start( );
}
如上面的两个按钮信息,必须先点击按钮4进行曲线初始化,按钮5的点击才有效果。最终你会看到曲线每隔100ms刷新一次,不停的有新的数据递增。
当曲线数量超过当前可显示的点数时,曲线会自动的往左挪动,即时你拉伸的整个控件,它依然可以正常的工作,可显示的数据点数会自动更新,内存中会缓存2048个数据点来支持拉伸的效果转换。
当然,它也支持一次更新多个数据,虽然这种情况很少,只是需要注意的是,一次更新的数据必须少于2048。
1
userCurve1.AddCurveData(
"B"
,
new
float
[] { random.Next( 50, 201 ), random.Next( 50, 201 ), random.Next( 50, 201 ) } );
2.2 拉伸模式(请确认 IsAbscissaStrech 为True):
拉伸模式的意思是无论你的data数组有多少个点,都强行按照最大数据点拉伸完整个横轴界面
先设置 StrechDataCountMax 属性为 300 ,意思是强行显示300个点,最大300个点,仅仅在拉伸模式下有效果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private
void
userButton4_Click(
object
sender, EventArgs e )
{
// 这里传入了数组长度为空的数据,不能传NULL
userCurve1.SetLeftCurve(
"B"
,
new
float
[] { }, Color.Tomato);
// 指定上限500个数据,该上限只对拉伸模式有效
}
private
void
userButton5_Click(
object
sender, EventArgs e )
{
Timer timer =
new
Timer( );
timer.Interval = 100;
timer.Tick += ( sender1, e1 ) =>
{
userCurve1.AddCurveData(
"B"
, random.Next( 50, 201 ) );
};
timer.Start( );
}
我们再看拉伸模式的曲线:
你再拉伸控件试试看?拉伸模式的意思是无论你的控件多少大小,你规定了300个点,它就是300个点,即使你的控件拉伸了,它还是300个点,只是没有那么密罢了
至于一次增加多个数据是和上面的像素点模式是一致的。
2.3 模式区别及选择
像素点模式下,随便看着数据比较密,但是好处在于分辨率高的显示器,可以显示的数据更多。
拉伸模式虽然在控件拉伸的情况下显示的数据量不会增长,但是可以控制疏密程度。
各有优劣,建议先使用像素点模式,看看效果怎么样,一般数据变化都是慢慢来的,所以曲线不会像测试数据那样乱串。如果数据乱串比较厉害,再使用拉伸模式。
3.多曲线,双坐标使用
多曲线和单曲线模式很相似,无非是多几条曲线而已,每条曲线的操作,新增数据都是一模一样的,只是多曲线的模式都是统一的,要么全部是像素点模式,要么全部是拉伸模式,所有的特性和上两节是相似的。
为了说明使用,举个例子,你有多个设备(2个及以上),每个设备都有一个温度信息,现在要进行实时数据的直接对比,当然最好将三条曲线放到一起显示。
我们命名三个曲线为“A”,“B”,“C” 然后假设所有的数据都是100-200之间,数据A是160-180随机,数据B是150-170随机,数据C是155-165随机
此处测试方便,使用了 像素点模式。在 拉伸模式 下代码也是一致的
我们接下来看一种相当复杂的使用场景,假设我们有一台设备,需要监控4条曲线,2条温度,2条压力,温度的范围是0-200,压力的范围为0-5 mpa,那么想要在一个控件里显示,也是可以实现的。先调整左右的坐标范围。
此处仍然使用像素点模式,我们接下来写初始化代码和新增数据的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private
void
userButton4_Click(
object
sender, EventArgs e )
{
userCurve1.SetLeftCurve(
"A"
,
new
float
[] { }, Color.Tomato );
// 温度1
userCurve1.SetLeftCurve(
"B"
,
new
float
[] { }, Color.DodgerBlue );
// 温度2
userCurve1.SetRightCurve(
"C"
,
new
float
[] { }, Color.LimeGreen );
// 压力1
userCurve1.SetRightCurve(
"D"
,
new
float
[] { }, Color.Purple );
// 压力2
}
private
void
userButton5_Click(
object
sender, EventArgs e )
{
Timer timer =
new
Timer( );
timer.Interval = 100;
timer.Tick += ( sender1, e1 ) =>
{
userCurve1.AddCurveData(
new
string
[] {
"A"
,
"B"
,
"C"
,
"D"
},
new
float
[] { random.Next( 160, 181 ), random.Next( 150, 171 ), (
float
)random.NextDouble( ) * 2.5f + 1, (
float
)random.NextDouble( ) * 1f } );
};
timer.Start( );
}
效果如下图:
4.横坐标文本格式调整
上述的实时曲线在显示的时候,我们看到横坐标的文本是小时加分钟的模式,如果我们改成只显示分钟和秒钟怎么办
这个属性就是DateTime的格式化字符串,理论上你可以获取到任务时间相关的文本信息,按照当前的需求,调整成 mm:ss 即可
5.辅助线添加
我想在实时数据显示中设置一条曲线数据的报警上限的辅助线,用来提醒以及更加至关的查看信息,是否异常,可以调用控件的方法来完成
新增的辅助线是左右两个参考坐标系区分出来了,比如我新增左辅助线,192的一条线,颜色为红色
1
userCurve1.AddLeftAuxiliary( 192, Color.Red);
移除的代码为
1
userCurve1.RemoveAuxiliary( 192 );
辅助线效果如下:
如果你新增的辅助线和原有的虚线重叠时,原有的虚线会自动屏蔽掉。
6.背景颜色调整
我修改下背景为暗黑色,瞬间就有黑科技的效果了。当然,线条的颜色可以调整的更加好一点
4.结束语
感谢阅读。
-
WPF C# 曲线控件
2014-05-19 21:07:53WPF C# 曲线控件 支持放大缩小等功能 -
WPF 自定义用户曲线控件
2018-08-20 16:23:09WPF 自定义用户曲线控件 可以添加入工程或者调用DLL使用,有一定的参考价格,性能不高 -
组态历史趋势曲线控件例程
2019-06-06 10:42:04历史趋势曲线控件例程 是入门的简单例子适合新手看看的 -
GDI+ 自定义曲线控件
2018-06-22 12:13:32C#语言写的,基于PictureBox控件的自定义曲线显示控件 -
VC 曲线控件 源码 曲线图表
2017-12-14 08:53:01VC 绘制实时曲线 可以根据邦定的控件大小曲线图表跟着缩放,根据给定的顔色值,及曲线的条数画出。 -
ZedGraph曲线控件
2021-04-29 10:36:07C#语言编写的ZedGraph曲线控件。 -
实时曲线控件
2016-02-21 06:29:13这份文档示例了在Android平台下,如何实时采集数据并实时更新曲线,包含了项目完整源码和程序要点分析。 -
XY曲线控件
2019-04-18 08:10:56vb.net 2017 做的一个XY曲线控件 需要的人可以拿去参考一下 -
WinceChart曲线控件显示Demo
2015-05-18 15:03:50wince 系统chart曲线显示控件Demo 并有多种曲线显示类型 -
CSharp波形显示控件源码_C#波形曲线_c#曲线控件_c#多数据显示_CSharp波形显示控件源码_
2021-10-01 02:28:07波形显示控件,实现了同时显示多条数据曲线、局部放大查看、波形显示自动调整最佳坐标范围、动态显示波形等功能 -
组态王历史趋势曲线控件.doc
2020-12-22 13:27:32组态王历史趋势曲线控件组态王历史趋势曲线控件使用配置参考文档北京亚控科技发展有限公司技术部目录一、功能概述3一、功能概述3二、工程实例3三、操作步骤:31、历史趋势曲线控件的特点:32、创建新的工程:42.1) ...组态王历史趋势曲线控件
组态王历史趋势曲线控件使用
配置参考文档
北京亚控科技发展有限公司
技术部
目录
一、功能概述3
一、功能概述3
二、工程实例3
三、操作步骤:3
1、历史趋势曲线控件的特点:3
2、创建新的工程:4
2.1) 定义设备:4
2.2) 定义变量:4
2.3) 创建趋势曲线:5
2.4) 添加曲线变量:5
3、切换到运行系统:7
4、控件的属性、方法:8
2.1) 控件的属性与方法:8
2.2) 属性方法的使用举例:14
四、注意事项19
图表
图一 定义变量压力4
图二 定义变量流量5
图三 记录和安全区属性6
图四 历史趋势曲线6
图五 历史趋势曲线7
图六 运行系统8
图七 画面属性15
图八 画面命令语言编辑框16
图九 控件属性16
图十 画面命令语言17
图十一 运行画面17
图十一 控件方法的使用18
图十二 运行画面19
一、功能概述
常规需求:很多工业现场都会要求显示采集量的趋势曲线,包括实时曲线、历史曲线。
组态王中的趋势曲线的实现方法:
利用组态王的“工具箱”中的“实时曲线”、“历史曲线”实现。
利用组态王的“插入通用控件”中的“历史趋势曲线”实现。
第一种实现方法的优点在于可以进行WEB的发布,实现通过IE浏览器进行浏览。缺点为支持的曲线笔比较少,许多功能的实现需要通过组态王的函数来实现,使用相对要麻烦。
第二种实现方法的优点在于支持同时绘制16条曲线,功能比较完善,可以在系统运行时动态增加、删除、隐藏曲线,还可以修改曲线属性,实现无级缩放,曲线打印等等。许多功能都不需要通过编写脚本的方法实现,使用比较方便。缺点在于无法进行WEB的发布。
二、工程实例
以一个简单的例程来说明“历史趋势曲线控件”的使用。
三、操作步骤:
1、历史趋势曲线控件的特点:
KVHTrend曲线控件是组态王以Active X控件形式提供的绘制历史曲线和ODBC数据库曲线的功能性工具。该曲线具有以下特点:
即可以连接组态王的历史库,也可以通过ODBC数据源连接到其它数据库上,如Access、SQLServer等。
连接组态王历史库时,可以定义查询数据的时间间隔,如同在组态王中使用报表查询历史数据时使用查询间隔一样。
完全兼容了组态王原有历史曲线的功能。最多可同时绘制16条曲线。
可以在系统运行时动态增加、删除、隐藏曲线。还可以修改曲线属性。
曲线图表实现无级缩放。
可实现某条曲线在某个时间段上的曲线比较。
数值轴可以使用工程百分比标识,也可用曲线实际范围标识,二者之间自由切换。
可直接打印图表曲线。
可以自由选择曲线列表框中的显示内容。
可以选择移动游标时是否显示曲线数值。
可以在曲线中显示报警区域的背景色
2、创建新的工程:
2.1) 定义设备:
新建一个工程,在设备处新建设备,我们在本例中定义一个仿真PLC的设备,设备列表为“PLC-亚控-仿真PLC-串口” ,设备名称为“PLC1”。此仿真PLC可以做为虚拟设备与组态王进行通讯。自动加1寄存器INCREA自动减1寄存器DECREA随机寄存器RADOM常量寄存器 STATIC常量字符串寄存器STRINGCommErr寄存器INCREA100,DECREA100,数据类型为short,读写属性为“只读”。这样压力变量就会从0开始自动加1,其变化范围是0到100从100开始自动减1,其变化范围是0到100
2.4) 添加曲线变量:
选中曲线控件点击右键,弹出菜单,选择“控件属性”,弹出历史趋势曲线控件的属性对话框,在“曲线”选项卡,点击“增加”按钮,选择变量“压力”,选择“线类型”、“线颜色”,点击“确定”完成压力曲线的添加。再点击“增加”按钮,选择变量“流量”,选择“线类型”、
图三 记录和安全区属性
图四 历史趋势曲线
“线颜色”,点击“确定”完成流量曲线的添加。
在趋势曲线控件属性的“坐标系”选项卡中对坐标系进行设置,我们设置Y轴的起始值为0,最大值为100,不按照百分比绘制,而是按照实际值显示。设置时间轴的显示格式为显示年、月、日、时、分、秒。
添加完成后开发画面如图五所示:
图五 历史趋势曲线
3、切换到运行系统:
保存画面后,在工程浏览器的“系统配置”-“设置运行系统”中进行“主画面配置”,将“历史曲线”画面设置为主画面。
然后切换到运行系统。运行如下图六所示:
趋势曲线控件自带的工具栏中提供了很多方便实用的控制按钮功能供用户来使用,主要包括:调整跨度设置按钮,设置Y轴标
-
串口屏MODBUS教程_曲线控件和历史曲线控件的使用教程.pdf
2019-07-25 14:40:08串口屏MODBUS教程_曲线控件和历史曲线控件的使用教程.pdf -
一款.net第三方曲线控件
2017-01-18 16:42:40一款曲线控件 -
基于VC6.0曲线控件的代码实现
2015-08-26 23:44:35本工程基于VC++6.0 MFC 通过继承CButton类----> CChartView控件类,可以实现实时曲线的动态显示,同时可以向前或向后查询曲线数据Buffer中已经存入的曲线。。。。我已经实现了纵坐标的显示,横坐标(时间轴)可能... -
CEGraphControl_visualbasic_DEMO_实时曲线控件_
2021-10-01 05:15:21一个实时曲线控件的DEMO测试,使用这个控件,可以生成适时曲线 、历史曲线 、动态历史曲线。 -
组态王,历史趋势曲线控件例程说明文档
2020-12-22 13:27:302)利用组态王的“插入通用控件”中的“历史趋势曲线”实现。第一种实现方法的优点在于可以进行WEB的发布,实现通过IE浏览器进行浏览。缺点为支持的曲线笔比较少,许多功能的实现需要通过组态王的函数来实现,使用...历史趋势曲线
1
,功能概述
常规需求:
很多工业现场都会要求显示采集量的趋势曲线
,
包括实时曲线、
历史曲线。
组态王中的趋势曲线的实现方法:
1
)利用组态王的“工具箱”中的“实时曲线”、“历史曲线”实现。
2
)利用组态王的“插入通用控件”中的“历史趋势曲线”实现。
第一种实现方法的优点在于可以进行
WEB
的发布,实现通过
IE
浏览器进行浏览。
缺点为支持的曲线笔比较少,许多功能的实现需要通过组态王的函数来实现,使用相对
要麻烦。
第二种实现方法的优点在于支持同时绘制
16
条曲线,功能比较完善,可以在系统
运行时动态增加、删除、隐藏曲线,还可以修改曲线属性,实现无级缩放,曲线打印等
等。
许多功能都不需要通过编写脚本的方法实现,
使用比较方便。
缺点在于无法进
WEB
的发布。
工程实例
以一个简单的例程来说明“历史趋势曲线控件”的使用。
操作步骤
1.1
创建新工程
打开组态王工程管理器,创建一个新工程。
1.2
定义设备
进入工程浏览器,在设备处新建设备,我们在本例中定义一个仿真
PLC
的设备,
设备列表为“
PLC
-亚控-仿真
PLC
-串口”
,设备名称为“
PLC1
”。此仿真
PLC
可
以做为虚拟设备与组态王进行通讯。仿真
PLC
主要有如下的寄存器:自动加
1
寄存器
INCREA
,自动减
1
寄存器
DECREA
,随机寄存器
RADOM
,常量寄存器
STATIC
,常
量字符串寄存器
STRING
,
CommErr
寄存器。具体的寄存器的使用请参考组态王
IO
驱
动帮助。
1.3
定义变量
在数据词典中新建两个
IO
变量,变量名称分别为“压力”、“流量”,变量类型
为
IO
实数,
连接的设备为前面定义的仿真
PLC
设备
“
PLC1
”
,
寄存器分别为
INCREA100
,
-
曲线控件 波形控件 多通道 曲线显示控件 波形显示控件
2010-08-31 20:30:48曲线控件 波形控件 曲线显示控件 波形显示控件 实时显示 有暂停功能 多通道 COM组件 -
串口屏开发之曲线控件的使用总结——如何将实时采集的数据连成曲线显示在屏幕上
2021-06-09 13:38:28上一博文中讲解了使用历史曲线控件显示如温度、压力类的缓变信号曲线,那么对于频率稍高的如电网电压正弦信号、锯齿波等,使用曲线控件比较合适,二者相差一个字,其实使用起来基本也相差不大。 1 曲线控件属性 ... -
DundasChartv20.part01_dundaschart_曲线控件_
2021-10-01 11:38:29Dundas系列控件,非常经典的曲线控件 -
一款vb.net柱状图/三维图表及数据曲线控件源码
2013-05-16 00:59:50完全开源的一个控制源代码,完成根据数据生成柱状图、三维图表、适时曲线的功能,上边是演示图,看上去还不错,控件源码在VS20... -
ApisoftActiveX曲线控件
2013-09-25 20:58:03VB曲线控件,曲线绘制平滑,无闪烁,CPU占用率极小, 数据 精度高可设定标准值和偏差范围