Sonstiges Hilfe ! 4-stelliges Zählen mit Siemens Logo

Loenne

Level-2
Beiträge
210
Reaktionspunkte
40
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Community,

ich grübele nun schon eine ganze Weile an einer Steuerung herum und auch hier im Forum habe ich keinen Hinweis für mich gefunden.

Vielleicht hat ja jemand eine gute Idee oder einen Lösungsansatz.

Mittels eines (Siemens) Logobaustein soll eine Anzeigetafel in einer Produktionshalle angesteuert werden um einen 4-stelligen Zählerstand darzustellen. Der Zählerstand beginnt bei 0000 und soll jeweils um 1 erhöht werden wenn ein Impuls mittels einer Lichtschranke am Eingang I1 des Logobaustein erzeugt wird.

Blockschaltbild Anzeigetafel.jpg
Die Zählung erfolgt immer mit führenden Nullen, also 0001, 0002, 0003, 0004, 0005, usw. bis maximal 9999.
Die Anzeigetafel bietet zur Ansteuerung dafür leider nur eine Tastaturmatrix als Schnittstelle zur Logosteuerung an.Tastatur-Schnittstelle.jpg
Nach jedem Impuls durch die Lichtschranke soll der interne Zähler im Logobaustein um einen Wert erhöht werden um dann diesen Wert entsprechend über die Ansteuerung von 8 Relaisausgängen an die Tastatur weiterzugeben, um somit die Eingabe des Zählerstandes in die Anzeigetafel zu realisieren.

Nach Eingabe der 4. Ziffer muss dann immer mittels Ansteuerung der Taste „E“ der Vorgang abgeschlossen werden.

Beispielsweise müsste dann die Eingabe für den Wert 0123 im Detail für die Ausgänge so aussehen:

Schritt 1: Impuls durch die Lichtschranke und den Wert von 0122 auf 0123 erhöhen.
Schritt 2: Gleichzeitiges Ansteuern der Relaisausgänge Q4 und Q6 als Impuls für die Zahl 0
Schritt 3: Gleichzeitiges Ansteuern der Relaisausgänge Q3 und Q5 als Impuls für die Zahl 1
Schritt 4: Gleichzeitiges Ansteuern der Relaisausgänge Q3 und Q6 als Impuls für die Zahl 2
Schritt 5: Gleichzeitiges Ansteuern der Relaisausgänge Q3 und Q7 als Impuls für die Zahl 3
Schritt 5: Gleichzeitiges Ansteuern der Relaisausgänge Q4 und Q7 als Impuls für die Taste E

Zuerst dachte ich dies sei eine banale Standard Anforderung, jedoch drehe ich mich irgendwie mit Schieberegistern, Zählern und arithmetischen Funktionen wohl gerade im Kreis.

Die Schwierigkeit lieg m.E. darin sowohl die führenden Nullen in der Steuerung abzubilden, als auch mit einer minimalistischen Anzahl von Zählerbausteinen auszukommen. Zum Beispiel jeweils einen für die 1er, 10er, 100er und 1000er Stellen.

Vielleicht sehe ich aber auch gerade den Wald vor lauter Bäumen nicht.
Über einen Tipp würde ich mich daher sehr freuen.


Viele Grüße
Lönne
 
Bist Du Dir sicher mit der Ansteuerung?
Normalerweise werden die Leitungen Q1 bis Q4 von der Tastatursteuerung der Reihe nach angesteuert (Ausgänge der Steuerung) und diese prüft dann, über welche der Leitungen Q5 bis Q8 der Impuls zurück kommt (Eingänge), um so die gedrückte Taste zu erkennen.
M.M.n. mußt Du die 11 Taster für die Zahlen und das E mit den Logo-Ausgängen nachbilden. Also so, als ob jemand die Taster in natura betätigt.

So oder so - nette Herausforderung. Reizt mich. Gib' mir etwas Zeit.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo hucki,

