Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   
Bücher:

Fachkräfte:
Softwareentwickler (m/w) für automatische Codegenerierung
Softwareentwicklung mit MATLAB/Simulink und dSPACE TargetLink im Bereich Fahrwerkregelsysteme
Elektronische Fahrwerksysteme GmbH - Ingolstadt

Entwicklungsingenieur (m/w) für modellbasierte Softwareentwicklung
Modellbasierte Softwareentwicklung mit MATLAB/Simulink und dSPACE TargetLink
Elektronische Fahrwerksysteme GmbH - Ingolstadt

Software-Entwicklungsingenieur (m/w) Referenzierungsmethoden autonomes Fahren
Automatisierung von Bewertungsmethoden und Kalibrierverfahren nach Kundenanforderungen
Elektronische Fahrwerksysteme GmbH - Ingolstadt

Application Engineer (m/w)
Unterstützung des Vertriebs bei der Erstellung von Angeboten und Präsentation beim Kunden
Control Techniques GmbH - Hennef

Softwareentwickler Automotive Getriebesteuerungen (m/w)
Umsetzung der Softwarefunktionalität modellbasiert nach Spezifikation
MBtech Group GmbH & Co. KGaA - Sindelfingen

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 - 2017 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.