Negative Integerwerte von der SPS (S7) zum ABB-Roboter übertragen

strango

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

ich bin noch ein absoluter ABB Anfänger und befinde mich zur Zeit an meinem Techniker-Abschlussprojekt.
Ich muss über eine bestehende Profibus-Verbindung negatve Integerwerte von der SPS (S7) zum Roboter übertragen. Auf der S7-Seite habe ich schon High- und Low-Byte getauscht. Jetzt funktioniert es, aber leider nur mit positiven Werten. Hat jemand dafür eine Erklärung?

Gruß strango

Ps.: Falls es an der Profibuskarte liegt, es ist eine DSQC 352. Sie hat 8 Word in & 8 Word out
 
wenn du dir den Aufbau eines signed-Integer mal anschaust, wirst du feststellen, dass bei der S7 das HSB das Vorzeichen ist...

high = -
low = +

also reicht es nicht nur das byte zu tauschen. du mußt noch das Vorzeichen maskieren und in deinem rotierten Word wieder an der richtigen Stelle einbringen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich bin mir nicht sicher. Ist schon zu lange her; Aber vielleicht ist es hilfreich.

Für die ABB Karte gibt es eine EOI Config Datei, darin stehen die Parameter.
Dort kannst du das das ganze Verhalten deiner Karte programmieren.
Im OS Handbuch steht glaub alles wie es parametriert wird udn was es so alles tolles gibt. Ohne Software und Handbuch kann ich spontan leider nicht mehr sagen wie man es invertiert.

Hoffe ist dir hilfreich.

Grüsse
 
wenn du dir den Aufbau eines signed-Integer mal anschaust, wirst du feststellen, dass bei der S7 das HSB das Vorzeichen ist...

high = -
low = +

also reicht es nicht nur das byte zu tauschen. du mußt noch das Vorzeichen maskieren und in deinem rotierten Word wieder an der richtigen Stelle einbringen.

Ok also würde mein Vorzeichen an der falschen Position stehen. Es gibt ja für Integerzahlen verschiedene Darstellungsarten:

Betrags-Vorzeichendarstellung (Siemens)
Einerkomplement,
Zweierkomplement.

Könnte es auch sein das ABB eine andere Darstellungsart benutzt als Siemens? Ich habe leider auch keine Doku diesbezüglich.
[FONT=&quot][/FONT][FONT=&quot][/FONT]
 
ein roboter ohne doku? ich muß weg ...

ja, sicher ist es möglich, dass abb eine andere form benutzt, das mit dem vorzeichen war nur das erste, was mir durch den kopf geschossen ist...

...besorg dir ne doku!:ROFLMAO:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
es ist nicht unüblich, dass andere Steuerungen eine andere Byte-Ausrichtung verwenden als Siemens. Eigentlich hätte das Vertauschen des High- und Low-Bytes den Erfolg bringen müssen. Das wirft für mich die Frage auf, wie du das angestellt hast und wie du anschließend die Übertragung bewerkstelligt hast ...

Gruß
LL
 
Hallo
habe auch schon mal so was gemacht ist aber schon lange her kann am Mo in der Firma mal nachschauen. Die Doku von ABB ist halt auch nicht der Hit glaube ich noch zu wissen!
 
@vierlagig
Ich kann mir leider keine über dieses Thema besorgen. Und ja da haste recht ohne richtige Doku ist echt mist!!! :cry:

@Larry Laffer
Im Moment hab das Problem umgangen, in dem ich mich einfach nur auf den positiven Zahlenbereich beschränkt habe. Zunächst habe ich über ProTool den Zahlenbereich begrenzt (z.B.: -100 bis +100). Danach habe ich einen Offset von +100 draufgerechnet, so wird dann die -100 zur 0 und die +100 zur +200. Im Roboter hab ich dann die +100 wieder subtrahiert.
Die Lösung kommt mir aber irgendwie etwas gepfuscht vor.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo
habe auch schon mal so was gemacht ist aber schon lange her kann am Mo in der Firma mal nachschauen. Die Doku von ABB ist halt auch nicht der Hit glaube ich noch zu wissen!

Hi Tom,

genau die Erfahrung hab ich auch gemacht!!! :wink:
Man ließt und ließt findet einfach keine richtige Antwort!!

Ps.: Ist wirklich ein super Forum hier!!!!!!!!!!!!!!!!!!!!!!!!!
 
Soweit mir bekannt ist, werden Group-IOs (als z.B. 16 Bit Zahlen) bei den ABB-Robotern generell als Unsigned-Integer behandelt. Um dennoch negative Werte übertragen zu können gibt es 2 Wege.

1. Wertebereich auf SPS ins Positive verschieben, anschließend am Roboter (z.B. durch Umschaufeln in einem zyklischen Task) wieder zurückschieben

2. zusätzlich zum Zahlenwert ein eigenes (selbstdefiniertes) Vorzeichenbit an den Roboter übergeben, dieses muss dann im Roboterprogramm mit Hilfe eines IF ausgewertet werden.

Bei uns wird generell Lösung 2 eingesetzt.


mfg Maxl
 
Zurück
Oben