def zero_series_loss_in_period(time, voltages: list, *currents): """ 汇流箱在某段时间内的发电量 :param time: 时间(格式:yyyy-MM-DD HH:mm:ss)列表,若等间隔则为一个float类型,单位:秒 :param voltages: 数据库查询time时间列表对应的汇流箱总电压列表[#X光伏子阵汇流箱X汇流总电压] :param currents: 数据库查询time时间列表对应的汇流箱各路电流列表[#X光伏子阵汇流箱X IX] :return: 起始时刻到结束时刻汇流箱的发电量 ----------------------------------------------------- 参数说明如上所述 说明:currents为汇流箱的全部电流列表,一路对应一个参数, 假如有1路,调用则为box_generation_in_period(time, voltages, current1) 假如有3路,调用则为box_generation_in_period(time, voltages, current1, current2, current3) 以此类推,currenti为各路电流列表 触发条件:查询触发 """ theta = 0.01 powers = np.array(voltages) * np.array(currents).sum(axis=0) count_normal = 0 for current in currents: if any(current > theta): count_normal += 1 if count_normal == 0: return 0 return calc_generation_in_period(time, powers) * (len(voltages) / count_normal)
def inverter_generation_in_period(time, powers: list): """ 逆变器在某段时间内的发电量 :param time: 时间(格式:yyyy-MM-DD HH:mm:ss)列表,若等间隔则为一个float类型,单位:秒 :param powers: 数据库查询time时间列表对应的功率列表[#X光伏子阵X#逆变器输出总有功] :return: 开始时刻到结束时刻集电线的总发电量 ----------------------------------------------------- 参数说明如上所述 触发条件:查询触发 """ return calc_generation_in_period(time, powers)
def gather_power_wire_generation_in_period(time, powers: list): """ 集电线在某段时间内的发电量 :param time: 时间(格式:yyyy-MM-DD HH:mm:ss)列表,若等间隔则为一个float类型,单位:秒 :param powers: 数据库查询time时间列表对应的功率列表[xxxx华能X线保护测控P] :return: 开始时刻到结束时刻集电线的总发电量 ----------------------------------------------------- 参数说明如上所述 触发条件:查询触发 """ return calc_generation_in_period(time, powers)
def series_generation_in_period(time, voltages: list, currents: list): """ 组串在某段时间内的发电量 :param time: 时间(格式:yyyy-MM-DD HH:mm:ss)列表,若等间隔则为一个float类型,单位:秒 :param voltages: 数据库查询time时间列表对应的汇流箱总电压列表[#X光伏子阵汇流箱X汇流总电压] :param currents: 数据库查询time时间列表对应的汇流箱各路电流列表[#X光伏子阵汇流箱X IX] :return: 起始时刻到结束时刻组串的发电量 ----------------------------------------------------- 参数说明如上所述 触发条件:查询触发 """ powers = np.array(voltages) * np.array(currents) return calc_generation_in_period(time, powers)
def box_transformer_generation_in_period(time, powers1: list, powers2: list): """ 某段时间方阵发电量 :param time: 时间(格式:yyyy-MM-DD HH:mm:ss)列表,若等间隔则为一个float类型,单位:秒 :param powers1: 数据库查询time时间列表对应的功率列表[#X光伏子阵XXA1箱变测控P1] :param powers2: 数据库查询time时间列表对应的功率列表[#X光伏子阵XXA1箱变测控P2] :return: 开始时刻到结束时刻电站的总发电量 ----------------------------------------------------- 参数说明如上所述 触发条件:查询触发 """ powers = np.array(powers1) + np.array(powers2) return calc_generation_in_period(time, powers)
def main_transformer_generation_in_period(time, powers1: list, powers2: list): """ 电站在某段时间内的发电量(利用主变数据计算) :param time: 时间(格式:yyyy-MM-DD HH:mm:ss)列表,若等间隔则为一个float类型,单位:秒 :param powers1: 数据库查询time时间列表对应的功率列表[X号主变高压侧测控P] :param powers2: 数据库查询time时间列表对应的功率列表[X号主变高压侧测控P1] :return: 开始时刻到结束时刻电站的总发电量 ----------------------------------------------------- 参数说明如上所述 触发条件:查询触发 """ powers = np.array(powers1) + np.array(powers2) return calc_generation_in_period(time, powers)
def inverter_loss_in_period(time, powers_out: list, voltages_in: list, currents_in: list): """ 某段时间逆变器损耗 :param time: 时间(格式:yyyy-MM-DD HH:mm:ss)列表,若等间隔则为一个float类型,单位:秒 :param powers_out: 数据库查询time时间列表对应的功率列表[#X光伏子阵X#逆变器输出总有功] :param voltages_in: 数据库查询time时间列表对应的功率列表[#XX光伏子阵X#逆变器直流输入电流] :param currents_in: 数据库查询time时间列表对应的功率列表[#XX光伏子阵X#逆变器直流输入电压] :return: 某段时间逆变器损耗 ----------------------------------------------------- 参数说明如上所述 触发条件:查询触发 """ powers = np.array(voltages_in) @ np.array(currents_in) - np.array( powers_out) return calc_generation_in_period(time, powers)
def box_generation_in_period(time, voltages: list, *currents): """ 汇流箱在某段时间内的发电量 :param time: 时间(格式:yyyy-MM-DD HH:mm:ss)列表,若等间隔则为一个float类型,单位:秒 :param voltages: 数据库查询time时间列表对应的汇流箱总电压列表[#X光伏子阵汇流箱X汇流总电压] :param currents: 数据库查询time时间列表对应的汇流箱各路电流列表[#X光伏子阵汇流箱X IX] :return: 起始时刻到结束时刻汇流箱的发电量 ----------------------------------------------------- 参数说明如上所述 说明:currents为汇流箱的全部电流列表,一路对应一个参数, 假如有1路,调用则为box_generation_in_period(time, voltages, current1) 假如有3路,调用则为box_generation_in_period(time, voltages, current1, current2, current3) 以此类推,currenti为各路电流列表 触发条件:查询触发 """ powers = np.array(voltages) * np.array(currents).sum(axis=0) return calc_generation_in_period(time, powers)