Skip to content

Status dos inversores e estados comuns ​

O mesmo número pode significar coisas diferentes: no Solis, 3 indica operação; no SAJ, 3 indica falha. Homogeneizar os status significa traduzir esses códigos para uma linguagem comum, preservando o que cada equipamento informou.

Esta referência reúne os 50 códigos Solis e 3 códigos SAJ presentes no catálogo do projeto. Também inclui a referência candidata do Ingeteam, cuja integração prevista será via Arduino publicando no MQTT; ele ainda não está integrado ao sistema. As tabelas não garantem que todos ocorram em cada firmware. A coluna estado comum proposto orienta a implementação local de catálogo, views e painéis, já testada com dados fictícios. A implantação real depende de migration e associação revisada dos perfis; não houve mudança de produção nem ativação de alertas. Quatro entradas Solis têm uma divergência documental indicada abaixo.

Por que conservar o original? ​

O código original e o estado comum respondem a perguntas diferentes:

InformaçãoExemplo SolisPara que serve
Código original, status_raw4146, equivalente a 0x1032Conferir exatamente o que o equipamento enviou
Estado comum propostofault — falha/proteçãoComparar equipamentos de diferentes modelos
Descrição do diagnósticoProteção por temperatura elevadaExplicar o motivo específico, quando disponível

Se guardássemos apenas “falha”, perderíamos a diferença entre temperatura, ausência de rede e outras proteções. Na interface, o estado comum pode ser o destaque, com o código original nos detalhes. A escolha de como armazenar a tradução permanece aberta.

Modelos e alcance da referência ​

Modelo ou fabricanteSituação no projetoAlcance desta página
Solis-1P10K-4GAdapter solis-solarman; tipo solis-inverterCatálogo baseado na coluna All 4G do mapa, com ressalvas por código
SAJ R6-30K-T4-32-LVAdapter saj-r6-modbus-tcp; tipo saj-inverterTrês estados do registrador 0x6013; origem candidata, não oficial
Ingeteam INGECON SUN 5TL MIntegração próxima via Arduino → MQTT, ainda não implantadaModelo informado pelo responsável; perfil candidato 1Play TLM (ABE1000), firmware e campos publicados por confirmar
ABBEquipamentos legados removidos do campusFora do escopo da integração atual

O catálogo é selecionado pelo modelo e tipo explícitos, nunca apenas pela marca ou pelo número recebido. Firmware e revisão do mapa também precisam ser considerados na admissão de novos equipamentos. Não se deve aplicar a tabela Solis 4G a toda a marca, nem a tabela SAJ R6 a inversores híbridos.

Tabela de homogeneização ​

Os nomes entre crases são identificadores propostos para o software. Não são novos códigos Modbus.

Estado comum propostoSolis-1P10K-4GSAJ R6-30K-T4-32-LVIngeteam 5TL M: candidato para Status Unit 1
waiting — aguardando011, após confirmar o perfil
starting — iniciando1 e 2Não distinguido pelo campo atualNão distinguido por Status Unit 1
operating — em operação32 — conectado à rede2, após confirmar o perfil; não exclui alarmes separados
warning — avisoCinco códigos explícitosNão distinguido pelo campo atualDepende de campo de avisos e mapa de bits validado
fault — falha/proteçãoCódigos explícitos, exceto os quatro em revisão3 — causa não disponívelDepende dos alarmes/motivo de parada; não inferir pelo valor 0
unknown — não interpretadoCódigo/perfil inválido, incerto ou em revisãoCódigo/perfil inválido ou incertoPerfil não confirmado; valor 0 sem contexto suficiente; código não mapeado

O catálogo executável atual chama a categoria de operação de generating. Esta proposta usa operating porque estar conectado ou em operação não comprova potência positiva. A API antiga do Grafana preserva esse nome por compatibilidade. A nova API compartilhada, implementada offline em packages/inverter-status, já usa operating, com revisão explícita.

unknown descreve uma limitação da interpretação; não é um estado físico informado pelo inversor. “Sem leitura” e “leitura antiga” também precisam aparecer separadamente: não significam falha, espera ou recuperação. Uma leitura válida antiga não comprova o estado atual.

Solis-1P10K-4G ​

O adapter publica o valor do registrador 3044 do mapa, sem substituir o código. A leitura atual usa função 0x04, bloco iniciado em 2999, com 50 registradores; a conversão de endereçamento já está no adapter. Esta documentação não propõe novas leituras.

