Observao: a parte do tempo tem que obrigatoriamente estar na forma crescente, seno dar erro. O vetor tempo e coluna devem ser verticais na matriz A.
Entender que o diagrama de blocos do simulink uma constante resoluo de equaes diferenciais
Exemplo Seno passando no Integrador
Que plota:
OBSERVAO MUITO IMPORTANTE
Colocar um diagrama de blocos tal como o da figura abaixo induz ao erro:
Observe que a funo de transferncia a funo de transferncia do seno. Logo, esperamos ver no nosso scope um sinal seno, ou seja, iniciado em zero com pi/2 no valor da amplitude (igual a 1), em pi voltando a ser zero, etc. Mas o que temos este sinal:
Que o mesmo sinal do problema anterior, ou seja, ele usou um integrador imediatamente antes do scope de forma escondida. Isso vai acontecer sempre que eu quiser plotar um sinal de uma funo de transferncia. Isso acontece SEMPRE que eu for plotar uma funo de transferncia excitada a um sinal contnuo, seja ele o degrau, seja ele o valor constante igual ao do bloco.
Se eu por exemplo usasse o bloquinho do seno e mandasse direto pro scope, no aconteceria esse problema!!!!
Como soluo, imediatamente antes do scope eu posso colocar um derivador para compensar esse 1/s criado de forma parasita:
Cujo plot me daria:
Salvar Variveis do Scope pro workspace
Para esta situao eu tenho duas opes:
1) Salvar na forma de structure with time:
Boto meu nome da varivel (no caso escolhi varia). E, para acessar o vetor tempo no Workspace eu fao: varia.time e para acessar os valores do eixo y eu fao: varia.signals.values
2) Salvar na forma de array
Neste caso, eu terei no workspace uma matriz de duas colunas e n linhas, daquela forma tradicional, onde o vetor coluna 1 (varia(:,1)) equivale ao tempo e o vetor coluna 2 (varia(:,2)) equivale aos valores de y.
Exemplo 2 Seno passando no Integrador e saindo como cosseno
Voltando ao exemplo 1, como seria se eu quisesse mesmo integrar o sinal seno de entrada como um cosseno puro na sada (e no 1 cos(t))?
Observe que para ficar somente como o termo cos(t) eu devo eliminar o 1 e inverter o sinal de cos(t). 1) Inverso de sinal de cos(t) -> bloquinho de ganho -1 2) Eliminar o valor 1 -> aps passar pelo inversor do sinal teremos cos(t) -1, ou seja, boto um somador com entrada constante de valor 1 Desta forma teremos:
Que me d:
Ou seja, um sinal de cosseno perfeito.
OBSERVAO
A opo de saturao do integrador causa um delay no sinal, perdendo muito de sua funcionalidade. Nunca usar o limitador do integrador. Em substituio a este utilizar o saturation do matlab:
Que me d:
Em que o saturation foi limitado para 5 e -5 V e o sinal senoidal foi projetado para 7V de pico.
Alterar o ganho individual aps a passagem em um MUX
DIAGRAMA DE ESPAO DE ESTADOS
Onde as matrizes A, B,C e D foram indexadas no bloco state-space. Eu modelei um impulso unitrio com dois degraus que se subtraem num intervalo de 0.1s e amplitude de 100. Assim, observei a resposta ao impulso unitrio do sistema de espaos de estados no meu scope.
BLOCO RELATIONAL OPERATOR E DATA TYPE CONVERSION
O bloco relational operator tem dentro dele as opes igual, maior, menor, etc. Mas seu grande porm que sua sada do tipo boolean e os demais sinais so do tipo double. Dessa forma, faz-se necessrio o bloco DATA TYPE CONVERSION para converter boolean em double para que possamos daqui pra frente tratar o sinal de forma igual pra igual.
SCOPE 3:
Observe que a curva roxa representa o seno superior e a azul representa o seno inferior. Sempre que o seno superior menor do que o inferior, conforme foi configurado no bloco, me d um sinal igual a 1 representado em amarelo. E quando desfaz a condio de ser menor o sinal zero.
BLOCO SIGN
A sada de um bloco sign sempre 1 se a entrada for positiva ou sempre -1 se a entrada for negativa.
BLOCO FCN O bloco FCN demanda obrigatoriamente um MUX imediatamente antes: Entrada 1 do MUX = u(1) Entrada 2 do MUX = u(2)
Assim, dentro do bloco eu posso manipular as entradas 1 e 2 da forma que eu quiser dentro do fcn. EX:
Onde a entrada 1 do FCN a entrada 1 do mux, ou seja, u(1) = SIGN (-1 ou 1) E a entrada 2 do FCN a entrada 2 do MUX, ou seja u(2) = seno
Mandei plotar seno/sign/FCN no scope 4:
CRIAO DE UM SUBSISTEMA Basta selecionar a parte que eu quero transformar num bloco com o mouse e logo em seguida apertar crtl + G.
CRIAO DE UM SUBSISTEMA MASK - IMPORTANTE
Aperto CTRL G:
SELECIONO O BLOCO SUBSYSTEM E APERTO CTRL + M
NO BLOCO ABAIXO EU ARRANJO UMA SERIE DE PLOTS DE MODO A FORMAR UM ICONE PARA MEU BLOCO
ASSIM MEU BLOCO FICA:
AGORA CONFIGURAR O DIAGRAMA DE BLOCOS DO MASK. SELECIONO O BLOCO E DEPOIS DOU CTRL + U
IREI CONFIGURAR OS GANHOS COM O MESMO NOME DAS VARIAVEIS CRIADAS const1 E const2:
E FAO A MESMA COISA PARA GAIN2 ONDE O GAIN SER CHAMADO DE const2
AGORA, BASTA CLICAR DUAS VEZES NO NOSSO BLOQUINHO QUE ELE ABRIR A JANELA DE CONFIGURAES:
QUE ME DAR O SEGUINTE PLOT:
0
INSERO DO BLOCO ENABLE - IMPORTANTE
Basta Simplesmente procurar pelo bloco ENABLE e posicionar dentro do diagrama de blocos com o ctrl U caso vc tenha feito uma MASK ou clicando duas vezes no bloco caso seja sem o MASK. Fica assim:
Em ENABLE eu deixo da seguinte forma:
Assim, no meu MASK, magicamente aparecer uma porta do ENABLE que somente funcionar quando essa entrada for POSITIVA