NH Sicherungen 50A


Google-Suche auf MEINE-SCHALTUNG.de :





Dauerkalender


Lottozahlen via SPS

Wenn bereits alle Methoden, Tipps und Tricks beim Ankreuzen der berühmten "6 aus 49" versagt haben, die erträumten Reichtümer ausblieben und Verzweiflung die Oberhand zu gewinnen droht, bleibt nur eins: mit eigener Konstruktion ins Feld zu ziehen und so für Erfolge zu sorgen.
Mit der folgenden Schaltung werden 6 Zahlen aus 49 via Zufall generiert, mit der 7-Segmentanzeige angezeigt und zum Ausfüllen eines Lottoscheines bereitgestellt.

Die Auswahl der Zahlen übernimmt ein SPS-Programm (SCL, TIA Portal). Der Vorgang wird mit einem Taster (S1, Neue_Ziehung) ausgelöst. Sobald er betätigt wird, wird eine Zufallszahl zwischen 1 und 49 generiert. Eine kleine Überwachungsroutine sorgt dafür, dass sich die Zahlen nicht wiederholen. Die neu gezogenen Zahlen werden in der Variable "var".Gezogene_Zahlen gespeichert, die als Array definiert ist.


// Neue Zahlen für meinen Lottoschein -----------------------

"R_TRIG_DB_5"(CLK:=#"Neue Ziehung", Q=>#Ziehung_Start);
IF #Ziehung_Start THEN
FOR #i := 0 TO 49 DO
#"Lotto-Zahlen"[#i] := #i;
END_FOR;
FOR #i := 1 TO 6 DO
Zahl_ziehen:
#Neue_Zahl := "LGF_RandomInt"(minValue := 1,
maxValue := 49,
error => #error,
statusID => #StatusID,
status => #Status);
IF #"Lotto-Zahlen"[#Neue_Zahl] = 0 THEN
GOTO Zahl_ziehen;
END_IF;
"var".Gezogene_Zahlen[#i] := #Neue_Zahl;
#"Lotto-Zahlen"[#Neue_Zahl] := 0;
"var".Tipp_nr := 0;
END_FOR;
END_IF;

Der zweite Taster (S2, Tippen) ermöglicht die Vorschau der Zahlen. Bei jedem Tastendruck wird die Nummer der aktuellen Zahl erhöht und auf der linken 7-Segmentanzeige (Digit 1) angezeigt. Mithilfe der beiden rechten 7-Segmentanzeigen (Digit 2 und 3) wird die Zahl selbst angezeigt. So kann man sich, vorwärts blätternd, alle 6 Zufallszahlen ansehen. Die Nummer der aktuell gewünschten Zahl wird in der globalen Variable "var".Tipp_nr abgelegt.


// Tippen (vorwärts blättern und Zahlen sehen)---------------

"R_TRIG_DB_6"(CLK:=#Tippen, Q=>#Tipp_Start);
IF #Tipp_Start THEN
"var".Tipp_nr := "var".Tipp_nr + 1;
IF "var".Tipp_nr > 6 THEN
"var".Tipp_nr := 1;
END_IF;
END_IF;

Alternativ können beide Programmteile in einem Funktionsbaustein zusammengefasst werden.

Funktionsbaustein meine Lotto Zahlen


Das SPS – Programm muss anschließend in der Lage sein, die Zahlen sichtbar zu machen. Dazu wird eine Schaltung mit 7-Segmentanzeigen, BCD-Decoder, den zwei Schaltern, drei Transistoren und Widerständen erstellt. Die Schaltung zeigt folgende Abbildung:

Schaltplan

Da die SPS mit 24VDC arbeitet, wird diese Spannung zunächst mit einem Spannungsregler (IC1, L78L05) auf 5V runtergeregelt. Damit kann der BCD-Decoder (CD74HC4511E) und seine Steuereingänge versorgt werden. Der BCD-Decoder wandelt die im Dual-System vorliegende Zahl an seinen Eingängen D0-D3 um und schaltet entsprechend seine Ausgänge a bis g ein. Mit diesen Signalen werden dann die einzelnen Elemente der drei 7-Segmentanzeigen (Digit 1 bis Digit 3) mit Strom, der durch die Widerstände R1 bis R7 begrenzt wird, versorgt. Die Entscheidung, welche Ziffern auf den drei Anzeigen anzuzeigen sind, trifft die SPS. Sie teilt das dem BCD-Decoder über ihre Ausgänge A0.0 bis A0.3 mit. Zusätzlich werden drei weitere Ausgänge der SPS (A0.4 bis A0.6) benötigt, um die einzelnen Anzeigen ein- und auszuschalten. Sonst würden sie, da sie parallel mit dem Decoder verbunden sind, stets die gleiche Ziffer anzeigen. Diese Ausgänge werden zeitlich versetzt und synchron mit den Ausgängen A0.0-A0.3 geschaltet. So bekommt jede Anzeige ihre eigene Ziffer. Das Ein- und Ausschalten der Anzeigen wird hier mit den Transistoren T1-T3 (S8050) realisiert. Die Anzeige erfolgt in dem Multiplex-Verfahren. Die drei Digits werden so schnell ein- und ausgeschaltet, dass das menschliche Auge dies nicht wahrnehmen kann. Die Spannungsteiler, die aus den Widerständen R8 bis R21 gebildet sind, wandeln die hohe Spannung von 24VDC in 5VDC um.

Die fertig aufgebaute Testschaltung:

Lotto_ziehung_mit_sps



Im nächsten Schritt muss dafür gesorgt werden, dass die SPS ihre Ausgänge passend verwaltet, damit die gewünschten Zahlen richtig angezeigt werden können. Das SPS Programm wird hier um eine weitere Sequenz erweitert, die in einem anderem OB (Weckalarm) untergebracht wird. Dieser Baustein wird in regelmäßigen Abständen, unabhängig davon, was das Hauptprogramm gerade macht, aufgerufen und bearbeitet. Bei jedem Aufruf wird ein anderer Digit angesteuert, während die anderen abgeschaltet werden. Bei ausreichend hoher Aufruffrequenz bekommt man auf dies Weise den Eindruck, die Anzeigen leuchten dauerhaft.

sps Variablen




// Ausgänge setzen und Ziffern anzeigen --------------------

"var".Digit := "var".Digit + 1;
IF "var".Digit > 3 THEN
"var".Digit := 1;
END_IF;
"Digit_1" := FALSE;
"Digit_2" := FALSE;
"Digit_3" := FALSE;
#Zehner_Anteil := "var".Gezogene_Zahlen["var".Tipp_nr] / 10;
#Rest := "var".Gezogene_Zahlen["var".Tipp_nr] - (#Zehner_Anteil * 10);
CASE "var".Digit OF
1:
#Ziffer := "var".Tipp_nr;
"Digit_1" := TRUE;
2:
#Ziffer := #Zehner_Anteil;
"Digit_2" := TRUE;
3:
#Ziffer := #Rest;
"Digit_3" := TRUE;
END_CASE;
#Ziffer_Byte := INT_TO_BYTE(#Ziffer);
"BCD_0" := #Ziffer_Byte.%X0;
"BCD_1" := #Ziffer_Byte.%X1;
"BCD_2" := #Ziffer_Byte.%X2;
"BCD_3" := #Ziffer_Byte.%X3;

Kurzvideo


Weitere Themen:


Multiplexing


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz