Capítulo 17 — Fundamentos de controle e realimentação
Mapa da aula
Aula 17 publicada. Mapa, exemplo, EX034.
flowchart TD
N0["17.1 Realimentação"]
N1["17.2 Controle PI"]
N2["17.3 Dados falsos e o controlador crédulo"]
N3["17.4 Detecção baseada em resíduos"]
N4["17.6 Atividade prática: Laboratório 7"]
N5["Síntese do capítulo"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5
N5 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX034"]
Desenho lógico
flowchart LR
N0["17.1 Realimentação"]
N1["17.2 Controle PI"]
N2["17.3 Dados falsos e o controlador crédulo"]
N3["17.4 Detecção baseada em resíduos"]
N4["17.6 Atividade prática: Laboratório 7"]
N5["Síntese do capítulo"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX034"]
[17.1 Realimentação]
|
v
[17.2 Controle PI]
|
v
[17.3 Dados falsos e o controlador crédulo]
|
v
[17.4 Detecção baseada em resíduos]
|
v
[17.6 Atividade prática: Laboratório 7]
|
v
[Síntese do capítulo]
|
v
[Exemplo resolvido] --> [Exercício EX034]
Objetivos de aprendizagem e conexão
Ao fim deste capítulo você será capaz de (1) descrever o controle em malha aberta e em malha fechada, setpoints, erro e limites dos atuadores; (2) explicar o controle proporcional-integral (PI) e a saturação do integrador (wind-up); (3) analisar como dados falsos de sensores — uma injeção de dados falsos — levam um controlador correto a um estado inseguro; e (4) projetar uma detecção baseada em resíduos usando medições físicas independentes e declarar seus pontos cegos. Ele se apoia no Capítulo 6 e prepara os capítulos 27 e 33.
17.1 Realimentação
Um controlador em malha fechada mede uma variável de processo, compara-a com um setpoint e ajusta um atuador para reduzir o erro. A realimentação torna os sistemas robustos a perturbações e a erros de modelo — e os faz confiar totalmente em seus sensores. O livro Feedback Systems, de Åström e Murray, disponível gratuitamente on-line, é o texto de referência deste capítulo. Em Hollin Hill, o controlador PI ajusta a vazão de entrada da PS3 para manter o nível do reservatório no setpoint. Ele só vê o reservatório pelo transmissor de nível, então o que esse transmissor informar é, para o controlador, a verdade. O restante deste capítulo acompanha a consequência dessa confiança.
17.2 Controle PI
Um controlador proporcional define a saída do atuador como $u = K_p e$; ele deixa um erro em regime permanente quando uma perturbação constante precisa ser equilibrada. Acrescentar um termo integral, $u = K_p e + K_i\int e\,dt$, elimina o erro em regime permanente, porque a integral continua crescendo até o erro ser zero. Os atuadores saturam — uma bomba não consegue entregar mais do que sua vazão máxima — e, enquanto saturado, a integral continua crescendo (wind-up), causando sobressinal quando o atuador sai da saturação. O anti-wind-up interrompe a integração durante a saturação.
17.3 Dados falsos e o controlador crédulo
Se um atacante soma um viés $b$ à medição de nível, o controlador regula o nível medido no setpoint, de modo que o nível real se estabiliza no setpoint menos $b$. O controlador funciona perfeitamente; o processo, não. Esse é o núcleo dos ataques conscientes do processo: o Stuxnet, como analisado por Langner (2011), manipulou as velocidades das centrífugas enquanto reproduzia para os operadores valores de aparência normal. As defesas não podem depender do mesmo fluxo de sensores que o atacante controla. Em Hollin Hill, um transmissor de nível com viés baixaria o nível real enquanto a tela do operador mostrasse o setpoint, então a defesa precisa vir de uma medição independente.
17.4 Detecção baseada em resíduos
Um resíduo é a diferença entre o que uma medição diz e o que um modelo independente prevê. Para um reservatório, o balanço de massa prevê a variação de nível a partir das vazões de entrada e de saída medidas de forma independente: $\Delta h = (q_{in} - q_{out})\Delta t / A$. Dois detectores: um resíduo de passo compara a variação do nível medido com a variação prevista num passo; um resíduo cumulativo compara o nível medido com o nível integrado a partir das vazões desde a última calibração confiável. O detector de passo pega um viés abrupto, mas não uma deriva lenta; o detector cumulativo pega a deriva, mas acumula o erro dos medidores, então precisa de recalibração periódica e de um limiar acima da deriva normal dos medidores. Um atacante que também controle os medidores de vazão derrota ambos — a independência dos caminhos de medição é o verdadeiro controle.
17.5 Exemplo resolvido: ataque ao nível de Hollin Hill (sintético)
O Laboratório 7 simula o controle PI de Hollin Hill (área em planta de 1.000 m², setpoint de 3,0 m, vazão de saída de 300 m³/h, bomba de entrada de 0–600 m³/h) por 48 h. Um viés em degrau de +1,5 m às 10 h leva o nível real para 1,5 m; os dois detectores alarmam em 10,0 h. Um viés de +0,04 m — pequeno o bastante para parecer erro do sensor — só é pego pelo detector cumulativo. Uma rampa lenta de 0,05 m/h escapa inteiramente do detector de passo; o detector cumulativo alarma em 10,6 h, quando o viés é de cerca de 0,03 m. Sem detecção, a rampa deixa o nível real em 1,1 m após 48 h.
17.6 Atividade prática: Laboratório 7
# Lab 7 - PI level control under sensor-bias attacks, and two residual detectors (synthetic, offline)
def run(attack=None, hours=48, dt=0.1):
A = 1000.0 # m2 reservoir plan area: level h (m), volume A*h (m3)
h, integ, sp, kp, ki = 3.0, 7.5, 3.0, 400.0, 40.0 # integ preloaded so u = 300 at start
est = h # mass-balance estimate from independently metered flows
prev_meas, step_t, cum_t, hmin = h, None, None, h
for k in range(int(hours / dt)):
t = k * dt
b = attack(t) if attack else 0.0
meas = h + b
err = sp - meas
u = kp * err + ki * integ
q_in = min(max(u, 0.0), 600.0) # pump limits 0..600 m3/h
if 0.0 < u < 600.0: integ += err * dt # anti-windup
q_out = 300.0
if k > 0 and step_t is None and abs((meas - prev_meas) - (est - est_prev)) > 0.05: step_t = round(t, 1)
if cum_t is None and abs(meas - est) > 0.03: cum_t = round(t, 1)
prev_meas, est_prev = meas, est
h += (q_in - q_out) / A * dt; est += (q_in - q_out) / A * dt
hmin = min(hmin, h)
return round(h, 2), round(hmin, 2), step_t, cum_t
print("columns: true final level m, true min level m, step-detector alarm h, cumulative-detector alarm h")
print("no attack ", run())
print("step bias +1.5 m ", run(lambda t: 1.5 if t >= 10 else 0.0))
print("step bias +0.04 m", run(lambda t: 0.04 if t >= 10 else 0.0))
print("ramp 0.05 m/h ", run(lambda t: 0.05 * (t - 10) if t >= 10 else 0.0))
Saída esperada:
columns: true final level m, true min level m, step-detector alarm h, cumulative-detector alarm h
no attack (3.0, 3.0, None, None)
step bias +1.5 m (1.5, 1.4, 10.0, 10.0)
step bias +0.04 m (2.96, 2.95, None, 10.0)
ramp 0.05 m/h (1.1, 1.1, None, 10.6)
Leia as quatro linhas à luz do exemplo resolvido. Sem ataque, o nível fica em três metros e nenhum detector dispara. O viés em degrau grande é pego pelos dois detectores ao mesmo tempo, e o nível real se estabiliza um metro e meio abaixo. O degrau pequeno e a rampa lenta são onde os detectores diferem: só o detector cumulativo os vê, e a rampa, se deixada em paz, arrasta o nível real para cerca de um metro. Lembre-se de que os medidores de vazão do laboratório são perfeitos, então os tempos reais de detecção seriam mais tardios.
17.7 Erros comuns e limites
- Igualar "o controlador funcionou" a "o processo está seguro".
- Detecção que usa o mesmo caminho de dados da malha de controle.
- Limiares definidos sem medir o ruído e a deriva normais.
- Ignorar o wind-up e a saturação no raciocínio de segurança operacional.
- Resultados de simulação apresentados como comportamento da planta; o Laboratório 7 é um modelo simplificado, com medidores de vazão perfeitos.
Para Hollin Hill, o EX034 mostra claramente o problema da dependência: o sensor de nível e o medidor de vazão de entrada estão ambos ligados à RTU3, então comprometer uma única RTU derrota os dois lados do resíduo.
Exercícios — capítulo 17
EX033 — Compromisso do limiar. Objetivo: ajustar um detector. Entradas: Laboratório 7. Passos: (1) acrescente ruído gaussiano com desvio-padrão de 0,01 m ao nível medido (semente 17) e conte os falsos alarmes do detector cumulativo no caso sem ataque com os limiares 0,03 e 0,05; (2) informe o tempo de detecção da rampa nos dois limiares; (3) recomende um limiar. Evidência esperada: tabela e recomendação. Rubrica: 3 = experimento implementado corretamente, compromisso explicado, recomendação ligada ao tempo de resposta; 2 = apenas um limiar; 1 = não executado; 0 = nada.
EX034 — Argumento de independência. Objetivo: argumentar a independência da detecção. Entradas: a arquitetura da LRWA: sensor de nível e medidor de vazão de entrada ambos ligados à RTU3; medidor de vazão de saída na PS4, na RTU4. Passos: identifique quais posições do atacante derrotam o detector de resíduos e proponha uma mudança de arquitetura que melhore a independência. Evidência esperada: meia página. Rubrica: 3 = comprometer a RTU3 derrota nível e vazão de entrada, a mudança propõe um caminho separado (por exemplo, transmissor de nível independente para um registrador separado ou conferência física da régua); 2 = parcial; 1 = genérico; 0 = nada.
Síntese do capítulo
A realimentação torna os sistemas robustos e crédulos. Um sensor com viés leva um controlador correto a um estado físico incorreto. Detecte com resíduos construídos a partir de física independente, use testes de passo e cumulativos para ataques abruptos e lentos, defina os limiares a partir do ruído medido e lembre-se de que a independência dos caminhos de medição — e não a engenhosidade do algoritmo — é o que derrota um atacante capaz.
Continue estudando — capítulo 17 de 50
← Capítulo 16 · Índice de capítulos do curso · Capítulo 18 →
Siga para a próxima lição escrita.