Zahl um bestimmten Wert erhöhen

motamas

Level-1
Beiträge
65
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,
hat einer von euch ne Ahnung wie man eine Zahl aus einem DB um einen festen Wert erhöhen kann?
Also ich hatte mir das so gedacht ich habe den Taktmerker genommen und mit einer Bedingung M0.0 UND-Verknüpft.
Jetzt will ich immer zu dem Zeitpunkt des Taktmerkers also zum Beispiel bei M90.7 (2s) eine Zahlenwert der in einem DB liegt um eine konstante Zahl (z.B. 100) erhöht werden.
Hat da jemand ne Idee?
Danke euch schon mal.
 
Es gibt fertig Bausteine zum addieren, subtrahieren und wasauchimmer. Findest du unter Festpunkt- bzw Gleitpunktfunktionen. Musst halt wissen, was Deine Zahl für ein Datenformat hat (Int, Real,..) und dann kannst du über den EN-Eingang des Bausteins diese Funktion ausführen (Flanke verwenden). Als Ein- und Ausgangswert legst du einfach die Zahl aus deinem DB
 
Zuviel Werbung?
-> Hier kostenlos registrieren
AWL,FUP, KOP wie hättest du es denn gerne??
in AWL

Code:
U Takt
U Mx.x
SPBN ende
L DBx.DBWx
L deinenWert
+I oder +D oder +R // je nachdem 
T DBx.DBWx
ende: NOP 0
meinst du in etwa so?
 
AWL,FUP, KOP wie hättest du es denn gerne??
in AWL

Code:
U Takt
U Mx.x
SPBN ende
L DBx.DBWx
L deinenWert
+I oder +D oder +R // je nachdem 
T DBx.DBWx
ende: NOP 0
meinst du in etwa so?

mindestens so:

Code:
*
      U     Takt
      U     Mx.x
      FP    My.y
      SPBN  ende
      L     DBx.DBWx
      L     deinenWert
      +I    oder +D oder +R // je nachdem 
      T     DBx.DBWx
ende: NOP 0

wenn die Addition in nur einem Zyklus durchgeführt werden soll
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also vom Prinzip her ist das genau das was ich mir auch vorgestellt habe.
Ich werde es mal testen, weil so ähnlich hatte ich es auch nur dass es nicht funktioniert hat danke euch erstmal :D

Aber inwiefern nur für einen Zyklus meinst du einen SPS zyklus?
Ja und wenn du das in FUP hinbekommst würde mich das mal interessieren Gerhard K das hab ich nicht so recht hinbekommen :D
 
Zuletzt bearbeitet:
...

Aber inwiefern nur für einen Zyklus meinst du einen SPS zyklus?
Ja und wenn du das in FUP hinbekommst würde mich das mal interessieren Gerhard K das hab ich nicht so recht hinbekommen :D

Der entscheidende Unterschied ist das rot markierte
Code:
*
      U     Takt
      U     Mx.x
      [COLOR="Red"]FP    My.y[/COLOR]
      SPBN  ende
      L     DBx.DBWx
      L     deinenWert
      +I    oder +D oder +R // je nachdem 
      T     DBx.DBWx
ende: NOP 0

Ansonsten könnte es passieren, das mehrere Zyklen hintereinander aufaddiert wird!
 
Zuletzt bearbeitet:
Ansonsten könnte es passieren, das in einem Zyklus mehrfach hoch gezählt wird

Das ganz sicher nicht! Aber das mehrere Zyklen hintereinander aufaddiert wird!

In KUP sieht es so aus:

Code:
*
      U     M      2.5                  //TAKT
      U     M     10.0                  //Freigabe
      FP    M     11.0                  //Flanke
      SPBNB _001
      L     DB10.DBW    0               //Addition
      L     100                         //...
      +I                                //...
      T     DB10.DBW    0               //...
_001: NOP   0                           //ENDE
 
Ja und wenn du das in FUP hinbekommst würde mich das mal interessieren Gerhard K das hab ich nicht so recht hinbekommen :grin:

einfach den code von Hr. Vierlagig nehmen, in ein Netzwerk deiner wahl einfügen und auf FUP/KOP umschalten und du wirst sehen,*it´s magic*
lg gerhard
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Leider ist's bei mir kein Magic, was ich leider auch erwartet habe, da der Transfer von AWL zu FUP ja meistens also fast immer nicht geht aber naja danke euch trotzdem allen vielmals :)

hast du den Code vollständig kopiert?
entscheident ist das SPBNB und der Unterstrich als Präfix der Sprungmarke
 
Ach verdammt hatte das alte genommen und das neue irgendwie übersehen :D
Was mich nur wundert warum mein FUPnicht funktioniert hatte das sah doch ähnlich aus oder :D
Naja egal dank euch vielmals :D
Jetzt wird mal noch nen bissel rumgebastelt achja vierlagig du bist mir unheimlich du hast fast alle meine Merker getroffen und genau meinen DB verwendet sitzt du hier irgendwo :D
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ach verdammt hatte das alte genommen und das neue irgendwie übersehen :D
Was mich nur wundert warum mein FUPnicht funktioniert hatte das sah doch ähnlich aus oder :D
Naja egal dank euch vielmals :D
Jetzt wird mal noch nen bissel rumgebastelt achja vierlagig du bist mir unheimlich du hast fast alle meine Merker getroffen und genau meinen DB verwendet sitzt du hier irgendwo :D

ich habe ja gesagt, it´s magic :ROFLMAO:
und vierlagig ist ein hexenmeister;)

lg
 
Ich hab mal noch ne blöde Frage!
Wie kann man denn in FUP zwei Festpunkt-Funktionen also meinetwegen ADD_I und DIV_I hintereinander schalten?
Sprich den OUT von der ADD_I an IN1 vom DIV_I?
Geht das wegen dem AKKU nicht den er erst zwischen speichern muss?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab mal noch ne blöde Frage!
Wie kann man denn in FUP zwei Festpunkt-Funktionen also meinetwegen ADD_I und DIV_I hintereinander schalten?
Sprich den OUT von der ADD_I an IN1 vom DIV_I?
Geht das wegen dem AKKU nicht den er erst zwischen speichern muss?

ja, in den grafischen Programmier"sprachen" ist das Zwischenspeichern unbedingt notwendig.
für Berechnungen empfehle ich mindestens AWL, bei komplexeren gerne auch SCL (falls vorhanden). dadurch werden
a) die Performance und
b) die Lesbarkeit erhöht
 
Zuletzt bearbeitet:
Wie kann man denn in FUP zwei Festpunkt-Funktionen also meinetwegen ADD_I und DIV_I hintereinander schalten?
Sprich den OUT von der ADD_I an IN1 vom DIV_I?
Hintereinanderschalten geht schon, aber nur der EN-Eingang einer Box an den ENO-Ausgang einer Box.

In S7-FUP/KOP gibt es keine Verbindungslinien für numerische Werte, sondern nur für VKE und BIE.
Deshalb muß das Ergebnis einer Berechnung auf einen Zwischenspeicher gelegt werden.
also z.B. so: ADD_I.OUT -> #Temp_INT -> DIV_I.IN1
Das ist auch der Grund, warum man numerische Berechnungen besser in AWL oder SCL programmieren sollte.
In FUP/KOP ist es einfach schwer lesbar und uneffizient (viel "überflüssiger" Code).

Gruß
Harald
 
Zurück
Oben