Vier Siebensegmentanzeigen als Timer

TSF

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo zusammen,
ich bin ziemlich wenig mit SPS vertrau und grad an einem Projekt dran. Ich will mit CoDeSys 2.3 ein Programm schreiben das in vier Siebensegmentanzeigen einen Countdown-Timer anzeigt. Am liebsten in FUP oder ST. Die Zeit soll also runterlaufen. Angezeigt werden sollen Minuten und Sekunden. Die Zeit sollte man durch einen Taster erhöhen bzw veringern können und zwar immer genau um 30 Sekunden.
Hat jemand vielleicht eine Idee, wie ich das Programm umsetzten kann?
MFG
TSF
 
Hallo und Willkommen im SPS Forum!

Wie sind die 7 Segmentanzeigen denn Perpherietechnisch an die SPS angebunden ? Wahrscheinlich Byteweise Stichwort BCD !

In der utill.lib gibts eine Funktion INT_TO_BCD:
Diese Funktion (util.lib) verwandelt einen INTEGER-Wert in ein Byte im BCD-Format :
Der Eingabewert der Funktion ist vom Typ INT, die Ausgabe vom Typ BYTE.
Sollte ein INTEGER-Wert übergeben werden, welcher nicht in ein BCD-Byte verwandelt werden kann, so wird 255 ausgegeben.
Beispiele in ST:
i:=INT_TO_BCD(49); (* Ergebnis ist 73 *)
k:=BCD_TO_INT(97); (* Ergebnis ist 151 *)
l:=BCD_TO_INT(100); (* Fehler! Ausgabe : 255 *)




als eingangswert kannst du den zeitwert eines Timers ja in Integer Umwandlen und diesen wiederum in BCD wandeln. Diese Variable dann entsprechend auf den Ausgang schreiben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

wie ist die Kommunikation zu dem Display ?

Jeder Linie einzeln ansteuerbar also 8 Ausgänge pro 7 Segmentanzeige oder als BCD code usw....

Das Programm sollte eigentlich leicht sein.

MfG CAS
 
Danke erstmal für die schnellen Antworten.

Die Linien werden in der Visualisierung einzeln angesteuert.

Um die Funktion von einer Siebensegmentanzeige auszuprobieren habe ich mal 4 Schalter gebaut, die die Binärcodes 8-4-2-1 symbolisieren. Die hab ich dann in FUP den Zahlen zugeordnet und die wiederum den einzelnen Linien (a,b,c,d,e,f,g). Somit kann ich die Zahl an einer Siebensegmentanzeige manuell durch die Schalter eingeben.. (nur so nebenbei, um meinen Stand zu schildern ;))

@Burns848: was kann ich dann mit den BCD anfangen? Und kann es sein, dass die Funktion bei mir irgendwie fehlt? Sie ist nicht wie die anderen in dem Ordner für Konvertierungen.

@CAS: wenn mans kann ist es wohl nicht mehr schwer, hab hier leider nicht viel Erfahrung und viele Fachbegriffe sagen mir erstmal gar nichts, also brauch ich n bisschen länger ;)
 
hallo,

als erstes baust du dir einen counter, der die Zeit wiederspiegelt.
Dann nimmst du einen taktgenerator, der den counter runterzählt. Alle sekunde und abfrage auf null nicht vergessen.

Dann nimmst du den counterwert und findest per programm deine Zehnerstelle der Minuten heraus, die Einerstelle deiner Minuten und das gleichefür die Sekunden heraus.
jeden der vier Werte schiebt du in deinen FB (4x) und fertig.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
einen counter der runterzählt hab ich. ich versteh nur ned ganz wie ich den code auf die siebensegmente verteile... und was meinst du mit
Dann nimmst du den counterwert und findest per programm deine Zehnerstelle der Minuten heraus, die Einerstelle deiner Minuten und das gleichefür die Sekunden heraus.
jeden der vier Werte schiebt du in deinen FB (4x) und fertig.
?

wie finde ich das per programm raus?
 
Hallo,
ich hab dir mal schnell ein Prog gemacht.
Sollte eigentlich selbsterklärend sein....

Nur die Wandlung von Dezimal nach LED (also den 8 Ausgängen pro Segment) mußt du noch einmalig in den FB schreiben. Das sollte aber kein Problem sein.

Hardware-Ausgänge noch zuweisen !!!

MfG CAS
 

Anhänge

  • Counter_LED.zip
    20,9 KB · Aufrufe: 28
danke!

danke an euch für die große hilfe und lob an CAS. habs dank euch geschafft! :)
 
Zurück
Oben