Ejemplo n.º 1
0
    def hydraulic_yaw_brake_open_half_pressure2(self):
        """
        1.偏航半释放阀为1时,液压偏航制动入口压力2和液压偏航制动出口压力2最小值超出[25,47]范围,
        2.液压偏航制动入口压力2和液压偏航制动出口压力2差值大于2或小于-1,持续3秒。
        满足其一
        """
        try:
            # 获取  0时间  11偏航半释放阀 10偏航制动入口压力2  8偏航制动出口压力2
            tickets = [self.tickets[0], self.tickets[11], self.tickets[10], self.tickets[8]]
            df = self.df[['time', tickets[0], tickets[1], tickets[2], tickets[3]]]
        except Exception as e:
            log.warning(e)
            log.warning("液压跳过函数67")
            self.send_message({"message": {"function": 66, "result": -1}})
            return

        # 情况1 偏航半释放阀为1时,液压偏航制动入口压力2和液压偏航制动出口压力2最小值超出[25, 47]范围,
        df_h = df.drop(df[(df[tickets[1]] != 1)].index).copy()
        # #  获得 每一秒 液压偏航制动入口压力2和液压偏航制动出口压力2最小值,判断是否在[25, 47]范围
        df_h['min'] = df_h.loc[:, [tickets[2], tickets[3]]].min(axis=1, skipna=True)
        df_h = df_h[(df_h['min'] > 47) | (df_h['min'] < 25)]
        # 情况2 液压偏航制动入口压力2和液压偏航制动出口压力2差值大于2或小于 - 1,持续3秒
        df_l = df[(df[tickets[2]] - df[tickets[3]] < -1) | (df[tickets[2]] - df[tickets[3]] > 2)].copy()
        if df_h.empty and df_l.empty:
            log.info("正常")
            self.send_message({"message": {"function": 66, "result": 1}})
        else:
            flag = False
            if not df_h.empty:
                result = tool.duration_calculation_to_csv(tickets,
                                                          df_h,
                                                          1,
                                                          str(gl.now_file).split(r'/')[-1].split('.')[0] +
                                                          '/偏航半释放压力2异常1.csv')
                if result[0]:
                    flag = True
                    log.info("正常")
                    self.send_message({"message": {"function": 66, "result": 1}})
                else:
                    flag = False
                    self.send_message({"message": {"function": 66, "result": 0, "details": result[1]}})
            else:
                flag = True
            if not df_l.empty:
                result = tool.duration_calculation_to_csv(tickets,
                                                          df_l,
                                                          3,
                                                          str(gl.now_file).split(r'/')[-1].split('.')[0] +
                                                          '/偏航半释放压力2异常2.csv')
                if result[0]:
                    if flag:
                        log.info("正常")
                        self.send_message({"message": {"function": 66, "result": 1}})
                else:
                    self.send_message({"message": {"function": 66, "result": 0, "details": result[1]}})
Ejemplo n.º 2
0
    def hydraulic_pump_outlet_pressure(self):
        """
        液压泵1启动 或 液压泵2启动 = 1时,液压泵出口压力 <150bar 或 >175bar,持续10s
        """
        try:
            # 获取 0时间  3液压泵1开  4液压泵2开  13液压泵出口压力
            tickets = [self.tickets[0], self.tickets[3], self.tickets[4], self.tickets[13]]
            df = self.df[['time', tickets[0], tickets[1], tickets[2], tickets[3]]]
        except Exception as e:
            log.warning(e)
            log.warning("液压跳过函数69")
            self.send_message({"message": {"function": 68, "result": -1}})
            return

        df = df[(df[tickets[1]] == 1) | (df[tickets[2]] == 1)]
        if df.empty:
            log.info("正常")
            self.send_message({"message": {"function": 68, "result": 1}})
        else:
            df = df[(df[tickets[3]] > 175) | (df[tickets[3]] < 150)]
            if df.empty:
                log.info("正常")
                self.send_message({"message": {"function": 68, "result": 1}})
            else:
                # ------------------判断连续性
                result = tool.duration_calculation_to_csv(tickets,
                                                          df,
                                                          10,
                                                          str(gl.now_file).split(r'/')[-1].split('.')[0] +
                                                          '/液压泵出口压力异常.csv')
                if result[0]:
                    log.info("正常")
                    self.send_message({"message": {"function": 68, "result": 1}})
                else:
                    self.send_message({"message": {"function": 68, "result": 0, "details": result[1]}})
Ejemplo n.º 3
0
    def hydraulic_yaw_brake2(self):
        """
        机组运行模式 = 14,液压偏航制动入口压力1 > 150时,液压偏航制动入口压力1 - 液压偏航制动出口压力1 > 2bar,持续 10 s
        """
        try:
            # 获取 0时间  1机组运行模式  10偏航制动入口压力2  8偏航制动出口压力2
            tickets = [self.tickets[0], self.tickets[1], self.tickets[10], self.tickets[8]]
            df = self.df[['time', tickets[0], tickets[1], tickets[2], tickets[3]]]
        except Exception as e:
            log.warning(e)
            log.warning("液压跳过函数74")
            self.send_message({"message": {"function": 73, "result": -1}})
            return

        df = df[(df[tickets[1]] == 14) & (df[tickets[2]] > 150)]
        if df.empty:
            log.info("正常")
            self.send_message({"message": {"function": 73, "result": 1}})
        else:
            df = df[(df[tickets[2]] - df[tickets[3]] > 2)]
            if df.empty:
                log.info("正常")
                self.send_message({"message": {"function": 73, "result": 1}})
            else:
                # ------------------判断连续性
                result = tool.duration_calculation_to_csv(tickets,
                                                          df,
                                                          10,
                                                          str(gl.now_file).split(r'/')[-1].split('.')[0] +
                                                          '/偏航制动器2异常.csv')
                if result[0]:
                    log.info("正常")
                    self.send_message({"message": {"function": 73, "result": 1}})
                else:
                    self.send_message({"message": {"function": 73, "result": 0, "details": result[1]}})
Ejemplo n.º 4
0
    def generator_inRecycle_outlet_temperature(self):
        """
        机组运行模式 = 14, 发电机内冷出口温度1 和 发电机内冷出口温度2 任意一个 > 60℃,持续时间1min
        """
        try:
            # 获取  0时间  1机组运行模式   13发电机空空冷内循环出口温度1   14发电机空空冷内循环出口温度2
            tickets = [self.tickets[0], self.tickets[1], self.tickets[13], self.tickets[14]]
            df = self.df[['time', tickets[0], tickets[1], tickets[2], tickets[3]]]
        except Exception as e:
            log.warning(e)
            log.warning("发电机跳过函数46")
            self.send_message({"message": {"function": 45, "result": -1}})
            return

        df = df.drop(df[(df[tickets[1]] != 14)].index)
        if df.empty:
            log.info("正常")
            self.send_message({"message": {"function": 45, "result": 1}})
        else:
            df = df[(df[tickets[2]] > 60) | (df[tickets[3]] > 60)]
            if df.empty:
                log.info("正常")
                self.send_message({"message": {"function": 45, "result": 1}})
            else:
                # ------------------判断连续性
                result = tool.duration_calculation_to_csv(tickets,
                                                          df,
                                                          60,
                                                          str(gl.now_file).split(r'/')[-1].split('.')[0] +
                                                          '/发电机内冷出口温度高.csv')
                if result[0]:
                    log.info("正常")
                    self.send_message({"message": {"function": 45, "result": 1}})
                else:
                    self.send_message({"message": {"function": 45, "result": 0, "details": result[1]}})
