4 bytes als Ganzzahl auswerten

SPS_LB

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

ich habe eine Frage zu Zahlenformaten:
CPU IM151-7
DP - Masteranschaltun

Ich bekomme über den Profibus aus einer Maschine Zählwerte, jeder Zählwert ist in 4bytes aufgeteilt und wird auf der Gegenseite einfach als Ganzzahl da hineingeschrieben. Über den move-Befehl schiebe ich die PEBs in einen Datenbaustein. Jetzt möchte ich gerne die Ganzzahl lesen, mit lesen des Doppelwortes in dem Datenbaustein funktioniert das nicht.

Muss ich jedes Byte nehmen und entsprechend multipliezieren und anschließend alle addieren oder ist es möglich, dass mit einem Befehl oder einer Zahlenumwandlung zu erledigen.

Grüße
 
Hi!
Du musst sie nur richtig auslesen: Bei S ist der niedrigere Zahlenwert im höherwertigen Word und umgekehrt.
4 Byte ist ein Double.
 
Hallo,

wenn die Gegenseite z.B. 65535 in übertragen will, dann habe ich in den entsprechenden niederwertigen 2 bytes je 255 stehen.
Wird z.B. 65536 übertragen, so haben ich im 3ten byte eine 1 stehen.

Grüße
 
Hi,

ja, ist i.O.
wenn z.B. die Zahl 1224 übertragen wird, so sehe ich ja im niedrigsten byte eine 200 und im nächsthöheren eine 4.
Ich könnte also rechnen 4x256 + 200 und erhalte dann 1224. Schön wäre halt ein Befehl, mit dem ich mir diese Rechenschritte über die 4 bytes sparen könnte.

Grüße
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

ja, ist i.O.
wenn z.B. die Zahl 1224 übertragen wird, so sehe ich ja im niedrigsten byte eine 200 und im nächsthöheren eine 4.
Ich könnte also rechnen 4x256 + 200 und erhalte dann 1224. Schön wäre halt ein Befehl, mit dem ich mir diese Rechenschritte über die 4 bytes sparen könnte.

Grüße
:confused::confused::confused:

Wenn du deine Datenbytes als Doppelwort (idealerweise DINT) einliest, dann hast du das doch automatisch ...
 
Hi,

ich meinte das probiert zu haben, bei Zahlen größer 65535 bekam ich dann eine 1 zu sehen. Ich teste das nochmal.
 
ist das eine S7 ? (CPU mit der Bezeichnung IM ist mir unbekannt)
Bei S7 sollte man das Formet DINT benutzen. das ist ein Ganzzahliger wert über 4 Bytes.
Bei Profibus muss man darauf achten, dass man die Doppelworte konsistent
einliest. Sonst können sporadische Fehler in der Darstellung auftreten

Stichwort "Konsistenz" in der Profibus-Beschreibung

Gruss, Valdi
 
@vladi
Eigentlich war die Frage ja geklärt, aber IM's sind entweder reine DP/PN Anschaltungen oder auch CPU's im ET200 System.

Wenn bei einem DINT die Bytes vertauscht sind (Stichwort Big / Little Endian),
dann hilft nun mal nur der Befehl TAD (zumindestens wenn mans einfach machen will)

4 Bytes sind auch mit Boardmitteln also L ED bzw. L PED noch möglich ...

Mfg
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

die IMs sind CPU im ET200s Bereich. IM151-7 mit Profibus-Slave Schnittstelle und IM151-8 mit Ethernet / PN Schnittstellen. Die Leistungsfähigkeit der CPU ist etwa die der S7-314. Wenn mann PB-Master sein will muss man die Masteranschaltbaugruppe dazukaufen.

Grüße
 
Zurück
Oben