TIA Ermitteln wie viele Eingänge einer UND-Verknüpfung "True" sind

Mogli

Level-2
Beiträge
129
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen zusammen,

ich stehe bei einer ganz trivialen Aufgabe etwas auf dem Schlauch.

Ich habe eine Anlage mit 20 Ventilen.
In Abhängigkeit von der Anzahl der geöffneten Ventile soll eine Pumpe geregelt werden.

Was wäre der sinnigste Weg um zu ermitteln, wie viele Ventile (1bit pro Ventil = Rückmeldung auf) wirklich offen sind?
Sprich ich habe 1 großes "und" Glied mit 20 Input-Beinchen und möchte erkennen, wie viele der Beinchen "True" sind.

TIA V17 CPU:1513-1PN

Schon Mal vielen Dank
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du könntest dir einen Zähl-Ablauf machen - so in der Art (Pseude-Code) :
Code:
Zähler := 0 ;

if Ventil1_Auf the Zähler := Zähler +1 ; end_if ;
if Ventil2_Auf the Zähler := Zähler +1 ; end_if ;
if Ventil3_Auf the Zähler := Zähler +1 ; end_if ;

usw.
Am Ende wertest du den Zähler dann aus ...
 
und der Michael hat dann gleich eine schöne Variante gewählt.
Jetzt kommt noch eine unschöne (LOGO!-)Variante: max. 20 Bits zählen unter Verwendung von 18 1-Bit-VollAddierern:

max20BitsZählen.jpg

So ist das "UnterProgramm" aufgebaut, das oben 18-mal verwendet wird:
VollAddiererUDF.jpg

Die als pdf getarnte Datei '20to5-18VA.lsc.pdf' im Explorer zu Datei '20to5-18VA.lsc' enttarnen durch Löschen der letzten 4 Zeichen (.pdf)!
 

Anhänge

Zuviel Werbung?
-> Hier kostenlos registrieren
Da hast du dir viel Mühe gegeben ... aber :
mit unschön hast du noch komplett untertrieben - das mag zwar funktionieren ... mit so etwas möchte ich mich aber bei aller Liebe NIEMALS herumschlagen müssen ... :rolleyes:
Ja, Ralf, "unschön" ist sicherlich eine Untertreibung. Aber hast Du eine schönere Lösung für eine LOGO!?
Mit einer LOGO! möchte ich mich auch NIEMALS herumschlagen müssen ... ich schlage mich lediglich freiwillig mit der Simulation herum, die ich gar nicht sooo übel finde.

Eigentlich wollte ich nur ganz dezent darauf hinweisen, dass ein 1-Bit-VollAddierer nichts anderes tut, als zu zählen, wieviele seiner 3 EingangsBits den 1-Zustand haben. Und ein kleines Bisschen hatte ich gehofft, dass vielleicht jemand eine Idee hat, wie man mit wenig Aufwand und/oder viel Eleganz das "Prinzip" auf die Verarbeitung von mehr als 3 Bit aufbohren könnte.

Die viele Mühe hatte ich mir schon vor einigen Jahren mal gegeben und heute nur wieder ausgegraben.
Aber heute habe ich mir anschliessend die Mühe gemacht, das Prinzip ein wenig abzuwandeln. Der 1-Bit-VA erzeugt nun nicht mehr 1 Ergebnis-Bit und 1 Überlauf-Bit, sondern eine INT-Zahl 0..3. Die 7 durch die 7 1-Bit-VA erzeugten INT-Zahlen werden dann "konventionell" addiert.
Dieser Lösungsweg dürfte sich leicht und übersichtlicher z.B. in SCL umsetzen lassen, da das "Unterprogramm" jetzt nur noch 1 RückgabeWert hat und sich somit als "konventionelle" Function realisieren lässt.
Die Addition von 7 Argumenten ...
Code:
iAnzBit := iVA(Bit1, Bit2, Bit3) + iVA(Bit4, Bit5, Bit6) + iVA(Bit7, Bit8, Bit9) + iVA(Bit10, Bit11, Bit12) +
           iVA(Bit13, Bit14, Bit15) + iVA(Bit16, Bit17, Bit18) + iVA(Bit19, Bit20, FALSE) ;
