Step 7 Anzahl der Eingänge als Zahl darstellen

tonka

Level-2
Beiträge
16
Reaktionspunkte
2
Hallo
Ich habe ein kleines Problem bei der Umsetzung einer Kegelbahnsteuerung in Verbindung mit einer Simatic 300 (S7).
Ich möchte gerne eine Ganzzahl der umgefallenen Kegel darstellen.
Ich habe also 9 Inputs. Wenn 2 Kegel fallen soll die 7 Segmentanzeige die Zahl 7 anzeigen.
Wie realisiere ich das am einfachsten.
 
Moin tonka,

wie wird die 7-Segmentanzeige angesteuert? Über eine Kommunikationsschnittstelle oder werden die einzelnen Segmente über Ausgänge angesteuert?
 
die Ansteuerung der Anzeige ist nicht das Problem.
Aber wie wandle ich 4 inputs in die Zahl 4 um, oder 2 Inputs anstehen die Zahl 2.
Ich muss ja das Prozessabbild der Eingänge zusammenzählen.
Wenn ich die Eingänge in ein Merkerwort transferiere fuznktioniert das ja nicht.
 
Was mir grad auf die schnelle eingefallen ist wäre mit Flanken zu arbeiten. Also wenn sich der Zustand des Pins ändert löst der eine Flanke aus und diese Flanke löst eine Addition aus. Und dann musst du es nur noch zurücksetzen wenn du die Pins wieder aufgestellt hast. Das wäre auch in FUP oder KOP umsetzbar.
 
Was mir grad auf die schnelle eingefallen ist wäre mit Flanken zu arbeiten. Also wenn sich der Zustand des Pins ändert löst der eine Flanke aus und diese Flanke löst eine Addition aus. Und dann musst du es nur noch zurücksetzen wenn du die Pins wieder aufgestellt hast. Das wäre auch in FUP oder KOP umsetzbar.
Dann muss eine negative Flanke eine Subtraktion auslösen. Was ist, wenn der Wert mal nicht stimmt (Programm neu übertragen, CPU Neustart, etc.)? Das bereinigt sich nicht selbst.
 
Ich würde mit dem Baustein "Bitsum" aus der Bibliothek die Anzahl der Bit's zählen und diese
Zahl (1-9) auf die 7-Segment-Anzeige legen. Wenn die Eingänge nicht in einem Wort liegen musst du die einsammeln
und auf einen Merker legen. Wie die 7-Segment-Anzeige aufgebaut ist hast du nicht beschrieben.
 
Ich würde mit dem Baustein "Bitsum" aus der Bibliothek die Anzahl der Bit's zählen und diese
Zahl (1-9) auf die 7-Segment-Anzeige legen. Wenn die Eingänge nicht in einem Wort liegen musst du die einsammeln
und auf einen Merker legen. Wie die 7-Segment-Anzeige aufgebaut ist hast du nicht beschrieben.
ich würde die int dann BCD codieren das können die gängigen Anzeigen. Mir geht es um das zusammenzählen der Eingänge die ja unterschiedlich anstehen können, jedoch sollte bei 4 Eingänge die Zahl 4 stehen.
 
Ich würde mit dem Baustein "Bitsum" aus der Bibliothek die Anzahl der Bit's zählen und diese
Zahl (1-9) auf die 7-Segment-Anzeige legen. Wenn die Eingänge nicht in einem Wort liegen musst du die einsammeln
und auf einen Merker legen. Wie die 7-Segment-Anzeige aufgebaut ist hast du nicht beschrieben.
zählt Bitsum die einzelnen Bits oder für die ersten 4 Bits 15
Bitsum geht nur in einer 1500 CPU
 
ja, der Baustein zählt einfach die Anzahl von Bits die in einem Doppelwort vorhanden sind.
Ich hab dass mal gemacht für die Anzahl von Strahlen eines Lichtgittes die belegt sind
Bitsum.png
 
in TIA bin ich nicht so fitt kannst du mir deine Lösung kurz erklären.
ist #Ti_cnt immer das Zischenergebnis was passiert wenn die Eingänge zu gleich kommen?
Der Code ermittelt, wieviele Eingänge zur gleichen Zeit 1 sind.

zählt Bitsum die einzelnen Bits oder für die ersten 4 Bits 15
Bitsum zählt in einer Schleife die gesetzten Bits in einem DWORD, das Ergebnis kann 0 bis 32 sein.

Bitsum geht nur in einer 1500 CPU
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?
 
Zurück
Oben