Espera, partida e operação ​

DecimalHexadecimalSignificado no catálogo atualEstado comum proposto
00x0000Aguardandowaiting
10x0001OpenRun — partidastarting
20x0002SoftRun — partida suavestarting
30x0003Gerandooperating

Avisos ​

DecimalHexadecimalSignificado no catálogo atualEstado comum proposto
614560xF010Aviso de surto na redewarning
614570xF011Aviso de ventilador internowarning
614590xF013Aviso do DPS ACwarning
614600xF014Aviso do DPS DCwarning
614610xF015Aviso de ventilador externowarning

O mapa distingue o aviso de ventilador externo em 0xF015. O catálogo chama 0xF011 de “ventilador interno”; a referência original diz apenas “FAN fault (Warning)”. Não concluir a localização física da peça só por essa tradução.

Falhas e proteções ​

DecimalHexadecimalSignificado no catálogo atualEstado comum proposto
41120x1010Sobretensão na redefault
41130x1011Subtensão na redefault
41140x1012Sobrefrequência da redefault
41150x1013Subfrequência da redefault
41160x1014Corrente reversa na redefault
41170x1015Ausência de redefault
41180x1016Desequilíbrio da redefault
41190x1017Oscilação de frequência da redefault
41200x1018Sobrecorrente na redefault
41210x1019Falha de acompanhamento da corrente da redefault
41280x1020Sobretensão DCfault
41290x1021Sobretensão do barramento DCfault
41300x1022Desequilíbrio do barramentofault
41310x1023Subtensão do barramentofault
41320x1024Segundo desequilíbrio do barramentofault
41330x1025Sobrecorrente DC no canal Afault
41340x1026Sobrecorrente DC no canal Bfault
41350x1027Interferência DCfault
41360x1028Inversão DCfault
41370x1029Aterramento do ponto médio PVfault
41440x1030Proteção por interferência da redefault
41450x1031Falha de inicialização DSPfault
41460x1032Proteção por temperatura elevadafault
41470x1033Falha de isolamento PVfault
41480x1034Proteção por corrente de fugafault
41490x1035Falha na verificação de reléfault
41500x1036Proteção DSP secundáriofault
41510x1037Proteção por injeção DCfault
41520x1038Falha de alimentação de 12 Vfault
41530x1039Proteção na verificação de fugafault
41540x103AProteção por temperatura baixafault
41600x1040Falha na verificação AFCIfault
41610x1041Falha de arco AFCIfault
41620x1042Falha SRAM DSP †unknown
41630x1043Falha flash DSP †unknown
41640x1044Falha de ponteiro PC DSP †unknown
41650x1045Falha de registrador crítico DSP †unknown
41660x1046Interferência da rede 02fault
41670x1047Erro na amostragem da corrente da redefault
41680x1048Sobrecorrente IGBTfault
82090x2011Fail Safefault

† Divergência em revisão: as linhas 0x1042, 0x1043, 0x1044 e 0x1045 aparecem riscadas na página 39 do PDF arquivado. O catálogo executável atual ainda retorna fault e confiança documented para elas. A proposta conservadora acima é unknown, com motivo “definição em revisão”, até confirmar a aplicabilidade ao modelo/firmware. O risco não é descartado: um código assim exige investigação de qualidade/interpretação, sem afirmar um diagnóstico físico confirmado. A nova API offline aplica essa política; o wrapper antigo do Grafana preserva a classificação anterior por compatibilidade.

O mapa não explica o motivo do risco nas quatro linhas; não se pode concluir que sejam códigos impossíveis ou definitivamente removidos. As demais entradas são referências documentais, não uma comprovação de ocorrência de cada falha nos equipamentos do campus.

Cuidados com a interpretação ​

  • Decimal e hexadecimal: 4146 = 0x1032. O número decimal 1032 é outro valor e permanece não mapeado.
  • Família correta: 0x1004 aparece para 1P 2G, mas não tem definição na coluna All 4G usada aqui.
  • Lista explícita: números entre dois códigos conhecidos não herdam automaticamente o mesmo significado.
  • Proteção térmica: o código de proteção e a medição internal_temp_c são informações distintas. Esta tabela não define um limite de temperatura para alertas.

SAJ R6-30K-T4-32-LV ​

