- 规定所有的GUID都使用全大写,所有组件包括机泵、传感器等
是属于部件本身的属性,所谓间接,是指需要通过变量来绑定到一个信号量,从而获取参数值。
例如压力传感器的压力值,直接绑定到一个信号量就可以啦。
属于其他部件的属性,所谓引用,是指引用了其他传感器或部件的间接属性
的值作为自己的值。
例如我要获取电机的温度,可是有3个温度传感器,怎么对应呢?
很简单,组件库
中有个属性叫传感器位置
(Position
),传感器在定义时就会按信号量名称设置自己的位置,引用属性寻找传感器时自然就找到对应位置的传感器,然后就能拿到它的信号量啦。
- 引用属性表中的
Position
字段,写成枚举字符串的值(完成)
PREV
函数需要实时数据列表
,来保存一定时间内的数据,但用到PREV的判据都不在振动相关的故障内,所以暂时不解析带PREV
函数的判据
判据如下(电机驱动端轴承缺损):
(
SpectrumIntegration
(@Spectrum_Bearing_In_Y
,0.8*@Speed
,1.2*@Speed
,#SPECTRUMINTERVAL
*60)*1.5)<SpectrumIntegration
(@Spectrum_Bearing_In_Y
,1.8*@Speed
,2.2*@Speed
,#SPECTRUMINTERVAL
*60)
- 1、替换常量(#)
设#SPECTRUMINTERVAL
= 10
(
SpectrumIntegration
(@Spectrum_Bearing_In_Y
,0.8*@Speed
,1.2*@Speed
,10*60)*1.5)<SpectrumIntegration
(@Spectrum_Bearing_In_Y
,1.8*@Speed
,2.2*@Speed
,10*60)
- 2、根据实时数据替换变量(@)为具体的信号量
设@Speed
=$Motor_Speed
设@Spectrum_Bearing_In_Y
=$Motor_BIY_Spectrum
(
SpectrumIntegration
( $^Motor_BIY_Spectrum,0.8* $Motor_Speed,1.2* $Motor_Speed,10*60)*1.5)<SpectrumIntegration
( $^Motor_BIY_Spectrum,1.8* $Motor_Speed,2.2* $Motor_Speed,10*60)
- 3、此时获取采集到的信号量实时数据
设$Motor_Speed
= 100
设$Motor_BIY_Spectrum
= 1 [1, -1, 1, -2, 1, -3]
(
SpectrumIntegration
(1,0.8*100,1.2*100,10*60)*1.5)<SpectrumIntegration
(1,1.8*100,2.2*100,10*60)
-
判据提示【@变量的变量值】无法解析
- 正常原因:
- 传感器没有值
- 错误原因:
- access中表PHYEF/PHYDEF_NONVIBRA中可能少了信号量的定义,或没有启用该信号量
- 正常原因:
-
判据提示【@变量】无法解析
- 错误原因:
- 判据中的变量写错了
- 间接参数表中没有定义该变量
- 错误原因:
-
判据提示【@变量】没有变量值
- 正常原因:
- 实际情况下没有该变量值,如:泰和-电机-@Spectrum_Bearing_In_Z没有变量值,那意思就是泰和电机本来就没有轴承轴向的测点。
- 正常原因:
- 需要加入报警过滤功能,对连续通过的判据进行报警,少于指定次数(如只发生一次)的不报警,次数应该在判据模板中设定
- 每种故障一天只报警一次,或可以设置一天最多报几次
- 同一种故障判断:故障模式相同,组件代号相同,则认为是同一种故障
#20170904_V1
:
- 判据解析
- 故障项报警
- 判据严重度分档
#20170926_V2
:
- 加了好多东西, 一些很细的逻辑, 不一一说明了
- 根据泵找到所有传感器, 基本上分振动/非振动/单独的一个转速
- 构建实时数据
RtData
, 其中会设置信号量与RedisKeyMap的对应关系 - 读取实时数据, 把pumpSystem对象中有绑定的信号量全部替换成实时数据
从左到右依次为:
0 - 水泵非驱动端
1 - 水泵驱动端
2 - 电机驱动端
3 - 电机非驱动端