Monitoramento de strings solares via Modbus RTU: do divisor de tensão ao SCADA
Como medir, alarmar e integrar string a string em um parque solar usando RS-485, divisores resistivos e Modbus RTU, com os erros comuns de projeto.
Um parque solar de 1,2 MW no interior de Minas operava há oito meses com 10% de geração abaixo do PR contratado. O inversor central reportava produção dentro da curva, sem alarmes ativos, e o relatório mensal só mostrava o total da planta. A equipe de O&M trocou strings de fusíveis, lavou módulos, recalibrou o piranômetro e nada moveu o ponteiro. A perda só apareceu quando um técnico subiu na estrutura com um clamp meter alugado e encontrou três strings em curto parcial atrás de um galho seco, mais duas com diodo de bypass queimado depois de uma tempestade. Oito meses de geração perdida, R$ 180 mil em receita, porque o monitoramento agregava 24 strings dentro de um único MPPT. Este post mostra como medir string a string com hardware simples e Modbus RTU, e onde estão as armadilhas de projeto.
O que é uma string fotovoltaica
Uma string é a associação em série de módulos fotovoltaicos para somar tensão até o ponto operacional do MPPT. Em sistemas comerciais e utility-scale, o típico hoje é:
| Configuração | Módulos em série | Vmp típico (25 °C) | Voc típico (frio) | Aplicação |
|---|---|---|---|---|
| Residencial pequeno | 6–10 | 220–360 V | 300–480 V | Microinversor / string inverter 3–8 kW |
| Comercial / industrial | 12–18 | 440–660 V | 600–900 V | String inverter 15–50 kW |
| Utility 1500 V DC | 20–28 | 740–1030 V | 1000–1500 V | Central inverter / string inverter 1500 V |
A string entrega corrente quase constante em torno de Imp (8–14 A típico para módulos de 450–550 Wp) e tensão que varia com irradiância, temperatura de célula e — mais importante para diagnóstico — com a integridade da própria string. Um único módulo com bypass diode queimado, um conector MC4 oxidado ou uma célula trincada por hot-spot mudam o ponto de operação visível eletricamente.
O charge controller ou inverter faz o MPPT (Maximum Power Point Tracking) varrendo a curva I-V várias vezes por segundo e travando no joelho. O problema: um único MPPT enxerga apenas a soma das strings em paralelo conectadas a ele, e o algoritmo de tracking esconde mismatch porque busca o máximo agregado, não o ótimo de cada string.
Por que monitorar string a string
A diferença entre monitorar inversor e monitorar string é a diferença entre saber que o paciente tem febre e saber qual órgão está inflamado. Os modos de falha que só aparecem com granularidade de string:
- Sombreamento parcial recorrente — galho, poste, prédio vizinho, sujeira concentrada num canto. O MPPT do inversor afunda a curva inteira do MPPT para acomodar a string sombreada, perdendo geração em todas as strings desse tracker.
- Mismatch de módulos — degradação desigual, tolerância de fabricação, troca de módulo em campo por outro de lote diferente. Diferenças de 2–3% em Imp dentro do mesmo MPPT são invisíveis no agregado.
- Falha de diodo de bypass — depois de sobretensão ou raio próximo. A string fica com um módulo "morto" em série; tensão cai cerca de 1/N e potência despenca.
- Sujeira não uniforme — fezes de pássaro, poeira de canavial, líquen. Limpar todos os módulos sem saber onde dói é caro e demorado.
- Hot-spot por trinca — célula trincada vira resistor parasita, gera ponto quente, abre solda, evolui para falha de string. Detectar cedo evita troca de módulo e risco de incêndio.
- Degradação gradual (LID, PID, LeTID) — tendência lenta de Voc/Vmp ao longo de meses. Só aparece em série histórica por string.
- Falha de fusível de string — comum em combiner box. A string vai a zero; o inversor mascara como "irradiância baixa naquela hora".
Sem monitoramento string a string, todos esses modos viram a mesma linha: "geração 10% abaixo do esperado, causa desconhecida".
Topologias de monitoramento
Três caminhos resolvem o problema, com custos e granularidades diferentes:
| Topologia | Granularidade | Custo por módulo | Pontos críticos |
|---|---|---|---|
| Inverter-level | 1 valor por MPPT (4–12 strings agregadas) | Incluso no inversor | Não detecta mismatch dentro do MPPT, é onde 80% das perdas se escondem |
| MLPE (módulo) | 1 valor por módulo (otimizadores Tigo/SolarEdge, microinversores Enphase) | R$ 80–200 por módulo | Eletrônica embarcada em cada módulo, custo agregado alto em utility, ponto de falha extra |
| String-level externo | 1 valor por string na combiner box | R$ 30–80 por string | Sweet spot: granularidade onde a falha realmente acontece, eletrônica concentrada em painel, manutenção centralizada |
Monitoramento string-level externo é o caminho usado na maioria dos parques entre 100 kWp e 5 MWp brasileiros: um monitor DC multicanal vive dentro do combiner box, lê cada string contra o barramento negativo comum, expõe os valores via Modbus RTU e o SCADA agrega. A LRI vê esse padrão como o de melhor custo-benefício para retrofit, justamente porque não exige mexer em nada acima do combiner.
Medindo string com tensão acima do range do monitor
A maioria dos monitores DC industriais multicanal opera em range 0–60 V por canal (incluindo o AEM-60DC8). Strings comerciais ficam entre 400 e 900 V, utility até 1500 V. A solução é o divisor resistivo de precisão, mas o projeto do divisor é onde 90% dos retrofits falham silenciosamente.
O divisor 10:1 ou 20:1 conceitual
String (+) ──[R1]──┬──[R2]── String (−)
│
└── Entrada do monitor (Vmedido = Vstring × R2 / (R1+R2))
Exemplo simplificado — string Vmp = 600 V, monitor 0–60 V, divisor 10:1: R1 = 1 MΩ, R2 = 111,1 kΩ. Tensão na entrada = 600 × 111,1k / 1111,1k = 60 V. Corrente no divisor = 600 / 1,111 MΩ = 540 µA. Potência dissipada total ≈ 0,32 W (R1 dissipa 0,29 W, R2 dissipa 0,032 W).
Cinco erros recorrentes de projeto:
- Coeficiente de temperatura ruim. Resistores genéricos de filme metálico têm TCR de ±100 ppm/°C. Um divisor 10:1 com R1 e R2 de TCRs diferentes deriva 1–2% entre 0 °C de manhã e 70 °C ao meio-dia na caixa. Use resistores de filme metálico de ±15 a ±25 ppm/°C e, se possível, pareados (mesmo lote, encapsulamento próximo para acompanhar temperatura).
- Dissipação subdimensionada. R1 = 1 MΩ a 600 V dissipa 0,29 W e suporta tensão DC de 600 V. Resistor 1206 SMD comum aguenta 0,25 W e 200 V de tensão de trabalho. Resultado: arco interno, drift permanente, eventual falha catastrófica. Use resistor de alta tensão (1206HV, 2010HV) ou dois resistores em série dividindo a tensão de trabalho.
- Impedância de entrada do monitor não considerada. O monitor tem entrada de, digamos, 1 MΩ. Em paralelo com R2 = 111 kΩ, a impedância efetiva cai para ≈ 100 kΩ. Erro de divisão de 10%. Sempre incluir Z_in do monitor no cálculo, ou usar buffer com amp-op de alta impedância (TLV9061, OPA320) entre divisor e monitor.
- Modo comum não controlado. Strings em parque grande têm potencial flutuante em relação à terra, especialmente em combiner box não aterrado. Medir string em modo single-ended com referência ao GND do monitor pode injetar corrente de modo comum através do divisor. Use divisor diferencial (4 resistores) ou isolação galvânica entre divisor e monitor.
- Sem proteção contra surto. Strings recebem indução de raios próximos diariamente em fazenda solar. O divisor entra com pico de kV pela entrada; o monitor queima. Use DPS classe II na entrada da combiner, varistor MOV ou TVS dimensionado para Voc máximo + 30% na entrada do divisor, e clamp diode na entrada do monitor.
Alternativas ao divisor resistivo para correntes (não para tensão de string, mas vale citar):
- Shunts DC — para corrente, não tensão. Resistor de baixo valor (50–150 µΩ) no lado negativo da string, medindo queda em mV.
- TC DC (Hall-effect) — corrente sem contato, isolação galvânica nativa, drift de offset com temperatura.
Tensão sob carga vs aberta (Voc vs Vmp)
O monitor de tensão DC vê o que está nos terminais da string no momento da medição, e isso depende do que o inversor está fazendo com aquela string:
- Inversor ligado, MPPT travado → tensão ≈ Vmp (do ponto operacional, varia com irradiância e temperatura).
- Inversor desligado, combiner ligado → tensão ≈ Voc (circuito aberto, função apenas de irradiância e temperatura, máxima ao amanhecer/anoitecer com painel ainda frio).
- Inversor desligado, string isolada → tensão = Voc real, leitura mais limpa para diagnóstico.
A diferença prática:
| Cenário | Tensão lida | Útil para detectar |
|---|---|---|
| Vmp em operação normal | 70–80% de Voc, varia minuto a minuto | Sombra, fusível aberto (tensão vai a zero), mismatch grosseiro |
| Voc na borda do dia | 95–100% de Voc nominal | Degradação de Voc por LID/PID, módulo morto na string (Voc cai em ~Voc_módulo) |
| Voc com inversor em manutenção | Voc real estável | Curva I-V indireta — comparar Voc de cada string às 6 h e 18 h do mesmo dia revela mismatch fino |
Inferir condição da string a partir só de tensão é parcial — sem medir corrente, fica difícil separar "sombra" de "diodo queimado". Mas a comparação string vs média da matriz no mesmo instante já entrega 80% do diagnóstico: se string 7 do MPPT-3 está 8% abaixo da média das outras 7 strings do mesmo MPPT, e isso é repetível das 10 h às 14 h em céu limpo, há algo errado especificamente na string 7.
Polling rate — quão rápido medir
Strings solares são sistemas eletricamente rápidos, mas operacionalmente lentos:
- Mudança térmica do módulo: constante de tempo de minutos.
- Sombra de nuvem passando: 5–30 segundos de transição.
- Sombra de poste/galho: borda de centenas de milissegundos quando entra/sai.
- Falha catastrófica (fusível aberto, arco DC): milissegundos a segundos.
Recomendação prática de polling:
| Objetivo | Polling | Justificativa |
|---|---|---|
| Tendência diária, relatório de PR | 1 leitura a cada 60 s | Captura curva I-V indireta do dia, baixa carga de banco |
| Detecção de mismatch e sombreamento | 1 Hz (1 s) | Sombra de nuvem dura 5–30 s; em 1 Hz já vê 5–30 pontos do evento |
| Detecção de arco DC e falha rápida | >10 Hz local, agregado para SCADA | Modbus RTU a 1 Hz não detecta arco; precisa de detector de arco dedicado AFCI no inversor ou combiner |
Em Modbus RTU a 19200 bps, ler 8 canais de um monitor consome ~30 ms por requisição (8 holding registers + overhead). Em barramento com 8 monitores (64 strings), o ciclo completo a 1 Hz cabe com folga. Subir para 4 Hz exige 57600 ou 115200 bps. Acima disso, o problema deixa de ser Modbus e passa a ser arquitetura — vale pensar em Ethernet gateway ou edge compute local.
Regra de ouro: 1 Hz na string é o ponto onde custo de banco, custo de barramento e qualidade do diagnóstico se cruzam.
Alarmes e thresholds
Threshold absoluto ("tensão < 400 V dispara alarme") é o pior tipo de alarme em string solar: a tensão muda com irradiância, então o alarme dispara todo amanhecer. Três famílias de alarme funcionam:
- Desvio relativo à média da matriz — para cada string
i, calculardesvio_i = (V_i − média_strings_do_mesmo_MPPT) / média. Alarmar quando|desvio_i| > 5%por mais de 5 minutos contínuos em irradiância > 300 W/m². Imune a clima, captura mismatch e sombreamento crônico. - Deriva temporal (degradação) — para cada string, comparar o Voc do amanhecer com a média móvel dos últimos 30 dias do mesmo horário/temperatura. Queda > 2% indica degradação anômala (PID, módulo trocado por lote pior, conector oxidando).
- Tensão mínima de operação — alarmar quando
V_string < 0,5 × Voc_nominalem horário com irradiância > 200 W/m². Captura fusível aberto, string desconectada, falha grosseira.
Para o supervisório consumir bem, expor por string nos holding registers do monitor:
- Tensão instantânea (atualizada no polling).
- Tensão filtrada (média móvel de 60 s) — reduz alarme falso.
- Flag de saturação (canal acima do range).
- Status de calibração do canal.
A inteligência de threshold pode viver no monitor (firmware) ou no SCADA (regras Ignition/Elipse/Grafana). Distribuir alarme crítico no firmware com latência < 1 s e alarme de tendência no SCADA com janela de minutos é o melhor dos dois mundos.
Integração SCADA
Modbus RTU é o protocolo dominante em parques solares brasileiros por três motivos: barramento RS-485 já está cabeado para os inversores, drivers Modbus existem em todo SCADA industrial, e os fabricantes principais (Sungrow, Huawei, ABB, Growatt, WEG) expõem inversores em Modbus RTU ou Modbus TCP nativo.
Topologia típica de combiner box monitorado:
[16 strings] → [Combiner box]
│
├── [Monitor DC string-level, RS-485 #1, slave 1]
│
[Fusíveis + DPS]
│
└── [DC out → Inverter, RS-485 #2, slave 10]
│
[Gateway RS-485 → Ethernet]
│
[SCADA central]
Pontos práticos da integração:
- Endereços Modbus separados — combiner monitor em RS-485 #1 (subnet de monitoramento), inversor em RS-485 #2 (subnet do fabricante). Tentar colocar tudo na mesma RS-485 cria conflito de master e indisponibiliza o inversor durante polling do monitor.
- Gateway Modbus RTU → Modbus TCP — concentra os dois RS-485 em uma porta Ethernet única. Modelos comuns no Brasil: Moxa MGate MB3170, ICP DAS tGW-715, NPort 5230. Configurar timeouts > 200 ms por slave em rede ruidosa.
- Mapa Modbus do inversor — varia por fabricante. Sungrow expõe ~80 registers por inversor, Huawei expõe estrutura hierárquica com sub-units para optimizers. Cruzar o dado de string do monitor com DC current per MPPT do inversor permite reconstruir a corrente de cada string por subtração.
- Carimbo de tempo coerente — o monitor reporta valor instantâneo; o SCADA carimba na chegada. Em parque grande, o jitter de leitura entre slaves pode chegar a segundos. Para análise de evento rápido (sombra entrando), guardar timestamp do monitor (se o firmware expõe RTC) é melhor que carimbo do SCADA.
- Persistência — supervisório guarda valor por string por timestamp. Em 1 Hz × 64 strings × 12 h de geração/dia × 365 dias, dá ~1 bilhão de pontos/ano. Usar historiador com compactação (PI, InfluxDB, TimescaleDB) é mandatório.
O AEM-60DC8 em monitoramento solar
O AEM-60DC8 é uma Plataforma Industrial de Supervisão DC com 8 canais 0–60 V isolados, Modbus RTU server e mapa de 147 holding registers em firmware v1.03. Para monitoramento solar string-level, ele resolve:
- Strings 24 V / 48 V de off-grid e telecom solar — leitura direta no range 0–60 V, sem divisor. 1 unidade = 8 strings.
- Strings 200–600 V de comercial/utility — com divisor resistivo externo certificado (10:1 ou 20:1, projetado com as 5 regras da seção 5), o AEM-60DC8 cobre um combiner de 8 strings.
- Combiners maiores que 8 strings — múltiplas unidades no mesmo RS-485 com endereços distintos; 2 unidades = 16 strings, 4 unidades = 32 strings.
Por canal, o equipamento expõe nos 147 registers: tensão instantânea, tensão filtrada, contadores de leituras válidas, contador de saturação, status de calibração, configuração de threshold. O alarme local dispara LED âmbar/vermelho e flag Modbus em < 1 s; o supervisório consome via Modbus RTU a 4800–115200 bps.
Quando o AEM-60DC8 é a escolha certa:
- Combiner box com 1–32 strings, com divisor projetado por canal acima de 60 V.
- Projeto de monitoramento RS-485 integrável ao inversor existente (Sungrow, Huawei, ABB, Growatt, WEG).
- Requisito de cibersegurança alinhado a IEC 62443-4-2 SL2 (Secure by Design).
- Aplicação 24/7 com janela de polling em 1 Hz por canal.
Quando precisa de outro produto:
- Strings 1500 V DC — divisor a 25:1 fica com R1 muito alto e dissipação irrealista; melhor um monitor dedicado 0–1500 V com isolação nativa.
- Granularidade por módulo (não por string) — exige MLPE / otimizador / microinversor.
- Detecção de arco DC (AFCI) — não é função do AEM-60DC8; usar AFCI dedicado no inversor ou combiner.
- Medida de corrente por string — o AEM-60DC8 lê tensão; corrente exige shunt + transdutor isolado, ou TC DC, e canal compatível.
Para o parque de 1,2 MW do início deste post: 24 strings por MPPT × 3 MPPTs = 72 strings. Com 9 unidades AEM-60DC8 distribuídas em 3 combiners (3 unidades por combiner, 24 strings cada), todo o parque ganha visibilidade string a string a 1 Hz, integrado no mesmo SCADA já em uso. Investimento estimado: < 10% da receita de 8 meses perdida no caso real.
FAQ
1. Posso ligar uma string 600 V direto no AEM-60DC8? Não. O range é 0–60 V por canal. Conectar tensão acima disso danifica o canal e propaga risco para os outros canais via isolação. Use divisor resistivo externo certificado, com proteção contra surto na entrada do divisor.
2. O AEM-60DC8 detecta arco DC? Não. Detecção de arco DC (AFCI) exige análise de espectro de alta frequência (10 kHz–100 kHz) na corrente e é função do inversor ou de detector AFCI dedicado. O AEM-60DC8 monitora tensão DC contínua a até 115200 bps de polling, suficiente para mismatch e falha de string, não para arco.
3. Qual a precisão prática com divisor 10:1 em campo? Com divisor de filme metálico ±25 ppm/°C pareado, proteção de surto adequada e calibração ponto a ponto contra referência rastreável, é viável manter ±1% no range completo entre 0 °C e 60 °C ambiente. Sem cuidado de TCR e dissipação, a precisão degrada para ±3–5%.
4. Quantas strings cabem em um único barramento RS-485 com AEM-60DC8? RS-485 suporta 32 unidades elétricas por segmento. Em polling útil de 1 Hz a 19200 bps, até 8 unidades (64 strings) cabem com folga. A 115200 bps, 16 unidades (128 strings) ainda fecham o ciclo em < 1 s.
5. Como o monitor convive com o sistema do inversor sem conflito? Usar dois barramentos RS-485 distintos: um para os monitores AEM-60DC8 (subnet de monitoramento) e outro para os inversores (subnet do fabricante, normalmente com endereçamento e baudrate determinados pelo gateway do inversor). Concentrar os dois em um gateway Modbus RTU → TCP único na cabine de controle.
Conteúdo relacionado
Outros materiais técnicos da LRI sobre temas adjacentes.
Como dimensionar um monitor DC para um painel industrial 24/7
Guia prático para o engenheiro de automação especificar canais, range de tensão, polling, isolação e ambiente de um monitor DC em painel 24/7.
Modbus RTU vs Modbus TCP: como decidir sem cair em mito
Comparação técnica entre Modbus RTU e Modbus TCP em camada física, frame, latência, segurança, custo e cenários reais, com matriz de decisão e papel do AEM-60DC8.
Simulador Modbus RTU em Python: tutorial passo a passo para integradores SCADA
Tutorial prático para construir um simulador Modbus RTU em Python e validar a integração SCADA com o AEM-60DC8 antes de receber o hardware físico.