TIA Umwandlung von little Endian to Big Endian DWORD

KaiserA

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

ich möchte gerne Messwerte aus einer Längenmessung am HMI-Panel KP1200 Professionel anzeigen lassen. Das ist soweit auch möglich, aber nur die Anzeige passt nicht überein.
Denn das Gerät das über Profinet verbunden ist bringt mir die Messwerte im DWORD als Little Endian, um richtige Messwerte anzeigen zu lassen. Müssten die Messwerte in das SPS fähige BIG Endian Format umkonvertiert werden.

Kann mir da jemand weiterhelfen bzw. hat jemand schon mal so einen Fall gehabt?
 
Hi,

würde dir SCL empfehlen ist am einfachsten.

Code:
FUNCTION "LittleToBig" : DWord
{ S7_Optimized_Access := 'FALSE' }
VERSION : 0.1
   VAR_INPUT 
      In : DWord;
   END_VAR
BEGIN
	
	#LittleToBig :=
	                SHR(IN := #In & 16#FF000000 , N := 24) OR 
	                SHR(IN := #In & 16#00FF0000 , N := 8 ) OR
	                SHL(IN := #In & 16#0000FF00 , N := 8 ) OR
	                SHL(IN := #In & 16#000000FF , N := 24) ;
END_FUNCTION

Gruß
 
hallo KaiserA,

du kannst in einem optimierten Baustein mittels Slice-zugriffe in KOP oder FUP die Bytes tauschen.
z.B In_DW.%b0 -> MOVE -> NewIN_DW.%b3
In_DW.%b1 -> MOVE -> NewIN_DW.%b2
In_DW.%b2 -> MOVE -> NewIN_DW.%b1
In_DW.%b3 -> MOVE -> NewIN_DW.%b0

Ich habe grade kein TIA zur Hand deshalb die nicht so professionelle Darstellung
funktioniert aber nur mit neuen Steuerungen.

Gruß Rainer
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hatte diese Konvertierung schon öfter, aber da ich bisher kein TIA einsetze ist die Antwort vielleicht nicht ganz zutreffend.
In der AWL-Programmierung einer 300er gab's da einen einzelnen wunderbaren Befehl: TAD
Der macht genau das (Litte Endian <-> Big Endian), gibt's aber nicht in KOP oder FUP und evtl. auch nicht in den neueren CPUs - weiß ich aber nicht.
 
Also im TIA gibts den "SWAP" aber auch ein "READ_LITTLE"
1. unter Einfache Anweisungen / Verschieben
2. unter Einfache Anweisungen / Verschieben / Read/Write Memory

schau halt was besser passt.
 
Zurück
Oben