Autor Thema: REAL nach Byte Konvertierung  (Gelesen 6874 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline iDexter

  • Newbie
  • *
  • Beiträge: 3
    • Profil anzeigen
REAL nach Byte Konvertierung
« am: 28. Dezember 2016, 13:33:26 »
Einen schönen Guten Tag zusammen,

ich zerbreche mir seit kurzer Zeit den Kopf zu folgendem Problem und weis nicht mehr weiter.

Ich Regel ein Thermoelektrischen Stellantrieb (24V ) über einen PID Regler, dieser wird ja von REAL_werten versorgt sprich 0 - 100%. Diese Werte sollen jetzt aber an einen 3P_Actuator übermittelt werden, der am Eingang nur mit den sogenannten Byte Werten zurecht kommt. Hier wäre dann der Wert 0 - 255 Byte zu sehen. Diesen Actuator brauche ich um einen Stellmotor zu Steuern für kalt und warm wasser.

Mein Problem ist jetzt, wie ich eine vernünftige Typkonvertierung hinbekomme, von REAL nach BYTE.

Ich wäre euch dafür wirklich sehr dankbar wenn jemand einen Tip hätte.  :'(

Viele Grüße

iDexter

Offline peewit

  • Moderator
  • *****
  • Beiträge: 2 378
    • Profil anzeigen
Re: REAL nach Byte Konvertierung
« Antwort #1 am: 28. Dezember 2016, 15:32:18 »
probiere das mal
REAL_TO_BYTE(Realwert /100.0 * 255.0)



Offline iDexter

  • Newbie
  • *
  • Beiträge: 3
    • Profil anzeigen
Re: REAL nach Byte Konvertierung
« Antwort #2 am: 28. Dezember 2016, 17:06:06 »
Hallo

erst einmal vielen vielen Dank.  :D Habe mit so einem schnellen Erfolg garnicht gerechnet, bin wirklich Glücklich bis jetzt.
Jetzt sind es nur noch ein paar feinheiten damit das ganze rund läuft. Bei mir sieht das ganze jetzt wie folgt aus.

PI(
   ACT:= OneWire[0],      (*Gemesseneer Wert nach der Strecke*)
   SET:= 50 ,            (*Vorgabewert*)
   SUP:= ,
   OFS:= ,
   M_I:= ,
   MAN:= ,
   RST:= ,
   KP:= ,               (*Propotionalfaktor*)
   KI:= ,               (*Integraler Anteil*)
   LL:= ,
   LH:= ,
   Y=> ,               (*Ausgang des Reglers*)
   DIFF=> ,
   LIM=> );

   Y       :=       REAL_TO_BYTE(OneWire[0]/100*255);

(*Actuator_2 für mein Stellventil*)

ACTU_2(
   IN:=Y ,
   TEST:= ,
   ARE:= ,
   CYCLE_TIME:= ,
   SENS:= ,
   SELF_ACT_TIME:= ,
   SELF_ACT_PULSE:= ,
   SELF_ACT_CYCLES:= ,
   ARX:=Stellventil_1 ,
   OUT=> ,
   ARO=> );

(*Actuator_3 für meinen Stellmotor / Mischermotor *)
ACTU_3(
      IN:=Y,
      TEST:=,               (*Baustein führt Diagnose aus wenn TRUE*)
      ARE:=TRUE,               (*Autodiagnose*)
      END_POS:=,            (*Eingang für Endschalter*)
      T_RUN:= ,            (*Laufzeit für volle Bewegung*)
      T_EXT:= ,            (*Laufzeitverlängerung bei Diagnose*)
      T_CAL:= ,            (*Klappenlaufzeit bis zur Kalibrierung*)
      T_DIAG:=T#0s,         (*Zeitspanne fuer Autodiagnose*)
      SWITCH_AVAIL:=,         (*TRUE wenn Endschalter angeschlossen ist*)
      ARX:=Stellventil_1,      (*Autorun Kommunikation*)
      OUT1=>,               (*Steuersignal fuer Klappe in Richtung auf*)
      OUT2=>,               (*Steuersignal fuer Klappe in Richtung zu*)
      POS=>,                (*Simulierte Klappenstellung*)
      ERROR=> ,            (*TRUE wenn Diagnosefehler*)
      STATUS=> );            (*ESR kompatibler Status Ausgang*)


Alle Eingänge ( IN ) von ACTUATOR 2 und 3 bekommen nun den Y Wert zugeteilt und sollten sich nun Automatisch so einstellen bis mein vorgegebener Wert am PI Regler, in dem Fall 50 °C erreicht sind für eine Optimale Vorlauftemperatur zum Beispiel... Den das wäre mein Ziel. Gemessen wird das ganze über einen 1Wire Sensor am Vorlauf.!
« Letzte Änderung: 28. Dezember 2016, 17:09:01 von iDexter »