Controle PID com Siemens S7-1200: Como utilizar?

Introdução

Se você já trabalhou com fornos industriais, sabe que o controle da temperatura de refrigeração não é opcional — é crítico. Uma variação mal gerenciada compromete o processo, estressa os equipamentos e pode gerar parada de linha. O controle PID com o Siemens S7-1200 resolve esse problema de forma elegante: simples de configurar no TIA Portal, robusto o suficiente para aguentar o dia a dia da planta.

Neste artigo, vou mostrar exatamente como implementamos esse controle em um projeto real aqui na Automach. O sistema cuida da temperatura da água que circula nos fornos: uma bomba mantém a água em movimento e um inversor de frequência ajusta a velocidade de um ventilador que resfria essa água. Quem manda no inversor é o PID, fechando o laço a partir de um sensor de temperatura instalado na linha de água.

Você vai aprender a configurar o bloco PID_Compact no TIA Portal, entender os parâmetros que realmente importam e ver como estruturamos a lógica de controle para esse tipo de aplicação.


Por que usar PID para controlar temperatura no sistema de refrigeração?

O controle liga/desliga (on/off) até funciona em alguns casos, mas numa aplicação de refrigeração com inércia térmica alta — como acontece nos sistemas de forno —, ele gera ciclos de temperatura com overshoot constante. Isso significa que o ventilador fica alternando entre velocidade máxima e parado, gerando desgaste mecânico e resposta lenta.

O controle PID (Proporcional-Integral-Derivativo) resolve isso porque ele calcula continuamente o erro entre a temperatura de setpoint e a temperatura medida, e entrega ao inversor exatamente a frequência necessária para compensar esse erro — sem overshoots desnecessários, sem liga-desliga.

Na prática:

  • P (Proporcional): age proporcional ao erro atual. Quanto mais longe do setpoint, mais o ventilador acelera.
  • I (Integral): elimina o erro estático ao longo do tempo. Sem ele, o sistema estabiliza ligeiramente abaixo ou acima do setpoint.
  • D (Derivativo): antecipa variações bruscas. No nosso caso, ajuda quando a carga do forno muda de repente.

Para refrigeração de água em fornos, na maioria dos projetos o PD é suficiente ou um I com tempo longo. O D costuma ser dispensado em sistemas com bastante inércia — mas o PID_Compact do S7-1200 te deixa ajustar tudo isso via autotune.


Visão Geral do Sistema

Antes de ir para o TIA Portal, entenda a arquitetura do projeto:

ComponenteFunção
Siemens S7-1200 (CPU 1212C ou superior)Controlador principal — executa o PID
Sensor de temperatura PT100 / 4–20 mAMede a temperatura da água de retorno
Módulo analógico SM 1231Converte o sinal do sensor para o PLC
Inversor de frequência (WEG CFW ou Siemens G120)Controla a velocidade do ventilador
Bomba de circulaçãoMantém a água em movimento no circuito
Ventilador do radiadorResfria a água antes de retornar aos fornos

O fluxo de controle é simples: o sensor mede a temperatura da água → o S7-1200 calcula o erro em relação ao setpoint → o PID gera um sinal de 0 a 100% → esse sinal vai como referência de velocidade para o inversor via saída analógica (0–10 V ou 4–20 mA) → o inversor acelera ou desacelera o ventilador.

⚠️ Atenção: A bomba de circulação NÃO é controlada pelo PID. Ela deve estar sempre ligada enquanto o forno estiver em operação. O PID controla apenas o ventilador. Lembre-se de criar um intertravamento que garanta que o inversor só entre em operação com a bomba confirmada (pressostato ou corrente).


Configurando o PID_Compact no TIA Portal

O TIA Portal disponibiliza o bloco PID_Compact (FB41) dentro da biblioteca de tecnologia. Ele já inclui a lógica completa de PID com autotune integrado — não precisa implementar na mão.

Passo 1: Adicionar o bloco PID_Compact ao projeto

  1. No TIA Portal, abra seu projeto e vá até a CPU S7-1200.
  2. Na pasta Technology Objects (dentro do device), adicione um novo objeto → selecione PID_Compact.
  3. Dê um nome significativo: PID_Temperatura_Agua.
  4. O TIA Portal cria automaticamente o DB de instância associado.

