Ich suche einen Rampenbaustein...

NATO

Level-1
Beiträge
16
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe Leute
Ich bin seit geraumer Zeit aufder suche nach einem Rampenbaustein für meine Aquarien Beleuchtung (Led von Econlux).

Den Siemens Rampenbaustein kann ich leider nicht konvertieren(ap11) So das ich ihn nicht in meinem Step 7 5.5 testen kann. Leider

Hardware:
Analogausgabe mit 4-20mA
Knick Trennverstärker in 4-20mA / 0-10V


Zur Zeit habe ich das dimmen über einen Zähler realisiert der von 27648 runter zählt und wieder hoch.
10V am Trennverstärker entsprechen dabei 100% Licht 0V 0% Licht.

Das ganze leider recht unkonfortabel da ich nur mit den Taktmerkern aus der SPS arbeiten kann.

Was ich möchten:
Ich suche einen Rampenbaustein dem ich die Länge der Rampe über eine Zeit anparametrieren kann.

Danke schon mal An alle.
 
Code:
FUNCTION_BLOCK FB 1
TITLE =
VERSION : 0.1

VAR_INPUT
  SAMPLE_T { S7_sampletime := 'true' }: REAL ; 
  UG : REAL ; //Untergrenze
  OG : REAL ; //Obergrenze
  Zeit : REAL ; //[sec]
  Runter : BOOL ; //Zählrichtung runter
END_VAR
VAR_OUTPUT
  Q_Wert : REAL ; 
END_VAR
VAR_TEMP
  Spanne : REAL ; 
  Inkrement : REAL ; 
END_VAR
BEGIN
NETWORK
TITLE =
      L     #OG; 
      L     #UG; 
      -R    ; 
      T     #Spanne; 
      L     #Zeit; 
      L     #SAMPLE_T; 
      /R    ; 
      L     #Spanne; 
      TAK   ; 
      /R    ; 
      T     #Inkrement; 

NETWORK
TITLE =
      U     #Runter; 
      SPB   MINU; 
      L     #Q_Wert; //Plus
      L     #Inkrement; 
      +R    ; 
      T     #Q_Wert; 
      L     #OG; 
      <=R   ; 
      SPB   W1; 
      L     #OG; 
      T     #Q_Wert; 
      SPA   W1; 
MINU: L     #Q_Wert; //Minus
      L     #Inkrement; 
      -R    ; 
      T     #Q_Wert; 
      L     #UG; 
      >=R   ; 
      SPB   W1; 
      L     #UG; 
      T     #Q_Wert; 
W1:   NOP   0; 
NETWORK
TITLE =
 
END_FUNCTION_BLOCK

Baustein in Weck-OB einbauen, am Parameter SAMPLE_T die Aufrufzeit des Weck-OB in Sekunden eintragen.
Der Eingang "Runter" gibt die Rampenrichtung vor.
Kurz getestet.... sollte gehen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi
eine andere Variante ist den I-Anteil eines FB41 zu nutzen. (Integral einer Konstante ergibt Rampe).
Z.B Gain 10, Ti 6s integriert über eine Minute. Der Wert der an SP_INT angelegt wird ist der Rampengradient.

Gruß

Johannes
 
Wie kann ich denn aus den 2765 bis 27648 ein real von 0 bis 100% machen? Hatte erst an scale gedacht aber funktioniert irgendwie nicht so
 
Wie kann ich denn aus den 2765 bis 27648 ein real von 0 bis 100% machen? Hatte erst an scale gedacht aber funktioniert irgendwie nicht so

Ist zwar in SCL kann man aber auch in AWL/KOP/FUP umschreiben (wenn man bei der 300 kein SCL hat). Basiert auf Arduinos MAP Funktion und geht wunderbar.

Code:
FUNCTION "MAP" : Real
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
   VAR_INPUT
      X : Real;
      In_Min : Real;
      In_Max : Real;
      Out_Min : Real;
      Out_Max : Real;
   END_VAR

   VAR_TEMP
      Diff_In : Real;
   END_VAR


BEGIN
    #Diff_In := (#In_Max - #In_Min);
   
    IF #Diff_In <> 0.0 THEN
        #MAP := (#X - #In_Min) * (#Out_Max - #Out_Min) / #Diff_In + #Out_Min;
        ENO := TRUE;
    ELSE
        #MAP := #Out_Min;
        ENO := FALSE;
    END_IF;
END_FUNCTION

Code:
 CALL  "MAP"
         X       :="P100".Füllstand_MM
         In_Min  :="Konst".P100.Füllstand."0%"
         In_Max  :="Konst".P100.Füllstand."100%"
         Out_Min :=0.0
         Out_Max :=100.0
         Ret_Val :="P100".Füllstand
 
Zuletzt bearbeitet:
Zurück
Oben