Exemplo n.º 1
0
from collections import Counter as c_Counter
# from datetime import datetime
from logging import basicConfig, info
from os import getcwd
from time import strftime, localtime

from matplotlib import pyplot as plt
from numpy import array, around, append as np_append, transpose
from scipy.signal import butter, lfilter

from Config import ConfigInfo

basicConfig(filename='Weight_info.log', level='DEBUG')

conf = ConfigInfo()
# 获取采样频率,对于不同采集频率设定不同的时间间隔
o_f_frequency = int(conf.get_optical_fiber_frequency())

# 获取左右车轮和轴的标准重量
# weight_left=0.667t=2/3t
# weight_right=0.667t=2/3t
# weight_axle=0.766t=23/30t
car_weight_data = conf.weight_data()
standard_left_weight = float(car_weight_data[0])
standard_right_weight = float(car_weight_data[1])
standard_axle_weight = float(car_weight_data[2])

# 获取校准补偿系数
# adjust_data = conf.adjust_data()
# adjust_data_0 = adjust_data[0]
# adjust_data_1 = adjust_data[1]
Exemplo n.º 2
0
# picture_generation.py 图像生成
from os import path, listdir

from matplotlib import pyplot as plt
from Config import ConfigInfo
from Algorithm.data_splitting_integration import optical_data_splitting, optical_data_to_wheel
from Function.func_collection import read_txt

conf = ConfigInfo()
o_f_frequency = conf.get_optical_fiber_frequency(
)  # 频率取不到,因为picture.py的路径不在main.py的路径上


def txt_to_list(ttp_path):
    txt_set = []
    txt_name = listdir(ttp_path)
    for txt_signal_name in txt_name:
        xy_list = []
        txt_path = ttp_path + '\\' + txt_signal_name
        if path.exists(txt_path):
            x_list = []
            y_list = []
            txt = read_txt(txt_path)
            for t in txt:
                xy_t = t.strip().split()
                x_t = float(xy_t[0])
                y_t = float(xy_t[1])
                x_list.append(x_t)
                y_list.append(y_t)
            xy_list.append(x_list)
            xy_list.append(y_list)
Exemplo n.º 3
0
from collections import Counter as c_Counter
from logging import basicConfig, info
from os import getcwd
from time import strftime, localtime

# from matplotlib import pyplot as plt
from numpy import array

from Config import ConfigInfo

basicConfig(filename='Weight_info.log', level='DEBUG')

conf = ConfigInfo()

# 获取采样频率,对于不同采集频率设定不同的时间间隔
o_f_frequency = int(conf.get_optical_fiber_frequency())

# 获取左右车轮和轴的标准重量
# weight_left=0.667t=2/3t
# weight_right=0.667t=2/3t
# weight_axle=0.766t=23/30t
car_weight_data = conf.weight_data()
standard_left_weight = float(car_weight_data[0])
standard_right_weight = float(car_weight_data[1])
standard_axle_weight = float(car_weight_data[2])

# 获取图像展示区间
pic_limits = conf.display_limits()

# 获取标准光纤波长
optical_wave_length = conf.optical_wavelength()
Exemplo n.º 4
0
from time import strftime, localtime

from numpy import array as np_array, around, random as np_random, append as np_append

# from Algorithm.Neural_Networks import neural_network_module
from Algorithm.data_splitting_integration import single_wheel_data_count
from Config import ConfigInfo
from Database.data_storage import read_speed_json

conf = ConfigInfo()


def read_wheel_data(all_wheel_data):
    ss = []
    all_wheel_data_array = np_array(all_wheel_data)
    all_wheel_shape = all_wheel_data_array.shape
    if all_wheel_shape[1] * all_wheel_shape[2] == 12 * single_wheel_data_count:
        new_all_wheel_data_array = all_wheel_data_array.reshape((all_wheel_shape[0], 12, single_wheel_data_count))
        new_all_wheel_data_list = new_all_wheel_data_array.tolist()

        x = []
        for i in range(len(new_all_wheel_data_list[0][0])):
            x.append(i)

        n0 = new_all_wheel_data_array[0]
        s = sum(n0)
        ss = s.tolist()
    return ss


