Step 7 Stufenbaustein(?!)

GerhardPtl

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

ich bin auf der Suche nach einem Baustein mit dem ich über eine Zeit einen Realwert von 10-100 in 10er Schritten hochtakten kann.
Gibt es so etwas (noch) nicht?

(ja, ich weiß, ist wahrscheinlich mit SCL gaaaanz einfach, nützt aber nix, wenn man bei AWL hängen geblieben ist :confused:)



Gruß
Gerhard
 
VAR
Realwert : REAL;
Sprungwert : REAL;
END_VAR


If FlankeHochzaehlen THEN
RealWert := Realwert + 10;
END_IF;

Oder Wenn der Wert, mit welchem hochgetaktet werden soll flexibel sein soll:

If FlankeHochzaehlen THEN
RealWert := Realwert + Sprungwert;
END_IF;


Und wenn er bei 100 stehen bleiben soll:

If FlankeHochzaehlen AND RealWert <100 THEN
RealWert := Realwert + 10;
END_IF;

Aber vielleicht erklärst du noch einmal genauer was du brauchst.



Mit Grüßen
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Baustein ist so krass ich sollte ihn knowhow protecten.

Code:
FUNCTION_BLOCK "Hochzahler"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
   VAR_INPUT 
      "time" : Time;
      UP : Bool;
      ADD : Int;
      Maximum : Int;
   END_VAR


   VAR_IN_OUT 
      Ausgabe : Int;
   END_VAR


   VAR 
      ton_Zeit {OriginalPartName := 'IEC_TIMER'; LibVersion := '1.0'} : TON_TIME;
      zw : Bool;
      tons_Zeit : Struct
         IN : Bool;
         q : Bool;
      END_STRUCT;
   END_VAR




BEGIN
NETWORK
TITLE = 
      U #UP;
      UN #tons_Zeit.q;
      = #tons_Zeit.IN;


      CALL #ton_Zeit
      {time_type := 'Time'}
      (  IN                          := #tons_Zeit.IN , 
         PT                          := #time , 
         Q                           := #tons_Zeit.q
      );


      U #tons_Zeit.q;
      SPBN nein;
      L #Ausgabe;
      L #ADD;
      +I;
      T #Ausgabe;
nein:      NOP 0;


      CALL MIN
      {value_type := 'Int'}
      (  IN1                         := #Ausgabe , 
         IN2                         := #Maximum , 
         IN3                         := #Maximum , 
         OUT                         := #Ausgabe
      );


      U #UP;
      SPB reset;
      L 0;
      T #Ausgabe;
reset:      NOP 0;
END_FUNCTION_BLOCK

mfg René
 
Zuletzt bearbeitet:
In Step7 muss bei den Variablen das # weggemacht werden. Hochzaehler muss in der Symbolik vorhanden sein (Symbolliste).
Versionsnummer muss glaub ich in Hochkomma stehen '0.1'
Optimized rauslöschen etc.

Oder halt von Hand abschreiben.

mfG René
 
Zurück
Oben