Ejemplo n.º 5
0
    def hydraulic_sys(self):
        """
        12≤ 机组运行模式 ≤14,液压系统压力 < 150bar 或 > 175bar, 持续20s
        """
        try:
            # 获取 0时间  1机组运行模式  2液压系统压力
            tickets = [self.tickets[0], self.tickets[1], self.tickets[2]]
            df = self.df[['time', tickets[0], tickets[1], tickets[2]]]
        except Exception as e:
            log.warning(e)
            log.warning("液压跳过函数64")
            self.send_message({"message": {"function": 63, "result": -1}})
            return

        df = df.drop(df[((df[tickets[1]] > 14) | (df[tickets[1]] < 12))].index)
        if df.empty:
            log.info("正常")
            self.send_message({"message": {"function": 63, "result": 1}})
        else:
            df = df[(df[tickets[2]] > 175) | (df[tickets[2]] < 150)]
            if df.empty:
                log.info("正常")
                self.send_message({"message": {"function": 63, "result": 1}})
            else:
                # ------------------判断连续性
                result = tool.duration_calculation_to_csv(tickets,
                                                          df,
                                                          20,
                                                          str(gl.now_file).split(r'/')[-1].split('.')[0] +
                                                          '/液压系统压力异常.csv')
                if result[0]:
                    log.info("正常")
                    self.send_message({"message": {"function": 63, "result": 1}})
                else:
                    self.send_message({"message": {"function": 63, "result": 0, "details": result[1]}})
Ejemplo n.º 6
0
    def pitch_driver_ratiator_temperature(self):
        """
        机组运行模式=14,驱动器1-3散热器温度 最大值与最小值差值超10℃,或最大值超过60℃,或最小值低于-5℃,但是不等于-40℃,并且持续超过1min
        """
        try:
            # 获取  0时间   1机组模式  17-19变桨驱动柜散热器温度1-3
            tickets = [
                self.tickets[0], self.tickets[1], self.tickets[17],
                self.tickets[18], self.tickets[19]
            ]
            df = self.df[[
                'time', tickets[0], tickets[1], tickets[2], tickets[3],
                tickets[4]
            ]]
        except Exception as e:
            log.warning(e)
            log.warning("变桨跳过函数54")
            self.send_message({"message": {"function": 53, "result": -1}})
            return

        df = df.drop(df[(df[tickets[1]] != 14)].index)
        if df.empty:
            log.info("正常")
            self.send_message({"message": {"function": 53, "result": 1}})
        else:
            df['maxvalue'] = df[[tickets[2], tickets[3],
                                 tickets[4]]].max(axis=1)
            df['minvalue'] = df[[tickets[2], tickets[3],
                                 tickets[4]]].min(axis=1)
            df = df[(df['maxvalue'] - df['minvalue'] > 10) |
                    (df['maxvalue'] > 60) | ((df['minvalue'] < -5) &
                                             (df['minvalue'] != -40))]
            if df.empty:
                log.info("正常")
                self.send_message({"message": {"function": 53, "result": 1}})
            else:
                # ------------------判断连续性
                result = tool.duration_calculation_to_csv(
                    tickets, df, 60,
                    str(gl.now_file).split(r'/')[-1].split('.')[0] +
                    '/变桨驱动器散热器温度异常.csv')
                if result[0]:
                    log.info("正常")
                    self.send_message(
                        {"message": {
                            "function": 53,
                            "result": 1
                        }})
                else:
                    self.send_message({
                        "message": {
                            "function": 53,
                            "result": 0,
                            "details": result[1]
                        }
                    })
Ejemplo n.º 7
0
    def pitch_battery_box_temperature_difference(self):
        """
        机组运行模式=14,两两桨叶电池箱温差绝对值 ≥10℃,并且持续超过1min
        """
        try:
            # 获取 0时间  1机组模式 20-22变桨后备电源柜温度1-3
            tickets = [
                self.tickets[0], self.tickets[1], self.tickets[20],
                self.tickets[21], self.tickets[22]
            ]
            df = self.df[[
                'time', tickets[0], tickets[1], tickets[2], tickets[3],
                tickets[4]
            ]]
        except Exception as e:
            log.warning(e)
            log.warning("变桨跳过函数56")
            self.send_message({"message": {"function": 55, "result": -1}})
            return

        df = df.drop(df[(df[tickets[1]] != 14)].index)
        if df.empty:
            log.info("正常")
            self.send_message({"message": {"function": 55, "result": 1}})
        else:
            # 绝对值 ≥10℃,并且持续超过1min
            df['电源柜1-电源柜2'] = (df[tickets[2]] - df[tickets[3]]).abs()
            df['电源柜1-电源柜3'] = (df[tickets[2]] - df[tickets[4]]).abs()
            df['电源柜2-电源柜3'] = (df[tickets[3]] - df[tickets[4]]).abs()
            df = df[(df['电源柜1-电源柜2'] >= 10) | (df['电源柜1-电源柜3'] >= 10) |
                    (df['电源柜2-电源柜3'] >= 10)]
            if df.empty:
                log.info("正常")
                self.send_message({"message": {"function": 55, "result": 1}})
            else:
                # ------------------判断连续性
                result = tool.duration_calculation_to_csv(
                    tickets, df, 60,
                    str(gl.now_file).split(r'/')[-1].split('.')[0] +
                    '/桨叶电池箱温差异常.csv')
                if result[0]:
                    log.info("正常")
                    self.send_message(
                        {"message": {
                            "function": 55,
                            "result": 1
                        }})
                else:
                    self.send_message({
                        "message": {
                            "function": 55,
                            "result": 0,
                            "details": result[1]
                        }
                    })
Ejemplo n.º 8
0
    def pitch_battery_box_temperature(self):
        """
        单个桨叶电池箱温度(变桨后备电源柜温度1-3) > 55℃ 或 < -5℃,且 ≠ -40℃,持续1min;
        """
        try:
            # 获取  0时间  1机组运行模式   20-22变桨后备电源柜温度1-3
            tickets = [
                self.tickets[0], self.tickets[1], self.tickets[20],
                self.tickets[21], self.tickets[22]
            ]
            df = self.df[[
                'time', tickets[0], tickets[1], tickets[2], tickets[3],
                tickets[4]
            ]]
        except Exception as e:
            log.warning(e)
            log.warning("变桨跳过函数55")
            self.send_message({"message": {"function": 54, "result": -1}})
            return

        df = df[(df[tickets[2]] != -40) & (df[tickets[3]] != -40) &
                (df[tickets[4]] != -40)]
        if df.empty:
            log.info("正常")
            self.send_message({"message": {"function": 54, "result": 1}})

        else:
            df = df[(df[tickets[2]] < -5) | (df[tickets[2]] > 55) |
                    (df[tickets[3]] < -5) | (df[tickets[3]] > 55) |
                    (df[tickets[4]] < -5) | (df[tickets[4]] > 55)]
            if df.empty:
                log.info("正常")
                self.send_message({"message": {"function": 54, "result": 1}})
            else:
                # ------------------判断连续性
                result = tool.duration_calculation_to_csv(
                    tickets, df, 60,
                    str(gl.now_file).split(r'/')[-1].split('.')[0] +
                    '/桨叶电池箱温度异常.csv')
                if result[0]:
                    log.info("正常")
                    self.send_message(
                        {"message": {
                            "function": 54,
                            "result": 1
                        }})
                else:
                    self.send_message({
                        "message": {
                            "function": 54,
                            "result": 0,
                            "details": result[1]
                        }
                    })
