Arquitetura do Sistema
O sistema de controle fuzzy é estruturado de forma modular, onde cada componente desempenha um papel fundamental na malha de regulação. A planta representa o processo a ser controlado, enquanto os sensores capturam as variáveis de interesse. O controlador fuzzy processa as informações e gera sinais de atuação que são aplicados aos atuadores, fechando o loop de controle.
fluxo_logico A[Planta] --> B[Sensor] B --> C[Controlador Fuzzy] C --> D[Atuador] D --> A
Etapas do Projeto do Controlador Fuzzy
Definição das Variáveis de Entrada e Saída
As variáveis fundamentais para o controladdor fuzzy são estabelecidas com base nas características do processo controlado. O erro rerpesenta a diferença entre o valor de referência e o valor atual da variável controlada, enquanto a taxa de variação do erro indica a dinâmica do sistema.
As faixas deUniverse (domínio) para cada variável são definidas conforme os limites operacionais do sistema:
erroFaixa = [-12, 12]; % Limites do erro
variacaoErroFaixa = [-250, 250]; % Limites da derivada do erro
acaoControleFaixa = [-1000, 1000]; % Limites do sinal de controle
Projeto das Funções de Pertinência
As funções de pertinência definem como os valores numéricos são convertidos em termos linguísticos. Para as variáveis de entrada, utiliza-se uma combinação de funções triangulares e gaussianas, proporcionando flexibilidade na representação das incertezas.
sistema = mamfis('Name', 'Controlador_Fuzzy');
sistema = addInput(sistema, erroFaixa, 'Erro');
sistema = addMF(sistema, 'Erro', 'trimf', [-12 -12 -6], 'NG'); % Negativo Grande
sistema = addMF(sistema, 'Erro', 'gaussmf', [0 12], 'PG'); % Positivo Grande
Para a variável de saída, funções trapezoidais são empregadas para garantir uma resposta suave do controlador:
sistema = addOutput(sistema, acaoControleFaixa, 'Acao');
sistema = addMF(sistema, 'Acao', 'trapmf', [-1000 -750 -500 -250], 'NG');
Construção da Base de Regras
As regras fuzzy estabelecem a relação entre as entradas e a saída do controlador. Cada regra associa combinações de termos linguísticos das entradas a uma ação de controle específica:
regras = [
1 1 7 1 5; % NG e NG → NG
1 2 7 1 5; % NG e NM → NG
2 2 7 1 5; % NM e NM → NG
];
sistema = addrule(sistema, regras);
Seleção do Método de Defuzzificação
O método de defuzzificação converte o conjunto fuzzy de saída em um valor numérico utilizável. O método do centroide é amplamente aplicado em sistemas de controle contínuo:
sistema = setfis(sistema, 'DefuzzMethod', 'centroid');
Integração com Simulink
Inserção do Módulo de Controle Fuzzy
O bloco de controlador fuzzy é adicionado ao modelo Simulink através da Fuzzy Logic Toolbox:
add_block('Fuzzy Logic Toolbox/Fuzzy Logic Controller', 'modelo/Controlador_Fuzzy');
set_param('modelo/Controlador_Fuzzy', 'FISName', 'Controlador_Fuzzy');
Construção do Laço de Controle
O modelo completo inclui a planta, sensores e blocos de condicionamento de sinal:
% Modelagem do conversor CC-CC
add_block('Simscape/Electrical/Specialized Power Systems/Universal Bridge', 'modelo/Conversor');
add_block('Simscape/Electrical/Sensors/Current Measurement', 'modelo/Sensor_Corrente');
add_block('Simscape/Electrical/Sensors/Voltage Measurement', 'modelo/Sensor_Tensao');
% Conexões entre blocos
add_line('modelo', 'Referencia/1', 'Erro/1');
add_line('modelo', 'Sensor_Corrente/1', 'Variacao_Erro/1');
add_line('modelo', 'Controlador_Fuzzy/1', 'Gerador_PWM/1');
Parâmetros de Simulação
Os parâmetros temporais são configurados para capturar a dinâmica do sistema:
tempoAmostragem = 1e-6; % 1 microssegundo
duracaoSimulacao = 0.25; % 250 milissegundos
Simulação e Validação
Análise das Formas de Onda
Os resultados da simulação permitem avaliar o desempenho do controlador através da comparação antre os valores de referência e as respostas reais do sistema:
% Desempenho de rastreamento
plot(tempo, I_referencia, 'r', tempo, I_medida, 'b--');
legend('Corrente de Referência', 'Corrente Medida');
xlabel('Tempo (s)'); ylabel('Corrente (A)');
Métricas de Desempenho
Os indicadores quantitativos permitem comparar diferentes estratégias de controle:
- Tempo de subida: 0,0029 segundos (2,9 ms)
- Sobressinal: 0,6%
- Erro em regime permanente: 0,04 A
Comparação com Controle PID Tradicional
| Métrica | Controle Fuzzy | Controle PID |
|---|---|---|
| Tempo de Subida | 2,9 ms | 2,5 ms |
| Sobressinal | 0,6% | 12% |
| Robustez | Alta | Média |
| Complexidade de Ajuste | Baixa | Alta |
Exemplo Funcional Completo
%% Projeto do Controlador Fuzzy
sistema = mamfis('Name', 'Controle_Motor');
sistema = addInput(sistema, [-12 12], 'Erro');
sistema = addMF(sistema, 'Erro', 'trimf', [-12 -12 -6], 'NG');
sistema = addMF(sistema, 'Erro', 'gaussmf', [0 12], 'PG');
sistema = addOutput(sistema, [-1000 1000], 'Acao');
sistema = addMF(sistema, 'Acao', 'trapmf', [-1000 -750 -500 -250], 'NG');
regras = [1 1 7 1 5; 1 2 7 1 5; 2 2 7 1 5; ...
7 7 1 7 7; 7 6 1 7 7; 7 5 1 7 7];
sistema = addrule(sistema, regras);
sistema = setfis(sistema, 'DefuzzMethod', 'centroid');
%% Construção do Modelo Simulink
new_system('Controle_Motor');
open_system('Controle_Motor');
add_block('Simscape/Electrical/Specialized Power Systems/Universal Bridge', 'Controle_Motor/Conversor');
add_block('Fuzzy Logic Toolbox/Fuzzy Logic Controller', 'Controle_Motor/Controlador_Fuzzy');
set_param('Controle_Motor/Controlador_Fuzzy', 'FISName', 'Controle_Motor');
add_line('Controle_Motor', 'Referencia/1', 'Erro/1');
add_line('Controle_Motor', 'Sensor_Corrente/1', 'Variacao_Erro/1');
add_line('Controle_Motor', 'Controlador_Fuzzy/1', 'Gerador_PWM/1');
%% Configuração da Simulação
sim('Controle_Motor.slx');
plot(tempo, I_referencia, 'r', tempo, I_medida, 'b--');
Depuração e Validação
A verificação do funcionamento correto do controlador fuzzy pode ser realizada através de diversas ferramentas de análise:
A visualização das funções de pertinência permite ajustar os parâmetros do controlador:
plotmf(sistema, 'input', 1); % Visualização da curva de pertinência do erro
O visualizador de regras mostra a relação entre as entradas e a saída:
visualizar(sistema, 'Rule');
A superfície de controle apresenta o comportamento do sistema para todas as combinações de entrada:
visualizar(sistema, 'Surface');
Referências Técnicas
- Silva et al. Controle Fuzzy Aplicado a Motores Síncronos de Ímã Permanente. Revista de Engenharia de Controle, 2024
- Documentação Oficial MathWorks: funções fuzzy
- IEC 61508 - Segurança Funcional de Sistemas de Controle
- Oliveira. Aplicações de Controle Fuzzy em Sistemas de Energia Renovável. Tese de Doutorado, USP, 2023