Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Class SAIDI_SAIFI

Esta classe foi implementada utilizando This class was implemented using scripts, SS_SaidiSaifi para conter todos os procedimentos necessários para a facilidade de cálculo dos indicadores DEC e FEC (SAIDI e SAIFI). Sua função é a de obter as ocorrências de abertura e de-energização, calcular os indicadores para os alimentadores e calcular os indicadores para as regiões definidas.
Também implementa os métodos para manutenção de uma tabela de Alimentadores e da tabela de Ocorrências.
De fato há uma classe implementada dentro das bibliotecas do action.NET, em to contain all the necessary procedures for the ease of calculation of SAIDI and SAIFI. Its function is to obtain the occurrences of opening and de-energization, calculate the indicators for the feeders and calculate the indicators for the defined regions.
It also implements methods for maintaining a Feeders table and occurrences table.
In fact, there is a class implemented within the action.NET libraries, in SPIN. ActionNet.Biz.EletricElectric.DLL, com o nome de SaidiSaifi, que implementa os detalhes do cálculo e manutenção das tabelas.

Método Initialize

É um método público da classe with the name of SaidiSaifi, which implements the calculation and maintenance details of the tables.

Initialize Method

It is a public method of the SS_SaidiSaifi, implementada em Scripts no projeto.
É o primeiro método a ser chamado: inicializa a classe estática e cria a classe dinâmica na biblioteca do implemented in Scripts in the project.
It is the first method to be called: initializes the static class and creates the dynamic class in the action.NET.

Método

UpdateFeeders