also die Anzeigetafel bringt leider keine Intelligenz bezüglich eines Zählereingangs mit. Insofern soll dies die SPS übernehmen, also genau so als ob ein Mensch eine an der Anzeigentafel angeschlossene Tastatur manuell bedient. Nur das dies halt durch die Steuerung realisiert und automatisiert werden soll.

Eigentlich könnte man sich die Tastatur auch wegdenken da die SPS die Anzeigetafel natürlich auch direkt ansteuern kann und somit überflüssig ist. Sie soll hier nur verdeutlichen wie die 8 Ausgänge sich verhalten müssen wenn diese oder jene Eingabe (Zahl, bzw. E) gemacht werden soll.

Viele Grüße
Loenne
 
M.M.n. mußt Du die 11 Taster für die Zahlen und das E mit den Logo-Ausgängen nachbilden. Also so, als ob jemand die Taster in natura betätigt.

So oder so - nette Herausforderung. Reizt mich. Gib' mir etwas Zeit.
So, Zeit ist um und das ist mein Ergebnis für den Tasterersatz (1 Ausgang je Taster und damit die Matrix nachbauen):














PS: Im Programm fehlt beim Baustein B017 der Verweis von V1 auf den Baustein B003. Wenn das also noch jemand nutzen will, bitte noch anstelle der 0 eintragen!
 

Anhänge

  • Tastaturersatz.zip
    33,9 KB · Aufrufe: 61
Zuletzt bearbeitet:
Hallo hucki,

sorry das ich mich erst jetzt melde, und vielen Dank für die Mühe die Du dir gemacht hast !

Ich habe dein Programm versucht zu analysieren und getestet aber leider macht es nicht das was es soll.

In der Realen Live-Umgebung würde die Steuerung mittels der Lichtschranke in unregelmäßigen Abständen einen Impuls bekommen um den Wert der Anzeige um eine Stelle hoch zu zählen. Für diesen Impuls ist wohl bei deiner Steuerung der Eingang I2 gedacht.

Wenn ich I2 betätige, dann gibt die Steuerung nur 4x die Zahl Null (Q10) und das E (Q11) aus, zählt jedoch danach nicht höher.

Weiterhin vermute ich mal das der Eingang I3 (Schalter) als Test zur Simulation der Steuerung gedacht ist.
Lasse ich das Programm mittels I3 ablaufen, so gibt die Steuerung korrekter Weise zwar beim ersten Zyklus
noch 4x die Null und das E aus, danach jedoch ist die Ausgabe nur noch 3-stellig und konfus.

Die ersten Ausgaben sind dann:
0000 E
008 E
016 E
024 E
033 E
041 E
049 E
057 E
066 E
074 E
usw.


Trotzdem danke für deinen Versuch!

Viele Grüße
Loenne
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe dein Programm versucht zu analysieren und getestet aber leider macht es nicht das was es soll.

In der Realen Live-Umgebung würde die Steuerung mittels der Lichtschranke in unregelmäßigen Abständen einen Impuls bekommen um den Wert der Anzeige um eine Stelle hoch zu zählen. Für diesen Impuls ist wohl bei deiner Steuerung der Eingang I2 gedacht.

Wenn ich I2 betätige, dann gibt die Steuerung nur 4x die Zahl Null (Q10) und das E (Q11) aus, zählt jedoch danach nicht höher.
Hi, ich hatte das zwar getestet, hab' den Fehler jetzt aber auch. Eine kurze Analyse hat ergeben, das beim Baustein B017 der erste Verweis fehlt. Dort wo momentan V1=0 steht, muss der Verweis auf B3 (V1=B3) stehen.
Scheinbar hab' ich das beim Testen zwar noch eingetragen, aber nicht mit gespeichert. Sorry.

Ansonsten hast Du richtig erkannt, das I2 der eigentliche Zähleingang ist. I1 dient zum Rücksetzen des Zählers.