O adapter lê o estado em summary[19], correspondente a 0x6013, dentro do bloco 0x6000 de 22 registradores, usando a função de leitura 0x03.

DecimalHexadecimalSignificado no catálogo atualEstado comum proposto
10x0001Aguardandowaiting
20x0002Conectado à redeoperating
30x0003Falha do inversor — causa não disponívelfault

A referência é uma cópia candidata de protocolo, edição 7.2, de 18/11/2022, seção 4.2.3, página PDF 23. Espera e conexão têm observações registradas no projeto; o significado de falha ainda não foi comprovado por um evento de campo no firmware instalado. Não provocamos falhas para validar a tabela.

Estado não é código de erro ​

O manual do usuário lista erros específicos: por exemplo, erro 3 de temperatura elevada. Essa numeração pertence ao diagnóstico, não ao estado operacional 0x6013. Portanto, status_raw = 3 deve ser descrito como falha genérica, sem atribuir temperatura como causa. Referência: manual oficial SAJ, capítulo 7.

O adapter atual não publica o diagnóstico FaultMSG. Ter apenas três estados catalogados não significa que o SAJ tenha apenas três erros possíveis. Outros campos ou famílias, como a tabela de inversores híbridos associada a 0x4004, não devem ser usados para interpretar esta leitura.

Ingeteam: integração via Arduino e MQTT ​

A integração prevista é Ingeteam → Arduino → MQTT → persistência → consultas e alertas. O responsável informou em 04/11/2026 o modelo INGECON SUN 5TL M e o acesso ao equipamento. Ainda não há validação da publicação/persistência neste sistema. Firmware e campos disponibilizados pelo Arduino permanecem por confirmar.

A referência candidata para esse modelo é a seção 1Play TLM (ABE1000) do mapa local, páginas 12–16. O manual de produto indexado pelo fabricante associa a abreviação 5TL M à família 1Play TL M; a compatibilidade da revisão de comunicação com o equipamento ainda precisa ser confirmada. Modelo nominal não equivale a validação de cada registrador.

O mapa arquivado, Ingeteam-Register-Map.pdf, revisão AAA0030IMB02_Q, identifica vários produtos. O fato de existir um registrador no PDF não comprova que ele exista ou esteja acessível no equipamento instalado. Os endereços a seguir são referências documentais, não uma lista de varredura ou uma autorização de leitura.

Campo principal: Status Unit 1 ​

Família no mapaStart Address, base zeroReferência ModiconPágina PDF
1Play TLM, ABE1000 — candidato para o 5TL M informado263002714
1Play HF / 3Play ABI1000 e ABI1004 — outras famílias26300278 e 19
3Play 100TL/160TL, ABS1004203002125
IS 350TL-M12, ACB1005203002133
Power B, ABK1000, mapa válido a partir do firmware indicado como _T823008339 e 41

As demais famílias são referências comparativas do documento; não representam o modelo informado para esta integração. O número 30027 é a referência Modicon de Start Address 26; não se deve usar os endereços 20 ou 82 de outras famílias para o 5TL M por analogia.

Valor decimalSignificado de Status Unit 1 no mapaCorrespondência candidata
0Não pronto para conectarunknown como resumo conservador; mostrar a descrição original, pois a causa não está neste campo
1Aguardando conexãowaiting, quando perfil e leitura estiverem confirmados
2Conectado à redeoperating, quando perfil e leitura estiverem confirmados; alarmes permanecem separados
OutrosNão definidos nessa enumeraçãounknown, preservando o valor recebido

“Não pronto para conectar” pode exigir informações adicionais. Não equivale automaticamente a falha, noite, desligamento voluntário ou espera normal. Mesmo o valor 2 não demonstra ausência de avisos/falhas em outros campos. Até associar o modelo ao perfil correto, todos os valores permanecem sem interpretação confirmada no sistema.

Alarmes, avisos e parada são informações separadas ​

Campo no perfil candidato 1Play TLMStart AddressReferência ModiconPágina PDF
Alarmes instantâneos, quatro palavras de bits18–2130019–3002213
Avisos, palavra de bits223002313
Estado de conexão resumido, Status Unit 1263002714
Motivo da redução de potência ativa473004815
Evento instantâneo de parada523005316

