Step 5 Problem mit Berechnen einer 32bit Zahl (Drehgeberwert)

021aet04

Level-2
Beiträge
161
Reaktionspunkte
24
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Community,
mein Name ist Hannes, komme aus dem Bezirk Leoben (Österreich, Steiermark) und bin Instandhaltungselektriker.

Habe in der Firma ein Problem mit einer Simatic S5. Wir haben einen Roboter (RBG) gekürzt und jetzt muss ich an der Längenmessung etwas ändern.

Ich habe mir gedacht das ich einfach 2 Messwerte aufnehme und die Differenz zähle ich zum aktuellen Messwert hinzu.

Ich habe es schon getestet und dies funktioniert soweit, jedoch nur bei kleinen Zahlen bzw wenn ich nur den Wert eines DW ändere.

Grundsätzlich wird es aktuell so gemacht:

Messert durch 8 geteilt (laut Kommentar) und in ein MW geschrieben (einmal für das HW und einmal für das LW) und gleichzeitig wird noch das 2te und 3te Byte des Messwertes in ein MW geschrieben.

Aktuell sieht das Programm so aus:
Code:
L DW24
SRW 3
 T MW140

und ich habe es geändert in (genauen Wert der Konstante weiß ich nicht):
Code:
L DW24
 SRW 3
 T MW140

 L MW140
 L KH03a0
 +F
 T MW140


Jetzt meine Frage wie kann ich das Programm ändern damit das Programm funktioniert.

Ich hätte mir es so gedacht:

Messwert aus DW24 und 25 auslesen (32bit Zahl, eigentlich nur 24bit) und Differenz hinzuaddieren. Mit dem Ergebnis rechne ich dann weiter, nur wie mache ich das und was muss ich mit dem Ergebnis machen (in ein DW schreiben oder geht es auch ohne)?

Leider sind meine Programmierkenntnisse sehr bescheiden. Ich habe in der Schule nur die Grundlagen durchgemacht und den Rest bringe ich mir selbst bei. Gearbeitet habe ich bereits mit Siemens Logo, S5, S7-300 und S7-1200.

Ich bitte um Hilfe ab dem 13.1 muss das RBG wieder funktionieren. Ich kann es ab dem 7.1. testen.

MfG Hannes
 
Problem mit Berechnen einer 32Bit Zahl (Drehgeberwert)

War 2mal der gleiche Beitrag, hatte Probleme mit dem Rechner. Da ich den Beitrag so nicht löschen kann habe ich es so gemacht.

MfG Hannes
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Verrat uns mal um welche S5-Baureihe (115U,135U,...) mit welcher CPU (z.B. 928B).
Wenn du nämlich schreibst, dass 32Bit-Werte berechnet werden müssen, dann brauchst du dafür ja 2 Datenworte.
Wahrscheinlich eben das von dir genannte DW24 und DW25.
Eine 135U beherrsch 32Bit-Befehle und bei einer 115U gibt es Einschränkungen.

Falls Du eine 135U oder größer hast, dann sollte es so gehen:
Code:
L DD24
L DH 0000 03A0
+D
T DD24

Gruß
Dieter
 
Danke für die Antwort. War eben in der Firma und habe alles abgelesen.

Es ist eine S5-115U CPU 944B und die Drehgeberkarte ist eine WF705.

MfG Hannes
 
Hallo,

also meines wissens kann die 944B 32Bit Rechenoperationen nur mit den HTB. Aber ein paar Infos wären nicht schlecht. RBG = Regalbediengerät? Was und wo habt ihr gekürzt? Wie werden die Fachpositionen angefahren? Geteacht oder wird die Position errechnet? Ohne Glaskugel kann man hier schlecht etwas sagen. Und etwas mehr Code wäre auch hilfreich.

André
 
Danke für die Antworten. Mit RBG meine ich Regalbediengerät. Dieses RBG ist ausgelegt für Spulen in der Kabelindustrie (400 und 500mm Spulen).

Den Hersteller gibt es zwar noch, jedoch gibt es dort niemanden der sich mit dem System auskennt. Soweit ich weiß wurde das System im Jahr 2000 von Siemens auf Beckhoff umgestellt.

Soweit ich das Programm verstanden habe wird vom Terminal nur der Platz gesendet (mit der Aktion). Der Roboter berechnet sich anschließend die Position (X-Position) mit einem Offset und Abstand der einzelnen Spulen.