B007, B011, B015 und B017 geben die 4 auszugebenden Stellen wieder. Dort sollte man also von oben nach unten den auszugebenden Zählerstand ablesen können.
Welcher Zählerstand gerade übertragen wird, wird in B003 gespeichert. Wird keiner (mehr) übertragen, enthält B003 den aktuellen Stand vom eigentlichen Zähler B002. In B004 steht der zuletzt vollständig übertragene Zählerstand. Unterscheiden sich B003 und B004 wird eine neue Übertragung ausgelöst.



Weiterhin vermute ich mal das der Eingang I3 (Schalter) als Test zur Simulation der Steuerung gedacht ist.
Lasse ich das Programm mittels I3 ablaufen, so gibt die Steuerung korrekter Weise zwar beim ersten Zyklus
noch 4x die Null und das E aus, danach jedoch ist die Ausgabe nur noch 3-stellig und konfus.
Ja, I3 ist zum Testen. Dabei wird mit B020 festgelegt, wie schnell die Impulse kommen sollen.

Es ist auch normal, das bei diesem Test nicht jeder Zählerstand angezeigt wird, da dort momentan alle 4ms ein neuer Zählimpuls kommt. Die Ausgabe benötigt aber durch B023 ca. 5 Sekunden für die Ausgabe eines Zählerstandes. Es soll ja das Drücken der Tasten per Hand simuliert werden.
Daher wird vor Beginn der Ausgabe der aktuelle Zählerwert gespeichert und dieser gespeicherte Wert vollständig ausgegeben. Trotzdem wird logischerweise auch zwischendurch weiter gezählt, wenn neue Impulse kommen sollten. Erst nach der vollständigen Ausgabe wird ein neuerer und zwar der dann aktuelle Zählerstand wieder übertragen.
Das hatte ich extra auch simuliert, da Du nicht angegeben hast, wie schnell die Impulse kommen. Wenn sie langsamer sind als die Ausgabe, wird natürlich jeder einzelne neue Zählerstand ausgegeben. Wenn sie aber schneller kommen, wäre es ja für die Übertragung schlecht, wenn der zu übertragende Wert sich zwischenzeitlich ändert.


Was ich nicht nachvollziehen kann, warum bei Dir nur 3 Stellen + E ausgegeben werden. Für die 4 Stellen + E ist das Schieberegister B024 zuständig. Daher sollte das relativ stabil sein. Für die Länge der einzelnen simulierten Tastendrücke für die 4 Stellen ist wie gesagt B023 zuständig. Die Länge des Tastendrucks auf das E wird von B028 bestimmt. B052 sorgt für eine kurze Verzögerung vor dem Senden der einzelnen Tastendrücke, damit nicht vlt. noch der Wert der vorigen Stelle aktiv ist. Eventuell müssen die Zeiten von B023, B028 und B052 in der Realität noch etwas angepasst werden. Hängt halt davon ab, wie lange so ein Tastendruck real sein muss (momentan je 0,9s von B023/B028 - 0,1s von B052 = 0,8s), damit die Anzeige diesen sicher erkennt, und wieviel Pause sie min. zwischen 2 Tastendrücken benötigt (momentan 0,1s von B023 + 0,1s von B052 = 0,2s).

Mit I4 kann ein erneutes Senden des Zählerstandes ohne dessen Veränderung (da erfolgt die Ausgabe automatisch) aktiviert werden.



Das Ganze funktioniert bei mir in der Simulation auch sehr zuverlässig. Vlt. lag es ja wirklich nur an dem einen fehlenden Verweis.
:confused:
 
Zuletzt bearbeitet:
Hallo hucki,

ich habe dein Programm beim Baustein B017 wie von Dir vorgegeben korrigiert und nun läuft es tadellos!
Nochmal ein herzliches Dankeschön für dein Engagement.

Zwischenzeitlich hatte ich die Anforderung auch für mich lösen können, und ein Programm erstellt.
Es ist zwar vielleicht nicht so elegant wie deine Lösung, aber tut auch was es soll.

