13.11.2012 00:13 | |
Beiträge: 11 Bewertung: (0) |
Hallo, meine unten stehende Idee kann grundsätzlich sehr einfach mit linearen Rampen erstellt werden. Allerdings benötige ich einen exponentiellen Anstieg. Hierzu habe ich folgende exponentielle Rampe (siehe Anhang). (Falls jemand eine bessere Idee zur Umsetzung hat... ich bin für alles offen). Jetzt möchte ich gerne eine Schaltung entwickeln, die zu bestimmten Zeiten diese Rampe nutzt (sowohl beim hoch- als auch beim runterzählen), um den Ausgang AQ1 zu belegen: Zeitpunkt 1: Es wird von 100 nach 1000 gezählt Zeitpunkt 2: Die Rampe sollte umgekehrt laufen, d.h. von 1000 nach 300 Zeitpunkt 3: Es wird wieder bis 1000 hochgezählt Zeitpunkt 4: Es wird wieder umgekehrt bis 100 heruntergezählt. (Die Werte sollen natürlich bis zum Erreichen des nächsten Zeitpunktes immer so bestehen bleiben) Muss ich dafür meine Rampe vier mal einbinden (Copy/Paste)? Und wie bekomme ich vier verschiedene Werte (in Abhängigkeit des Zeitpunktes) auf den Ausgang? Gerade letzteres macht mir echte Probleme. Würde mich sehr freuen, wenn mir jemand unter die Arme greifen könnte... Lg Jay
Dateianhangexponentielle-rampe.zip (287 Downloads) |
Für diesen Beitrag bedanken sich1 Benutzer |
13.11.2012 18:25 | |
Beigetreten: 07.05.2011 Letzter Bes: 01.09.2024 Beiträge: 4705 Bewertung: (388) |
Hallo! So hatte ich das gedacht! Jede Tastendruck ist dabei die nächste Stufe. Die Zähler kann man ja durch andere Bedingungen ersetzen! Mir ist klar das diese Lösung nix mit deiner exp. Rampe zu tun hat, aber wenigstens läuft sie vorwärts und rückwärts ab. Für deine Lösung müßtest du Analogschwellwertschalter einbauen, die das Abwärtslaufen bei 100 oder 300 stopen. Um das Abwärtslaufen zu realisieen, kannst du dir deine Schaltung ein zweites mal aufbauen und diese ebenfalls aufwärts laufen lassen. Den Ausgabewert ziehst du in einer weiteren Arithmetik einfach von 1000 ab. Mit einem Mux schaltest du dann den richtigen Wert an den Ausgang durch. DateianhangRampenwerte variabel.zip (234 Downloads) |
Zuletzt bearbeitet von: motmonti am: 13.11.2012 18:47 |
|
13.11.2012 19:42 | |
Beiträge: 11 Bewertung: (0) |
Hallo, also ich habe es bis jetzt so gelöst (siehe Anhang). Allerdings besteht hier noch das Problem, dass das Hochlaufen nur einmal funktioniert, da die vorangegangenen Werte bei einem erneuten Aufruf nicht gelöscht werden. Gibt es hierzu einen Lösungsansatz? Denn dann würde die Schaltung ja funktionieren. C3 schaltet die Rampe hoch und runter C4 aktiviert lediglich einen anderen Schwellenwert, d.h. man würde bei aktiviertem C4 von 1000 auf 300 runterlaufen, sonst eben auf 100. Ist echt blöd, wenn man viele Stunden an so etwas sitzt und dann am Ende so eine letzte Sache einen Strich durch die Rechnung macht.
Dateianhangexp-rampe.zip (268 Downloads) |
13.11.2012 21:08 | |
Beigetreten: 05.01.2007 Letzter Bes: 07.04.2023 Beiträge: 1690 Bewertung: (580)
|
Hallo, also: wie mit der LOGO! auch nicht-lineare Zusammenhänge verarbeitet werden können, habe ich verschiedentlich gezeigt und Tools dazu veröffentlicht, z. B. unter: Berechnung von Polynomen f(Ax) aus analogen Eingangswerten Ax
Dabei ist das Konzept so, dass eine Kurve nun durch eine oder mehrere Polynome angenähert wird."Zusammengebaut" wird die Gesamtkurve dann aus "parallel" berechneten Einzelkurven, die mittels Multiplexer entsprechend dem jeweiligen Eingangswertebereich "ausgewählt" werden und so z. B. auf einen Ausgang gegeben werden können.... In deinem Fall läßt sich durch entsprechende dynamische Vorgabe der Eingangswerte (z. B. mittels getaktetem Zähler oder einer Analogrampe) dann auch einfach ein Hoch- und Runterzählen der Eingangswerte erreichen, so dass der Ausgang wie gewünscht erfolg bzw. erfolgen kann. Versuche dich mal an einer entsprechenden Lösung und stelle diese hier zur Diskussion und ggf.Verbesserung ein... MfG Betel |
==> Meine TAG-Listen: "deut." |
|
13.11.2012 21:13 | |
Beigetreten: 07.05.2011 Letzter Bes: 01.09.2024 Beiträge: 4705 Bewertung: (388) |
Hallo! Ich habe dir mal ein Reset in die obere Rampe eingepflegt. Dabei wird bei nicht aktiver Rampe über einen Mux der Wert von B029 über Verweis in B028 subtrahiert. Bei aktiver Rampe wird eine 0 eingetragen. Dateianhangexp-rampe.zip (224 Downloads) |
Für diesen Beitrag bedanken sich1 Benutzer |
14.11.2012 07:14 | |
Beigetreten: 07.05.2011 Letzter Bes: 01.09.2024 Beiträge: 4705 Bewertung: (388) |
Hallo! Hier mal noch eine andere Möglichkeit einer unliniaren Rampe. Der Zähler wird durch den Impulsgeber hochgezählt. Der Zählerwert mit 5 multipliziert und der Wert von 500 abgezogen. Der errechnete Wert wird dem Impulsgeber als Impulslänge zugeführt. Somit wird mit steigendem Zählerwert die Impulslänge immer kürzer und somit die Anstiegsgeschwindigkeit des Zählerwertes immer schneller. Das Rückwärtszählen ist auch kein Problem. Viel Spaß beim testen. PS: Für dein erstes Progi, ist die Lösung schon ordentlich! Dateianhangexp Rampe anders.zip (241 Downloads) |
Für diesen Beitrag bedanken sich1 Benutzer |
14.11.2012 11:28 | |
Beigetreten: 07.05.2011 Letzter Bes: 01.09.2024 Beiträge: 4705 Bewertung: (388) |
Hallo! Das stimmt so nicht! Hab es dir mal programmiert! I1 = 1 Hochzählen I1=0 Runterzählen! Dateianhangexp Rampe anders.zip (143 Downloads) |
17.11.2012 22:09 | |
Beiträge: 11 Bewertung: (0) |
Hallo motmonti, ich bekomme es leider alleine nicht ganz hin. Wahrscheinlich gehe ich es vollkommen falsch an. Ich möchte die Rampe so parametrieren, dass sie letztlich über eine Dauer von 30 Minuten läuft. Im anhang meine geänderte Datei - bin aber wie gesagt sehr dankbar, wenn du meinen Gedankenknoten auflösen könntest, indem du mich korrigierst, wie ich denn die Zeiten beliebig berechnen kann. Mein zweites großes Problem ist, dass ich die Rampe immer nur von 100 bis 1000 laufen lassen möchte (analoger Ausgang), d.h. in diesem Beispiel hier würde ich den Zählen von 10 bis 100 laufen lassen. Startwert 10 ist ja kein Problem, aber auch wenn die Rampe rückwärts läuft, soll sie ja bei 10 stehen bleiben und das will nicht klappen, dabei kann man doch gerade beim Zähler die Grenzen angeben. Ich hoffe du kannst mir in diesen zwei Punkten weiterhelfen. Danke!
Dateianhangexp Rampe anders parametrieren.zip (150 Downloads) |
18.11.2012 11:52 | |
Beigetreten: 07.05.2011 Letzter Bes: 01.09.2024 Beiträge: 4705 Bewertung: (388) |
Hallo! Ich habe dir das Beispiel einmal so parametriert, das der Wert am Ausgang innerhalb von ca 30 min von 100 auf 1000 steigt. Der eingefügte Meldetext und die Stopuhr zeigen dir die abgelaufene Zeit beim Hochfahren an. Durch die Stopuhr wäre das Programm nur auf einer 0BA7 lauffähig. Soll ja auch nur zur Kontrolle der Funktion sein und kann bei erfolgreichem Test wieder gelöscht werden. Damit funzt es auch wieder auf der 0BA6. Zur Funktion. Über I1 wird die Richtung bestimmt. Bei jedem Wechsel des Signales wird der Impulsgeber wieder auf 0 gesetzt und gestartet. Der Zähler wird von 0 - 60 hochgezählt. Habe mir das mit Excel mal ausgerechnet wieviele Zeiträume in Sekunden es braucht um etwa auf 1800 Sekunden (30 Min. ) zu kommen. Also 1s + 2s + 3s ......+ 60s = 1830s. In B004 wird der aktuelle Zählerwert von 61 abgezogen und der errechnete Wert wird dem Impulsgeber als Impulsbreite zuggeführt. Die Impulspausenbreite ist konstant auf 2 ms eingestellt und fällt nicht weiter ins Gewicht. In B003 wird der Zählerwert mit 50 multipl., durch drei geteilt und 100 addiert. So ergibt sich bei Zähler = 0 0*50 / 3 + 100 = 100 und bei Zählerwert 60 60*50 / 3 + 100 = 1100. Da Werte über 1000 eh nicht ausgegeben werden, spielt das nicht die Rolle denke ich. Soll der Wert genau 1000 sein, so muß der Zähler bei 54 gestopt werden, was dann eine Zeitdauer von 1485 Sekunden ergibt. Stellt man die Impulspausenbreite auf 5,83 Sekunden ein, ergibt sich wieder eine Gesamtzeit von 1800 Sekunden. Viel Spaß beim testen! Dateianhangexp Rampe anders 3.zip (153 Downloads) |
18.11.2012 22:19 | |
Beiträge: 11 Bewertung: (0) |
Ok, super. Nochmals vielen Dank für deine Hilfe und deine Geduld! |
18.11.2012 22:22 | |
Beigetreten: 07.05.2011 Letzter Bes: 01.09.2024 Beiträge: 4705 Bewertung: (388) |
Hallo! Gerne, kein Problem! Bedanken geht auch rechts oben! |
Für diesen Beitrag bedanken sich1 Benutzer |
26.11.2012 18:02 | |
Beigetreten: 05.01.2007 Letzter Bes: 07.04.2023 Beiträge: 1690 Bewertung: (580)
|
Hallo Jay, hallo Motmonti, ich hatte ja bereits auf die Möglichkeit der Anwendung von Polynomen zur Funktionsapproximation hingewiesen. Eine AdHog Internetsuche nach "Dimmkurve" liefert auch gleich eine Basis dazu, wobei ein exponentieller Zusammenhang zwischen Leuchtstärke (in %) und einem ganzzahligen Wert n im Wertebereich von 0 bis 255 (8 bit) angegeben wird. Dieser 8-Bit-Wert kann nun zeitlich äquidistant durchlaufen werden um die Dimmkurve zu erhalten. Nach einer Anpassung auf einen 10-Bit-Wert n habe ich mal (m)eine EXCEL-Regression für die LOGO! durchgeführt. FORMEL: Lichtintensität X (n) = 10 hoch [ ((n - 1) / (999 / 3)) - 1] in % * 10 (d. h. Werte von 100 bis 1000). Dann habe ich noch berücksichtigt, dass für die LOGO! möglichst kleine Absolutwerte Werte n (= Ax) kleinere Rundungsfehler hervorrufen (= Verschiebung der x-Werte symmetisch zu "0") und dass nur ein Wertebereich für X von 10 % (LOGO!-Wert = 100) und 100 % (Logo!-Wert = 1000) erforderlich bzw. gewünscht waren/sind. Die entsprechenden Daten und daraud berechneten Parameter für ein Polynom 4. Ordnung sind in der EXCEL_Datei angegeben. Daraus habe ich eine LOGO!-Schaltung "DEMO_Dimmkurve_V01.lsc" (ab 0BA6) gemacht. Ergebnis ist eine Dimmkurve X(n) für n = 667 bis n = 1000, wobei dies realisiert wird durch "Zählerwerte" von 0 bis 333 (bzw. wegen Rundungsfehlern bis 335)! Die zeitliche Spreizung der Dimmung kann in der o. g. Schaltung einfach durch Anpassung der Parameter des Impulsgebers erfolgen. Andere Änderungen bzw. Anpassungen sind nicht erforderlich. Viel Spaß damit... MfG DateianhangDEMO_Dimmkurve.zip (144 Downloads) |
==> Meine TAG-Listen: "deut." |
|
26.11.2012 22:51 | |
Beigetreten: 05.01.2007 Letzter Bes: 07.04.2023 Beiträge: 1690 Bewertung: (580)
|
Hallo Jaymyon, nachdem ich die Hauptarbeit der Berechnung der Polynomkoeffizienten und die Programmierung des Berechnungspolynoms abgearbeitet habe liegen die Vorteile doch auf der Hand: a) Einfache Anpassung bzw. Änderung der zeitlichen Gestaltung der Dimmdauer über die Parameter des Impulsgenerators (TH + TL) * 333 (bzw. * 335)! b) Die Schritte / Stufen der Dimmung simd deutlich feiner. Anstelle von 60 Stufen sind nun 333 (335) Stufen realisiert für den Bereich 10(,)0 % die 100(,)0 % (Dies entspricht einer 10-Bit Auflösung des Gesamtbereiches von 0 % bis 100 %!)! c) Es lassen sich bei Bedarf auch definierte Lichtstärken durch Setzen von n (zwischen 0 und 335) realisieren, wobei diese Werte dann mittels Multiplexern "einzuschleifen" sind (ähnlich wie in der Beispielschaltung eines linearen Dimmers gemacht)... MfG Betel |
==> Meine TAG-Listen: "deut." |
|
Folgen Sie uns auf