Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: PLM geht nicht direkt auf 100% Tastverhältnis Kategorie: Programmierung (von Theo - 5.06.2002 13:52)
Als Antwort auf Re: PLM geht nicht direkt auf 100% Tastverhältnis von KM - 4.06.2002 19:53

> > Hallo zusammen,
> > ich muÃ?te feststellen, dass es wohl ein Problem sein kann die PLM-Kanaele 0 und 1 von 0% (bzw. gerade initialisiert) auf 100% Tastverhaeltnis zu steuern. Konkret (s.Quelltext unten): Ich initialisiere die PLM Kanaele 0 und 1, setze die timebase auf 25,6 Mikrosekunden und die Periodenlaenge auf 195 Ticks. Direkt danach kann ich die Funktion plm.out nicht mit 195 "fuettern". Das hat lediglich ein Low zur Folge. Erst durch setzen von 194 Ticks dann _zwingend_ ein sleep 5; und nun 195 Ticks gehen beide Ausgaenge auf konstant High. Das ist auch bei einem Sprung von 50% auf 100% Tastverhaeltnis so. D.h. auch hier muss ich erst ueber 194 Ticks gehen.
> > In umgekehrter Richtung (Tastverhaeltnis reduzieren) klappt der Sprung auf 0% Tastverhaeltnis jederzeit.
> >
> > Hat jemand aehnliche Erfahrungen gemacht und weiss vielleicht eine Loesung feur dieses seltsame Verhalten der PLM? Bin fuer jeden Vorschlag dankbar, der mir solche Workarounds erspart.
> >
> > Ciao
> > Theo
> >
> > /*
> > Title: Main-Modul
> > */
> > /*******************************************************************/
> > thread main
> > {
> >
> >  plm.setmode(0,0);
> >
> >  plm.setmode(1,0);
> >
> > // Kanal 0 und 1 mit timebase (Tickdauer) 6 (25,6 Mikrosekunden) init.
> >  plm.settimebase(0,6);
> >
> > // Kanal 0 und 1 mit PeriodLength (Anzahl Ticks pro Periode) init.
> > // 195 Ticks * 25,6 Mikrosekunden = 5 ms
> >  plm.setperiod(0,195);
> >
> > // PLM-Kanaele 0 und 1 mit 100% Einschaltdauer init.
> > // Die Motorelektronik interpretiert das als Stopp! (Invertierung).
> > // Geht nicht direkt mit 100% PLM.
> >  plm.out (0,194);
> >  plm.out (1,194);
> >  sleep 5;
> >  plm.out (0,195);
> >  plm.out (1,195);
> >
> > // Ende der Initialisierung
> >
> > halt;
> >
> > }
> >
>
>
Hallo KM,

zunächst mal vielen Dank für die promte(n) Antwort(en)...auch an Chris.
 
> vor diesem Problem habe ich vor längerer Zeit auch schon gestanden und habe eine fast gleiche
> Frage in`s Forum gesetzt. Leider habe ich von den Experten keine Reaktion erhalten.

Die "fast gleiche Frage" habe _vor_ dem Abschicken meiner Frage im Forum und den Archiven leider wohl übersehen. Wo finde ich Deine Frage? (Es geht doch fast nichts über eine Volltextsuche! ;-)

> Da ich unbedingt dieses Problem für den Motortreiber TLE52xx von Siemens lösen musste,
> habe ich einfach das PWM-Ausgangssignal negiert. Somit kehren sich all deine Verhältnisse um.
> Mit dem Laden von 0x00 in das PWM Register erhälst du somit sofort ein High.

Da meine Motortreiberelektronik ein invertiertes PWM-Signal erwartet, habe ich in meiner Funktion "move", die wiederum die plm.out aufruft (hier nicht veröffentlicht) eine Invertierung eingebaut. Wenn ich 0,0 [%] als Parameter an move(LinkerMotor,RechterMotor) übergebe, erhalte ich meine 195 Ticks und die schluckt die PLM nicht sofort.
Das entspricht meinem vereinfachten Quelltextbeispiel und löst nicht das Problem.

Deine Negierung scheint wohl an einer anderen Stelle zu greifen? Du lädts 0x00 in ein PWM-Register? Vielleicht könntest Du das noch etwas detaillierter ausführen?

Ich werde aber erstmal jeweils einen Inverter in die Treiberelektronik einbauen (positive Logik erhöht auch die �bersichtlichkeit) und und die Invertierung aus meiner Treiberfunktion entfernen. Dann schaue ich, wie das Modul SFR.C2 von Chris weiterhelfen kann.

Ciao
Theo



    Antwort schreiben


Antworten: