📊 Aula 05 — Algoritmos Numéricos em C e Python: Fasores, Matrizes e Solução de Circuitos

Navegação Rápida


📌 Sumário da Aula

  1. 🧠 1. Paradigma Computacional Híbrido: C para Tempo Real e Python para Modelagem
  2. ⚡ 2. Extração Fasorial Discreta de 1 Ciclo (Filtro Cosseno/Seno)
  3. 📐 3. Grandezas de Potência em Tempo Real e Aritmética Complexa em C99
  4. 🌐 4. Montagem Algorítmica da Matriz Ybus e Armazenamento Esparso
  5. 📈 5. Solução de Fluxo de Potência por Newton-Raphson com Fatoração LU
  6. 📊 6. Diagrama de Algoritmos Numéricos, Fasores e Solução de Redes
  7. 📝 7. Questões de Concursos e Problemas Avançados Resolvidos
  8. 🔗 8. Conexões e Referências Cruzadas

🧠 1. Paradigma Computacional Híbrido: C para Tempo Real e Python para Modelagem

Na engenharia de sistemas elétricos contemporânea, nenhum projeto complexo é resolvido utilizando exclusivamente uma única linguagem de programação. Adota-se a arquitetura computacional híbrida em duas camadas:

flowchart TD
    subgraph Borda["Camada de Borda / Tempo Real Estrito (Firmware em C99/C++)"]
        C1["Amostragem ADC síncrona a 3840 Hz (DMA)"]
        C2["Filtragem Fasorial DFT de 1 ciclo em ponto fixo/FPU"]
        C3["Malhas de controle PWM em tempo real (< 50 µs)"]
        C4["Algoritmos de desarme de emergência ANSI 50/51/87T"]
    end

    subgraph Centro["Camada Central / Análise e Otimização (Python Científico)"]
        P1["Montagem de grandes redes elétricas (Ybus esparsa)"]
        P2["Fluxo de Potência Não Linear (Newton-Raphson / SciPy)"]
        P3["Despacho Econômico Hidrotérmico e Previsão de Carga"]
        P4["Interface Gráfica de Engenharia e Visualização de Dados"]
    end

    Borda <-->|Telemetria Serial / Modbus / IEC 61850| Centro
  • Linguagem C (ISO C99): Oferece execução determinística em tempo real estrito (Hard Real-Time), manipulação cirúrgica de registradores e latências de nanossegundos em relés de proteção IEDs;
  • Linguagem Python (NumPy / SciPy / Pandapower): Proporciona altíssima produtividade analítica, suporte nativo a álgebra linear de matrizes esparsas, bibliotecas de otimização convexa e integração com ciência de dados.

⚡ 2. Extração Fasorial Discreta de 1 Ciclo (Filtro Cosseno/Seno)

Em relés de proteção digitais, os sinais brutos de corrente e tensão fornecidos pelos transformadores de corrente (TC) e de potencial (TP) contêm harmônicos de chaveamento, ruídos de alta frequência e uma componente exponencial contínua transitória aperiódica decrescente (DC Offset) gerada pelo fechamento de faltas em momentos de cruzamento por zero de tensão.

Para calcular a impedância aparente de linha e atuar nas funções de distância (função ANSI 21) ou diferencial (87), o microcontrolador deve extrair a componente fasorial fundamental de .

O padrão universal da indústria é o Filtro da Transformada Discreta de Fourier de Ciclo Completo (Full-Cycle DFT).

2.1 Formulação Matemática Discreta

Considere um sinal senoidal discretizado em amostras uniformemente distribuídas ao longo de exatamente um ciclo fundamental de (), com taxa de amostragem :

A decomposição ortogonal do fasor fundamental é calculada pelas convoluções discretas com os núcleos de cosseno e seno:

2.2 Extração do Módulo RMS e Ângulo de Fase

O módulo eficaz (Valor RMS da Fundamental) e o ângulo de fase angular em relação à base de tempo são obtidos por:

2.3 Propriedades Matemáticas de Rejeição de Ruído

  1. Rejeição Perfeita de Todos os Harmônicos Inteiros: Em virtude da ortogonalidade trigonométrica das funções senoidais discretas no intervalo : O filtro suprime com atenuação infinita o harmônicos da rede elétrica;
  2. Implementação em Janela Deslizante Recursiva (Recursive DFT): Ao adquirir uma nova amostra e descartar a amostra mais antiga (de passos atrás), o fasor no instante é atualizado a partir do fasor do instante através de uma simples rotação complexa: Isso reduz a complexidade temporal de cálculo do fasor de para operações por amostra, permitindo a atualização fasorial em microcontroladores modestos a cada poucos microssegundos.

📐 3. Grandezas de Potência em Tempo Real e Aritmética Complexa em C99

