Step 5 BCD Codierschalter abfragen und auswerten

Masterwork

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

Ich habe folgendes Problem:
Ich würde gerne mit 3 BCD Codierschaltern (0-9) also einen Wert 0 - 999 mit einer S5 100 U abfragen und verarbeiten.
Das bedeutet das ich 4 Eingänge pro BCD Codierschalter benötige für die Ausgabe der Zahlen 0-9.
Nun habe ich einen hydraulischen Zylinder der einen Schlitten bewegt und mittels einer Art Gewindestange und einem A/B Drehgeber ausgewertet wird.
Nach einer Anzahl von A/B Signalen "X" wurde der Schlitten z.B. 5mm bewegt.
Nun möchte ich mit meinen 3 Codierschaltern z.B. die Zahl 365 eingeben.
Nun soll der Schlitten 365mm weitergeschoben werden.
Müsste ich nun zur Realisierung 999 Netzwerke im Programm machen, in denen ich jeweils den Ausgangswert der Codierschalter z.B. 365 sowie die Anzahl der A/B Impulse mittels eines Vergleichers abfrage ?

Ich hoffe ihr könnt euch in Etwa vorstellen was ich meine:confused:
 
Welche 100U cpu brauchen Sie? Die 100 und ich meine auch die 102 brauchen keine FB's. In ein FC konte sie nicht alle instukties brauchen, ich must nach die tabele suchen was in ein 100 muchlich ist. Aber bei die BCD schalter muste sie fur ein vergleich zu machen erst de BCD wert unzetsen nach ein DUAL wert (KF format in S5). Das ist mit ein Zahler zu machen. (Zahler setsen mit BCD wert und DUAL wert aus die Zahler lesen).
Mit KF werte kunte Sie vergeleichen machen und daarmit auswerken of die zylinder must ausfahren, einfahren, oder auf positie ist.

Joop
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würde die 1er, 10er und 100er Stelle auswerten (max pro Schalter 10 NW, also 30 NW).

(ok, hatte nicht bis zu Ende gelesen, dachte nur an die Auswertung der Schalter)
 
Zuletzt bearbeitet:
@Masterwork:

Verrat uns doch mal 2 Dinge:
Welche CPU hast du?
Wie kommen die Inkrementalgeber-Signale in die Steuerung?

Mit einer CPU103 und einer entsprechenden Zählerbaugruppe oder mit einer passenden 95U ist das alles realisierbar.
Da ist die meiste Arbeit noch das finden der Handbücher bei Siemens.
Wenn du nur eine CPU100 hast, dann sieht das ganz anders aus.

Gruß
Dieter
 
Hallo Dieter,

Ja ich verwende eine CPU 103, Zählerbaugruppen habe ich jedoch nicht.
Die BCD Schalter sind direkt auf die Digitalen Eingänge geschaltet.

Die Inkrementalgeber Signale werden auch von 2 Digitalen Eingängen erfasst.

Gruß
Michael
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,
Müsste ich nun zur Realisierung 999 Netzwerke im Programm machen, in denen ich jeweils den Ausgangswert der Codierschalter z.B. 365 sowie die Anzahl der A/B Impulse mittels eines Vergleichers abfrage ?
:ROFLMAO: Na das wär mal was... ;)

Ich denke da gibt es ein paar einfachere Optionen, ich hab zwar nix mit S5 am Hut, aber ich hätte da ein paar Varianten.

