Sonstiges Winkelcodierer umbau auf Inkremantalgeber

JanP

Level-2
Beiträge
97
Reaktionspunkte
11
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo SPS-Forum,

ich stehe aktuell vor einem Problem, welches ich alleine nicht durchschaue.

Folgende Situation:
Bei einer Kundenanlage aus 1989 gibt es an einem Transportband (Stahlband) einen Winkelcodierer mit der Strichzahl 1000. Dieser Winkelcodierer gibt
über 16 Bit seinen Positionswert als BCD-Code an 16 Digitale Eingänge einer SIMATIC S5 weiter. Innerhalb des S5 Programms wird dieser BCD Wert weiter verarbeitet um
die Positionierung des Bandes steuern zu können. Leider ist dieser Winkelcodierer nicht mehr Verfügbar, so dass nun auf einen Inkrementalgeber umgebaut werden muss.

Mein Lösungsansatz:
Um den Umbau von BCD16 Winkelcodierer auf Inkrementalgeber möglichst ohne Änderung an der S5 durchführen zu können wollte ich eine S7-1200 einsetzen.
Dafür wollte ich den Inkrementalgeber als HSC A/B-Zählen anschließen und den Zählwert anschließend im BDC16 Format über Transitorausgänge an die S5 ausgeben.

Mein Problem:
Grundsätzlich funktioniert meine Überlegung mit der S7, jedoch habe ich nun einen Versatz der Positionierung des Stahlbandes. Wenn nun z.b. 29cm gefahren werden sollen habe ich
beim 1. Druchgang noch 29cm, beim 2. Durchgang 27cm, bei 3. Durchgang 17cm und beim 4. Durchgang wieder 29cm.
Für den Winkelcodierer der Firma Stegmann habe ich leider auch keine Dokumentation, da es auf diesem einen Eingang "Store" gibt und mir die Funktion nicht klar wird.
Dieser Eingang wird nämlich durchgehend mit ziemlich hoher Taktung angesprochen, ohne das ich dies nachvolziehen könnte.
Winkelcodierer1_4.jpg

Das S5-Programm habe ich vorliegen, jedoch habe ich hier auch noch nicht "DIE LÖSUNG" gefunden. Ich wäre also für jede Hilfe oder Idee dankbar ;)
 

Anhänge

Zuletzt bearbeitet:
Stegmann_Codierer.jpg
Hier ein Foto vom Codierer der ursprünglich verbaut war. Dieser hatte Strichzahl 4000, wurde jedoch vor X-Jahren wegen Defekt auf den mit Strichzahl 1000 umgebaut. In dem Zuge wurde das SPS-Programm angepasst. Das war jedoch jemand der mittlerweile Renter ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
1. Grundsätzlich funktioniert meine Überlegung mit der S7, jedoch habe ich nun einen Versatz der Positionierung des Stahlbandes.
Wenn nun z.b. 29cm gefahren werden sollen habe ich beim 1. Druchgang noch 29cm, beim 2. Durchgang 27cm, bei 3. Durchgang 17cm und beim 4. Durchgang wieder 29cm.
2. Für den Winkelcodierer der Firma Stegmann habe ich leider auch keine Dokumentation, da es auf diesem einen Eingang "Store" gibt und mir die Funktion nicht klar wird.
Dieser Eingang wird nämlich durchgehend mit ziemlich hoher Taktung angesprochen, ohne das ich dies nachvollziehen könnte.
Zu 2.:
Der Ausgang (der S5) "Store" A 50.5 wird am Ende des FB 167 "gemacht":
Code:
:UN A 50.5 // invertiert "A 50.5 7B10 -STORE WEGMESSUNG STAHLBAND SET SIGNAL GESPERRT"
:= A 50.5
:L AB 50
:T PY 50
:BEA
Könnte mir vorstellen, dass die Ausgabe der 4stelligen BCD-Zahl mit diesem Ausgang "festgehalten" wird, um die Konsistenz beim Einlesen zu gewährleisten.
Dies sollte die S7 nachbilden/beachten.
Dein pdf FB167 enthält den Baustein zweimal!? :confused:

Fast noch interessanter finde ich den Ausgang
A 50.4 7B10 -SET01 WEGMESSUNG STAHLBAND SET WERT 2000.
Ist der verdrahtet? Es könnte sein, dass der Versatz darauf zurückzuführen ist, dass das Setzen auf den Wert 2000 nicht wirksam ist?

Zu 1.:
Gibt Deine S7 wirklich BCD-Code an die S5 aus?
Könnte mir vorstellen, dass die Wandlung in BCD ganz fehlt oder fehlerhaft ist und dadurch FehlPositionierungen auftreten.
Eine Wandlung von BCD in DUAL habe ich auf die Schnelle im S5-Code nicht gesehen. Das könnte erklären, warum PseudoTetraden nicht erkannt und nicht als Fehler gemeldet werden.
 
Hallo Heinileini,

erstmal vielen Dank für deine Antwort! Im S7 Programm wandle ich den Zählwert des HSC erst in BCD und geben diesen dann über die Ausgänge aus.
Den A50.5 nutze ich als Bedingung zum Bearbeiten des HSC, sprich er zählt nur wenn der entsprechende Eingang an meiner S7 nicht belegt wird.

Der A50.4 ist mir auch schon ins Auge gefallen, jedoch ist dieser im Schaltplan nicht eingezeichnet und im Programm finde ich diesen auch nicht. Was aber nicht heißen muss das es wirklich noch so ist.
Wäre aufjedenfall ein Punkt den ich klären sollte!


