21
19.11.2009 C. Meißner - PTC World 2009 Stuttgart 1 – Mathcad ® Automatisierter Code-Export nach C++ oder Windows-DLL PTC World 2009 Stuttgart Dipl.-Ing. Christian Meißner SimulationT ools www.simulationtools.de

Mathcad Automatisierter Code-Export nach C++ oder · PDF file1 GB Speicherlimit (Mathcad ® 14) Zwischenergebnisse

  • Upload
    buikien

  • View
    287

  • Download
    8

Embed Size (px)

Citation preview

Page 1: Mathcad Automatisierter Code-Export nach C++ oder  · PDF file1 GB Speicherlimit (Mathcad ® 14) Zwischenergebnisse

19.11.2009 C. Meißner - PTC World 2009 Stuttgart 1

– Mathcad® –

Automatisierter Code-Export

nach C++ oder Windows-DLL

PTC World 2009 Stuttgart

Dipl.-Ing. Christian MeißnerSimulation Tools

www.simulationtools.de

Page 2: Mathcad Automatisierter Code-Export nach C++ oder  · PDF file1 GB Speicherlimit (Mathcad ® 14) Zwischenergebnisse

20.11.2009 C. Meißner - PTC World 2009 Stuttgart 2

Was ist Mathcad® ?

Arbeitsblatt

Text

Grafiken

Variablendefinitionen

Gleichungen in Standardnotation

Berechnungs-ergebnisse

Sehr übersichtliches, leicht zu erlernendes und leistungsfähiges Mathematikprogramm.

Beispiel:

Page 3: Mathcad Automatisierter Code-Export nach C++ oder  · PDF file1 GB Speicherlimit (Mathcad ® 14) Zwischenergebnisse

20.11.2009 C. Meißner - PTC World 2009 Stuttgart 3

1. Vorteile von Mathcad®

● Einfache Berechnungen(z.B. Dimensionierung von Maschinenelementen)

Haupteinsatzgebiete von Mathcad ®

● Lehre (z.B. Beispielaufgaben)

Page 4: Mathcad Automatisierter Code-Export nach C++ oder  · PDF file1 GB Speicherlimit (Mathcad ® 14) Zwischenergebnisse

20.11.2009 C. Meißner - PTC World 2009 Stuttgart 4

● Schnelle Entwicklung von (Test-)Algorithmen

1. Vorteile von Mathcad®

Haupteinsatzgebiete von Mathcad ®

○ Visualisierung in Diagrammen

○ Debugging-Funktion zur Fehlersuche

○ Selektive Neuberechnung

○ Übersichtliche Programmierung

○ Formatierte Kommentare

○ Im- und Export von vielen Dateiformaten

○ ...

► Mathcad® ist eine sehr gute Entwicklungs-, Berechnungs und Dokumentationssoftware

Page 5: Mathcad Automatisierter Code-Export nach C++ oder  · PDF file1 GB Speicherlimit (Mathcad ® 14) Zwischenergebnisse

20.11.2009 C. Meißner - PTC World 2009 Stuttgart 5

1. Vorteile von Mathcad®

Gleichungen in Standdardnotation

Große Funktionsbibliothek

Erweiterungspakete(Extensionpacks)

Bildverarbeitung, Dateizugriff, Datenanalyse, DGL-Löser,

Matrizen, Wahrscheinlichkeit, Zeichenfolgen, ...

DiagrammdarstellungDateneingabe

Excel

Integrierte Dokumentation

Datenanalyse, Bildverarbeitung,

Signalverarbeitung, Wavelets

Erweiterung durch DLL‘s

Pro/E-Schnittstelle

#include <stdio.h>void main(char *text)

Page 6: Mathcad Automatisierter Code-Export nach C++ oder  · PDF file1 GB Speicherlimit (Mathcad ® 14) Zwischenergebnisse

20.11.2009 C. Meißner - PTC World 2009 Stuttgart 6

2. Komplexe Berechnungen in Mathcad®

● Vorteile:

z.B. Handling von große Datenmengen

○ Viele unterstützte Dateiformate (Input/Output)

○ Sequenzielle Abarbeitung von Dateien, z.B. über Skripte

● Probleme:

○ Einheitliche Verwendung von 52(64)-bit-Variablen