Endereços são Start Address, base zero, e não se aplicam indistintamente a outras famílias. Fonte: seção 5, páginas PDF 12–16. A existência das palavras de alarme não fornece, por si só, o significado de cada bit; essa decodificação depende do mapa aplicável ao modelo/firmware. Não classificar toda palavra diferente de zero como uma falha específica nem reduzir bits a um único código. Se publicados, os valores brutos dessas palavras devem ser preservados individualmente.

O motivo de redução no endereço 47 tem estes valores descritos: 0/1 sem redução; 2/3/4 temperatura; 5 comunicação; 6 controle por frequência; 7 controle por tensão; 8 prioridade reativa/limite de corrente; 9 configuração; 10 rampa de conexão; 11 autoconsumo; 12 reservado pelo fabricante. É uma informação de limitação de potência, não a mesma enumeração de Status Unit 1 nem uma falha térmica automaticamente confirmada. Sua homogeneização e eventual alerta dependem de leitura e contexto validados.

Estados adicionais da família Power B ​

A família Power B não é a indicada para o 5TL M informado. Esta comparação permanece para evitar reutilizar um dicionário errado ao ampliar o sistema.

A página PDF 42 descreve dois campos diferentes, que não podem compartilhar o mesmo dicionário:

CampoValores explicitamente descritos no mapa
General state, endereço 880 INITIAL; 1 OPENING_DC_SWITCH; 2 CLOSING_DC_SWITCH; 3 AC_CONNECTING; 5 CONNECTED; 6 DISCONNECTING
Grid connection state, endereço 890 DISCONNECTING; 1 DISCONNECTED; 2 CONNECT_TEST; 3 BUS_PRECHARGING; 4 GRID_GENERATING; 5 GRID_GENERATING_WAITING; 6 GRID_CONNECTING; 7 GRID_CONNECTED; 8 STANDBY; 9 STANDBY_WAITING; 10 GRID_SYNCH_DROOP

Esses campos ficam como referência de outra família, sem aplicação ao 5TL M nesta integração. Não completar lacunas de enumeração nem aplicar a lista do endereço 89 ao 88. Esta referência corrige a apresentação combinada e parcial que existia no resumo de hardware.

O que combinar com o produtor Arduino ​

O Arduino pode usar o contrato MQTT já existente: publicar números brutos em metrics, com identidade estável por inversor, e não apenas por placa Arduino. O tipo ingeteam-inverter é uma proposta a acordar. O perfil de status deve ser cadastrado no lado central, com modelo, firmware e significado de cada campo; a tradução comum não precisa ser duplicada no firmware.

Se status_raw for adotado, deve representar um campo definido, por exemplo Status Unit 1. Alarmes, avisos e parada precisam de chaves próprias acordadas. Não colocar um texto normalizado no lugar do bruto, nem acrescentar model ou profile à raiz do payload atual: ela é estrita.

O timestamp precisa representar a leitura. Reenviar cache antigo com horário novo faria o sistema enxergar dados antigos como atuais. No primeiro piloto, publicar somente leituras novas; histórico e recuperação de cache exigem um desenho específico. Confirmar QoS, retenção MQTT, relógio, identidade e permissões do publicador antes da integração real.

Não é necessário criar um adapter Node.js nem uma fonte de polling em inverter_sources somente para receber esse fluxo. O subscriber aceita tipos genéricos válidos no contrato; isso não inclui automaticamente o Ingeteam nos dashboards ou nos alertas, que também precisarão revisar sua seleção de equipamentos.

Relação com os alertas ​

Um estado padronizado facilita criar regras comuns, mas não é, sozinho, uma ordem de notificação.

ResultadoOrientação para regras futuras
Aguardando ou iniciandoSem alerta isolado; demora anormal exige contexto e critério próprio
Em operaçãoNão comprova potência esperada; desempenho precisa de outras grandezas
AvisoCandidato a acompanhamento/manutenção, com diagnóstico, persistência e destinatário definidos
Falha/proteção documentadaCandidata a alerta com leitura recente, confiança e tempo de confirmação
Falha genérica SAJCandidata a alerta de falha genérica; validação e calibração ainda necessárias
Ingeteam com conexão, alarmes e avisos separadosAvaliar perfil e campos em conjunto; conexão não elimina um alarme e um campo não recebido não equivale a zero
Não interpretadoInvestigar cobertura do mapa/qualidade dos dados; não assumir saúde nem falha física
Ausência ou atraso de leituraTratar como disponibilidade da telemetria, separadamente

