LOGO LOGO! Soft v7 - Hilfe für Programm

Tobias Dasch

Level-1
Beiträge
12
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Servus Forum, :ROFLMAO:
ich arbeite derzeit mit Kollegen an einem Projekt, dass sich "Doppelhaushälfte" nennt.
Zur Erklärung: Es gibt zwei Haushälften, in jeder befinden sich 4 Motoren, aber es dürfen immer nur jeweils 2 von 4 gleichzeitig laufen.
Wenn z.B. die Motorenfolge 1-2-3-4 betätigt wurde, bedeutet das, dass Motor 1 und 2 eingeschaltet werden, 3 und 4 hingegen gespeichert und sobald Motor 1 oder 2 ausgeschaltet wird, wird als erstes Motor 3 und dann 4. Es laufen jedoch nie mehr als zwei Motoren gleichzeitig.

Wir haben jetzt schon ein Programm erstellt indem wir allerdings noch ein paar Fehler haben und diese bis jetzt nicht beheben können ohne andere Fehler auszulösen.

Bei den Zahlenfolgen:
312
132
243
423
134
314
421
241
laufen 3 Motoren gleichzeitig.

Außerdem wissen wir nicht, wie wir in LOGO! eine Speicherfunktion einbinden, sodass wenn man z.B. die Motorenfolge 1-2-4-3 benutzt und Motor 1 ausschaltet, zuerst Motor 4 anläuft und nachdem man Motor 2 auschaltet, Motor 3 anläuft. Denn LOGO! nimmt immer den, der zuletzt betätigt wurde. (3 dann 4)

Im Anhang habe ich noch unsere Schaltung.
Wir gehen davon aus, dass man die Speicherung überhaupt nicht umsetzen kann mit der LOGO!, jedenfalls wollen wir es nur theoretisch mit dem Programm versuchen.
Wäre cool wenn uns jemand bei dem anderen Problem helfen könnte.
Danke
;)
Anhang anzeigen FinallyFast.zip
 
Hallo Tobis,

hab zuhause keine Logosoft, kann daher dein Prog nicht anschauen.

Ab so mal eine Denkanstoss:

Es gibt RS Relais (in logo Stromstoßschalter genannt; glaub ich) dann hast du das Problem mit der Reihenfolge, da könnte man ja einen Zähler pro Motor machen, der beim Zuschalten des nächsten Motors weiterzählt, damit kannst du dann eine Reihung auswerten.

Dein Logikproblem kannst du entweder über Logik lösen, es ginge aber auch über obig angesprochene Zähler.

Und der Lösungswege gäbe es noch mehr :)
 
Danke für die schnelle Antwort winnman, ich werd das mit den Zählern mal versuchen.

@ hucki, ich kenne keine einfachere Möglichkeit, wodurch es auch nicht sehr übersichtlich ist, aber im Grunde nicht schwer bis jetzt, falls du eine andere Lösung hast kannst du gerne bescheid geben. Es ist allerdings auch zusammengeschoben, damit man mehr Platz hat, welchen man am Ende wahrscheinlich brauchen wird.

mfg Tobi
 
Wenn du zwischen den Eingängen und den ersten Gattern mehr platz machst, dann kannst du die einzelnen Potentiale auseinanderziehen.

Dann hast du von I1 eine Liene nach unten, 5mm daneben machst du dann die Linie für I2, . . .

Du musst dazu jede einzelne Linie anklicken und kannst sie dann mit den Punkten verschieben.

Danach kann man dann ein bisschen besser sehen was wohin geht und damit ev. auch verstehen was deine Logik macht :ROFLMAO:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es ist allerdings auch zusammengeschoben, damit man mehr Platz hat, welchen man am Ende wahrscheinlich brauchen wird.
Man kann sich natürlich auch über Datei->Eigenschaften->Seitenaufteilung mit zusätzlichen horizontalen und/oder vertikalen Seiten Platz schaffen.
;)


Obwohl ich sowas Kniffliges eigentlich gerne mache, hab' ich bei solchem Wirrwarr so überhaupt keine Lust, mich damit zu beschäftigen.
Ihr dagegen müsst und ich weiß nicht, wie Ihr heute noch nachvollziehen könnt, was Ihr Euch gestern beim Erstellen des Programms so gedacht habt.