Darf ich dir auszüge vom S7 Programm senden?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Wandlung INT in BCD16 könnte problematisch sein.
Meines Wissens kann der maximal 3 BCD-Stellen und die höchstwertige Stelle enthält das "Vorzeichen".
DINT in BCD32 wäre besser, wenn 4 BCD-Stellen ohne Vorzeichen gefragt sind.
 
Danke für den Tipp! Die Umsetzung müsste ich mir morgen dann mal ansehen, denn ein direktes Verschalten des QW32 wäre so ja nicht mehr möglich.
 
... ein direktes Verschalten des QW32 wäre so ja nicht mehr möglich.
Tja, das war in S5 einfacher. ;) Eine Typwandlung DINT -> WORD sollte es eigentlich tun, da ja das höherwertige Wort des DINT 0 sein müsste.

Aber warum machst Du die Umwandlung in REAL bzw. womit multiplizierst Du? Hast Du z.B. einen Geber mit 1024 statt 1000 Strichen und musst skalieren?
Wenn Du nur ganzzahlige Faktoren(/Divisoren) brauchst, könntest Du direkt in DINT rechnen und könntest die zwei TypWandlungen vor und nach der Multiplikation einsparen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,

ich habe das ganze nun auf mein Testrack gespielt und teste damit nun das Programm. Irgendwas scheint aber nicht zu stimmen!

Über einen Inkrementalgeber mit Testrad habe ich nun den Wert "999" vorgegeben:
Anhang anzeigen 53636

Hier der Status der Ausgänge:
Anhang anzeigen 53637

Wenn ich das ganze nun umrechne komme ich aber auf "2457":

Anhang anzeigen 53638

Kann das auch durch die Berechnung BCD16 kommen?

Tatsächlich nutze ich einen Inkrementalgeber mit höherer St
 
Leider kein guter Morgen, alle drei Anhänge funktionieren nicht!

PS:
999 hexadezimal entspricht 2457 dezimal - das ist kein Grund zur Sorge.
 
Zuletzt bearbeitet:
Das sieht doch gut aus! Womit hast Du ein Problem?

Bei Zahlen 0...999 dürfte es keinen Unterschied zwischen BCD16 und BCD32 geben.
Was ist bei Zahlen 1000..9999 bzw. >9999? Wenn die gar nicht vorkommen (können), bleib doch beim BCD16.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe mir heute Nachmittag etwas zeit genommen und mich nochmal mit dem Thema beschäftigt. Ich habe meinen Zählwert nun Dezimal auf die Ausgänge QW32.0-33.7 verschaltet,
die Ausgabe an der Baugruppe erfolgt nun in passend, sprich der Dezimalwert wird BCD codiert ausgegeben. Die Bits an der Karte konnte ich nun auch umrechnen und bekam meinen Dezimalwert
als Ergebniss.
Vorher wurde der Zählwert, durch die Convertierung, Hexadezimal 999 ausgegeben. Daher kam auch der Wert 2457 Dezimal, mit diesem konnte die S5 jedoch nichts anfangen.
Ich gehe nun davon aus dass durch die Übersetzung zum Inkrementalgebers die erste Strecke noch ungefähr passte, jedoch die Abweichung anschließend größer wurden bis eine vollständige Umdrehung um war.

An einer Baugleichen Anlage ist der Winkelcodierer noch in Betrieb. Per S5++ Lan werde ich nun einen Trace fahren um meine Annahme zu prüfen.
 
Die eingang bei der HSC Count ist false, Diese muste bei der output stehn. ergend wie in dieser bild:


In das S5 programm wurde das Eingansword mit UW 1FFF gefilterd, die max wert welch aus die encoder gelezen wurde ist 1999,
Aber ich denke das Ihre relais ausgangen zu langsam sind und das die lebensdauer auch gans kurz ist wenn sie da die encoderwert mit ausgeben must.
 

Anhänge

  • DINT_BCD32.JPG
    DINT_BCD32.JPG
    98,1 KB · Aufrufe: 10
Zuletzt bearbeitet:
Vielleich solltes du jetzt erst mal zweifelsfrei klären, welches Bit-Format du nun eigentlich benötigst.
Einerseits sprichst du von BCD, anderseits von Binär, und wenn man jetzt mal tief in die Möglichkeiten der BitCodierung blickt, wäre bei Drehgebern auch Gray Code noch einigermaßen üblich.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Relais-Karte habe ich nur auf meinem Test-Rack, an der Anlage ist natürlich eine Transistor-Karte verbaut. ;)

Das Format, welches die S5 erwartet, ist mir tatsächlich ein Rätsel. Daher möchte ich ja das einen Trace vom Eingangswort der S5 machen.
Der Einwand, dass das Eingangswort mit UW 1FFF gefiltert wurde, müsste doch aber dafür sprechen?

Vielen dank schon vorab für eure Hilfe und Lösungsansätze!!! :ROFLMAO::ROFLMAO:
 
In der S5 ist die Max BCD wert 999 die 1 ist das vorzeichen die wert geht von -999 bis 999 Welch type S5 ist das? in die 115U ist ein Standart FB welche die BCD -DUAL umsetsung macht abel in Ihre programm ist das ein normale FB oder eine aus ein Siemens bibliothek.
 
In der S5 115U wurde FB240 für die Umwandlung BCD->Dual genutzt. Laut Kommentar in der Zuordnungsliste stammt dieser aus einer Siemens Bibliothek.
 
Zurück
Oben