... dürfte aber nach wie vor ohne ProgrammSchleife für manchen zu Tipp-oder-copy-&-paste-aufwändig sein. ;)

max21BitsZählen.jpg
... mit dem UnterProgramm ...
1-Bit-VAzuINT.jpg
... das als Ergebnis eine der 4 Zahlen 0..3 liefert.
 
Ja, Ralf, "unschön" ist sicherlich eine Untertreibung. Aber hast Du eine schönere Lösung für eine LOGO!?
Mit einer LOGO! möchte ich mich auch NIEMALS herumschlagen müssen ... ich schlage mich lediglich freiwillig mit der Simulation herum, die ich gar nicht sooo übel finde.
auf deine Frage : ich würde eine LOGO nicht mal dann einsetzen wenn ich sie geschenkt bekäme. Im Arbeitsumfeld schon mal gar nicht. Man kommt zu schnell in den Bereich wo bestimmte Dinge nur noch "von hinten durch die Brust ins Auge" gehen.
Dann nehme ich normalerweise eine ET-CPU oder eine 1200 wäre auch noch eine Alternative.
Hattest du mal den Thread mit dem Seilbahn-FIFO von Hucki gesehen ? Das wäre mit der 1200er oder der 1500er nur so ein gucken gewesen ...
 
auf deine Frage : ich würde eine LOGO nicht mal dann einsetzen wenn ich sie geschenkt bekäme. Im Arbeitsumfeld schon mal gar nicht. Man kommt zu schnell in den Bereich wo bestimmte Dinge nur noch "von hinten durch die Brust ins Auge" gehen.
Genau so ist es!
Hattest du mal den Thread mit dem Seilbahn-FIFO von Hucki gesehen ? Das wäre mit der 1200er oder der 1500er nur so ein gucken gewesen ...
Ja, habe ich gesehen. Ich bewundere, wie Mario alias hucki an allen von-hinten-durch-die-Brust-ins-Auge-Hindernissen vorbei mit den Eigen[un]arten der Logo! spielt und zu solch verblüffenden Ergebnissen kommt.
Umgekehrt formuliert: mir tun alle Leid, die sich auf eine LOGO! festgelegt und keinen so kreativen ProgrammZauberer verfügbar haben.
 
mir tun alle Leid, die sich auf eine LOGO! festgelegt und keinen so kreativen ProgrammZauberer verfügbar haben.
Die Frage ist doch, ob es so sinnvoll ist Code von einem "ProgrammZauberer" dem Kunden unterzujubeln.

Und ich rede jetzt nicht von Hucki.

Das technisch mögliche ausreizen ist ja schön und recht aber ob man da dem Endkunden einen Gefallen mit macht.....
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber hast Du eine schönere Lösung für eine LOGO!?
Nimm' einen Analogmuxx und häng' je einen Eingang an S1 und S2. Wähle für V1-V4 die 0, 1, 1 & 2. (@Heinileini, k.A. warum Du unbedingt 3 Eingänge auf einen Muxx bringen musstest?!)
Kopiere das für alle benötigten Eingänge.

Addiere alle vorhandenen Analogmuxxe.

(Schließe alle Bausteine irgendwie ab, damit die LOGO! das Ganze akzeptiert.)

🤷‍♂️
 
Zuletzt bearbeitet:
ich würde eine LOGO nicht mal dann einsetzen wenn ich sie geschenkt bekäme.
Kenne einige, die das von Siemens insgesamt sagen.
Oft ist nur die Kundenvorgabe in Europa der Grund, sie trotzdem zu verwenden. Und das auch meist nur wegen der Ersatzteilvorhaltung.
🤷‍♂️


ICH finde die LOGO! bei einigen Sachen besser als 'ne S7-1x00.
Z.B. um mir einfach 4 Analogwerte anzeigen zu lassen und nebenbei noch "ein paar Bits zu schubsen".

Wie wird hier so oft gesagt: Für jede Speise das passende Besteck!
 