É um método público cuja função é criar e popular a tabela FEEDERS.
Obtém a lista de tags na tabela Objects e escolhe os que tiverem o atributo Category incluindo a categoria FEEDERS. Gera então a tabela com os campos: Level, Nome do Alimentador e Número de consumidores (Consumers). Nesta geração inicial todos os alimentadores são incluídos com um valor default inicial definido nas constantes da classe.
Após a criação inicial pode-se alterar a tabela, pelo uso da Tela Feeders. (Veja adiante

Method

It is a public method whose function is to create and popular the FEEDERS table.
Gets the list of tags in the Objects table and chooses the ones that have the attribute Category including the category FEEDERS. It then generates the table with the fields: Level, Feeder Name and Number of Consumers. In this initial generation all feeders are included with an initial default value defined in the class constants.
After initial creation you can change the table by using the Feeders screen. (See below)

Método Daily_saving_occurrencies

Este método serve para fazer a pesquisa na tabela de Alarms por registros de ocorrências de normalizações de energização, e gravá-los na tabela Occurrencies criada para armazenar estas ocorrências.
O método supõe que será executado diariamente, entre 00:00 e 1:00 da manhã (AM).
Obtém então a data do dia anterior, recém terminado.
Faz a pesquisa de todos os registros com tag like BAYSTATE, com categoria FEEDER, com data do dia anterior, e atributo DURATION maior que um intervalo pré-definido e valor 1 (Normalizado).
Os membros BAYSTATE devem ser colocados nesta categoria, FEEDER.
O parâmetro para duration é o tempo mínimo de abertura, em segundos, para a ocorrência ser considerada nos cálculos de DEC e FEC. Veja no tag This method is used to search the Alarms by records of occurrences of energizing normalizations, and record them in the table Occurrencies created to store these occurrences.
The method assumes that it will run daily between 00:00 and 1:00 a.m. (AM).
It then gets the date of the previous day, just finished.
Searches all tagged-like records BAYSTATE, with category FEEDER, with date from the previous day, and attribute DURATION than a predefined interval and value 1 (Normalized).
BAYSTATE members must be placed in this category, FEEDER.
The parameter for duration is the minimum opening time, in seconds, for the occurrence to be considered in the SAIDI and SAIFI calculations. Look at the BA_SAIDI_SAIFI. PARAMS (MinTimeOccurency).
Estas constantes estão no These constants are in the template BA_SAIDI_SAIFI na tabela in the Objects table.
Os registros assim obtidos na tabela Alarms são utilizados para criar os registros de ocorrências a serem gravados na tabela Occurencies.
Durante esta gravação são criados alguns campos novos:
Planned– Criado com valor indicando o motivo da ocorrência, para ser utilizado na escolha do indicador totalizador de DEF e FEC. O método procura ocorrências da proteção ou de indicação de NO VOLT, próximos ao momento da interrupção e infere o motivo conforme o que foi encontrado.
0 = Occorreu atuação de proteção no alimentador
1 = Considerada ocorrência planejada, pois não foi encontrado sinal de trip ou falta de tensão.
2= Foi detectada atuação de proteção ou NO-VOLT em outro bay que não um alimentador, nesta subestação.
TripOnFeeder – Foi detectada ocorrência de atuação de proteção (trip) próximo ao momento da ocorrência, no próprio alimentador que teve seu fornecimento interrompido.
Consumers – Criado com o valor do atributo consumers do alimentador correspondente na tabela FEEDERS.
Comments – Se a ocorrência for considerada planejada, ou trip no próprio alimentador é deixado vazio. Se for ocorrência de Trip ou No Volt em outro bay, que não o próprio alimentador é indicado se foi Trip ou No volt e o nome do bay. Poderá ser alterado pelo operador para colocar algum texto com motivo da ocorrência.
O formato desta tabela, criada automaticamente na primeira execução, é o seguinte:
Image Removed

Método GetOccurencies

Método utilizado para obter um conjunto de ocorrências existentes na tabela Occurencies, datadas em um determinado intervalo de dias. É utilizado na tela de controle de DEC-FEC, para mostrar as ocorrências de um determinado períodoThe records thus obtained in the table Alarms are used to create the case records to be written to the table Occurencies.
During this recording, some new fields are created:
Planned- Created with value indicating the reason for the occurrence, to be used in the choice of the totalizer indicator of SAIDI and SAIFI. The method looks for occurrences of the protection or indication of NO VOLT, close to the moment of interruption and infers the reason according to what was found.
0 = Occorre oactuaof protection in the feeder
1 = Considered a planned occurrence, because no sign of trip or lack of tension was found.
2= Protection or NO-VOLT actuation was detected in a bay other than a feeder in this substation.
TripOnFeeder - It was detected occurrence of protection action (trip) near the moment of occurrence, in the feeder itself that had its supply interrupted.
Consumers - Created with attribute value consumers feeder in the FEEDERS table.
Comments – If the occurrence is considered planned, or trip in the feeder itself is left empty. If trip or no volt occurs in another bay, other than the feeder itself is indicated whether it was Trip or No volt and the bay name. It can be changed by the operator to place some text with reason for the occurrence.
The format of this table, created automatically on the first run, is as follows:
Image Added

GetOccurencies method

Method used to obtain a set of existing occurrences in the table Occurencies, dated in a certain range of days. It is used on the SAIDI and SAIFI control screen to show the occurrences of a given period.
public DataTable GetOccurencies(string startDay, string endDay);
O resultado é uma DataTable.
O intervalo de dias é definido pelos parâmetrosThe result is a DataTable.
The range of days is defined by the parameters:
startDay e and endDay , que são strings no formato which are strings in the format 'yyyy-mm-dd', já envolvidos com as aspas simplesalready involved with single quotes.
Ex: '2019-11-29'

Método

CalculateFeeders

Método utilizado para executar o cálculo de DEC e FEC dos alimentadores, subestações e regiões em que estão durante um intervalo de datas passadas. O intervalo de datas é utilizado para a seleção de ocorrências na tabela Occurencies, acima mencionada.
O método percorre os registros da tabela, durante o intervalo definido e calcula o DEC e FEC de cada alimentador que sofreu pelo menos uma ocorrência no período analisado.
O cálculo é separado em três indicadores, conforme o motivo determinado para a ocorrência: Planejado, por proteção no alimentador ou por ocorrência em bay supridor à montante do alimentador.
Para cada valor calculado envia registros para um relatório e também cria objetos com os dados de cada cálculo no período.
Após este cálculo, utilizando a lista de todos os alimentadores existentes (tabela Feeders) e sua localização em subestações, cidades, etc. faz o cálculo de DEF e FEC, no mesmo período para estes níveis conforme a atribuição dos alimentadores a estas regiões.
Todos os resultados são colocados no relatório gerado, e também nos tags para indicadores, definidos nos templates SDFS, para que fiquem armazenados em tabelas de medidas históricas

Method

Method used to perform the SAIDI and SAIFI calculation of feeders, substations, and regions in which they are during a range of past dates. The date range is used for the selection of occurrences in the table Occurencies, mentioned above.
The method traverses the table records during the defined interval and calculates the SAIDI and SAIFI of each feeder that has experienced at least one occurrence in the analyzed period.
The calculation is separated into three indicators, according to the reason determined for the occurrence: Planned, by protection in the feeder or by occurrence in bay supply to the upstream of the feeder.
For each calculated value it sends records to a report and also creates objects with the data for each calculation in the period.
After this calculation, using the list of all existing feeders (Feeders table) and their location in substations, cities, etc. makes the calculation of SAIDI and SAIFI, in the same period for these levels according to the assignment of feeders to these regions.
All results are placed in the generated report, and also in the tags for indicators, defined in the SDFS templates, so that they are stored in historical measurement tables.
public void CalculateFeeders(string period, string startDay, string endDay)
O resultado é um arquivo com relatório em notepad.exe com o nome de arquivo The result is a file with report in notepad.exe with the file name SAIDI_<startDay>.dat.
Os parâmetros de entrada sãoThe input parameters are:
period – string com tipo do relatóriowith report type: "Daily", "Weekly" ou or "Monthly";
startDay e and endDay - O intervalo de dias que são strings no formato The range of days that are strings in the format 'yyyy-mm-dd', já envolvidos com as aspas simplesalready involved with single quotes.
Ex: '2019-11-29'

Classe

Class SS_CalcManager

Esta classe de domínio server foi implementada com a responsabilidade de chamar a classe SaidiSaifiIntervalCalculation da biblioteca SPINThis server domain class was implemented with the responsibility of calling the SaidiSaifiIntervalCalculation class from the SPIN library. ActionNet.Biz.Electric.dll.
A classe SaidiSaifiIntervalCalculation contém o método The SaidiSaifiIntervalCalculation class contains the CalculateIntervalWeightedAverage(eIntervalPeriod period) , este responsável por pesquisar as tabelas de histórico para um determinado período, calcular a média ponderada para todas as tags e salvar o resultado em tags e tabelas específicas de período.

Método CalculateLastWeekSaidiSaifiAverage

Chama o método de cálculo para a semana anterior. Por default, a pesquisa busca valores de domingo até sábado da semana anterior.

Método CalculateLastMonthSaidiSaifiAverage

Chama o método de cálculo para o mês anterior.

Método CalculateLastQuarterSaidiSaifiAverage

Chama o método de cálculo para o trimestre anterior.

Método CalculateLastYearSaidiSaifiAverage

Chama o método de cálculo para o ano anterior.

Classe SS_SaveManager

Esta classe de domínio server foi implementada para verificar se a data atual corresponde às condições de período de cálculo e salva a média ponderada a partir de valores de DEC FEC diários.

Método VerifyPeriod

Este método é responsável por verificar se a data atual corresponde a uma das seguintes condições para cálculo das médias ponderadas dos valores diários de DEC FEC:

Anchor_Hlk47023034_Hlk47023034Se a data atual corresponde a um dia de domingo, calcula a média ponderada e salva os resultados para a semana anterior;
  • Se a data atual corresponde ao primeiro dia do mês, calcula a média ponderada e salva os resultados para o mês anterior;

  • Se a data atual corresponde ao primeiro dia do trimestre, calcula a média ponderada e salva os resultados para o trimestre anterior;

  • Se a data atual corresponde ao primeiro dia do ano, calcula a média ponderada e salva os resultados para o ano anterior;

  • SS_AverageCalculationTask

    Esta tarefa de domínio server, foi desenvolvida apenas para chamar o método VerifyPeriod da classe SS_SaveManager a cada doze horas.

    Classe SPIN

    method, which is responsible for searching history tables for a given period, calculating the weighted average for all tags, and saving the result in period-specific tags and tables.

    CalculateLastWeek SaidiSaifiAverage Method

    Calls the calculation method for the previous week. By default, the search fetches values from Sunday to Saturday of the previous week.

    CalculateLastMonth SaidiSaifiAverage Method

    Calls the calculation method for the previous month.

    CalculateLastQuarterSaidiSaifiAverage Method

    Calls the calculation method for the previous quarter.

    CalculateLastYear SaidiSaifiAverage Method

    Calls the calculation method for the previous year.

    Class SS_SaveManager

    This server domain class has been implemented to verify that the current date matches the calculation period conditions and saves the weighted average from daily SAIDI and SAIFI values.

    VerifyPeriod Method

    This method is responsible for verifying that the current date corresponds to one of the following conditions for calculating the weighted averages of the daily SAIDI and SAIFI values:

    • If the current date corresponds to a Sunday day, calculates the weighted average and saves the results for the previous week;

    • If the current date corresponds to the first day of the month, calculates the weighted average and saves the results for the previous month;

    • If the current date corresponds to the first day of the quarter, calculates the weighted average and saves the results for the previous quarter;

    • If the current date corresponds to the first day of the year, calculates the weighted average and saves the results for the previous year;

    SS_AverageCalculationTask

    This server domain task, was developed only to call the VerifyPeriod method of the SS_SaveManager every twelve hours.

    SPIN class. ActionNet.Biz.Electric.SaidiSaifiIntervalCalculation

    Esta classe, implementada na biblioteca SPINThis class, implemented in the SPIN library. ActionNet.Biz.Electric.dll, é responsável por pesquisar as tags diárias de DEC FEC nas tabelas de histórico para um determinado período, calcular as médias ponderadas e salvar os resultados nas tabelas apropriadas do período em questão.
    Note que o cálculo da média ponderada utiliza as tags criadas no is responsible for searching the daily SAIDI and SAIFI tags in the history tables for a given period, calculating weighted averages, and saving the results in the appropriate tables for the period in question.
    Note that the weighted average calculation uses the tags created in the template SDSF_CALC.

    Estas tags são descritas a seguirThese tags are described below:

    NOME

    NAME

    DESCRIÇÃO

    DESCRIPTION

    DI_DAY

    Tag DEC salva diariamente

    SAIDI tag saves daily

    FI_DAY

    Tag FEC salva diariamente

    SAIFI tag saves daily

    CONS_DAY

    Consumer Tag

    Consumidores salva diariamente

    Saves Daily

    DI_WEEK

    Média ponderada semanal do DEC

    SAIDI weekly weighted average

    FI_WEEK

    Média ponderada semanal do FEC

    SAIFI weekly weighted average

    DI_MON

    Média ponderada mensal do DEC

    SAIDI monthly weighted average

    FI_MON

    Média ponderada mensal do FEC

    SAIFI monthly weighted average

    DI_QUA

    Média ponderada trimestral do DEC

    Quarterly weighted average of the SAIDI

    FI_QUA

    Média ponderada trimestral do FEC

    SAIFI quarterly weighted average

    DI_YEA

    Média ponderada anual do DEC

    SAIDI annual weighted average

    FI_YEA

    Média ponderada anual do FEC

    Método CalculateIntervalWeightedAverage

    Este método é responsável por pesquisar as tags diárias de DEC FEC nas tabelas de histórico para um determinado período, calcular as médias ponderadas e salvar os resultados nas tabelas apropriadas do período em questão. O método recebe um único argumento, o período a ser pesquisado.
    O período pode conter os seguintes valores:

    Valor

    Descrição

    None

    Este é o valor padrão. Se este valor é passado, o método é executado, porém nenhum cálculo é realizado ou salvo.

    LastWeek

    O método pesquisa dados para a semana anterior

    Week

    O método pesquisa dados para a semana atual

    LastMonth

    O método pesquisa dados para o mês anterior

    Month

    O método pesquisa dados para o mês atual

    LastQuarter

    O método pesquisa dados para o trimestre anterior

    Quarter

    O método pesquisa dados para o trimestre atual

    LastYear

    O método pesquisa dados para o ano anterior

    Year

    O método pesquisa dados para o ano atual

    Após pesquisar os dados de histórico, um método interno utiliza os resultados da pesquisa para calcular a média ponderada para o período. Após o cálculo, outro método interno recebe os valores e os salva.
    O salvamento dos valores consiste na utilização das

    SAIFI annual weighted average

    CalculateIntervalWeightedAverage Method

    This method is responsible for searching the daily SAIDI SAIFI tags in the history tables for a given period, calculating weighted averages, and saving the results in the appropriate tables for the period in question. The method receives a single argument, the period to be searched.
    The period can contain the following values:

    Value

    Description

    None

    This is the default value. If this value is passed, the method is executed, but no calculation is performed or saved.

    LastWeek

    The search data method for the previous week

    Week

    The method searches data for the current week

    LastMonth

    The method searches data for the previous month

    Month

    The method searches data for the current month

    LastQuarter

    The search data method for the previous quarter

    Quarter

    The method searches data for the current quarter

    LastYear

    The search data method for the previous year

    Year

    The search data method for the current year


    After searching the history data, an internal method uses the search results to calculate the weighted average for the period. After calculation, another internal method receives the values and saves them.
    Saving the values consists of using the tags

    Code Block
    Tag.BA_SAIDI_SAIFI.TriggerSaveHistorian_WEEK, 
    Tag.BA_SAIDI_SAIFI.TriggerSaveHistorian_MON, 
    Tag.BA_SAIDI_SAIFI.TriggerSaveHistorian_QUA e 
    Tag.BA_SAIDI_SAIFI.TriggerSaveHistorian_YEA 

    como triggers das tabelas de histórico correspondentes por período e executando um toggle de valor nestas tags após o resultado dos cálculos ser passado às tags correspondentes de período.

    InfoEx.: A execução do método

    as triggers of the corresponding history tables by period and performing a value toggle in these tags after the result of the calculations is passed to the corresponding period tags.

    Info

    E.g.: Running the CalculateIntervalWeightedAverage (eIntervalPeriod.LastQuarter) faria com que o mesmo pesquisasse todas as tags method would cause it to search all DI_DAY, FI_DAY e , and CONS_DAY para o período do trimestre anterior ao período atual. Após a pesquisa, o cálculo das médias ponderadas é executado e os resultados são passados a todas as tags for the quarter period prior to the current period. After the search, the calculation of weighted averages is performed and the results are passed to all tags DI_QUA e and FI_QUA associadas à pesquisa. Finalmente, seria executado o toggle da tag associated with the search. Finally, the tag toggle would be Tag.BA_SAIDI_SAIFI. TriggerSaveHistorian_QUA que acionaria o gatilho de salvamento de todas as tabelas de histórico cuja propriedade trigger está associada a esta tag.

    Panel

    Nesta pagina:

    Table of ContentsmaxLevel2

    that would trigger the save trigger for all history tables whose trigger property is associated with this tag.

    Scroll ignore
    scroll-viewporttrue
    scroll-pdftrue
    scroll-officetrue
    scroll-chmtrue
    scroll-htmltrue
    scroll-docbooktrue
    scroll-eclipsehelptrue
    scroll-epubtrue

    On this page:

    12false