Die Position wird mittels eines SICK DME3000-111 gemessen (Absolutwertgeber). Die Reflektorplatte ist auf dem Teil der gekürzt worden ist, dadurch muss ich das Programm ändern (sonst hätte ich einfach die nicht vorhandenen Plätze gesperrt).


Programm kann ich aktuell keines posten da das PG in der Firma ist (habe eigentlich Urlaub).

Bin mir nicht sicher aber ich glaube ich habe irgendwo im Programm schon so ein ADD:32 gesehen.

MfG Hannes
 
Also wenn ich mich nicht ganz arg irre, dann kann man den DME3000 parametrieren.
Irgendwo gibt es da auch einen Offset ...

Das wär wohl der einfachere Weg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

so wie ich das rauslese wird also der Wert vom DME kleiner, je weiter du ins Regal fährst? Na evtl wird der schon in der SPS verrechnet. Schau mal welche Rechenbausteine im Programm verwendet werden. Vielleicht wird dort der Wert vom DME von der Gesamtlänge abgezogen. Dann könntest du den Wert für die Gesamtlänge korrigieren.

André
 
Der Wert wird größer je weiter ich in das Regal fahre. Lagerplatz 1 befindet sich bei der Reflektorplatte. Das ist das Problem, da sich, wenn ich das Programm nicht ändere das gesamte Lager verschiebt.

Das Lager hat Lagerplatz 1 bis ca. 150 (in X-Richtung), jetzt fällt Lagerplatz 1 bis ca. 17 weg. Wenn ich jetzt, ohne Programmänderung, z.B. vom Platz 100 eine Spule anfordere fährt das RBG zum Platz 117. Ich muss somit die Differenz zum aktuellen Messwert hinzuaddieren. Die Lagerplätze die wegfallen muss ich zusätzlich sperren, das ist aber kein Problem.

Im Lager befinden sich aktuell Spulen. Die Spulen auslagern ist keine Option, das haben wir schon einmal gemacht (ca. 1 Woche lang 3 Schichtig).

Das FB indem die Position berechnet wird habe ich schon gefunden, müsste aber nocheinmal schauen. Die einfachste Lösung, finde ich zumindest, wäre dem Messwert auslesen und das Lager, das weggekommen ist, hinzuaddieren. Somit kann man das leichter ändern.

Der Offset wird im SPS Programm berechnet (steht in einer DB).

Was noch hinzukommt ist das das RBG mehrere Einlagerer bzw Auslagerer besitzt und auch noch sogenannte SZ-Abläufe (die Spule wird seitlich hingelegt, von dort wird direkt produziert). Das sind alles Fixpunkte. Dort kann ich nichts ändern.


Hier ist ein Firmenvideo http://www.youtube.com/watch?v=insCRW5HISQ (auf deutsch, gibt es auch in Englisch). Bei 1:11 sieht man ganz kurz einen SZ Ablauf (rechts im Eck).

Ich hoffe das es jetzt verständlich war, ansonsten mache ich eine Skizze.

Eventuell bin ich morgen in der Firma.

MfG Hannes
 
Hallo,

ok ich ging davon aus dass hinten gekürzt wurde. Aber wenn der Ein/Auslagerstich nicht vorn ist dann gehts ja.

Wie schon geschrieben wurde - den Offset im DME geben wäre erste Wahl. Keine Ahnung wieso der "Rohwert" noch mit SRW 3 bearbeitet wird, aber wenn es in der SPS gemacht wird dann würde ich vor jeglicher weiterer Bearbeitung die Korrektur vornehmen. Also den ADD:32 mit DW24 und DW25 füttern und das Ergebnis dann anstatt DW24/25 mit SRW 3 weiterbearbeiten, bzw auf die MW transferieren.

André
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit SRW 3 werden höchstwahrscheinlich nur die drei Statusbits (T, F, Ü) des Analogwerts rausgeschoben. Das musste man imho bei einer S5 so gut wie immer machen wenn man das EW direkt verwendet hat.

Genaueres kann man nur sagen wenn er uns den Typ der Analogbaugruppe mitteilt, da gibts ja auch so ein paar Sonderfälle bei der Analogwertdarstellung.
 
Hallo Thomas,

bei Analogbaugruppen ok - aber gibts da welche mit 32Bit? Ich hab hier was von ner WF705 gelesen. Was ich komisch finde ist dass 1 Wort mit SRW 3 bearbeitet wird und das andere 1:1 verwendet wird. Evtl ist es ja gar keine 32Bit-Zahl. Aber ohne das Programm zu kennen...

