多设备故障/海量数据分析曲线源码开发 基于时间轴同步控制多子曲线 浮云E绘图

基于数据曲线分析设备故障,能直观快速的找出故障点时各设备数据和状态,本文详细浮云E绘图研发的大规模设备故障/数据分析曲线控件的功能,有需要的可以联系定制开发。本曲线适用于海量数据高性能的各类数据分析领域的曲线分析场景。

大规模设备故障/数据分析曲线源码开发 适用于工控、军工、金融等领域 浮云E绘图

1.曲线X轴-时间轴

所有数据的X轴都是时间,基于时间采集或计算的数据。

时间轴刻度值支持36挡位,包含年、月、日、时、分、秒、毫秒、微妙,比如分包含30m/20m/10/5m/2m/1m。

不同挡位刻度值格式化精度不同,比如每隔是1日,月中日格式化为“d”日,整月天格式为“M-d”,其他模式刻度值都是友好的刻度值格式化。

 1         //作者:浮云绘图,专业付费定制复杂的绘图编辑器、曲线控件、报表等软件
 2         //QQ:316868127
 3         //X轴刻度
 4         else if (m_curScaleIndex == 20)    txt += "   刻度30秒";
 5         else if (m_curScaleIndex == 21)    txt += "   刻度1分钟";
 6         else if (m_curScaleIndex == 22)    txt += "   刻度2分钟";
 7         else if (m_curScaleIndex == 23)    txt += "   刻度5分钟";
 8         else if (m_curScaleIndex == 24)    txt += "   刻度10分钟";
 9         else if (m_curScaleIndex == 25)    txt += "   刻度20分钟";
10         else if (m_curScaleIndex == 26)    txt += "   刻度30分钟";
11         else if (m_curScaleIndex == 27)    txt += "   刻度1小时";
12         else if (m_curScaleIndex == 28)    txt += "   刻度2小时";
13         else if (m_curScaleIndex == 29)    txt += "   刻度5小时";
14         else if (m_curScaleIndex == 30)    txt += "   刻度6小时";
15         else if (m_curScaleIndex == 31)    txt += "   刻度12小时";
16         else if (m_curScaleIndex == 32)    txt += "   刻度1天";
17 
18 
19 
20         //刻度值的精细格式化
21         case 21:        //1分钟
22         case 22:        //2分钟
23         case 23:        //5分钟
24         case 24:        //10分钟
25         case 25:        //20分钟
26         case 26:        //30分钟
27             tm1 = curCTime.GetSecond();                //
28             tm2 = curCTime.GetMinute();                //
29             tm3 = curCTime.GetHour();                //
30             if (tm1 == 0 && tm2 == 0 && tm3 == 0)
31             {
32                 scVal = curCTime.Format("%m-%d");    //07-22
33             }
34             else if (tm1 == 0 && tm2 == 0)
35             {
36                 scVal = curCTime.Format("%H:%M");    //10:00
37             }
38             else
39             {
40                 scVal = curCTime.Format("%M");    //5-6-7
41             }
42             break;

 

2.多子曲线支持

故障数据分析,往往涉及多个设备或者一个设备的多个采集项,需要同屏同时刻展示数据状态,如此导致可能需要一次性展示数条、甚至数十条曲线。清晰、简洁、直观的解决方案就是如上图的布局。

 

3.多子曲线同步

基于相同时刻的不同设备的数据状态,是故障数据分析的重中之重,多个数据子曲线需要便捷的翻页、缩放等功能保持同步,这样可以从不同角度查看数据之间的关系,快速辅助数据分析。

 

4.多类型子曲线支持

以设备故障分析为例,某个路灯的数据有多项,比如电压V、电流A、信号(红灯/绿灯/灭灯/故障),电压和电流的数据是数值型的模拟量(如电压0~220V),而信号是指定的有限取值(1红-2绿-0灭-3故障),模拟量适合用数值描点连线,信号量适合用对应的颜色方块......还有更多其他场景下不同的曲线表现形态的需要。所以,支持多类型数据曲线,是数据分析更友好的需要。

 

5.十字线+Tip框实时测量

数据分析过程中,经常需要对特定点查看数值,这就是异或十字线+透明Tip信息框的作用,具体参考浮云E绘图其他文章。

 1 CFXPen::CFXPen(HWND hWnd, int width, int drawMode)
 2 {
 3     m_hWnd = hWnd;
 4     m_hdc = ::GetDC(hWnd);
 5 
 6     HPEN hPen = ::CreatePen(PS_DOT, width, 0x000000);
 7     m_hPenOld = ::SelectObject(m_hdc, hPen);
 8 
 9     ::SetROP2(m_hdc, drawMode);
10 }
11 
12 CFXPen::~CFXPen()
13 {
14     ::SelectObject(m_hdc, m_hPenOld);
15     ::ReleaseDC(m_hWnd, m_hdc);
16 }

 

 

6.故障参考线支持

可设置故障点位置,画线贯穿标识,方便定位分析故障点前后各设备数据变化情况。

1     CMarkCurve* markCurve = new CMarkCurve(faultTime, 2, 0x0000FF);
2     markCurve->SetDescr("故障位置:00:20:05");
3     chart->AddCurve(markCurve );

 

 

7.隐藏、折叠、翻页、缩放支持

数据分析涉及许多数据项,需要展示多条曲线,为了更有效的利用有限的可视区域,也尽量排除干扰,需要曲线可隐藏、可折叠。翻页和缩放等功能也是必备的。

 

大数据设备故障数据分析曲线的主要功能作用就介绍到这里,该曲线组件适用范围广,支持数百万数据点的快速响应。

posted @ 2023-07-09 10:26  浮云绘图  阅读(62)  评论(0)    收藏  举报