3.1 True RMS e Potência Ativa Discreta

Quando a forma de onda da corrente é distorcida por cargas não lineares (inversores de frequência e retificadores), o valor eficaz verdadeiro (True RMS) deve considerar o conteúdo energético de todo o espectro até a frequência de Nyquist:

A Potência Ativa Média () em Watts é a média temporal dos produtos instantâneos de tensão e corrente:

A Potência Aparente () em Volt-Ampères e o Fator de Potência () são obtidos por:

A Potência Reativa () segundo a convenção de Budeanu/IEEE 1459 para distorção moderada é dada por:

3.2 Aritmética de Números Complexos em C99 (<complex.h>)

A partir do padrão C99, a linguagem C oferece suporte nativo de primeira classe a números complexos, dispensando a criação de estruturas manuais struct { float real, imag; }:

#include <stdio.h>
#include <complex.h>
#include <math.h>
 
void exemplo_fasor(void) {
    // Declaração de fasores fasoriais em C99
    double complex V1 = 13800.0 * cexp(I * 0.0);             // 13.8 kV /_0°
    double complex Z_linha = 1.2 + 4.5 * I;                  // Impedância Z = 1.2 + j4.5 ohms
    
    // Lei de Ohm Fasorial direta com operadores aritméticos normais:
    double complex I_linha = V1 / Z_linha;
    
    // Potência Complexa S = V * conj(I)
    double complex S_carga = V1 * conj(I_linha);
    
    double P = creal(S_carga); // Potência Ativa em Watts
    double Q = cimag(S_carga); // Potência Reativa em VAr
    double S_mag = cabs(S_carga); // Módulo Aparente em VA
    
    printf("P = %.2f kW, Q = %.2f kVAr, S = %.2f kVA\n", P/1000.0, Q/1000.0, S_mag/1000.0);
}

🌐 4. Montagem Algorítmica da Matriz Ybus e Armazenamento Esparso

Em estudos de planejamento de transmissão e análise de estabilidade, as redes elétricas reais contam com centenas ou milhares de barras (). No entanto, cada barra conecta-se tipicamente a apenas 2 a 4 linhas vizinhas.

A Matriz Nodal de Admitâncias () é altamente esparsa: mais de de seus elementos numéricos são rigorosamente iguais a zero.

Armazenar uma matriz densa de números complexos de dupla precisão exigiria: Inversões de matrizes cheias consumiriam tempo com complexidade cúbica .

Com o armazenamento esparso no formato CSR (Compressed Sparse Row) ou LIL (List of Lists), armazenam-se exclusivamente os termos não nulos ( termos), reduzindo o consumo de memória para menos de ( de economia).

4.1 Implementação Vetorizada da Matriz Ybus em Python

import numpy as np
import scipy.sparse as sp
 
def montar_ybus_esparsa(num_barras, linhas_dados):
    """
    Monta a matriz Ybus esparsa diretamente no formato LIL.
    linhas_dados: lista de tuplas (de_barra, para_barra, r, x, b_shunt)
    """
    Ybus = sp.lil_matrix((num_barras, num_barras), dtype=complex)
    
    for de, para, r, x, b_sh in linhas_dados:
        z = complex(r, x)
        y = 1.0 / z
        b_meio = 1j * (b_sh / 2.0)
        
        # Termos Fora da Diagonal (Negativo da admitância em série)
        Ybus[de, para] -= y
        Ybus[para, de] -= y
        
        # Termos da Diagonal Principal (Soma das admitâncias incidentes)
        Ybus[de, de] += y + b_meio
        Ybus[para, para] += y + b_meio
        
    return Ybus.tocsr() # Converte para CSR para operações rápidas de produto

📈 5. Solução de Fluxo de Potência por Newton-Raphson com Fatoração LU

O problema do Fluxo de Carga em regime permanente consiste em determinar o vetor de magnitudes de tensão e ângulos de fase em todas as barras da rede, dadas as gerações e demandas de potência ativa e reativa especificadas.

As equações de injeção de potência na barra em coordenadas polares são não lineares:

Onde .

5.1 O Algoritmo de Newton-Raphson

A cada iteração , o sistema não linear é linearizado em torno do ponto de operação atual através da expansão em Série de Taylor truncada de primeira ordem:

Onde os resíduos de potência são calculados por:

E a Matriz Jacobiana possui as derivadas parciais:

