Autor Thema: Float in Real für Pluggit Lüftungsgerät?  (Gelesen 6499 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline HopeITworks

  • Newbie
  • *
  • Beiträge: 43
    • Profil anzeigen
    • E-Mail
Float in Real für Pluggit Lüftungsgerät?
« am: 30. Januar 2017, 11:08:42 »
Ich bekomme von meiner Pluggit Lüftungsanlage mehrere Werte in Float geliefert. Es sind jeweils 2 Registeradressen die für einen Wert benutzt werden.

Modbus Adresse 40133 und 40134 in dem Fall.

Ich lege diese als DWord ab. Jetzt muss ich allerdings die Bytes schieben. Aus Byte A B C D muss C D A B werden und danach in Real gewandelt werden. Wie mache ich das am einfachsten?

Ich habe damit leider noch keinerlei Erfahrungen, daher die wahrscheinlich recht doofe Frage  ;D

Offline HopeITworks

  • Newbie
  • *
  • Beiträge: 43
    • Profil anzeigen
    • E-Mail
Re: Float in Real für Pluggit Lüftungsgerät?
« Antwort #1 am: 30. Januar 2017, 12:32:09 »
Ich hab mir jetzt mal nen SCL Baustein dafür gebaut und es scheint zu funktionieren :) Die Werte sind plausibel.

Über Verbesserungsvorschläge würde ich mich sehr freuen :)

FUNCTION_BLOCK "Pluggit_Float_to_Real"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
   VAR_OUTPUT
      OUT : Real;
   END_VAR

   VAR_IN_OUT
      "dword" { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : DWord;
   END_VAR

   VAR_TEMP
      DWord_Temp : DWord;
      idword : DWord;
   END_VAR


BEGIN
#DWord_Temp := #dword;


#idword.%B2 := #DWord_Temp.%B0;
#idword.%B3 := #DWord_Temp.%B1;
#idword.%B0 := #DWord_Temp.%B2;
#idword.%B1 := #DWord_Temp.%B3;


#OUT := DWORD_TO_REAL(#idword);
END_FUNCTION_BLOCK

Offline mattsches

  • Sr. Member
  • ****
  • Beiträge: 268
    • Profil anzeigen
Re: Float in Real für Pluggit Lüftungsgerät?
« Antwort #2 am: 30. Januar 2017, 12:43:53 »
Sieht in SCL für mich nach der einfachsten Lösung aus, ich würde den Baustein so lassen.

In AWL ginge es auch ohne Hilfsvariablen. Aber AWL mögen ja viele nicht mehr so gern, und auf 1200ern geht das eh nicht. Dennoch, der Vollständigkeit halber:

L #Eingangsvariable
TAW
TAD
TAW
T #Ausgangsvariable

TAW wechselt die Bytes 0 und 1 im Akku, TAD dreht die gesamte Reihenfolge der vier Bytes um. Damit ergibt sich dann folgender Verlauf im Akku:

A B C D (Ausgangszustand)
B A C D (1. TAW)
D C B A (TAD)
C D B A (2. TAW)

Manchmal hat die betagte AWL auch ihre Vorteile.  :)

Offline HopeITworks

  • Newbie
  • *
  • Beiträge: 43
    • Profil anzeigen
    • E-Mail
Re: Float in Real für Pluggit Lüftungsgerät?
« Antwort #3 am: 30. Januar 2017, 12:45:49 »
Oh das freut mich aber jetzt sehr  ;D Ich musste mir diese Lösung leider wieder hart erarbeiten, aber dafür bleibt sie hoffentlich im Kopf :)