O mesmo procedimento tem de ser realizado para a saída e também para o bloco de ganho do sistema, de forma a ter-se um casamento de informações no âmbito de variáveis
- Após essa preparação inicial, precisa-se preparar a lógica do sistema de embarque de forma que o código gerado em C/C++ pelo Simulink seja efetivamente disponibilizado na forma própria do embarque. Para tal, clique no item Model Configuration Parameter
- Será aberta a janela de configurações, conforme Figura abaixo:
- Na aba Code Generator > Target Selection > Browser, selecione a opção ert.tlc – Embedeed Coder . A linguagem utilizada para o embarque será o C.
- A tela de configuração se alterará de maneira sutil de forma que fique conforme Figura abaixo:
- Clique em Set objectives… na aba Code Generation Advisor, conforme Figura abaixo:
- Adicione o item Traceability e clique OK.
- Na aba Code Generator > Report selecione os itens conforme Figura abaixo. Aperte OK.
- No bloco Simulink, clique o com botão direito sobre o bloco G e em seguida clique em Build This Subsystem, conforme Figura abaixo.
- Aparecerá a seguinte tela. Clique em Build.
- Após a geração de código pelo Simulink/Matlab, algumas pastas e arquivos de interesse aparecerão na pasta onde se encontra o arquivo base Simulink.
- Os arquivos os quais serão utilizados no programa em C/C++ são aqueles do tipo .h e .c, selecionados na pasta Arquivos de Interesse. Nela é possível perceber que o arquivo ert_main.c é o arquivo principal o qual deverá chamar as demais rotinas.
- A partir de agora será chaveado para o ambiente Eclipse, de forma que se consiga rodar o programa recém-criado. Rodo ele como se administrador fosse.
- Já no ambiente Eclipse, clica-se em File > New > C++ Project
- Em seguida, dê um nome para o projeto (no caso, será chamado de Main) para um Hello World C++ Project e o compilador de interesse (no caso, o MinGW GCC). Em seguida, clique em Finish.
- A IDE Eclipse criará a seguinte pasta Includes e a pasta src. Em princípio, não se mexe na pasta Includes, sendo necessário que toda e qualquer modificação será realizada dentro da pasta src.
- Clicando no arquivo Main.cpp, a vista do que se tem é o respectivo programa. O mesmo não será utilizado.
- Copia-se os arquivos da pasta Arquivos de Interesse (passo 23) para a pasta src no ambiente Eclipse, resultando na seguinte configuração:
- Copia-se todo o conteúdo em C do arquivo ert_main.c para o arquivo Main.cpp (deletando, obviamente todo o Hello World!!! do Main.cpp).
- Como pretende-se rodar um programa em C++ utilizando-se de bibliotecas criadas para C, é importante que se ajuste o programa Main.cpp para levar em consideração todas as bibliotecas herdadas do C. Esse procedimento é detalhado na Figura abaixo, por meio de chamadas do tipo extern para as bibliotecas.
- Olhando atentamente a função main do programa (Figura abaixo), percebe-se a existência 5 pontos principais:
- G_initialize()
- rt_OneStep() – a qual está comentada.
- printf
- while
- G_terminate()
O G_initilize() é imprescindível que esteja presente para a inicialização das variáveis e o bom funcionamento do programa como um todo. A função rt_OneStep() é o coração do programa. Temos de chamar ela (isso ficará para um próximo passo). As funções printf e while não são importantes para este programa e a função G_terminate() funciona como um destrutor (então, é melhor deixar).
- Para rodar o programa do jeito que ele está, realize a seguinte sequência:
- Clique em Build All na aba Project
Caso não ocorra nenhum problema, aparecerá algo da seguinte forma no Console.
- Após criar o seu projeto, clique em Run
- O resultado do programa rodando está na Figura abaixo, que nada mais é do que o printf() em ação.
- Para roda o programa recém-criado no ambiente Simulink no ambiente Eclipse, realizar-se-á o seguinte:
- Deletar a função printf() original do arquivo herdado do Simulink;
- Deletar a função while() original do arquivo herdado do Simulink;
- Setar valores para as variáveis de entrada;
- Chamar a função rt_OneStep();
- Coletar o valor da variável de saída; e
- imprimir o resultado na tela.
- Após rodar o programa, o resultado obtido encontra-se na Figura abaixo.
Nenhum comentário:
Postar um comentário