💡 Dica: Coloque o bloco PID_Compact em um OB de execução cíclica com tempo fixo — o OB30 (Cyclic Interrupt) é o mais indicado. No nosso projeto usamos 100 ms de ciclo para temperatura de água, que tem inércia razoável. Nunca rode PID em OB1 (ciclo livre), pois o tempo de execução variável corrompe o cálculo do integral.

Passo 2: Configurar os parâmetros no bloco

Após inserir o bloco no OB30, acesse a configuração (duplo clique no bloco → aba Configuration):

Aba Basic Settings:

  • Controller type: Temperature
  • Control direction: Reverse — porque ao aumentar a temperatura, queremos aumentar a saída (mais ventilação = mais resfriamento)

⚠️ Atenção: Cuidado com a direção do controle. Em refrigeração, temperatura alta = saída alta (ventilador rápido). Em aquecimento seria o inverso. Se inverter aqui, o sistema vai divergir ao invés de controlar.

Aba Input/Output:

  • Input: selecione Input_PER se for usar entrada analógica direta (valor em formato percentual do módulo SM 1231) ou Input se já converter para engenharia (°C) no ladder.
  • Output: Output_PER para saída analógica direta, ou Output para tratar no ladder.
  • Setpoint: conecte a uma variável DB ou tag de memória (SetpointTemperatura).

No nosso projeto, usamos a entrada em formato de engenharia (Input em °C) convertida com o bloco NORM_X / SCALE_X a partir do valor bruto do SM 1231:

scl

