Festpunktzahlen in das VKE überführen!

Arek

Level-1
Beiträge
20
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
in einen DB ist eine Festpunktzahl angelegt, der Wert verändert sich z.B um +1.
Die Änderung der Zahl kann in 50ms oder auch erst in 5 Sekunden erfolgen.
Diese Änderung der Festpunktzahl versuche ich in das VKE zu übertragen.
d.h. VKE => 1
Damit will ich z.B einen Impuls erzeugen oder einen Ausgang ansteuern der auch wieder zurückgesetzt werden soll.
Hier mein erster Gedanke mit Vergleich Funktionen, ist leider nur für die ersten Zahlen gültig.
Wenn die Zahl ein Wert von 777 beträgt, was dann.
Was muss getan werden damit alle Zahlen abgedeckt werden.
Hat jemand eine intelligentere Lösung. Das Problem beschäftigt mich seit ein paar Tagen. Für jeden Lösungsansatz bin ich dankbar.

L #Zahl
L 0
==D
SPB IMP
L 1
==D
SPB IMP
L 2
==D
SPB IMP
L 3
==D
SPB IMP
L 4
==D
SPB IMP
L 5
==D
SPB IMP
//usw...
SPA END

IMP: S #Impuls

END: NOP 0
 
Zuviel Werbung?
-> Hier kostenlos registrieren
L #Zahl
L 0
==D
SPB IMP
L 1
==D
SPB IMP
L 2
==D
SPB IMP
L 3
==D
SPB IMP
L 4
==D
SPB IMP
L 5
==D
SPB IMP
//usw...
SPA END

IMP: S #Impuls

END: NOP 0

Willst du null mit eins, eins mit zwei und zwei mit drei usw. vergleichen?
Vielleicht solltest dir zuerst einmal klar werden, was ein Akku ist und wie sich deren Zustand ändert.
Wenn du dies verstanden hast, kannst du deine Hausaufgabe erneut stellen. ;-)


bike
 
Hallo,
Diese Änderung der Festpunktzahl versuche ich in das VKE zu übertragen.
d.h. VKE => 1

Den Sinn Deiner Frage verstehe nicht so ganz.

Eins kann ich aber mit Sicherheit sagen:
Es gibt kein VKE=>1

Entweder VKE=0 oder VKE=1, nur die beiden Möglichkeiten gibt es.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Genau das ist es.
Bei Wertänderungen z.B von 401 auf 402, oder 4444 auf 44445.
Die Zahlen ändern sich nur um das Imkremental +1.
In der Praxis will ich damit einen Meter [m] Impuls erzeugen.
Die Zahlen repräsentieren die Summe der erfassten Meter.
 
Hallo biker,
der User rostiger Nagel hat die Frage von mir richtig Interpretiert.
Sorry, für die schwammige Frage.
 
Merk dir doch die "Zahl" in einen "Merker" (Wort) und vergleiche die Werte miteinander,
sind sie unterschiedlich tritt dein Ereignis ein. Bei Eintritt des Ereignisses, speicherst dun den
Zählerstand im "Merker".
Halbwegs verstanden? Dann setzt das mal in ein Programm um und lade den Code hoch.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo biker,
der User rostiger Nagel hat die Frage von mir richtig Interpretiert.
Sorry, für die schwammige Frage.
Du hast mich nicht verstanden.
So wie programmiert hast wird null mit eins, eins mit zwei, zwei mit drei usw.

Du solltest dir zuerst klar werden was Akkus sind. Wie sich diese mit jedem Laden ändern....


bike

btw: wenn du solch eine Funktion, wie du brauchst, universal und sinnvoll schreiben willst, bist du schon bei den Zeigern angekommen.
 
Hallo bike,
die Fuktionen diente nur als Gedankenmuster.

Hier eine Lösung für Gleitpunktzahlen
L #Wert1m
L 1.000000e+000
>R
SPBN L002
S #M_Imp
L 0.000000e+000
T #Wert1m
// Summe Meter Impulse
L #M_Zaehler
L 1
+I
T #M_Zaehler
SPA END1
L002: L #Wert1s
L #Wert1m
+R
T #Wert1m
R #M_Imp

Leider läuft hier die Summe der Meter Impulse immer hinterher je höher
der erfasste stecke in Gleitpunktformat
 