Ejemplo n.º 9
0
    def sensor_yaw_driver_cabinet_temperature(self):
        """
        变频器1温度 至 变频器17温度中 的最大值≠0 且 >60℃,持续10min
        """
        try:
            # 获取 1 时间   8-24变频器1-17温度
            tickets = [
                self.tickets[0], self.tickets[8], self.tickets[9],
                self.tickets[10], self.tickets[11], self.tickets[12],
                self.tickets[13], self.tickets[14], self.tickets[15],
                self.tickets[16], self.tickets[17], self.tickets[18],
                self.tickets[19], self.tickets[20], self.tickets[21],
                self.tickets[22], self.tickets[23], self.tickets[24]
            ]
            df = self.df[[
                'time', tickets[0], tickets[1], tickets[2], tickets[3],
                tickets[4], tickets[5], tickets[6], tickets[7], tickets[8],
                tickets[9], tickets[10], tickets[11], tickets[12], tickets[13],
                tickets[14], tickets[15], tickets[16], tickets[17]
            ]]

        except Exception as e:
            log.warning(e)
            log.info("跳过函数82")
            self.send_message({"message": {"function": 81, "result": -1}})
            return

        df['maxvalue'] = df.loc[:, [
            tickets[1], tickets[2], tickets[3], tickets[4], tickets[5],
            tickets[6], tickets[7], tickets[8], tickets[9], tickets[10],
            tickets[11], tickets[12], tickets[13], tickets[14], tickets[15],
            tickets[16], tickets[17]
        ]].max(axis=1, skipna=True)
        df = df[(df['maxvalue'] > 60) & (df['maxvalue'] != 0)]
        if df.empty:
            log.info("正常")
            self.send_message({"message": {"function": 81, "result": 1}})
        else:
            # ------------------判断连续性
            result = tool.duration_calculation_to_csv(
                tickets, df, 600,
                str(gl.now_file).split(r'/')[-1].split('.')[0] +
                '/偏航驱动柜温度异常.csv')
            if result[0]:
                log.info("正常")
                self.send_message({"message": {"function": 81, "result": 1}})
            else:
                self.send_message({
                    "message": {
                        "function": 81,
                        "result": 0,
                        "details": result[1]
                    }
                })
Ejemplo n.º 10
0
    def sensor_nacelle_signal_cabinet_temperature(self):
        """
        11≤ 机组运行模式 ≤14,机舱信号柜温度 >45°,且机舱温度 <40°,且异常持续时间超过5min
        """
        try:
            # 获取 0时间  1机组运行模式  7机舱低压柜温度  6机舱温度
            tickets = [
                self.tickets[0], self.tickets[1], self.tickets[7],
                self.tickets[6]
            ]
            df = self.df[[
                'time', tickets[0], tickets[1], tickets[2], tickets[3]
            ]]
        except Exception as e:
            log.warning(e)
            log.info("跳过函数6")
            self.send_message({"message": {"function": 79, "result": -1}})
            return

        df = df.drop(df[((df[tickets[1]] > 14) | (df[tickets[1]] < 11))].index)
        if df.empty:
            log.info("正常")
            self.send_message({"message": {"function": 79, "result": 1}})
        else:
            df = df[(df[tickets[2]] > 45) & (df[tickets[3]] < 40)]
            if df.empty:
                log.info("正常")
                self.send_message({"message": {"function": 79, "result": 1}})
            else:
                # ------------------判断连续性
                result = tool.duration_calculation_to_csv(
                    tickets, df, 300,
                    str(gl.now_file).split(r'/')[-1].split('.')[0] +
                    '/机舱信号柜温度异常.csv')
                if result[0]:
                    log.info("正常")
                    self.send_message(
                        {"message": {
                            "function": 79,
                            "result": 1
                        }})
                else:
                    self.send_message({
                        "message": {
                            "function": 79,
                            "result": 0,
                            "details": result[1]
                        }
                    })
Ejemplo n.º 11
0
    def pitch_rotor_speed(self):
        """
        11≤ 机组运行模式 ≤14,叶轮转速1 和 叶轮转速2 都≥12.8rpm,持续 5s
        """
        try:
            # 获取  0时间  1机组运行模式  11叶轮速度1  12叶轮速度2
            tickets = [
                self.tickets[0], self.tickets[1], self.tickets[11],
                self.tickets[12]
            ]
            df = self.df[[
                'time', tickets[0], tickets[1], tickets[2], tickets[3]
            ]]
        except Exception as e:
            log.warning(e)
            log.warning("变桨跳过函数50")
            self.send_message({"message": {"function": 49, "result": -1}})
            return

        df = df.drop(df[((df[tickets[1]] > 14) | (df[tickets[1]] < 11))].index)
        if df.empty:
            log.info("正常")
            self.send_message({"message": {"function": 49, "result": 1}})
        else:
            df = df[(df[tickets[2]] >= 12.8) & (df[tickets[3]] >= 12.8)]
            if df.empty:
                log.info("正常")
                self.send_message({"message": {"function": 49, "result": 1}})
            else:
                # ------------------判断连续性
                result = tool.duration_calculation_to_csv(
                    tickets, df, 5,
                    str(gl.now_file).split(r'/')[-1].split('.')[0] +
                    '/叶轮转速超速.csv')
                if result[0]:
                    log.info("正常")
                    self.send_message(
                        {"message": {
                            "function": 49,
                            "result": 1
                        }})
                else:
                    self.send_message({
                        "message": {
                            "function": 49,
                            "result": 0,
                            "details": result[1]
                        }
                    })
Ejemplo n.º 12
0
    def hydraulic_stop(self):
        """
        机组运行模式=14,机组未偏航期间(偏航CW和偏航CCW都为0),液压泵未启动时,
        液压系统压力值的瞬时值与上一秒瞬时值差值的绝对值≥0.1bar,持续1min
        """
        try:
            # 获取 0时间  1机组运行模式  2液压系统压力  3液压泵1开  4液压泵2开  5顺时针偏航  6逆时针偏航
            tickets = [self.tickets[0], self.tickets[1], self.tickets[2], self.tickets[3],
                       self.tickets[4], self.tickets[5], self.tickets[6]]
            df = self.df[['time', tickets[0], tickets[1], tickets[2], tickets[3],
                          tickets[4], tickets[5], tickets[6]]]
        except Exception as e:
            log.warning(e)
            log.warning("液压跳过函数65")
            self.send_message({"message": {"function": 64, "result": -1}})
            return

        df = df[(df[tickets[1]] == 14) & (df[tickets[3]] == 0) & (df[tickets[4]] == 0)]
        if df.empty:
            log.info("正常")
            self.send_message({"message": {"function": 64, "result": 1}})
        else:
            df = df[(df[tickets[5]] == 0) & (df[tickets[6]] == 0)]
            if df.empty:
                log.info("正常")
                self.send_message({"message": {"function": 64, "result": 1}})
            else:
                # 液压系统压力值的瞬时值与上一秒瞬时值差值的绝对值≥0.1bar, 持续1min
                # df['shift'] = df[tickets[2]].shift(1)
                df['diff'] = df[tickets[2]].diff(1).abs()
                # df = df[(df['shift'] >= 0.1)]
                df = df[(df['diff'] >= 0.1)]
                if df.empty:
                    log.info("正常")
                    self.send_message({"message": {"function": 64, "result": 1}})
                else:
                    # ------------------判断连续性
                    result = tool.duration_calculation_to_csv(tickets,
                                                              df,
                                                              60,
                                                              str(gl.now_file).split(r'/')[-1].split('.')[0] +
                                                              '/液压泵频繁启停异常.csv')
                    if result[0]:
                        log.info("正常")
                        self.send_message({"message": {"function": 64, "result": 1}})
                    else:
                        self.send_message({"message": {"function": 64, "result": 0, "details": result[1]}})
