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 DEC and FEC indicators (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.
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 DEC and FEC 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 DEF and FEC. 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 DEC-FEC 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'
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 DEC and FEC 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 DEC and FEC 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 DEF and FEC, 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'
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 FECmethod, 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 FEC DEC 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 FEC DEC values:
Se a data atual corresponde a um dia de domingo, calcula a média ponderada e salva os resultados para a semana anterior;Anchor _Hlk47023034 _Hlk47023034 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 anteriorIf 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
Esta tarefa de domínio server, foi desenvolvida apenas para chamar o método VerifyPeriod da classe SS_SaveManager a cada doze horas.
Classe SPINThis 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 DEC FEC 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:
NOMENAME | DESCRIÇÃODESCRIPTION |
DI_DAY | Tag DEC salva diariamentetag saves daily |
FI_DAY | Tag FEC salva diariamentetag saves daily |
CONS_DAY | Consumer Tag Consumidores salva diariamenteSaves Daily |
DI_WEEKMédia | ponderada semanal do DECDec weekly weighted average |
FI_WEEK | Média ponderada semanal do FECFEC weekly weighted average |
DI_MONMédia | ponderada mensal do DECDec monthly weighted average |
FI_MONMédia | ponderada mensal do FECFec monthly weighted average |
DI_QUA | Média ponderada trimestral do Quarterly weighted average of the DEC |
FI_QUAMédia | ponderada trimestral do FECFec quarterly weighted average |
DI_YEAMédia | ponderada anual do DECDec 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
O salvamento dos valores consiste na utilização das
Fec annual weighted average |
CalculateIntervalWeightedAverage Method
This method is responsible for searching the daily DEC FEC 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.
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 that would trigger the save trigger for all history tables whose trigger property is associated with this tag. |
Panel | ||||
---|---|---|---|---|
Nesta paginaOn this page:
|