○ 1 GB Speicherlimit (Mathcad® 14)

○ Zwischenergebnisse

● Beispiel:

Eine Synthesealgorithmus liefert 10 Mio. Getriebestrukturen mit je 8 Zähnezahlen, 6 Übersetzungen und 7 Bewertungsgrößen.

Mathcad®: Zähnezahlen: 8x64 bitÜbersetzungen: 6x64 bitBewertungen: 7x64 bit x 10 Mio. Varianteninsgesamt 1602 MB→ nicht vollständig lösbar

C++: Zähnezahlen: 8x7 bitÜbersetzungen: 6x16 bitBewertungen: 7x8 bit x 10 Mio. Varianteninsgesamt 246 MB→ vollständig lösbar

Page 7: Mathcad Automatisierter Code-Export nach C++ oder  · PDF file1 GB Speicherlimit (Mathcad ® 14) Zwischenergebnisse

20.11.2009 C. Meißner - PTC World 2009 Stuttgart 7

2. Komplexe Berechnungen in Mathcad®

z.B. Programm mit vielen Unterfunktionsaufrufen

y1(x1,x2)=f1(y2,y3)Hierachiestufe 1:

Hierachiestufe 2:

Hierachiestufe 3:

● Dasselbe Beispiel in C++ :

y2=f2(y4) y3=f3(y5)

y4=f4(x1,x2) y5=f5(x1,x2)

up-stream

down-stream

→ 12 Paramterübergaben (Schreiboperationen) in Mathcad®

● Beispiel in Mathcad® :

y1(x1,x2)=f1(y2,y3)

y2=f2(y4) y3=f3(y5)

y4=f4(x1,x2) y5=f5(x1,x2) Glo

bale

r S

peic

her

→ 8 Paramter-übergaben in C++

C++ ist u.a bei der Verwendung eines globalen Speichern schneller.

Page 8: Mathcad Automatisierter Code-Export nach C++ oder  · PDF file1 GB Speicherlimit (Mathcad ® 14) Zwischenergebnisse

20.11.2009 C. Meißner - PTC World 2009 Stuttgart 8

2. Komplexe Berechnungen in Mathcad®

Fazit aus Kapitel 2:

● Verschiedene Programmiersprachen haben verschiedene Vorteile

○ Mathcad®: schnelle Entwicklung

gute Visualisierung

○ C++: hohe Rechengeschwindigkeit

geringer Speicherbedarf

...

Ziel:

● Vereinen der Vorteile beider Systeme

Voraussetzung:● Bidirektionale Übergabemöglichkeit für Parameter

Page 9: Mathcad Automatisierter Code-Export nach C++ oder  · PDF file1 GB Speicherlimit (Mathcad ® 14) Zwischenergebnisse

20.11.2009 C. Meißner - PTC World 2009 Stuttgart 9

3. Erweiterungskonzepte von Mathcad®

Dateiverknüpfungen

Berechnung

Formelsammlung 1 Formelsammlung 2● Verknüpfen von

Mathcad®-Dateien

● Bessere Strukturierung

Komponenten● Bidirektionaler

Datenaustausch (z.B. nach EXCEL) Mathcad®-Berechnung

Excel

Dynamische Bibliotheken (DLLs)

● Compilierter Programmcode

● Sehr schneller Datenaustausch

● Programmcode sicher vor dem

Zugriff Dritter bzw. vor Manipulation DLL

Mathcad®-Berechnung

Funktionsaufruf

Page 10: Mathcad Automatisierter Code-Export nach C++ oder  · PDF file1 GB Speicherlimit (Mathcad ® 14) Zwischenergebnisse

20.11.2009 C. Meißner - PTC World 2009 Stuttgart 10

4. Erstellung und Verwendung von DLLs

Betriebssystem: Mircosoft Windows®

MS Word MS Excel

Hardware-DLL

Anwendungen

PTC Mathcad

Dynamische Bibliotheken (DLL‘s)

Kernel32.dll Windows API

eigene DLL

Funktions-aufruf

Funktions-beschreibung

• Beim Programmstart: Laden aller DLL‘s in den Speicher(z.B. in „C:\mathcad\userfi\“)

