Step 7 BCD-Schalter Programm

Ruben95

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag mein Name ist Ruben ich muss für meine Prüfung in einem monat zwei BCD-Codierten tastschalter ( von 0-9) einbringen in die SPS programmierung.
Wie bekomme ich es hin das ich bisher nur die Werter 1 und 2 bei beiden Tastern benötige abzufragen und zu benutzen?
Vielen Dank schonmal :)
 
Oben rechts im Kopf des Forums gibt es ein Feld, darin steht "Live Search".
Gib darin bitte BCD-Schalter ein und du hast erst einmal eine reichhaltige Auswahl an Themen hier im Forum, die sich damit bereits beschäftigen. Darin mal suchen und lesen, dann ein wenig programmieren und dann bei Problemen hier weiterfragen.
 
Vielleicht beschreibst du einfach mal, wo der/die BCD-Schalter an deiner Eingangskarte wie angeschlossen ist und was du programmtechnisch bisher gemacht hast ...
 
z.B. mit einem Vergleich auf >= und <=

oder mit UND-Logik
1= E0 AND NOT E1 AND NOT E2 AND NOT E3
2= E1 AND NOT E0 AND NOT E2 AND NOT E3

Noch einfacher wäre es, wenn anstatt 1 und 2 die Werte 0 und 1 verwendet werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok, zuerst noch ein Link: http://www.sps-lehrgang.de/bcd-code/

Ein BCD-Codierter Schalter sollte dir für jede Ziffer 4 Inputs an die SPS liefern.
Nach der Tabelle (siehe Link) kannst du aus diese 4 Bit jeweisl eine Zahl decodieren.
Dafür gibt es in der SPS verschiedene Möglichkeiten.
Angenommen, die hast genug Eingänge zur Verfügung, dann legst du je 4 Bit auf 4 Eingänge eines Bytes.

E0.0 - Bit0, Ziffer 1
E0.1 - Bit1, Ziffer 1
E0.2 - Bit2, Ziffer 1
E0.3 - Bit3, Ziffer 1

E1.0 - Bit0, Ziffer 2
E1.1 - Bit1, Ziffer 2
E1.2 - Bit2, Ziffer 2
E1.3 - Bit3, Ziffer 2

Jetzt kannst du einfach das Eingangsbyte 0 laden und mit der gewünschten Zahl vergleichen.

L EB0
L 1
==I
= Merker_X_Ziffer1

L EB0
L 2
==I
= Merker_Y_Ziffer1

Oder du nutzt SCL und die Case-Anweisung oder in AWL die Sprungleiste.

Hast du nicht genügend Eingänge, dann legst du alles auf ein Byte und nutzt die BCD-Wandlung der SPS um daraus eine Dezimalzahl zu machen oder schiebst/kopierst so lange, bis du die je 4 Bit wieder in einem Byte stehen hast.

E0.0 - Bit0, Ziffer 1
E0.1 - Bit1, Ziffer 1
E0.2 - Bit2, Ziffer 1
E0.3 - Bit3, Ziffer 1

E0.4 - Bit0, Ziffer 2
E0.5 - Bit1, Ziffer 2
E0.6 - Bit2, Ziffer 2
E0.7 - Bit3, Ziffer 2

L EB0
SLW 12
SLR 12
T MB0 //hier steht nun Ziffer 1

L EB0
SRW4
T MB1 //hier steht nun Ziffer 2

Jetzt wieder wie oben weiter.

Hast du einen Simulator oder eine SPS, da kann man das schön testen und sich in einer Variablentabelle die Ergebnisse ansehen.

PS: In einer realen SPS sollte man noch beachten, dass es im Moment des Schalten des Schalters zu "irregulären" oder falschen Bitbelegungen kommen kann.
Daher mache ich es immer so, dass ich mir den aktuellen Wert des Bytes merke, bei einer Änderung des Eingangsbytes noch eine Zeit X warte bis es sich nicht mehr ändert (Triggern mit Flanke, TON zum Warten), dann das Byte in eine Zwischenvariable kopiere und diese auswerte.

PS2: BCD-Wandlung Step7

L EB0
BTI
T #Nummer
 
Zuletzt bearbeitet:
Zurück
Oben