Ejemplo n.º 13
0
    def generator_inRecycle_temperature_difference(self):
        """
        机组运行模式 = 14, 发电机绕组温度(任选一个) > 90℃,
        发电机内冷入口温度1 - 发电机内冷出口温度1 ≤ 10 或 发电机内冷入口温度2 - 发电机内冷出口温度2 ≤ 10 ,持续时间10min
        """
        try:
            # 获取  0时间  1机组运行模式  2-7发电机绕组温度(1-6)
            # 11发电机空空冷内循环入口温度1  12发电机空空冷内循环入口温度2  13发电机空空冷内循环出口温度1  14发电机空空冷内循环出口温度2英文标签
            tickets = [self.tickets[0], self.tickets[1], self.tickets[2], self.tickets[3], self.tickets[4],
                       self.tickets[5], self.tickets[6], self.tickets[7], self.tickets[11], self.tickets[12],
                       self.tickets[13], self.tickets[14]]
            df = self.df[['time', tickets[0], tickets[1], tickets[2], tickets[3], tickets[4], tickets[5],
                          tickets[6], tickets[7], tickets[8], tickets[9], tickets[10], tickets[11]]]
        except Exception as e:
            log.warning(e)
            log.warning("发电机跳过函数47")
            self.send_message({"message": {"function": 46, "result": -1}})
            return

        df = df.drop(df[(df[tickets[1]] != 14)].index)
        if df.empty:
            log.info("正常")
            self.send_message({"message": {"function": 46, "result": 1}})
        else:
            df = df[(df[tickets[2]] > 90) | (df[tickets[3]] > 90) | (df[tickets[4]] > 90) | (
                    df[tickets[5]] > 90) | (df[tickets[6]] > 90) | (df[tickets[7]] > 90)]
            if df.empty:
                log.info("正常")
                self.send_message({"message": {"function": 46, "result": 1}})
            else:
                df = df[(df[tickets[8]] - df[tickets[10]] <= 10) | (df[tickets[9]] - df[tickets[11]] <= 10)]
                if df.empty:
                    log.info("正常")
                    self.send_message({"message": {"function": 46, "result": 1}})
                else:
                    # ------------------判断连续性
                    result = tool.duration_calculation_to_csv(tickets,
                                                              df,
                                                              600,
                                                              str(gl.now_file).split(r'/')[-1].split('.')[0] +
                                                              '/发电机内冷温差异常.csv')
                    if result[0]:
                        log.info("正常")
                        self.send_message({"message": {"function": 46, "result": 1}})
                    else:
                        self.send_message({"message": {"function": 46, "result": 0, "details": result[1]}})
Ejemplo n.º 14
0
    def converter_igbt2_temperature(self):
        """
        变频器从机IGBT温度 ≠ 0 且  >60℃ 或 <-10℃
        """
        try:
            # 获取  0时间  3变频器从机igbt温度
            tickets = [self.tickets[0], self.tickets[3]]
            df = self.df[['time', tickets[0], tickets[1]]]
        except Exception as e:
            log.warning(e)
            log.warning("变频器跳过函数58")
            self.send_message({"message": {"function": 57, "result": -1}})
            return

        df = df.drop(df[(df[tickets[1]] == 0)].index)
        if df.empty:
            log.info("正常")
            self.send_message({"message": {"function": 57, "result": 1}})

        else:
            df = df[(df[tickets[1]] < -10) | (df[tickets[1]] > 60)]
            if df.empty:
                log.info("正常")
                self.send_message({"message": {"function": 57, "result": 1}})
            else:
                # ------------------判断连续性
                result = tool.duration_calculation_to_csv(
                    tickets, df, 1,
                    str(gl.now_file).split(r'/')[-1].split('.')[0] +
                    '/变频器从机IGBT温度异常.csv')
                if result[0]:
                    log.info("正常")
                    self.send_message(
                        {"message": {
                            "function": 57,
                            "result": 1
                        }})
                else:
                    self.send_message({
                        "message": {
                            "function": 57,
                            "result": 0,
                            "details": result[1]
                        }
                    })
Ejemplo n.º 15
0
    def generator_outRecycle_temperature_difference(self):
        """
        机组运行模式 = 14, 发电机内冷入口温度1 和 发电机内冷入口温度2都 > 60℃
        发电机外冷出口温度1 - 发电机外冷入口温度1 ≤ 5 或 发电机外冷出口温度2 - 发电机外冷入口温度2 ≤ 10 ,持续时间10min
        """
        try:
            # 获取  0时间  1机组运行模式  11发电机空空冷内循环入口温度1  12发电机空空冷内循环入口温度2
            # 15发电机空空冷外循环入口温度1  16发电机空空冷外循环入口温度2  17发电机空空冷外循环出口温度1  18发电机空空冷外循环出口温度2英文标签
            tickets = [self.tickets[0], self.tickets[1], self.tickets[11], self.tickets[12],
                       self.tickets[15], self.tickets[16], self.tickets[17], self.tickets[18]]
            df = self.df[['time', tickets[0], tickets[1], tickets[2], tickets[3], tickets[4],
                          tickets[5], tickets[6], tickets[7]]]
        except Exception as e:
            log.warning(e)
            log.warning("发电机跳过函数48")
            self.send_message({"message": {"function": 47, "result": -1}})
            return

        df = df.drop(df[(df[tickets[1]] != 14)].index)
        if df.empty:
            log.info("正常")
            self.send_message({"message": {"function": 47, "result": 1}})
        else:
            df = df[(df[tickets[2]] > 60) & (df[tickets[3]] > 60)]
            if df.empty:
                log.info("正常")
                self.send_message({"message": {"function": 47, "result": 1}})
            else:
                df = df[(df[tickets[6]] - df[tickets[4]] <= 5) | (df[tickets[7]] - df[tickets[5]] <= 10)]
                if df.empty:
                    log.info("正常")
                    self.send_message({"message": {"function": 47, "result": 1}})
                else:
                    # ------------------判断连续性
                    result = tool.duration_calculation_to_csv(tickets,
                                                              df,
                                                              600,
                                                              str(gl.now_file).split(r'/')[-1].split('.')[0] +
                                                              '/发电机外冷温差异常.csv')
                    if result[0]:
                        log.info("正常")
                        self.send_message({"message": {"function": 47, "result": 1}})
                    else:
                        self.send_message({"message": {"function": 47, "result": 0, "details": result[1]}})
Ejemplo n.º 16
0
    def sensor_nacelle_signal_cabinet_heart(self):
        """
        11≤ 机组运行模式 ≤14,机舱信号柜温度 < 5℃,持续3min
        """
        try:
            # 获取 0时间  1机组运行模式  7机舱低压柜温度
            tickets = [self.tickets[0], self.tickets[1], self.tickets[7]]
            df = self.df[['time', tickets[0], tickets[1], tickets[2]]]
        except Exception as e:
            log.warning(e)
            log.info("跳过函数81")
            self.send_message({"message": {"function": 80, "result": -1}})
            return

        df = df.drop(df[((df[tickets[1]] > 14) | (df[tickets[1]] < 11))].index)
        if df.empty:
            log.info("正常")
            self.send_message({"message": {"function": 80, "result": 1}})
        else:
            df = df.drop(df[(df[tickets[2]] >= 5)].index)
            if df.empty:
                log.info("正常")
                self.send_message({"message": {"function": 80, "result": 1}})
            else:
                # ------------------判断连续性
                result = tool.duration_calculation_to_csv(
                    tickets, df, 180,
                    str(gl.now_file).split(r'/')[-1].split('.')[0] +
                    '/机舱信号柜加热器异常.csv')
                if result[0]:
                    log.info("正常")
                    self.send_message(
                        {"message": {
                            "function": 80,
                            "result": 1
                        }})
                else:
                    self.send_message({
                        "message": {
                            "function": 80,
                            "result": 0,
                            "details": result[1]
                        }
                    })
Ejemplo n.º 17
0
    def sensor_tower_base_transformer_temperature(self):
        """
        塔基变压器温度≠0时,塔基变压器温度>80℃或者<10℃,持续1min
        """
        try:
            # 获取  0时间  2塔基变压器温度
            tickets = [self.tickets[0], self.tickets[2]]
            df = self.df[['time', tickets[0], tickets[1]]]
        except Exception as e:
            log.warning(e)
            log.warning("传感器跳过函数75")
            self.send_message({"message": {"function": 74, "result": -1}})
            return

        df = df.drop(df[(df[tickets[1]] == 0)].index)
        if df.empty:
            log.info("正常")
            self.send_message({"message": {"function": 74, "result": 1}})
        else:
            df = df[(df[tickets[1]] > 80) | (df[tickets[1]] < 10)]
            if df.empty:
                log.info("正常")
                self.send_message({"message": {"function": 74, "result": 1}})
            else:
                # ------------------判断连续性
                result = tool.duration_calculation_to_csv(
                    tickets, df, 60,
                    str(gl.now_file).split(r'/')[-1].split('.')[0] +
                    '/塔基变压器温度异常.csv')
                if result[0]:
                    log.info("正常")
                    self.send_message(
                        {"message": {
                            "function": 74,
                            "result": 1
                        }})
                else:
                    self.send_message({
                        "message": {
                            "function": 74,
                            "result": 0,
                            "details": result[1]
                        }
                    })
