DataNodeFrequencyTest1/DN101_ZIGBEE.py
DESKTOP-2QGM7IR\Lab01 5de3c3cc90 第一次提交
2025-04-09 09:49:42 +08:00

529 lines
25 KiB
Python

from ctypes import *
import numpy as np
import datetime
from zigbee_message_pack import *
SENSER_INF_PACK1 = 0x01
SENSER_INF_PACK2 = 0x07
EVEL_DATA_PACK1 = 0x02
EVEL_DATA_PACK2 = 0x06
WAVE_X_PACK = 0x03
WAVE_Y_PACK = 0x04
WAVE_Z_PACK = 0x05
SENSOR_FEATURE = 0x19
class EvelPack(LittleEndianStructure):
_fields_ = [
# 特征值
("temp_dev", c_uint16),
("temp_env", c_uint16),
("angle", c_uint16),
("bat_vol", c_uint16),
("acc_x_pk", c_uint16),
("acc_x_rms", c_uint16),
("speed_x_pk", c_uint16),
("speed_x_rms", c_uint16),
("fpower_x_1", c_uint16),
("fpower_x_2", c_uint16),
("fpower_x_3", c_uint16),
("fpower_x_4", c_uint16),
("fpower_x_5", c_uint16),
("envepower_x", c_uint16),
("errpower_x_1", c_uint16),
("errpower_x_2", c_uint16),
("errpower_x_3", c_uint16),
("errpower_x_4", c_uint16),
("acc_y_pk", c_uint16),
("acc_y_rms", c_uint16),
("speed_y_pk", c_uint16),
("speed_y_rms", c_uint16),
("fpower_y_1", c_uint16),
("fpower_y_2", c_uint16),
("fpower_y_3", c_uint16),
("fpower_y_4", c_uint16),
("fpower_y_5", c_uint16),
("envepower_y", c_uint16),
("errpower_y_1", c_uint16),
("errpower_y_2", c_uint16),
("errpower_y_3", c_uint16),
("errpower_y_4", c_uint16),
("acc_z_pk", c_uint16),
("acc_z_rms", c_uint16),
("speed_z_pk", c_uint16),
("speed_z_rms", c_uint16),
("fpower_z_1", c_uint16),
("fpower_z_2", c_uint16),
("fpower_z_3", c_uint16),
("fpower_z_4", c_uint16),
("fpower_z_5", c_uint16),
("envepower_z", c_uint16),
("errpower_z_1", c_uint16),
("errpower_z_2", c_uint16),
("errpower_z_3", c_uint16),
("errpower_z_4", c_uint16),
]
class WavePack(Structure):
_fields_ = [
("wvdata", c_uint16 * 46), # 原始波形
]
# 传感器设备信息
class DevInfo1(BigEndianStructure):
_pack_ = 1
_fields_ = [
# 设备状态标志
('uInitFlag', c_ubyte, 1),
('uAccSta', c_ubyte, 1),
('uZigbeeSta', c_ubyte, 1),
('uLowerTempSta', c_ubyte, 1),
('uUpperTempSta', c_ubyte, 1),
('uRunningFlag', c_ubyte, 1),
("reserve", c_ubyte, 2),
('zigbeeMac', c_uint64), # Zigbee MAC地址
('hwVersion', c_uint8), # 硬件版本
('sfVersion', c_uint8), # 软件版本
('pn', c_uint32), # 批号
('sn', c_uint32), # 序列号
('sTime', c_uint32), # 首次上电时间
('wakeupTimes', c_uint32), # 唤醒次数
('tzTimes', c_uint32), # 特征值发送次数
('wvTimes', c_uint32), # 原始波形发送次数
('batVol', c_uint16), # 电池电压
('productType', c_uint8), # 产品型号
('rss', c_uint8), # Zigbee信号强度
('active_flag', c_uint8), # 激活标志
('wakeup_period', c_uint8), # 唤醒周期
('wave_period', c_uint16), # 原始波形发送周期
('zig_panid', c_uint16), # zigbee panid
('zig_channel', c_uint8), # zigbee channel
('zig_local_addr', c_uint16), # zigbee本地地址
('zig_dst_addr', c_uint16), # zigbee目标地址
('zig_power_level', c_uint8), # zigbee发射功率
("zig_retry_num", c_uint8), # 重试次数
("zig_retry_time", c_uint8), # 重试间隔
("reserve", c_ubyte, 4),
("acc_acq_range", c_ubyte, 2), # 量程
("acc_acq_freq", c_ubyte, 2), # 采样率
("acc_acq_time", c_uint8), # 采样时长
("freq_power1_start", c_uint16), # 频带能量参数1
("freq_power1_stop", c_uint16), # 频带能量参数1
("freq_power2_start", c_uint16), # 频带能量参数2
("freq_power2_stop", c_uint16), # 频带能量参数2
("freq_power3_start", c_uint16), # 频带能量参数3
("freq_power3_stop", c_uint16), # 频带能量参数3
("freq_power4_start", c_uint16), # 频带能量参数4
("freq_power4_stop", c_uint16), # 频带能量参数4
("freq_power5_start", c_uint16), # 频带能量参数5
("freq_power5_stop", c_uint16), # 频带能量参数5
("envel_freq_start", c_uint16), # 包络带通频率
("envel_freq_stop", c_uint16), # 包络带通频率
("fail_freq1", c_uint16), # 故障频率1
("fail_freq2", c_uint16), # 故障频率2
("fail_freq3", c_uint16), # 故障频率3
("fail_freq4", c_uint16), # 故障频率4
("conf_date", c_int32), # 配置时间
("speed_freq_start", c_int8), # 速度积分起始频率
]
# 传感器信息2
class DevInfo2(Structure):
_fields_ = [
# 特征值
("node_name", c_int16 * 32), # 节点名称
("reserve", c_int8 * 28), # 保留
]
class ZigPack(Structure):
_fields_ = [
("msg_header", c_uint8 * 3), # 帧头
("msg_addr", c_uint8 * 2), # 源地址
("msg_type", c_uint8), # 数据类型
]
class ZigPack_Ask(Structure):
_fields_ = [
("msg_header", c_uint8 * 3), # 帧头
("msg_addr", c_uint8 * 2), # 源地址
("msg_type", c_uint8), # 数据类型
("msg_index", c_uint8), # 包序号
("crc", c_uint8), # 校验
]
class ZigPack_feature(Structure):
_fields_ = [
("msg_header", c_uint8 * 3), # 帧头
("msg_addr", c_uint8 * 2), # 源地址
("msg_type", c_uint8), # 数据类型
("msg_index", c_uint8), # 包序号
("data", c_int16), # 数据
("crc", c_uint8), # 校验
]
# 定义结构体
class ZigPackAsk(Structure):
_fields_ = [
("msg_header", c_uint8 * 3), # 帧头
("msg_addr", c_uint8 * 2), # 源地址
("msg_type", c_uint8), # 数据类型
("msg_index", c_uint8), # 包序号
("payload", c_uint8 * 2), # 数据字段
("payload2", c_uint8 * 2), # 数据字段
("crc", c_uint8), # 校验
]
class Zig_Reader(object):
def __init__(self, zig_dev):
self.evelpack = EvelPack()
self.wavepack = WavePack()
self.prev_index = 0
self.zig_reader = zig_dev # 串口设备
# self.zig_reader = serial.Serial('com5')
self.recv_data_buf = b''
self.zigpack = ZigPack()
self.senser_info1 = DevInfo1()
self.senser_info2 = DevInfo2()
self.senser_evel = EvelPack()
self.senser_wave = WavePack()
self.senser_ask = ZigPack_Ask()
self.senser_feature = ZigPack_feature()
self.init_zigbee_message()
def read(self):
sdata = self.zig_reader.read(self.zig_reader.inWaiting())
self.recv_data_buf = self.recv_data_buf + sdata
ret = self.data_analysis()
self.recv_data_buf = b''
return ret
def write(self,write_data):
print("write str " + write_data)
ret = self.zig_reader.write(write_data)
print("write ret " + ret)
return ret
def data_analysis(self):
if (len(self.recv_data_buf) >= 100): # 缓存中数据量大于等于数据包
print(self.recv_data_buf)
# if ((self.recv_data_buf[:3] == b'\xaaU\xaa') | (self.crc_check(self.recv_data_buf[:100]))):
# memmove(addressof(self.zigpack), self.recv_data_buf, sizeof(self.zigpack))
#
# if self.zigpack.msg_type == SENSER_INF_PACK1:
# memmove(addressof(self.senser_info1), self.zigpack.data, sizeof(self.senser_info1))
# elif self.zigpack.msg_type == SENSER_INF_PACK2:
# memmove(addressof(self.senser_info2), self.zigpack.data, sizeof(self.senser_info2))
# self.dev_info_analysis()
# self.dev_conf_analysis()
# elif (self.zigpack.msg_type == EVEL_DATA_PACK1) | (self.zigpack.msg_type == EVEL_DATA_PACK2):
# memmove(addressof(self.senser_evel), self.zigpack.data, sizeof(self.senser_evel))
# self.evel_data_analysis()
# elif self.zigpack.msg_type == WAVE_X_PACK:
# memmove(addressof(self.senser_wave), self.zigpack.data, sizeof(self.senser_wave))
# elif self.zigpack.msg_type == WAVE_Y_PACK:
# memmove(addressof(self.senser_wave), self.zigpack.data, sizeof(self.senser_wave))
# elif self.zigpack.msg_type == WAVE_Z_PACK:
# memmove(addressof(self.senser_wave), self.zigpack.data, sizeof(self.senser_wave))
#
# self.recv_data_buf = self.recv_data_buf[100:]
# return self.zigpack.msg_type
# else:
# self.recv_data_buf = self.recv_data_buf[1:]
# return False
elif ((self.recv_data_buf[:3] == b'\xaaU\xaa') | (len(self.recv_data_buf) >= 5) and (len(self.recv_data_buf) < 20)):
print(self.recv_data_buf)
memmove(addressof(self.zigpack), self.recv_data_buf, sizeof(self.zigpack))
if self.zigpack.msg_type == SENSER_INF_PACK1:
memmove(addressof(self.senser_ask), self.recv_data_buf, sizeof(self.senser_ask))
elif self.zigpack.msg_type == SENSOR_FEATURE:
# 按结构体解析
self.zigpack = ZigPackAsk.from_buffer_copy(self.recv_data_buf)
self.zig_reader.reset_input_buffer()
return self.zigpack.msg_type
else:
return False
def crc_check(self, sdata):
sdata = [d for d in sdata]
sum_vl = np.sum(sdata[:-1])
if (sum_vl & 0xff) == sdata[-1]:
return True
else:
msg = self.get_date_time() + '\n'
msg = msg + "CRC Cal Error\n"
msg = msg + str([hex(d) for d in sdata]) + '\n'
print(msg)
return False
def get_date_time(self):
now_time = datetime.datetime.now()
time_str = now_time.strftime('%Y-%m-%d %H:%M:%S')
return time_str
def close(self):
self.zig_reader.close()
def dev_info_analysis(self):
self.dev_info_msg["初始化标志"] = self.senser_info1.uInitFlag
self.dev_info_msg["加速度传感器状态"] = self.senser_info1.uAccSta
self.dev_info_msg["Zigbee模块状态"] = self.senser_info1.uZigbeeSta
self.dev_info_msg["设备温度传感器状态"] = self.senser_info1.uLowerTempSta
self.dev_info_msg["环境温度传感器状态"] = self.senser_info1.uUpperTempSta
self.dev_info_msg["设备运行状态"] = self.senser_info1.uRunningFlag
self.dev_info_msg["MAC地址"] = hex(self.senser_info1.zigbeeMac)[2:]
self.dev_info_msg["硬件版本"] = self.senser_info1.hwVersion/10
self.dev_info_msg["软件版本"] = self.senser_info1.sfVersion/10
self.dev_info_msg["生产批号"] = self.senser_info1.pn
self.dev_info_msg["生产序列号"] = self.senser_info1.sn
self.dev_info_msg["首次上电日期"] = self.senser_info1.sTime
self.dev_info_msg["唤醒次数"] = self.senser_info1.wakeupTimes
self.dev_info_msg["特征值发送次数"] = self.senser_info1.tzTimes
self.dev_info_msg["原始波形发送次数"] = self.senser_info1.wvTimes
self.dev_info_msg["电池电压"] = self.senser_info1.batVol
self.dev_info_msg["产品型号"] = self.senser_info1.productType
self.dev_info_msg["无线信号强度"] = self.senser_info1.rss
self.dev_info_msg["测点名称"] = bytes(self.senser_info2.node_name).decode('GB18030')
def dev_conf_analysis(self):
self.dev_conf_msg["配置标志"] = self.senser_info1.active_flag
self.dev_conf_msg["唤醒周期"] = self.senser_info1.wakeup_period
self.dev_conf_msg["原始波形发送周期"] = self.senser_info1.wave_period
self.dev_conf_msg["Zigbee PID"] = hex(self.senser_info1.zig_panid)[2:]
self.dev_conf_msg["Zigbee 信道"] = self.senser_info1.zig_channel
self.dev_conf_msg["Zigbee 本地地址"] = hex(self.senser_info1.zig_local_addr)[2:]
self.dev_conf_msg["Zigbee 目标地址"] = hex(self.senser_info1.zig_dst_addr)[2:]
self.dev_conf_msg["Zigbee 发射功率"] = self.senser_info1.zig_power_level
self.dev_conf_msg["Zigbee 重试次数"] = self.senser_info1.zig_retry_num
self.dev_conf_msg["Zigbee 重试间隔"] = self.senser_info1.zig_retry_time
self.dev_conf_msg["ACC采样率"] = self.acc_freq_cal(self.senser_info1.acc_acq_freq)
self.dev_conf_msg["ACC量程"] = self.acc_range_cal(self.senser_info1.acc_acq_range)
self.dev_conf_msg["ACC采样率时间"] = self.senser_info1.acc_acq_time
self.dev_conf_msg["频带能量参数1 START"] = self.senser_info1.freq_power1_start
self.dev_conf_msg["频带能量参数1 END"] = self.senser_info1.freq_power1_stop
self.dev_conf_msg["频带能量参数2 START"] = self.senser_info1.freq_power2_start
self.dev_conf_msg["频带能量参数2 END"] = self.senser_info1.freq_power2_stop
self.dev_conf_msg["频带能量参数3 START"] = self.senser_info1.freq_power3_start
self.dev_conf_msg["频带能量参数3 END"] = self.senser_info1.freq_power3_stop
self.dev_conf_msg["频带能量参数4 START"] = self.senser_info1.freq_power4_start
self.dev_conf_msg["频带能量参数4 END"] = self.senser_info1.freq_power4_stop
self.dev_conf_msg["频带能量参数5 START"] = self.senser_info1.freq_power5_start
self.dev_conf_msg["频带能量参数5 END"] = self.senser_info1.freq_power5_stop
self.dev_conf_msg["冲击带通频率START"] = self.senser_info1.envel_freq_start
self.dev_conf_msg["冲击带通频率END"] = self.senser_info1.envel_freq_stop
self.dev_conf_msg["故障频率1"] = self.senser_info1.fail_freq1
self.dev_conf_msg["故障频率2"] = self.senser_info1.fail_freq2
self.dev_conf_msg["故障频率3"] = self.senser_info1.fail_freq3
self.dev_conf_msg["故障频率4"] = self.senser_info1.fail_freq4
self.dev_conf_msg["配置时间"] = self.senser_info1.conf_date
self.dev_conf_msg["速度积分滤波频率"] = self.senser_info1.speed_freq_start
def evel_data_analysis(self):
# self.dev_evel_msg["传感器地址"] = hex((self.zigpack.msg_addr[0]<<8)+self.zigpack.msg_addr[1])[-4:]
self.dev_evel_msg["传感器地址"] = format(int(hex((self.zigpack.msg_addr[0] << 8) + self.zigpack.msg_addr[1]), 16), '04x')
self.dev_evel_msg["采集时间"] = self.get_date_time()
self.dev_evel_msg["设备温度"] = temp_cal(self.senser_evel.temp_dev)
self.dev_evel_msg["环境温度"] = temp_cal(self.senser_evel.temp_env)
self.dev_evel_msg["倾角"] = self.senser_evel.angle
self.dev_evel_msg["电池电压"] = self.senser_evel.bat_vol
self.dev_evel_msg["X轴峰值"] = self.evel_cal(self.senser_evel.acc_x_pk)
self.dev_evel_msg["X轴有效值"] = self.evel_cal(self.senser_evel.acc_x_rms)
self.dev_evel_msg["X轴速度峰值"] = self.evel_cal(self.senser_evel.speed_x_pk)
self.dev_evel_msg["X轴速度有效值"] = self.evel_cal(self.senser_evel.speed_x_rms)
self.dev_evel_msg["X轴频带能量1"] = self.evel_cal(self.senser_evel.fpower_x_1)
self.dev_evel_msg["X轴频带能量2"] = self.evel_cal(self.senser_evel.fpower_x_2)
self.dev_evel_msg["X轴频带能量3"] = self.evel_cal(self.senser_evel.fpower_x_3)
self.dev_evel_msg["X轴频带能量4"] = self.evel_cal(self.senser_evel.fpower_x_4)
self.dev_evel_msg["X轴频带能量5"] = self.evel_cal(self.senser_evel.fpower_x_5)
self.dev_evel_msg["X轴冲击能量"] = self.evel_cal(self.senser_evel.envepower_x)
self.dev_evel_msg["X轴故障频率1"] = self.evel_cal(self.senser_evel.errpower_x_1)
self.dev_evel_msg["X轴故障频率2"] = self.evel_cal(self.senser_evel.errpower_x_2)
self.dev_evel_msg["X轴故障频率3"] = self.evel_cal(self.senser_evel.errpower_x_3)
self.dev_evel_msg["X轴故障频率4"] = self.evel_cal(self.senser_evel.errpower_x_4)
self.dev_evel_msg["Y轴峰值"] = self.evel_cal(self.senser_evel.acc_y_pk)
self.dev_evel_msg["Y轴有效值"] = self.evel_cal(self.senser_evel.acc_y_rms)
self.dev_evel_msg["Y轴速度峰值"] = self.evel_cal(self.senser_evel.speed_y_pk)
self.dev_evel_msg["Y轴速度有效值"] = self.evel_cal(self.senser_evel.speed_y_rms)
self.dev_evel_msg["Y轴频带能量1"] = self.evel_cal(self.senser_evel.fpower_y_1)
self.dev_evel_msg["Y轴频带能量2"] = self.evel_cal(self.senser_evel.fpower_y_2)
self.dev_evel_msg["Y轴频带能量3"] = self.evel_cal(self.senser_evel.fpower_y_3)
self.dev_evel_msg["Y轴频带能量4"] = self.evel_cal(self.senser_evel.fpower_y_4)
self.dev_evel_msg["Y轴频带能量5"] = self.evel_cal(self.senser_evel.fpower_y_5)
self.dev_evel_msg["Y轴冲击能量"] = self.evel_cal(self.senser_evel.envepower_y)
self.dev_evel_msg["Y轴故障频率1"] = self.evel_cal(self.senser_evel.errpower_y_1)
self.dev_evel_msg["Y轴故障频率2"] = self.evel_cal(self.senser_evel.errpower_y_2)
self.dev_evel_msg["Y轴故障频率3"] = self.evel_cal(self.senser_evel.errpower_y_3)
self.dev_evel_msg["Y轴故障频率4"] = self.evel_cal(self.senser_evel.errpower_y_4)
self.dev_evel_msg["Z轴峰值"] = self.evel_cal(self.senser_evel.acc_z_pk)
self.dev_evel_msg["Z轴有效值"] = self.evel_cal(self.senser_evel.acc_z_rms)
self.dev_evel_msg["Z轴速度峰值"] = self.evel_cal(self.senser_evel.speed_z_pk)
self.dev_evel_msg["Z轴速度有效值"] = self.evel_cal(self.senser_evel.speed_z_rms)
self.dev_evel_msg["Z轴频带能量1"] = self.evel_cal(self.senser_evel.fpower_z_1)
self.dev_evel_msg["Z轴频带能量2"] = self.evel_cal(self.senser_evel.fpower_z_2)
self.dev_evel_msg["Z轴频带能量3"] = self.evel_cal(self.senser_evel.fpower_z_3)
self.dev_evel_msg["Z轴频带能量4"] = self.evel_cal(self.senser_evel.fpower_z_4)
self.dev_evel_msg["Z轴频带能量5"] = self.evel_cal(self.senser_evel.fpower_z_5)
self.dev_evel_msg["Z轴冲击能量"] = self.evel_cal(self.senser_evel.envepower_z)
self.dev_evel_msg["Z轴故障频率1"] = self.evel_cal(self.senser_evel.errpower_z_1)
self.dev_evel_msg["Z轴故障频率2"] = self.evel_cal(self.senser_evel.errpower_z_2)
self.dev_evel_msg["Z轴故障频率3"] = self.evel_cal(self.senser_evel.errpower_z_3)
self.dev_evel_msg["Z轴故障频率4"] = self.evel_cal(self.senser_evel.errpower_z_4)
def temp_cal(self, sdata):
if sdata > 2048:
temp = -(256 - sdata * 0.0625)
else:
temp = sdata * 0.0625
return temp
def evel_cal(self, sdata):
s1 = sdata >> 14
s2 = sdata & (0xffff >> 2)
if s1 == 0:
vl = s2 * 0.0001
elif s1 == 1:
vl = s2 * 0.01
elif s1 == 2:
vl = s2
elif s1 == 3:
vl = s2 / 100
else:
vl = 16383
return vl
def acc_range_cal(self, sdata):
if sdata == 0b00:
return "±8g"
elif sdata == 0b01:
return "±16g"
elif sdata == 0b10:
return "±32g"
elif sdata == 0b11:
return "±64g"
def acc_freq_cal(self, sdata):
if sdata == 0b00:
return "3.2kHz"
elif sdata == 0b01:
return "6.4kHz"
elif sdata == 0b10:
return "12.8kHz"
elif sdata == 0b11:
return "25.6kHz"
def init_zigbee_message(self):
self.dev_info_msg = {"测点名称": None,
"初始化标志": None,
"加速度传感器状态": None,
"Zigbee模块状态": None,
"设备温度传感器状态": None,
"环境温度传感器状态": None,
"设备运行状态": None,
"MAC地址": None,
"硬件版本": None,
"软件版本": None,
"生产批号": None,
"生产序列号": None,
"首次上电日期": None,
"唤醒次数": None,
"特征值发送次数": None,
"原始波形发送次数": None,
"电池电压": None,
"产品型号": None,
"无线信号强度": None,
}
self.dev_conf_msg = {"配置标志": None,
"唤醒周期": None,
"原始波形发送周期": None,
"Zigbee PID": None,
"Zigbee 信道": None,
"Zigbee 本地地址": None,
"Zigbee 目标地址": None,
"Zigbee 发射功率": None,
"Zigbee 重试次数": None,
"Zigbee 重试间隔": None,
"ACC采样率": None,
"ACC量程": None,
"ACC采样率时间": None,
"频带能量参数1 START": None,
"频带能量参数1 END": None,
"频带能量参数2 START": None,
"频带能量参数2 END": None,
"频带能量参数3 START": None,
"频带能量参数3 END": None,
"频带能量参数4 START": None,
"频带能量参数4 END": None,
"频带能量参数5 START": None,
"频带能量参数5 END": None,
"冲击带通频率START": None,
"冲击带通频率END": None,
"故障频率1": None,
"故障频率2": None,
"故障频率3": None,
"故障频率4": None,
"配置时间": None,
"速度积分滤波频率": None,
"原始数据": None
}
self.dev_evel_msg = {"传感器地址": None,
"采集时间": None,
"设备温度": None,
"环境温度": None,
"倾角": None,
"电池电压": None,
"X轴峰值": None,
"X轴有效值": None,
"X轴速度峰值": None,
"X轴速度有效值": None,
"Y轴峰值": None,
"Y轴有效值": None,
"Y轴速度峰值": None,
"Y轴速度有效值": None,
"Z轴峰值": None,
"Z轴有效值": None,
"Z轴速度峰值": None,
"Z轴速度有效值": None,
"X轴频带能量1": None,
"X轴频带能量2": None,
"X轴频带能量3": None,
"X轴频带能量4": None,
"X轴频带能量5": None,
"X轴冲击能量": None,
"X轴故障频率1": None,
"X轴故障频率2": None,
"X轴故障频率3": None,
"X轴故障频率4": None,
"Y轴频带能量1": None,
"Y轴频带能量2": None,
"Y轴频带能量3": None,
"Y轴频带能量4": None,
"Y轴频带能量5": None,
"Y轴冲击能量": None,
"Y轴故障频率1": None,
"Y轴故障频率2": None,
"Y轴故障频率3": None,
"Y轴故障频率4": None,
"Z轴频带能量1": None,
"Z轴频带能量2": None,
"Z轴频带能量3": None,
"Z轴频带能量4": None,
"Z轴频带能量5": None,
"Z轴冲击能量": None,
"Z轴故障频率1": None,
"Z轴故障频率2": None,
"Z轴故障频率3": None,
"Z轴故障频率4": None,
# "原始数据": None
}