flowchart TD
    Init["1. Inicialização do Flat-Start:<br/>θ_k = 0 rad, V_k = 1.0 pu para k ≠ Slack"] --> CalcRes["2. Calcular Injeções de Potência e Resíduos:<br/>ΔP_k = P_k^esp - P_k^calc<br/>ΔQ_k = Q_k^esp - Q_k^calc"]
    CalcRes --> TesteConv{"3. Teste de Convergência:<br/>max(|ΔP|, |ΔQ|) < 10^-4 pu?"}
    TesteConv -- Sim --> Sucesso["Convergência Atingida!<br/>Calcular fluxos de potência nos ramos e perdas Joule"]
    TesteConv -- Não --> MontaJac["4. Avaliar Matriz Jacobiana Esparsa J"]
    MontaJac --> FatoracaoLU["5. Resolver Sistema Linear por Fatoração LU:<br/>J * [Δθ; ΔV/V] = [ΔP; ΔQ]"]
    FatoracaoLU --> Atualiza["6. Atualizar Variáveis de Estado:<br/>θ^(v+1) = θ^(v) + Δθ<br/>V^(v+1) = V^(v) + ΔV"]
    Atualiza --> CalcRes

O algoritmo de Newton-Raphson exibe convergência quadrática local: uma vez que o vetor de estados entra na região de atração da solução física, o número de dígitos corretos dobra a cada iteração, garantindo convergência em tipicamente 3 a 5 iterações para qualquer tamanho de sistema interligado.


📊 6. Diagrama de Algoritmos Numéricos, Fasores e Solução de Redes

O diagrama técnico abaixo exibe o ciclo completo do processamento numérico de sinais elétricos em C99 e a resolução iterativa de fluxo de carga em Python:


📝 7. Questões de Concursos e Problemas Avançados Resolvidos

Questão 1 (Banca CESGRANRIO - Engenheiro de Eletricidade / Eletrobras)

Em um relé de proteção digital de sobrecorrente temporizada, o sinal de corrente alternada de de uma fase é digitalizado com uma taxa de amostragem de exatamente . As 16 amostras numéricas obtidas em um ciclo fundamental de carga resistivo-indutiva equilibrada foram processadas pelo algoritmo da DFT de 1 ciclo, resultando nos seguintes termos ortogonais de Fourier: Determine:

  1. O valor fasorial retangular da corrente fundamental ().
  2. O valor eficaz verdadeiro (RMS) da componente fundamental da corrente em ampères ().
  3. O ângulo de fase da corrente em graus ().

Resolução Passo a Passo:

  1. Fasor Retangular Fundamental ():

  2. Cálculo do Módulo RMS da Fundamental (): O módulo do fasor de pico é:

    O valor eficaz RMS é obtido dividindo por :

  3. Cálculo do Ângulo de Fase (): Como o componente real é positivo e o imaginário é negativo, o fasor reside no 4º quadrante:

Interpretação: A corrente de está atrasada de em relação à referência de tempo, correspondendo perfeitamente a um circuito com fator de potência indutivo .


Questão 2 (Banca CESPE/CEBRASPE - Engenheiro Eletricista / Perito Criminal)

Considere uma linha de transmissão entre as barras 1 e 2 de um sistema de potência com impedância em série e capacitância total de carregamento desprezível (). Calcule a admitância de ramo em sua forma retangular () e determine a contribuição dessa linha nos elementos e da matriz nodal de admitâncias .

Resolução Passo a Passo:

  1. Cálculo da Admitância em Série (): Multiplica-se numerador e denominador pelo complexo conjugado :

    • Condutância:
    • Susceptância:
  2. Contribuição na Matriz Nodal de Admitâncias:

    • Termo fora da diagonal ():
    • Contribuição no termo da diagonal principal ():


Questão 3 (Problema Analítico de Engenharia - Convergência de Newton-Raphson)

Em um fluxo de potência de uma rede de duas barras contendo uma barra de referência (Barra 1: ) e uma barra de carga PQ (Barra 2: ), interligadas por uma linha puramente reativa (): Iniciando a partir do Flat-Start (), determine o resíduo de potência ativa e o elemento Jacobiano na primeira iteração.

Resolução Passo a Passo:

  1. Equação da Potência Ativa Calculada na Barra 2 (): Como e , :

  2. Avaliação no Ponto Inicial Flat-Start ():

  3. Cálculo do Resíduo de Potência Ativa ():

  4. Derivada Parcial do Jacobiano (): Diferenciando a expressão de em relação a : Substituindo os valores do Flat-Start:

Avanço do Algoritmo: A atualização angular de primeira iteração calculada por Newton-Raphson será: Demonstrando como o fluxo de potência ativo é transmitido do ângulo mais adiantado (Barra 1 a ) para o ângulo mais atrasado (Barra 2 a ).


🔗 8. Conexões e Referências Cruzadas

Disciplinas Vinculadas:

Materiais Didáticos Oficiais da Disciplina:

  • Arquivo de Curso: 02 - Linguagem C Recursos Básicos.pdf
  • Arquivo de Curso: 03 - Linguagem C Funções.pdf
  • Arquivo de Curso: 04 - Linguagem C Nos Sitemas Embarcados.pdf