André
 
Die Entfernungsmessung ist nicht Analog sondern mit SSI Schnittstelle. Die Daten kommen auf eine Wegerfassungsbaugruppe WF705 (habe ich weiter oben schon geschrieben).
http://cache.automation.siemens.com/dnl/TY/TYxODQ0OQAA_39618359_HB/0AA01-0BA5.pdf

Der Aufbau ist mit 4 Drehgebern wie unter Punkt 2.1.1 (Seite 9). Die Achse um die es geht ist Achse 1, daher auch DW24 und 25.
Auf Seite 21 findet man den Inhalt von DW24 und 25. DW25 ist Zählerwert 2^0 bis 2^15 und DW24 ist 2^16 bis 2^24, das restliche Byte ist 0.

Welchen Programmteil soll ich posten (fahre in die Firma da ich noch etwas machen muss, da könnte ich nachschauen)? Nur das FB indem die Zählerkarte ausgelesen wird?

MfG Hannes
 
Das Programm sieht so aus
Code:
A DB140

L DW 25
SRW 3
T MW 142


 L DR 24
T MB 141
L DL 25
T MB 142
L MW 141
SRW 3
T MW 141


L DW 24
SRW 3
T MW140

In einem weiteren Netzwerk habe ich das "ADD:32" gefunden. Der Code ist:
Code:
SPA FB 232
Name:ADD:32
Z12: MW140
Z11: MW142
Z22: DW9
Z21: DW6
OV: M 208.0      Nicht verwendet
 Z3=0: M 208.1  Nicht verwendet
Z32: MW 200
Z31: MW 202

L MW 200
T MW140

L MW 202
T MW 142

MfG Hannes
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Schau dir mal den Inhalt von DW9 und DW6 in deinem 2. Code-Segment an.
Evtl. ist das schon ein Positions-Offset.

Was der Kollege im 1. Programm-Segment treibt erschliesst sich mit nicht so ganz.
Allerdings kann es sein, dass für SSI irgendwelche Code-Wandlungen notwendig sind.
Hier könnte das Handbuch der SSI-Baugruppe helfen.

Aber wie gesagt schau dir mal MW140 / 142 nach dem ADD32 an.

Zur Not mal nen Hex-Rechner zur Hand nehmen ;)

Gruß
Dieter
 
Hallo Hannes,

unter der Maßgabe dass MW140 dein High-Wort und MW142 dein Low-Wort sind... Evtl könnte der ADD:32 schon eine Korrektur sein. Dann wäre interessant dwas in DW6 / DW9 steht und ob das Konstanten sind oder im Programm auch beschrieben werden.

Aber nimm doch mal den Vorschlag mit dem Offset im DME an.

André
 
Das Programm sieht so aus
Code:
A DB140

L DW 25
SRW 3
T MW 142


L DR 25 //[COLOR=#FF0000]Ist dass nicht L DR24 ?[/COLOR]
T MB 141
L DL 25
T MB 142
L MW 141
SRW 3
T MW 141


L DW 24
SRW 3
T MW140

In einem weiteren Netzwerk habe ich das "ADD:32" gefunden. Der Code ist:
Code:
SPA FB 232
Name:ADD:32
Z12: MW140
Z11: MW142
Z22: DW9
Z21: DW6
OV: M 208.0.     Nicht verwendet
Z3=0: M 208.1. Nicht verwendet
Z32: MW 200
Z31: MW 202

L MW 200
T MW140

L MW 202
T MW 142

MfG Hannes

Mit folgede code konte Sie de Difference bie das MD 140 Addieren.

Code:
L 0
T MW 204
L KF928   //IHRE KORREKTION 
T MW 206

SPA FB 232   // NEU
Name:ADD:32
Z12: MW140
Z11: MW142
Z21: MW 204
Z22: MW 206
OV: M208.0
Z3=0: M208.1
Z32: MW200
Z31: MW202

L MW200
T MW140

L MW202
T MW142

SPA 232  //ALT
Name:ADD:32
 Z12: MW140
 Z11: MW142
 Z22: DW9
 Z21: DW6
 OV: M 208.0.     Nicht verwendet
 Z3=0: M 208.1. Nicht verwendet
 Z32: MW 200
 Z31: MW 202

 L MW 200
T MW140

 L MW 202
 T MW 142


Gruss,

Joop
 
Zurück
Oben