Ejemplo n.º 18
0
    def hydraulic_oil_temperature(self):
        """
        12≤机组运行模式≤14,液压泵主泵处油温和液压回油口油温≠0,两者最小值<20℃,最大值>60℃,持续1min
        """
        try:
            # 获取  0时间  1机组运行模式  12液压主泵处油温  14液压回油口油温
            tickets = [self.tickets[0], self.tickets[1], self.tickets[12], self.tickets[14]]
            df = self.df[['time', tickets[0], tickets[1], tickets[2], tickets[3]]]
        except Exception as e:
            log.warning(e)
            log.warning("液压跳过函数68")
            self.send_message({"message": {"function": 67, "result": -1}})
            return

        df = df.drop(df[((df[tickets[1]] > 14) | (df[tickets[1]] < 12))].index)
        if df.empty:
            log.info("正常")
            self.send_message({"message": {"function": 67, "result": 1}})
        else:
            df = df[(df[tickets[2]] != 0) & (df[tickets[3]] != 0)]
            if df.empty:
                log.info("正常")
                self.send_message({"message": {"function": 67, "result": 1}})
            else:
                # 判断两者最小值<20℃,最大值>60℃
                df['min'] = df.loc[:, [tickets[2], tickets[3]]].min(axis=1, skipna=True)
                df['max'] = df.loc[:, [tickets[2], tickets[3]]].max(axis=1, skipna=True)
                df = df[(df['min'] < 20) & (df['max'] > 60)]
                if df.empty:
                    log.info("正常")
                    self.send_message({"message": {"function": 67, "result": 1}})
                else:
                    # ------------------判断连续性 持续1min
                    result = tool.duration_calculation_to_csv(tickets,
                                                              df,
                                                              60,
                                                              str(gl.now_file).split(r'/')[-1].split('.')[0] +
                                                              '/液压系统油温异常.csv')
                    if result[0]:
                        log.info("正常")
                        self.send_message({"message": {"function": 67, "result": 1}})
                    else:
                        self.send_message({"message": {"function": 67, "result": 0, "details": result[1]}})
Ejemplo n.º 19
0
    def yaw_brake_pressure(self):
        """
        机组运行模式=14,机组不偏航时(偏航CW和偏航CCW都为0),
        液压偏航制动入口压力1、液压偏航制动出口压力1、液压偏航制动入口压力2、液压偏航制动出口压力2最小值< 150bar或最大值>175bar,持续20s
        """
        try:
            # 获取 0时间  1机组运行模式  5顺时针偏航  6逆时针偏航  7偏航制动出口压力1  9偏航制动入口压力1
            # 8偏航制动出口压力2  10偏航制动入口压力2
            tickets = [self.tickets[0], self.tickets[1], self.tickets[5], self.tickets[6],
                       self.tickets[7], self.tickets[9], self.tickets[8], self.tickets[10]]
            df = self.df[['time', tickets[0], tickets[1], tickets[2], tickets[3],
                          tickets[4], tickets[5], tickets[6], tickets[7]]]
        except Exception as e:
            log.warning(e)
            log.warning("液压跳过函数72")
            self.send_message({"message": {"function": 71, "result": -1}})
            return

        df = df[(df[tickets[1]] == 14) & ((df[tickets[2]] == 0) & (df[tickets[3]] == 0))]
        if df.empty:
            log.info("正常")
            self.send_message({"message": {"function": 71, "result": 1}})
        else:
            # 获取4个的最大最小值
            df['max'] = df.loc[:, [tickets[4], tickets[5], tickets[6], tickets[7]]].max(axis=1, skipna=True)
            df['min'] = df.loc[:, [tickets[4], tickets[5], tickets[6], tickets[7]]].min(axis=1, skipna=True)
            df = df[((df['min'] < 150) | (df['max'] > 175))]
            if df.empty:
                log.info("正常")
                self.send_message({"message": {"function": 71, "result": 1}})
            else:
                # ------------------判断连续性 20s
                result = tool.duration_calculation_to_csv(tickets,
                                                          df,
                                                          20,
                                                          str(gl.now_file).split(r'/')[-1].split('.')[0] +
                                                          '/偏航压力异常.csv')
                if result[0]:
                    log.info("正常")
                    self.send_message({"message": {"function": 71, "result": 1}})
                else:
                    self.send_message({"message": {"function": 71, "result": 0, "details": result[1]}})
Ejemplo n.º 20
0
    def generator_winding_temperature(self):
        """
        机组运行模式 = 14,发电机绕组温度(1-6) > 105℃,持续10min
        """
        try:
            # 获取  1时间  2机组运行模式  2-7发电机绕组温度(1-6)
            tickets = [self.tickets[0], self.tickets[1], self.tickets[2], self.tickets[3], self.tickets[4],
                       self.tickets[5], self.tickets[6], self.tickets[7]]
            df = self.df[['time', tickets[0], tickets[1], tickets[2], tickets[3], tickets[4], tickets[5],
                          tickets[6], tickets[7]]]
        except Exception as e:
            log.warning(e)
            log.warning("发电机跳过函数37")
            self.send_message({"message": {"function": 36, "result": -1}})
            return

        df = df.drop(df[(df[tickets[1]] != 14)].index)
        if df.empty:
            log.info("正常")
            self.send_message({"message": {"function": 36, "result": 1}})
        else:
            df = df[(df[tickets[2]] > 105) | (df[tickets[3]] > 105) | (df[tickets[4]] > 105) | (
                    df[tickets[5]] > 105) | (df[tickets[6]] > 105) | (df[tickets[7]] > 105)]
            if df.empty:
                log.info("正常")
                self.send_message({"message": {"function": 36, "result": 1}})
            else:
                # ------------------判断连续性
                result = tool.duration_calculation_to_csv(tickets,
                                                          df,
                                                          600,
                                                          str(gl.now_file).split(r'/')[-1].split('.')[0] +
                                                          '/发电机绕组温度高.csv')
                if result[0]:
                    log.info("正常")
                    self.send_message({"message": {"function": 36, "result": 1}})
                else:
                    self.send_message({"message": {"function": 36, "result": 0, "details": result[1]}})
Ejemplo n.º 21
0
    def hydraulic_rotor_lock_pressure(self):
        """
        液压系统压力 > 150时,液压叶轮锁定压力1 和 液压叶轮锁定压力2 >120bar 或 <80bar,持续1min
        """
        try:
            # 获取 0时间  2液压系统压力  15叶轮锁定压力1  16叶轮锁定压力2
            tickets = [self.tickets[0], self.tickets[2], self.tickets[15], self.tickets[16]]
            df = self.df[['time', tickets[0], tickets[1], tickets[2], tickets[3]]]
        except Exception as e:
            log.warning(e)
            log.warning("液压跳过函数70")
            self.send_message({"message": {"function": 69, "result": -1}})
            return

        df = df.drop(df[(df[tickets[1]] <= 150)].index)
        if df.empty:
            log.info("正常")
            self.send_message({"message": {"function": 69, "result": 1}})
        else:
            df = df[((df[tickets[2]] > 120) | (df[tickets[2]] < 80)) & (
                    (df[tickets[3]] > 120) & (df[tickets[3]] < 80))]
            if df.empty:
                log.info("正常")
                self.send_message({"message": {"function": 69, "result": 1}})
            else:
                # ------------------判断连续性
                result = tool.duration_calculation_to_csv(tickets,
                                                          df,
                                                          60,
                                                          str(gl.now_file).split(r'/')[-1].split('.')[0] +
                                                          '/液压叶轮锁定压力异常.csv')
                if result[0]:
                    log.info("正常")
                    self.send_message({"message": {"function": 69, "result": 1}})
                else:
                    self.send_message({"message": {"function": 69, "result": 0, "details": result[1]}})