Zuletzt bearbeitet:
@hucki :
Das sollte jetzt auch nicht abwertend gegen dich sein, Mario - ich hoffe das hast du auch nicht so verstanden.
Für mich ist es einfach so, wie schon geschildert, dass mir viele Sachen mit dem Ding zu umständlich umzusetzen sind, die ich mit einer 300er oder einer 1x00 mal eben so hinbekommen würde. Naja ... und wenn man denm Punkt nach oben stellt dann ist der preisliche Vorteil eher nebensächlich ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Gegen mich habe ich das auch nicht verstanden, nur dieses generelle gegen die LOGO!

Es gibt halt auch einige Sachen, die sind mit 'ner LOGO! deutlich einfacher umzusetzen.

Dieses Ausloten hier im Forum ist da ja eher for fun.
 
Die Frage ist doch, ob es so sinnvoll ist Code von einem "ProgrammZauberer" dem Kunden unterzujubeln.
Generell: nein.
Das technisch mögliche ausreizen ist ja schön und recht aber ob man da dem Endkunden einen Gefallen mit macht.....
Manchmal kann es aber sogar vom Kunden gewünscht sein, der PLC etwas abzuverlangen, für das sie eigentlich nicht geschaffen wurde.
Dabei denke ich aber an Erfahrungen, die ich mit S5 gesammelt habe und ausdrücklich nicht an die LOGO!.

Nicht alles, was man in einer PLC programmiert, muss für den Kunden oder seinen Reparateur leicht verständlich sein.
Nutzt man z.B. Bausteine aus Biblioteken, so hat man es nicht selten mit Bausteinen zu tun, in die man nicht hineinsehen kann, bei denen man sich aber überwinden kann, blind auf ihr korrektes Funktionieren zu vertrauen.
Warum soll das bei selbstgestrickten Bausteinen nicht auch möglich sein? Ist es zuviel verlangt, einen solchen Baustein so gut zu durchdenken und so gründlich zu testen, dass man sich auf sein einwandfreies Funktionieren verlassen kann?
Die Lesbarkeit ist grundsätzlich ein wesentliches Kriterium, sich für den einen oder anderen LösungsWeg zu entscheiden, kann aber nicht immer das wichtigste zu berücksichtigende Kriterium sein. Gelegentlich können andere Kriterien ausnahmsweise den Vorrang haben.

... k.A. warum Du unbedingt 3 Eingänge auf einen Muxx bringen musstest?! ...
Das musste ich nicht ungedingt. Es hat sich einfach so ergeben.
Die Grundidee war ja, die Zählerei mit einem VA zu erledigen. Das Problem bei diesem LösungsWeg ist, dass schon bei 3 EingangsBits das Maximum erreicht ist und die AufgabenStellung in diesem Thread stolze 20 EingangsBits verzeichnet.
Die zweite Idee war, bei diesen VAn die 2 ErgebnisBits nicht als 2 separate boolesche Ergebnisse zu interpretieren, sondern als 1 vorzeichenlose 2-Bit Ganzzahl, die dann direkt und ganz konventionell addiert werden kann.
Die Nutzung des AnalogMuxes war naheliegend, um die 2 ErgebnisBits in eine Zahl umzusetzen.
Hätte ich mich von der "fixen" Idee gelöst, VA zu "missbrauchen", dann wäre die Einführung der AnalogMuxe in den LösungsWeg natürlich der optimale ZeitPunkt gewesen, endlich über einen Verzicht auf die VA zu nachzudenken, da der VA ja lediglich die 3 EingangsBits zu 2 Bits einer GanzZahl "komprimiert".

PS:
Ich bin nicht der Meinung, dass die LOGO! für nichts zu gebrauchen ist. Ich bin aber der Meinung, dass die bei der LOGO! erforderliche Denkweise so anders ist als bei den "normalen" PLCs, dass sich die LOGO! nicht als EinstiegsModell für das Erlernen der PLC-Programmierung eignet.
Vielleicht wird sich bei den "normalen" PLCs in der Zukunft etwas tun und sie passen sich der LOGO!-Denkweise an? ;) Ich glaube kaum, denn die "MengenGerüste", die die verschiedenen AufgabenStellungen mit sich bringen, sind zu breit gefächert.
 
Zurück
Oben