• Beim einem Funktionsaufruf in Mathcad: In Mathcad definierte Funktion?Mathcad – interne Funktion?DLL – Funktion?

neue DLL

Funktions-beschreibung

Vorteile:

Aktionen:

• einfache Erweiterung von bestehender Software (zusätzliche Funktionen)

• einfache Aktualisierung von Funktionen (Austausch der DLL)

Page 11: Mathcad Automatisierter Code-Export nach C++ oder  · PDF file1 GB Speicherlimit (Mathcad ® 14) Zwischenergebnisse

20.11.2009 C. Meißner - PTC World 2009 Stuttgart 11

4. Erstellung und Verwendung von DLLs

Ziel: Erhöhung der Rechengeschwindigkeit

Teil 1: Optimierung des Mathcad®-Programmcodes

Teil 2: Auslagerung von rechenintensiven Funktionen in eine DLL

Beispiel: Fahrzeugsimulation – vereinfachtes Modell

Rechenzeit einer einfachen 10s-Fahrdynamiksimulatio n

9,062 s

4,703 s

3,469 s

3,359 s

2,390 s

0 1 2 3 4 5 6 7 8 9 10 11

Vollständige Berechnung in MathCAD

Optimierung des MathCAD-Codes

Teile des Reifenmodells als DLL

Vollständiges Reifenmodell als DLL

Vollständige Fahrsimulation als DLL

Rechenzeit [s]

• Zusammenfassen von Funktionen, Preprozessing, Interpolationsroutinen, ...

• Schrittweises Auslagerung von Funktionen

• Zwischentest der Funktionen

• Reduktion der Übergabeparameter durch Ablegen im DLL-internen Speicher

Geschwindigkeitssteigerung bei dieser Anwendung um Faktor 3,8 !

Ausführungszeit auf 26% gesenkt !

Page 12: Mathcad Automatisierter Code-Export nach C++ oder  · PDF file1 GB Speicherlimit (Mathcad ® 14) Zwischenergebnisse

20.11.2009 C. Meißner - PTC World 2009 Stuttgart 12

Konvertierungstool

• www.SimulationTools.de

4. Erstellung und Verwendung von DLLs

Kurzanleitung zur Erstellung von DLLs:

C/C++-CodeMathcad-Sheet

V. 14

#include <stdio.h>void main(char *text){ ...}

händisch durch Abprogrammieren

Bildquellen: image.spreadshirt.net, www.abelhome.de

Compiler / Linkerfertige DLL

• Microsoft® Studio Entwicklungsumgebung

• OpenWatcom (www.openwatcom.de)

Sourcecode / Bibliotheken

+ von PTC mitgelieferte Dokumente:„Mcadincl.h“,„Mcaduser.lib“

Opti-mierungen

Page 13: Mathcad Automatisierter Code-Export nach C++ oder  · PDF file1 GB Speicherlimit (Mathcad ® 14) Zwischenergebnisse

20.11.2009 C. Meißner - PTC World 2009 Stuttgart 13

4. Erstellung und Verwendung von DLLs

Fazit:

● Speichern des Mathcad-Arbeitsblattes als *.xmcd

● Öffnen der *.xmcd-Datei im Mathcad-C-Konverter

● Ggf. benötigte Funktionen auswählen

● DLL speichern

● Abhängigkeiten werden geprüft

● C-Code wird erstellt

● C-Code wird zur DLL compiliert

● Dokumentation wird erstellt

Notwendige Arbeitsschritte:

● Bisher: DLL-Erstellung sehr aufwändig → wenige praktische Verwendung

● Neu: automatische DLL-Erstellung → Standardoptimierungstool

Page 14: Mathcad Automatisierter Code-Export nach C++ oder  · PDF file1 GB Speicherlimit (Mathcad ® 14) Zwischenergebnisse

20.11.2009 C. Meißner - PTC World 2009 Stuttgart 14

4. Erstellung und Verwendung von DLLs

1. Mathcad-Programm als unkomprimierte *.xmcd-Datei speichern

Arbeitsschritte am Beispiel „Gleitlagerberechnung“

FL

FD

FVβD

Kräfte und Druckverteilungen am Gleitlager

F D=SoD⋅B⋅D⋅⋅∣w∣

2