Ich hatte die Absicht ohne Arithmetik Funktionen auskommen so das ich einen Logobaustein des Typs 0BA4 verwenden kann.
Dies hat aber leider nicht ganz hingehauen da ich dann doch ein paar Bausteine mehr benötige als zur Verfügung stehen.

Gerne hätte ich das Programm auch zum Download bereit gestellt falls jemand Interesse an meiner Version hat,
aber leider scheinen mir die Rechte zu fehlen um eine (gepackte) *.isc Datei hochzuladen.


Viele Grüße
Loenne
 
So, nachdem ich nun herausgefunden habe das dass Forum kein Upload von Dateien zulässt die durch ein Leerzeichen getrennt sind,
konnte ich dann doch noch meine Lösung packen und hochladen. Vielleicht kann es ja irgend wann einmal jemand brauchen.

Viele Grüße
Loenne
 

Anhänge

  • Ansteuerung_Anzeigetafel.zip
    52 KB · Aufrufe: 13
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich versteh' die Ausgabe nicht so ganz. Wenn weiter gezählt wird, müssten doch 4 Stellen und das E ausgegeben werden, oder? Da kommt aber nur eine Ausgabe.


Ich hab' bei meinem Programm mal noch Deine Ausgabe eines Tasterdrucks mittels 2 Ausgängen integriert:



Wenn ich das richtig verstanden habe, bilden von der Verdrahtung her dann alle Ausgänge einfach einen großen Knoten, richtig?
Und so kannst Du Dir dann etwas Hardware sparen.
Das hab' ich so vorher nicht erkannt.




PS: Hab' nochmal ein paar kleine Veränderungen gemacht.
Unter anderem die Reihenfolge der Eingänge verändert:
1 - Zähleingang
2 - Zählerreset
3 - Ausgabe forcen
4 - Simulation
 

Anhänge

  • Tastaturersatz.zip
    76,4 KB · Aufrufe: 6
Zuletzt bearbeitet:
Hab' mal noch 'ne Anzeige in die beiden Versionen gebastelt, damit man an der Logo! besser verfolgen kann, was sie gerade so macht:

 

Anhänge

  • Tastaturersatz.zip
    83,4 KB · Aufrufe: 6
Hallo hucki

Ich versteh' die Ausgabe nicht so ganz. Wenn weiter gezählt wird, müssten doch 4 Stellen und das E ausgegeben werden, oder? Da kommt aber nur eine Ausgabe.
Sorry, das war noch die Testversion um Schrittweise das Programm zu testen.
Du hast recht, es müssen natürlich 4 Stellen ausgegeben werden.

Ich hab das Programm noch ein wenig "aufgehübscht" damit es übersichtlicher ist.

Die Funktionen sind nun wie folgt:
I1 = Impulseingang für einen kompletten Zyklus (Ausgabe von 4-Stellen und dem E)
I2 = Impulseingang zum Schrittweise Testen des Programms
I3 = Simulation zum automatischen Testen des Programms
I4 = Manipulation der 1. Stelle
I5 = Manipulation der 2. Stelle
I6 = Manipulation der 3. Stelle
I7 = Manipulation der 4. Stelle





Wenn ich das richtig verstanden habe, bilden von der Verdrahtung her dann alle Ausgänge einfach einen großen Knoten, richtig?
Und so kannst Du Dir dann etwas Hardware sparen.
Das hab' ich so vorher nicht erkannt.

Ja je nach aktuellem Zählerstand werden dann die passenden Ausgänge angesteuert, somit wird keine zusätzliche Hardware mehr benötigt.

und, PS: Danke für die Blumen ;-)

Viele Grüße
Loenne
 

Anhänge

  • Ansteuerung_Anzeigetafel_V2.rar
    43,2 KB · Aufrufe: 12
