Htyl-pipline-web
2022-05-06 17:09:31 11 举报
Htyl-pipline-web
作者其他创作
大纲/内容
ResponseData
+ manualData:List<Float[]> + mechanicalData:List<Float[]> + manualDataIntensity:List<Float[]>+ mechanicalDataIntensity:List<Float[]>
pojo
redis or cache
RejectParamHandler
ResponseData3D
+ timeStamp:String+ manualList:List<Float[]> + mechanicalList:List<Float[]>
chain调用
IOC
下位机2
是否超过强度阈值?报警 + 处理dataCache
ChartController图表数据相关
RejectHandler
Signal 2
ParamsResolver
一般不做修改
accumulateNumberDetails
Mysql
AccumulateAlarmHandler
SignalHandlerChain
Signal 1
signal
一二三四级? 根据触发次数判定? 累积值强度判定?
强度累积,次数累积,信号时间间隔修改
1。init(): 读设备及参数
是否符合20/60策略?报警
WaterfallController 瀑布图相关
影响段是否超过20并且累计强度达到60
2.1.所有Signal在clients ->client->DataCache中
PostTopologySignalHandler
+ handlespan style=\"font-size: inherit;\
ThresholdSignalHandler
AddAlarmHandler
AlarmHandler接口
Device设备对象
t_device
1.3. ParamHandler.handle(json) set到device中
1.4 Device中应该有多种参数的简单易使用的数据结构,所以ParmaHandler.handle返回也是device
ThresholdHandler
<>SignalReader
+ loadSignal(String): Signal- verifySignal(String):boolean
3.信号点上,置为0
MaskSignalHandler
特定段门限,实时强度值是否有需要限制的
四个接口的关系,前三者一一对应,最后一个单独存在
TimeAndNumberAlarmHandler
2.4. handlerChain处理,在容器中,走SignalHandler接口的系列实现
读入
这里有点问题,应该不组装到signal中,所以应该出现在loadSignal相关方法中,或者,去掉loadSignal方法逻辑,将其作为SignalhandlerChain中一部分
计入累积之后的责任链,继承AlarmHandler
一个站点一条链,或者是有一个主链,站点可以选择是否走主链
所以,怎么判定报警的强度?
1.0. 下位机启动
原始数据
device1
policy1
4.时间间隔,全段先+1
PostTopoSensitivityHandler
ListenClient.accumualt(Signal)
完成拓扑映射
MaskHandler
1.2. device.convertAndSetParam 根据param对象中的handler类名 反射创建ParamHandle的实现类
1.1.读入设备信息,根据设备读入params信息:json格式
SingleSignal单一信号,指每秒中多个信号点中的一个
+ time:int 信号点所属时间+ position:short 信号点位置+ intensity:float 信号点强度
signalInterval
t_param:param_json
累积值超过阈值,弹出报警,随着信号累积,后续不弹报警
接口及抽象类
3.与accumulateNumberDetails同步,但不需要做空白更新
类
2.3. string解析封装为Signal(最原始的)
FileController 标点文件模块
请求实时数据
前端页面
读取tb_strategyParams,读入json
PreTopologySignalHandler
RealTimeController 实时模块
AddAlarmHandler.doUpdate()
次数累积是否报警?报警 + 处理dataCache
DivideHandler
下位机1
step2:累积
app
2.整体<<1 ,并按param中位数截断
1.不做预处理
RejectSignalHandler
<>ParamHandler参数处理器2
2 .init(): 根据读入设备,开启多thread,监听server
2.6.ListenClient.accumulateAndAlarm(handledSignal)做信号累积,走AlarmHandlerChain
2.5.dataCache.put(handledSignal)
MaskParamHandler
1.信号点上,累加强度
handler2.handle(signal,policy )
Signal 每秒的数据封装到这里
2.7. 不同handler中达到报警条件 随时跳出chain,向client中存储alarm
<>Other SignalHandler
添加报警记录
AlarmHandlerChain
变换前 灵敏度调整,最常使用这个
多种数据返回
0. 程序启动,refresh事件完成通知,执行init方法
MapController 地图模块
accumulateIntensity
<>ParamHandler参数处理器1
accumulateNumber
<>Other AlarmHandler
+ handle(Signal): Device
重置datacache
Param接口
ParamHandler接口
下位机server
标点模块使用,存视频,图片等
ApplicationContext
AccumulationIntensity
详见SignalhandlerChain逻辑
PreTopoSensitivityHandler
2.信号点上,+1
AlarmHandler接口2
device2
policy2
ListenClient实时监听线程,每个站对应一个线程,
+ clientName,ip,port+ dataCache: DataCache
+ listen(SignalHandlerChain):void // applicationContext事件监听开启监听server
这里应该有两个逻辑,1.累积值达到阈值要报警2.已经报警后,再次到达阈值要判定是否重复
ListenClients 应用启动后,通过监听容器refresh完成事件,来启动其init方法
+ init():void clientMap中每个client起一个线程,调用client的listen方法
MaskParam
HistoryController 历史模块
ListenClientRealTime
RejectParam
全体SignalHandler组成了数据处理逻辑
2.2. loadSignal(String)
详见AlarmhandlerChain逻辑
InclineTimeAndRateAlarmHandler
回传signalString
socket请求
强度累积是否报警?报警 + 处理dataCache
计入累积之前的signal称为Handler
TopologyHandler
4.遍历所有信号点过后,重新计算accumulateNumberDetails表示的信号个数
至此 得到signal信号
DataCache 某设备在应用中的缓存数据
+ dataTimestamp:int 上次信号时间戳- dataCacheList<Signal> 此信号的数据量+ totalIntensityMap 强度累积map+ totalNumberMap 信号次数累积+ signalIntervalMap 距上次信号出现时间
+ put(Signal):void 向dataCacheList添加数据
SignalHandler接口
AlarmHandler接口1
剔除要过滤的数据点SingleSignal
step1:预处理
handler1.handle(signal,policy)
TopologySignalHandler
变换后,灵敏度调整,注意,这会极大影响累积值
handler读入不同站参数的逻辑
收藏
0 条评论
下一页