def wheel_weigh(wheel_data, all_car_aei):
Exemplo n.º 5
0
def main_exe():
    x_wheel_data = []
    all_wheel_data = []
    try:
        # 主程序路径读取
        main_path = getcwd()
        # main_path = path.realpath(getcwd())
        # main_path = path.dirname(path.realpath(argv[0]))

        # 配置文件确认
        # config_dir = main_path + '\\Config\\config.ini'
        config_dir = 'D:\\Config\\config.ini'
        cfp = path.exists(config_dir)

        if cfp:
            # 配置文件的信息读取
            conf = ConfigInfo()
            o_f_frequency = int(conf.get_optical_fiber_frequency())
            print('当前采样频率:%sHz' % o_f_frequency)

            speed_json_path = conf.speed_json_path()  # 获取json文件储存路径
            remove_json(speed_json_path)  # 删除已有的json文件

            # 数据预处理
            format_conversion(main_path)  # 进行数据预处理,并保存在Original_DB文件夹下

            # 算法程序开始
            info('---------------------------------------')
            info(ctime())
            print('数据正在处理,请稍等……')
            a = time()

            # 检测数据库中txt和AEI文件并读取,folders中为12个传感器的数据
            json_file_name, folders, all_car_aei = database_creation(main_path)

            # 数据库中有txt文件后,对folders读取,并做车轮数据提取整合,然后保存成json文件
            # optical_fiber_data的输出格式:三维列表[12个传感器×32个车轮车×600个数据][12×32×600]的矩阵
            optical_fiber_data = optical_data_splitting(folders, o_f_frequency)
            # all_wheel_data的输出格式:三维列表[32个车轮×2个车轮×3600个数据][32×2×3600]的矩阵
            x_wheel_data, all_wheel_data = optical_data_to_wheel(
                optical_fiber_data, o_f_frequency)

            # 计算车辆相关参数的重量,是否超偏载
            all_weight, is_unbalanced_loads, every_wheel_speed, test_date_time = al_main_weight(
                all_wheel_data, all_car_aei)

            # 车辆故障检测
            # is_non_circularity = fault_detection(x_wheel_data, all_wheel_data)

            # 将车轮数据保存成json文件
            if len(json_file_name) != 0:
                all_car_set_json = car_json_integration(
                    json_file_name, x_wheel_data, all_wheel_data, all_weight,
                    all_car_aei, is_unbalanced_loads, every_wheel_speed,
                    test_date_time)
                write_json(json_file_name, all_car_set_json)

            # 算法程序结束
            b = time()
            print('数据处理耗时:%.4fs,程序结束!' % (b - a))
            sleep(1)
            info('本次数据处理已完成,共耗时%.4fs:' % (b - a))
            info('---------------------------------------')
        else:
            print('配置文件缺失,请再次确认!')
            info('配置文件缺失,请再次确认!')
            sleep(1)
    except Exception as e:
        info('main_error:', e)
    return x_wheel_data, all_wheel_data
# data_splitting_integration.py 数据分割、整合模块
from collections import Counter
from logging import info

# from matplotlib import pyplot as plt
from numpy import array, transpose, append as np_ap

from Algorithm.al_func_collection import fft_func, butter_lowpass_filter
from Config import ConfigInfo

conf = ConfigInfo()
# 获取采样频率,对于不同采集频率设定不同的时间间隔
o_f_frequency = int(conf.get_optical_fiber_frequency())
# time_gap还需要根据列车行驶速度确定(速度越快,时间间隔越短)
time_gap = 0.1
if o_f_frequency == 100:
    time_gap = 4
elif o_f_frequency == 2000:
    time_gap = 0.07

single_wheel_data_count = int(o_f_frequency * time_gap) + 140


def data_standardization(wheel_data):
    """
    车轮波长数据标准化
    :param wheel_data: 
    :return: 
    """
    try:
        nor_data_list = []