Ejemplo n.º 22
0
    def generator_nacelle_bearing_temperature(self):
        """
        12 ≤ 机组运行模式 ≤ 14,发电机机舱侧轴承温度 > 83℃,持续10min
        """
        try:
            # 获取  0时间  1机组模式  9发电机机舱侧轴承温度
            tickets = [self.tickets[0], self.tickets[1], self.tickets[9]]
            df = self.df[['time', tickets[0], tickets[1], tickets[2]]]
        except Exception as e:
            log.warning(e)
            log.warning("发电机跳过函数39")
            self.send_message({"message": {"function": 38, "result": -1}})
            return

        df = df.drop(df[(df[tickets[1]] > 14) | (df[tickets[1]] < 12)].index)
        if df.empty:
            log.info("正常")
            self.send_message({"message": {"function": 38, "result": 1}})
        else:
            # 删除温度<=83
            df = df.drop(df[(df[tickets[2]] <= 83)].index)
            if df.empty:
                log.info("正常")
                self.send_message({"message": {"function": 38, "result": 1}})
            else:
                # ------------------判断连续性
                result = tool.duration_calculation_to_csv(tickets,
                                                          df,
                                                          600,
                                                          str(gl.now_file).split(r'/')[-1].split('.')[0] +
                                                          '/发电机机舱侧轴承温度高.csv')
                if result[0]:
                    log.info("正常")
                    self.send_message({"message": {"function": 38, "result": 1}})
                else:
                    self.send_message({"message": {"function": 38, "result": 0, "details": result[1]}})
Ejemplo n.º 23
0
    def generator_bearing_temperature_sensor(self):
        """
        变流器功率 > 4500KW,发电机机舱侧轴承温度 - 发电机齿轮箱侧轴承温度 < 5℃,持续10min
        """
        try:
            # 获取  0时间  10变流器功率   9发电机机舱侧轴承温度   8发电机齿轮箱侧轴承温度
            tickets = [self.tickets[0], self.tickets[10], self.tickets[9], self.tickets[8]]
            df = self.df[['time', tickets[0], tickets[1], tickets[2], tickets[3]]]
        except Exception as e:
            log.warning(e)
            log.warning("发电机跳过函数40")
            self.send_message({"message": {"function": 39, "result": -1}})
            return

        df = df.drop(df[(df[tickets[1]] <= 4500)].index)
        if df.empty:
            log.info("正常")
            self.send_message({"message": {"function": 39, "result": 1}})
        else:
            # 删除 2-3 >= 5
            df = df.drop(df[(df[tickets[2]] - df[tickets[3]] >= 5)].index)
            if df.empty:
                log.info("正常")
                self.send_message({"message": {"function": 39, "result": 1}})
            else:
                # ------------------判断连续性
                result = tool.duration_calculation_to_csv(tickets,
                                                          df,
                                                          600,
                                                          str(gl.now_file).split(r'/')[-1].split('.')[0] +
                                                          '/发电机轴承温度传感器异常.csv')
                if result[0]:
                    log.info("正常")
                    self.send_message({"message": {"function": 39, "result": 1}})
                else:
                    self.send_message({"message": {"function": 39, "result": 0, "details": result[1]}})
Ejemplo n.º 24
0
    def generator_outRecycle_outlet_temperature_sensor(self):
        """
        机组运行模式 = 14,发电机外冷出口温度1 和 发电机外冷出口温度2的 温差绝对值 > 5℃,持续时间1min"
        """
        try:
            # 获取  0时间  1机组运行模式   17发电机空空冷外循环出口温度1   18发电机空空冷外循环出口温度2
            tickets = [self.tickets[0], self.tickets[1], self.tickets[17], self.tickets[18]]
            df = self.df[['time', tickets[0], tickets[1], tickets[2], tickets[3]]]
        except Exception as e:
            log.warning(e)
            log.warning("发电机跳过函数44")
            self.send_message({"message": {"function": 43, "result": -1}})
            return

        df = df.drop(df[(df[tickets[1]] != 14)].index)
        if df.empty:
            log.info("正常")
            self.send_message({"message": {"function": 43, "result": 1}})
        else:
            # 删除 (2-3).abs() <= 5
            df = df.drop(df[((df[tickets[2]] - df[tickets[3]]).abs() <= 5)].index)
            if df.empty:
                log.info("正常")
                self.send_message({"message": {"function": 43, "result": 1}})
            else:
                # ------------------判断连续性
                result = tool.duration_calculation_to_csv(tickets,
                                                          df,
                                                          60,
                                                          str(gl.now_file).split(r'/')[-1].split('.')[0] +
                                                          '/发电机外冷出口温度传感器异常.csv')
                if result[0]:
                    log.info("正常")
                    self.send_message({"message": {"function": 43, "result": 1}})
                else:
                    self.send_message({"message": {"function": 43, "result": 0, "details": result[1]}})
Ejemplo n.º 25
0
    def hydraulic_rotor_lock_actived_accumlator_pressure(self):
        """
        1.液压系统压力>150时,叶轮锁定储能罐压力1和叶轮锁定储能罐压力2>120bar或<70bar,持续1min
        2.液压叶轮锁定压力1 < 50bar且≠0时,叶轮锁定储能罐压力1 < 70bar
        3.液压叶轮锁定压力2 < 50bar且≠0时,叶轮锁定储能罐压力2 < 70bar
        满足其一,报出叶轮锁定储能罐压力异常
        """
        try:
            # 获取 0时间  2液压系统压力  15叶轮锁定压力1  16叶轮锁定压力2  17叶轮锁蓄能器压力1  18叶轮锁蓄能器压力2
            tickets = [self.tickets[0], self.tickets[2], self.tickets[15], self.tickets[16], self.tickets[17],
                       self.tickets[18]]
            df = self.df[['time', tickets[0], tickets[1], tickets[2], tickets[3], tickets[4], tickets[5]]]
        except Exception as e:
            log.warning(e)
            log.warning("液压跳过函数71")
            self.send_message({"message": {"function": 70, "result": -1}})
            return

        # 情况1 1>150 & (4>120 | 4<70) & (5>120 | 5<70)
        df_h = df[((df[tickets[1]] > 150) & ((df[tickets[4]] > 120) | (df[tickets[4]] < 70)) & (
                (df[tickets[5]] > 120) | (df[tickets[5]] < 70)))].copy()
        # 情况2 2<50 & 2!=0 & 4<70
        df_l = df[((df[tickets[2]] < 50) & (df[tickets[2]] != 0) & (df[tickets[4]] < 70))].copy()
        # 情况3 3<50 & 3!=0 & 5<70
        df_e = df[((df[tickets[3]] < 50) & (df[tickets[3]] != 0) & (df[tickets[5]] < 70))].copy()
        # 判断是否未空
        if df_h.empty and df_l.empty and df_e.empty:
            log.info("正常")
            self.send_message({"message": {"function": 70, "result": 1}})
        else:
            # ------------------判断连续性
            flag = False
            if not df_h.empty:
                result = tool.duration_calculation_to_csv(tickets,
                                                          df_h,
                                                          60,
                                                          str(gl.now_file).split(r'/')[-1].split('.')[0] +
                                                          '/叶轮锁定储能罐压力异常1.csv')
                if result[0]:
                    flag = True
                    log.info("正常")
                    self.send_message({"message": {"function": 70, "result": 1}})
                else:
                    flag = False
                    self.send_message({"message": {"function": 70, "result": 0, "details": result[1]}})
            else:
                flag = True
            if not df_l.empty:
                result = tool.duration_calculation_to_csv(tickets,
                                                          df_l,
                                                          1,
                                                          str(gl.now_file).split(r'/')[-1].split('.')[0] +
                                                          '/叶轮锁定储能罐压力异常2.csv')
                if result[0]:
                    if flag:
                        log.info("正常")
                        self.send_message({"message": {"function": 70, "result": 1}})
                        flag = True
                else:
                    flag = False
                    self.send_message({"message": {"function": 70, "result": 0, "details": result[1]}})
            else:
                flag = True
            if not df_e.empty:
                result = tool.duration_calculation_to_csv(tickets,
                                                          df_e,
                                                          1,
                                                          str(gl.now_file).split(r'/')[-1].split('.')[0] +
                                                          '/叶轮锁定储能罐压力异常3.csv')
                if result[0]:
                    if flag:
                        log.info("正常")
                        self.send_message({"message": {"function": 70, "result": 1}})
                else:
                    self.send_message({"message": {"function": 70, "result": 0, "details": result[1]}})