Also bitte mal winnmans Tips befolgen, und wenn Ihr's mit dem Upload noch vor meinem Urlaub schafft, dann schau' ich auch noch mal rein.
:)
 
@ hucki, ... falls du eine andere Lösung hast kannst du gerne bescheid geben.

Da
... ich sowas Kniffliges eigentlich gerne mache, ...
hab' ich mich (trotz dieses hingeworfenen Knochens) mal hin gesetzt und was Eigenes entworfen.
:)


Und weil in der Anhang anzeigen 21268 die 0BA7 als Typ ausgewählt wurde und etwas Strafe sein muss, kam dies dabei heraus:



Das funktioniert m.M.n. wie von Euch gewünscht und hat auch noch auf eine Seite gepaßt.


Also -> Bescheid!


PS: Schrittweise Erklärung folgt, aber nicht mehr heute. Einige Sachen kann man ja schon erkennen, auch wenn die Einschaltprüfung noch fehlt.
Viel Spaß beim Knobeln!
:p
 
Zuletzt bearbeitet:
Danke für eure Antworten. :D Das mit dem vergrößern hat schonmal sehr weiter geholfen, jedoch wenn ich jetzt deine selbst entworfene Schaltung sehe und das diese auf eine Seite passt ist es ja sowieso egal.
Wir müssen jetzt erstmal die Schaltung "analysieren"...auf dem ersten Blick nur Bahnhof. :p

TOP Bescheid! :)
 
Okay...wir hätten vielleicht erwähnen sollen, dass wir Anfänger sind, was das Thema LOGO! angeht :)
Bis heute früh wussten wir noch garnicht was ein UDF ist, geschweige denn die ganzen anderen Analogen Bausteine.
Mit deiner jetzigen Lösung kommen wir nicht wirklich klar hucki, da uns die Logik an so manchen Stellen fehlt. :confused:

Gibt es denn auch eine Lösung ohne analoge Bausteine oder ist dies die einzige Möglichkeit? :p
Und die Speicherfunktion die ich oben erwähnt habe, wurde diese schon umgesetzt in deiner Schaltung?
Danke schonmal bis hierher, wir werden es weiter versuchen! :cool:
 
Es werden nur drei Typen von analogen Bausteinen eingesetzt. Vlt. Versucht Ihr mal zu ergründen, was diese machen. Fangt einfach bei B001 an.

PS: Die UDFs sind ja auch deshalb, um Euch noch etwas zappeln zu lassen. Und ja, die Schaltung merkt sich, wer als 3. oder 4. eingeschaltet wurde. Aber das steckt in den UDFs.
;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also die einzelnen Bausteine haben wir eigentlich ganz gut über die Hilfe verstehen können, allerdings können wir mit ihnen noch nicht arbeiten. :sad:
Jeder Versuch mit den UDF eine Schaltung zu bauen ist irgendwie gescheitert, da beim verbinden jeglicher Leitung von den Aus- bzw. Eingängen der UDF ein Tool-Tip kommt der uns sagt, dass die Verbindung nicht kompatibel ist.
Wir haben es mit verschiedenen Gattern versucht, aber irgendwas machen wir falsch. Ich hoffe wir kommen morgen weiter :p

mfg Tobi
 
Dann will ich Euch mal etwas Starthilfe geben und erklären, was mein Programm im Einzelnen macht:


1. Ihr habt schon ergründet, das man irgendwie Zustände speichern muss. Dazu werden oft Selbsthalterelais bzw. RS-Flipflops verwendet. R steht für Rücksetzen bzw. Reset und S für Setzen bzw. Set. Das R steht bei dieser Bezeichnung vorne, also ist das Rücksetzen dominant, wenn beide Eingangssignale gleichzeitig anliegen. (Viele andere Möglichkeiten zum Speichern hat die Logo! leider nicht und diese scheint hier die Beste für das Gewünschte zu sein.)
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.


