sps und 7 segmentanzeige

magmaa

Level-1
Beiträge
349
Reaktionspunkte
27
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo ich will den zählstand (einstellig) eines zählers auf einer 7 segmentanzeige darstellen. Gibt des da eine baustein der den dezimalwert in ein 4 stelligen BCD code umwandelt? Um die 7 segmentanzeig anzusteuern.
 
Danke für die schnellen antworten ja arbeite S7 kannst das mal genauer beschreiben wie das geht mit FC93.
 
einen dezimalen wert kannst du auch ganz einfach mit ITB ins bcd-format wandeln

(eifachste variante)
L 6
ITB
T AB 3
hier verquast du natürlich 4bit da die linken 4bit ja mit nullen überschrieben werden.

mit ein paar uw/ow anweisungen kannst du alle bits nutzen
 
Ok umwandel ist jetzt klar denk ich aber ich schließe die 7 eingänge der 7 segmentanzeige an 7 ausgänge der sps an (z.B. A0.0 bis A0.6).
Das ist mir jetzt nicht so klar wie das dann geschied wenn ich den BCD code habe.?
 
@crash

Wenn er die Segmente direkt ansteuern will, dann natürlich, aber er schrieb doch:

Hallo ich will den zählstand (einstellig) eines zählers auf einer 7 segmentanzeige darstellen. Gibt des da eine baustein der den dezimalwert in ein 4 stelligen BCD code umwandelt? Um die 7 segmentanzeig anzusteuern.

Die meisten 7-Segmentanzeigen haben über eine Elektronik Eingänge für BCD. Dafür reicht ITB aus.

@Magmaa
Edit: Siehe Magmaas letzer Post: Dann hat Crash natürlich recht und du nimmst am Besten den FC93.
Die Hilfe zum FC93 ist doch eindeutig!
 
Zuletzt bearbeitet:
Hallo ich will den zählstand (einstellig) eines zählers auf einer 7 segmentanzeige darstellen. Gibt des da eine baustein der den dezimalwert in ein 4 stelligen BCD code umwandelt? Um die 7 segmentanzeig anzusteuern.

@Ralle: du hättest noch etwas weiter lesen müssen.
naja ist ja schon spät :ROFLMAO:

Edit: ich war zu langsam: Hast es ja schon selbst bemerkt!
 
Zuletzt bearbeitet:
Ok hab mir die hilfe nochmal genau durchgelesen aber jetzt ist mir immer noch nicht klar wie das gehn soll.
Ich habe da eine funktion SEG FC 93 mit E0.0 wird die gestartet und wenn es fehlerfrei läuft wird A0.0 auf 1 gesetzt und weiter.
Sorry das ich so blöde frage aber ich bin noch anfänger und für jemand der sich damit auskennt mögen die fragen vielleicht dumm sein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Funktion Bitmuster für 7-Segment-Anzeige erzeugen (SEG) wandelt jede der vier Hexadezimalziffern des angegebenen Quellworts (IN) in vier equivalente Codes für eine 7-Segment-Anzeige um und schreibt diese in das Doppelwort des Ausgangs (OUT).
An IN legst du ein Word mit deinen Hexadezimalziffern, also für eine 7-Segmentziffer steht da drin

W#16#0001
W#16#0002
W#16#0003
...
W#16#000E
W#16#000F

Dann startest du mit E0.0 (du kannst da auch einen beliebigen Merker oder Eingang nutzen) die Wandlung.
Am Ausgang A0.0 (du kannst da auch einen beliebigen Merker oder Ausgang nutzen) erscheint eine 1, wenn die Wandlung ok und fertig ist.
Dann kannst du den Ausgang Out lesen, da schreibst du ein Merkler-Doppelwort ran hier MD0 (du kannst da auch einen beliebiges Merkerdoppelwort)

Im MB3 (Merkerbyte 3) dieses Merkerdoppelwortes erscheint dann dein Code für die 7-Segmentanzeige. Du schreibst dann noch:

Code:
 L     MB     3                    //7-Segment-Bitmuster
 T     AB     0                    //und in die Ausgänge
Allerdings kannst du so den A0.7 nicht mehr richtig nutzen, bzw. erst nach dieser Zuweisung kannst du den Ausgang 0.7 für etwas anderes verwenden.

Besser ist deshalb:

Code:
      L     AB     0
      L     B#16#80                     //Hex für 1000 0000 binär
      UW                                //nur Bit7 behält seinen altuellen Wert, alle anderen werden 0
      L     MB     3                    //7-Segment-Bitmuster
      OW                                //Bit 7 ist wie vorher, Bit0-6 enthält das Bitmuster für die 7-Segmentanzeige
      T     AB     0                    //und zurück in die Ausgänge
 
Zuletzt bearbeitet:
Ah danke für die gute erklärung jetzt hab ich es auch verstanden und mit der S7 simulation haut es auch hin. Danke.
 
Zurück
Oben