Mathcad Automatisierter Code-Export nach C++ oder · PDF file1 GB Speicherlimit (Mathcad...

Preview:

Citation preview

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

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:

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)

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

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)

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

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.

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

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

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)

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 !

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

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

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

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“

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

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“

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

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“

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

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

c.meissner@simulationtools.de www.simulationtools.de

Recommended