Je nachdem wie die Eingänge der BCD-Schalter liegen, (Optimal ist zum Beispiel Wenn die höherwertigen 2 BCD Schalter auf einem Eingangsbyte liegen und der 3te - Die 4 Eingänge als Paket - im nächsten.
Wenn du Eingänge durcheinander sind könntest du diese auf Merker umschichten.
Code:
//Annahme Hunderter-BCD auf E0.4 bis 0.7 
L EB0  //Eingansbyte 0
SRW 4 //Um 4 Bit nach rechts verschoben
L K100 //mit 100 multipliziert
*I
T MW100 //Auf ein Merkerbyte geparkt

//Annahme Zehner-BCD auf E0.0 bis 0.3 
L EB0  //Eingansbyte 0
L K15 //Lade Konstante 15
UW //Logisch und (Die oberen 4 Byte ausmaskiert
L 10 //mit 10 multipliziert
*I
T MW102 //Auf ein Merkerbyte geparkt


//Annahme Einer-BCD auf E1.0 bis 1.3 
L EB1  //Eingansbyte 0
L K15 //Lade Konstante 15
UW //Logisch und (Die oberen 4 Byte ausmaskiert
T MW104 //Auf ein Merkerbyte geparkt

//Jetzt einfach Wert ausrechnen
L MW100
L MW102
+I
L MW104
+I
 T MW106 //Fertiger Wert
Das hier sind natürlich keine originalen S5-AWL-Befehle (kenn ich nicht gut genug) aber sollte dem doch nahe kommen. Kannst du damit schon was anfangen?

Variante 2: Man addiert für jedes gesetzte Bit im BCD-Teil die jeweilig Wertigkeit...
Bit 0 gesetzt - Wert + 1
Bit 1 gesetzt - Wert + 2
Bit 2 gesetzt - Wert + 4
Bit 3 gesetzt - Wert + 8

Variante 3: Man arrangiert alle 3 BCD-Schalter so dass sie innerhalb eines Wortes liegen, und verwendet die BTI-Konvertierungsfunktion (BCD-to-Integer).

Das sind die 3 Varianten die mir auf die schnelle einfallen, wie genau man diese jetzt in S5 umsetzt...
Ich schätzte das hier aber ein paar Jungs sind, die ihre Hände schon direkt an ner S5 hatten, die kennen sicher noch bessere Varianten. :ROFLMAO:
 
Zuletzt bearbeitet:
@Ronin:
Dein Programm-Vorschlag käme der S5-Realität tatsächlich schon ziemlich nahe. Leider kann die 95U m.W. nicht selber multiplizieren - man bräuchte dafür System-FB's (deren genaue Beschaltung ich nicht mehr kenne).

Zu der BCD->Integer-Variante weiß ich gerade nichts - ich vermute aber, dass es auch dafür einen System-FB gab.

Deine Variante 2 wäre für den TE wahrscheinlich am Ehesten umsetzbar ...

Gruß
Larry
 
@Ronin:
Leider kann die 95U m.W. nicht selber multiplizieren - man bräuchte dafür System-FB's
Da sieht man mal wieder wie verwöhnt wir heutzutage sind.. :ROFLMAO:

Zu der BCD->Integer-Variante weiß ich gerade nichts - ich vermute aber, dass es auch dafür einen System-FB gab.
Scheint so... es gibt wenn man die Forensuche bemüht doch einige Beiträge dazu. Allerdings erst ab CPU102
9.2.1 Codewandler : B4 - FB240 -​
Mit diesem Funktionsbaustein läßt sich eine BCD-Zahl (4 Tetraden) mit Vorzeichen in eine Festpunkt-
Dualzahl (16 Bits) umwandeln.​
2 Tetraden-Zahlen müssen vor der Umwandlung in eine 4 Tetraden-Zahl transferiert werden.

Deine Variante 2 wäre für den TE wahrscheinlich am Ehesten umsetzbar ...
Wahrscheinlich, multiplizieren muss man aber trotzdem...
 
Also Problem 1, BCD:
L EW0
L KH0FFF
UW
T MW200

SPA FB240 COD:B4
BCD: MW200
SBCD: Logisch0
DUAL: MW0 = Ganzzahl des BCD Wertes ...

Problem 2: Inkrementalgeber
Ansonsten zum von Dieter (Blockmove) erwähnten Problem:
Es darf durchaus bezweifelt werden das Inkrementalgebersignale wie hier an einem normalen Digitaleingang funktionieren werden, deshalb die Zählerkarte.
Hängt natürlich in erster Linie von der Fahrgeschwindigkeit und somit der Frequenz der AB Signale ab.

P.S. Die BCD Wandlung wäre natürlich obsolet falls du einen normalen Zähler nimmst, also Z1 etc. , da diese Zähler ohnehin auf BCD Basis arbeiten.

Mfg
Manuel
 
Zurück
Oben