OP
Tobias Dasch
Level-1
- Beiträge
- 12
- Reaktionspunkte
- 0
-> Hier kostenlos registrieren
Zwei Speicherzellen pro Eingang, aber was definiert man unter "Speicherzelle"?
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
Zwei Speicherzellen pro Eingang, aber was definiert man unter "Speicherzelle"?
Ihr habt selbst schon 'raus gefunden, dass der Speicher immer zurückgesetzt werden soll, wenn der Ausgang aus ist und nur unter bestimmten Bedingungen eingeschaltet werden darf.
Daraus entsteht folgende grundlegende Speicherzelle (I1 ist der jeweilige Eingang, I2 simuliert die Bedingung für's Setzen):
2. Es müssen für jeden Eingang immer 2 Sachen gespeichert werden:
-> 1. Ist der Eingang unter den ersten 3, damit der Ausgang als Nächstes zum Einschalten dran ist
-> 2. Ist der Eingang unter den ersten 2, die eingeschaltet wurden, damit der Ausgang eingeschaltet wird
Sind schon 3 Eingänge aktiv, kommt das Eingangssignal nicht zum ersten Speicher. Hat es diesen Speicher passiert, kann es den nächsten nur erreichen, wenn keine 2 Ausgänge aktiv sind.
Der Eingang muss also beide Speicher nacheinander passieren, damit der Ausgang eingeschaltet wird.
Ihr habt die arithmetische Anweisung vor den Analog-Mux erstellt, die diese zusammenrechnen soll. Deshalb habt' ihr da eine Zyklusverschiebung zwischen Erfassung und Ergebnisausgabe drin, was hier bei der Funktion von Nachteil ist.PS: Irgendwie reagiert Euer Eingangszähler anders wie meiner.
Doch -> schaltet mal 3 oder 4 Eingänge ein, bevor Ihr die Simulation startet!Wenn man diese zwei Bausteine löscht, sowie das UND-Gatter B027, verändert sich auch nichts an der Funktion soweit wir das überblicken.
Du solltest den Thread auch lesen und nicht nur das Programm downloaden!LT Smash schrieb:Hab das Programm. ...
Jetzt noch die Frage: Was kann man aus Deiner Sicht daran noch optimieren?
Ich hab' dafür zwar schon was programmiert, trotzdem würde mich vorerst interessieren, wie Du das "Problem" lösen würdest.Die Schaltung hat aber immer noch Probleme, wenn mehrere Schalter auf einmal betätigt werden.
Wenn man normal simuliert, bemerkt man das nicht. Bei der Simulation einzelner Zyklen hat man aber genug Zeit, mehrere Schalter dazwischen zu betätigen. Man kann natürlich auch da noch etwas vorbeugen, ...
Da wäre es natürlich optimaler, wenn die jetzige Schaltung noch einen Ein- und einen Ausgang mehr hätte (incl. einer weiteren Speicherstufe!).Hi, folgendes Problem:
Habe 5 digitale Eingänge (Anforderungssignale), und 5 entsprechende Ausgänge.
Egal welcher Eingang wann und wie oft kommt, es sollen immer nur 2 Anforderungen bedient werden, also der entsprechende dazugehörige Ausgang geschalten werden.
... die geplante Hardware ist allerdings ne LOGO
LT Smash schrieb:Habe bei mir noch den Anlaufmerker M8 auf die EN-Eingänge der analogen Blöcke gelegt.
10. Und noch etwas wird bisher noch nicht beachtet (was gar nicht auffällt, wenn man nur simuliert): "Was passiert, wenn mehrere Eingänge gleichzeitig eingeschaltet werden?"
Wie soll die Logo! entscheiden, wer an welche Stelle gehört. Bei 'ner größeren SPS ist sowas relativ einfach, aber die Logo! gerät da an Ihre Grenzen. Eine Möglichkeit wäre das Ein- und Ausschalten der Eingänge über Taster mit Stromstoßschalter plus Flankenerkennung. Die Flanke kann man dann nur generieren, wenn nicht mehrere Taster gleichzeitig betätigt werden.
(Eventuell kann dadurch auch Punkt 9 entfallen. Ist ja im Prinzip das gleiche Problem nur beim Einschalten.)
Ihr seht, das ist aufwendig aber nicht unmöglich.
Ihr könnt' Euch ja ganz zum Abschluß auch da noch einen Kopf drüber machen.
... noch einen Ein- und einen Ausgang mehr hätte (incl. einer weiteren Speicherstufe!).
Seh' ich das richtig, dass Du das zur Unterdrückung Deiner Flankenabfrage (die wohl die Ursache für das fehlerhafte Verhalten auf obigen Bild ist) beim Start brauchst?LT Smash schrieb:Habe bei mir noch den Anlaufmerker M8 auf die EN-Eingänge der analogen Blöcke gelegt.
Und was bringt das bzw. was soll es bringen?
Ich kann da momentan keinen Nutzen von erkennen.
Ich frage gar keine Flanken ab und das sieht für mich einfacher (vor allem einfacher nachvollziehbar!) aus.OK oder wäre die Flankenauswertung der Eingänge evtl. auch einfacher umzusetzen?
IF Eingaenge = Eingaenge_Old + 1 THEN
... // Mach wat
END_IF;
Eingaenge_Old := Eingaenge;
Sorry.Ist noch nicht unbedingt das, wo Du hin wolltest, oder?
Das Problem hast Du auch noch. Ich hab' den Benutzer zumindest mal mit einer Lampe an Q6 auf diese Fehleingabe aufmerksam gemacht, damit er weiß, das er da was rückgängig machen muss.Bei meiner momentanen Variante muss man aber auch (wie bei Dir) diese Mehrfacheingabe noch rückgäng machen.
Wir verwenden essentielle Cookies, damit diese Website funktioniert, und optionale Cookies, um den Komfort bei der Nutzung zu verbessern.
Siehe weitere Informationen und konfiguriere deine Einstellungen