3. Es hat sich also ergeben, das Ihr 2 Bedingungen feststellen müsst: "Wieviele Eingänge und wieviele Ausgänge sind aktiv?"
Das kann man natürlich auch über digitale Verknüpfungen machen, allerdings wird das aber mit jedem Ein-/Ausgang immer aufwendiger. Deshalb zähle ich sowas gern analog.
Hier bietet sich dafür der Analog-Multiplexer an. In Abhängigkeit der aktiven Eingänge S1 und S2 gibt dieser einen von 4 parametrierbaren analogen Werten aus. Diese Werte stellt man entsprechend auf 0, 1 oder 2 (aktive Eingänge). Damit der Analog-Mux arbeitet, muss der EN-Eingang auf 1 sein.
Außerdem wird der Analogausgang nicht direkt verarbeitet. Deshalb muss er auf einen analogen Merker geführt werden, da unbenutzte Bausteinausgänge bei der realen Logo! nicht zulässig sind (der Simulation ist das egal). Das Ganze kann man dann mal so ausprobieren:




4. Ihr wisst jetzt also als analogen Wert, wieviele der 2 Eingänge eingeschaltet sind. Allerdings habt Ihr nicht nur 2 sondern 4 Eingänge. Die nächsten 2 Eingänge kann man wieder auf einen Analog-Mux (wie unter 3.) führen. Nun braucht man noch die Summe der beiden Multiplexer - also eine arithmetische Anweisung, bei der man durch Verweise den Wert des Analog-Mux 1 zu dem des Analog-Mux 2 addiert. Die anderen Rechnungen der arithmetischen Anweisung werden nicht benötigt, deshalb werden sie bei jeweils +0 belassen und haben somit keine Auswirkung. Und auch die arithmetische Anweisung arbeitet nur, wenn der EN-Eingang auf 1 ist:




5. Nachdem Ihr nun wißt, wieviele von den Eingängen aktiviert sind, wollt Ihr das auch noch von den Ausgängen wissen. :idea:


6. Unter 1. haben wir festgestellt, das die Anzahl der aktiven Ein- bzw. Ausgänge die Bedingung für die Freigabe der nächsten Speicherzellen darstellen. Dafür wird der analoge Schwellwertschalter benutzt. In Abhängigkeit des Analogwertes an seinem Eingang wird der Ausgang ein- oder ausgeschaltet:



Ihr solltet mit dieser Schaltung etwas herum experimentieren. Was passiert, wenn der Wert für's Ein- unter dem für's Ausschalten liegt, was, wenn beide gleich sind und was, wenn er größer ist? Manchmal führen auch verschiedene Methoden zum Ziel (wie hier), manchmal ist man auf ein bestimmtes Verhalten angewiesen.


7. Jetzt solltet Ihr je Eingang 2 Speicherzellen und für diese 2 ausgewertete Bedingungen haben. An dieser Stelle mußte ich feststellen, daß wenn ein Signal vor der ersten Speicherzelle wartet (also als 4. eingeschaltet) und die 2. Bedingung wieder freigegeben wird, dies natürlich auch die 1. Bedingung wieder freigibt und so das wartende Signal gleich über beide Speicherzellen "durchrast". Das war so natürlich nicht gewollt, sondern es sollte ja von Stelle 4 erstmal nur auf Stelle 3 vorrücken. Man muss deshalb also entweder den Signalfluss von der 1. zur 2. Speicherzelle ganz geringzügig (etwas länger als die Zykluszeit, 10ms sollten reichen) verzögern oder die Freigabe der Bedingung 1. Ich persönlich hab' mich für Ersteres entschieden. Wie die Verzögerung programmiert wird, überlasse ich mal Euren Überlegungen.


8. Außerdem hängt das Zählen der Ein- und Ausgänge auch etwas von der Lage im Schaltplan ab. Wenn Ihr auf mein obiges Programm schaut, werden die Eingänge direkt nach diesen und vor Erreichen der Speicherzellen gezählt, während das bei den Ausgängen erst nach dem Einschalten also im nächsten Zyklus passiert. Deshalb ist da die Bedingung "Sind denn schon 3 Eingänge aktiv" beim 3. eingeschalteten Eingang schon wahr, wenn die erste Speicherzelle des gerade eingeschalteten Eingangs erst noch aktiviert werden muss. Es gilt also den Schwellwertschalter entsprechend anzupassen.