Ejemplo n.º 26
0
    def generator_winding_PT100(self):
        """
        1≤机组运行模式≤14,6个发电机绕组中任意两个变量值差值的绝对值>10,且持续10min
        """
        log.info("发动机正在处理")
        try:
            # 获取  0时间  1机组模式  2-7发电机绕组温度1-6
            tickets = [self.tickets[0], self.tickets[1], self.tickets[2], self.tickets[3], self.tickets[4],
                       self.tickets[5], self.tickets[6], self.tickets[7]]
            df = self.df[['time', tickets[0], tickets[1], tickets[2], tickets[3],
                          tickets[4], tickets[5], tickets[6], tickets[7]]]
        except Exception as e:
            log.warning(e)
            log.warning("发电机跳过函数36")
            self.send_message({"message": {"function": 35, "result": -1}})
            return

        df = df.drop(df[(df[tickets[1]] > 14) | (df[tickets[1]] < 1)].index)
        if df.empty:
            log.info("正常")
            self.send_message({"message": {"function": 35, "result": 1}})
        else:
            # 6个发电机绕组中任意两个变量值差值的绝对值>10,且持续10min
            """
            1-2 1-3 1-4 1-5 1-6
            2-3 2-4 2-5 2-6
            3-4 -3-5 -3-6
            4-5 4-6
            5-6
            做差
            """
            # df = df.drop(df[(df[tickets[1]] != 14)].index)
            df['绕组1-绕组2'] = (df[tickets[2]] - df[tickets[3]]).abs()
            df['绕组1-绕组3'] = (df[tickets[2]] - df[tickets[4]]).abs()
            df['绕组1-绕组4'] = (df[tickets[2]] - df[tickets[5]]).abs()
            df['绕组1-绕组5'] = (df[tickets[2]] - df[tickets[6]]).abs()
            df['绕组1-绕组6'] = (df[tickets[2]] - df[tickets[7]]).abs()
            df['绕组2-绕组3'] = (df[tickets[3]] - df[tickets[4]]).abs()
            df['绕组2-绕组4'] = (df[tickets[3]] - df[tickets[5]]).abs()
            df['绕组2-绕组5'] = (df[tickets[3]] - df[tickets[6]]).abs()
            df['绕组2-绕组6'] = (df[tickets[3]] - df[tickets[7]]).abs()
            df['绕组3-绕组4'] = (df[tickets[4]] - df[tickets[5]]).abs()
            df['绕组3-绕组5'] = (df[tickets[4]] - df[tickets[6]]).abs()
            df['绕组3-绕组6'] = (df[tickets[4]] - df[tickets[7]]).abs()
            df['绕组4-绕组5'] = (df[tickets[5]] - df[tickets[6]]).abs()
            df['绕组4-绕组6'] = (df[tickets[5]] - df[tickets[7]]).abs()
            df['绕组5-绕组6'] = (df[tickets[6]] - df[tickets[7]]).abs()
            df = df[(df["绕组1-绕组2"] > 10) |
                    (df["绕组1-绕组3"] > 10) |
                    (df["绕组1-绕组4"] > 10) |
                    (df["绕组1-绕组5"] > 10) |
                    (df["绕组1-绕组6"] > 10) |
                    (df["绕组2-绕组3"] > 10) |
                    (df["绕组2-绕组4"] > 10) |
                    (df["绕组2-绕组5"] > 10) |
                    (df["绕组2-绕组6"] > 10) |
                    (df["绕组3-绕组4"] > 10) |
                    (df["绕组3-绕组5"] > 10) |
                    (df["绕组3-绕组6"] > 10) |
                    (df["绕组4-绕组5"] > 10) |
                    (df["绕组4-绕组6"] > 10) |
                    (df["绕组5-绕组6"] > 10)
                    ]
            if df.empty:
                log.info("正常")
                self.send_message({"message": {"function": 35, "result": 1}})
            else:
                # ------------------判断连续性 持续10min
                result = tool.duration_calculation_to_csv(tickets,
                                                          df,
                                                          600,
                                                          str(gl.now_file).split(r'/')[-1].split('.')[0] +
                                                          '/发电机绕组PT100温度异常.csv')
                if result[0]:
                    log.info("正常")
                    self.send_message({"message": {"function": 35, "result": 1}})
                else:
                    self.send_message({"message": {"function": 35, "result": 0, "details": result[1]}})
Ejemplo n.º 27
0
    def converter2_water_temperature(self):
        """
        1、变频器从机冷却液温度 > 45℃ 且 变频器从机外循环风扇运行 = 1,变频器从机循环水泵运行 = 1时,持续10min
        2、任何情况下,变频器从机冷却液温度 > 48℃
        满足其一
        """
        try:
            # 获取 0时间  9变频器从机冷却液温度  10变频器从机风扇运行1  11变频器从机水泵运行
            tickets = [
                self.tickets[0], self.tickets[9], self.tickets[10],
                self.tickets[11]
            ]
            df = self.df[[
                'time', tickets[0], tickets[1], tickets[2], tickets[3]
            ]]
        except Exception as e:
            log.warning(e)
            log.warning("变频器跳过函数61")
            self.send_message({"message": {"function": 60, "result": -1}})
            return

        # 情况1 1>45℃ 且 2=1,3=1时,持续10min
        df_h = df[(df[tickets[1]] > 45) & (df[tickets[2]] == 1) &
                  (df[tickets[3]] == 1)].copy()
        # 情况2 1>48℃
        df_l = df[(df[tickets[1]] > 48)].copy()
        # 判断是否未空
        if df_h.empty and df_l.empty:
            log.info("正常")
            self.send_message({"message": {"function": 60, "result": 1}})
        else:
            # ------------------判断连续性
            flag = False
            if not df_h.empty:
                result = tool.duration_calculation_to_csv(
                    tickets, df_h, 600,
                    str(gl.now_file).split(r'/')[-1].split('.')[0] +
                    '/变频器从机冷却液温度异常1.csv')
                if result[0]:
                    flag = True
                    log.info("正常")
                    self.send_message(
                        {"message": {
                            "function": 60,
                            "result": 1
                        }})
                else:
                    flag = False
                    self.send_message({
                        "message": {
                            "function": 60,
                            "result": 0,
                            "details": result[1]
                        }
                    })
            else:
                flag = True
            if not df_l.empty:
                result = tool.duration_calculation_to_csv(
                    tickets, df_l, 1,
                    str(gl.now_file).split(r'/')[-1].split('.')[0] +
                    '/变频器从机冷却液温度异常2.csv')
                if result[0]:
                    if flag:
                        log.info("正常")
                        self.send_message(
                            {"message": {
                                "function": 60,
                                "result": 1
                            }})
                else:
                    self.send_message({
                        "message": {
                            "function": 60,
                            "result": 0,
                            "details": result[1]
                        }
                    })
