Step 7 Anzahl der Eingänge als Zahl darstellen

Zuviel Werbung?
-> Hier kostenlos registrieren
Der Code ermittelt, wieviele Eingänge zur gleichen Zeit 1 sind.


Bitsum zählt in einer Schleife die gesetzten Bits in einem DWORD, das Ergebnis kann 0 bis 32 sein.


Bitsum gibt es in TIA auch für die S7-300/400. In Step7 classic V5.x ist Bitsum der FC99 aus der Lib "TI-S7 Converting Blocks"

Mit welcher Software programmierst du deine S7-300? Step7 V5.x oder TIA Vxx ?
Welche Programmiersprache verstehst du?
Step7 V5.x zum testen hab ich eine Vipa 313SC Speed 7
 
Nein - nein ... da hat @Tschoke schon Recht - für Zahlen bis 9 brauchst du keine BCD-Kodierung - da ist der Hex-Wert und der BCD-Wert noch identisch und wenn du die Segmente einzeln ansteuerst dann hat das auch nichts mit BCD zu tun ...
Das ist richtig.Meine Frage /Antwort zielte auf die Ansteuerung der Anzeige. Wenn die 7-Segmetanzeige keinen Decoder hat musst du aus
den 4 Ausgängen noch einen Dual/7-Segment-Decoder programmieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn die 7-Segment-Anzeige einen Decoder hat (integriert oder vorgeschaltet), dann ist der in der Regel ein Dual-zu-7-Segment-Decoder, der aus 4 Eingangs-Bits 16 verschiedene 7-Segment-Muster erzeugt. (Der heißt "Decoder", weil er 4 dual codierte Bits zu 16 Zuständen decodiert.) Die 4 Eingangs-Bits sind dual codiert für die Dezimalwerte 0 bis 15, davon werden üblicherweise die Codes 0 bis 9 für die Bimuster der Ziffern 0 bis 9 verwendet, die Codes 10 bis 15 sind Sonderzeichen, z.B. Hexadezimalziffern A bis F. "Dual" wird erst dann zu "BCD", wenn mehr als eine Dezimalstelle verarbeitet wird. Dann werden für jede Dezimalstelle 4 eigene Bits verwendet.
Oft wird anstatt Dual-zu-7-Segment-Decoder die Bezeichnung BCD-zu-7-Segment-Decoder verwendet, weil damit auch mehrere Dezimalstellen angesteuert werden können (Kaskadierung oder Multiplex oder direkt mehr Ausgänge für mehrstellige 7-Segment-Anzeigen) und dann die Ausgabewerte BCD-codiert benötigt werden.
"BCD" für nur eine Dezimalstelle/Ziffer bedeutet nicht, dass die Zahlen 0 bis 9 zu BCD konvertiert werden müssen, weil die Bitmuster der Dezimalwerte 0 bis 9 mit den BCD-Werten 0 bis 9 identisch sind: Dezimal 0 bis 9 = 2#0000 bis 2#1001 = 16#0 bis 16#9 = BCD#0 bis BCD#9

Wenn bei 7-Segment-Anzeigen ohne Decoder direkt die 7 Segmente angesteuert werden sollen/müssen, dann muss man noch einen 7-Segment-Decoder für die Erzeugung der 7-Segment-Bitmuster programmieren, den man für mehr als eine Dezimalstelle zweckmäßigerweise mit BCD-codierten Werten füttert (4 Bits je Dezimalstelle). Sollen auch die Pseudotetraden mit den Werten dezimal 10 bis 15 zur Anzeige von Sonderzeichen benutzt werden, dann kann man streng genommen nicht mehr von BCD sprechen, weil die Pseudotetraden für BCD-codierte Dezimalzahlen nicht vorkommen können und verboten sind.
 
wie schon gesagt die Visualisierung war nicht direkt das Thema, da ich noch keine Anzeige besitze, da habe ich alle Freiheiten.
Zur Not gibt es ein kleines Pannel, was aber auf größerer Entfernung schlecht lesbar wäre.
Mir ging es um die Bitsummierung, was ja doch nicht so einfach ist.
Ich danke für euer Arrangement und die schnelle Hilfe.
 
Das einfachste ist wirklich der FC 99 Bitsum.
Das ist sehr einfach, aber: Bei diesem müssen wahrscheinlich noch die Eingänge auf ein DWord gemappt werden. Das ist dann eine Zusatzarbeit, die auch nicht viel geringer ist, als meinen Code direkt umzusetzen.
Intern läuft nach Angabe von @PN/DP wohl eine Schleife. Das kann man ja nun auch einfach außerhalb machen.
Der Code ohne Schleife zeigt auch direkt was passiert. Der FC99 ist eine Blackbox.

Ich habe nichts gegen den Baustein und habe ihn auch schon selber eingesetzt. Aber ich wehre mich gegen die Aussage, dass er die einfachste Variante ist.
 
Wehr dich nicht, "Widerstand ist zwecklos".;)
Wenn ich die 9 Eingänge auf einem Eingangswort zur Verfügung habe, wovon ich ausgehe und die nicht benötigten Bits "weg-undiere"
kann ich das Ganze in einer Zeile darstellen. Als Programmierübung ist eine eigene Schleife sicher sinnvoll.
 
Zurück
Oben