基于数据曲线分析设备故障,能直观快速的找出故障点时各设备数据和状态,本文详细浮云E绘图研发的大规模设备故障/数据分析曲线控件的功能,有需要的可以联系定制开发。本曲线适用于海量数据高性能的各类数据分析领域的曲线分析场景。
1.曲线X轴-时间轴
所有数据的X轴都是时间,基于时间采集或计算的数据。
时间轴刻度值支持36挡位,包含年、月、日、时、分、秒、毫秒、微妙,比如分包含30m/20m/10/5m/2m/1m。
不同挡位刻度值格式化精度不同,比如每隔是1日,月中日格式化为“d”日,整月天格式为“M-d”,其他模式刻度值都是友好的刻度值格式化。
//作者:浮云绘图,专业付费定制复杂的绘图编辑器、曲线控件、报表等软件
//QQ:316868127
//X轴刻度
else if (m_curScaleIndex == 20) txt += " 刻度30秒";
else if (m_curScaleIndex == 21) txt += " 刻度1分钟";
else if (m_curScaleIndex == 22) txt += " 刻度2分钟";
else if (m_curScaleIndex == 23) txt += " 刻度5分钟";
else if (m_curScaleIndex == 24) txt += " 刻度10分钟";
else if (m_curScaleIndex == 25) txt += " 刻度20分钟";
else if (m_curScaleIndex == 26) txt += " 刻度30分钟";
else if (m_curScaleIndex == 27) txt += " 刻度1小时";
else if (m_curScaleIndex == 28) txt += " 刻度2小时";
else if (m_curScaleIndex == 29) txt += " 刻度5小时";
else if (m_curScaleIndex == 30) txt += " 刻度6小时";
else if (m_curScaleIndex == 31) txt += " 刻度12小时";
else if (m_curScaleIndex == 32) txt += " 刻度1天";
//刻度值的精细格式化
case 21: //1分钟
case 22: //2分钟
case 23: //5分钟
case 24: //10分钟
case 25: //20分钟
case 26: //30分钟
tm1 = curCTime.GetSecond(); //秒
tm2 = curCTime.GetMinute(); //分
tm3 = curCTime.GetHour(); //时
if (tm1 == 0 && tm2 == 0 && tm3 == 0)
{
scVal = curCTime.Format("%m-%d"); //07-22
}
else if (tm1 == 0 && tm2 == 0)
{
scVal = curCTime.Format("%H:%M"); //10:00
}
else
{
scVal = curCTime.Format("%M"); //5-6-7
}
break;
2.多子曲线支持
故障数据分析,往往涉及多个设备或者一个设备的多个采集项,需要同屏同时刻展示数据状态,如此导致可能需要一次性展示数条、甚至数十条曲线。清晰、简洁、直观的解决方案就是如上图的布局。
3.多子曲线同步
基于相同时刻的不同设备的数据状态,是故障数据分析的重中之重,多个数据子曲线需要便捷的翻页、缩放等功能保持同步,这样可以从不同角度查看数据之间的关系,快速辅助数据分析。
4.多类型子曲线支持
以设备故障分析为例,某个路灯的数据有多项,比如电压V、电流A、信号(红灯/绿灯/灭灯/故障),电压和电流的数据是数值型的模拟量(如电压0~220V),而信号是指定的有限取值(1红-2绿-0灭-3故障),模拟量适合用数值描点连线,信号量适合用对应的颜色方块......还有更多其他场景下不同的曲线表现形态的需要。所以,支持多类型数据曲线,是数据分析更友好的需要。
5.十字线+Tip框实时测量
数据分析过程中,经常需要对特定点查看数值,这就是异或十字线+透明Tip信息框的作用,具体参考浮云E绘图其他文章。
CFXPen::CFXPen(HWND hWnd, int width, int drawMode)
{
m_hWnd = hWnd;
m_hdc = ::GetDC(hWnd);
HPEN hPen = ::CreatePen(PS_DOT, width, 0x000000);
m_hPenOld = ::SelectObject(m_hdc, hPen);
::SetROP2(m_hdc, drawMode);
}
CFXPen::~CFXPen()
{
::SelectObject(m_hdc, m_hPenOld);
::ReleaseDC(m_hWnd, m_hdc);
}
6.故障参考线支持
可设置故障点位置,画线贯穿标识,方便定位分析故障点前后各设备数据变化情况。
CMarkCurve* markCurve = new CMarkCurve(faultTime, 2, 0x0000FF);
markCurve->SetDescr("故障位置:00:20:05");
chart->AddCurve(markCurve );
7.隐藏、折叠、翻页、缩放支持
数据分析涉及许多数据项,需要展示多条曲线,为了更有效的利用有限的可视区域,也尽量排除干扰,需要曲线可隐藏、可折叠。翻页和缩放等功能也是必备的。
大数据设备故障数据分析曲线的主要功能作用就介绍到这里,该曲线组件适用范围广,支持数百万数据点的快速响应。