Mathcad Automatisierter Code-Export nach C++ oder · PDF file1 GB Speicherlimit (Mathcad...
Transcript of Mathcad Automatisierter Code-Export nach C++ oder · PDF file1 GB Speicherlimit (Mathcad...
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
[email protected] www.simulationtools.de