Reagieren auf Integer Zahl

mobileme

Level-1
Beiträge
30
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe ein kleines Problem und zwar müsste ich aufgrund einer Integerzahl in einem Wort einen Merker setzen. Die Zahl sollte auf 1,2,3,4 abgefragt werden und jedes Mal wenn die Zahl sich ändert vom jeweils niedrigem Wert auf den nächste höheren sollte der Merker neu gesetzt werden. Wie geht dies am einfachsten? Danke schon mal.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe ein Wort. Dort stehen Zahlen von 1-4 drin. Es diese wird immer hochgezählt. Von 1-2, dann von 2-3, dann von 3-4. Und bei jedem Zählvorgang soll einfach ein Bit bzw. ein Merker gesetzt werden. Mir fehlt gerade der Übergang wie ich aufgrund der Änderung der Zahl im dem Wort, bei jeder Änderung einen Merker setzen kann. Und zwar den gleichen. Er muss jedesmal eine positive Flanke erhalten wenn der Wert sich ändert im dem Wort.
 
Oh...also muss nicht gesetzt werden, sondern so lange dann die aktuelle Zahl drin steht soll der Ausgang aktiv bleiben... also...
Änderung 1-2
=M100.0
Woltle es so machen:
L Wort
L 1
==D
= M100.0

L Wort
L 2
==D
= M100.0
L Wort
L 3
==D
= M100.0

So bekommt er leider nur den letzten Befehl mit ...sobald also eine 3 drin steht wird der Merker auf 1 geschaltet...bei den vorherigen leider nicht
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Grund ist folgender: Du machst 3x die Zuweisung auf den gleichen Merker. Weil das SPS-Programm den Code "von oben nach unten" abarbeitet, wird IMMER die letzte Zuweisung ausgeführt. Deswegen ist der Merker auch nur TRUE, wenn das Wort auf 3 steht. Formulieren noch einmal genau, was Du wirklich machen willst.

Außerdem musst Du bei einem Wort ==I verwenden.

Wort = 16 Bit

==D vergleicht 32 Bit.
 
Also...ich möchte anhand der Änderung in einem Wort einen Merker setzen. In dem Wort wird von 1-4 hoch gezählt. Und jedesmal wenn gezählt wird, also bei jedem Schritt sollte der Merker kurz auf 1 gesetzt werden.
Habe es auch versucht mit dem entsprechenden Bit mir eine positive Flanke des Merkers zu erzeugen. Sprich so:

U DB1.DBX 1.0 (Entspricht dem Wert 1 in dem Wort 0)
O DB124.DBX 1.1 (Entspricht dem Wert 2 in dem Wort 0)
FP M 600.0
= M100.0
 
Zuletzt bearbeitet:
Quick n dirty?


Vergleichswert anlegen, wenn ungleich dann
Mxy = true
Vergleichswert = Variabel

Im nächsten Zyklus ist sind die beiden Werte ja wieder gleich also ist Mxy = false
Sobald sich die Variabel wieder ändert, wird der Merker wieder gesetzt.

Wenn Du den Merker nur setzen willst musst halt nach Variabel > Vergleichswert abfragen.

Gruss
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Dann versuch doch das in AWL umzusetzen.

Wenn Zählerwort "ungleich" Speichervariable,
dann Merkerbit AN
Zählerwort = Speichervariable

Fertig...

@Schnick und Schnack: vmtl. muss der Vergleich auf ungleich gemacht werden, weil nach 4 wieder die 1 kommt.
 
das sollte das tun was du möchtest. wenn du auch ermitteln willst wenn zb wechsel von 3->2 ersetze >I durch <>I
Code:
      L     MW    10                    //aktueller wert
      L     MW    12                    //gespeicherter wert
      >I   
      =     M    100.0
      L     MW    10
      T     MW    12

      U     E      0.0                  //reset
      SPBN  m001
      L     0
      T     MW    10
      T     MW    12
m001: NOP   0
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@ Tigerente1974

Da es ein Geheimnis ist was mit dieser Wertänderung geschehen soll kann ich nicht sagen wann er das Bit setzen möchte..

Muss er schon selber wissen....

Siehe dein Beitrag:



Das wird Dir vermutlich niemand hier fertig servieren. Zeig was Du hast und stelle Fragen dazu, an welcher Stelle Du nicht weiterkommst.
 
Code:
L "Zaehlerwort"
L "AltWerte"
<>I
FP "M10.0"
= "Flanke"
. 
.
.
L "Zaehlerwort"
T "AltWerte"
.
.
U "Flanke"
L S5T#200ms
SV "T1"
U "T1"
=M100.0
 
Zurück
Oben