Die Änderung der Zahl kann in 50ms oder auch erst in 5 Sekunden erfolgen.
Diese Änderung der Festpunktzahl versuche ich in das VKE zu übertragen.
d.h. VKE => 1
Damit will ich z.B einen Impuls erzeugen oder einen Ausgang ansteuern der auch wieder zurückgesetzt werden soll.
Wenn ich das richtig verstanden habe vielleicht so:
Code:
   L MW 10
   L #Zahl
   OW
   T MW 10
   L 0
   <>I
   = #Zahl_Unterschiedlich
 
Wenn ich das richtig verstanden habe vielleicht so:
Code:
   L MW 10
   L #Zahl
   OW
   T MW 10
   L 0
   <>I
   = #Zahl_Unterschiedlich

So ungefähr, doch hast du jetzt dem Jungen geholfen?
Der weiß immer noch nicht was Akkus sind und wie man diese nutzen sollte.

Nix für ungut


bike

btw warum kommen immer wieder die Hausaufgaben hier vorbei?
 
@Arek
Denkanstoß: "Bei Wertänderung" heißt, der Wert ist jetzt anders als vorher (egal, um wieviel der Wert sich geändert hat und wie groß die Werte absolut sind)

Wenn Du Dir also einfach merken würdest, welchen Wert Du vorher hattest und dann mit dem aktuellen Wert vergleichen würdest, dann könntest Du alle möglichen Änderungen mit einem einzigen Vergleich erkennen.

Tip: erst vergleichen und dann den aktuellen Wert als Wert_vorher merken.

Mußt Du eventuell noch überprüfen, ob der Wert sich tatsächlich nur um +1 geändert hat? Was soll passieren, wenn er sich um +2 oder eine andere Differenz ändert?

@190B
Häh, wie interpretierst Du denn die Zeichenfolge '=>' ??? :rolleyes: Deine Interpretation verstehe ich nicht so ganz ...

@Paule
Hallo, wenn #Zahl jetzt 1 ist und vorher auch 1 war, sind die 1 jetzt und die 1 vorher dann #Zahl_Unterschiedlich? ;)

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Paule hat schon eine Lössung als Beispiel, die ist aber nicht ohne.
Hier eine andere Sicht.

Code:
     L  #Merker_Zahl
     L  #Zahl
     ==I
     SPB Ende
     T  #Merker_Zahl
     SET
     S  #Impuls
Ende: NOP 0

Eigentlich finde ich den weg zur Selbsthilfe besser, aber ich habe den
Eindruck das der Thread in die falsche Richtung geht und du das Forum
am Ende nicht mehr betreten wirst.
 
Zuletzt bearbeitet:
Hallo rostiger Nagel,

nur zum Verständnis:

heißt es richtig

Code:
SET
S  #Impuls
oder
Code:
SET
=  #Impuls

und wann setzt du #Impuls zurück?

Hatte das Problem schon öfter. Bei statischen Variablen oder merkern habe ich am Anfang des Bausteins immer zuerst rückgesetzt

Code:
clr
= #Impuls

und dann in folgenden Netzwerken irgendetwas wie dein Bsp programmiert.
Gibt es eine elegantere Möglichkeit?
 
Hallo spsfreak,
beides führt zum selben Ergebnis, wenn man das ganze betrachtet.

Code:
     L  #Merker_Zahl
     L  #Zahl
     ==I
     SPB Ende
     T  #Merker_Zahl
     SET
     S  #Impuls
Ende: NOP 0

oder

Code:
     L  #Merker_Zahl
     L  #Zahl
     ==I
     SPB Ende
     T  #Merker_Zahl
     SET
     =  #Impuls
Ende: NOP 0

um das rücksetzen muss sich der Themenstarter selber kümmern, ich weiß
ja nicht wirklich wozu er das verwenden möchte. Es kann ja sein das er diese
Verknüpfung zb durch ein externes Ereignis Endschalter zurücksetzen möchte
und somit dieser Impuls länger als 1-SPS Zyklus bestehen soll.

Warum ist das Beispiel nicht elegant? Weil du es nicht verstehst?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit SET wird das VKE auf 1 gesetzt.

Da die Zuweisung übersprungen wird, spielt es keine Rolle, ob man "S" oder "=" verwendet.
Je nachdem was Du brauchst, kannst Du die Variable z.B. nach 1 Zyklus zurücksetzen. (-> Impuls)

Etwa so:

Code:
SET
R #Impuls

L  #Merker_Zahl
L  #Zahl
==I
SPB Ende
T  #Merker_Zahl
SET 
S  #Impuls
 Ende: NOP 0
 
Zurück
Oben