将lines中的指标画趋势图, 拥有指标分页显示, 遍历测点, 设备, 支持波形查看, 波形打标签. 可选择2种显示方式, 趋势图 vs 散点图矩阵

  1. Usage:
  2. TrendViewer(lines) %绘制多趋势
  3. TrendViewer(matrix) %将matrix转换成lines, 再显示. matrix is mxn double
  4. TrendViewer(lines, caseagg=caseagg) %(待实现)绘制多趋势, 并加入标签
  5. 输入:
  6. lines : 单台或多台设备的指标数据集 (class type: lnfun.Line)
  7. 输出:
  8. obj: 包含图窗信息的类实例

截图:

TrendViewer - 图1

主函数TrendViewer GUI使用说明:

TrendViewer - 图2

鼠标shift+左击: 显示波形分析工具

鼠标左击: 高亮波形

K: 发送高亮波形打标签

P: 上一页波形快照

N: 下一页波形快照

D: 删除框选数据

PagnDn: 下一台设备的数据

PagnUp: 上一台设备的数据

End: 下一页指标

Home: 上一页指标

Z: 切换缩略图尺寸

S: 切换缩略图类型

案例筛选功能

TrendViewer(L,'caseagg',caseagg)

输入参数包含caseagg时, 可以开启案例筛选功能.

TrendViewer - 图3

TrendViewer - 图4

案例筛选器,可以对字段排序. 点击某一行, 会跳转到相应案例的指标显示.

通过预先修改caseagg.caseinfos的内容, 可以选择要展示哪些字段, 添加哪些展示信息.

自定义报警内容显示

TrendViewer(L,caseagg,@custom_trend_plot_function);

其中custom_trend_plot_function是用户自定义的画图函数, 输入参数为lnfun.Line

%此为一个plot_function的例子
function alm_plot_fcn(oneline)
d=oneline.va.measvalue;
d(d<0)=nan;
tn=oneline.va.measdate;
sb_almlevel=oneline.va.isSbAlarm; 
%在调用TrendView(lines,caseagg,@custom_trend_plot_function)前要在line.va中添加画图需要的字段值.
isfealarm=oneline.va.isfealarm;

thd=oneline.va.fethd;
y_max=max([d;thd]);

plot(tn,d,'b.-');
hold on;

plot(tn(~isnat(tn) &  thd>0 & thd<20000),thd(~isnat(tn) & thd>0 & thd<20000),'r.-');
plot(tn(sb_almlevel==1),0.85*y_max*ones(sum(sb_almlevel==1),1),'go');
plot(tn(sb_almlevel==2),0.9*y_max*ones(sum(sb_almlevel==2),1),'mo');
plot(tn(sb_almlevel==3),0.95*y_max*ones(sum(sb_almlevel==3),1),'ko');
plot(tn(sb_almlevel==4),y_max*ones(sum(sb_almlevel==4),1),'ro');

plot(tn(isfealarm>0),0.75*y_max*ones(sum(isfealarm>0),1),'gs')
end

在调用TrendView(lines,caseagg,@custom_trend_plot_function)前要在line.va中添加画图需要的字段值.

趋势图展示:

TrendViewer - 图5

设备结构信息展示, 多测点同步GUI

TrendViewer - 图6

TrendViewer - 图7

TrendViewer - 图8

更新说明:

2021-0-01

批量选数据点, 显示缩略图的功能, 移到了右键菜单里.

TrendViewer - 图9

工具栏增加了单波形打标签功能

TrendViewer - 图10

首次打开标签工具后, 按shift+左键选择波形后, 波形信息会自动同步到 fe_play_guid_LabelView 标签工具中, 供打标签

增加了自定义的shift click callback

按住shift键+点击鼠标左键, 默认的callback是调用WaveView(wv). 可以通过给shiftclick_callback参数赋值自定义的函数句柄, 调用自己的指标计算和展示函数.
例如

TrendViewer(lines,shiftclick_callback=@(wv) detect_gearmesh(wv,0));

callback函数的定义

function [rst]=detect_gearmesh(wv,doplot)

wv.read_input_signals({'wave','adrpm'});

d = wv.wave.data.d;
t = wv.wave.data.t;
f = wv.wave.data.f;
Y = wv.wave.data.Y;
fs = wv.wave.data.fs;
ad = wv.adrpm.ad;
rpm = wv.adrpm.rpm;

以下略...


callback函数的其中一个输入必须是wv [class=sigfun.WaveData]. 如果有其他输入参数, 则需要自定义一个匿名函数传入

TrendViewer(lines,shiftclick_callback=@(wv) detect_gearmesh(wv,0));

如果没有其他输入参数

TrendViewer(lines,shiftclick_callback=@detect_gearmesh);

新增指标筛选框

image.png

fename=rms,feid=[1,2,3],pid=1