Exemplo n.º 7
0
def database_creation(dc_path):
    conf = ConfigInfo()
    dc_path = 'D:'

    # 光纤数据库文件夹名称命名
    data_base_name = 'DB'  # 存储所有数据的文件夹
    json_base_name = 'json_file_TP'
    odb_folder_name = conf.get_original_db_name()  # 存储原始数据的文件夹Original_DB

    # 共用数据库文件夹名称命名
    original_folder_name = 'Data_pool'  # 原始数据库的文件夹名称
    backup_folder_name = 'Data_pool_backup'  # 原始数据库备份的文件夹名称
    algorithm_folder_name = 'Data_lib'  # 经过算法后的数据库的文件夹名称

    # 光纤数据库文件夹路径生成
    cfp = dc_path + '\\' + data_base_name  # “DB”文件夹路径
    # json_path = dc_path + '\\' + json_base_name  # “json_file_TP”文件夹路径
    odb = dc_path + '\\' + odb_folder_name  # “Original_DB”文件夹路径
    data_lib_path = cfp + '\\' + algorithm_folder_name  # “Data_lib”文件夹路径
    data_pool_path = cfp + '\\' + original_folder_name  # “Data_pool”文件夹路径
    data_pool_back_path = cfp + '\\' + backup_folder_name  # “Data_pool_backup”文件夹路径

    # 光纤数据库文件夹创建
    folder_creation(dc_path, data_base_name)  # 创建数据库根目录"DB"文件夹
    folder_creation('D:\\', json_base_name)  # 创建json文件存储的文件夹
    folder_creation(cfp, original_folder_name)  # 创建原始数据库"Data_pool"文件夹
    folder_creation(cfp, algorithm_folder_name)  # 创建经过算法后的数据库"Data_lib"文件夹

    # 生成车号文件夹,并将Original_DB中的文件复制进去
    odb_dir, new_folder_name, all_car_aei = original_db_scanning(
        dc_path, odb_folder_name)

    # 在Data_lib文件夹中建立年、月、日文件夹
    if new_folder_name is not '':
        db_folder_date = new_folder_name.split()[0].split('#')[1].split(
            '-')  # 从new_folder_name文件夹中获取年、月
        year_mon_day_folder_generation(
            data_lib_path, db_folder_date)  # 在“Data_lib”文件夹下创建年月日文件夹

    # 在Data_pool_backup文件夹中建立年、月、日文件夹
    if len(new_folder_name) > 1:
        new_fo_name = new_folder_name.replace(':', '_')
        car_folder_dir = data_pool_path + '\\' + new_fo_name
        car_folder_backup_dir = data_pool_back_path + '\\' + new_fo_name
        if not path.exists(
                car_folder_backup_dir):  # 判断'Data_pool_backup'是否已经有计算过的文件夹存在
            if not path.exists(car_folder_dir):
                make_directory(data_pool_path, new_fo_name)
                try:
                    odb_list = listdir(odb_dir)
                    # 将Original_temp_DB中的文件移动到D:\DB\Data_pool相应车号文件夹下备份
                    for f in odb_list:
                        odb_file_dir = odb_dir + '\\' + f
                        move(odb_file_dir, car_folder_dir)
                except Exception as e:
                    info('scanning_interface:', e)
        else:
            print('%s文件夹在%s中已存在,%s中的数据已经过计算,请重新检查数据!' %
                  (new_fo_name, backup_folder_name, odb_folder_name))
            info('%s文件夹在%s中已存在,%s中的数据已经过计算,请重新检查数据!' %
                 (new_fo_name, backup_folder_name, odb_folder_name))
            rmtree(odb)  # 删除已经计算过的Original_DB文件夹
            make_directory(dc_path, odb_folder_name)  # 新建Original_DB文件夹

    car_no_folders_name = ''
    top_tuple = scan_path(data_pool_path)
    car_no_folders = top_tuple[1]
    if len(car_no_folders) != 0:
        car_no_folders_name = car_no_folders[0]

    # 创建备份数据库,同时将原始数据库中的内容复制进去
    all_car = {}
    try:
        if len(car_no_folders) != 0:
            all_car = optical_fiber_collection(data_pool_path,
                                               car_no_folders)  # 进行数据采集
            if len(all_car) != 0:
                for car_no in car_no_folders:
                    cn_date = str(car_no).split()[0].split('#')[1].split('-')
                    car_no_date = cn_date[0] + '\\' + cn_date[
                        1] + '\\' + cn_date[2]
                    old_car_data_path = data_pool_path + '\\' + car_no
                    new_car_data_path = data_pool_back_path + '\\' + car_no_date + '\\' + car_no
                    try:
                        # 将D:\DB\Data_pool中的数据备份到D:\DB\Data_pool_backup
                        # copytree(old_car_data_path, new_car_data_path)
                        rmtree(old_car_data_path)
                    except Exception as e:
                        warning(e)

        # 清空Data_pool文件夹,方便下次的文件计算
        make_empty_folder(cfp, original_folder_name)
    except Exception as e:
        info('scanning_interface:', e)
    return car_no_folders_name, all_car, all_car_aei