Zuviel Werbung?
-> Hier kostenlos registrieren
somit wird keine zusätzliche Hardware mehr benötigt.
Zusätzliche Hardware meinte ich nur bei der LOGO!, da bei Deiner Variante bzw. jetzt meiner V2 nur 7 Ausgänge benötigt werden, anstatt der bei meiner V1 erforderlichen 11 Ausgänge. Die Tastatur der Anzeige ist so oder so nicht erforderlich.




Wenn ich beide Varianten Vergleiche, komme ich zu folgendem Ergebnis ->

Vorteil:
- Manipulierbarkeit der einzelnen Zählerstellen

Nachteile:
- Eingangsimpulse dürfen nicht schneller kommen, als die Ausgabe an Zeit benötigt, ansonsten werden sie übergangen (deswegen hab' ich mit den arithmetischen Anweisungen gearbeitet, um Zwischenstände speichern zu können)
- Bei Manipulation einer Stelle erfolgt keine neue Ausgabe
- versehentliche Manipulation lässt sich nicht rückgängig machen, da ein Übertrag an die nächste Stelle erfolgt


Wenn der erste Nachteil in der Praxis kein Problem darstellt (dazu hast Du Dich immer noch nicht geäußert), kann man mit einer Kombination aus beiden Programmen vlt. sogar eine Variante erzeugen, die auch noch auf der 0BA5 läuft.
 
Hab' mich mal hingesetzt und alle Vorteile miteinander verbunden. Allerdings musste ich bei der 0BA6 bleiben, da es für mich doch nicht ohne die arithmetische Anweisung ging. Es entfiel zwar das mühsame Zerlegen des Zählers, dafür musste ich diesen für eine vernünftige Anzeige wieder zusammen setzen und zum Speichern der Zwischenstände hab' ich auch nichts anderes gefunden.


Und so sieht mein jetziges Ergebnis aus ->

Zählung mit Manipulationsmöglichkeit (mit 4 remanenten statt einem Zähler):


Speicherung für Ausgabe (dadurch jetzt 4fach nötig):


Ausgabeablauf (etwas modifiziert, damit nur noch 1 Timer benötigt wird und ein echtes Anzeigesignal für die aktive Ausgabe vorhanden ist):


Tastenauswahl (fast wie gehabt):


Tastaturmatrix (wie gehabt):


Stände (wenn die bei den Anzeigen mit führenden Nullen dargestellt werden sollen, dann bei B060, B063 und B066 die Nachkommastellen auf 3 ändern):


Anzeigen (in deutsch und englisch, sowohl für die Logo als auch ein Display):


Beispiele:



Die Funktionen der Eingänge:
I1 = Zählung Impulseingang
I2 = Zählung Reset
I3 = Ausgabe manuell erneuern
I4 = Manipulation der 1. Stelle (Tausender)
I5 = Manipulation der 2. Stelle (Hunderter, ohne Übertrag auf Tausender)
I6 = Manipulation der 3. Stelle (Zehner, ohne Übertrag auf Hunderter)
I7 = Manipulation der 4. Stelle (Einer, ohne Übertrag auf Zehner)
I8 = Simulation Impulseingang zum Testen schneller Impulsfolgen (auf den und den Impulsausgeber B077 kann man auch verzichten, da man die schnelle Veränderung auch mit I4 - I7 gut testen kann)

Funktionen der Ausgänge:
Q1 = Tastaturmatrix Zeile 1
Q2 = Tastaturmatrix Zeile 2
Q3 = Tastaturmatrix Zeile 3
Q4 = Tastaturmatrix Zeile 4
Q5 = Tastaturmatrix Spalte 1
Q6 = Tastaturmatrix Spalte 2
Q7 = Tastaturmatrix Spalte 3
Q8 = Ausgabe aktiv


PS:
Jeder Eingangsimpuls wird gezählt, auch wenn gerade eine Ausgabe getätigt wird.
Jeder veränderte Zählerstand löst automatisch eine neue Ausgabe aus, wobei dann immer nur der nach der getätigten Ausgabe gerade aktuelle Zählerstand übertragen wird. Bei schnellen Impulseingängen werden also ggf. Zwischenstände in der Anzeige übersprungen.
Eventuell kann man noch die Ausgabe am Timer B034 beschleunigen.
PPS:
Der Zählerstand bleibt bei Abschaltung der LOGO! erhalten (weiß gar nicht, ob ich das vorher drin hatte).
Bei Neustart der LOGO! wird auch wieder automtisch der aktuelle Zählerstand ausgegeben.
 

Anhänge

  • Tastaturersatz V3.zip
    56,7 KB · Aufrufe: 7
Zuletzt bearbeitet:
Hallo hucki,

zuerst mal vielen Dank für die Arbeit die Du dir gemacht hast. Ich hatte nicht geahnt welche Wellen mein Thread hier auslöst, und ich hoffe Du hast nicht allzu viel Zeit dafür investiert.

Mit der Version 3 deiner Lösung sind im Gegensatz zu meiner Lösung auch schnelle Zählerveränderungen möglich und das dann Zählerstände bei der Anzeige übersprungen werden wohl auch nur logisch. In meinem speziellen Fall hab ich jedoch max. alle 3 - 5 Sekunden ein Impuls, insofern komme ich noch gut mit Zählern aus.

Bei schnell laufenden Eingangsimpulsen wäre die Ausgabe über "Klappertechnik" (Relais der Logosteuerung) zur Ansteuerung auf eine Anzeige wohl auch die falsche Wahl und man müsste sich generell über die Verwendung von andere Hardware Gedanken machen!

Um den Nachteil des Übertrags bei der Zählermanipulation abzustellen werde ich wohl noch Eingang I8 verwenden und damit die Zählrichtung der Zähler ansteuern. Somit lässt sich dann auch ein eingegebener Wert korrigieren.

Das bei der Manipulation einer Stelle keine neue Ausgabe erfolgt empfinde ich jetzt nicht als Nachteil sondern eher als eine andere Art der Schaltungsphilosophie. Es wird bei der Manipulation der Stellen erst durch die Eingänge I4 bis I7 der gewünschte Wert voreingestellt und dann mit I1 ausgegeben. Die Anzeige der Logo zeigt insofern immer den Wert der als nächstes zur Ansteuerung der Anzeige ausgegeben wird.

Was mich erst verwunderte war das bei deiner Lösung schon eine Ausgabe (0000 und E) erfolgte ohne das überhaupt ein Zählimpuls vorhanden ist. Aber wie bereits gesagt Du bist mit einer anderen Philosophie herangegangen.

Viele Grüße und einen Stressfreien Start in die neue Woche.
Loenne
 
Zuviel Werbung?
-> Hier kostenlos registrieren
die Arbeit die Du dir gemacht hast. Ich hatte nicht geahnt welche Wellen mein Thread hier auslöst, und ich hoffe Du hast nicht allzu viel Zeit dafür investiert.
Wie schon oft hier im Forum erwähnt, ist sowas einfach eine nette Herausforderung für mich, um selbst im Training zu bleiben.
PS: Auch wenn mir mein Job ansonsten Spaß macht, hab' ich dort leider nur selten bis niemals was zu programmieren. :(
Und wenn, dann auch meistens nur schnelle Bugfixes.



Was mich erst verwunderte war das bei deiner Lösung schon eine Ausgabe (0000 und E) erfolgte ohne das überhaupt ein Zählimpuls vorhanden ist. Aber wie bereits gesagt Du bist mit einer anderen Philosophie herangegangen.
Das ist ja nur bei Neustart der Simulation immer 0000. In der Praxis kann ja auch mal der Strom weg sein und dann muss bei der Wiederkehr doch sicher erst mal der Zählerstand an der Anzeige wieder hergestellt werden. In der Simulation kann man das über die STOP-Funktion testen.
 
Zuletzt bearbeitet:
Zurück
Oben