Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   
Bücher:

Fachkräfte:
Projektingenieur / Projektingenieurin Maschinenbau mit Kenntnissen in Matlab / Simulink
Durchführung von Simulationen und Berechnungen
HBI Haerter GmbH - Heidenheim an der Brenz (nahe Ulm)

Entwicklungsingenieur/in Hochautomatisiertes Fahren
Ableitung der Anforderungen an die Applikationssoftware des Lidar-Sensors im Projekt "Hochautomatisiertes Fahren"
Robert Bosch GmbH - Schwieberdingen

Entwicklungsingenieur (m/w) Modellierung
Entwicklung von innovativen Fahrzeug- systemen in den Bereichen Fahrerassistenzsysteme, eMobility und Komfort
Bertrandt Technikum GmbH - Ehningen bei Stuttgart

Elektromobilität: E-Drive Entwicklungsingenieur HV-Energiemanagement und Betriebsstrategie (m/w)
Entwicklung von Teilfunktionen für Energiebordnetze
MBtech Group GmbH & Co. KGaA - Sindelfingen

Software-Entwickler (m/w) Automotive
Implementierung und Verifizierung von Software-Modulen
MBtech Group GmbH & Co. KGaA - Neu-Ulm, Lindau

weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Simulink-Modell zu C-Code exportieren und in C-Prog verwende

 

TransporterXXL

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2017, 20:17     Titel: Simulink-Modell zu C-Code exportieren und in C-Prog verwende
  Antworten mit Zitat      
Ich habe das folgende Simulink-Modell:

Ich möchte das Modell als C-Code exportieren und in einem C-Programm verwenden. Das Target habe ich dazu schon auf "Embedded Coder" ("Code Generation") geändert und "continuous time" sowie "Reusable function" ("Interface") aktiviert. Es ist auch eine feste Schrittweite von 0.1 für den Solver eingestellt.

Außerdem habe ich das Modell mit einem Testmodell getestet:

Das Ergebnis (Scope) sieht so aus:

Jetzt habe ich ein C-Programm geschrieben, dass eigentlich das gleiche tuen sollte wie das Testmodell:
Code:
#include <stddef.h>
#include <stdio.h>
#include "pid_controller.h"            /* Model's header file */
#include "rtwtypes.h"

struct MODEL
{
    RT_MODEL_pid_controller_T model;
    B_pid_controller_T blockIO;/* Observable signals */
    DW_pid_controller_T dwork;/* Observable states */
    X_pid_controller_T contStates;/* Observable continuous states */
};

int main(int argc, char* argv[])
{
    FILE* fp;
    real_T sim_time;
    real_T time;
    real_T inputs[2];
    real_T outputs[1];
    struct MODEL model;
    memset(&model, 0, sizeof(struct MODEL));
    model.model.blockIO = &model.blockIO;
    model.model.dwork = &model.dwork;
    model.model.contStates = &model.contStates;

      pid_controller_initialize(&model.model);
      sim_time = 30.0;
      time = 0.0;
      inputs[0] = 1.0;
      inputs[1] = 0.0;
      outputs[0] = 0.0;
      fp = fopen("data.csv", "w");
      while (time < sim_time)
      {
          pid_controller_step(&model.model, inputs[0], inputs[1], &outputs[0]);
          time = model.model.Timing.t[0];
          fprintf(fp, "%.8f;%.8f;%.8f;%.8f\n", time, inputs[0], inputs[1], outputs[0]);
          if (time == 5.0 || time == 10.0 || time == 15.0 || time == 20.0 || time == 25.0 || time == 30.0)
          {
              if (inputs[0] == 1.0)
                  inputs[0] = 0.0;
              else
                  inputs[0] = 1.0;
          }
          inputs[1] = outputs[0];
      }
      pid_controller_terminate(&model.model);
      fclose(fp);
      return 0;
  }


Aber das Ergebnis sieht ganz ********** aus

Code:
data=dlmread('data.csv',';');
plot(data(:,1),data(:,2),data(:,1),data(:,3))
grid on;




Was habe ich falsch gemacht?


Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2018 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.