|
|
Simulink Coder: Funktion mul_s32_s32_s32_srxx eliminieren |
|
Barbed2wire |
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 11.03.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2015b
|
|
|
|
|
|
Verfasst am: 11.03.2016, 10:28
Titel: Simulink Coder: Funktion mul_s32_s32_s32_srxx eliminieren
|
|
|
|
|
Hallo,
ich habe eine Frage bezüglich der Code Generierung des Simulink Coders.
Ich habe C-Code von einem Subsystem meines Modells erzeugt.
In den Configuration Parameters unter Hardware Implementation habe ich folgende Einstelleungen gemacht:
Als Device Typ habe ich einen 32-bit Embedded Processor ausgewählt. Largest atomic size ist Int, und Floating -Point None.
Das Ziel ist, komplett mit dem Datentyp int32 zu arbeiten.
Im Code werden nun ca. 10 Funktionen vom Typ
erzeugt. Die Unterscheiden sich im Funktionsnamen nur durch die letzte Zahl (z.B. sr17 anstatt sr6) und um wieviele Bits geshifted ( z.B. <<15U und >>17U) wird bevor das return aufgerufen wird.
Die aufgerufene Funktion mul_wide_s32 hat folgende Definition:
Im Endeffekt führen diese Funktionen ja eine Multiplikation aus. Allerdings finde ich, dass dadurch der Code zu komplex wird, ich würde diese Funktionen also gerne durch die normale Multiplikation (*) ersetzen.
Dazu Interessiert mich, wodurch diese Funktionen generiert werden und was für einen Zweck sie genau haben. Wie kann ich also meine Simulation anpassen um diese Funktionen zu eliminieren?
Viele Grüße,
wire
|
|
|
|
|
Barbed2wire |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 11.03.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2015b
|
|
|
|
|
|
Verfasst am: 14.03.2016, 13:08
Titel:
|
|
Hallo,
ich habe noch eine weitere mir unverständliche Stelle im generierten Code:
Ich berechne in einem Subsystem einen Wert aus mehreren Variablen, einer Square-Funktion und Gains, sowie Addition und Division. Ich habe den entsprechenden Teil des Modells angehängt.
Die Werte von J_w, r, M und alpha werden über ein .mat-File eingelesen:
Das Ergebnis ist dann ein Faktor, mit welchem weitergerechnet wird.
Durch die Codeerzeugung werden die Werte in einem Struct abgelegt:
und hier noch der Code, in dem mit den Werten gerechnet wird:
Weiß jemand, wie der Simulink Coder dazu kommt, aus dem Wert 9 für Alpha 1207959552 zu machen? Auch bei M und Jw_10e8_Gain sind die Werte so komisch. (Ursprünglich 85 und 1*10e8)
Ich bin hier echt Ratlos und hoffe es hat jemand eine Idee oder einen Tipp für mich.
Viele Grüße
wire
Beschreibung: |
|
Download |
Dateiname: |
untitled.slx |
Dateigröße: |
19.23 KB |
Heruntergeladen: |
355 mal |
|
|
|
Barbed2wire |
Themenstarter
Forum-Newbie
|
|
Beiträge: 6
|
|
|
|
Anmeldedatum: 11.03.16
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2015b
|
|
|
|
|
|
Verfasst am: 21.03.2016, 10:28
Titel:
|
|
Das Problem mit den Parametern habe ich nun gelöst. Wenn diese in der Deklaration ausdrücklich als int32 benannt werden, erscheinen die Werte wie sie sollen im Code. Dies habe ich über Simulink.Parameter gelöst:
Beispiel:
Was die mul-Funktionen betrifft bin ich leider noch nicht weitergekommen. Hat niemand eine Idee?
wire
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
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.
|
|