// Conversão do sensor PT100 (4-20mA → 0-100°C)
"PID_Temperatura_Agua".Input := NORM_X(MIN := 0.0, VALUE := #SensorRaw, MAX := 27648.0) * 100.0;

Passo 3: Definir os limites de saída

Ainda na configuração:

  • Output high limit: 100.0 (100% da saída analógica → frequência máxima do inversor)
  • Output low limit: 0.0 — mas avalie se faz sentido o ventilador parar completamente. Em alguns projetos colocamos 20.0 como mínimo para garantir circulação mínima de ar.

💡 Dica: Se o inversor tem uma frequência mínima configurada (ex: 5 Hz), não importa se você manda 0% — ele vai operar no mínimo mesmo. Alinhe o limite inferior do PID com o que o inversor realmente faz.

Passo 4: Ajustar os parâmetros PID (Manual ou Autotune)

Valores iniciais para testar:

ParâmetroValor inicial sugerido
Ganho proporcional (P)2.0
Tempo integral (Ti)30 s
Tempo derivativo (Td)0.0 s (desabilitado inicialmente)

Para temperatura de água com inércia média-alta, esses valores são um bom ponto de partida. Depois use o Autotune do próprio TIA Portal para refinar.

Como rodar o Autotune:

  1. Com o PLC em modo RUN e o sistema em operação estável, acesse Online → PID_Compact → Commissioning.
  2. Ative o modo Pretuning — o bloco faz um degrau na saída e mede a resposta do processo.
  3. Em seguida, rode o Fine tuning para refinar os ganhos.
  4. Ao finalizar, os parâmetros são escritos no DB de instância. Copie os valores para a configuração offline e faça o download permanente.

⚠️ Atenção: Nunca rode o Autotune com o forno em temperatura crítica ou com produto dentro. Faça o processo em condição de vazio ou com a produção parada, pois o autotune faz variações propositais na saída.


Lógica de Controle e Intertravamentos

Além do PID em si, o projeto precisa de uma lógica de controle ao redor. Aqui está o que implementamos:

Habilitação do PID

O PID só deve rodar quando:

  1. A bomba de circulação está ligada e confirmada (sinal de corrente ou pressostato)
  2. O forno está em modo operação (não em manutenção)
  3. Não há falha no sensor de temperatura

scl

// Habilitação do PID_Compact
"PID_Temperatura_Agua".ManualEnable := FALSE; // Modo automático
"PID_Temperatura_Agua".Reset := "FalhaSensor" OR NOT "BombaConfirmada";

// Modo manual de emergência (operador pode forçar frequência pelo HMI)
IF "ModoManualHMI" THEN
    "PID_Temperatura_Agua".ManualEnable := TRUE;
    "PID_Temperatura_Agua".ManualValue := "FrequenciaManualHMI"; // 0-100%
END_IF;

Saída para o Inversor

A saída do PID (0–100%) precisa ser convertida para o formato da saída analógica (0–27648 para saída de corrente 4–20 mA, ou 0–27648 para tensão 0–10 V):

scl

// Conversão da saída PID para o módulo analógico
"SaidaInversor_AQ" := SCALE_X(
    MIN := 0,
    VALUE := "PID_Temperatura_Agua".Output,
    MAX := 27648
);

👉 Ver preço do Módulo Analógico Siemens SM 1232 no Mercado Livre

Alarmes

Sempre inclua:

  • Temperatura alta (High-High): desliga o forno, não apenas alarme
  • Falha de sensor: vai para modo manual com frequência fixa de segurança
  • Falha do inversor: alarme crítico e bloqueio do processo

Configuração do Inversor para Controle via PID

O inversor recebe o sinal analógico do S7-1200 e converte para frequência de saída. Os parâmetros essenciais a configurar (exemplo WEG CFW11 / Siemens G120):

ParâmetroConfiguração
Referência de velocidadeEntrada analógica (AI1)
Sinal de referência0–10 V ou 4–20 mA (conforme hardware)
Frequência mínima10–15 Hz (evita parada total do ventilador)
Frequência máxima60 Hz
Rampa de aceleração5–10 s (suave para motor do ventilador)
Rampa de desaceleração10–15 s

💡 Dica: Para ventiladores, sempre configure rampa de desaceleração generosa. Ventiladores têm inércia alta e forçar parada rápida pode gerar sobretensão no barramento CC do inversor (Fault 7 no CFW, por exemplo).

👉 Ver preço do WEG CFW11 no Mercado Livre

Mais vendido #1
  • Compatível com sensores Pt100 e termopares J/K/T. | Controle PID inteligente. | Interface de usuário simplificada.
R$ 323,00
Mais vendido #4
  • Haste de aço inox 304 com 6 x 36 cm que permite a imersão direta em fornos, caldeiras e processos industriais. | Operaçã…
R$ 189,81

Sensor de Temperatura: PT100 vs Transmissor 4–20 mA

A escolha do sensor impacta diretamente a qualidade do controle:

CritérioPT100 diretoTransmissor 4–20 mA
CustoMais baratoMais caro
Módulo necessárioSM 1231 RTDSM 1231 AQ (comum)
Ruído elétricoSuscetível em cabo longoImune (corrente)
Distância do painelLimitada (~50 m)Sem limitação prática
InstalaçãoMais simplesNecessita fonte 24V
RecomendaçãoPainel próximo ao sensorAmbiente ruidoso ou distante

Em ambientes industriais com inversores e motores por perto — como é o caso de sistemas com fornos —, o transmissor 4–20 mA é sempre preferível. Ruído elétrico em cabo PT100 longo vai comprometer a leitura e deixar o PID instável.

👉 Ver preço do Transmissor de Temperatura 4-20mA no Mercado Livre


Checklist de Implementação

  • Bloco PID_Compact adicionado ao OB30 (Cyclic Interrupt 100 ms)
  • DB de instância criado e nomeado corretamente
  • Direção do controle configurada como “Reverse” para refrigeração
  • Limite de saída mínimo alinhado com frequência mínima do inversor
  • Sensor de temperatura com sinal 4–20 mA (preferencial)
  • Conversão de entrada NORM_X/SCALE_X implementada
  • Saída analógica convertida com SCALE_X para o módulo AQ
  • Intertravamento: PID só habilitado com bomba confirmada
  • Modo manual via HMI implementado com ManualEnable/ManualValue
  • Reset do PID em caso de falha de sensor
  • Alarme de temperatura alta configurado (High e High-High)
  • Autotune executado com sistema estabilizado
  • Parâmetros PID salvos no projeto offline após autotune

Erros Comuns

1. Rodar o PID no OB1 (ciclo livre) O PID_Compact precisa de tempo de ciclo fixo para calcular corretamente os termos I e D. No OB1, o tempo varia e isso distorce o comportamento. Use sempre OB cíclico (OB30 ou superior).

2. Direção de controle errada Inverter o sentido (Direct ao invés de Reverse ou vice-versa) faz o PID agir ao contrário: temperatura sobe, ventilador desacelera. O sistema vai direto para o limite máximo de temperatura. Sempre verifique antes de ligar.

3. Não colocar limite mínimo de saída Com saída em 0%, o inversor pode desligar completamente o ventilador. Se o forno ainda estiver quente e a bomba estiver em operação, a temperatura da água vai subir lentamente sem resfriamento nenhum. Coloque um mínimo de 15–20% na saída do PID.

4. Fazer autotune com carga variável Se fizer o autotune enquanto o forno está sendo carregado ou descarregado, a perturbação externa vai confundir o algoritmo de identificação. O resultado vai ser um PID mal ajustado. Estabilize o processo antes de iniciar.

5. Ignorar falha de sensor Sensor com fio partido entrega sinal fora de escala (0 mA ou abaixo de 4 mA). O PID vai interpretar como temperatura negativa e abrir a saída em 100% tentando “refrigerar”. Implemente verificação de underrange/overrange e force modo manual em caso de falha.


Conclusão

O controle PID com o S7-1200 para temperatura de água em sistemas de refrigeração de fornos é uma aplicação clássica e muito eficiente quando implementada corretamente. O bloco PID_Compact no TIA Portal entrega praticamente tudo pronto — você precisa configurar a direção certa, o tempo de amostragem adequado, os intertravamentos de segurança e fazer um bom autotune.

O detalhe que faz diferença na prática é o cuidado com os periféricos: sensor com sinal de corrente (4–20 mA) para evitar ruído, rampa generosa no inversor para proteger o motor do ventilador e um modo manual bem implementado para o operador assumir o controle em situações de emergência.

Se você implementou um controle parecido ou ficou com alguma dúvida sobre a configuração do PID_Compact, deixa nos comentários — esse tipo de troca de experiência é o que faz o técnico crescer de verdade.

Quer receber novos artigos sobre TIA Portal e automação industrial direto no seu e-mail? Assine a newsletter do PLCnaPratica.


FAQ

O PID_Compact do TIA Portal funciona no S7-1200 e no S7-1500? Sim. O PID_Compact é compatível com ambos os controladores. No S7-1500 você também tem o PID_3Step (para controle de atuadores de três pontos, como válvulas motorizadas) e o PID_Temp (focado em controle de temperatura com funcionalidades extras). Para a maioria das aplicações de temperatura industrial, o PID_Compact no S7-1200 já é suficiente.

Qual a diferença entre PID_Compact e PID_3Step no TIA Portal? O PID_Compact gera uma saída contínua (0–100%), ideal para inversor de frequência ou válvula proporcional. O PID_3Step é para atuadores que recebem pulsos de “abre” e “fecha” — como válvulas motorizadas sem retorno de posição. Para controle de ventilador via inversor, sempre use o PID_Compact.

Posso usar o bloco PID sem o módulo analógico, via Modbus para o inversor? Sim. Em vez de saída analógica, você pode escrever a saída do PID (0–100%) diretamente no registrador de referência de velocidade do inversor via Modbus RTU ou Modbus TCP. O S7-1200 suporta comunicação Modbus nativamente. A vantagem é eliminação do módulo analógico; a desvantagem é latência um pouco maior na comunicação serial.

Quanto tempo leva para o autotune do PID_Compact convergir? Depende da inércia do processo. Para temperatura de água com trocador de calor e ventilador, o pretuning costuma levar entre 5 e 15 minutos. O fine tuning pode levar mais 10 a 20 minutos. No total, conte com 30 a 45 minutos de processo estável para fazer um autotune completo e confiável.

O que fazer se o PID ficar oscilando mesmo após o autotune? Primeiro verifique se o sensor não está com ruído elétrico — isso confunde o autotune. Se o ruído estiver ok, tente aumentar o tempo integral (Ti) em 20–30% e reduzir o ganho proporcional (P). Oscilação geralmente indica ganho P alto demais ou Ti muito curto. O bloco PID_Compact tem um filtro de entrada (DerivativeTimeDFilterCoeff) que pode ajudar a suavizar o sinal se o ruído for inevitável.

Preciso de licença especial no TIA Portal para usar o PID_Compact? Não. O PID_Compact faz parte da biblioteca de tecnologia padrão do TIA Portal e está disponível sem custo adicional para CPUs S7-1200 e S7-1500. Basta adicionar o bloco ao projeto normalmente.