9. Was oben noch fehlt: "Was ist, wenn beim Einschalten schon mehr als 2 Eingänge an sind? Welche davon sollen eingeschaltet werden?"
Ich hab' mich dafür entschieden, solange die Speicherzellen komplett zu sperren und die Schaltung erst freizugeben, wenn nur noch max. 2 Eingänge aktiv sind.
Zum Erkennen des 1. Zyklusses hat die Logo den Anlaufmerker M8. Den nutze ich zum Rücksetzen eines Selbsthalterelais. Dieses Relais darf erst dann gesetzt werden, wenn nur max. 2 Eingänge noch an sind. Wie Ihr das feststellt, sollte ja jetzt klar sein, oder?
Dies wäre dann eine 2. Bedingung für die 1. Speicherzellen.
(Am UND-Gatter müssten noch Eingänge frei sein. ;))


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.
:)


Bis hierher funktioniert noch alles mit dem Logo!-Typ 0BA6.


Möglichkeit ab Logo!-Typ 0BA7:
11. Da sich die Speicherzellenlogik von Eingang 1 bis 4 immer wiederholt, hab' ich sie für den Eingang 1 einmal in ein UDF (eigene Logikbausteine) ausgelagert, kann sie so 4 mal wieder benutzen und hab' sichergestellt, das zum Einen alle 4 Eingänge sich der gleichen Logik unterziehen und zum Anderen, das ich jede Änderung an dieser Logik nur einmal durchführen muss und dies immer automatisch auf alle 4 Stränge übertragen wird.

Außerdem kann ich Euch so (hoffentlich) animieren, Eure Köpfe noch etwas anzustrengen, da Ihr auf dem Screenshot ja die Logik innerhalb der UDFs nicht sehen könnt. Ihr wollt schließlich auch was lernen.
:p



Morgen fahre ich nach Dänemark, werde also nichts posten können. Ich denke aber eh', dass Ihr mindestens über's WE Zeit braucht, um über alles in Ruhe nach zu denken und auch mit den einzelnen Steps zu experimentieren.
Und wie Ihr seht, führen meist auch mehrere Wege nach Rom. Also gilt auch hier -> experimentieren, um zu lernen.
;)


Bleibt mir vorerst nur noch: Viel Spaß dabei!
:ROFLMAO:
 
Zuletzt bearbeitet:
Jeder Versuch mit den UDF eine Schaltung zu bauen ist irgendwie gescheitert
Ja, das kann ich mir vorstellen, da Ihr bis dato ja nicht wusstet, welche Logik ich in meinem UDF "versteckt" habe.
:p


Aber jetzt habt Ihr zumindest schon mal meine Überlegungen.
Und Ihr solltet das (wie in meinem vorigen Post geschildert) erst mal ohne UDFs umsetzen.
 
So sieht bei mir die (etwas "mißglückte" ) Druckvorschau der mittlerweile noch (auch für den Ausdruck) optimierten, bis Punkt 9 umgesetzten Schaltung (ohne UDFs) aus:




Hab' sogar den Druckzoom von den standardmäßigen 50% auf 75% hoch genommen und das Ganze passt immer noch locker auf eine Seite.
:p
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ach - nich' ärgern lassen.
;)


Stellt mal zusammen, bis wohin Ihr folgen könnt.
Wenn's irgendwo hakt, zeigt einfach, was Ihr schon habt. Dann versuchen wir, den nächsten Schritt zu erarbeiten.

Ich denke mal, so lernt Ihr mehr, als wenn Ihr das nur einfach von mir "abmalt".


PS: In der Druckvorschau hab ich einige Verbindungen über deren Kontextmenü "aufgetrennt". So kann man einige Sachen etwas abrücken, ohne das die Linien danach kreuz und quer durch andere Bausteine bzw. das ganze Bild verlaufen.
 
Also bis jetzt wissen wir nicht wirklich welche Bausteine wir auf die Setz-Eingänge der Selbsthalterelais legen sollen.
Vorallem 2. deiner Schaltungserklärung ist uns noch nicht klar.
Ich mach noch mal einen Anhang ran, wäre cool wenn du uns das mit dem Setzen nochmal erklären kannst. Danke. :ROFLMAO:
Anhang anzeigen Schaltplan1.zip

mfg Tobi
 
Zurück
Oben