Ejemplo n.º 28
0
    def pitch_motor_temperature(self):
        """
        11≤ 机组运行模式 ≤14,单个桨叶电机温度 > 120℃, 或两两温差绝对值≥30℃,持续1min
        """
        try:
            # 获取  0时间   1机组模式   14-16变桨电机温度1-3
            tickets = [
                self.tickets[0], self.tickets[1], self.tickets[14],
                self.tickets[15], self.tickets[16]
            ]
            df = self.df[[
                'time', tickets[0], tickets[1], tickets[2], tickets[3],
                tickets[4]
            ]]
        except Exception as e:
            log.warning(e)
            log.warning("变桨跳过函数51")
            self.send_message({"message": {"function": 50, "result": -1}})
            return

        df = df.drop(df[(df[tickets[1]] > 14) | (df[tickets[1]] < 11)].index)
        if df.empty:
            log.info("正常")
            self.send_message({"message": {"function": 50, "result": 1}})
        else:
            df['桨叶电机1-桨叶电机2'] = (df[tickets[2]] - df[tickets[3]]).abs()
            df['桨叶电机1-桨叶电机3'] = (df[tickets[2]] - df[tickets[4]]).abs()
            df['桨叶电机2-桨叶电机3'] = (df[tickets[3]] - df[tickets[4]]).abs()
            # 情况1 单个桨叶电机温度 > 120℃,1min
            df_h = df[(df[tickets[2]] > 120) | (df[tickets[3]] > 120) |
                      (df[tickets[4]] > 120)].copy()
            # 情况2 两两温差绝对值≥30℃,且持续时间超过1min
            df_l = df[(df['桨叶电机1-桨叶电机2'] >= 30) | (df['桨叶电机1-桨叶电机3'] >= 30) |
                      (df['桨叶电机2-桨叶电机3'] >= 30)].copy()

            if df_h.empty and df_l.empty:
                log.info("正常")
                self.send_message({"message": {"function": 50, "result": 1}})
            else:
                # ------------------判断连续性
                flag = False
                if not df_h.empty:
                    result = tool.duration_calculation_to_csv(
                        tickets, df_h, 60,
                        str(gl.now_file).split(r'/')[-1].split('.')[0] +
                        '/桨叶电机温度异常1.csv')
                    if result[0]:
                        flag = True
                        log.info("正常")
                        self.send_message(
                            {"message": {
                                "function": 50,
                                "result": 1
                            }})
                    else:
                        flag = False
                        self.send_message({
                            "message": {
                                "function": 50,
                                "result": 0,
                                "details": result[1]
                            }
                        })
                else:
                    flag = True
                if not df_l.empty:
                    result = tool.duration_calculation_to_csv(
                        tickets, df_l, 60,
                        str(gl.now_file).split(r'/')[-1].split('.')[0] +
                        '/桨叶电机温度异常2.csv')
                    if result[0]:
                        if flag:
                            log.info("正常")
                            self.send_message(
                                {"message": {
                                    "function": 50,
                                    "result": 1
                                }})
                    else:
                        self.send_message({
                            "message": {
                                "function": 50,
                                "result": 0,
                                "details": result[1]
                            }
                        })
Ejemplo n.º 29
0
    def converter2_water_pressure(self):
        """
        1、变频器从机循环水泵运行=1时,变频器从机冷却液压力>5.5bar或<3.5bar,持续10min
        2、变频器从机循环水泵运行=0时,变频器从机冷却液压力>3bar或<1.2bar,持续10min
        满足其一
        """
        try:
            # 获取 0时间  11变频器从机水泵运行  13变频器从机冷却液压力
            tickets = [self.tickets[0], self.tickets[11], self.tickets[13]]
            df = self.df[['time', tickets[0], tickets[1], tickets[2]]]
        except Exception as e:
            log.warning(e)
            log.warning("变频器跳过函数63")
            self.send_message({"message": {"function": 62, "result": -1}})
            return

        # 情况1 1=1时,2>5.5bar或<3.5bar,持续10min
        df_h = df[(df[tickets[1]] == 1)
                  & ((df[tickets[2]] > 5.5) | (df[tickets[2]] < 3.5))].copy()
        # 情况2 1=0时,2>3bar或<1.2bar,持续10min
        df_l = df[(df[tickets[1]] == 0)
                  & ((df[tickets[2]] > 3) | (df[tickets[2]] < 1.2))].copy()
        if df_h.empty and df_l.empty:
            log.info("正常")
            self.send_message({"message": {"function": 62, "result": 1}})
        else:
            # ------------------判断连续性
            flag = False
            if not df_h.empty:
                result = tool.duration_calculation_to_csv(
                    tickets, df_h, 600,
                    str(gl.now_file).split(r'/')[-1].split('.')[0] +
                    '/变频器从机冷却液压力异常1.csv')
                if result[0]:
                    flag = True
                    log.info("正常")
                    self.send_message(
                        {"message": {
                            "function": 62,
                            "result": 1
                        }})
                else:
                    flag = False
                    self.send_message({
                        "message": {
                            "function": 62,
                            "result": 0,
                            "details": result[1]
                        }
                    })
            else:
                flag = True
            if not df_l.empty:
                result = tool.duration_calculation_to_csv(
                    tickets, df_l, 600,
                    str(gl.now_file).split(r'/')[-1].split('.')[0] +
                    '/变频器从机冷却液压力异常2.csv')
                if result[0]:
                    if flag:
                        log.info("正常")
                        self.send_message(
                            {"message": {
                                "function": 62,
                                "result": 1
                            }})
                else:
                    self.send_message({
                        "message": {
                            "function": 62,
                            "result": 0,
                            "details": result[1]
                        }
                    })
Ejemplo n.º 30
0
    def converter_generator_speed(self):
        """
        1、机组运行模式=14,(变流器发电机转速/齿轮箱变比(23.187)-叶轮转速2)>1.5,持续10s;
        2、变流器发电机转速>300rpm
        满足以上其一
        """
        try:
            # 获取  0时间   1机组运行模式  4变流器发电机转速  5叶轮转速2
            tickets = [
                self.tickets[0], self.tickets[1], self.tickets[4],
                self.tickets[5]
            ]
            df = self.df[[
                'time', tickets[0], tickets[1], tickets[2], tickets[3]
            ]]
        except Exception as e:
            log.warning(e)
            log.warning("变频器跳过函数59")
            self.send_message({"message": {"function": 58, "result": -1}})
            return

        # 情况1 1=14,(2/23.187 - 3)>1.5,持续10s
        df_h = df[(df[tickets[1]] == 14)
                  & (df[tickets[2]] / 23.187 - df[tickets[3]] > 1.5)].copy()
        # 情况2 2 > 300rpm
        df_l = df[(df[tickets[2]] > 300)].copy()
        # 判断是否未空
        if df_h.empty and df_l.empty:
            log.info("正常")
            self.send_message({"message": {"function": 58, "result": 1}})
        else:
            # ------------------判断连续性
            flag = False
            if not df_h.empty:
                result = tool.duration_calculation_to_csv(
                    tickets, df_h, 10,
                    str(gl.now_file).split(r'/')[-1].split('.')[0] +
                    '/变流器发电机转速异常1.csv')
                if result[0]:
                    flag = True
                    log.info("正常")
                    self.send_message(
                        {"message": {
                            "function": 58,
                            "result": 1
                        }})
                else:
                    flag = False
                    self.send_message({
                        "message": {
                            "function": 58,
                            "result": 0,
                            "details": result[1]
                        }
                    })
            else:
                flag = True
            if not df_l.empty:
                result = tool.duration_calculation_to_csv(
                    tickets, df_l, 1,
                    str(gl.now_file).split(r'/')[-1].split('.')[0] +
                    '/变流器发电机转速异常2.csv')
                if result[0]:
                    if flag:
                        log.info("正常")
                        self.send_message(
                            {"message": {
                                "function": 58,
                                "result": 1
                            }})
                else:
                    self.send_message({
                        "message": {
                            "function": 58,
                            "result": 0,
                            "details": result[1]
                        }
                    })