A gravidade da notificação depende da causa e do contexto. Falha por ausência de rede e falha de isolamento podem compartilhar fault e exigir respostas diferentes. O Grafana permanece responsável pela avaliação e pelo envio; o tradutor não escolhe destinatários.

Como outros inversores entram no padrão? ​

A sequência proposta permite crescer sem criar um conjunto de status para cada unidade.

SituaçãoProcesso
Mais uma unidade de modelo já suportadoConfirmar modelo, firmware e compatibilidade; associar explicitamente ao perfil existente; validar coleta e leitura
Outro modelo da mesma marcaConferir seu mapa e registrador; reutilizar perfil somente com compatibilidade demonstrada, ou criar perfil próprio
Outra marca ou protocoloIntegrar o adapter quando necessário; publicadores MQTT externos, como o Arduino/Ingeteam, seguem o contrato sem exigir adapter Node.js
Firmware ou mapa mudouRegistrar a mudança e o período de validade; revisar o perfil sem reinterpretar silenciosamente todo o passado
Um significado não cabe no padrãoPreservar o bruto e marcar a interpretação como pendente; revisar o vocabulário antes de forçar uma equivalência

Um perfil é a ficha de interpretação: identifica modelos/firmwares compatíveis, campo de origem, códigos, significados, evidência e versão. Muitas unidades podem compartilhar o mesmo perfil; unidades diferentes não precisam de cópias do dicionário.

Antes de admitir um perfil: documentar fontes e limites, testar códigos conhecidos e desconhecidos com dados fictícios, validar leituras controladas quando autorizadas e revisar como o resultado será exibido. Todas as operações Modbus permanecem somente de leitura.

Alguns modelos podem fornecer conexão, avisos e várias falhas simultaneamente em campos separados. O padrão comum será um resumo; diagnósticos e sinais originais não devem ser descartados para caber em uma única palavra. Não se infere “operando” de ausência de alarmes.

Fontes e limites ​

  • Catálogo do projeto: grafana/lib/inverter-status.mjs; 50 entradas Solis e 3 SAJ na revisão local 1aa3fe0. As tabelas completas acima preservam a lista e explicitam as quatro divergências.
  • Implementação compartilhada offline: packages/inverter-status/catalog.json e src/index.ts. O catálogo central é consumido também pelo wrapper Grafana; a API nova segue os estados comuns e as ressalvas acima, incluindo o perfil candidato Ingeteam. Catálogo SQL e views foram preparados, e os painéis de status foram adaptados e conferidos em laboratório. A coleta continua preservando os códigos originais; novos alertas não foram ativados.
  • Solis: docs/hardware/manuais/Solis-Register-Map.pdf, apêndice 2, páginas PDF 38–39, conferidas visualmente em 04/11/2026; coluna All 4G. Não se usa a coluna 1P 2G.
  • SAJ: cópia candidata do protocolo, hospedada por terceiros; origem do catálogo existente, sem certificação de compatibilidade.
  • SAJ: manual oficial do usuário, capítulo 7, ligado na seção de diagnóstico, confirma que a lista de erros específicos é distinta do estado de operação.
  • Implementação: SolisAdapter.ts, SajR6Adapter.ts, mapper.ts, contrato MQTT e schema Prisma. Nenhum equipamento ou serviço de produção foi consultado para esta revisão documental.
  • Ingeteam: docs/hardware/manuais/Ingeteam-Register-Map.pdf, revisão AAA0030IMB02_Q, data impressa 03/05/24, seções 4–9; páginas 13–14, 25, 33, 41 e 42 conferidas visualmente em 04/11/2026. Compatibilidade com o equipamento do campus ainda não demonstrada.
  • Identificação nominal Ingeteam: modelo fornecido pelo responsável e manual de produto 1Play TL M indexado pelo fabricante. O endereço de download redirecionou ao portal na revisão; não foi obtida nova cópia integral.

Leia também como as duas marcas fornecem dados comuns e a referência de grandezas e registradores.

Revisão: 04/11/2026. Fontes: catálogo e adapters do projeto, mapas Solis/Ingeteam, referências SAJ e testes PostgreSQL/Grafana indicados acima. Implementação local validada; não representa implantação no campus.

IFSP Campus Boituva · Energia, automação e software em um mesmo projeto