PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Softwaremäßige PWM-Generierung



stkrg
14.04.2008, 17:30
Hallo.
Ich versuche mittels einer Data Aqusition Card (ME4680s der Firma Meilhaus) und Matlab + Simulink + Real Time Workshop, eine softwaremäßige Positionsregelung mit der dazu gehörigen Pulsweitenmodulation zu realisieren um damit einen 4 achsigen Roboterarm zu betreiben. Matlab kompiliert aus der im Modell erstellten Schaltung dann ein Realtime C-Executable. Normalerweise kenne ich die Realisierung von PWM durch Elektronikkomponenten wie Mikrokontroler o.ä. Meist mit einer Frequenz von 3 kHz oder höher und einer Granularität von 2⁸ was einer Sampletime von 768 kHz entspräche. Da die Karte nur 500 000 Sample pro Sekunde schafft bin ich mit der PWM und der Samplefrequenz entsprechend niedriger gegangen und habe auch verschiedenen Kombinationen ausprobiert, welche alle eher unbefriedigend waren. Eine Supportanfrage beim Hersteller lieferte auch keine weiteren Hinweise, da diese meist von einem Betrieb unter Windows ausgehen und wenn Linux dann kein Realtime-Linux. Laut Support müsste ich die Leistungsfähigkeit dort selbst ermitteln.
Gibt es jemanden der in dieser Richtung schon Erfahrungen gesammelt hat und mir sagen kann ob es realistisch ist die PWM softwaremäßig zu generieren um einen ruhigen kontrollierten Motorbetrieb zu gewährleisten oder ob man sie besser als externe Komponente auslagert. Bei den meisten Beispielen aus dem Internet, die vergleichbar waren, war die PWM entweder extern realisert oder aber nicht näher beschrieben worden so das ich kein Aufschluss über die Frequenzen bekommen konnte.

Danke für eure Aufmerksamkeit. O:)

avion23
14.04.2008, 20:17
IMHO macht das keiner, weil du dafür ein echtzeitfähiges OS brauchst. ALso entweder DOS oder ein realtime linux. Deswegen macht das auch kaum einer.

Was spricht dagegen, die PWM generierung in Hardware aus zu lagern? Z.B. kleiner atmel, rs232 und nur die PWM neu setzen.

theodrin
14.04.2008, 20:43
Hallo!

Nur als Anmerkung. Du wirst jetzt ja eh ein externes PWM-Signal verwenden.

Hab das gleiche mal mit LabView und ner DAQ-Karte probiert. War glaub ich ne 6009er. Aber ist eigentlich eh egal. Hauptsache war dass es nur einen analogen Ausgang hatte. Da hab ich mir ja auch gedacht, das müsste klappen. Was soll schon so schwer daran sein? Na ja, also ich hatte zuerst mal mehrere Schleifen. Ja und damals noch mit Mono-Core prozessor. (Bei den Multi-Core haben sich die von NI für Multi-Threading schon was einfallen lassen) Also damit hatte ich große Probleme. Allein wenn ich mir das PWM mit dem Oszi angesehen hab. Es war wackelig und das Tastverhältnis war auch sehr unstabil. Also ich denke mal, bei dir ist das so ähnlich.
Dann hab ich nur eine Schleife probiert. Aber das hat eigentlich nicht wirklich was gebracht. Ich denke, das liegt daran dass halt Windows im Hintergrund auch andere Sachen macht und nicht nur "für dich" arbeitet. Aber das muss nicht stimmen. Also wenn mir wer zu dem widerspricht. Nur zu!!

PICture
15.04.2008, 04:25
Hallo!

@ theodrin

Ich kann es leider nur bestätigen. So weit ich weiß (ich habe früher ein bischen PCs in ASM programmiert), sogar unter DOS mehrere Hardware- und Softwareinterrupts (z.B. Tastatur- und Mausabftrage) alle Programme ständig unterbrechen. Den Linux kenne ich gar nicht, aber vermute, dass es genauso ist.

Dagegen kann man aber nichts machen nur eigenes Programm bzw. OS schreiben, der andere Sachen macht nur wenn sonst nichts läuft und lässt sich dabei jederzeit unterbrechen.

Man kann auch, so wie der avion23 schon vorgeschlagen hat, Karten mit CPUs anwenden die ununterbrochen was machen können (z.B. wie Grafikkarten bei PCs) und das ist einfacher.

MfG

Gock
15.04.2008, 09:43
Ich weiß nicht, was genau ein Realtime-Workshop ist, aber solange die PC CPU unter Windows verwendet wird, kann es auch nach meiner Erfahrung nicht funktionieren.
Da hilft nur ein Prozessor auf der Karte (siehe die beiden Vorredner) oder aber zB Labview Realtime.
Gruß

pongi
15.04.2008, 16:03
Es gibt für Matlab einen TrueTime Toolbox + Kernel von irgendeiner Universität. Ich hab an der Uni damit Servos angesteuert, hat funktioniert. Google mal danach.

stkrg
28.04.2008, 17:15
Danke für die Hilfe, ich habe mich entschlossen die PWM extern mittels Microcontroller zu erzeugen.
O:)

CLOSED