F V=SoV⋅B⋅D⋅⋅̇

2

Page 15: Mathcad Automatisierter Code-Export nach C++ oder  · PDF file1 GB Speicherlimit (Mathcad ® 14) Zwischenergebnisse

20.11.2009 C. Meißner - PTC World 2009 Stuttgart 15

4. Erstellung und Verwendung von DLLs

2. *.xmcd-Datei im Mathcad-C-Konverter öffnen

Arbeitsschritte am Beispiel „Gleitlagerberechnung“

Page 16: Mathcad Automatisierter Code-Export nach C++ oder  · PDF file1 GB Speicherlimit (Mathcad ® 14) Zwischenergebnisse

20.11.2009 C. Meißner - PTC World 2009 Stuttgart 16

4. Erstellung und Verwendung von DLLs

3. gewünschte Funktionen auswählen

Arbeitsschritte am Beispiel „Gleitlagerberechnung“

Projektkurzzeichen

Funktionsauswahl

Automatisches Ermitteln der Abhängigkeiten von anderen Funktionen

Page 17: Mathcad Automatisierter Code-Export nach C++ oder  · PDF file1 GB Speicherlimit (Mathcad ® 14) Zwischenergebnisse

20.11.2009 C. Meißner - PTC World 2009 Stuttgart 17

4. Erstellung und Verwendung von DLLs

4. Ausgabeformat wählen

C-Code (*.h)

DLL-Code (*.c)

DLL-Datei (*.dll)

Dokumentation (*.pdf)

Arbeitsschritte am Beispiel „Gleitlagerberechnung“

Page 18: Mathcad Automatisierter Code-Export nach C++ oder  · PDF file1 GB Speicherlimit (Mathcad ® 14) Zwischenergebnisse

20.11.2009 C. Meißner - PTC World 2009 Stuttgart 18

4. Erstellung und Verwendung von DLLs

5. Speichern – als DLL

Arbeitsschritte am Beispiel „Gleitlagerberechnung“

● Erstellendes C-Codes

● Compilierendes DLL-Codes

● Kopieren der DLL in das Mathcad®- Verzeichnis „...\userfi“

● Registrieren der Hilfeeinträge

● Erstellen der Dokumentation

Page 19: Mathcad Automatisierter Code-Export nach C++ oder  · PDF file1 GB Speicherlimit (Mathcad ® 14) Zwischenergebnisse

20.11.2009 C. Meißner - PTC World 2009 Stuttgart 19

4. Erstellung und Verwendung von DLLs

5. Speichern – automatische PDF-Dokumentation

Arbeitsschritte am Beispiel „Gleitlagerberechnung“

Page 20: Mathcad Automatisierter Code-Export nach C++ oder  · PDF file1 GB Speicherlimit (Mathcad ® 14) Zwischenergebnisse

20.11.2009 C. Meißner - PTC World 2009 Stuttgart 20

4. Erstellung und Verwendung von DLLs

6. Wieder-Einbinden in Mathcad

Arbeitsschritte am Beispiel „Gleitlagerberechnung“

Aufruf der in der DLL gespeicherten Sommerfeld-Funktion

Page 21: Mathcad Automatisierter Code-Export nach C++ oder  · PDF file1 GB Speicherlimit (Mathcad ® 14) Zwischenergebnisse

20.11.2009 C. Meißner - PTC World 2009 Stuttgart 21

5. Zusammenfassung

● Mathcad als Leistungsfähige Software für Lehraufgaben, Einfache Berechnungen

und die Entwicklung von Berechnungsalgorithmen

● Erweiterung von Mathcad durch DLLs

● Erhöhung der Rechengeschwindigkeit

● Quellcodeschutz

● Erstellung von DLLs

● Bisher händisch und aufwändig

● NEU: automatisiert durch Konvertierungstool

● Ausgabeformate:

● DLL, C-Code, DLL-Code

● Inkl. Vollautomatischer Dokumentation

Vielen Dank für Ihre

Aufmerksamkeit

Dipl.-Ing.

Christian Meißner

SimulationToolsRöhrsdorfer Str. 1809117 Chemnitz

Telefon +49 (0) 371 – 2391446Telefax +49 (0) 371 – 2391447

[email protected] www.simulationtools.de